.vv-ai-banner{--vv-ai-green:#16a34a;--vv-ai-red:#dc2626;--vv-ai-orange:#e0461f;--vv-ai-h:44px;width:100%;color:hsl(var(--foreground));position:relative}html.dark .vv-ai-banner{--vv-ai-green:#4ade80;--vv-ai-red:#f87171;--vv-ai-orange:#ff7a52}.vv-ai-banner.is-docked{z-index:5}.vv-ai-banner.is-fixed{z-index:950;position:fixed;top:0;left:0;right:0}.vv-ai-banner-bar{isolation:isolate;background:hsl(var(--background));border-bottom:1px solid hsl(var(--border));padding-top:0;transition:border-color .4s;position:relative;overflow:hidden}.vv-ai-banner.is-fixed .vv-ai-banner-bar{padding-top:env(safe-area-inset-top)}.vv-ai-banner-row{z-index:1;height:var(--vv-ai-h);justify-content:center;align-items:center;gap:12px;max-width:1400px;margin:0 auto;padding:0 48px;display:flex;position:relative}.vv-ai-banner.is-docked .vv-ai-banner-row,.vv-ai-banner.is-fixed .vv-ai-banner-row{animation:.3s cubic-bezier(.22,1,.36,1) backwards vv-ai-banner-grow}@keyframes vv-ai-banner-grow{0%{opacity:0;height:0}to{height:var(--vv-ai-h);opacity:1}}.vv-ai-banner-toggle{text-align:left;min-width:0;height:34px;color:inherit;cursor:pointer;border-radius:999px;flex:0 auto;align-items:center;gap:10px;padding:0 8px 0 4px;transition:background .15s;display:flex}.vv-ai-banner-toggle:hover{background:hsl(var(--foreground) / .05)}.vv-ai-banner-toggle:focus-visible{outline:2px solid hsl(var(--foreground) / .35);outline-offset:0}.vv-ai-banner-logo{background:hsl(var(--foreground) / .06);border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid;position:relative}.vv-ai-banner-badge{background:var(--vv-ai-green);color:#fff;width:14px;height:14px;box-shadow:0 0 0 2px hsl(var(--background));border-radius:50%;place-items:center;animation:.42s cubic-bezier(.34,1.56,.64,1) both vv-ai-banner-pop;display:grid;position:absolute;bottom:-3px;right:-3px}html.dark .vv-ai-banner-badge{color:#0b2914}@keyframes vv-ai-banner-pop{0%{transform:scale(0)}to{transform:scale(1)}}.vv-ai-banner-text{align-items:baseline;gap:7px;min-width:0;font-size:13px;line-height:1.2;display:flex}.vv-ai-banner-text b{flex-shrink:0;font-weight:600}.vv-ai-banner-line{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:520px;color:hsl(var(--muted-foreground));overflow:hidden}.vv-ai-banner-chev{color:hsl(var(--muted-foreground));flex-shrink:0;transition:transform .28s cubic-bezier(.22,1,.36,1)}.vv-ai-banner.is-open .vv-ai-banner-chev{transform:rotate(180deg)}.vv-ai-banner-stop{background:hsl(var(--foreground));height:28px;color:hsl(var(--background));border-radius:999px;flex-shrink:0;padding:0 13px;font-size:12.5px;font-weight:600;transition:opacity .15s}.vv-ai-banner-stop:hover{opacity:.86}.vv-ai-banner-close{width:28px;height:28px;color:hsl(var(--muted-foreground));border-radius:50%;flex-shrink:0;place-items:center;transition:background .15s,color .15s;display:grid}.vv-ai-banner-close:hover{background:hsl(var(--foreground) / .07);color:hsl(var(--foreground))}.vv-ai-banner-tint,.vv-ai-banner-sheen{z-index:0;pointer-events:none;position:absolute;inset:0}.vv-ai-banner-tint{background-color:var(--vv-ai-tint,transparent);transition:background-color .4s}.vv-ai-banner.tone-blue{--vv-ai-tint:#026ffe1a;--vv-ai-edge:#026ffe47;--vv-ai-sweep:#026ffe38}.vv-ai-banner.tone-green{--vv-ai-tint:#22c55e1f;--vv-ai-edge:#22c55e57;--vv-ai-sweep:#22c55e4d}.vv-ai-banner.tone-error{--vv-ai-tint:#f2542d1f;--vv-ai-edge:#f2542d61;--vv-ai-sweep:#f2542d42}html.dark .vv-ai-banner.tone-blue{--vv-ai-tint:#3088ff2b;--vv-ai-edge:#3088ff73;--vv-ai-sweep:#3088ff52}html.dark .vv-ai-banner.tone-green{--vv-ai-tint:#4ade8029;--vv-ai-edge:#4ade804d;--vv-ai-sweep:#4ade8052}html.dark .vv-ai-banner.tone-error{--vv-ai-tint:#ff704833;--vv-ai-edge:#ff70485c;--vv-ai-sweep:#ff704852}.vv-ai-banner:not(.tone-neutral) .vv-ai-banner-bar{border-bottom-color:var(--vv-ai-edge)}.vv-ai-banner-sheen{overflow:hidden}.vv-ai-banner-sheen:before{content:"";background:linear-gradient(100deg, transparent 0%, var(--vv-ai-sweep,transparent) 50%, transparent 100%);opacity:0;will-change:transform;width:40%;position:absolute;top:0;bottom:0;left:0;transform:translate(-100%)}.vv-ai-banner.tone-blue .vv-ai-banner-sheen:before{opacity:1;animation:2.6s cubic-bezier(.45,0,.55,1) infinite vv-ai-banner-sweep}.vv-ai-banner.tone-green .vv-ai-banner-sheen:before,.vv-ai-banner.tone-error .vv-ai-banner-sheen:before{animation:1.4s cubic-bezier(.4,0,.2,1) forwards vv-ai-banner-once}@keyframes vv-ai-banner-sweep{0%{transform:translate(-100%)}to{transform:translate(250%)}}@keyframes vv-ai-banner-once{0%{opacity:1;transform:translate(-100%)}85%{opacity:1}to{opacity:0;transform:translate(250%)}}.vv-ai-banner.tone-blue .vv-ai-banner-line{background-image:linear-gradient(90deg, hsl(var(--muted-foreground)) 0px, hsl(var(--muted-foreground)) 80px, hsl(var(--foreground)) 120px, hsl(var(--muted-foreground)) 160px, hsl(var(--muted-foreground)) 240px);color:#0000;background-repeat:repeat-x;background-size:240px 100%;-webkit-background-clip:text;background-clip:text;animation:2.4s linear infinite vv-ai-banner-text}@keyframes vv-ai-banner-text{0%{background-position:0 0}to{background-position:240px 0}}.vv-ai-banner.tone-green .vv-ai-banner-line{color:var(--vv-ai-green);font-weight:500}.vv-ai-banner.tone-error .vv-ai-banner-line{color:var(--vv-ai-orange);font-weight:500}.vv-ai-banner-badge.is-error{background:var(--vv-ai-orange);color:#fff}.vv-ai-banner-panel{z-index:2;border:1px solid var(--vv-surface-border);background:var(--vv-surface);width:min(480px,100% - 24px);box-shadow:var(--vv-surface-shadow);opacity:0;visibility:hidden;border-top:0;border-radius:0 0 16px 16px;transition:opacity .18s,transform .26s cubic-bezier(.22,1,.36,1),visibility 0s linear .26s;position:absolute;top:100%;left:50%;overflow:hidden;transform:translate(-50%,-6px)}.vv-ai-banner.is-open .vv-ai-banner-panel{opacity:1;visibility:visible;transition:opacity .18s,transform .26s cubic-bezier(.22,1,.36,1),visibility;transform:translate(-50%)}.vv-ai-banner.is-inline .vv-ai-banner-panel{display:none;position:relative;top:auto;transform:translate(-50%)}.vv-ai-banner.is-inline.is-open .vv-ai-banner-panel{display:block;transform:translate(-50%)}.vv-ai-banner-list{overscroll-behavior:contain;max-height:min(360px,60vh);margin:0;padding:4px 8px;list-style:none;overflow-y:auto}.vv-ai-banner-item{grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:10px;padding:8px 6px;font-size:13px;line-height:18px;animation:.26s cubic-bezier(.22,1,.36,1) both vv-ai-banner-item-in;display:grid}@keyframes vv-ai-banner-item-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.vv-ai-banner-item+.vv-ai-banner-item{border-top:1px solid hsl(var(--foreground) / .05)}.vv-ai-banner-state{height:18px;color:hsl(var(--muted-foreground));place-items:center;display:grid}.vv-ai-banner-item.is-ok .vv-ai-banner-state{color:var(--vv-ai-green)}.vv-ai-banner-item.is-error .vv-ai-banner-state{color:var(--vv-ai-red)}.vv-ai-banner-spin{border:1.75px solid hsl(var(--foreground) / .16);border-top-color:hsl(var(--foreground) / .7);border-radius:50%;width:12px;height:12px;animation:.8s linear infinite vv-ai-banner-spin}@keyframes vv-ai-banner-spin{to{transform:rotate(360deg)}}.vv-ai-banner-what{flex-direction:column;min-width:0;display:flex}.vv-ai-banner-what>span{overflow-wrap:anywhere}.vv-ai-banner-what small{color:var(--vv-ai-red);overflow-wrap:anywhere;margin-top:2px;font-size:12px;line-height:16px}.vv-ai-banner-item.is-running .vv-ai-banner-what>span{color:hsl(var(--foreground));font-weight:500}.vv-ai-banner-time{color:hsl(var(--muted-foreground));font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.vv-ai-banner-empty{color:hsl(var(--muted-foreground));margin:0;padding:14px 16px;font-size:13px}.vv-ai-banner-foot{border-top:1px solid var(--vv-surface-border);color:hsl(var(--muted-foreground));justify-content:space-between;align-items:center;gap:12px;padding:10px 14px 11px;font-size:12.5px;display:flex}.vv-ai-banner-foot a{color:inherit;font-weight:500;text-decoration:none}.vv-ai-banner-foot a:hover{color:hsl(var(--foreground))}@media (max-width:480px){.vv-ai-banner-row{justify-content:space-between;gap:8px;padding:0 16px 0 12px}.vv-ai-banner-text{gap:6px}.vv-ai-banner-stop{padding:0 11px}.vv-ai-banner-panel{width:calc(100% - 16px)}.vv-ai-banner-count{display:none}}@media (prefers-reduced-motion:reduce){.vv-ai-banner-badge,.vv-ai-banner.is-docked .vv-ai-banner-row,.vv-ai-banner.is-fixed .vv-ai-banner-row,.vv-ai-banner .vv-ai-banner-line,.vv-ai-banner .vv-ai-banner-sheen:before,.vv-ai-banner-item{animation:none!important}.vv-ai-banner .vv-ai-banner-sheen:before{opacity:0!important}.vv-ai-banner.tone-blue .vv-ai-banner-line{color:hsl(var(--muted-foreground));background:0 0}.vv-ai-banner-spin{animation-duration:2.4s}.vv-ai-banner-bar,.vv-ai-banner-tint,.vv-ai-banner-panel,.vv-ai-banner-chev{transition:none}}
