:root{--glass-bg:rgba(255, 255, 255, 0.85);--shadow-lg:0 10px 40px -10px rgba(0, 0, 0, 0.2);--shadow-sm:0 2px 8px rgba(0, 0, 0, 0.1);--primary:#f84269;--color-text:#1a1a1a;--color-text-muted:#666}.pwa-install-banner{position:fixed;bottom:20px;left:20px;right:20px;top:auto!important;height:auto!important;margin:0 auto;max-width:500px;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);padding:16px;border-radius:20px;box-shadow:var(--shadow-lg);z-index:10000;display:none;flex-direction:column;gap:16px;border:1px solid rgba(255,255,255,.2);transform:translateY(120%);transition:transform .6s cubic-bezier(.16, 1, .3, 1);font-family:inherit}.pwa-install-banner.show{display:flex;transform:translateY(0)}.update-banner{border:1px solid var(--primary)}.pwa-content{display:flex;align-items:flex-start;gap:14px;height:auto!important}.update-icon{font-size:24px;background:var(--primary);color:#fff;min-width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:14px;box-shadow:0 4px 12px rgba(248,66,105,.3)}.pwa-icon{width:48px;height:48px;border-radius:12px;box-shadow:var(--shadow-sm);object-fit:cover}.pwa-text{flex:1}.pwa-text h3{font-size:1.05rem;margin:0 0 4px;color:var(--color-text);font-weight:800;display:flex;align-items:center;gap:8px}.pwa-text p{font-size:.85rem;line-height:1.4;margin:0;color:var(--color-text-muted)}.pwa-actions{display:flex;align-items:center;gap:12px;width:100%;height:auto!important}.pwa-install-btn{background:var(--primary);color:#fff;padding:12px 24px;font-size:.9rem;font-weight:700;flex:1;border-radius:14px;box-shadow:0 4px 15px rgba(248,66,105,.4);transition:transform .2s;border:none;cursor:pointer}.pwa-install-btn:active{transform:scale(.96)}.pwa-dismiss-btn-text{background:0 0;border:none;color:var(--color-text-muted);font-size:.85rem;font-weight:600;cursor:pointer;padding:8px 12px;transition:color .2s}@media (max-width:400px){.pwa-actions{flex-direction:column}.pwa-install-banner{bottom:10px;left:10px;right:10px}}@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{from{transform:translateY(-100%)}to{transform:translateY(0)}}