.m-viewer-btn { background: var(--neo-yellow, #ffe45e) !important; color: var(--neo-ink, #151515) !important; }
@media (min-width: 769px) { .m-viewer-btn { display: none !important; } }
/* 첫 사용 안내: 뷰어를 아직 한 번도 안 열어본 브라우저에서 버튼 깜빡임 + 말풍선.
   기본 배경이 !important 라 keyframes 로 못 덮음 → filter/transform 으로 색·크기 펄스 */
.m-viewer-btn.rv-attract { animation: rvFabBlink 1.2s ease-in-out infinite; }
@keyframes rvFabBlink {
    0%, 100% { filter: none; transform: none; }
    50% { filter: hue-rotate(-60deg) saturate(1.6) brightness(1.12); transform: scale(1.1); }
}
.rv-fab-tip {
    position: absolute; right: 0; bottom: calc(100% + 12px); z-index: 70001;
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 12px; border: 2px solid var(--neo-ink, #151515); border-radius: 12px;
    background: var(--neo-yellow, #ffe45e); color: var(--neo-ink, #151515);
    font-size: 12px; font-weight: 900; line-height: 1; white-space: nowrap;
    box-shadow: 3px 3px 0 var(--neo-ink, #151515); cursor: pointer;
    animation: rvFabTipBounce 1.4s ease-in-out infinite;
}
.rv-fab-tip::after {
    content: ""; position: absolute; top: 100%; right: 16px;
    border: 7px solid transparent; border-top-color: var(--neo-ink, #151515);
}
@keyframes rvFabTipBounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
@media (min-width: 769px) { .rv-fab-tip { display: none !important; } }
html[data-theme="dark"] .rv-fab-tip {
    background: var(--neo-surface-soft, #1D232D); border-color: var(--neo-border, #2A313C);
    color: #E5E7EB; box-shadow: none;
}
html[data-theme="dark"] .rv-fab-tip::after { border-top-color: var(--neo-border, #2A313C); }

.rv-overlay {
    position: fixed; inset: 0; z-index: 90000; /* .m-float-actions 가 z-index:70000 이라 그 위로 */
    background: var(--neo-bg, #f6f7fb);
    touch-action: pan-y; /* 세로 팬은 브라우저 네이티브 스크롤(본문)에 맡기고, 가로 팬만 JS 로 게시물 전환 */
    overscroll-behavior: none;
}
.rv-overlay[hidden] { display: none !important; }
@media (min-width: 769px) { .rv-overlay { display: none !important; } }

.rv-track { position: absolute; inset: 0; display: flex; height: 100%; will-change: transform; }
/* 게시물 = 상단 타이틀바(헤더) + 그 아래 본문 스크롤 영역 (flex column 이라 헤더 높이가 제목 줄수에 따라
   달라져도 본문 시작 위치가 자동으로 맞는다) */
.rv-post { position: relative; flex: 0 0 100vw; height: 100%; overflow: hidden; background: var(--neo-bg, #f6f7fb); display: flex; flex-direction: column; }
.rv-header {
    flex: 0 0 auto; position: relative; z-index: 3;
    display: flex; align-items: flex-start; gap: 8px;
    padding: calc(8px + env(safe-area-inset-top, 0px)) 10px 8px;
    background: var(--neo-yellow, #ffe45e);
    border-bottom: 3px solid var(--neo-ink, #151515);
}
.rv-header-main { flex: 1 1 auto; min-width: 0; }
.rv-header-subject { margin: 4px 0 3px; font-size: 13px; font-weight: 900; line-height: 1.3; color: var(--neo-ink, #151515); word-break: break-word; }
.rv-header-sub { display: flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 800; color: rgba(21,21,21,.72); }
.rv-header-sub i { font-size: 11px; }
/* 게시물 본문: 게시판 글 읽기와 동일한 본문 HTML(텍스트+이미지+영상)을 세로로 놓고 위아래 네이티브 스크롤.
   (좌우 스와이프는 이전/다음 게시물 전환 전용) */
.rv-scroll { flex: 1 1 auto; min-height: 0; position: relative; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.rv-scroll::-webkit-scrollbar { display: none; }
/* 하단 여백은 흰 본문(.rv-content) "안쪽" 패딩으로 — 컨테이너 패딩으로 주면 그 부분이
   오버레이 검정 배경으로 비쳐 스크롤 끝에 항상 검은 띠가 보인다(실기기 제보) */
.rv-scroll-inner { display: flex; flex-direction: column; min-height: 100%; }
/* 본문은 게시판 글 읽기처럼 밝은 종이 위에 — 에디터 글 기본 글자색(검정)이 그대로 읽히도록 */
.rv-content {
    flex: 1 0 auto;
    background: #fff; color: #222;
    padding: 14px 14px calc(24px + env(safe-area-inset-bottom, 0px));
    font-size: 15px; line-height: 1.7;
    word-break: break-word; overflow-wrap: break-word;
}
.rv-post.has-viewer-ad .rv-content {
    padding-bottom: 14px;
}
.rv-viewer-ad {
    flex: 0 0 auto;
    display: flex;
    justify-content: center;
    width: 100%;
    min-width: 0;
    min-height: 100px;
    padding: 0 14px calc(18px + env(safe-area-inset-bottom, 0px));
    background: #fff;
    overflow: hidden;
}
.rv-viewer-ad .site-ad-zone[data-site-ad-zone="recipe.viewer.content.bottom"] {
    width: 100%;
    min-width: 0;
    min-height: 100px;
    margin: 0;
}
.rv-viewer-ad[data-site-ad-empty="1"] {
    display: none !important;
    min-height: 0 !important;
    padding: 0 !important;
}
/* 트리머가 빈 노드를 걷어낸 뒤 남는 첫/마지막 요소의 자체 여백도 제거해 본문이 바로 시작/끝나게 */
.rv-content > :first-child { margin-top: 0 !important; }
.rv-content > :last-child { margin-bottom: 0 !important; }
.rv-content img, .rv-content video, .rv-content iframe { max-width: 100% !important; height: auto; display: block; margin: 8px auto; }
.rv-post[data-image-fit="contain"] .rv-content img {
    width: 100% !important; height: auto !important; max-height: 72dvh;
    object-fit: contain; object-position: center; background: var(--neo-surface, #fff);
}
.rv-post[data-image-fit="cover"] .rv-content img {
    width: 100% !important; height: min(62dvh, 34rem) !important;
    object-fit: cover; object-position: center; background: var(--neo-surface, #fff);
}
/* 세로로 매우 긴 인포그래픽은 화면 높이 박스에 축소하면 글자를 읽을 수 없다.
   맞춤 설정과 무관하게 본문 폭으로 펼치고 자연 높이를 유지해 세로 스크롤로 읽게 한다. */
.rv-post[data-image-fit] .rv-content img.rv-image-tall {
    width: 100% !important; height: auto !important; max-height: none !important;
    object-fit: contain; object-position: top center; background: transparent;
}
.rv-content iframe { height: auto; min-height: 220px; width: 100%; border: 0; }
.rv-content p { margin: 0 0 10px; }
.rv-content a { color: #2b6cb0; }
.rv-content table { max-width: 100%; }

/* 닫기 버튼: 작은 정사각형 (헤더 우측에 상주).
   코어 neobrutalism.css 의 `html body:not(.cke_editable) button[type='button']` 전역 규칙이
   min-height:44px/border-radius:16px/border:3px/shadow 5px 를 전부 !important 로 걸어 두므로(특이도 0,2,3),
   그보다 높은 특이도(0,3,2) + !important + min/max 풀세트로 고정한다 (칩 사이징 함정과 동일 패턴) */
html body:not(.cke_editable) .rv-overlay .rv-close {
    width: 24px !important; min-width: 24px !important; max-width: 24px !important;
    height: 24px !important; min-height: 24px !important; max-height: 24px !important;
    padding: 0 !important; border-radius: 6px !important; flex: 0 0 auto;
    border: 2px solid var(--neo-ink, #151515) !important;
    background: #fff !important; color: var(--neo-ink, #151515) !important;
    display: inline-flex; align-items: center; justify-content: center;
    box-shadow: 2px 2px 0 rgba(0,0,0,.45) !important;
}
.rv-close i { font-size: 13px; }
/* 피드 로딩 전(게시물이 아직 없어 헤더도 없음)에만 보이는 대체 닫기 버튼 */
.rv-topbar { position: absolute; top: 0; left: 0; right: 0; z-index: 4; display: none; justify-content: flex-end; padding: calc(14px + env(safe-area-inset-top, 0px)) 12px 0; }
.rv-track:empty + .rv-topbar { display: flex; }

.rv-meta-board {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 1px 7px;
    border: 2px solid var(--neo-ink, #151515); border-radius: 999px;
    background: var(--neo-green, #82e97f); color: var(--neo-ink, #151515);
    font-size: 9px; font-weight: 900; box-shadow: 2px 2px 0 rgba(0,0,0,.35);
}
/* 이미 읽은 글 표시 라벨 (헤더 서브라인, 조회수 오른쪽의 작은 사각 라벨) */
.rv-read-badge {
    display: inline-flex; align-items: center;
    margin-left: 4px; padding: 0 4px;
    border: 1.5px solid var(--neo-ink, #151515); border-radius: 3px;
    background: #d7dbe4; color: var(--neo-ink, #151515);
    font-size: 8px; font-weight: 900; line-height: 12px;
}

.rv-rail { position: absolute; right: 10px; bottom: calc(70px + env(safe-area-inset-bottom, 0px)); z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 10px; }
/* 반응/댓글 버튼: 32px 정사각형(닫기 버튼과 같은 모양). 코어의 전역 button[type='button'] 규칙
   (min-height:44px 등 !important, 특이도 0,2,3)이 이기지 못하도록 고특이도+풀세트 패턴 사용 */
html body:not(.cke_editable) .rv-overlay .rv-rail button {
    width: 32px !important; min-width: 32px !important; max-width: 32px !important;
    height: 32px !important; min-height: 32px !important; max-height: 32px !important;
    padding: 0 !important; border-radius: 6px !important;
    border: 2px solid var(--neo-ink, #151515) !important;
    background: #fff !important; color: var(--neo-ink, #151515) !important;
    display: inline-flex; align-items: center; justify-content: center; flex-direction: column;
    box-shadow: 2px 2px 0 rgba(0,0,0,.55) !important;
    transition: transform .1s ease;
}
html body:not(.cke_editable) .rv-overlay .rv-rail button:active { transform: translate(1px,1px); box-shadow: 1px 1px 0 rgba(0,0,0,.55) !important; }
.rv-rail button i { font-size: 15px; }
/* 버튼별 브루탈리즘 배경색 (기본 흰 배경 규칙보다 클래스 하나 더 높은 특이도) */
html body:not(.cke_editable) .rv-overlay .rv-rail button.rv-settings-open { background: var(--neo-yellow, #ffe45e) !important; }
html body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react { background: var(--neo-pink, #ff7ab6) !important; }
html body:not(.cke_editable) .rv-overlay .rv-rail button.rv-comment-open { background: var(--neo-blue, #5fb8ff) !important; }
html body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react.is-liked { background: var(--neo-ink, #151515) !important; color: #fff !important; }
html body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react.is-liked .rv-rail-count { color: #fff; }
.rv-rail .rv-rail-count { display: block; margin-top: 2px; font-size: 9px; font-weight: 900; color: var(--neo-ink, #151515); line-height: 1; }

.rv-hint {
    position: absolute; right: 10px; top: 60px; left: auto; bottom: auto;
    z-index: 6; display: flex; align-items: center; gap: 7px;
    padding: 9px 14px; border: 3px solid var(--neo-ink, #151515); border-radius: 999px;
    background: var(--neo-yellow, #ffe45e); color: var(--neo-ink, #151515);
    font-size: 12px; font-weight: 900; box-shadow: 4px 4px 0 rgba(0,0,0,.5);
    opacity: 0; pointer-events: none;
    transition: opacity .3s ease;
    transform-origin: top right;
    animation: rvHintWobble 1.4s ease-in-out infinite;
}
.rv-hint.is-visible { opacity: 1; }
@keyframes rvHintWobble { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(2deg); } }
.rv-hint-hand { display: inline-block; font-size: 15px; line-height: 1; animation: rvHandL 0.9s ease-in-out infinite; }
.rv-hint-hand.is-r { animation-name: rvHandR; }
@keyframes rvHandL { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(-5px); } }
@keyframes rvHandR { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(5px); } }

.rv-loading { position: absolute; inset: 0; z-index: 2; display: flex; align-items: center; justify-content: center; color: var(--neo-ink, #151515); font-size: 13px; font-weight: 800; }
.rv-empty { position: absolute; inset: 0; z-index: 5; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--neo-ink, #151515); text-align: center; padding: 0 24px; }

.rv-comments {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 90010;
    max-height: 72vh; display: flex; flex-direction: column;
    background: var(--m-surface, #fff);
    border-top: 3px solid var(--neo-ink, #151515);
    border-radius: 20px 20px 0 0;
    box-shadow: 0 -6px 0 rgba(0,0,0,.35);
    transform: translateY(100%); transition: transform .22s ease;
    padding-bottom: env(safe-area-inset-bottom, 0px);
}
.rv-comments.is-open { transform: translateY(0); }

/* 뷰어 설정 시트 (댓글 시트와 같은 뼈대, 더 높게) */
.rv-settings {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 90010;
    max-height: 84vh; display: flex; flex-direction: column;
    background: var(--m-surface, #fff);
    border-top: 3px solid var(--neo-ink, #151515);
    border-radius: 20px 20px 0 0;
    box-shadow: 0 -6px 0 rgba(0,0,0,.35);
    transform: translateY(100%); transition: transform .22s ease;
}
.rv-settings.is-open { transform: translateY(0); }
.rv-settings-body { flex: 1; overflow-y: auto; padding: 10px 14px 4px; }
.rv-set-section { margin-bottom: 12px; }
.rv-set-title { margin: 0 0 4px; font-size: 11px; font-weight: 900; color: var(--neo-ink, #151515); }
html[data-theme="dark"] .rv-set-title { color: #E5E7EB; }
.rv-set-title small { font-size: 9px; color: #9aa4b6; font-weight: 700; }
.rv-set-hint { margin: 0 0 6px; font-size: 9px; color: #9aa4b6; }
.rv-board-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 5px; }
.rv-board-list li {
    display: flex; align-items: center; gap: 7px; padding: 5px 8px;
    border: 2px solid var(--neo-ink, #151515); border-radius: 8px;
    background: var(--m-surface, #fff); user-select: none;
    box-shadow: 2px 2px 0 rgba(0,0,0,.18);
}
.rv-board-list li.is-dragging { position: relative; z-index: 2; opacity: .9; box-shadow: 3px 3px 0 rgba(0,0,0,.4); background: var(--neo-yellow, #ffe45e); }
.rv-drag-handle { touch-action: none; cursor: grab; color: #9aa4b6; font-size: 14px; display: inline-flex; padding: 2px 3px 2px 0; flex-shrink: 0; }
.rv-board-list label { flex: 1; display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 800; color: var(--m-text, #222); min-width: 0; }
.rv-set-opt { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 700; color: var(--m-text, #222); padding: 4px 0; }
.rv-set-opt.is-disabled { opacity: .4; }
.rv-set-opt small { font-size: 9px; color: #9aa4b6; font-weight: 700; }
/* 체크박스/라디오: 코어 전역 규칙(22px, 3px 보더, 그림자 전부 !important)을 눌러쓰는 작은 커스텀 컨트롤 */
html body:not(.cke_editable) .rv-settings input[type="checkbox"],
html body:not(.cke_editable) .rv-settings input[type="radio"] {
    appearance: none !important; -webkit-appearance: none !important;
    width: 15px !important; height: 15px !important; min-width: 15px !important; min-height: 15px !important;
    margin: 0 !important; padding: 0 !important;
    border: 2px solid var(--neo-ink, #151515) !important; border-radius: 4px !important;
    background: #fff !important; box-shadow: none !important; accent-color: initial !important;
    position: relative; flex-shrink: 0; display: inline-block; vertical-align: middle;
}
html body:not(.cke_editable) .rv-settings input[type="radio"] { border-radius: 999px !important; }
html body:not(.cke_editable) .rv-settings input[type="checkbox"]:checked,
html body:not(.cke_editable) .rv-settings input[type="radio"]:checked { background: var(--neo-green, #82e97f) !important; }
.rv-settings input[type="checkbox"]:checked::after {
    content: ""; position: absolute; left: 3.5px; top: 0.5px; width: 4px; height: 8px;
    border: solid var(--neo-ink, #151515); border-width: 0 2px 2px 0; transform: rotate(42deg);
}
.rv-settings input[type="radio"]:checked::after {
    content: ""; position: absolute; inset: 3px; border-radius: 999px; background: var(--neo-ink, #151515);
}
.rv-settings-foot { display: flex; gap: 8px; padding: 8px 14px calc(8px + env(safe-area-inset-bottom, 0px)); border-top: 2px solid var(--neo-ink, #151515); }
html body:not(.cke_editable) .rv-settings .rv-settings-foot button {
    flex: 1;
    height: 32px !important; min-height: 32px !important; max-height: 32px !important;
    padding: 0 !important; border-radius: 8px !important;
    border: 2px solid var(--neo-ink, #151515) !important;
    background: #fff !important; color: var(--neo-ink, #151515) !important;
    font-size: 12px !important; font-weight: 900 !important;
    box-shadow: 2px 2px 0 rgba(0,0,0,.35) !important;
    display: inline-flex; align-items: center; justify-content: center;
}
html body:not(.cke_editable) .rv-settings .rv-settings-foot button.rv-set-save { background: var(--neo-yellow, #ffe45e) !important; }
/* 시트 헤더는 최대한 낮게, X 는 뷰어 헤더의 닫기와 같은 작은 정사각형 (코어 44px 강제 규칙 오버라이드) */
.rv-comments-head { display: flex; align-items: center; justify-content: space-between; padding: 7px 12px; border-bottom: 2px solid var(--neo-ink, #151515); }
.rv-comments-head h3 { margin: 0; font-size: 12px; font-weight: 900; color: var(--neo-ink, #151515); }
html body:not(.cke_editable) .rv-comments-head .rv-comments-close {
    width: 22px !important; min-width: 22px !important; max-width: 22px !important;
    height: 22px !important; min-height: 22px !important; max-height: 22px !important;
    padding: 0 !important; border-radius: 5px !important;
    border: 2px solid var(--neo-ink, #151515) !important;
    background: #fff !important; color: var(--neo-ink, #151515) !important;
    box-shadow: 1px 1px 0 rgba(0,0,0,.35) !important;
    display: inline-flex; align-items: center; justify-content: center;
}
.rv-comments-close i { font-size: 11px; }
.rv-comments-list { flex: 1; overflow-y: auto; padding: 6px 12px; }
/* 댓글 한 건: 게시판 댓글 뷰와 같은 아바타+이름+시간 / 본문 / 작은 액션 버튼 구조 */
.rv-comment { padding: 8px 0; border-bottom: 1px solid rgba(0,0,0,.08); }
html[data-theme="dark"] .rv-comment { border-bottom-color: #2A313C; }
.rv-comment-top { display: flex; align-items: center; gap: 6px; }
.rv-comment-avatar {
    width: 22px; height: 22px; border-radius: 999px; flex-shrink: 0;
    border: 2px solid var(--neo-ink, #151515); background: #eef1f6; color: #8a93a5;
    display: inline-flex; align-items: center; justify-content: center; font-size: 12px;
}
.rv-comment-name { font-size: 11px; font-weight: 900; color: var(--neo-ink, #151515); }
html[data-theme="dark"] .rv-comment-name { color: #E5E7EB; }
.rv-comment-time { font-size: 9px; color: #9aa4b6; }
.rv-comment-body { margin: 4px 0 5px 28px; font-size: 12px; line-height: 1.6; color: var(--m-text, #222); white-space: pre-wrap; word-break: break-word; }
.rv-comment-actions { display: flex; gap: 4px; margin-left: 28px; }
html body:not(.cke_editable) .rv-comments .rv-comment-actions button,
html body:not(.cke_editable) .rv-comments .rv-comment-editrow button {
    height: 18px !important; min-height: 18px !important; max-height: 18px !important;
    padding: 0 7px !important; border-radius: 999px !important;
    border: 2px solid var(--neo-ink, #151515) !important;
    background: #fff !important; color: var(--neo-ink, #151515) !important;
    font-size: 9px !important; font-weight: 900 !important; line-height: 1 !important;
    box-shadow: 1px 1px 0 rgba(0,0,0,.35) !important;
    display: inline-flex; align-items: center; flex-shrink: 0;
}
html body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-reply { background: var(--neo-green, #82e97f) !important; }
html body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-edit { background: var(--neo-blue, #5fb8ff) !important; }
html body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-del { background: #ff8a8a !important; }
html body:not(.cke_editable) .rv-comments .rv-comment-editrow button.rv-c-save { background: var(--neo-yellow, #ffe45e) !important; }
.rv-comment-editrow { display: flex; gap: 5px; align-items: center; margin: 4px 0 5px 28px; }
.rv-comment-editrow input {
    flex: 1; min-width: 0; height: 28px; padding: 0 8px;
    border: 2px solid var(--neo-ink, #151515); border-radius: 8px;
    font-size: 12px; background: var(--m-surface, #fff); color: var(--m-text, #222);
}
.rv-comments-empty { padding: 30px 0; text-align: center; font-size: 12px; color: #9aa4b6; }
.rv-comments-form { display: flex; gap: 8px; padding: 10px 12px; border-top: 2px solid var(--neo-ink, #151515); }
.rv-comments-form input {
    flex: 1; height: 40px; padding: 0 12px;
    border: 2px solid var(--neo-ink, #151515); border-radius: 999px;
    font-size: 13px; background: var(--m-surface, #fff); color: var(--m-text, #222);
}
.rv-comments-form button {
    height: 40px; padding: 0 16px; border-radius: 999px;
    border: 2px solid var(--neo-ink, #151515);
    background: var(--neo-yellow, #ffe45e); color: var(--neo-ink, #151515);
    font-weight: 900; font-size: 12px; flex-shrink: 0;
}
.rv-comments-login { padding: 16px; text-align: center; font-size: 12px; color: #9aa4b6; }
.rv-comments-login a { color: var(--neo-blue, #5fb8ff); font-weight: 800; }

.rv-toast {
    position: fixed; left: 50%; bottom: calc(24px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%);
    z-index: 90020; padding: 5px 12px; border-radius: 999px;
    border: 2px solid var(--neo-ink, #151515); background: #fff; color: var(--neo-ink, #151515);
    font-size: 11px; font-weight: 800; box-shadow: 2px 2px 0 rgba(0,0,0,.5);
    white-space: nowrap; max-width: calc(100vw - 32px); overflow: hidden; text-overflow: ellipsis; /* 항상 한 줄 */
    opacity: 0; pointer-events: none; transition: opacity .2s ease;
}
.rv-toast.is-visible { opacity: 1; }

/* 다크 모드 오버라이드 v5 202607131800 */
html[data-theme="dark"] .m-viewer-btn,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-settings-open,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-comment-open,
html[data-theme="dark"] .rv-board-list li.is-dragging,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="checkbox"]:checked,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="radio"]:checked,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings .rv-settings-foot button.rv-set-save,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-reply,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-edit,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-editrow button.rv-c-save {
    color: #E5E7EB !important;
}

html[data-theme="dark"] .rv-header,
html[data-theme="dark"] .rv-meta-board,
html[data-theme="dark"] .rv-hint,
html[data-theme="dark"] .rv-comments-form button {
    color: #E5E7EB !important;
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] .rv-content,
html[data-theme="dark"] .rv-viewer-ad {
    background: var(--neo-surface, #161A22) !important;
    color: var(--neo-ink, #E5E7EB) !important;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-close,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="checkbox"],
html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="radio"],
html[data-theme="dark"] body:not(.cke_editable) .rv-settings .rv-settings-foot button,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments-head .rv-comments-close,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-editrow button,
html[data-theme="dark"] .rv-toast {
    background: var(--neo-surface, #161A22) !important;
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] .rv-read-badge {
    background: var(--neo-surface-soft, #1D232D) !important;
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react.is-liked {
    color: #E5E7EB !important;
}

html[data-theme="dark"] .rv-comments,
html[data-theme="dark"] .rv-settings,
html[data-theme="dark"] .rv-board-list li,
html[data-theme="dark"] .rv-settings-foot,
html[data-theme="dark"] .rv-comments-head,
html[data-theme="dark"] .rv-comment-editrow input,
html[data-theme="dark"] .rv-comments-form,
html[data-theme="dark"] .rv-comments-form input {
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] .rv-comment-avatar {
    background: var(--neo-bg, #0F1117) !important;
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] .rv-comments-login a {
    color: #3B82F6 !important;
}

html[data-theme="dark"] .rv-comments,
html[data-theme="dark"] .rv-settings,
html[data-theme="dark"] .rv-board-list li {
    background: var(--neo-surface, #1D232D) !important;
    color: var(--neo-ink, #E5E7EB);
}
html[data-theme="dark"] .rv-overlay .rv-rail button.rv-react.is-liked { color: #E5E7EB !important; }
html[data-theme="dark"] .rv-overlay .rv-rail button.rv-react.is-liked .rv-rail-count { color: #E5E7EB !important; }




/* ══ 칼름 다크 v6 자동 카운터 202607132000 ══
   라이트 규칙의 다크 누수(원색·흰 배경, 잉크 그림자/보더, 어두운 글자) 상쇄.
   원본 셀렉터에 html[data-theme="dark"] 접두 → 특이도 우위 보장 ══ */
html[data-theme="dark"] .m-viewer-btn {
    background-color: var(--neo-surface-soft, #1D232D) !important;
    color: #9CA3AF !important;
}

html[data-theme="dark"] .rv-header {
    background-color: var(--neo-surface-soft, #1D232D);
    border-color: var(--neo-border, #2A313C);
}

html[data-theme="dark"] .rv-header-subject,
html[data-theme="dark"] .rv-header-sub,
html[data-theme="dark"] .rv-rail .rv-rail-count,
html[data-theme="dark"] .rv-set-title,
html[data-theme="dark"] .rv-board-list label,
html[data-theme="dark"] .rv-set-opt,
html[data-theme="dark"] .rv-comments-head h3,
html[data-theme="dark"] .rv-comment-name,
html[data-theme="dark"] .rv-comment-body {
    color: #9CA3AF;
}

html[data-theme="dark"] .rv-content,
html[data-theme="dark"] .rv-viewer-ad {
    background-color: #161A22;
    color: #9CA3AF;
}

html[data-theme="dark"] .rv-content a,
html[data-theme="dark"] .rv-comments-login a {
    color: #3B82F6;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-close,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings .rv-settings-foot button,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments-head .rv-comments-close,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button, html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-editrow button {
    background-color: #161A22 !important;
    border-color: var(--neo-border, #2A313C) !important;
    box-shadow: none !important;
    color: #9CA3AF !important;
}

html[data-theme="dark"] .rv-meta-board,
html[data-theme="dark"] .rv-hint {
    background-color: var(--neo-surface-soft, #1D232D);
    border-color: var(--neo-border, #2A313C);
    box-shadow: none;
    color: #9CA3AF;
}

html[data-theme="dark"] .rv-read-badge,
html[data-theme="dark"] .rv-comment-editrow input,
html[data-theme="dark"] .rv-comments-form input {
    background-color: #161A22;
    border-color: var(--neo-border, #2A313C);
    color: #9CA3AF;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button:active {
    box-shadow: none !important;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-settings-open,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-comment-open,
html[data-theme="dark"] body:not(.cke_editable) .rv-overlay .rv-rail button.rv-react.is-liked,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="checkbox"]:checked, html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="radio"]:checked,
html[data-theme="dark"] body:not(.cke_editable) .rv-settings .rv-settings-foot button.rv-set-save,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-reply,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-edit,
html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-editrow button.rv-c-save {
    background-color: var(--neo-surface-soft, #1D232D) !important;
}

html[data-theme="dark"] .rv-comments,
html[data-theme="dark"] .rv-settings,
html[data-theme="dark"] .rv-board-list li {
    background-color: #161A22;
    border-color: var(--neo-border, #2A313C);
    box-shadow: none;
}

html[data-theme="dark"] .rv-board-list li.is-dragging {
    background-color: var(--neo-surface-soft, #1D232D);
    box-shadow: none;
}

html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="checkbox"], html[data-theme="dark"] body:not(.cke_editable) .rv-settings input[type="radio"] {
    background-color: #161A22 !important;
    border-color: var(--neo-border, #2A313C) !important;
}

html[data-theme="dark"] .rv-settings input[type="checkbox"]:checked::after,
html[data-theme="dark"] .rv-settings-foot,
html[data-theme="dark"] .rv-comments-head,
html[data-theme="dark"] .rv-comments-form {
    border-color: var(--neo-border, #2A313C);
}

html[data-theme="dark"] .rv-settings input[type="radio"]:checked::after {
    background-color: var(--neo-surface-soft, #1D232D);
}

html[data-theme="dark"] .rv-comment-avatar {
    background-color: #161A22;
    border-color: var(--neo-border, #2A313C);
}

html[data-theme="dark"] body:not(.cke_editable) .rv-comments .rv-comment-actions button.rv-c-del {
    background-color: #1D232D !important;
}

html[data-theme="dark"] .rv-comments-form button {
    background-color: var(--neo-surface-soft, #1D232D);
    border-color: var(--neo-border, #2A313C);
    color: #9CA3AF;
}

html[data-theme="dark"] .rv-toast {
    background-color: #161A22;
    border-color: var(--neo-border, #2A313C);
    box-shadow: none;
    color: #9CA3AF;
}