What Elastic Page reads
Elastic Page examines a bounded set of semantic elements such as headings, paragraphs, block quotes, figures, images, list items, and buttons.
For candidate elements it reads viewport geometry through getBoundingClientRect and selected computed-style values needed to decide whether an element is safe to animate.
The engine does not need the paragraph or heading text to calculate spring motion. It does not read input values, textarea contents, selected options, passwords, or contenteditable text for its effect.
Elements that are hidden, nearly transparent, too small, too large, fixed, sticky, already transformed, already using individual translate/rotate/scale, or running a CSS animation are excluded.
What Elastic Page temporarily changes
For eligible elements, Elastic Page can temporarily set the individual CSS translate and rotate properties. It does not rewrite the page's DOM structure or replace the website's transform property.
The engine keeps the original inline values of the properties it touches in memory. Turning the effect off restores those values and removes the extension controls.
Offsets and rotations are hard-bounded. The extension is intended to create subtle inertia, not to fling content away from its original layout position.
Fixed navigation, sticky interfaces, form fields, editable regions, video, audio, iframe, canvas, SVG, and pre-transformed elements are intentionally left alone to reduce interaction risk.
Motion inputs and event handling
Scroll position changes supply the primary impulse. The engine converts scroll delta into bounded velocity and then uses a damped spring to settle eligible elements back to zero offset.
Pointer movement near a viewport edge can apply a very small temporary pull. Pointer presses on an eligible surface can apply a short local impulse.
The extension listens for resize so it can rebuild its bounded candidate set after the viewport changes. These listeners are removed when the effect is turned off.
Animation writes occur inside requestAnimationFrame. The engine does not rebuild the page DOM on animation ticks.
Motion profiles
Soft, Rubber, Heavy, and Loose adjust local spring, damping, scroll response, rotation response, edge response, and click impulse constants.
Changing a profile does not send information anywhere and does not persist a preference after the in-page instance ends.
The selected profile changes the feel of the temporary effect but not the underlying webpage content or website data.
Scope of this notice
This privacy notice describes the browser extension identified on this page and the behavior of version 1.0.0. It is written for the packaged Chrome extension, not for unrelated websites, development tools, or future products.
The extension is a local visual effect. It does not provide an account system, cloud synchronization, advertising service, analytics service, or remote processing backend.
The page on which you activate the extension remains controlled by that website. This notice covers what the extension itself does while its temporary effect is active.
Activation and temporary page access
The extension does not run on every site in the background. It is activated by an explicit toolbar action or its documented keyboard shortcut.
Chrome's activeTab permission provides temporary access to the active tab as a consequence of that user action. The extension does not request a standing host permission for all websites.
The scripting permission is used to inject code that is packaged inside the installed extension. The extension does not download JavaScript, stylesheets, WebAssembly, or other executable code from a server.
Activation can fail on browser-internal pages and other locations where Chrome does not allow ordinary extensions to inject scripts. In that case the extension does not attempt to bypass the browser restriction.
Storage, persistence, and retention
The extension does not use chrome.storage, localStorage, IndexedDB, cookies, Cache Storage, or a remote database for page-derived information.
Effect state exists only in memory while the page remains open and the effect remains active. Turning the effect off removes its interface and active rendering state.
Closing or reloading the tab naturally ends the in-page instance. There is no server-side retention because the extension has no server-side data flow.
Network behavior
The packaged extension does not use fetch, XMLHttpRequest, WebSocket, EventSource, sendBeacon, remote fonts, remote analytics, or a third-party API.
No page-derived information is uploaded by the extension. The website itself may continue making its own network requests independently of the extension.
The extension does not insert advertising pixels, tracking scripts, affiliate tags, or remote measurement resources into the active page.
Analytics, advertising, and sale of data
The extension contains no analytics SDK and does not create a user identifier for measurement or advertising.
The extension does not sell, rent, license, or share page-derived information with advertisers, data brokers, or marketing platforms.
There are no sponsored placements inside the extension interface and no behavioral advertising profile is created.
Third parties
No third-party runtime library is loaded from the network. The production package is self-contained.
Chrome supplies the extension platform APIs, including activeTab and scripting. Your use of Chrome is also governed by the browser provider's own terms and privacy practices.
Websites you visit remain independent third parties. Activating the extension does not change the website operator's own data practices.
Security design
The extension minimizes persistent access by relying on user-invoked activeTab access instead of broad host permissions.
Runtime work is bounded so that a very large page cannot cause an unbounded number of animated or analyzed elements.
The extension interface uses a high-layer local host and Shadow DOM so page styles are less likely to accidentally restyle its controls. The interface does not accept executable code from the page.
The production package contains no remote code loader, eval-based application logic, development harness, private key, or signing credential.
User controls
You can stop the effect from its in-page Off control or by invoking the extension again on the same page.
A Pause control stops motion without requiring a page reload. Where applicable, pausing also returns temporary visuals to a settled or cleared state.
Because no page-derived data is stored by the extension, there is no separate deletion request workflow for saved browsing content.
Reduced motion and accessibility
The extension checks the prefers-reduced-motion media query. When the operating system or browser requests reduced motion, the effect starts paused rather than immediately animating the page.
The in-page controls are native buttons with keyboard focus behavior and visible focus treatment.
The effect is decorative and optional. Turning it off removes the extension layer and returns control entirely to the underlying webpage.
Children
The extension is a general-purpose visual utility and is not designed to collect information from children.
Because it provides no account creation, messaging, behavioral advertising, or remote data collection, it does not intentionally build profiles about children or adults.
Changes to this policy
If a future version materially changes permissions, storage, network behavior, or page access, this notice should be updated to describe that behavior before that version is distributed.
A purely visual or wording update that does not change data handling may be reflected by revising the effective date and descriptive text.
Contact
Questions about this privacy notice can be sent to hanhruiroc@gmail.com. Please do not include passwords, authentication tokens, or sensitive page contents in a support message.
When reporting a compatibility problem, a public URL and a description of the visual issue are usually enough; sending private webpage contents is not required.