/* Keep feedback outside the content flow so delayed responses do not move the page. */
#panel-network{position:fixed;bottom:18px;left:50%;transform:translate(-50%,8px);z-index:1500;max-width:min(460px,calc(100vw - 32px));padding:9px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-2);color:var(--txt-2);font:12px/1.5 var(--font,system-ui);box-shadow:0 8px 28px #0003;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s}
#panel-network.visible{opacity:1;transform:translate(-50%,0)}
#panel-network.delayed{border-color:var(--orange);color:var(--txt)}
.ux-state{min-height:30px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--txt-3);padding:3px 0}
.ux-state .cp-btn{flex-shrink:0}
.ux-skeleton{min-height:140px;padding:18px;border:1px solid var(--border);border-radius:var(--radius,12px);background:var(--bg-2);overflow:hidden;position:relative}
.ux-skeleton span{display:block;height:12px;border-radius:4px;background:var(--border);margin:8px 0 18px;width:85%}
.ux-skeleton span:nth-child(2){width:55%}.ux-skeleton span:nth-child(3){width:70%}
.ux-failed .ux-skeleton::after{display:none}
.content + .ux-state,.panel > .ux-state{padding-left:24px;padding-right:24px}
.ux-skeleton::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,#ffffff06,transparent);transform:translateX(-100%);animation:ux-shimmer 1.6s linear infinite}
@keyframes ux-shimmer{to{transform:translateX(100%)}}
.cards-grid{min-height:160px}.acc-card{content-visibility:auto;contain-intrinsic-size:auto 150px}
.acc-card:active,.nav-i:active,.sess-tab:active{transform:translateY(1px)}
button,a,input,select,textarea,[data-act]{touch-action:manipulation}
#bbar-ok,#bbar-fail,#bbar-skip,#inb-bar{transition:width .25s ease}
@media(prefers-reduced-motion:reduce){.panel.on,.ux-skeleton::after,.acc-card.busy::after{animation:none!important}#panel-network,.acc-card,.nav-i,.sess-tab,#bbar-ok,#bbar-fail,#bbar-skip,#inb-bar{transition:none!important}}
