openvibers/openvibe.mediahub Commits
Motion: Calm reduces, only Off removes (Shared 4.183.0) (#370)
Changes
@@@ -553,7 +553,7 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [<!-- versions:start -->- openvibe-contracts: v0.384.0- openvibe-sdk: v0.125.0--- openvibe-shared: v4.179.0++- openvibe-shared: v4.183.0<!-- versions:end -->### Public Pics gallery@@@ -44,7 +44,7 @@],"contracts": "openvibe-contracts v0.384.0","sdk": "openvibe-sdk v0.125.0",-- "shared": "openvibe-shared v4.179.0",++ "shared": "openvibe-shared v4.183.0","deployment": "openvibe-ovh: unit openvibe-media-hub.service on 127.0.0.1:4990 (git checkout /opt/openvibe.download, env /etc/openvibe/media-hub.env, database ov_media_hub), deployed with `sudo ovhost deploy media-hub`; public at https://openvibe.download since 2026-10-08, https://openvibe.video since 2026-10-12 and https://openvibe.pics since 2026-10-15.","updated": "2026-11-10"}@@@ -17,7 +17,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0","pg": "^8.23.0","sharp": "^0.33.5"},@@@ -1654,9 +1654,9 @@}},"node_modules/openvibe-shared": {-- "version": "4.179.0",-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",-- "integrity": "sha512-Fjffjq3gLINhiXTqQJwsKQT/QbV4TYvsmz6GTp5hBJ8xA6KUQgu0wDgCQ3BRxCZ0ehmn0HGVAHUI+5m0LtPQCQ==",++ "version": "4.183.0",++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",++ "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -24,7 +24,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0","pg": "^8.23.0","sharp": "^0.33.5"},@@@ -325,7 +325,4 @@.fv-tile .dr-i { width: 72px; height: 72px; }.fv-actions .dr-btn { flex: 1; }}--@media (prefers-reduced-motion: reduce) {-- .dr-new-panel, .dr-menu, .dr-tray, .dr-drop, .dr-drop-box { animation: none; }-- .dr-file:hover { transform: none; }--}++html[data-ov-motion=off] .dr-file:hover{transform: none}@@@ -24,4 +24,3 @@.ovl-opt--adult input:checked + .ovl-card::before { border-color: var(--warning-text, #fbbf24); background-color: var(--warning-text, #fbbf24); }.ovl-opt input:focus-visible + .ovl-card { outline: 3px solid var(--accent, #3b82f6); outline-offset: 2px; }.ovl-opt:hover .ovl-card { border-color: color-mix(in srgb, var(--accent, #3b82f6) 60%, var(--border-light, #2c3d5c)); }--@media (prefers-reduced-motion: reduce) { .ovl-card { transition: none; } }@@@ -155,7 +155,7 @@.ovp-staff img, .ovp-staff .ovp-album-empty { width: 72px; }.ovp-drop-inner { padding: 28px 14px 24px; }}--@media (prefers-reduced-motion: reduce) { .ovp-tile img, .ovp-drop { transition: none; } .ovp-tile:hover img { transform: none; } }++html[data-ov-motion=off] .ovp-tile:hover img{transform: none}/* Resize and convert: formats by width, each cell a link. Scrolls on its own on a narrow screen. */.ovp-sizes { overflow-x: auto; }@@@ -233,7 +233,7 @@.ovp-gc-pic { display: block; overflow: hidden; border-radius: 14px; background: var(--ovp-card); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ovp-line) 70%, transparent); }.ovp-gc-pic img { display: block; width: 100%; height: auto; transition: transform .35s ease, filter .35s ease; }.ovp-gallery-card:hover .ovp-gc-pic img { transform: scale(1.03); filter: brightness(1.06); }--@media (prefers-reduced-motion: reduce) { .ovp-gc-pic img { transition: none; } .ovp-gallery-card:hover .ovp-gc-pic img { transform: none; } }++html[data-ov-motion=off] .ovp-gallery-card:hover .ovp-gc-pic img{transform: none}.ovp-gc-body { padding: 9px 4px 0; }.ovp-gc-title { margin: 0; font-size: 15px; line-height: 1.3; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.ovp-gc-title a { color: var(--text-primary, #e6edf7); text-decoration: none; }@@@ -114,7 +114,6 @@ body:has(> main.ovv-page) .openvibe-navbar.ovnav-top { background-color: var(--b/* The picture's shape once it plays (video.js followShape: --ovv-ar), eased when a recording turns mid-stream; 16:9before that. The height is capped so the title under the player stays on screen. */.ovv-player { display: block; width: 100%; aspect-ratio: var(--ovv-ar, 16 / 9); max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); background: #000; object-fit: contain; transition: aspect-ratio .45s cubic-bezier(.22, 1, .36, 1); }--@media (prefers-reduced-motion: reduce) { .ovv-player { transition: none; } }/* An upright recording on a phone or tablet held upright: at most 70% of the screen, so its title and buttons show underit without scrolling. */@media (max-width: 1000px) and (orientation: portrait) { .ovv-player { max-height: 70vh; max-height: 70svh; } }@@@ -548,8 +547,6 @@ a.ovv-channel-name:hover { text-decoration: underline; }.ovv-mytitleline { display: grid; gap: 3px; }.ovv-mystate { justify-self: start; }}--@media (prefers-reduced-motion: reduce) { .ovv-pulse { animation: none; } }--html[data-ov-motion=reduced] .ovv-pulse { animation: none; }/* Recording (/record) */.ovv-record { display: grid; gap: 12px; max-width: 760px; }@@@ -629,7 +626,6 @@ html[data-ov-motion=reduced] .ovv-pulse { animation: none; }.ovv-vis-card { grid-template-columns: 28px minmax(0, 1fr); justify-items: start; align-items: center; column-gap: 10px; text-align: left; padding: 10px 12px; }.ovv-vis-card i { grid-row: span 2; justify-self: center; }}--@media (prefers-reduced-motion: reduce) { .ovv-owner[open] { animation: none; } }/* Home, 10-28: the stats are links laid out as an even grid (the live tile first, with its pulse), the hero's actionsstack cleanly on a phone, and anchored sections stop clear of the sticky bar. */@@@ -654,7 +650,7 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i.ovv-stat { padding: 10px 12px; }.ovv-stat b { font-size: 1.2rem; }}--@media (prefers-reduced-motion: reduce) { .ovv-stat { transition: none; } .ovv-stat:hover { transform: none; } }++html[data-ov-motion=off] .ovv-stat:hover{transform: none}/* The home on phones (2026-10-29): a taste and a door. Each video list is one row that scrolls sideways (every video isstill there), eight channels show, the figures are one strip, and how it works folds under its heading. */@@@ -828,4 +824,3 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i.ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn { min-height: 44px; padding: 0 16px; font-size: .84rem; }.ovv-watch .ovv-actions .ovv-btn--icon { width: 44px; padding: 0; }}--@media (prefers-reduced-motion: reduce) { .ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn, .ovv-watch .ovv-about::details-content { transition: none; animation: none; } .ovv-watch .ovv-like.ovv-like--pop i { animation: none; } }
@@ -553,7 +553,7 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
@@ -553,7 +553,7 @@ Part of the [OpenVibe network](https://openvibe.network). Built in the open by [
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.384.0
- openvibe-contracts: v0.384.0
- openvibe-sdk: v0.125.0
- openvibe-sdk: v0.125.0
-- openvibe-shared: v4.179.0
+- openvibe-shared: v4.183.0
<!-- versions:end -->
<!-- versions:end -->
### Public Pics gallery
### Public Pics gallery
@@ -44,7 +44,7 @@
@@ -44,7 +44,7 @@
],
],
"contracts": "openvibe-contracts v0.384.0",
"contracts": "openvibe-contracts v0.384.0",
"sdk": "openvibe-sdk v0.125.0",
"sdk": "openvibe-sdk v0.125.0",
- "shared": "openvibe-shared v4.179.0",
+ "shared": "openvibe-shared v4.183.0",
"deployment": "openvibe-ovh: unit openvibe-media-hub.service on 127.0.0.1:4990 (git checkout /opt/openvibe.download, env /etc/openvibe/media-hub.env, database ov_media_hub), deployed with `sudo ovhost deploy media-hub`; public at https://openvibe.download since 2026-10-08, https://openvibe.video since 2026-10-12 and https://openvibe.pics since 2026-10-15.",
"deployment": "openvibe-ovh: unit openvibe-media-hub.service on 127.0.0.1:4990 (git checkout /opt/openvibe.download, env /etc/openvibe/media-hub.env, database ov_media_hub), deployed with `sudo ovhost deploy media-hub`; public at https://openvibe.download since 2026-10-08, https://openvibe.video since 2026-10-12 and https://openvibe.pics since 2026-10-15.",
"updated": "2026-11-10"
"updated": "2026-11-10"
}
}
@@ -17,7 +17,7 @@
@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
"pg": "^8.23.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
"sharp": "^0.33.5"
},
},
@@ -1654,9 +1654,9 @@
@@ -1654,9 +1654,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"node_modules/openvibe-shared": {
- "version": "4.179.0",
- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
- "integrity": "sha512-Fjffjq3gLINhiXTqQJwsKQT/QbV4TYvsmz6GTp5hBJ8xA6KUQgu0wDgCQ3BRxCZ0ehmn0HGVAHUI+5m0LtPQCQ==",
+ "version": "4.183.0",
+ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
+ "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -24,7 +24,7 @@
@@ -24,7 +24,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.179.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
"pg": "^8.23.0",
"pg": "^8.23.0",
"sharp": "^0.33.5"
"sharp": "^0.33.5"
},
},
@@ -325,7 +325,4 @@
@@ -325,7 +325,4 @@
.fv-tile .dr-i { width: 72px; height: 72px; }
.fv-tile .dr-i { width: 72px; height: 72px; }
.fv-actions .dr-btn { flex: 1; }
.fv-actions .dr-btn { flex: 1; }
}
}
-@media (prefers-reduced-motion: reduce) {
- .dr-new-panel, .dr-menu, .dr-tray, .dr-drop, .dr-drop-box { animation: none; }
- .dr-file:hover { transform: none; }
-}
+html[data-ov-motion=off] .dr-file:hover{transform: none}
@@ -24,4 +24,3 @@
@@ -24,4 +24,3 @@
.ovl-opt--adult input:checked + .ovl-card::before { border-color: var(--warning-text, #fbbf24); background-color: var(--warning-text, #fbbf24); }
.ovl-opt--adult input:checked + .ovl-card::before { border-color: var(--warning-text, #fbbf24); background-color: var(--warning-text, #fbbf24); }
.ovl-opt input:focus-visible + .ovl-card { outline: 3px solid var(--accent, #3b82f6); outline-offset: 2px; }
.ovl-opt input:focus-visible + .ovl-card { outline: 3px solid var(--accent, #3b82f6); outline-offset: 2px; }
.ovl-opt:hover .ovl-card { border-color: color-mix(in srgb, var(--accent, #3b82f6) 60%, var(--border-light, #2c3d5c)); }
.ovl-opt:hover .ovl-card { border-color: color-mix(in srgb, var(--accent, #3b82f6) 60%, var(--border-light, #2c3d5c)); }
-@media (prefers-reduced-motion: reduce) { .ovl-card { transition: none; } }
@@ -155,7 +155,7 @@
@@ -155,7 +155,7 @@
.ovp-staff img, .ovp-staff .ovp-album-empty { width: 72px; }
.ovp-staff img, .ovp-staff .ovp-album-empty { width: 72px; }
.ovp-drop-inner { padding: 28px 14px 24px; }
.ovp-drop-inner { padding: 28px 14px 24px; }
}
}
-@media (prefers-reduced-motion: reduce) { .ovp-tile img, .ovp-drop { transition: none; } .ovp-tile:hover img { transform: none; } }
+html[data-ov-motion=off] .ovp-tile:hover img{transform: none}
/* Resize and convert: formats by width, each cell a link. Scrolls on its own on a narrow screen. */
/* Resize and convert: formats by width, each cell a link. Scrolls on its own on a narrow screen. */
.ovp-sizes { overflow-x: auto; }
.ovp-sizes { overflow-x: auto; }
@@ -233,7 +233,7 @@
@@ -233,7 +233,7 @@
.ovp-gc-pic { display: block; overflow: hidden; border-radius: 14px; background: var(--ovp-card); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ovp-line) 70%, transparent); }
.ovp-gc-pic { display: block; overflow: hidden; border-radius: 14px; background: var(--ovp-card); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ovp-line) 70%, transparent); }
.ovp-gc-pic img { display: block; width: 100%; height: auto; transition: transform .35s ease, filter .35s ease; }
.ovp-gc-pic img { display: block; width: 100%; height: auto; transition: transform .35s ease, filter .35s ease; }
.ovp-gallery-card:hover .ovp-gc-pic img { transform: scale(1.03); filter: brightness(1.06); }
.ovp-gallery-card:hover .ovp-gc-pic img { transform: scale(1.03); filter: brightness(1.06); }
-@media (prefers-reduced-motion: reduce) { .ovp-gc-pic img { transition: none; } .ovp-gallery-card:hover .ovp-gc-pic img { transform: none; } }
+html[data-ov-motion=off] .ovp-gallery-card:hover .ovp-gc-pic img{transform: none}
.ovp-gc-body { padding: 9px 4px 0; }
.ovp-gc-body { padding: 9px 4px 0; }
.ovp-gc-title { margin: 0; font-size: 15px; line-height: 1.3; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ovp-gc-title { margin: 0; font-size: 15px; line-height: 1.3; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ovp-gc-title a { color: var(--text-primary, #e6edf7); text-decoration: none; }
.ovp-gc-title a { color: var(--text-primary, #e6edf7); text-decoration: none; }
@@ -114,7 +114,6 @@ body:has(> main.ovv-page) .openvibe-navbar.ovnav-top { background-color: var(--b
@@ -114,7 +114,6 @@ body:has(> main.ovv-page) .openvibe-navbar.ovnav-top { background-color: var(--b
/* The picture's shape once it plays (video.js followShape: --ovv-ar), eased when a recording turns mid-stream; 16:9
/* The picture's shape once it plays (video.js followShape: --ovv-ar), eased when a recording turns mid-stream; 16:9
before that. The height is capped so the title under the player stays on screen. */
before that. The height is capped so the title under the player stays on screen. */
.ovv-player { display: block; width: 100%; aspect-ratio: var(--ovv-ar, 16 / 9); max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); background: #000; object-fit: contain; transition: aspect-ratio .45s cubic-bezier(.22, 1, .36, 1); }
.ovv-player { display: block; width: 100%; aspect-ratio: var(--ovv-ar, 16 / 9); max-height: calc(100vh - 150px); max-height: calc(100dvh - 150px); background: #000; object-fit: contain; transition: aspect-ratio .45s cubic-bezier(.22, 1, .36, 1); }
-@media (prefers-reduced-motion: reduce) { .ovv-player { transition: none; } }
/* An upright recording on a phone or tablet held upright: at most 70% of the screen, so its title and buttons show under
/* An upright recording on a phone or tablet held upright: at most 70% of the screen, so its title and buttons show under
it without scrolling. */
it without scrolling. */
@media (max-width: 1000px) and (orientation: portrait) { .ovv-player { max-height: 70vh; max-height: 70svh; } }
@media (max-width: 1000px) and (orientation: portrait) { .ovv-player { max-height: 70vh; max-height: 70svh; } }
@@ -548,8 +547,6 @@ a.ovv-channel-name:hover { text-decoration: underline; }
@@ -548,8 +547,6 @@ a.ovv-channel-name:hover { text-decoration: underline; }
.ovv-mytitleline { display: grid; gap: 3px; }
.ovv-mytitleline { display: grid; gap: 3px; }
.ovv-mystate { justify-self: start; }
.ovv-mystate { justify-self: start; }
}
}
-@media (prefers-reduced-motion: reduce) { .ovv-pulse { animation: none; } }
-html[data-ov-motion=reduced] .ovv-pulse { animation: none; }
/* Recording (/record) */
/* Recording (/record) */
.ovv-record { display: grid; gap: 12px; max-width: 760px; }
.ovv-record { display: grid; gap: 12px; max-width: 760px; }
@@ -629,7 +626,6 @@ html[data-ov-motion=reduced] .ovv-pulse { animation: none; }
@@ -629,7 +626,6 @@ html[data-ov-motion=reduced] .ovv-pulse { animation: none; }
.ovv-vis-card { grid-template-columns: 28px minmax(0, 1fr); justify-items: start; align-items: center; column-gap: 10px; text-align: left; padding: 10px 12px; }
.ovv-vis-card { grid-template-columns: 28px minmax(0, 1fr); justify-items: start; align-items: center; column-gap: 10px; text-align: left; padding: 10px 12px; }
.ovv-vis-card i { grid-row: span 2; justify-self: center; }
.ovv-vis-card i { grid-row: span 2; justify-self: center; }
}
}
-@media (prefers-reduced-motion: reduce) { .ovv-owner[open] { animation: none; } }
/* Home, 10-28: the stats are links laid out as an even grid (the live tile first, with its pulse), the hero's actions
/* Home, 10-28: the stats are links laid out as an even grid (the live tile first, with its pulse), the hero's actions
stack cleanly on a phone, and anchored sections stop clear of the sticky bar. */
stack cleanly on a phone, and anchored sections stop clear of the sticky bar. */
@@ -654,7 +650,7 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
@@ -654,7 +650,7 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
.ovv-stat { padding: 10px 12px; }
.ovv-stat { padding: 10px 12px; }
.ovv-stat b { font-size: 1.2rem; }
.ovv-stat b { font-size: 1.2rem; }
}
}
-@media (prefers-reduced-motion: reduce) { .ovv-stat { transition: none; } .ovv-stat:hover { transform: none; } }
+html[data-ov-motion=off] .ovv-stat:hover{transform: none}
/* The home on phones (2026-10-29): a taste and a door. Each video list is one row that scrolls sideways (every video is
/* The home on phones (2026-10-29): a taste and a door. Each video list is one row that scrolls sideways (every video is
still there), eight channels show, the figures are one strip, and how it works folds under its heading. */
still there), eight channels show, the figures are one strip, and how it works folds under its heading. */
@@ -828,4 +824,3 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
@@ -828,4 +824,3 @@ html.ov-motion .ovv-stat.is-live .ovv-dot { animation: ovv-pulse 1.6s ease-out i
.ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn { min-height: 44px; padding: 0 16px; font-size: .84rem; }
.ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn { min-height: 44px; padding: 0 16px; font-size: .84rem; }
.ovv-watch .ovv-actions .ovv-btn--icon { width: 44px; padding: 0; }
.ovv-watch .ovv-actions .ovv-btn--icon { width: 44px; padding: 0; }
}
}
-@media (prefers-reduced-motion: reduce) { .ovv-watch .ovv-actions .ovv-btn, .ovv-watch .ovv-actions details > summary.ovv-btn, .ovv-watch .ovv-about::details-content { transition: none; animation: none; } .ovv-watch .ovv-like.ovv-like--pop i { animation: none; } }