/* 角色：讓畫面活潑的小動畫，尊重減少動態設定 */
.ch{display:block;height:auto;max-width:100%}
.castrow{display:flex;justify-content:center;align-items:flex-end;gap:clamp(4px,2vw,18px);flex-wrap:nowrap;overflow:hidden;padding-top:6px}
.castrow figure{margin:0;display:grid;justify-items:center;gap:2px;flex:0 1 auto;min-width:0;animation:chbob 2.6s ease-in-out var(--d,0s) infinite}
.castrow .ch{height:clamp(54px,13vw,104px);width:auto}
.castrow figcaption{text-align:center;font-size:12px;line-height:1.25}
.castrow figcaption b{display:block;font-size:13px}
.castrow figcaption span{color:var(--muted)}
.castrow.big .ch{height:clamp(70px,17vw,140px)}
.say{display:flex;align-items:flex-end;gap:10px}
.say .sayimg{width:clamp(56px,12vw,84px);height:auto;flex:none;animation:chbob 2.4s ease-in-out infinite}
.say .sb{position:relative;background:var(--surface,#fff);border:2px solid var(--line,#E6DCEB);border-radius:16px;padding:8px 14px;font-size:15px;line-height:1.5;min-width:0}
.say .sb:before{content:"";position:absolute;left:-9px;bottom:14px;width:14px;height:14px;background:inherit;border-left:2px solid var(--line,#E6DCEB);border-bottom:2px solid var(--line,#E6DCEB);transform:rotate(45deg)}
.say .sb>b{display:block;font-size:13px}
.say.alert .sb{border-color:#C8333B}.say.alert .sb:before{border-color:#C8333B}
.say.ok .sb{border-color:#2E8A5C}.say.ok .sb:before{border-color:#2E8A5C}
.av{width:30px;height:30px;border-radius:50%;object-fit:contain;background:#fff;border:2px solid var(--pc,#ccc);flex:none}
@keyframes chbob{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes chhop{0%,100%{transform:translateY(0)}30%{transform:translateY(-16px)}60%{transform:translateY(0)}}
.hop{animation:chhop .7s ease-in-out 3}
@media (prefers-reduced-motion:reduce){.castrow figure,.say .sayimg,.hop{animation:none}}
