@kieransimkin/dancemoves 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +338 -0
  2. package/README.md +893 -0
  3. package/RUDIMENTS-API.md +394 -0
  4. package/docs/README.md +73 -0
  5. package/docs/api/adapters.md +400 -0
  6. package/docs/api/downloads.md +158 -0
  7. package/docs/api/effects.md +463 -0
  8. package/docs/api/javascript.md +500 -0
  9. package/docs/api/paper-planes.md +167 -0
  10. package/docs/api/styling.md +292 -0
  11. package/docs/api/surface.json +446 -0
  12. package/docs/api/wordpress.md +365 -0
  13. package/docs/clay-transform-validation.md +84 -0
  14. package/docs/development.md +254 -0
  15. package/docs/guide.md +288 -0
  16. package/docs/javascript-api.md +292 -0
  17. package/docs/javascript-server.md +150 -0
  18. package/docs/react-next.md +185 -0
  19. package/docs/releasing-shared.md +162 -0
  20. package/docs/rudiments-source-integrity.md +80 -0
  21. package/docs/shared-feature-coverage.md +34 -0
  22. package/docs/shared-runtime-migration.md +111 -0
  23. package/docs/source-audit.md +120 -0
  24. package/docs/validation-setup.md +102 -0
  25. package/docs/wordpress-examples.md +206 -0
  26. package/docs/wordpress-shared-runtime.md +133 -0
  27. package/lib/admin.min.js +1 -0
  28. package/lib/assets/DanceRudiments-LICENSE +21 -0
  29. package/lib/assets/DanceRudiments-build-manifest.json +21 -0
  30. package/lib/assets/paper-dreams-plane-atlas.png +0 -0
  31. package/lib/build-manifest.json +117 -0
  32. package/lib/dancemoves.css +9 -0
  33. package/lib/dancemoves.min.js +5 -0
  34. package/lib/index.cjs +4802 -0
  35. package/lib/index.d.ts +71 -0
  36. package/lib/index.mjs +4780 -0
  37. package/lib/react.cjs +154 -0
  38. package/lib/react.d.ts +12 -0
  39. package/lib/react.mjs +135 -0
  40. package/lib/rudiments.d.ts +124 -0
  41. package/lib/server.cjs +411 -0
  42. package/lib/server.d.ts +11 -0
  43. package/lib/server.mjs +367 -0
  44. package/lib/styles/clay-stars-effects.css +1 -0
  45. package/lib/styles/clay-stars-rudiments.css +1 -0
  46. package/lib/styles/dance-moves-core.css +1 -0
  47. package/lib/styles/ks-epk-device-orientation.css +1 -0
  48. package/lib/styles/paper-dreams-flight.css +1 -0
  49. package/lib/wordpress.js +5 -0
  50. package/package.json +101 -0
@@ -0,0 +1,206 @@
1
+ # WordPress setup and Arcadians examples
2
+
3
+ [Repository README](../README.md) · [Runnable gallery](../examples/wordpress/index.html) · [Release guide](../RELEASING.md)
4
+
5
+ ## Before you start
6
+
7
+ Work on a draft Page or staging site. This patch creates no WordPress pages,
8
+ media attachments, settings or releases. `examples/wordpress` is a local teaching
9
+ environment; it is deliberately absent from the distributable plugin ZIP.
10
+
11
+ The native plugin source is 2.9.0 at `c4252556774f38cad6d75b1a52de7917d2c65af0`.
12
+ StemLab media is pinned at `77c3c0c8115830a5fd26cd56bd59500c26f3ba86`.
13
+ The live EPK’s rendered text and chapters were inspected on 29 September 2026.
14
+ Its raw JavaScript and private WordPress metadata were not available through that
15
+ rendered-page read. The checked-in `tools/stage-central-effects-migrations.js`
16
+ provides the concrete Arcadians `pointer`, `playbackPulse` (64 ticks), and
17
+ `quality` usage pattern. Do not label supplementary demonstrations as live usage.
18
+
19
+ ## Editor workflow
20
+
21
+ 1. Install/activate the packaged DanceMoves plugin; preserve its internal
22
+ `kieran-epk-device-orientation` folder/entrypoint identity.
23
+ 2. Create a draft Page with slug `arcadians-demo`. Upload the prepared Arcadians
24
+ MP3 and cover through Media Library; add the actual upload URLs to the
25
+ [HTML example](../examples/wordpress/wordpress/arcadians-markup.html).
26
+ 3. Upload the exact canonical LRC and the derived `sections.cue`. In **EPK Timing**,
27
+ enter BPM **145** and choose those attachments. The UI stores attachment IDs
28
+ and resolves their URLs later. Cue timestamps are absolute positions in the
29
+ recording; do not retime them merely because BPM changes.
30
+ 4. Leave **Timed lyric pop-ups** unchecked unless you are demonstrating the
31
+ built-in layer and have supplied song-specific styling. With it off, `onLyric`
32
+ still receives the selected LRC’s data. Keep the complete readable lyrics.
33
+ 5. Choose **None** for Ambient effect except the paper-plane demonstration.
34
+ That demonstration uses **Paper planes**, which stores `paper-planes`.
35
+ 6. Set the hidden master-duration key through the validating helper or deliberate
36
+ PHP/WP-CLI setup. It is not a field in the box and not REST-visible.
37
+ 7. Save and inspect the public preview signed out. Confirm the effective BPM,
38
+ selected files, audio binding, readable text, missing-asset errors, motion
39
+ preferences and correct native/package version before publishing.
40
+
41
+ ## Copyable child-theme implementation
42
+
43
+ Put `arcadians-example.js` and `arcadians-example.css` from
44
+ `examples/wordpress/wordpress/` in your child theme directory. Add
45
+ `enqueue-example.php` to its `functions.php` without duplicating the `<?php` tag.
46
+ The hook is conditional on the draft page slug and declares dependencies on
47
+ `dance-moves-core`, `dance-moves-effects` and `dance-moves-rudiments`; it runs at
48
+ priority 40, after the plugin has registered its scripts. Do not manually enqueue
49
+ another copy of DanceMoves or overwrite `window.danceMovesConfig` on production.
50
+
51
+ Use the supplied HTML in a Custom HTML block, with your own upload URLs. The
52
+ example mounts pointer, playback pulse and native orbit onto distinct owned
53
+ subjects. Its prefix and effect IDs are example-owned. It includes cleanup and
54
+ an explicit page-return policy; a production SPA needs its own navigation owner.
55
+ Other features use the API recipes in the README, with root/audio/targets and
56
+ callbacks supplied by your page. The local gallery’s `ctx` helpers are demo UI,
57
+ not plugin APIs and should not be copied into a page without their implementation.
58
+
59
+ ## WP-CLI setup with full file validation
60
+
61
+ Copy `page-settings.example.json` to `page-settings.json`. Replace `pageId:1234`
62
+ with your actual Page ID. Replace zero timing IDs with actual Media Library
63
+ attachment IDs only when those files are desired. The local gallery’s 9001/9002
64
+ identifiers are not portable to any WordPress database.
65
+
66
+ ```sh
67
+ # Import uploads; save the numeric IDs printed by these commands.
68
+ wp media import "examples/wordpress/media/arcadians.mp3" --porcelain
69
+ wp media import "examples/wordpress/media/cover.jpg" --porcelain
70
+ wp media import "examples/wordpress/media/canonical-lyric-timing.lrc" --porcelain
71
+ wp media import "examples/wordpress/media/sections.cue" --porcelain
72
+
73
+ # Validate all requested values first, then update only supplied metadata keys.
74
+ wp eval-file examples/wordpress/wordpress/configure-page.php page-settings.json --user=YOUR_ADMIN_LOGIN
75
+
76
+ # Read back; these commands do not change publication status.
77
+ wp post meta list YOUR_PAGE_ID
78
+ wp post meta get YOUR_PAGE_ID _dance_moves_master_duration_ms
79
+ ```
80
+
81
+ The helper requires an editable Page and an explicit WP-CLI user. It uses
82
+ `dance_moves_validate_timing_attachment()` for timing IDs, not just `absint()`.
83
+ Empty BPM deletes the explicit property and restores the unknown/120 fallback;
84
+ zero attachment IDs clear selections; false lyric opt-in clears the checkbox;
85
+ an empty effect disables the property-selected ambient adapter. Unspecified
86
+ keys are left alone. Validation is all-before-write, but the updates are not a
87
+ transaction and WP-CLI does not automatically create the same editor revision
88
+ workflow. Keep a backup and check the printed read-back.
89
+
90
+ A deliberate single-value update is also possible:
91
+
92
+ ```sh
93
+ wp post meta update YOUR_PAGE_ID _dance_moves_bpm 145
94
+ wp post meta update YOUR_PAGE_ID _dance_moves_master_duration_ms 273604.558
95
+ wp post meta update YOUR_PAGE_ID _dance_moves_effect paper-planes
96
+ wp post meta delete YOUR_PAGE_ID _dance_moves_effect
97
+ ```
98
+
99
+ Direct timing-ID updates do not validate the file’s full contents. Prefer the
100
+ helper or editor for those keys. Do not store a media URL in an ID field.
101
+
102
+ ## REST setup
103
+
104
+ The Page endpoint accepts these five registered metadata keys for an authorised
105
+ editor. Use a WordPress REST nonce in an authenticated same-origin session, or an
106
+ application password over HTTPS in a trusted server/CLI client. Never put an
107
+ application password in browser example code or commit it to the repository.
108
+
109
+ ```json
110
+ {
111
+ "meta": {
112
+ "_dance_moves_bpm": 145,
113
+ "_dance_moves_lyric_timing_id": 123,
114
+ "_dance_moves_cue_timing_id": 124,
115
+ "_dance_moves_lyric_popups_enabled": true,
116
+ "_dance_moves_effect": ""
117
+ }
118
+ }
119
+ ```
120
+
121
+ POST that JSON to your site’s `/wp-json/wp/v2/pages/YOUR_PAGE_ID`; 123/124 are
122
+ placeholders. REST attachment-ID sanitisation is not equivalent to the editor’s
123
+ file validator. `_dance_moves_master_duration_ms` has `show_in_rest:false`, so
124
+ set it through the validated CLI/PHP path, not by inventing a REST parameter.
125
+ All six keys are registered revision-aware, but taking/restoring revisions is a
126
+ WordPress operation, not a browser runtime API. Use normal Page revisions and
127
+ read the restored metadata/config back after restoration.
128
+
129
+ ## Settings which are not metadata
130
+
131
+ Rudiment name, rate, phase, amplitude, target and clock are `animate()` options.
132
+ Pointer bounds, pulse ticks, cue-class duration, timeline data and quality tiers
133
+ are JavaScript options. The audio URL is Page markup. There is no generic
134
+ `_dance_moves_enabled`, `_dance_moves_rudiment`, `_dance_moves_orientation`,
135
+ `_dance_moves_diagnostics`, `_dance_moves_audio_url` or API-key metadata field.
136
+
137
+ The orientation adapter mapping is currently fixed in PHP:
138
+ 130 Dying for a Diagnosis; 140 Light Will Win; 243 Presents & Chocolate;
139
+ 252 Clay/Stars; 268 Fully Nocturnal; 270 Amnesty, honestly?; 276 Walk With Me;
140
+ 298 Dmitri My Talisman; 839 California Screamin’. Each needs its matching DOM.
141
+ A new Page cannot obtain those mappings just by copying an ID into metadata.
142
+ The local selector uses the localhost-only harness override and demonstrates all
143
+ nine mappings with Arcadians, not nine real new WordPress pages.
144
+
145
+ Clay’s release adapter and automatic native background are Page-252-specific and
146
+ respect the legacy-plugin coexistence guard. The supplementary fixture uses the
147
+ same real scripts with compact educational markup and Arcadians at 145 BPM.
148
+ Do not change the real Clay page’s tempo to the demo tempo or copy its art direction
149
+ into another release merely to enable generic input. Use the page-agnostic APIs
150
+ for new EPKs. Paper planes are property-selected and work with a positioned,
151
+ isolated, clipped `.epk-hero`; counts and atlas URL are not separate editor keys.
152
+
153
+ The generic quality API, Clay quality recovery and native rudiment lifecycle have
154
+ different contracts. Manual `setTier()` is not measured degradation; direct
155
+ `pointer.set()` bypasses native event gating; `cueClass` uses a wall-clock timer;
156
+ `cueTimeline` reconstructs half-open `[time,end)` intervals. Core file-cue landing
157
+ and timeline landing are not interchangeable. The examples call out those boundaries.
158
+
159
+ ## Downloads and captures
160
+
161
+ Real MP3 downloads require an eligible same-site uploads URL in an explicit
162
+ `<a download>` on Page content. The plugin rewrites that anchor with its own PHP
163
+ HMAC helper and sends attachment headers; audio/source URLs stay direct and seekable.
164
+ Do not configure global MP3 attachment headers and do not use a signed download
165
+ URL as an audio source. The local server models GET/HEAD/Range behaviour only; its
166
+ random key is not the production WordPress salt, and it is not an implementation
167
+ of WordPress’s HTML Tag Processor.
168
+
169
+ The capture example sends only an explicitly synthetic fixture to a local route.
170
+ It stores nothing, requests no sensor permission and contains no production token.
171
+ The real `/ks-epk-motion/v1/capture` contract remains in the API reference. Its
172
+ fixed source token is not strong user authentication; review that endpoint before
173
+ expanding exposure. A local response is not evidence of private WordPress storage.
174
+
175
+ ## Data provenance and reproducibility
176
+
177
+ `examples/wordpress/media/manifest.json` pins the Arcadians MP3 (11,708,403 bytes),
178
+ cover, LRC hash, source commit and reference metadata. The canonical master lasts
179
+ 273.604558 seconds; the MP3 reference contains an estimated CBR duration
180
+ 273.659 seconds. The demo does not call that estimate a sample-exact MP3 duration:
181
+ the browser reads the actual media metadata and the plugin applies its documented
182
+ master-length tolerance. Do not overwrite canonical duration with a rounded 4:33.
183
+
184
+ The canonical LRC still contains upstream placeholder metadata headers (`Project
185
+ title`, `Project author`, `la:af`). Its sung text and all 96 time tags, including
186
+ 48 clear tags, are preserved. The runtime ignores those header fields. This
187
+ examples patch does not silently alter an artist-locked canonical file.
188
+
189
+ ## Evidence and limits
190
+
191
+ The [coverage manifest](../examples/wordpress/coverage.json) maps all 23 pages and
192
+ acceptance checks. Static/contract coverage is not a browser pass. Real-browser
193
+ validation uses the actual plugin assets; a test-only silent media route can be
194
+ used by the browser runner for transport assertions, clearly separate from the
195
+ real Arcadians demos. The normal gallery never generates or substitutes audio.
196
+ Actual Arcadians listening, public WordPress rendering, physical motion permission
197
+ and sustained-device performance must be checked separately before release.
198
+
199
+ ## Primary sources
200
+
201
+ - [Arcadians live EPK](https://kieransimkin.co.uk/arcadians/), rendered content checked 29 September 2026.
202
+ - [StemLab reference](https://github.com/kieransimkin/stemlab/blob/77c3c0c8115830a5fd26cd56bd59500c26f3ba86/examples/arcadians/reference.json).
203
+ - [Arcadians migration source](../tools/stage-central-effects-migrations.js).
204
+ - [WordPress metadata commands](https://developer.wordpress.org/cli/commands/post/meta/update/).
205
+ - [WordPress REST metadata](https://developer.wordpress.org/rest-api/extending-the-rest-api/modifying-responses/).
206
+ - [GitHub release command](https://cli.github.com/manual/gh_release_create).
@@ -0,0 +1,133 @@
1
+ # WordPress with the shared DanceMoves library
2
+
3
+ WordPress remains a separately built plugin inside this repository. It consumes
4
+ the same frontend library as React/Next.js; no parallel animation engine is kept
5
+ in the WordPress adapter. The existing plugin folder and entrypoint are preserved.
6
+
7
+ ## Build and install
8
+
9
+ From a complete repository checkout:
10
+
11
+ ```sh
12
+ npm install --ignore-scripts
13
+ npm run build
14
+ npm test
15
+ npm run test:legacy
16
+ npm run package:wordpress
17
+ ```
18
+
19
+ The retained PowerShell command is equivalent for the final build/archive step:
20
+
21
+ ```powershell
22
+ powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\package.ps1
23
+ if ($LASTEXITCODE -ne 0) { throw "WordPress build failed" }
24
+ ```
25
+
26
+ The build machine needs Node, npm and Python. The WordPress server needs neither
27
+ Node, npm, a C++ compiler nor an external CDN. Install `dist/DanceMoves-3.0.0.zip`
28
+ through Plugins → Add New → Upload Plugin, preserving a backup and the prior
29
+ working archive. Do not upload the npm tarball, web ZIP, repository source ZIP
30
+ or a downloaded patch bundle.
31
+
32
+ The ZIP contains the PHP adapter, `lib/wordpress.js`, `lib/admin.min.js`, shared
33
+ styles, atlas, native licence/build information and documentation. The packager
34
+ checks that its runtime is byte-identical to the shared library output and that
35
+ no tests, examples, source engines or duplicate JavaScript files enter it.
36
+
37
+ ## Metadata for each Page
38
+
39
+ Open the Page editor's **EPK Timing** box. Existing timing uploads, validation,
40
+ capability/nonce checks and revisions remain in PHP.
41
+
42
+ | Stored key | Setup |
43
+ |---|---|
44
+ | `_dance_moves_bpm` | Enter the song's own BPM (20–400). Blank removes the explicit value and uses the 120 fallback. Arcadians reference: 145. |
45
+ | `_dance_moves_lyric_timing_id` | Choose a Media Library `.lrc` attachment; this is an attachment ID, not a URL string. |
46
+ | `_dance_moves_cue_timing_id` | Choose a `.lrc`/bracketed `.cue` timing attachment. |
47
+ | `_dance_moves_lyric_popups_enabled` | Explicit checkbox opt-in. Custom song art direction remains page CSS. |
48
+ | `_dance_moves_master_duration_ms` | Advanced duration property, positive milliseconds; no ordinary editor field and not exposed through the standard REST metadata response. Arcadians reference: 273604.558. |
49
+ | `_dance_moves_effect` | Empty or `paper-planes`; no song/page-ID coupling for that effect. |
50
+
51
+ The existing `examples/wordpress/wordpress/configure-page.php` helper and the
52
+ [metadata recipes](wordpress-examples.md) cover validated WP-CLI writes, REST
53
+ boundaries and restoration. Never copy a demo attachment ID to production without
54
+ resolving that site's actual attachment. Upload files as UTF-8; clear lyric lines
55
+ are meaningful. Validation on editor save is stronger than merely sanitizing an
56
+ ID supplied by a programmatic update.
57
+
58
+ No existing keys or page IDs are renamed by the shared-library migration.
59
+ Rudiment choice, amplitude and phase are JavaScript options, not new WordPress
60
+ metadata fields. Existing orientation page mappings and the special Clay target
61
+ remain in `dance_moves_orientation_adapters()` and the Clay page constant.
62
+
63
+ ## Existing EPK JavaScript
64
+
65
+ Existing `window.DanceMoves`, `window.DanceMovesEffects`, native and orientation
66
+ aliases remain available. Enqueue page code with dependencies on the existing
67
+ handles rather than loading a second library or hand-writing asset URLs:
68
+
69
+ ```php
70
+ add_action('wp_enqueue_scripts', function () {
71
+ if (!is_page(260)) { return; } // Your actual Arcadians Page ID.
72
+ wp_enqueue_script(
73
+ 'my-arcadians-effects',
74
+ get_stylesheet_directory_uri() . '/arcadians-effects.js',
75
+ array('dance-moves-rudiments', 'dance-moves-effects'),
76
+ '1.0.0',
77
+ true
78
+ );
79
+ }, 40);
80
+ ```
81
+
82
+ ```js
83
+ // arcadians-effects.js; no repeated frontend import or timer engine.
84
+ const motion = window.DanceMoves;
85
+ const root = document.querySelector('.ks-epk');
86
+ const target = root.querySelector('.drift');
87
+ const handle = motion.rudiments.animate({
88
+ id:'arcadians:drift', root, target, rudiment:'clay_background',
89
+ clock:'audio', audio:root.querySelector('audio'),
90
+ rate:0.5, amplitude:{x:14,y:10,z:0}
91
+ });
92
+ handle.ready.catch(console.error);
93
+ window.addEventListener('pagehide', () => handle.destroy(), {once:true});
94
+ ```
95
+
96
+ The Clay page is already mounted by the adapter. Do not add a second controller
97
+ to the same background. Its eight-beat pace and original rotation/scale/opacity
98
+ accents remain separate from the position-only native pattern. Legacy Clay
99
+ plugin detection still suppresses the shared Clay styles and initializer.
100
+
101
+ `wp_localize_script` converts top-level scalar values to strings. The thin
102
+ JavaScript adapter deliberately normalizes known numbers/booleans before calling
103
+ the shared API; it does not use `Boolean('false')`. The page BPM comes from PHP
104
+ metadata, not a hard-coded song value.
105
+
106
+ ## Script handles and assets
107
+
108
+ `dance-moves-core` loads `lib/wordpress.js`. Existing effects, catalogue,
109
+ orientation and rudiment handles remain dependency aliases with `src=false`.
110
+ They do not request another engine. The WordPress admin Media Library selector
111
+ uses the shared `lib/admin.min.js` build and its existing jQuery dependency.
112
+ CSS is still enqueued conditionally so the legacy Clay coexistence guard works.
113
+
114
+ Custom code that explicitly fetches old raw `assets/*.js` URLs must migrate to
115
+ these handles. Building from source produces `lib/`; activating an unbuilt raw
116
+ checkout is not a supported deployment. Purge caches after installing the ZIP.
117
+
118
+ ## Server behaviour and acceptance
119
+
120
+ WordPress metadata, revisions, attachment lookup, signed MP3 delivery and private
121
+ motion-capture posts stay in the native PHP integration. Other applications use
122
+ the new Node equivalents; WordPress does not need a Node sidecar.
123
+
124
+ The existing fixed capture token is not reclassified as strong authentication
125
+ by this patch. The generic Node API requires application authorization instead.
126
+ Do not expose capture records publicly, and do not treat client-reported parity
127
+ flags as physical verification.
128
+
129
+ After deployment, inspect affected pages signed out: audio playback/ranges,
130
+ download attachments, exact cue landings, pause/seek/resume, lyric clears,
131
+ responsive layout, Clay native fallback, reduced motion, forced colours and
132
+ physical phone orientation. CI tests and package checks do not establish that a
133
+ particular WordPress installation or cache has been updated.
@@ -0,0 +1 @@
1
+ (()=>{(function(i){"use strict";function a(t){var e=String(t||"").toLowerCase().split(".");return e.length>1?e.pop():""}i(function(){i(document).on("click",".dance-moves-select-file",function(t){t.preventDefault();var e=i(this).closest(".dance-moves-file-field"),o=String(e.data("allowed-extensions")||"").split(",").filter(Boolean),l=wp.media({title:"Choose timing file",button:{text:"Use timing file"},multiple:!1});l.on("select",function(){var n=l.state().get("selection").first().toJSON(),f=a(n.filename);if(o.indexOf(f)===-1){window.alert("Choose a ."+o.join(" or .")+" timing file.");return}e.find("input[type=hidden]").val(n.id),e.find(".dance-moves-file-name").text(n.filename),e.find(".dance-moves-file-url").attr("href",n.url).prop("hidden",!1),e.find(".dance-moves-clear-file").prop("hidden",!1)}),l.open()}),i(document).on("click",".dance-moves-clear-file",function(t){t.preventDefault();var e=i(this).closest(".dance-moves-file-field");e.find("input[type=hidden]").val(""),e.find(".dance-moves-file-name").text("No file selected"),e.find(".dance-moves-file-url").attr("href","#").prop("hidden",!0),i(this).prop("hidden",!0)})})})(jQuery);})();
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Kieran Simkin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,21 @@
1
+ {
2
+ "schema": "dance-moves-rudiments-build/v1",
3
+ "upstream": {
4
+ "repository": "https://github.com/kieransimkin/DanceRudiments",
5
+ "commit": "0df000db8753f04f397311f5b7c6ae6561e1d260",
6
+ "version": "0.1.3",
7
+ "pipsPerBeat": 64,
8
+ "files": {
9
+ "include/dancerudiments/dance_rudiments.hpp": "6414362b2720262c8dd01630d7750b2501fd0c14",
10
+ "src/dance_rudiments.cpp": "565ba1013d66a85834bbbe5cbd341a0df54f88c1",
11
+ "LICENSE": "733ba0df08052fd7d14c10ee17806c26e326a2a8"
12
+ }
13
+ },
14
+ "backend": "complete-integer-domain-cpp-wasm-lookup",
15
+ "sampleCount": 1856,
16
+ "wasmSha256": "a5ec6a58d128e3c4cf943b6f8a429f8610f6ccc03173dcbac997a99441715e89",
17
+ "runtimeSha256": "e57bfdb456c871d398f700ce5229e18b3e57df036c41fb6ac079e30f9d5a42bf",
18
+ "lookupSourceSha256": "8f8f8300e8f85f298a95f7b14c302a91348613712db25fd095eddecdc3fdec8a",
19
+ "hostCompiler": "g++ (Debian 14.2.0-19) 14.2.0",
20
+ "wasmCompiler": "clang version 17.0.0 (https://github.com/swiftlang/llvm-project.git 10999b6d034fe318f3d56c83bddb6572593a8bb0)"
21
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "schema": "dancemoves-library-build/v1",
3
+ "name": "@kieransimkin/dancemoves",
4
+ "version": "3.0.2",
5
+ "files": [
6
+ {
7
+ "path": "admin.min.js",
8
+ "bytes": 1157,
9
+ "sha256": "db6ca41f28d0943a52c89093d279cc287a74702d412ea54c80b4c741525b9e43"
10
+ },
11
+ {
12
+ "path": "assets/DanceRudiments-build-manifest.json",
13
+ "bytes": 1021,
14
+ "sha256": "d08fcd81a5599cc50d7ed2e8517f031a2c7329dbfcd232491a4a2113c6ba44bd"
15
+ },
16
+ {
17
+ "path": "assets/DanceRudiments-LICENSE",
18
+ "bytes": 1070,
19
+ "sha256": "bc73e5152b5fe1716c5c8b5cb2b83d51b2e5300827bfa580eeb7a07a498aeafc"
20
+ },
21
+ {
22
+ "path": "assets/paper-dreams-plane-atlas.png",
23
+ "bytes": 989622,
24
+ "sha256": "72a04cfefa5a2daf46034fff5166fba01e9a6918a595257aeba53413b74687fa"
25
+ },
26
+ {
27
+ "path": "dancemoves.css",
28
+ "bytes": 31223,
29
+ "sha256": "0d768de1eda07c1981719b87fb6cc87c3e9278efd47d2d8e820cb4e3ba09e3c5"
30
+ },
31
+ {
32
+ "path": "dancemoves.min.js",
33
+ "bytes": 160870,
34
+ "sha256": "0ff2f5899a4b6e4d203fa56b294fdf041c968bb59c13a9fdf05e7fa2758fde68"
35
+ },
36
+ {
37
+ "path": "index.cjs",
38
+ "bytes": 262051,
39
+ "sha256": "cb0de734231081997bff5d4aef19562f94ba0d8fcff6d983e1fd5772fe91e2de"
40
+ },
41
+ {
42
+ "path": "index.d.ts",
43
+ "bytes": 7617,
44
+ "sha256": "fe901c67f8a6222805b742120e6d7ba539afb4164b44829df06e09664059869c"
45
+ },
46
+ {
47
+ "path": "index.mjs",
48
+ "bytes": 260966,
49
+ "sha256": "b189c643a880c7e96a6e610c814c476baf24b46688abf8fd401524a350c5aa73"
50
+ },
51
+ {
52
+ "path": "react.cjs",
53
+ "bytes": 6595,
54
+ "sha256": "ed117a524b15a7b28264e74267a80963c0bcb0ce7739d256a9089809cdd3f1bd"
55
+ },
56
+ {
57
+ "path": "react.d.ts",
58
+ "bytes": 1199,
59
+ "sha256": "46618c4735215242bd1da58bc983528dd4a38c617c1a54c3a33c8c1852e5924e"
60
+ },
61
+ {
62
+ "path": "react.mjs",
63
+ "bytes": 4909,
64
+ "sha256": "9513a1e019df45b7eef1e8e703eabbd063ae6b80e3c5e30852cdd0a510f6a635"
65
+ },
66
+ {
67
+ "path": "rudiments.d.ts",
68
+ "bytes": 4784,
69
+ "sha256": "b6ad298a9992a8960806a156673d4d2517643882429728b2b156282a30bde3f1"
70
+ },
71
+ {
72
+ "path": "server.cjs",
73
+ "bytes": 21735,
74
+ "sha256": "2db5e089683bc23768a5b233ff5c35fb4d3b5babe04a63232152d923feb2ab90"
75
+ },
76
+ {
77
+ "path": "server.d.ts",
78
+ "bytes": 1334,
79
+ "sha256": "2d5f35bec6eede2fbed338a8afb718cad1c3dba5fbe3a54bd1603308ac1146d5"
80
+ },
81
+ {
82
+ "path": "server.mjs",
83
+ "bytes": 19290,
84
+ "sha256": "cf6a3934f29feffb369ce1e78064e42854e8e10e2b6e457a9b12e41ca0e664af"
85
+ },
86
+ {
87
+ "path": "styles/clay-stars-effects.css",
88
+ "bytes": 20862,
89
+ "sha256": "fae940703e782ed8fe13b3dc02a15daefc756429ebaec440c65798d8e3578a00"
90
+ },
91
+ {
92
+ "path": "styles/clay-stars-rudiments.css",
93
+ "bytes": 1945,
94
+ "sha256": "c3ec5a979048c98ead93767fe8baf04b27e06425389f9f9d9d0846a8b809d7e6"
95
+ },
96
+ {
97
+ "path": "styles/dance-moves-core.css",
98
+ "bytes": 2763,
99
+ "sha256": "5d51caa8f3d33fc703ecd416160fbb9491b55527e54facc9248050d70cbce8a3"
100
+ },
101
+ {
102
+ "path": "styles/ks-epk-device-orientation.css",
103
+ "bytes": 3192,
104
+ "sha256": "390215653d0352c6ab9d852dee62a9798ae6de6c1933ed62b72d06bc00fe1be3"
105
+ },
106
+ {
107
+ "path": "styles/paper-dreams-flight.css",
108
+ "bytes": 2457,
109
+ "sha256": "6dd2b7e15a74b4386c64358802f44a84323e15bd4121046d649da1c5ba498294"
110
+ },
111
+ {
112
+ "path": "wordpress.js",
113
+ "bytes": 159672,
114
+ "sha256": "1a338d5caa4c2f66d594ac086308939386b1e370457c5d3864d5f6781dd1ac48"
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,9 @@
1
+ [data-dance-moves-start-interval]:not([data-dance-moves-started=true]),[data-dance-moves-start-interval]:not([data-dance-moves-started=true]):before,[data-dance-moves-start-interval]:not([data-dance-moves-started=true]):after{animation-play-state:paused!important}html[data-dance-moves-shared-controls=true] .ks-epk .epk-button,html[data-dance-moves-shared-controls=true] .ks-epk .epk-download{transition-property:background-color,color,transform,border-color!important;transition-duration:var(--dance-moves-shared-control-duration)!important;transition-timing-function:ease!important}.ks-epk .ks-epk-lyrics-track summary span[aria-hidden]{transition-property:transform!important;transition-duration:var(--dance-moves-lyric-disclosure-duration)!important;transition-timing-function:ease!important}.dance-moves-lyric-popover{--dance-moves-lyric-bg: rgba(20, 20, 24, .94);--dance-moves-lyric-border: rgba(255, 255, 255, .28);--dance-moves-lyric-color: #fff;position:fixed;z-index:9998;inset-inline:max(1rem,env(safe-area-inset-left)) max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));display:flex;justify-content:center;pointer-events:none;opacity:0;transform:translateY(.75rem) scale(.98);transition:opacity var(--dance-moves-6t) ease,transform var(--dance-moves-6t) ease}.dance-moves-lyric-popover[data-dance-moves-lyric-state=active]{opacity:1;transform:translateY(0) scale(1)}.dance-moves-lyric-popover__text{display:block;max-width:min(44rem,100%);padding:.72rem 1rem;border:1px solid var(--dance-moves-lyric-border);border-radius:.75rem;background:var(--dance-moves-lyric-bg);color:var(--dance-moves-lyric-color);box-shadow:0 .6rem 1.8rem #00000052;font:700 clamp(1rem,2.4vw,1.35rem)/1.3 system-ui,sans-serif;text-align:center;text-wrap:balance}.dance-moves-lyric-popover[data-dance-moves-lyric-pulse=true] .dance-moves-lyric-popover__text{animation:dance-moves-lyric-arrive var(--dance-moves-6t) ease both}@keyframes dance-moves-lyric-arrive{0%{transform:translateY(.4rem) scale(.98)}to{transform:translateY(0) scale(1)}}@media(forced-colors:active){.dance-moves-lyric-popover__text{border:2px solid CanvasText;background:Canvas;color:CanvasText;box-shadow:none}}@media(prefers-reduced-motion:reduce){[data-dance-moves-start-interval],[data-dance-moves-start-interval]:before,[data-dance-moves-start-interval]:after{animation:none!important;transition-duration:.01ms!important}html[data-dance-moves-shared-controls=true] .ks-epk .epk-button,html[data-dance-moves-shared-controls=true] .ks-epk .epk-download,.ks-epk .ks-epk-lyrics-track summary span[aria-hidden]{transition:none!important}.dance-moves-lyric-popover,.dance-moves-lyric-popover__text{animation:none!important;transition:none!important;transform:none!important}}
2
+
3
+ .ks-epk-orientation-control{position:fixed;z-index:999998;left:max(.75rem,env(safe-area-inset-left));bottom:max(.75rem,env(safe-area-inset-bottom));min-height:2.75rem;padding:.65rem .9rem;border:1px solid rgba(255,255,255,.72);border-radius:999px;color:#fff;background:#0c0c10e0;box-shadow:0 .5rem 2rem #0000006b;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font:700 .72rem/1 system-ui,sans-serif;letter-spacing:.05em;cursor:pointer}.ks-epk-orientation-control:focus-visible{outline:3px solid #fff;outline-offset:3px}.ks-epk-orientation-control:disabled{cursor:default;opacity:.72}.ks-epk[data-release=presents-and-chocolate][data-ks-orientation=active] .epk-cover-wrap{animation:none;transform:translate3d(var(--pc-sensor-x, 0px),var(--pc-sensor-y, 0px),0) rotate(var(--pc-sensor-rotate, 0deg))}#light-will-win-top[data-ks-orientation=active] .lww-hero{background-position:calc(50% + var(--lww-cover-x, 0px)) calc(44% + var(--lww-cover-y, 0px))}.ks-epk[data-release=walk-with-me][data-ks-orientation=active] .wwm-cover-stage{transform:perspective(1100px) rotateX(var(--wwm-tilt-x, 0deg)) rotateY(var(--wwm-tilt-y, 0deg)) translate(var(--wwm-shift-x, 0px),var(--wwm-shift-y, 0px))!important}#light-will-win-top[data-ks-orientation=active] .lww-hero{transition:background-position var(--dance-moves-2t, 62.5ms) cubic-bezier(.15,.8,.2,1)!important;will-change:background-position}#light-will-win-top[data-ks-orientation=active] :is(.lww-player-card,.lww-story-quote,.lww-glass,.lww-contact-card,.lww-fact),.dfad-motion-stage[data-ks-orientation=active] :is([data-tilt],[data-parallax] img),[data-ks-orientation-adapter=presents-and-chocolate][data-ks-orientation=active] .epk-cover-wrap,[data-ks-orientation-adapter=fully-nocturnal][data-ks-orientation=active] :is(.fnx-horizon-glow,.fnx-road,.epk-cover-wrap,.epk-cover),[data-ks-orientation-adapter=amnesty-honestly][data-ks-orientation=active] :is(.epk-cover-wrap,.epk-heading),[data-ks-orientation-adapter=walk-with-me][data-ks-orientation=active] .wwm-cover-stage,[data-ks-orientation-adapter=dmitri-my-talisman][data-ks-orientation=active] :is(.chamber,.cover-frame),[data-ks-orientation-adapter=clay-stars][data-ks-orientation=active] :is(.epk-cover-wrap,.ks-warm-bloom,.ks-lens-flare,.ks-specular-sweep),[data-ks-orientation-adapter=california-screamin][data-ks-orientation=active] :is(.cs-cover,.cs-cables,.cs-cover-glow){transition:transform var(--dance-moves-2t, 62.5ms) cubic-bezier(.15,.8,.2,1)!important;will-change:transform}@media(max-width:900px){#light-will-win-top[data-ks-orientation=active] .lww-hero{background-position:calc(58% + var(--lww-cover-x, 0px)) calc(46% + var(--lww-cover-y, 0px))}}@media(prefers-reduced-motion:reduce){.ks-epk-orientation-control{display:none!important}.ks-epk[data-release=presents-and-chocolate] .epk-cover-wrap,.ks-epk[data-release=walk-with-me] .wwm-cover-stage{transform:none!important}[data-ks-orientation] *,[data-ks-orientation] *:before,[data-ks-orientation] *:after{transition:none!important;will-change:auto!important}}@media(forced-colors:active){.ks-epk-orientation-control{color:ButtonText;background:ButtonFace;border-color:ButtonText;forced-color-adjust:auto}}
4
+
5
+ .ks-clay-stars-v2{--ks-master-bpm: 90;--ks-master-beat: var(--dance-moves-beat, .666666667s);--ks-master-intensity: 1;--ks-particle-release-duration: var(--dance-moves-32t, 1.034482758s)}.ks-clay-stars-v2 .epk-actions>p:empty,.ks-clay-stars-v2 .ks-clay-stars-chapters>br,.ks-clay-stars-v2 .epk-cosmology-head>p:empty,.ks-clay-stars-v2 .epk-artwork>p:empty,.ks-clay-stars-v2 .epk-footer>br{display:none!important}.ks-clay-stars-v2 .epk-cover-wrap{--ks-bloom-x: 0px;--ks-bloom-y: 0px;--ks-flare-x: 0px;--ks-flare-y: 0px;--ks-spec-x: 0px;--ks-spec-y: 0px}.ks-clay-stars-v2 .ks-cloud-field{position:absolute;z-index:-1;inset:0;overflow:hidden;pointer-events:none;user-select:none;contain:paint}.ks-clay-stars-v2 .ks-cloud-field:before,.ks-clay-stars-v2 .ks-cloud-field:after{content:"";position:absolute;inset:-22%;display:block;background-repeat:no-repeat;mix-blend-mode:screen;will-change:transform}.ks-clay-stars-v2 .ks-cloud-field:before{background:radial-gradient(ellipse at 18% 28%,rgba(51,64,108,.3) 0 12%,transparent 42%),radial-gradient(ellipse at 72% 24%,rgba(163,101,76,.16) 0 10%,transparent 38%),radial-gradient(ellipse at 48% 68%,rgba(23,27,55,.44) 0 16%,transparent 50%);filter:blur(58px) saturate(.88);opacity:.52;animation:ks-cloud-drift-a var(--dance-moves-1584t, 51.206896552s) ease-in-out infinite alternate}.ks-clay-stars-v2 .ks-cloud-field:after{background:radial-gradient(ellipse at 82% 62%,rgba(138,60,37,.18) 0 10%,transparent 42%),radial-gradient(ellipse at 30% 78%,rgba(51,64,108,.24) 0 14%,transparent 46%),radial-gradient(ellipse at 58% 36%,rgba(196,153,134,.09) 0 7%,transparent 34%);filter:blur(72px) saturate(.82);opacity:.42;animation:ks-cloud-drift-b var(--dance-moves-2208t, 71.379310345s) ease-in-out infinite alternate-reverse}.ks-clay-stars-v2 .epk-atmosphere:after{transform-origin:50% 45%;animation:ks-particle-dance var(--dance-moves-128t, 4.137931034s) linear infinite;will-change:transform,opacity}.ks-clay-stars-v2 .epk-heading,.ks-clay-stars-v2 .ks-clay-stars-player-copy,.ks-clay-stars-v2 .epk-cosmology-head,.ks-clay-stars-v2 .epk-artwork>div,.ks-clay-stars-v2 .ks-epk-lyrics>div:first-child{position:relative}.ks-clay-stars-v2 .epk-heading:before,.ks-clay-stars-v2 .ks-clay-stars-player-copy:before,.ks-clay-stars-v2 .epk-cosmology-head:before,.ks-clay-stars-v2 .epk-artwork>div:before,.ks-clay-stars-v2 .ks-epk-lyrics>div:first-child:before{content:"";position:absolute;z-index:2;top:-34px;left:0;width:100%;pointer-events:none;color:#d4af37;background:linear-gradient(180deg,#ffe28a,#d4af37 28%,#8c650f 63%,#e8c348);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;font:400 clamp(20px,2vw,29px)/1 "Segoe UI Historic","Noto Sans Cuneiform",serif;letter-spacing:.2em;text-align:center;text-shadow:0 1px 0 #5A3B06,0 0 2px rgba(255,226,138,.7),0 0 9px rgba(212,175,55,.48);opacity:.92;transform-origin:center;animation:ks-gold-sparkle var(--dance-moves-192t, 6.206896552s) ease-in-out infinite alternate}.ks-clay-stars-v2 .epk-heading:before{content:"\1214e \1202d \121a0"}.ks-clay-stars-v2 .ks-clay-stars-player-copy:before{content:"\1227f \12157 \122d3"}.ks-clay-stars-v2 .epk-cosmology-head:before{content:"\12146 \12146 \12146"}.ks-clay-stars-v2 .epk-artwork>div:before{content:"\12029 \12146"}.ks-clay-stars-v2 .ks-epk-lyrics>div:first-child:before{content:"\122d3 \12157 \1207e"}.ks-clay-stars-v2 .epk-heading h1,.ks-clay-stars-v2 .ks-clay-stars-player h2,.ks-clay-stars-v2 .epk-cosmology h2,.ks-clay-stars-v2 .epk-artwork h2,.ks-clay-stars-v2 .ks-epk-lyrics h2{text-shadow:0 0 18px rgba(226,189,103,.1),0 4px 32px rgba(0,0,0,.3)}.ks-clay-stars-v2 .epk-button,.ks-clay-stars-v2 .epk-download,.ks-clay-stars-v2 .ks-clay-stars-chapters button{position:relative}.ks-clay-stars-v2 .epk-button:before,.ks-clay-stars-v2 .epk-download:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:before{content:"";position:absolute;z-index:2;inset:-6.3px;pointer-events:none;background:radial-gradient(circle,#D4AF37 0 1.2px,rgba(140,101,20,.62) 1.8px,transparent 3.4px),radial-gradient(circle,#C99716 0 1.2px,rgba(212,175,55,.44) 1.8px,transparent 3.4px),radial-gradient(circle,#FFD766 0 1px,rgba(212,175,55,.34) 1.7px,transparent 3px);background-repeat:no-repeat;background-size:7px 7px,7px 7px,6px 6px;background-position:0% 0%,100% 33%,33% 100%;filter:drop-shadow(0 0 4px rgba(212,175,55,.48));opacity:calc(.42 * var(--ks-master-intensity));animation:ks-gold-sparkle var(--dance-moves-192t, 6.206896552s) ease-in-out var(--dance-moves-neg-64t, -2.068965517s) infinite alternate;transform-origin:center}.ks-clay-stars-v2 .epk-button:after,.ks-clay-stars-v2 .epk-download:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:after{content:"";position:absolute;z-index:2;inset:-9.9px;pointer-events:none;background:radial-gradient(circle at 3% 52%,#D4AF37 0 1.1px,rgba(140,101,15,.7) 1.7px,transparent 3.2px),radial-gradient(circle at 18% 2%,#FFD766 0 1px,rgba(212,175,55,.56) 1.6px,transparent 3px),radial-gradient(circle at 48% 98%,#C99716 0 1.2px,rgba(140,101,15,.64) 1.8px,transparent 3.3px),radial-gradient(circle at 77% 1%,#E8C348 0 1px,rgba(212,175,55,.52) 1.6px,transparent 3px),radial-gradient(circle at 98% 46%,#D4AF37 0 1.2px,rgba(140,101,15,.68) 1.8px,transparent 3.3px),radial-gradient(circle at 82% 98%,#FFD766 0 1px,rgba(212,175,55,.5) 1.6px,transparent 3px);opacity:0;transform:rotate(0) scale(.96);transform-origin:center;filter:drop-shadow(0 0 4px rgba(212,175,55,.44));transition:opacity var(--ks-particle-release-duration) cubic-bezier(.22,.61,.36,1),transform var(--ks-particle-release-duration) cubic-bezier(.16,1,.3,1)}.ks-clay-stars-v2 .epk-signal-line{animation-duration:var(--dance-moves-432t, 13.965517241s)!important}.ks-clay-stars-v2 .epk-button:hover:before,.ks-clay-stars-v2 .epk-button:focus-visible:before,.ks-clay-stars-v2 .epk-download:hover:before,.ks-clay-stars-v2 .epk-download:focus-visible:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:hover:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:focus-visible:before{animation:ks-gold-button-wake var(--dance-moves-32t, 1.034482758s) cubic-bezier(.22,.68,.28,1) 1 both,ks-gold-button-dance var(--dance-moves-32t, 1.034482758s) ease-in-out var(--dance-moves-32t, 1.034482758s) infinite alternate}.ks-clay-stars-v2 .epk-button:hover:after,.ks-clay-stars-v2 .epk-button:focus-visible:after,.ks-clay-stars-v2 .epk-download:hover:after,.ks-clay-stars-v2 .epk-download:focus-visible:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:hover:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:focus-visible:after{animation:ks-gold-orbit-wake var(--dance-moves-32t, 1.034482758s) cubic-bezier(.333333,0,.666667,0) 1 both,ks-gold-orbit-fade-wake var(--dance-moves-32t, 1.034482758s) ease-out 1 both,ks-gold-orbit-dance var(--dance-moves-32t, 1.034482758s) linear var(--dance-moves-32t, 1.034482758s) infinite}.ks-clay-stars-v2 .epk-button.ks-particle-release:after,.ks-clay-stars-v2 .epk-download.ks-particle-release:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button.ks-particle-release:after{animation:ks-gold-orbit-release var(--ks-particle-release-duration) linear 1 both}.ks-clay-stars-v2 .ks-clay-stars-chapters button[aria-current=true]:before{opacity:.72}.ks-clay-stars-v2 .epk-button,.ks-clay-stars-v2 .epk-download,.ks-clay-stars-v2 .ks-clay-stars-chapters button{transition:background-color var(--dance-moves-32t, 1.034482758s) cubic-bezier(.22,.61,.36,1),color var(--dance-moves-32t, 1.034482758s) cubic-bezier(.22,.61,.36,1),border-color var(--dance-moves-32t, 1.034482758s) ease,border-radius var(--dance-moves-32t, 1.034482758s) cubic-bezier(.16,1,.3,1),box-shadow var(--dance-moves-32t, 1.034482758s) ease,text-shadow var(--dance-moves-32t, 1.034482758s) ease}.ks-clay-stars-v2 .epk-button:hover,.ks-clay-stars-v2 .epk-button:focus-visible,.ks-clay-stars-v2 .epk-download:hover,.ks-clay-stars-v2 .epk-download:focus-visible,.ks-clay-stars-v2 .ks-clay-stars-chapters button:hover,.ks-clay-stars-v2 .ks-clay-stars-chapters button:focus-visible{background-color:#75432f;background-image:radial-gradient(circle at 17% 28%,rgba(48,22,16,.28) 0 1px,transparent 1.8px),radial-gradient(circle at 73% 61%,rgba(246,193,99,.13) 0 1px,transparent 2px),linear-gradient(112deg,#8b4f30f5,#683727fa 54%,#7e462cf5);background-size:19px 17px,27px 23px,100% 100%;border-color:#b98522;border-radius:6px 3px 7px 2px;color:#f2c14e;box-shadow:inset 0 2px #f6c16338,inset 0 -3px #3f1c1461,inset 2px 0 #5e2f1f4d,0 0 0 1px #8c650fb8,0 9px 22px #100b1961,0 0 18px #d4af372e;text-shadow:0 1px 0 #FFE28A,0 -1px 0 #5A3B06,0 0 7px rgba(212,175,55,.56)}.ks-clay-stars-v2 .epk-cover-wrap>.epk-cover{position:relative;z-index:1;transform:translateZ(0)}.ks-clay-stars-v2 .ks-warm-bloom,.ks-clay-stars-v2 .ks-lens-flare,.ks-clay-stars-v2 .ks-specular-sweep{position:absolute;display:block;pointer-events:none;user-select:none}.ks-clay-stars-v2 .ks-warm-bloom{z-index:0;inset:-15%;background:radial-gradient(ellipse at 70% 28%,rgba(196,153,134,.36) 0,rgba(163,101,76,.26) 19%,rgba(138,60,37,.12) 42%,transparent 70%),radial-gradient(ellipse at 26% 78%,rgba(138,60,37,.2),transparent 64%);filter:blur(28px) saturate(1.08);opacity:calc(.68 * var(--ks-master-intensity));transform:translate3d(var(--ks-bloom-x),var(--ks-bloom-y),-18px);transition:transform var(--dance-moves-6t, .193965517s) ease-out,opacity var(--dance-moves-6t, .193965517s) ease-out}.ks-clay-stars-v2 .ks-lens-flare{z-index:3;inset:-24%;background:radial-gradient(circle at 72% 24%,rgba(245,241,232,.58) 0 1px,rgba(196,153,134,.34) 2px 5px,rgba(163,101,76,.13) 10px,transparent 34px),radial-gradient(circle at 34% 62%,rgba(196,153,134,.13) 0 7px,transparent 9px 17px,rgba(138,60,37,.1) 19px,transparent 31px),linear-gradient(102deg,transparent 29%,rgba(196,153,134,.05) 43%,rgba(245,241,232,.13) 50%,rgba(163,101,76,.05) 57%,transparent 71%);mix-blend-mode:screen;opacity:calc(.54 * var(--ks-master-intensity));-webkit-mask-image:radial-gradient(ellipse at center,#000 0 43%,rgba(0,0,0,.78) 58%,rgba(0,0,0,.28) 72%,transparent 88%);mask-image:radial-gradient(ellipse at center,#000 0 43%,rgba(0,0,0,.78) 58%,rgba(0,0,0,.28) 72%,transparent 88%);transform:translate3d(var(--ks-flare-x),var(--ks-flare-y),28px);transition:transform var(--dance-moves-6t, .193965517s) ease-out,opacity var(--dance-moves-6t, .193965517s) ease-out}.ks-clay-stars-v2 .ks-specular-sweep{z-index:2;inset:-34%;background:linear-gradient(116deg,transparent 34%,rgba(163,101,76,.03) 42%,rgba(196,153,134,.18) 49%,rgba(245,241,232,.12) 51%,rgba(138,60,37,.04) 58%,transparent 66%);mix-blend-mode:screen;opacity:calc(.62 * var(--ks-master-intensity));-webkit-mask-image:radial-gradient(ellipse at center,#000 0 40%,rgba(0,0,0,.74) 57%,rgba(0,0,0,.22) 73%,transparent 89%);mask-image:radial-gradient(ellipse at center,#000 0 40%,rgba(0,0,0,.74) 57%,rgba(0,0,0,.22) 73%,transparent 89%);transform:translate3d(var(--ks-spec-x),var(--ks-spec-y),18px);transition:transform var(--dance-moves-6t, .193965517s) ease-out,opacity var(--dance-moves-6t, .193965517s) ease-out}.ks-clay-stars-v2 .epk-facts,.ks-clay-stars-v2 .ks-clay-stars-player,.ks-clay-stars-v2 .ks-clay-stars-player-console,.ks-clay-stars-v2 .epk-triptych,.ks-clay-stars-v2 .epk-signal,.ks-clay-stars-v2 .epk-artwork,.ks-clay-stars-v2 .ks-epk-lyrics-track{box-shadow:0 0 34px #8a3c251a,0 0 92px #33406c17,inset 0 1px #f5f1e80b,0 24px 70px #0000002e}.ks-clay-stars-v2 .ks-clay-stars-chapters button[aria-current=true]{box-shadow:0 0 0 1px #c499868f,0 0 26px #a3654c33,inset 0 1px #f5f1e89e}@keyframes ks-cloud-drift-a{0%{transform:translate3d(-3%,-1.5%,0) scale(1.04)}to{transform:translate3d(4%,2.5%,0) scale(1.09)}}@keyframes ks-cloud-drift-b{0%{transform:translate3d(3.5%,-2%,0) scale(1.08)}to{transform:translate3d(-4%,3%,0) scale(1.03)}}@keyframes ks-particle-dance{0%,to{transform:translateZ(0) rotate(0) scale(1);opacity:calc(.38 * var(--ks-master-intensity))}9%{transform:translate3d(2px,-1px,0) rotate(.02deg) scale(1.001);opacity:calc(.44 * var(--ks-master-intensity))}13%{transform:translate3d(13px,-8px,0) rotate(.18deg) scale(1.007);opacity:calc(.6 * var(--ks-master-intensity))}19%{transform:translate3d(5px,-4px,0) rotate(.04deg) scale(1.003);opacity:calc(.48 * var(--ks-master-intensity))}34%{transform:translate3d(-3px,2px,0) rotate(-.04deg) scale(1);opacity:calc(.43 * var(--ks-master-intensity))}39%{transform:translate3d(-14px,9px,0) rotate(-.2deg) scale(1.008);opacity:calc(.62 * var(--ks-master-intensity))}46%{transform:translate3d(-5px,5px,0) rotate(-.05deg) scale(1.002);opacity:calc(.49 * var(--ks-master-intensity))}60%{transform:translate3d(1px,0,0) rotate(0) scale(.999);opacity:calc(.42 * var(--ks-master-intensity))}66%{transform:translate3d(12px,10px,0) rotate(.17deg) scale(1.007);opacity:calc(.6 * var(--ks-master-intensity))}73%{transform:translate3d(4px,5px,0) rotate(.04deg) scale(1.002);opacity:calc(.48 * var(--ks-master-intensity))}84%{transform:translate3d(-2px,-2px,0) rotate(-.02deg) scale(1);opacity:calc(.43 * var(--ks-master-intensity))}89%{transform:translate3d(-10px,-9px,0) rotate(-.15deg) scale(1.006);opacity:calc(.57 * var(--ks-master-intensity))}95%{transform:translate3d(-3px,-3px,0) rotate(-.03deg) scale(1.001);opacity:calc(.45 * var(--ks-master-intensity))}}@keyframes ks-gold-sparkle{0%{opacity:.74;transform:translateZ(0) scale(.995)}to{opacity:.96;transform:translate3d(1px,-1px,0) scale(1.005)}}@keyframes ks-gold-button-wake{0%{opacity:.74;transform:translateZ(0) rotate(0) scale(.995)}45%{opacity:.79;transform:translate3d(.45px,-.36px,0) scale(1.002)}78%{opacity:.84;transform:translate3d(1.08px,-.81px,0) scale(1.006)}to{opacity:.88;transform:translate3d(0,-1.35px,0) scale(1.012)}}@keyframes ks-gold-button-dance{0%{opacity:.82;transform:translate3d(0,-1.35px,0) rotate(-.35deg) scale(1.008)}to{opacity:.96;transform:translate3d(1.4px,-2.1px,0) rotate(.35deg) scale(1.018)}}@keyframes ks-gold-orbit-wake{0%{transform:rotate(0) scale(1.04)}to{transform:translate3d(0,-1.8px,0) rotate(120deg) scale(1.04)}}@keyframes ks-gold-orbit-fade-wake{0%{opacity:0}45%,to{opacity:.86}}@keyframes ks-gold-orbit-dance{0%{opacity:.86;transform:translate3d(0,-1.8px,0) rotate(120deg) scale(1.04)}25%{opacity:.96;transform:translate3d(2.7px,-2.7px,0) rotate(210deg) scale(1.08)}50%{opacity:.84;transform:translate3d(-1.8px,1.8px,0) rotate(300deg) scale(1.03)}75%{opacity:.97;transform:translate3d(2.7px,2.25px,0) rotate(390deg) scale(1.08)}to{opacity:.86;transform:translate3d(0,-1.8px,0) rotate(480deg) scale(1.04)}}@keyframes ks-gold-orbit-release{0%{opacity:var(--ks-orbit-release-opacity, .86);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}18%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .7);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}32%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .84);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}48%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .44);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}62%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .56);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}78%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .18);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}88%{opacity:calc(var(--ks-orbit-release-opacity, .86) * .26);transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}to{opacity:0;transform:var(--ks-orbit-release-transform, rotate(120deg) scale(1.02))}}.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .ks-cloud-field:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .ks-cloud-field:after{animation:none!important;transform:translateZ(0) scale(1.05)!important;will-change:auto}.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-atmosphere:after{animation:none!important;transform:none!important;opacity:calc(.42 * var(--ks-master-intensity));will-change:auto}.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-heading:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .ks-clay-stars-player-copy:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-cosmology-head:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-artwork>div:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .ks-epk-lyrics>div:first-child:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-button:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .epk-download:before,.ks-clay-stars-v2:is([data-dance-moves-performance=constrained],[data-dance-moves-performance=minimal]) .ks-clay-stars-chapters button:before{animation:none!important;transform:translateZ(0) scale(1)!important}.ks-clay-stars-v2[data-dance-moves-performance=minimal] .ks-cloud-field:before,.ks-clay-stars-v2[data-dance-moves-performance=minimal] .ks-cloud-field:after,.ks-clay-stars-v2[data-dance-moves-performance=minimal] .epk-atmosphere:after{filter:none!important;mix-blend-mode:normal!important}@media(prefers-reduced-motion:reduce){.ks-clay-stars-v2 .epk-cover-wrap,.ks-clay-stars-v2 .ks-warm-bloom,.ks-clay-stars-v2 .ks-lens-flare,.ks-clay-stars-v2 .ks-specular-sweep,.ks-clay-stars-v2 .epk-button,.ks-clay-stars-v2 .epk-download,.ks-clay-stars-v2 .ks-clay-stars-chapters button{transition:none!important}.ks-clay-stars-v2 .ks-cloud-field:before,.ks-clay-stars-v2 .ks-cloud-field:after{animation:none!important;transform:none!important;will-change:auto}.ks-clay-stars-v2 .epk-atmosphere:after{animation:none!important;transform:none!important;filter:none!important;opacity:.42;will-change:auto}.ks-clay-stars-v2 .epk-heading:before,.ks-clay-stars-v2 .ks-clay-stars-player-copy:before,.ks-clay-stars-v2 .epk-cosmology-head:before,.ks-clay-stars-v2 .epk-artwork>div:before,.ks-clay-stars-v2 .ks-epk-lyrics>div:first-child:before,.ks-clay-stars-v2 .epk-button:before,.ks-clay-stars-v2 .epk-download:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:before,.ks-clay-stars-v2 .epk-button:after,.ks-clay-stars-v2 .epk-download:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:after{animation:none!important;transition:none!important;transform:none!important}.ks-clay-stars-v2 .epk-button:before,.ks-clay-stars-v2 .epk-download:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:before{opacity:.62}.ks-clay-stars-v2 .epk-button:hover:after,.ks-clay-stars-v2 .epk-button:focus-visible:after,.ks-clay-stars-v2 .epk-download:hover:after,.ks-clay-stars-v2 .epk-download:focus-visible:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:hover:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:focus-visible:after{opacity:.68}.ks-clay-stars-v2 .epk-button.ks-particle-release:after,.ks-clay-stars-v2 .epk-download.ks-particle-release:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button.ks-particle-release:after{animation:none!important;opacity:0!important}.ks-clay-stars-v2 .ks-lens-flare{opacity:.34}.ks-clay-stars-v2 .ks-specular-sweep{opacity:.38}}@media(forced-colors:active){.ks-clay-stars-v2 .ks-warm-bloom,.ks-clay-stars-v2 .ks-lens-flare,.ks-clay-stars-v2 .ks-specular-sweep,.ks-clay-stars-v2 .ks-cloud-field{display:none}.ks-clay-stars-v2 .epk-facts,.ks-clay-stars-v2 .ks-clay-stars-player,.ks-clay-stars-v2 .ks-clay-stars-player-console,.ks-clay-stars-v2 .epk-triptych,.ks-clay-stars-v2 .epk-signal,.ks-clay-stars-v2 .epk-artwork,.ks-clay-stars-v2 .ks-epk-lyrics-track{box-shadow:none}.ks-clay-stars-v2 .epk-heading:before,.ks-clay-stars-v2 .ks-clay-stars-player-copy:before,.ks-clay-stars-v2 .epk-cosmology-head:before,.ks-clay-stars-v2 .epk-artwork>div:before,.ks-clay-stars-v2 .ks-epk-lyrics>div:first-child:before,.ks-clay-stars-v2 .epk-button:before,.ks-clay-stars-v2 .epk-download:before,.ks-clay-stars-v2 .ks-clay-stars-chapters button:before,.ks-clay-stars-v2 .epk-button:after,.ks-clay-stars-v2 .epk-download:after,.ks-clay-stars-v2 .ks-clay-stars-chapters button:after{display:none}.ks-clay-stars-v2 .ks-clay-stars-chapters button[aria-current=true]{box-shadow:none}}@media(max-width:760px),(hover:none),(pointer:coarse){.ks-clay-stars-v2 .ks-cloud-field:before{opacity:.4}.ks-clay-stars-v2 .ks-cloud-field:after{opacity:.32}.ks-clay-stars-v2 .ks-warm-bloom{opacity:.58}.ks-clay-stars-v2 .ks-lens-flare{opacity:.38}.ks-clay-stars-v2 .ks-specular-sweep{opacity:.42}}
6
+
7
+ .ks-clay-stars-v2[data-dance-moves-rudiment-clay=active][data-dance-moves-performance=full] .epk-atmosphere:after{animation:ks-clay-rudiment-treatment var(--dance-moves-128t) linear infinite both!important;animation-play-state:paused!important;translate:var(--ks-clay-rudiment-x, 0px) var(--ks-clay-rudiment-y, 0px);transition:none!important;will-change:translate,transform,opacity}.ks-clay-stars-v2[data-dance-moves-rudiment-clay=suspended] .epk-atmosphere:after{animation:none!important;translate:none!important;will-change:auto}@keyframes ks-clay-rudiment-treatment{0%,to{transform:rotate(0) scale(1);opacity:calc(.38 * var(--ks-master-intensity))}9%{transform:rotate(.02deg) scale(1.001);opacity:calc(.44 * var(--ks-master-intensity))}13%{transform:rotate(.18deg) scale(1.007);opacity:calc(.6 * var(--ks-master-intensity))}19%{transform:rotate(.04deg) scale(1.003);opacity:calc(.48 * var(--ks-master-intensity))}34%{transform:rotate(-.04deg) scale(1);opacity:calc(.43 * var(--ks-master-intensity))}39%{transform:rotate(-.2deg) scale(1.008);opacity:calc(.62 * var(--ks-master-intensity))}46%{transform:rotate(-.05deg) scale(1.002);opacity:calc(.49 * var(--ks-master-intensity))}60%{transform:rotate(0) scale(.999);opacity:calc(.42 * var(--ks-master-intensity))}66%{transform:rotate(.17deg) scale(1.007);opacity:calc(.6 * var(--ks-master-intensity))}73%{transform:rotate(.04deg) scale(1.002);opacity:calc(.48 * var(--ks-master-intensity))}84%{transform:rotate(-.02deg) scale(1);opacity:calc(.43 * var(--ks-master-intensity))}89%{transform:rotate(-.15deg) scale(1.006);opacity:calc(.57 * var(--ks-master-intensity))}95%{transform:rotate(-.03deg) scale(1.001);opacity:calc(.45 * var(--ks-master-intensity))}}@media(prefers-reduced-motion:reduce),(forced-colors:active){.ks-clay-stars-v2[data-dance-moves-rudiment-clay] .epk-atmosphere:after{animation:none!important;translate:none!important;transform:none!important;will-change:auto!important}}
8
+
9
+ .ks-epk[data-release=paper-dreams-from-the-sky] .epk-hero{position:relative;isolation:isolate;overflow:hidden}.paper-dreams-flight{position:absolute;z-index:2;inset:0;overflow:hidden;pointer-events:none;contain:strict;clip-path:inset(0)}.paper-dreams-flight~*{position:relative}.paper-dreams-flight~.epk-cover-wrap{z-index:1}.paper-dreams-flight~.epk-heading{z-index:3}.paper-dreams-flight__plane{position:absolute;left:0;top:0;width:var(--plane-size,110px);aspect-ratio:1.5;background-image:var(--paper-dreams-atlas);background-size:600% 400%;background-position:var(--sprite-x) var(--sprite-y);background-repeat:no-repeat;opacity:var(--plane-opacity,.82);transform-origin:50% 50%;will-change:transform;contain:layout paint}.paper-dreams-flight__plane:before,.paper-dreams-flight__plane:after{content:"";position:absolute;z-index:-1;inset:0;background-image:var(--paper-dreams-atlas);background-size:600% 400%;background-position:var(--sprite-x) var(--sprite-y);background-repeat:no-repeat;pointer-events:none;transform-origin:50% 50%;opacity:.26;transform:translate3d(-20px,0,0) scaleX(1.18)}.paper-dreams-flight__plane:after{opacity:.13;transform:translate3d(-42px,0,0) scaleX(1.34)}.paper-dreams-flight__plane[data-flight-state=drop]:before,.paper-dreams-flight__plane[data-flight-state=recovery]:before,.paper-dreams-flight__plane[data-flight-state=swoop]:before{opacity:.42;transform:translate3d(-32px,0,0) scaleX(1.3)}.paper-dreams-flight__plane[data-flight-state=drop]:after,.paper-dreams-flight__plane[data-flight-state=recovery]:after,.paper-dreams-flight__plane[data-flight-state=swoop]:after{opacity:.22;transform:translate3d(-66px,0,0) scaleX(1.58)}.paper-dreams-flight[data-quality=compact] .paper-dreams-flight__plane:nth-child(n+6){display:none}.paper-dreams-flight[data-quality=static] .paper-dreams-flight__plane{display:none;will-change:auto}.paper-dreams-flight[data-quality=static] .paper-dreams-flight__plane:nth-child(-n+3){display:block;transform:var(--static-transform);opacity:.55}@media(max-width:760px){.paper-dreams-flight__plane{width:var(--plane-size-compact,76px)}.paper-dreams-flight{inset:72px 0 0}}@media(prefers-reduced-motion:reduce){.paper-dreams-flight__plane{display:none!important;will-change:auto!important}.paper-dreams-flight__plane:before,.paper-dreams-flight__plane:after{display:none!important}.ks-epk .epk-story-plane{animation:none!important}}@media(forced-colors:active){.paper-dreams-flight{display:none}}