/* One quiet, dismissible result surface across the platform. */
.zj-feedback{position:fixed;z-index:12000;right:24px;bottom:24px;display:flex;align-items:center;gap:18px;width:max-content;max-width:min(560px,calc(100% - 48px));padding:14px 16px;background:#fff;border:1px solid #c5ddcd;border-radius:8px;box-shadow:0 8px 28px rgba(25,35,45,.16);color:#265e40;font:14px/1.6 "Microsoft YaHei","PingFang SC",system-ui,sans-serif;animation:zj-feedback-arrive .18s cubic-bezier(.16,1,.3,1)}
.zj-feedback-content{display:flex;align-items:center;gap:10px;min-width:0;overflow-wrap:anywhere}.zj-feedback-text{min-width:0}.zj-feedback-icon{width:22px;height:22px;flex:0 0 22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.zj-feedback-error{border-color:#e4bbb4;color:#aa2d22}.zj-feedback-info{border-color:#ccd3df;color:#384758}
.zj-feedback-action{flex-shrink:0;min-height:40px;min-width:52px;padding:6px 10px;border:1px solid currentColor;border-radius:5px;background:transparent;color:inherit;font:inherit;cursor:pointer}.zj-feedback-action:hover{background:rgba(0,0,0,.04)}.zj-feedback-action:focus-visible{outline:3px solid #a84316;outline-offset:3px}
button.zj-is-busy{cursor:wait;position:relative}button.zj-is-busy::after{content:"";display:inline-block;vertical-align:middle;flex-shrink:0;width:13px;height:13px;margin-inline-start:7px;border:2px solid currentColor;border-inline-end-color:transparent;border-radius:50%;animation:zj-feedback-spin .7s linear infinite}
:is(.btn,.button,.adm-button,.primary-button,.secondary-button,.zj-feedback-action):not(:disabled){transition:background-color .12s ease-out,border-color .12s ease-out,transform .12s ease-out}:is(.btn,.button,.adm-button,.primary-button,.secondary-button,.zj-feedback-action):not(:disabled):active{transform:translateY(1px)}
@keyframes zj-feedback-arrive{from{opacity:.55;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes zj-feedback-spin{to{transform:rotate(360deg)}}
@media(max-width:640px){.zj-feedback{left:14px;right:14px;bottom:calc(78px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;gap:12px;padding:12px;font-size:14px}.zj-feedback-action{min-height:44px}.modal-panel .zj-feedback,.adm-confirm-panel .zj-feedback,dialog .zj-feedback{bottom:calc(16px + env(safe-area-inset-bottom,0px))}}
@media(prefers-reduced-motion:reduce){html:not([data-motion="full"]) .zj-feedback,html:not([data-motion="full"]) button.zj-is-busy::after{animation:none}html:not([data-motion="full"]) :is(.btn,.button,.adm-button,.primary-button,.secondary-button,.zj-feedback-action){transition:none!important;transform:none!important}}
@media(forced-colors:active){.zj-feedback{border-color:CanvasText}.zj-feedback-icon{stroke:CanvasText}}

/* The result and pending label remain legible in both motion modes. */
html[data-motion="reduce"] .zj-feedback{animation:zj-feedback-fade 160ms ease-out!important}
html[data-motion="reduce"] button.zj-is-busy::after{animation:none!important;transform:none!important;opacity:.7}
html[data-motion="reduce"] .zj-feedback-action{transition:background-color 160ms ease-out,border-color 160ms ease-out,opacity 160ms ease-out!important;transform:none!important}
@keyframes zj-feedback-fade{from{opacity:.72}to{opacity:1}}
