.app-offline-banner{z-index:10;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--color-bg-raised);border-bottom:1px solid var(--color-accent-orange);color:var(--color-accent-orange);font-family:var(--font-mono);animation:app-offline-banner-enter var(--dur-fast) var(--ease-out);font-size:.78rem;line-height:1.4;display:flex;position:sticky;top:0}.app-offline-banner-icon{flex-shrink:0}@keyframes app-offline-banner-enter{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.empty-state{align-items:center;gap:var(--space-3);max-width:26rem;padding:var(--space-6) var(--space-5);text-align:center;flex-direction:column;margin:0 auto;display:flex}.empty-state-title{color:var(--color-text);margin:0;font-size:1.1rem;font-weight:600}.empty-state-message{color:var(--color-text-muted);margin:0;line-height:1.55}.route-loading{justify-content:center;align-items:center;min-height:100vh;display:flex}.route-loading .spinner{border:2px solid var(--color-border);border-top-color:var(--color-accent-cyan);border-radius:50%;width:1.5rem;height:1.5rem;animation:.7s linear infinite route-loading-spin}@keyframes route-loading-spin{to{transform:rotate(360deg)}}.error-boundary{min-height:100vh;padding:var(--space-5) var(--space-4);justify-content:center;align-items:center;display:flex}.error-boundary-panel{width:100%;max-width:26rem;padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);gap:var(--space-4);text-align:center;flex-direction:column;align-items:center;display:flex}.error-boundary-badge{padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-accent-orange);align-self:center;font-size:.7rem}.error-boundary-title{color:var(--color-text);margin:0;font-size:1.25rem;font-weight:600}.error-boundary-message{color:var(--color-text-muted);margin:0;line-height:1.55}.error-boundary-actions{justify-content:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.error-boundary-btn{min-height:44px;padding:0 var(--space-5);border-radius:var(--radius-md);font-family:var(--font-mono);letter-spacing:.06em;cursor:pointer;justify-content:center;align-items:center;font-size:.85rem;text-decoration:none;transition:transform .12s,background .12s;display:inline-flex}.error-boundary-btn:focus-visible{outline:2px solid var(--color-accent-cyan);outline-offset:2px}.error-boundary-btn[data-variant=primary]{border:1px solid var(--color-accent-cyan);background:var(--color-accent-cyan);color:var(--color-bg);font-weight:600}.error-boundary-btn[data-variant=primary]:hover{transform:translateY(-1px)}.error-boundary-btn[data-variant=secondary]{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.error-boundary-btn[data-variant=secondary]:hover{color:var(--color-text);background:var(--color-bg-raised)}@media (prefers-reduced-motion:reduce){.app-offline-banner,.route-loading .spinner{animation:none}.error-boundary-btn[data-variant=primary]:hover{transform:none}}
