@kieransimkin/dancemoves 3.1.17 → 3.1.19
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.
- package/README.md +5 -0
- package/docs/phone-motion-connections.md +32 -0
- package/docs/phone-motion-preference.md +3 -0
- package/lib/build-manifest.json +15 -15
- package/lib/dancemoves.css +1 -1
- package/lib/dancemoves.min.js +3 -3
- package/lib/index.cjs +249 -19
- package/lib/index.d.ts +4 -1
- package/lib/index.mjs +249 -19
- package/lib/styles/dance-moves-core.css +1 -1
- package/lib/wordpress.js +3 -3
- package/package.json +1 -1
- package/readme.txt +7 -2
package/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# DanceMoves
|
|
2
2
|
|
|
3
|
+
`connectPhoneMotion()` attaches suitable existing spatial effects to one shared
|
|
4
|
+
phone input route, preserving desktop pointer input. See the
|
|
5
|
+
[connection guide](docs/phone-motion-connections.md) for permission UI, consumer
|
|
6
|
+
fan-out, motion switches and lifecycle verification.
|
|
7
|
+
|
|
3
8
|
[](https://kieransimkin.co.uk/danceflow/)
|
|
4
9
|
|
|
5
10
|
By **[Kieran Simkin](https://kieransimkin.co.uk/)** · [DanceFlow ecosystem](https://kieransimkin.co.uk/danceflow/) · [Vector logo and usage guide](docs/branding/README.md).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Connect existing spatial effects to phone input
|
|
2
|
+
|
|
3
|
+
`runtime.connectPhoneMotion()` composes the shared permission-aware orientation controller with existing pointer handles and a narrow appearance callback. It does not select choreography or add artwork. Call it after the mount's `ready` promise so the page's pointer handles exist. Use one connection per page, listing all suitable spatial consumers.
|
|
4
|
+
|
|
5
|
+
```js
|
|
6
|
+
await runtime.ready;
|
|
7
|
+
const connection = runtime.connectPhoneMotion({
|
|
8
|
+
pointers: ['release:hero-depth', 'release:artwork-depth'],
|
|
9
|
+
enabled: () => root.dataset.motion !== 'off' && root.dataset.quality !== 'static',
|
|
10
|
+
watchAttributes: ['class', 'data-motion', 'data-quality'],
|
|
11
|
+
render: ({x, y}) => {
|
|
12
|
+
root.style.setProperty('--release-light-x', String(x));
|
|
13
|
+
root.style.setProperty('--release-light-y', String(y));
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Pointer IDs are resolved for every sample, so a motion switch can replace a pointer without leaving a stale sensor attachment. The render callback may map the same normalized coordinates to other release-owned CSS properties. Keep targets bounded and callbacks nonthrowing. The connection clamps both axes to [-1, 1] and sends zero/reset when suspended. Leave ordinary interactive button hover/focus and scroll controls independent.
|
|
19
|
+
|
|
20
|
+
Options: `pointers` (string array), `render` (callback), `enabled` (predicate), `watchAttributes` (attributes on the mount root that require reconciliation), `controlParent` (default document body) and `windowMilliseconds` (default 10000). Attribute observation deliberately excludes style writes by default. Call `reconcile()` after an application-owned state change that is not represented by the watched attributes.
|
|
21
|
+
|
|
22
|
+
On supported secure mobile/touch devices, browsers requiring permission receive a single **Use phone motion** button. Only its click or an explicit gesture calling `enable()` requests permission. Browsers without that method listen directly unless the visitor previously disabled input. A stored enabled choice restores listening without requesting permission. Finite delivered samples establish `sensorActive` and remove the button. With no readings, the 3.5-second check retains **Use phone motion** for permission browsers or shows **Phone motion unavailable** for a direct-listener browser. Permission denial displays **Phone motion blocked**. These states do not certify hardware or browser permission.
|
|
23
|
+
|
|
24
|
+
If the mount already owns a legacy orientation provider, the connection subscribes to that provider instead of starting a second sensor listener or permission control. That provider retains its existing calibration/window and appearance. Its `subscribe(callback)` returns an unsubscribe function and forwards committed normalized samples plus reset/teardown. `suspend(boolean)` temporarily stops input and controls without changing the visitor's stored choice. No release selectors or identifiers are added to the shared connection.
|
|
25
|
+
|
|
26
|
+
Reduced motion, forced colours, page hiding, pagehide/pageshow, screen rotation, explicit application enable predicates and mount teardown remain authoritative. Generic orientation controllers also expose `setActive(boolean)` for temporary suspension; `disable()` is a persistent opt-out. The connection returns `enable()`, `reconcile()`, `snapshot()` and `destroy()`. Destroying it removes its control/listeners/observer and resets its consumers; an existing shared provider remains owned by the runtime.
|
|
27
|
+
|
|
28
|
+
Desktop or unsupported connections create no sensor listener, UI or appearance writes. Existing desktop pointer controllers remain independent. The connection does not create a new quality monitor; use the page's existing quality predicate. Tests must verify all mapped consumers, permission/no-data paths, preference changes and lifecycle cancellation. Physical iPhone/Safari delivery and full-stack frame-rate acceptance require physical evidence, separately from synthetic browser tests.
|
|
29
|
+
|
|
30
|
+
Quality owners reconcile live preferences while sampling frames as well as on media notifications. A temporarily imposed accessibility tier restores its saved tier promptly; performance recovery cooldowns apply only to measured performance changes.
|
|
31
|
+
|
|
32
|
+
The permission control lives in the shared core stylesheet, so WordPress pages using a generic sensor owner keep the control inside the phone viewport even when legacy orientation adapters are disabled. Browser integrations should load `dancemoves.css` as in the example. The control respects safe-area insets and is removed after a finite sample, on a motion pause, and on teardown.
|
|
@@ -16,6 +16,9 @@ request permission. A denied request stops listening and records disabled.
|
|
|
16
16
|
Pages without a tilt adapter do not acquire a new effect.
|
|
17
17
|
|
|
18
18
|
The reusable `createOrientation()` controller follows the same stored choice.
|
|
19
|
+
Use [`connectPhoneMotion()`](phone-motion-connections.md) to attach suitable existing
|
|
20
|
+
pointer handles and appearance callbacks with shared permission UI and lifecycle
|
|
21
|
+
gates. It reuses an existing orientation provider when one is already mounted.
|
|
19
22
|
Its `enabled` and `listening` snapshot fields describe local intent/listener
|
|
20
23
|
state, not verified browser permission or sensor delivery. Applications retain
|
|
21
24
|
ownership of their enable UI. Reduced motion, forced colours and hidden-page
|
package/lib/build-manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "dancemoves-library-build/v1",
|
|
3
3
|
"name": "@kieransimkin/dancemoves",
|
|
4
|
-
"version": "3.1.
|
|
4
|
+
"version": "3.1.19",
|
|
5
5
|
"homepage": "https://kieransimkin.co.uk/my-songs/",
|
|
6
6
|
"files": [
|
|
7
7
|
{
|
|
@@ -26,28 +26,28 @@
|
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
"path": "dancemoves.css",
|
|
29
|
-
"bytes":
|
|
30
|
-
"sha256": "
|
|
29
|
+
"bytes": 31829,
|
|
30
|
+
"sha256": "a8c31483755fb4b84fbf8fcd7487a4dccd00840a6d77a796b3e8ae7bf77a8216"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"path": "dancemoves.min.js",
|
|
34
|
-
"bytes":
|
|
35
|
-
"sha256": "
|
|
34
|
+
"bytes": 189980,
|
|
35
|
+
"sha256": "2d9f8a6b5ac0ff32d6f940c31c16213e145c85c48fc9957ee2e405ce91d02d02"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"path": "index.cjs",
|
|
39
|
-
"bytes":
|
|
40
|
-
"sha256": "
|
|
39
|
+
"bytes": 320229,
|
|
40
|
+
"sha256": "df4670757481c736796dd9878148f33a2a7095713851f2d14218e6efeb4edd4a"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"path": "index.d.ts",
|
|
44
|
-
"bytes":
|
|
45
|
-
"sha256": "
|
|
44
|
+
"bytes": 10545,
|
|
45
|
+
"sha256": "218096340a1ac20451ce28a04c31c74881a37ff3dad065decfcc8ac03d883143"
|
|
46
46
|
},
|
|
47
47
|
{
|
|
48
48
|
"path": "index.mjs",
|
|
49
|
-
"bytes":
|
|
50
|
-
"sha256": "
|
|
49
|
+
"bytes": 319145,
|
|
50
|
+
"sha256": "8cc48f64271c91392d8036ac4d361c08af310454b9a2132e80cd584858acb8da"
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"path": "react.cjs",
|
|
@@ -91,8 +91,8 @@
|
|
|
91
91
|
},
|
|
92
92
|
{
|
|
93
93
|
"path": "styles/dance-moves-core.css",
|
|
94
|
-
"bytes":
|
|
95
|
-
"sha256": "
|
|
94
|
+
"bytes": 4591,
|
|
95
|
+
"sha256": "adf8632420488a1bf9c2e0b91123664107cf05f7006b3ddb1d2bc1ed229ee102"
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"path": "styles/ks-epk-device-orientation.css",
|
|
@@ -106,8 +106,8 @@
|
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"path": "wordpress.js",
|
|
109
|
-
"bytes":
|
|
110
|
-
"sha256": "
|
|
109
|
+
"bytes": 188795,
|
|
110
|
+
"sha256": "a759919bdc14b8850adc8a68a87445fa6341d629113c282834d798b27da97e9c"
|
|
111
111
|
}
|
|
112
112
|
]
|
|
113
113
|
}
|
package/lib/dancemoves.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready]{--dance-moves-lyric-stage-step: 4.75rem;--dance-moves-lyric-progress: 0;overflow:hidden;height:calc(var(--dance-moves-lyric-stage-step) * 3);align-items:stretch}.dance-moves-lyric-stage__viewport{width:min(48rem,100%);height:100%;overflow:hidden}.dance-moves-lyric-stage__track{display:grid;grid-template-rows:repeat(3,var(--dance-moves-lyric-stage-step));transform:translate3d(0,calc(var(--dance-moves-lyric-progress) * var(--dance-moves-lyric-stage-step) * -1),0);will-change:transform}.dance-moves-lyric-stage__line{display:grid;place-items:center;min-width:0;padding:.4rem 1rem;color:var(--dance-moves-lyric-color);font:650 clamp(.92rem,2.2vw,1.22rem)/1.25 system-ui,sans-serif;text-align:center;text-wrap:balance;opacity:.58}.dance-moves-lyric-stage__line--current{opacity:1}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready] .dance-moves-lyric-popover__text{max-width:none;padding:.4rem 1rem;border:0;border-radius:0;background:transparent;box-shadow:none;animation:none}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready][data-dance-moves-lyric-phase=waiting] .dance-moves-lyric-stage__track{will-change:auto}@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,.dance-moves-lyric-stage__track{animation:none!important;transition:none!important;transform:none!important}}
|
|
1
|
+
.ks-epk-orientation-control{position:fixed;z-index:999998;left:max(2rem,env(safe-area-inset-left));bottom:max(2rem,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}[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}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready]{--dance-moves-lyric-stage-step: 4.75rem;--dance-moves-lyric-progress: 0;overflow:hidden;height:calc(var(--dance-moves-lyric-stage-step) * 3);align-items:stretch}.dance-moves-lyric-stage__viewport{width:min(48rem,100%);height:100%;overflow:hidden}.dance-moves-lyric-stage__track{display:grid;grid-template-rows:repeat(3,var(--dance-moves-lyric-stage-step));transform:translate3d(0,calc(var(--dance-moves-lyric-progress) * var(--dance-moves-lyric-stage-step) * -1),0);will-change:transform}.dance-moves-lyric-stage__line{display:grid;place-items:center;min-width:0;padding:.4rem 1rem;color:var(--dance-moves-lyric-color);font:650 clamp(.92rem,2.2vw,1.22rem)/1.25 system-ui,sans-serif;text-align:center;text-wrap:balance;opacity:.58}.dance-moves-lyric-stage__line--current{opacity:1}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready] .dance-moves-lyric-popover__text{max-width:none;padding:.4rem 1rem;border:0;border-radius:0;background:transparent;box-shadow:none;animation:none}.dance-moves-lyric-popover[data-dance-moves-lyric-stage=ready][data-dance-moves-lyric-phase=waiting] .dance-moves-lyric-stage__track{will-change:auto}@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,.dance-moves-lyric-stage__track{animation:none!important;transition:none!important;transform:none!important}}
|
|
2
2
|
|
|
3
3
|
.ks-epk-orientation-control{position:fixed;z-index:999998;left:max(2rem,env(safe-area-inset-left));bottom:max(2rem,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}.dm-control-attention:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;box-shadow:0 0 8px 2px var(--dm-attention-color),0 0 18px 3px var(--dm-attention-color);opacity:.18;animation:dm-control-glow 3.2s ease-in-out infinite}.dm-control-attention:disabled:after{animation:none;opacity:.18}@keyframes dm-control-glow{0%,to{opacity:.18}50%{opacity:.5}}.dm-control-spark{position:fixed;z-index:999999;width:3px;height:7px;margin:-3.5px 0 0 -1.5px;border-radius:50%;background:currentColor;box-shadow:0 0 4px currentColor;pointer-events:none}@media(prefers-reduced-motion:reduce),(forced-colors:active){.dm-control-attention:after,.dm-control-spark{display:none!important;animation:none!important}}.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
4
|
|