/* FindVault production runtime polish — safe cross-screen layer. */
:where(a,button,input,select,textarea,[tabindex]):focus-visible{
  outline:3px solid rgba(14,165,233,.5)!important;
  outline-offset:3px!important;
}
.fv-skip-link{position:fixed;left:12px;top:12px;z-index:100000;transform:translateY(-160%);padding:10px 14px;border-radius:12px;background:#fff;color:#0f172a;font:800 14px/1.2 Inter,system-ui,sans-serif;box-shadow:0 12px 35px rgba(15,23,42,.25);transition:transform .18s ease}
.fv-skip-link:focus{transform:translateY(0)}
.fv-runtime-network{position:fixed;left:50%;bottom:18px;z-index:99999;transform:translate(-50%,140%);max-width:min(92vw,620px);padding:11px 16px;border:1px solid rgba(148,163,184,.3);border-radius:999px;background:rgba(15,23,42,.96);color:#f8fafc;font:800 13px/1.35 Inter,system-ui,sans-serif;box-shadow:0 18px 50px rgba(2,6,23,.3);opacity:0;transition:transform .22s ease,opacity .22s ease;text-align:center}
.fv-runtime-network.show{transform:translate(-50%,0);opacity:1}.fv-runtime-network.online{background:rgba(5,46,22,.96);border-color:rgba(34,197,94,.45)}.fv-runtime-network.offline{background:rgba(69,10,10,.97);border-color:rgba(248,113,113,.48)}
.fv-runtime-busy{cursor:progress!important}.fv-runtime-busy[aria-busy="true"]{opacity:.78}
img.fv-image-failed{background:linear-gradient(135deg,#e2e8f0,#f8fafc);object-fit:contain!important;min-height:72px}
html.fv-reduced-motion *,html.fv-reduced-motion *::before,html.fv-reduced-motion *::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
@media(max-width:640px){.fv-runtime-network{bottom:10px;border-radius:16px;width:calc(100vw - 20px)}}

/* Performance-first interaction states */
html.fv-navigating body{cursor:progress}
html.fv-navigating body::after{content:"";position:fixed;top:0;left:0;right:0;height:3px;z-index:2147483646;background:linear-gradient(90deg,#20c997,#46c7ff,#f4c95d);transform-origin:left;animation:fv-nav-progress .75s ease-in-out infinite}
@keyframes fv-nav-progress{0%{transform:scaleX(.08);opacity:.55}70%{transform:scaleX(.82);opacity:1}100%{transform:scaleX(1);opacity:0}}
.fv-runtime-busy{position:relative;pointer-events:none;opacity:.78}
.fv-runtime-busy::after{content:"";display:inline-block;width:.8em;height:.8em;margin-left:.5em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-.08em;animation:fv-spin .7s linear infinite}
@keyframes fv-spin{to{transform:rotate(360deg)}}
.fv-perf-skeleton{position:relative;overflow:hidden;background:rgba(148,163,184,.13)!important;color:transparent!important;border-color:rgba(148,163,184,.12)!important;min-height:58px}
.fv-perf-skeleton::after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);animation:fv-skeleton 1.25s infinite}
@keyframes fv-skeleton{100%{transform:translateX(100%)}}
@media(prefers-reduced-motion:reduce){html.fv-navigating body::after,.fv-runtime-busy::after,.fv-perf-skeleton::after{animation:none}}
