/* HENGWEN RU v2.5 — isolated review carousel styles. */
.hw-carousel{--review-count:3;--review-gap:20px;position:relative;min-width:0}
.hw-carousel .reviews-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:34px}
.hw-carousel .reviews-heading h2{margin:0}
.hw-review-controls{display:flex;gap:10px;flex-shrink:0;padding-bottom:3px}
.hw-review-button{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;padding:0;border:1px solid #d0d5da;border-radius:50%;background:#fff;color:var(--ink);transition:background .18s,border-color .18s,color .18s;touch-action:manipulation;flex-shrink:0}
.hw-review-button:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.hw-review-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.hw-review-button .hw-icon-play{display:none}
.hw-review-button[data-state="paused"] .hw-icon-play{display:block}
.hw-review-button[data-state="paused"] .hw-icon-pause{display:none}
.hw-review-button[data-state="playing"]{border-color:#b5bdc5}
.hw-review-viewport{min-width:0;position:relative;overflow:hidden;border-radius:10px;touch-action:pan-y pinch-zoom}
.hw-review-track{display:grid;grid-template-columns:repeat(var(--review-count),minmax(0,1fr));gap:var(--review-gap);list-style:none;padding:0;margin:0;align-items:stretch}
.hw-review-slide{min-width:0;margin:0;padding:0}
.hw-review-link{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;height:480px;height:clamp(380px,36vw,510px);padding:12px;border:1px solid var(--line);border-radius:10px;background:#eceeef;overflow:hidden;cursor:zoom-in;transition:border-color .18s,background .18s}
.hw-review-link:hover{border-color:#aab2ba;background:#e6e9eb}
.hw-review-link:focus-visible{outline:3px solid #d72727;outline-offset:-4px}
.hw-review-link img{display:block;width:100%;height:100%;object-fit:contain;object-position:center;user-select:none;-webkit-user-drag:none}
.hw-review-zoom-mark{position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.92);border:1px solid #dfe2e5;color:#34393e;pointer-events:none;opacity:0;transition:opacity .2s}
.hw-review-zoom-mark svg{height:16px;width:16px;fill:none;stroke:currentColor;stroke-width:1.7}
.hw-review-link:hover .hw-review-zoom-mark,.hw-review-link:focus-visible .hw-review-zoom-mark{opacity:1}
.hw-carousel.is-ready .hw-review-track{display:flex;gap:var(--review-gap);will-change:transform}
.hw-carousel.is-ready .hw-review-slide{flex:0 0 var(--review-width);width:var(--review-width)}
.hw-carousel.is-dragging .hw-review-link{cursor:grabbing}
.hw-carousel.is-dragging img{pointer-events:none}
.hw-review-dots{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:1px;margin-top:24px}
.hw-review-dot{display:grid;place-items:center;width:28px;height:36px;padding:0;border:0;background:transparent;touch-action:manipulation}
.hw-review-dot::before{content:"";width:6px;height:6px;border-radius:999px;background:#b9c1c8;transition:width .2s,background .2s}
.hw-review-dot[aria-current="true"]::before{width:20px;background:#d72727}
.hw-review-dot:hover::before{background:var(--ink)}
.hw-review-sr{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}
.hw-carousel [hidden]{display:none!important}
/* Native modal: no external image viewer, no extra text captions. */
.hw-review-dialog{width:min(1100px,94vw);max-width:94vw;max-height:94vh;max-height:94dvh;border:1px solid #d8dde2;border-radius:14px;padding:0;color:var(--ink);background:#f4f5f6;overflow:hidden;box-shadow:0 24px 90px rgba(0,0,0,.3)}
.hw-review-dialog::backdrop{background:rgba(15,19,23,.82)}
.hw-review-dialog:not([open]){display:none}
.hw-review-dialog-bar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid #dfe2e5;background:#fff}
.hw-review-dialog-actions{display:flex;align-items:center;gap:8px}
.hw-review-counter{min-width:68px;text-align:center;font-size:13px;color:#626970;font-variant-numeric:tabular-nums}
.hw-review-dialog .hw-review-button{width:42px;height:42px}
.hw-review-viewer{display:flex;align-items:flex-start;justify-content:center;overflow:auto;overscroll-behavior:contain;max-height:calc(94vh - 69px);max-height:calc(94dvh - 69px);padding:18px;scrollbar-gutter:stable;touch-action:pan-x pan-y pinch-zoom}
.hw-review-viewer img{display:block;max-width:100%;width:auto;height:auto;max-height:calc(94vh - 108px);max-height:calc(94dvh - 108px);object-fit:contain;cursor:zoom-in}
.hw-review-dialog.is-zoomed .hw-review-viewer img{width:var(--review-natural-width);max-width:100%;height:auto;max-height:none;cursor:zoom-out}
.hw-review-dialog [hidden]{display:none!important}
@media(max-width:1000px){.hw-carousel{--review-count:2}.hw-review-link{height:470px}}
@media(max-width:650px){.hw-carousel{--review-count:1;--review-gap:16px}.hw-carousel .reviews-heading{align-items:flex-start;flex-direction:column;gap:20px;margin-bottom:24px}.hw-review-controls{align-self:flex-end;padding:0}.hw-review-link{height:440px;padding:10px}.hw-review-zoom-mark{opacity:1}.hw-review-dots{margin-top:16px}.hw-review-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:96vh;max-height:96dvh;border-radius:10px}.hw-review-dialog-bar{padding:8px;gap:6px}.hw-review-dialog-actions{gap:4px}.hw-review-dialog .hw-review-button{width:40px;height:40px}.hw-review-counter{min-width:54px}.hw-review-viewer{padding:8px;max-height:calc(96vh - 58px);max-height:calc(96dvh - 58px)}.hw-review-viewer img{max-height:calc(96vh - 76px);max-height:calc(96dvh - 76px)}}
@media(max-width:360px){.hw-review-link{height:395px}.hw-review-dot{width:25px}}
@media(prefers-reduced-motion:reduce){.hw-review-track,.hw-review-button,.hw-review-dot::before,.hw-review-link,.hw-review-zoom-mark{transition:none!important}}
