.pwa-install-prompt{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);z-index:10000;max-width:420px;width:calc(100% - 40px);animation:slideUp .4s cubic-bezier(.16,1,.3,1);pointer-events:none}@keyframes slideUp{0%{transform:translateX(-50%) translateY(120%);opacity:0}to{transform:translateX(-50%) translateY(0);opacity:1}}.pwa-install-content{background:linear-gradient(135deg,#ffffff,#f8fafc);border-radius:16px;padding:24px;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04),0 0 0 1px rgba(0,0,0,.05);position:relative;pointer-events:all;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.pwa-install-close{position:absolute;top:16px;right:16px;background:transparent;border:none;color:#6b7280;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s ease;width:28px;height:28px}.pwa-install-close:hover{background:#f3f4f6;color:#374151}.pwa-install-icon{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:white;border-radius:12px;padding:16px;display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 16px;box-shadow:0 4px 6px -1px rgba(79,70,229,.3)}.pwa-install-text{text-align:center;margin-bottom:20px}.pwa-install-text h3{margin:0 0 8px;font-size:20px;font-weight:600;color:#1f2937;line-height:1.2}.pwa-install-text p{margin:0;font-size:14px;color:#6b7280;line-height:1.5}.pwa-install-features{display:flex;gap:16px;justify-content:center;margin-bottom:20px;padding:12px;background:#f9fafb;border-radius:8px}.pwa-feature{display:flex;align-items:center;gap:6px;font-size:13px;color:#4b5563;font-weight:500}.pwa-feature svg{color:#4f46e5;flex-shrink:0}.pwa-install-actions{display:flex;flex-direction:column;gap:10px}.pwa-install-actions .btn{width:100%;padding:12px 20px;font-size:15px;font-weight:600;border-radius:8px;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer}.btn-install{background:linear-gradient(135deg,#4f46e5,#7c3aed);color:white;box-shadow:0 4px 6px -1px rgba(79,70,229,.3)}.btn-install:hover{transform:translateY(-1px);box-shadow:0 6px 12px -2px rgba(79,70,229,.4)}.btn-install:active{transform:translateY(0)}.btn-later{background:transparent;color:#6b7280;border:1px solid #e5e7eb}.btn-later:hover{background:#f9fafb;color:#374151;border-color:#d1d5db}@media (max-width:480px){.pwa-install-prompt{bottom:16px;width:calc(100% - 32px);max-width:none}.pwa-install-content{padding:20px}.pwa-install-text h3{font-size:18px}.pwa-install-text p{font-size:13px}.pwa-install-features{flex-direction:column;gap:8px}}@media (prefers-color-scheme:dark){.pwa-install-content{background:linear-gradient(135deg,#1f2937,#111827);box-shadow:0 20px 25px -5px rgba(0,0,0,.3),0 10px 10px -5px rgba(0,0,0,.2)}.pwa-install-text h3{color:#f9fafb}.pwa-install-close,.pwa-install-text p{color:#9ca3af}.pwa-install-close:hover{background:#374151;color:#f3f4f6}.pwa-install-features{background:#111827}.pwa-feature{color:#d1d5db}.btn-later{background:transparent;color:#9ca3af;border-color:#374151}.btn-later:hover{background:#374151;color:#f3f4f6;border-color:#4b5563}}.error-boundary{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg,24px);background:var(--color-background,#f5f7fa);font-family:var(--font-family);animation:error-boundary-fade-in .4s cubic-bezier(.16,1,.3,1) forwards}@keyframes error-boundary-fade-in{0%{opacity:0}to{opacity:1}}.error-boundary-content{max-width:440px;width:100%;text-align:center;background:var(--color-surface,#fff);border-radius:var(--radius-xl,12px);padding:var(--spacing-2xl,48px) var(--spacing-xl,32px);box-shadow:var(--shadow-xl,0 20px 25px -5px rgba(0,0,0,.1));border:1px solid var(--color-border,#e4e7eb);animation:error-boundary-slide-up .5s cubic-bezier(.16,1,.3,1) .06s both}@keyframes error-boundary-slide-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.error-boundary-icon{color:var(--color-error,#e53e3e);margin-bottom:var(--spacing-lg,24px);display:flex;align-items:center;justify-content:center}.error-boundary-badge{font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted,#718096);margin:0 0 var(--spacing-sm,8px) 0}.error-boundary-title{font-size:clamp(1.35rem,3vw,1.6rem);font-weight:700;color:var(--color-text-primary,#1a1f36);margin:0 0 var(--spacing-md,16px) 0;letter-spacing:-.02em;line-height:1.25}.error-boundary-message{font-size:.95rem;line-height:1.55;color:var(--color-text-secondary,#4a5568);margin:0 0 var(--spacing-xl,32px) 0}.error-boundary-details{text-align:left;margin:var(--spacing-lg,24px) 0;padding:var(--spacing-md,16px);background:var(--color-surface-alt,#f0f2f5);border-radius:var(--radius-base,8px);border:1px solid var(--color-border,#e4e7eb)}.error-boundary-details summary{cursor:pointer;font-weight:500;font-size:.85rem;color:var(--color-text-secondary,#4a5568);margin-bottom:var(--spacing-sm,8px)}.error-boundary-stack{font-size:11px;font-family:ui-monospace,monospace;color:var(--color-text-primary,#2d3748);white-space:pre-wrap;word-break:break-word;margin:0;padding:var(--spacing-sm,8px) var(--spacing-md,12px);background:var(--color-surface,#fff);border-radius:var(--radius-sm,6px);overflow-x:auto;max-height:200px;overflow-y:auto}.error-boundary-actions{display:flex;gap:var(--spacing-md,12px);justify-content:center;flex-wrap:wrap}.error-boundary-btn{display:inline-flex;align-items:center;gap:var(--spacing-sm,8px);padding:.6rem 1.2rem;border-radius:var(--radius-base,8px);font-size:.9rem;font-weight:600;font-family:var(--font-family);cursor:pointer;transition:background .2s,border-color .2s,transform .1s;border:none}.error-boundary-btn:active{transform:scale(.98)}.error-boundary-btn-primary{background:var(--color-primary,#8409bd);color:#fff}.error-boundary-btn-primary:hover{background:var(--color-primary-hover,#6b0898)}.error-boundary-btn-secondary{background:transparent;color:var(--color-text-secondary,#4a5568);border:1px solid var(--color-border,#e4e7eb)}.error-boundary-btn-secondary:hover{background:var(--color-surface-alt,#f0f2f5);border-color:var(--color-text-muted,#718096);color:var(--color-text-primary,#1a1f36)}.dark .error-boundary,[data-theme=dark] .error-boundary{background:var(--color-background)}.dark .error-boundary-content,[data-theme=dark] .error-boundary-content{background:var(--color-surface);border-color:var(--color-border)}.dark .error-boundary-details,[data-theme=dark] .error-boundary-details{background:var(--color-surface-alt);border-color:var(--color-border)}.dark .error-boundary-stack,[data-theme=dark] .error-boundary-stack{background:var(--color-background)}