/* community-zine-s4.css — 원본 toonhub/css/community-zine.css 스테이지 분할(STEP3, 2026-07-30).
   S4 — 평론 / 평론가 프로필 / 작품별 평론 모아보기.
   규칙 본문·순서 무변경(byte-exact 이관). 토큰=base.css, radius=tokens.css. */
/* [분할 계약] S9 는 마지막 링크. 링크 순서 base -> s1 -> ... -> s9 유지.
   ★단 이것만으로 캐스케이드 동일이 보장되지 않는다(리뷰어 R3 정정). S9 가 base 를 갖고 다른 스테이지가 그
   오버라이드를 갖는 역방향 쌍이 존재한다 — .cmz .nt (base=S9 알림, 오버라이드=S8 모션 가드). 이 쌍은 가드를
   s9 말미로 별도 이관해 해소했다. 실측: 동일 셀렉터 중복 11쌍 = Sx->S9 정방향 10 + S9->S8 역방향 1.
   S9 는 라이트 테마·@media(max-width:620px) 만이 아니라 방문기록바·레벨배지·알림·푸터도 갖는다
   = "뒤에 와야 하는 규칙만 모인 파일"이 아니다. 신규 분할·이관 시 중복 유무가 아니라 방향까지 확인할 것.
   또한 화면 무변화는 미링크 규칙이 현행 마크업에 매치되지 않을 때만 따라온다 — 짝 규칙(중립화 오버라이드·
   누출 해제)은 활성 스테이지로 이관해야 한다(R1·R2 선례: s1 말미 이관 구역). */
/* [활성화] 해당 스테이지 착수 1단계 = toonhub/ToonHerb.html 의 이 파일 link 주석 해제. */

/* 50% = 원형 요소 전용. 이 파일의 border-radius:50% 6건은 전부 원형 요소(도트·아바타·아이콘 원판) 전용 — CLAUDE.md 8-2 ② 사유 주석. 원본 1파일 시절 s1 중간의 "이하 파일 전체" 주석이 덮던 커버리지를 분할 후 파일별로 승계. */

/* ===== 평론 ===== */
/* ★평론 카드 규칙은 .cmz(커뮤니티) 와 .rvz(평론 카드 공유 스코프) 양쪽에 건다.
   같은 마크업(revCardHTML)을 작품상세 평론탭도 쓰는데 거기는 .cmz 밖이라
   pages.css 의 옛 규칙(.rev-card-thumb 3:4 등)을 받아 카드가 달라 보였다.
   스코프를 통째로 풀지 않는 이유 = 이 블록에 .tb/.stx/.vf 처럼 짧은 공용 이름이 섞여 있어
   무스코프로 두면 작품 카드 배지(components.css .tb)와 충돌한다. */
.cmz .rv-ctl,.rvz .rv-ctl{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--bor);padding-bottom:9px;margin-bottom:16px;flex-wrap:wrap}
.cmz .rv-sorts,.rvz .rv-sorts{display:flex;gap:3px}
.cmz .rv-search,.rvz .rv-search{max-width:270px;margin-left:auto}
.cmz .rv-list,.rvz .rv-list{display:flex;flex-direction:column;gap:12px}
.cmz .rv-card,.rvz .rv-card{position:relative;display:flex;border:1px solid var(--bor);background:var(--pane);transition:.12s}
.cmz .rv-card:hover,.rvz .rv-card:hover{border-color:var(--bor2)}
.cmz .rv-in,.rvz .rv-in{flex:1;min-width:0;padding:16px 18px 12px}
.cmz .rv-bar,.rvz .rv-bar{width:5px;flex:none}
/* 카드 우측 컬럼 — .rv-card 가 flex, .rv-in 이 flex:1 이므로 aside 는 그 나머지 컬럼이다.
   마크업은 review.js:354-360 이 이미 발행하고 있었고 CSS 만 없었다(시안 JS↔시안 CSS 불일치).
   의도 근거 = community-redesign.html 의 구버전 .rv-score/.rv-sv/.rv-wc/.rv-axes.
   ★.cmz 밖(작품상세 work.js:92·:359)에서는 pages.css 의 .rev-card-side/.rev-card-thumb 가 계속 먹는다 —
     그래서 옛 클래스를 떼지 않고 병기한 것이다. 여기 규칙은 커뮤니티 평론 탭에만 걸린다. */
.cmz .rv-aside,.rvz .rv-aside{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:10px;padding:16px 18px 12px 0}
.cmz .rv-as-sc,.rvz .rv-as-sc{display:flex;flex-direction:column;align-items:flex-end;gap:3px;text-align:right}
.cmz .rv-as-t,.rvz .rv-as-t{font-family:'Chakra Petch',var(--font);font-size:28px;font-weight:700;line-height:.95;letter-spacing:-1px;color:var(--t1)}
/* ★수식자는 rev-card--*(옛 이름)다 — review.js:320 이 `rv-card rev-card rev-card--${level}` 로 발행한다.
   rv-card--* 로 쓰면 매치되지 않아 총점이 항상 --t1 로 나온다(실측으로 잡음). */
.cmz .rev-card--pos .rv-as-t,.rvz .rev-card--pos .rv-as-t{color:var(--acc)}
.cmz .rev-card--mid .rv-as-t,.rvz .rev-card--mid .rv-as-t{color:var(--gold)}
.cmz .rev-card--neg .rv-as-t,.rvz .rev-card--neg .rv-as-t{color:var(--neg)}
.cmz .rv-as-ax,.rvz .rv-as-ax{font-size:10px;color:var(--t3);white-space:nowrap}
/* 표지 2:3. pages.css .rev-card-thumb(60x80=3:4)를 .cmz 안에서만 덮는다(셀렉터 특정도 0,2,0 > 0,1,0). */
.cmz .rv-as-cv,.rvz .rv-as-cv{width:64px;height:96px;flex:none;background-size:cover;background-position:center;border:1px solid var(--bor);border-radius:0;overflow:hidden;cursor:pointer}
.cmz .rv-as-cv:hover,.rvz .rv-as-cv:hover{border-color:var(--bor2)}
.cmz .rv-as-cv .rev-card-thumb-img,.rvz .rv-as-cv .rev-card-thumb-img{width:100%;height:100%;object-fit:cover;border-radius:0;display:block;pointer-events:none}   /* 0 = 반경 명시 해제(진 스타일은 직각) */
.cmz .rv-bar-green,.rvz .rv-bar-green{background:var(--acc);box-shadow:0 0 12px color-mix(in srgb,var(--acc) 75%,transparent),inset 0 0 6px rgba(255,255,255,.25)}
.cmz .rv-bar-yellow,.rvz .rv-bar-yellow{background:var(--gold);box-shadow:0 0 12px color-mix(in srgb,var(--gold) 70%,transparent),inset 0 0 6px rgba(255,255,255,.25)}
.cmz .rv-bar-red,.rvz .rv-bar-red{background:var(--neg);box-shadow:0 0 12px color-mix(in srgb,var(--neg) 70%,transparent),inset 0 0 6px rgba(255,255,255,.2)}
.cmz .stars,.rvz .stars{display:inline-flex;gap:1px}
.cmz .stx,.rvz .stx{display:inline-flex;position:relative}
.cmz .stx svg,.rvz .stx svg{width:15px;height:15px;fill:var(--bor2)}
.cmz .stx-full svg,.rvz .stx-full svg{fill:var(--gold)}
.cmz .stx-half::before,.rvz .stx-half::before{content:"";position:absolute;left:0;top:0;bottom:0;width:50%;background:var(--gold);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5l2.9 6.1 6.6.9-4.8 4.7 1.2 6.6L12 17.6 6.1 20.8l1.2-6.6L2.5 9.5l6.6-.9z'/%3E%3C/svg%3E") 0 0/15px 15px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2.5l2.9 6.1 6.6.9-4.8 4.7 1.2 6.6L12 17.6 6.1 20.8l1.2-6.6L2.5 9.5l6.6-.9z'/%3E%3C/svg%3E") 0 0/15px 15px no-repeat}
.cmz .rv-h,.rvz .rv-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.cmz .rv-av,.rvz .rv-av{width:36px;height:36px;border-radius:50%;background:var(--acc-dim);border:1px solid var(--bor);display:grid;place-items:center;font-size:14px;font-weight:700;color:var(--acc-br);flex:none}
.cmz .rv-hm,.rvz .rv-hm{flex:1;min-width:0}
.cmz .rv-hr1,.rvz .rv-hr1{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cmz .rv-nick,.rvz .rv-nick{font-size:13.5px;font-weight:700;color:var(--t1)}
.cmz .rv-nick:hover,.rvz .rv-nick:hover{color:var(--acc-br)}
.cmz .rv-hr2,.rvz .rv-hr2{font-size:10px;color:var(--t3);margin-top:3px}
.cmz .rv-trust,.rvz .rv-trust{width:7px;height:7px;border-radius:50%;flex:none}
.cmz .rv-tr-high,.rvz .rv-tr-high{background:var(--acc-br)}
.cmz .rv-tr-mid,.rvz .rv-tr-mid{background:var(--t3)}
.cmz .rv-tr-low,.rvz .rv-tr-low{background:var(--bor2)}
.cmz .vf,.rvz .vf{display:inline-flex;flex:none}
.cmz .vf svg,.rvz .vf svg{width:14px;height:14px;color:var(--acc-br)}
.cmz .rv-score,.rvz .rv-score{display:flex;align-items:center;gap:8px;flex:none}
.cmz .rv-sv,.rvz .rv-sv{font-size:13px;font-weight:700;color:var(--t2)}
/* 등급 뱃지 + 사다리 툴팁 */
.cmz .tb-wrap,.rvz .tb-wrap{position:relative;display:inline-flex}
.cmz .tb,.rvz .tb{font-size:9.5px;font-weight:800;padding:2px 7px;border-radius:var(--r-sm);white-space:nowrap}
.cmz .tb-rookie,.rvz .tb-rookie{background:var(--bg4);color:var(--t3)}
.cmz .tb-general,.rvz .tb-general{background:var(--cz-tb-general-bg);color:var(--cz-tb-general-fg)}
.cmz .tb-pro,.rvz .tb-pro{background:var(--cz-tb-pro-bg);color:var(--cz-tb-pro-fg)}
.cmz .tb-master,.rvz .tb-master{background:var(--cz-tb-master-bg);color:var(--cz-tb-master-fg)}
.cmz .tb-official,.rvz .tb-official{background:var(--acc-br);color:var(--cz-tb-official-fg)}
.cmz .tl,.rvz .tl{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);background:var(--bg4);border:1px solid var(--bor2);padding:9px 11px;opacity:0;pointer-events:none;transition:opacity .15s;z-index:9;white-space:nowrap;box-shadow:0 8px 24px rgba(0,0,0,.5)}
.cmz .tb-wrap:hover .tl,.rvz .tb-wrap:hover .tl{opacity:1}
/* .tl-t/.tl-r/.tl-s/.tl-d/.tl-n/.tl-a(단축형 등급사다리, 8규칙) 삭제됨(2026-08-17) — JS 발행처 0건.
   실제 등급사다리는 pages.css 의 .tl-title/.tl-row/.tl-step/.tl-dot/.tl-name/.tl-arrow. 근거 문서:
   docs/done/평론컴포넌트_CSS스코프_부채_v1.md §3 */
/* 작품 칩 */
.cmz .rv-work,.rvz .rv-work{display:flex;align-items:center;gap:9px;border:1px solid var(--hair);background:var(--bg);padding:7px 10px;margin-bottom:13px;flex-wrap:wrap}
.cmz .rv-wc,.rvz .rv-wc{width:22px;height:29px;background-size:cover;background-position:center;background-color:var(--bg4);border:1px solid var(--bor);flex:none}
.cmz .rv-wn,.rvz .rv-wn{font-size:12.5px;font-weight:700;color:var(--acc-br)}
.cmz .rv-axes,.rvz .rv-axes{font-size:10px;color:var(--t3);margin-left:auto}
/* 한줄평 = 대표 */
.cmz .rv-one,.rvz .rv-one{font-family:'Chakra Petch',var(--font);font-size:19px;font-weight:700;line-height:1.4;letter-spacing:-.3px;color:var(--t1);margin-bottom:11px;text-wrap:pretty}
.cmz .rv-bodywrap,.rvz .rv-bodywrap{margin-bottom:11px}
.cmz .rv-body,.rvz .rv-body{font-size:13.5px;line-height:1.8;color:var(--t2);max-height:0;overflow:hidden;transition:max-height .3s ease}
.cmz .rv-body.open,.rvz .rv-body.open{max-height:900px}
.cmz .rv-body p,.rvz .rv-body p{margin-bottom:12px;text-wrap:pretty;max-width:640px}
.cmz .rv-body p:last-child,.rvz .rv-body p:last-child{margin-bottom:0}
.cmz .rv-more,.rvz .rv-more{display:inline-flex;align-items:center;gap:5px;font-family:'Space Mono';font-size:11px;font-weight:700;color:var(--acc-br);border:1px solid var(--bor);padding:5px 11px;margin-top:2px;transition:.12s;white-space:nowrap}
.cmz .rv-more:hover,.rvz .rv-more:hover{border-color:var(--acc);background:var(--acc-dim)}
.cmz .rv-mc,.rvz .rv-mc{display:inline-flex;transition:transform .25s}
.cmz .rv-mc.up,.rvz .rv-mc.up{transform:rotate(180deg)}
.cmz .rv-mc svg,.rvz .rv-mc svg{width:12px;height:12px;stroke:currentColor;stroke-width:2.2;fill:none}
.cmz .rv-nobody,.rvz .rv-nobody{font-size:10px;color:var(--t3);margin-bottom:11px;letter-spacing:.06em}
.cmz .rv-f,.rvz .rv-f{display:flex;align-items:center;gap:7px;padding-top:11px;border-top:1px solid var(--hair);flex-wrap:wrap}
.cmz .rv-fb,.rvz .rv-fb{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:var(--t3);border:1px solid transparent;padding:5px 8px;transition:.12s;white-space:nowrap}
.cmz .rv-fb:hover,.rvz .rv-fb:hover{color:var(--acc-br);border-color:var(--bor)}
/* 투표 활성 — .cmz 안에서 죽어 있던 것을 되살린다.
   원인은 특정도 동점 + 로드 순서다. pages.css:820 `.rev-card-like.liked` 와 위 `.cmz .rv-fb`
   가 둘 다 (0,2,0)인데 ToonHerb.html 에서 pages.css(25) < community-zine-s4.css(44) 이라
   s4 가 이겼다 → .cmz 안에서 .liked 의 color·font-weight 가 통째로 무시됐다.
   (작품 상세는 .cmz 밖이라 .rv-fb 가 안 걸려 정상 동작한다 — 화면별로 달리 보이던 이유다.)
   ★:hover 아래에 둔다 — hover 도 (0,3,0)이라 동점이라, 상태가 뒤에 와야 누른 버튼 위에
     마우스를 올려도 투표 색이 유지된다.
   ★색축은 상세(s6.css:41 .pd-vote.up / :44 .pd-vote.down)와 같은 토큰을 쓴다. 새 색을
     고르지 않는다 — 목록과 상세가 같은 신호여야 한다.
   ★.rv-fb 가 이미 border:1px solid transparent 라 테두리를 켜도 레이아웃이 밀리지 않는다. */
.cmz .rv-fb.liked,.rvz .rv-fb.liked{color:var(--acc);font-weight:700;border-color:var(--acc);background:var(--acc-dim)}
.cmz .rv-fb.disliked,.rvz .rv-fb.disliked{color:var(--neg);font-weight:700;border-color:var(--neg);background:color-mix(in srgb,var(--neg) 12%,transparent)}
.cmz .rv-fb b,.rvz .rv-fb b{font-family:'Space Mono';font-size:11px}
.cmz .rv-fb svg,.rvz .rv-fb svg{width:13px;height:13px;stroke:currentColor;stroke-width:1.9;fill:none}
.cmz .rv-help,.rvz .rv-help{color:var(--t2);border-color:var(--bor)}
.cmz .rv-help:hover,.rvz .rv-help:hover{background:var(--acc-dim)}
.cmz .rv-fsp,.rvz .rv-fsp{flex:1}
.cmz .rv-nick,.rvz .rv-nick,.cmz .rv-av,.rvz .rv-av{cursor:pointer}
/* 평론 상세 — .rd-*는 작품상세(.cmz 밖)도 renderRevDetail 을 그대로 쓰므로 .rvz 를 병기한다
   (위 카드 규칙과 동형, 값 무변경). rd-onek 은 review.js 어디서도 발행하지 않아 死규칙으로
   삭제됨(2026-08-17, docs/done/평론컴포넌트_CSS스코프_부채_v1.md §3). */
.cmz .rd-work,.rvz .rd-work{display:flex;align-items:flex-start;gap:15px;padding:18px 22px;border-bottom:1px solid var(--hair);background:var(--pane2);flex-wrap:wrap;cursor:pointer;margin-bottom:12px}   /* #1 리뷰어 지적 — 카드 전체가 goWork onclick(review.js:261), 커서 누락 */
.cmz .rd-cover,.rvz .rd-cover{width:66px;aspect-ratio:2/3;background-size:cover;background-position:center;border:1px solid var(--bor);flex:none}
.cmz .rd-wm,.rvz .rd-wm{flex:1;min-width:170px}
.cmz .rd-wk,.rvz .rd-wk{font-size:9.5px;letter-spacing:.1em;color:var(--t3);margin-bottom:5px}
.cmz .rd-wn,.rvz .rd-wn{font-size:16px;font-weight:700;color:var(--t1)}
.cmz .rd-wa,.rvz .rd-wa{font-size:10.5px;color:var(--t3);margin:4px 0 11px}
.cmz .rd-axes,.rvz .rd-axes{display:flex;flex-direction:column;gap:5px;max-width:290px}
.cmz .rda,.rvz .rda{display:flex;align-items:center;gap:8px}
.cmz .rda-l,.rvz .rda-l{font-size:10px;color:var(--t3);width:34px;flex:none}
.cmz .rda-t,.rvz .rda-t{flex:1;height:5px;background:var(--bg4);position:relative;overflow:hidden}
.cmz .rda-t i,.rvz .rda-t i{position:absolute;left:0;top:0;bottom:0;background:var(--acc-br)}
.cmz .rda-v,.rvz .rda-v{font-size:10px;font-weight:700;color:var(--t2);width:20px;text-align:right;flex:none}
.cmz .rd-score,.rvz .rd-score{display:flex;flex-direction:column;align-items:center;gap:6px;flex:none;padding-left:8px}
.cmz .rd-sv,.rvz .rd-sv{font-size:15px;font-weight:700;color:var(--t2)}
.cmz .rd-score .stx svg,.rvz .rd-score .stx svg{width:17px;height:17px}
.cmz .rd-sl,.rvz .rd-sl{font-size:10px;font-weight:700;color:var(--acc-br)}
/* 작성자의 현재 평가 보조행(R7 D-9) — 스냅샷≠라이브일 때만 발행(review.js _revWorkCardHTML). 클릭=이력 팝오버(stopPropagation 발행측 처리) */
.cmz .rd-cur,.rvz .rd-cur{margin-top:8px;font-size:11px;color:var(--t3);cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.cmz .rd-one,.rvz .rd-one{font-size:26px}

/* ===== 평론가 프로필 ===== */
.cmz .cp-head{display:flex;align-items:flex-start;gap:15px;border:1px solid var(--bor);background:var(--pane);padding:18px 20px;margin-bottom:12px;flex-wrap:wrap}
.cmz .cp-av{width:56px;height:56px;border-radius:50%;background:var(--acc-dim);border:1px solid var(--bor);display:grid;place-items:center;font-size:22px;font-weight:700;color:var(--acc-br);flex:none}
.cmz .cp-info{flex:1;min-width:180px}
.cmz .cp-nick{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:18px;font-weight:700;color:var(--t1)}
.cmz .cp-bio{font-size:12.5px;color:var(--t2);margin-top:6px;line-height:1.6;max-width:520px}
.cmz .cp-meta{font-size:10px;color:var(--t3);margin-top:7px}
.cmz .cp-act{display:flex;gap:7px;flex:none}
.cmz .btn-fol{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:var(--t2);border:1px solid var(--bor);background:var(--pane);padding:8px 14px;transition:.14s;white-space:nowrap}
.cmz .btn-fol svg{width:14px;height:14px;stroke:currentColor;stroke-width:2.2;fill:none}
.cmz .btn-fol:hover{border-color:var(--acc);color:var(--acc-br)}
.cmz .btn-fol.on{color:var(--acc-br);border-color:var(--acc);background:var(--acc-dim)}
.cmz .btn-fol .flbl{max-width:none;opacity:1}
.cmz .cp-ib{width:36px;display:grid;place-items:center;color:var(--t3);border:1px solid var(--bor)}
.cmz .cp-ib svg{width:15px;height:15px;stroke:currentColor;stroke-width:1.9;fill:none}
.cmz .cp-ib:hover{color:var(--acc-br);border-color:var(--acc)}
.cmz .cp-stats{display:flex;border:1px solid var(--bor);background:var(--pane);margin-bottom:20px;flex-wrap:wrap}
.cmz .cp-st{flex:1;min-width:88px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:13px 8px;border-right:1px solid var(--hair)}
.cmz .cp-st:last-child{border-right:none}
.cmz .cp-sv{font-family:'Chakra Petch';font-size:20px;font-weight:700;color:var(--t1);line-height:1}
.cmz .cp-sl{font-size:9.5px;color:var(--t3);letter-spacing:.05em}
.cmz .cp-sec{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.cmz .cp-work-filter-row{display:flex;align-items:center;gap:8px;margin-bottom:14px;max-width:280px}
.cmz .cp-work-filter-lb{font-size:11px;color:var(--t2);flex:none}
.cmz .cp-work-filter-row .ssel{flex:1;min-width:0}

/* ===== 작품별 평론 모아보기 (구 가로형) .cmz .wrx-* 45규칙 삭제됨(2026-08-17) — 소비처 0.
   2026-08-11 모아보기 2열 개편으로 work.js 마크업이 pages.css `.work-rev-page .wrx-*`(세로형)로
   이관되며 이 스코프는 死규칙이 됐다. 살아있는 버전 = pages.css:930- `.work-rev-page .wrx-*`.
   근거 문서: docs/done/평론컴포넌트_CSS스코프_부채_v1.md §2-B/§3 ===== */

/* ═══════════════════════════════════════════════════════════════════════
   평론 카드 재정렬 — community-zine-s4.css 말미에 추가 (2026-08-11)
   ───────────────────────────────────────────────────────────────────────
   기존 규칙을 삭제하지 않고 오버라이드만 한다. 마크업 변경 1건(아래 ★)만
   review.js 에 필요하고 나머지는 CSS 전용이다.

   [간격 시스템] 4px 배수 하나. 카드 패딩 16 · 블록 간격 16 · 인라인 8 · 밀착 4.
   [자간] Chakra(디스플레이) -.02em · Plex(본문·UI) 0 · Space Mono 라벨 .08em / 수치 0.
   [컬럼 높이 역산] 폐기(2026-08-11) — 좌우 컬럼 높이가 실측 불일치(좌 221.6px / 우 154.8px)해
                    역산 전제가 깨졌다. 우측 유닛은 좌측 높이 기준 세로 중앙 정렬로 대체한다.

   ★ 왜 .cmz 와 .rvz 양쪽에 거는가: revCardHTML 은 커뮤니티(.cmz)와 작품상세(.cmz 밖)
     양쪽이 쓰는 공용 컴포넌트다. 기존 파일의 병기 규칙과 같은 이유·같은 방식이다.
   ★ pages.css:787 .rev-card-side{align-self:center} 가 자식에 직접 걸려 있어
     부모 align-items 로는 안 넘어간다 → .rv-aside 에 align-self 를 명시해야 한다(값=center, 세로 중앙정렬).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 골격: 2열 ── */
.cmz .rv-in,.rvz .rv-in{display:flex;gap:16px;align-items:flex-start;padding:16px}
.cmz .rev-card-main,.rvz .rev-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}

/* ── 우측 컬럼: 표지 위 · 점수 아래 (프로젝트 규칙: 점수는 표지 아래 깨끗한 영역) ──
   ★.rv-aside 만 84px(아이콘 3열 축점수 수용 상한). 표지(.rv-as-cv)는 68px 유지 —
     84 로 늘리면 2:3 비율 크롭만 심해지고 얻는 게 없다(:44 표지 2:3 주석 참조).
     자식 정렬은 부모 align-items:flex-end 한 곳으로 우측 정렬(표지·점수 모두 카드 우변 기준선). */
.cmz .rv-aside,.rvz .rv-aside{width:84px;flex:none;align-self:center;padding:0;gap:8px;align-items:flex-end}
.cmz .rv-as-cv,.rvz .rv-as-cv{width:68px;height:102px}
.cmz .rv-as-sc,.rvz .rv-as-sc{flex-direction:column;align-items:flex-end;gap:4px;text-align:right}
.cmz .rv-as-t,.rvz .rv-as-t{font-family:'Chakra Petch',var(--font);font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.08}
.cmz .rv-as-t svg,.rvz .rv-as-t svg{vertical-align:baseline;margin-right:4px}

/* ── 축 점수: 라벨 텍스트 폐기, 아이콘 가로 3열로 교체(라벨은 title 툴팁) ──
   review.js:revCardHTML 의 .rv-as-ax 안 span 3개가 각각 아이콘+숫자를 낸다.
   ★최악값(3축 전부 두 자리) 계산: (아이콘10+아이콘값gap2+값12)×3 + 행gap4×2 = 80px ≤84px 상한, 여유4px.
     font-size 를 반드시 명시한다 — 비워두면 :43 구규칙(font-size:10px)이 되살아나는 캐스케이드 함정이 있다. */
.cmz .rv-as-ax,.rvz .rv-as-ax{display:flex;justify-content:flex-end;gap:4px;font-family:'Space Mono';font-size:10px;letter-spacing:0;color:var(--t3);white-space:nowrap}
.cmz .rv-as-ax span,.rvz .rv-as-ax span{display:inline-flex;align-items:center;gap:2px}
.cmz .rv-as-ax svg,.rvz .rv-as-ax svg{width:10px;height:10px;stroke:var(--t3);stroke-width:1.7;fill:none}
.cmz .rv-as-ax b,.rvz .rv-as-ax b{font-weight:400;color:var(--t2);font-size:10px}

/* ── 헤더 32px ── */
.cmz .rv-h,.rvz .rv-h{align-items:center;gap:8px;margin:0}
.cmz .rv-av,.rvz .rv-av{width:32px;height:32px;font-size:13px}
.cmz .rv-hm,.rvz .rv-hm{display:flex;flex-direction:column;gap:4px}
.cmz .rv-hr1,.rvz .rv-hr1{gap:8px;line-height:1}
.cmz .rv-nick,.rvz .rv-nick{font-size:13px;letter-spacing:0}
.cmz .rv-hr2,.rvz .rv-hr2{margin:0;font-size:10px;letter-spacing:0;line-height:1.4}

/* ── 작품 칩: 전폭 상자 폐기, 내용 폭 ── */
.cmz .rv-work,.rvz .rv-work{align-self:flex-start;width:fit-content;max-width:100%;padding:4px 8px;margin:0;gap:8px;flex-wrap:nowrap}
.cmz .rv-wn,.rvz .rv-wn{font-size:11px;letter-spacing:0;white-space:nowrap}
/* 작품 스코프에서는 작품명이 중복이므로 이 행만 숨긴다 — 카드 컴포넌트는 그대로 하나다 */
.wdz .rv-work,.work-rev-page .rv-work{display:none}

/* ── 한줄평 = 카드의 주인공 ── */
.cmz .rv-one,.rvz .rv-one{font-family:'Chakra Petch',var(--font);font-size:18px;letter-spacing:-.02em;line-height:1.34;margin:0}

/* ── 푸터: 구분선 없이 콘텐츠 바로 아래 ── */
.cmz .rv-bodywrap,.rvz .rv-bodywrap{margin:0}
.cmz .rv-f,.rvz .rv-f{margin:0;padding:0;gap:8px;border:0}
.cmz .rv-fb,.rvz .rv-fb{padding:4px 8px;font-size:11px;letter-spacing:0}
.cmz .rv-more,.rvz .rv-more{margin:0;font-size:10.5px;padding:4px 8px;letter-spacing:.04em}

/* ── 부수: 필터 버튼 줄바꿈 방지(폰트 폭이 몇 px만 넓어져도 "긍 / 정"으로 접힌다) ── */
.rev-seg-btn,.rev-spoil-toggle,.rev-sort-btn{white-space:nowrap}

