/* ─ Offline Overlay ─ */ .offline-overlay { position: absolute; inset: 0; z-index: 50; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); } .offline-overlay-card { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 40px 48px; background: var(--bg-app); border: 1px solid var(--border-subtle); border-radius: 16px; text-align: center; max-width: 360px; } .offline-icon { color: var(--text-muted); opacity: 0.7; } .offline-title { font-size: 20px; font-weight: 600; color: var(--text-primary); margin: 0; } .offline-subtitle { font-size: 14px; color: var(--text-muted); margin: 0; line-height: 1.5; } .offline-retry { display: flex; align-items: center; gap: 8px; margin-top: 4px; } .spin { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }