@keyframes sf-rise{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}.sf-rise{animation:sf-rise .32s var(--ease-out-soft) backwards}@keyframes sf-shimmer{to{background-position:-200% 0}}.sf-shimmer{background:linear-gradient(90deg, var(--color-dim) 0%, var(--color-hot-soft) 45%, var(--color-dim) 62%);color:#0000;-webkit-text-fill-color:transparent;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:2.2s linear infinite sf-shimmer}.sf-fold{transition:grid-template-rows .26s var(--ease-out-soft);grid-template-rows:0fr;display:grid}.sf-fold[data-open=true]{grid-template-rows:1fr}.sf-fold>*{min-height:0;overflow:hidden}@keyframes sf-scan{0%{transform:translate(-100%)}to{transform:translate(320%)}}.sf-scan{animation:sf-scan 2s var(--ease-out-soft) infinite}@media (prefers-reduced-motion:reduce){.sf-shimmer{color:var(--color-dim);-webkit-text-fill-color:currentColor;background:0 0;animation:none}.sf-scan{opacity:.5;animation:none}}@keyframes msg-flash{0%,35%{opacity:1}to{opacity:0}}.msg-bub{overflow-wrap:break-word}.msg-flash .msg-bub:after{content:"";border-radius:inherit;pointer-events:none;background-color:color-mix(in oklch, var(--color-hot) 38%, transparent);animation:msg-flash 2s var(--ease-out-soft) forwards;position:absolute;inset:0}.msg-flash .msg-bub:not(.bub-him):after{background-color:color-mix(in oklch, var(--color-white) 35%, transparent)}@media (prefers-reduced-motion:reduce){.msg-flash .msg-bub:after{animation-duration:2.8s}}
