/* Nonblocking progress only follows a real framework navigation, never an anchor click. */
html[data-qp-navigating="true"] body::before { content:""; position:fixed; z-index:16000; inset-block-start:0; inset-inline:0; height:3px; background:linear-gradient(90deg,transparent,var(--ui-primary),transparent); background-size:200% 100%; animation:qp-navigation-progress 1s linear infinite; pointer-events:none; }
@keyframes qp-navigation-progress { to { background-position:-200% 0; } }
.qp-reconnect { display:none; position:fixed; inset:0; z-index:21000; align-items:center; justify-content:center; padding:24px; background:#0005; }
.qp-reconnect.components-reconnect-show,.qp-reconnect.components-reconnect-failed,.qp-reconnect.components-reconnect-rejected { display:flex; }
.qp-reconnect-card { width:min(100%,450px); padding:32px; border:1px solid var(--ui-border); border-radius:24px; background:var(--ui-surface); color:var(--ui-text); text-align:center; box-shadow:0 24px 80px #0003; }
.qp-reconnect-icon { display:grid; place-items:center; margin:0 auto 18px; width:48px; height:48px; border-radius:14px; background:var(--ui-primary-soft); color:var(--ui-primary); font-size:28px; }
.qp-reconnect-card strong { font-size:18px; }
.qp-reconnect-card p { color:var(--ui-muted); line-height:1.9; margin:12px 0 20px; }
.qp-reconnect-trying,.qp-reconnect-failed,.qp-reconnect-rejected,.qp-reconnect-actions { display:none; }
.components-reconnect-show .qp-reconnect-trying,.components-reconnect-failed .qp-reconnect-failed,.components-reconnect-rejected .qp-reconnect-rejected { display:block; }
.components-reconnect-failed .qp-reconnect-actions,.components-reconnect-rejected .qp-reconnect-actions { display:flex; justify-content:center; flex-wrap:wrap; gap:10px; }
.components-reconnect-rejected [data-qp-reconnect] { display:none; }
.qp-access-state { max-width:640px; margin:48px auto; padding:40px 28px; text-align:center; border:1px solid var(--ui-border); border-radius:24px; background:var(--ui-surface); color:var(--ui-text); }
.qp-access-state h1 { margin:20px 0 12px; font-size:clamp(20px,2.8vw,28px); line-height:1.6; }
.qp-access-state p { color:var(--ui-muted); line-height:1.9; margin-bottom:24px; }
.qp-access-state-icon { display:inline-grid; place-items:center; min-width:56px; height:56px; border-radius:18px; background:var(--ui-primary-soft); color:var(--ui-primary); font-size:26px; }
@media(prefers-reduced-motion:reduce) { html[data-qp-navigating="true"] body::before { animation:none; background:var(--ui-primary); } }
