.qs-shield{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;border:var(--border-w,2px) solid var(--line,#1a1a1a);border-radius:14px;background:var(--paper,#fff);color:var(--ink,#1a1a1a);margin:12px 0;transition:background .35s,border-color .35s,transform .2s;position:relative;overflow:hidden;font-size:.92rem}
body.dark-mode .qs-shield{background:#14141a;color:#EFEBE0}
.qs-shield__icon{flex:0 0 44px;width:44px;height:44px;position:relative}
.qs-shield__icon svg{width:44px;height:44px;display:block;overflow:visible}
.qs-shield__base{fill:rgba(128,128,128,.12);stroke:rgba(128,128,128,.35);stroke-width:2.5;stroke-linejoin:round}
.qs-shield__ring{fill:none;stroke:var(--qs-accent,#6c5ce7);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;transition:stroke-dashoffset .25s linear,stroke .3s}
.qs-shield__tick{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0}
.qs-shield__txt{flex:1;min-width:0;line-height:1.25}
.qs-shield__title{display:block;font-weight:700}
.qs-shield__sub{display:block;opacity:.75;font-size:.82rem;font-variant-numeric:tabular-nums}
.qs-shield__info{flex:0 0 auto;width:24px;height:24px;border-radius:50%;border:2px solid currentColor;background:transparent;color:inherit;font:700 .75rem/1 serif;font-style:italic;cursor:pointer;opacity:.6;padding:0}
.qs-shield__info:hover,.qs-shield__info[aria-expanded=true]{opacity:1}
.qs-shield__panel{flex:1 0 100%;font-size:.8rem;line-height:1.45;opacity:.85;border-top:1px dashed rgba(128,128,128,.4);padding-top:8px;margin-top:2px}
.qs-shield__panel code{font-size:.78rem}
.qs-shield__threat{display:inline-block;margin-left:6px;padding:0 7px;border-radius:99px;background:#e3b23c;color:#1a1a1a;font-size:.68rem;font-weight:700;vertical-align:middle}
.qs-shield__retry{display:none;border:2px solid currentColor;background:transparent;color:inherit;border-radius:10px;padding:4px 10px;font-weight:700;font-size:.8rem;cursor:pointer}
.qs-shield[data-state=idle]{opacity:.85}
.qs-shield[data-state=working] .qs-shield__icon{animation:qsPulse 1.4s ease-in-out infinite}
.qs-shield[data-state=working]::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(108,92,231,.14) 50%,transparent 70%);transform:translateX(-100%);animation:qsSweep 1.8s linear infinite;pointer-events:none}
.qs-shield[data-state=ok]{border-color:#2fb36b;background:rgba(47,179,107,.10)}
body.dark-mode .qs-shield[data-state=ok]{background:rgba(47,179,107,.16)}
.qs-shield[data-state=ok] .qs-shield__base{fill:#2fb36b;stroke:#2fb36b}
.qs-shield[data-state=ok] .qs-shield__ring{stroke:#2fb36b;stroke-dashoffset:0}
.qs-shield[data-state=ok] .qs-shield__tick{opacity:1;animation:qsTick .45s .1s ease-out forwards}
.qs-shield[data-state=ok] .qs-shield__icon{animation:qsPop .5s ease-out}
.qs-shield[data-state=error]{border-color:#e5484d;background:rgba(229,72,77,.09)}
.qs-shield[data-state=error] .qs-shield__ring{stroke:#e5484d;stroke-dashoffset:0}
.qs-shield[data-state=error] .qs-shield__retry{display:inline-block}
.qs-shield__spark{position:absolute;left:22px;top:22px;width:6px;height:6px;border-radius:50%;background:#2fb36b;opacity:0;pointer-events:none}
.qs-shield[data-state=ok] .qs-shield__spark{animation:qsSpark .7s ease-out forwards}
.qs-hp{position:absolute!important;left:-9999px!important;top:auto!important;width:1px!important;height:1px!important;overflow:hidden!important}
@keyframes qsPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}
@keyframes qsSweep{to{transform:translateX(100%)}}
@keyframes qsTick{to{stroke-dashoffset:0}}
@keyframes qsPop{0%{transform:scale(.8)}60%{transform:scale(1.18)}100%{transform:scale(1)}}
@keyframes qsSpark{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}
@media (prefers-reduced-motion:reduce){.qs-shield *,.qs-shield{animation:none!important;transition:none!important}.qs-shield[data-state=ok] .qs-shield__tick{stroke-dashoffset:0}}
.qs-shield{--paper:var(--card);--ink:var(--text);--qs-accent:var(--acc);--border-w:1px;margin:14px 0}
.qs-shield__panel a{color:inherit}
