@jackuait/blok 0.16.0 → 0.17.0

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 (537) hide show
  1. package/dist/blok.cjs +1 -1
  2. package/dist/blok.iife.js +4 -4
  3. package/dist/blok.mjs +2 -2
  4. package/dist/blok.umd.js +4 -4
  5. package/dist/chunks/{blok-BTpZKZQ5.cjs → blok-BPd65xOj.cjs} +11 -11
  6. package/dist/chunks/{blok-RLzqfwql.mjs → blok-D4ApwnD7.mjs} +776 -780
  7. package/dist/chunks/constants-C3wBsvmH.cjs +606 -0
  8. package/dist/chunks/{constants-BUNgcIvY.mjs → constants-DObdf8NU.mjs} +274 -274
  9. package/dist/chunks/{i18next-loader-BH_a6G9t.mjs → i18next-loader-BMhspWFn.mjs} +1 -1
  10. package/dist/chunks/{i18next-loader-BID4jAFG.cjs → i18next-loader-CNLosgId.cjs} +1 -1
  11. package/dist/chunks/{lightweight-i18n-Clk37huC.cjs → lightweight-i18n-ByswFbdt.cjs} +1 -1
  12. package/dist/chunks/{lightweight-i18n-B0VO8Rft.mjs → lightweight-i18n-Ck1HlVxq.mjs} +32 -0
  13. package/dist/{messages-MYWse7vx2.mjs → chunks/messages--uPFKcl3.mjs} +41 -9
  14. package/dist/{messages-gmq1abXg.mjs → chunks/messages-0ZOxg81Y.mjs} +43 -11
  15. package/dist/{messages-BSvuvR6i.mjs → chunks/messages-1H2SY5H1.mjs} +54 -22
  16. package/dist/chunks/messages-1bAMgAsO.cjs +1 -0
  17. package/dist/chunks/messages-3B44ZmLZ.cjs +1 -0
  18. package/dist/chunks/messages-3iZ6jJ6e.cjs +1 -0
  19. package/dist/chunks/messages-5Rp1xyL4.cjs +1 -0
  20. package/dist/chunks/messages-5Vbzn-DL2.cjs +1 -0
  21. package/dist/{messages-K1RIXLxa.mjs → chunks/messages-61uWTg1y.mjs} +37 -5
  22. package/dist/chunks/messages-6lqZ4lhc2.cjs +1 -0
  23. package/dist/chunks/messages-795D2ldP2.cjs +1 -0
  24. package/dist/chunks/messages-79WWudxY.cjs +1 -0
  25. package/dist/chunks/messages-8uD5ctYP.cjs +1 -0
  26. package/dist/{messages-DL1HdFqf.mjs → chunks/messages-9gvi5jul.mjs} +38 -6
  27. package/dist/chunks/messages-B0o3rVBB.cjs +1 -0
  28. package/dist/chunks/messages-B1h0nDQW.cjs +1 -0
  29. package/dist/chunks/messages-B37vUkBi.cjs +1 -0
  30. package/dist/{messages-C0RxvQ_B2.mjs → chunks/messages-B4BvJtlu.mjs} +53 -21
  31. package/dist/{messages-m_U7v4rD.mjs → chunks/messages-BChCPw99.mjs} +45 -13
  32. package/dist/chunks/messages-BDs_gdD_.cjs +1 -0
  33. package/dist/chunks/messages-BE6rW2R-.cjs +1 -0
  34. package/dist/{messages-ZAVymtrA2.mjs → chunks/messages-BFGgLdIA2.mjs} +40 -8
  35. package/dist/chunks/{messages-Ci-rkkgx.mjs → messages-BFcq7wsx.mjs} +39 -7
  36. package/dist/{messages-ilnnXk3p.mjs → chunks/messages-BGaAuDRS.mjs} +41 -9
  37. package/dist/chunks/messages-BGoJHXUk2.cjs +1 -0
  38. package/dist/{messages-xSBQ46qE2.mjs → chunks/messages-BIHeeP7X2.mjs} +53 -21
  39. package/dist/chunks/{messages-8FnVkNsk2.mjs → messages-BIQ2VT8X2.mjs} +48 -16
  40. package/dist/{messages-DCwlxqBz.mjs → chunks/messages-BK32XCpH.mjs} +58 -26
  41. package/dist/{messages-BnpaaUnF2.mjs → chunks/messages-BKSDnjOs.mjs} +40 -8
  42. package/dist/chunks/{messages-7nxAnzdE2.mjs → messages-BMNmXaC8.mjs} +43 -11
  43. package/dist/{messages-BlkFLGrN.mjs → chunks/messages-BNuGVAEy.mjs} +40 -8
  44. package/dist/{messages-CI7MWoEP2.mjs → chunks/messages-BQEh67Mi2.mjs} +53 -21
  45. package/dist/chunks/messages-BQOx3XGd.cjs +1 -0
  46. package/dist/chunks/{messages-CIqhI4HT.mjs → messages-BQUzqXIO.mjs} +46 -14
  47. package/dist/{messages-BqjusG9f.mjs → chunks/messages-BTKPcoLu.mjs} +49 -17
  48. package/dist/chunks/messages-BXgTHDIw.cjs +1 -0
  49. package/dist/chunks/messages-BXvKhyQH.cjs +1 -0
  50. package/dist/chunks/messages-BYW-U0iT.cjs +1 -0
  51. package/dist/chunks/messages-B_lkWkPQ.cjs +1 -0
  52. package/dist/{messages-CaJp3hwf2.mjs → chunks/messages-BaWaLwcn2.mjs} +42 -10
  53. package/dist/chunks/messages-BeTQxvmX2.cjs +1 -0
  54. package/dist/chunks/messages-BfWGa4V82.cjs +1 -0
  55. package/dist/chunks/{messages-B19gfehr.mjs → messages-Bgzyr5Lh.mjs} +48 -16
  56. package/dist/chunks/messages-BjFB8sow.cjs +1 -0
  57. package/dist/chunks/messages-Bjmg_8lv2.cjs +1 -0
  58. package/dist/chunks/messages-BlOVJtaj.cjs +1 -0
  59. package/dist/{messages-DQiZK84h.mjs → chunks/messages-BnW_Fwro.mjs} +57 -25
  60. package/dist/chunks/messages-Bpvja9xW2.cjs +1 -0
  61. package/dist/chunks/messages-BtMQ6v_L.cjs +1 -0
  62. package/dist/chunks/messages-BvChjyuU2.cjs +1 -0
  63. package/dist/{messages-Ca6_kMBT2.mjs → chunks/messages-Bvge__AJ2.mjs} +45 -13
  64. package/dist/chunks/{messages-BSHC8Ohs.mjs → messages-BwxzN2q3.mjs} +43 -11
  65. package/dist/chunks/{messages-C81EnNxX.mjs → messages-Byntrl2c.mjs} +41 -9
  66. package/dist/chunks/{messages-CXbHVq05.mjs → messages-C3B8l3Hy.mjs} +49 -17
  67. package/dist/chunks/messages-C3fAHxfE2.cjs +1 -0
  68. package/dist/chunks/{messages-qjFVR3AK.mjs → messages-C56BTPcC.mjs} +38 -6
  69. package/dist/{messages-B3YNVBd1.mjs → chunks/messages-C6vijVZv2.mjs} +37 -5
  70. package/dist/{messages-C-_8o7te.mjs → chunks/messages-C79Ef9MU.mjs} +43 -11
  71. package/dist/{messages-D5u6vlu6.mjs → chunks/messages-C93gDUHr.mjs} +39 -7
  72. package/dist/chunks/messages-CAix8jdZ.cjs +1 -0
  73. package/dist/{messages-BqKW-hlt2.mjs → chunks/messages-CEUDK26P2.mjs} +42 -10
  74. package/dist/chunks/messages-CEZ528TO2.cjs +1 -0
  75. package/dist/chunks/{messages-DRKzAu-g.mjs → messages-CHx6m_Bo.mjs} +45 -13
  76. package/dist/chunks/messages-CKiWXTe1.cjs +1 -0
  77. package/dist/chunks/{messages-bJ7cOoA_.mjs → messages-CMFcaa9C.mjs} +46 -14
  78. package/dist/chunks/messages-CO4J7Nns.cjs +1 -0
  79. package/dist/chunks/messages-COTP4ZJ_2.cjs +1 -0
  80. package/dist/chunks/{messages-QeD4YPxL.mjs → messages-CV3U2Vsm.mjs} +41 -9
  81. package/dist/{messages--RL8UOhV.mjs → chunks/messages-CYOersvL.mjs} +48 -16
  82. package/dist/{messages-DZtr9UPl2.mjs → chunks/messages-C_s-wv1r2.mjs} +41 -9
  83. package/dist/{messages-CFSBN-tg.mjs → chunks/messages-CbdaJSfC2.mjs} +40 -8
  84. package/dist/chunks/{messages-DTKpwQ9o.mjs → messages-Ccng4hJ2.mjs} +44 -12
  85. package/dist/chunks/messages-Cgph4q9d.cjs +1 -0
  86. package/dist/chunks/messages-Cp7wFDrY2.cjs +1 -0
  87. package/dist/chunks/messages-CpZneXUI.cjs +1 -0
  88. package/dist/chunks/messages-CpbireNX.cjs +1 -0
  89. package/dist/{messages-BIUXljax.mjs → chunks/messages-CpcZgGYg.mjs} +41 -9
  90. package/dist/chunks/{messages-Bxz0TVBv2.mjs → messages-CqhQuuRo2.mjs} +93 -61
  91. package/dist/chunks/{messages-BVV2uB2V2.mjs → messages-CrFIbrXr2.mjs} +40 -8
  92. package/dist/chunks/messages-CrwZs1Gq.cjs +1 -0
  93. package/dist/{messages-7EaFUksm.mjs → chunks/messages-D0_Mxuh62.mjs} +40 -8
  94. package/dist/{messages-BrycA2Yd.mjs → chunks/messages-D1q601Wg.mjs} +37 -5
  95. package/dist/{messages-CRuD2YBl2.mjs → chunks/messages-D3kC7iDa2.mjs} +38 -6
  96. package/dist/{messages-CasKwW-A.mjs → chunks/messages-D4UnR6e52.mjs} +38 -6
  97. package/dist/chunks/messages-D5CeQW1e2.cjs +1 -0
  98. package/dist/chunks/messages-D8UH8jc6.cjs +1 -0
  99. package/dist/chunks/messages-DAmOTPVW2.cjs +1 -0
  100. package/dist/chunks/{messages-ZjheBuhT2.mjs → messages-DBPkzBZO2.mjs} +47 -15
  101. package/dist/chunks/messages-DEduQerF.cjs +1 -0
  102. package/dist/chunks/{messages-c1uiUe552.mjs → messages-DFA5OVrs2.mjs} +45 -13
  103. package/dist/chunks/messages-DHah-frn.cjs +1 -0
  104. package/dist/chunks/messages-DI1ZLPxM.cjs +1 -0
  105. package/dist/chunks/{messages-DsWiXnOy2.mjs → messages-DKJ5CX9h2.mjs} +45 -13
  106. package/dist/chunks/messages-DKjhx7Y3.cjs +1 -0
  107. package/dist/chunks/{messages-CO9-5XrF2.mjs → messages-DR5DyRRY2.mjs} +45 -13
  108. package/dist/{messages-BKrK8Axl.mjs → chunks/messages-DWjHAdb3.mjs} +44 -12
  109. package/dist/chunks/{messages-Hsn-3QW0.mjs → messages-DYsO5SIA.mjs} +50 -18
  110. package/dist/{messages-BaYuAoTP2.mjs → chunks/messages-DZwozMZD2.mjs} +66 -34
  111. package/dist/chunks/{messages-BrpXuY-6.mjs → messages-Db_L5RNl.mjs} +43 -11
  112. package/dist/chunks/messages-DeXUZcFn2.cjs +1 -0
  113. package/dist/chunks/messages-Dgp7Wk4H.cjs +1 -0
  114. package/dist/chunks/messages-DhnCZQEY.cjs +1 -0
  115. package/dist/chunks/messages-DjU1jbKf.cjs +1 -0
  116. package/dist/{messages-B9s898dI.mjs → chunks/messages-DkqiXPS7.mjs} +43 -11
  117. package/dist/chunks/messages-Dl6VC9Q9.cjs +1 -0
  118. package/dist/chunks/messages-Dlc1DdZ22.cjs +1 -0
  119. package/dist/chunks/{messages-DOCzIldx.mjs → messages-Dna-8bQq.mjs} +43 -11
  120. package/dist/chunks/{messages-D3exVYZD.mjs → messages-DtTgOx9a.mjs} +57 -25
  121. package/dist/{messages-eNnPQjam2.mjs → chunks/messages-Duj8jpve2.mjs} +61 -29
  122. package/dist/chunks/messages-DvxZjb5g2.cjs +1 -0
  123. package/dist/chunks/messages-Dz8AmvFq.cjs +1 -0
  124. package/dist/chunks/messages-DzarYc1J2.cjs +1 -0
  125. package/dist/{messages-B6p4UUC-.mjs → chunks/messages-FIgYAomz2.mjs} +45 -13
  126. package/dist/chunks/messages-FM0KHIkQ2.cjs +1 -0
  127. package/dist/chunks/messages-JsmKjXPZ.cjs +1 -0
  128. package/dist/chunks/{messages-CO6ZReE7.mjs → messages-LW9Kd-vn.mjs} +40 -8
  129. package/dist/chunks/{messages-CC4xe9xv.mjs → messages-R2RH1RLt.mjs} +52 -20
  130. package/dist/chunks/messages-RWVOHsZu.cjs +1 -0
  131. package/dist/{messages-DJMSsPuS.mjs → chunks/messages-X90YfYzG2.mjs} +37 -5
  132. package/dist/chunks/messages-YhmR1nl02.cjs +1 -0
  133. package/dist/chunks/messages-Ywb6VdfO2.cjs +1 -0
  134. package/dist/{messages-mcif9RnD.mjs → chunks/messages-ZPOc6IQC.mjs} +37 -5
  135. package/dist/chunks/messages-_ECIn1VC2.cjs +1 -0
  136. package/dist/chunks/messages-cYjlWqco.cjs +1 -0
  137. package/dist/chunks/{messages-BRWkudTR.mjs → messages-dp4NwDVM.mjs} +44 -12
  138. package/dist/{messages-BGIle7Xo.mjs → chunks/messages-hhT3Vii-.mjs} +46 -14
  139. package/dist/chunks/messages-iwzDjgrP.cjs +1 -0
  140. package/dist/chunks/{messages-Dly-_TB6.mjs → messages-k4Do3gkF.mjs} +54 -22
  141. package/dist/chunks/messages-l0nKmGOV.cjs +1 -0
  142. package/dist/chunks/messages-l7DqwqOu2.cjs +1 -0
  143. package/dist/{messages-wB8V2U2i2.mjs → chunks/messages-oLqnmqJf2.mjs} +38 -6
  144. package/dist/chunks/messages-sLVwrcar.cjs +1 -0
  145. package/dist/chunks/{messages-BoN_Bitl2.mjs → messages-yGQn67fw2.mjs} +48 -16
  146. package/dist/chunks/messages-zkunMjZf2.cjs +1 -0
  147. package/dist/chunks/{tools-ChneUeSu.mjs → tools-CM6aPuR4.mjs} +3542 -2301
  148. package/dist/chunks/tools-kfoXLTzY.cjs +208 -0
  149. package/dist/chunks/webm-muxer-CC98PYSV.cjs +5 -0
  150. package/dist/chunks/webm-muxer-CUUz719e.mjs +864 -0
  151. package/dist/full.cjs +1 -1
  152. package/dist/full.mjs +13 -13
  153. package/dist/locales.mjs +99 -67
  154. package/dist/{chunks/messages-DPV70Ys22.mjs → messages-1ZSVxDYN2.mjs} +42 -10
  155. package/dist/{messages-BY5WK3mB.mjs → messages-AK_9q2yu.mjs} +46 -14
  156. package/dist/{chunks/messages-BRN9bO60.mjs → messages-B0Gc0lBw.mjs} +37 -5
  157. package/dist/{messages-BTp7xsAK2.mjs → messages-B5THTOwb2.mjs} +45 -13
  158. package/dist/{messages-h1l_y01e.mjs → messages-B5xy5hCa.mjs} +43 -11
  159. package/dist/{messages-CSVzRRdj.mjs → messages-B6J8l1aF.mjs} +38 -6
  160. package/dist/{chunks/messages-R08pGvHm.mjs → messages-B7E1zFAv.mjs} +49 -17
  161. package/dist/{messages-D9CbvVgb.mjs → messages-B87GXoqt.mjs} +41 -9
  162. package/dist/{chunks/messages-D21eomvf.mjs → messages-B95smO_C.mjs} +41 -9
  163. package/dist/{messages-DO99T6qk2.mjs → messages-B9h-mKVO2.mjs} +57 -25
  164. package/dist/{chunks/messages-B9kHL94V.mjs → messages-BBb_hXxm.mjs} +43 -11
  165. package/dist/{messages-8wZYXCg7.mjs → messages-BDJfFuXR.mjs} +43 -11
  166. package/dist/{chunks/messages-DeK_vGCd2.mjs → messages-BH5AKf_i2.mjs} +53 -21
  167. package/dist/{chunks/messages-BrLLU_Dm.mjs → messages-BLslMhf-.mjs} +38 -6
  168. package/dist/{chunks/messages-C3qdarW42.mjs → messages-BPsdJnwT.mjs} +45 -13
  169. package/dist/{messages-CrcHeqGR.mjs → messages-BTrok9K8.mjs} +44 -12
  170. package/dist/{chunks/messages-D9MUpOtw2.mjs → messages-BctWdAZP2.mjs} +45 -13
  171. package/dist/{chunks/messages-DefTqLH32.mjs → messages-BhGHyHKC2.mjs} +53 -21
  172. package/dist/{messages-DA5IipN52.mjs → messages-BlInN8XP2.mjs} +48 -16
  173. package/dist/{chunks/messages-DPX9kFey.mjs → messages-Bn19MGza.mjs} +45 -13
  174. package/dist/{messages-CNzktVoM2.mjs → messages-BqFRlEJE2.mjs} +43 -11
  175. package/dist/{chunks/messages-DN6pprFJ2.mjs → messages-Bt5Sbl952.mjs} +66 -34
  176. package/dist/{chunks/messages-7bt8ujXQ.mjs → messages-Bumbqs6s.mjs} +37 -5
  177. package/dist/{chunks/messages-DcgNt1Bg2.mjs → messages-BvwVDbII.mjs} +40 -8
  178. package/dist/{chunks/messages-M1tLUpjT.mjs → messages-Bwese2OQ.mjs} +43 -11
  179. package/dist/{messages-DPiPd88g.mjs → messages-Bx5KWmyJ.mjs} +39 -7
  180. package/dist/{messages-BIRq0EVo.mjs → messages-ByntluqZ.mjs} +48 -16
  181. package/dist/{chunks/messages-JiQBxj4o2.mjs → messages-C-8BMvSp2.mjs} +42 -10
  182. package/dist/{messages-DGz70LLg2.mjs → messages-C-ytN6Dz2.mjs} +45 -13
  183. package/dist/{messages-Cu5AHbR-2.mjs → messages-C8QB980F2.mjs} +43 -11
  184. package/dist/{chunks/messages-BLtZ2DXE.mjs → messages-CCdDP2DE.mjs} +39 -7
  185. package/dist/{messages-CwavcZov.mjs → messages-CCgDqF-e.mjs} +47 -15
  186. package/dist/{messages-CN5mXtal2.mjs → messages-CLkbvdRh2.mjs} +49 -17
  187. package/dist/{messages-DlC9tgiV.mjs → messages-CQ6A0zI9.mjs} +93 -61
  188. package/dist/{chunks/messages-BakdNtus2.mjs → messages-CQnz6pXD2.mjs} +38 -6
  189. package/dist/{chunks/messages-R3IlcPVE2.mjs → messages-CQotju8u2.mjs} +41 -9
  190. package/dist/{chunks/messages-CHmoIrso.mjs → messages-CRL2ecWR.mjs} +37 -5
  191. package/dist/{chunks/messages-36KiD2Bx2.mjs → messages-CRhhyqEy2.mjs} +40 -8
  192. package/dist/{messages-BGfVV77O.mjs → messages-CSf1g9n_.mjs} +48 -16
  193. package/dist/{chunks/messages-C3ueCeDy.mjs → messages-CYuTyoK6.mjs} +54 -22
  194. package/dist/{messages-BUfHXzRi2.mjs → messages-Co2GV7rA2.mjs} +45 -13
  195. package/dist/{chunks/messages-Dk_PadZz.mjs → messages-CqtZ_gtb.mjs} +40 -8
  196. package/dist/{chunks/messages-CH_Aqn-k.mjs → messages-CxK_Vgra.mjs} +41 -9
  197. package/dist/{chunks/messages-VFdnkrDm2.mjs → messages-D08TSj5Q.mjs} +37 -5
  198. package/dist/{chunks/messages-8Qzw6Xju.mjs → messages-DFDw0nkI.mjs} +57 -25
  199. package/dist/{messages-DJRg4kFv2.mjs → messages-DKoeDmZV2.mjs} +45 -13
  200. package/dist/{chunks/messages-D33lcfdb.mjs → messages-DLKTwtBI.mjs} +43 -11
  201. package/dist/{messages-CMG59Rb62.mjs → messages-DQaDNQat2.mjs} +46 -14
  202. package/dist/{chunks/messages-Bh8al9kl.mjs → messages-DZlYqaxx.mjs} +58 -26
  203. package/dist/{chunks/messages-CnvK1Abd2.mjs → messages-D_ql7LL-2.mjs} +61 -29
  204. package/dist/{chunks/messages-CXzyyhBC.mjs → messages-Da09byG42.mjs} +41 -9
  205. package/dist/{chunks/messages-DN9_Nlre2.mjs → messages-DaKjx7Gh.mjs} +38 -6
  206. package/dist/{messages-Bgf1E-Vj.mjs → messages-Dc1aAz5V.mjs} +50 -18
  207. package/dist/{chunks/messages-t_RiQ_y02.mjs → messages-DlxBkSUv.mjs} +40 -8
  208. package/dist/{messages-CdLOD2b_2.mjs → messages-DoahmNMI2.mjs} +54 -22
  209. package/dist/{chunks/messages-hT-pjCQL.mjs → messages-DpbHfnge.mjs} +46 -14
  210. package/dist/{messages-DCqRZ9Pw.mjs → messages-DrjZz7u9.mjs} +41 -9
  211. package/dist/{chunks/messages-DiUTxAEQ.mjs → messages-DrwEVbKk2.mjs} +53 -21
  212. package/dist/{chunks/messages-3H-mU8nV.mjs → messages-DvIPbDsq.mjs} +44 -12
  213. package/dist/{chunks/messages-vQ8eiHPr2.mjs → messages-Dy3mYP_n.mjs} +37 -5
  214. package/dist/{chunks/messages-B2hS--KC.mjs → messages-STUXoPH72.mjs} +40 -8
  215. package/dist/{messages-BfFFrhbd.mjs → messages-Vfl9lWod.mjs} +44 -12
  216. package/dist/{messages-B-9u3fLG.mjs → messages-YPF71WjJ.mjs} +52 -20
  217. package/dist/{messages-CpqGtSQ9.mjs → messages-aPBlKHzr.mjs} +40 -8
  218. package/dist/{chunks/messages-BoGOF3jH.mjs → messages-bCZW7LiC.mjs} +48 -16
  219. package/dist/{chunks/messages-DqcQoY-I2.mjs → messages-kjO2WeG-2.mjs} +38 -6
  220. package/dist/{messages-DRdzJFUx2.mjs → messages-un7M6YZC2.mjs} +40 -8
  221. package/dist/react.cjs +1 -1
  222. package/dist/react.mjs +1 -1
  223. package/dist/tools.cjs +1 -1
  224. package/dist/tools.mjs +3 -3
  225. package/dist/vendor.LICENSE.txt +35 -0
  226. package/package.json +2 -1
  227. package/src/components/i18n/locales/am/messages.json +48 -17
  228. package/src/components/i18n/locales/ar/messages.json +38 -7
  229. package/src/components/i18n/locales/az/messages.json +47 -16
  230. package/src/components/i18n/locales/bg/messages.json +43 -12
  231. package/src/components/i18n/locales/bn/messages.json +53 -22
  232. package/src/components/i18n/locales/bs/messages.json +42 -11
  233. package/src/components/i18n/locales/cs/messages.json +45 -14
  234. package/src/components/i18n/locales/da/messages.json +42 -11
  235. package/src/components/i18n/locales/de/messages.json +44 -13
  236. package/src/components/i18n/locales/dv/messages.json +51 -20
  237. package/src/components/i18n/locales/el/messages.json +40 -9
  238. package/src/components/i18n/locales/en/messages.json +32 -0
  239. package/src/components/i18n/locales/es/messages.json +42 -11
  240. package/src/components/i18n/locales/et/messages.json +42 -11
  241. package/src/components/i18n/locales/fa/messages.json +40 -9
  242. package/src/components/i18n/locales/fi/messages.json +38 -7
  243. package/src/components/i18n/locales/fil/messages.json +45 -14
  244. package/src/components/i18n/locales/fr/messages.json +37 -6
  245. package/src/components/i18n/locales/gu/messages.json +40 -9
  246. package/src/components/i18n/locales/he/messages.json +43 -12
  247. package/src/components/i18n/locales/hi/messages.json +42 -11
  248. package/src/components/i18n/locales/hr/messages.json +49 -18
  249. package/src/components/i18n/locales/hu/messages.json +56 -25
  250. package/src/components/i18n/locales/hy/messages.json +43 -12
  251. package/src/components/i18n/locales/id/messages.json +47 -16
  252. package/src/components/i18n/locales/it/messages.json +36 -5
  253. package/src/components/i18n/locales/ja/messages.json +36 -5
  254. package/src/components/i18n/locales/ka/messages.json +39 -8
  255. package/src/components/i18n/locales/km/messages.json +46 -15
  256. package/src/components/i18n/locales/kn/messages.json +39 -8
  257. package/src/components/i18n/locales/ko/messages.json +39 -8
  258. package/src/components/i18n/locales/ku/messages.json +93 -62
  259. package/src/components/i18n/locales/lo/messages.json +37 -6
  260. package/src/components/i18n/locales/lt/messages.json +47 -16
  261. package/src/components/i18n/locales/lv/messages.json +36 -5
  262. package/src/components/i18n/locales/mk/messages.json +44 -13
  263. package/src/components/i18n/locales/ml/messages.json +36 -5
  264. package/src/components/i18n/locales/mn/messages.json +60 -29
  265. package/src/components/i18n/locales/mr/messages.json +40 -9
  266. package/src/components/i18n/locales/ms/messages.json +41 -10
  267. package/src/components/i18n/locales/my/messages.json +44 -13
  268. package/src/components/i18n/locales/ne/messages.json +44 -13
  269. package/src/components/i18n/locales/nl/messages.json +39 -8
  270. package/src/components/i18n/locales/no/messages.json +37 -6
  271. package/src/components/i18n/locales/pa/messages.json +65 -34
  272. package/src/components/i18n/locales/pl/messages.json +37 -6
  273. package/src/components/i18n/locales/ps/messages.json +52 -21
  274. package/src/components/i18n/locales/pt/messages.json +44 -13
  275. package/src/components/i18n/locales/ro/messages.json +44 -13
  276. package/src/components/i18n/locales/ru/messages.json +41 -10
  277. package/src/components/i18n/locales/sd/messages.json +52 -21
  278. package/src/components/i18n/locales/si/messages.json +47 -16
  279. package/src/components/i18n/locales/sk/messages.json +42 -11
  280. package/src/components/i18n/locales/sl/messages.json +44 -13
  281. package/src/components/i18n/locales/sq/messages.json +52 -21
  282. package/src/components/i18n/locales/sr/messages.json +56 -25
  283. package/src/components/i18n/locales/sv/messages.json +39 -8
  284. package/src/components/i18n/locales/sw/messages.json +48 -17
  285. package/src/components/i18n/locales/ta/messages.json +42 -11
  286. package/src/components/i18n/locales/te/messages.json +45 -14
  287. package/src/components/i18n/locales/th/messages.json +40 -9
  288. package/src/components/i18n/locales/tr/messages.json +39 -8
  289. package/src/components/i18n/locales/ug/messages.json +53 -22
  290. package/src/components/i18n/locales/uk/messages.json +40 -9
  291. package/src/components/i18n/locales/ur/messages.json +36 -5
  292. package/src/components/i18n/locales/vi/messages.json +37 -6
  293. package/src/components/i18n/locales/yi/messages.json +57 -26
  294. package/src/components/i18n/locales/zh/messages.json +39 -8
  295. package/src/components/icons/index.ts +106 -0
  296. package/src/components/modules/paste/handlers/pattern-handler.ts +4 -7
  297. package/src/components/utils/format-bytes.ts +15 -0
  298. package/src/components/utils/max-size.ts +36 -0
  299. package/src/components/utils/media-empty-state.ts +1 -11
  300. package/src/components/utils/upload-error-message.ts +43 -0
  301. package/src/styles/colors.css +31 -0
  302. package/src/styles/embed.css +4 -48
  303. package/src/styles/keyframes.css +8 -0
  304. package/src/styles/main.css +2 -0
  305. package/src/styles/resize-cue.css +26 -0
  306. package/src/styles/video.css +1221 -0
  307. package/src/tools/file/constants.ts +3 -0
  308. package/src/tools/file/index.ts +75 -4
  309. package/src/tools/file/uploader.ts +5 -2
  310. package/src/tools/image/constants.ts +1 -1
  311. package/src/tools/image/converted-uploader.ts +30 -0
  312. package/src/tools/image/gif-to-webm.ts +170 -0
  313. package/src/tools/image/index.ts +125 -3
  314. package/src/tools/image/resizer.ts +39 -6
  315. package/src/tools/image/uploader.ts +2 -1
  316. package/src/tools/image/uploading-state.ts +2 -1
  317. package/src/tools/index.ts +2 -0
  318. package/src/tools/link/embed/index.ts +61 -11
  319. package/src/tools/link/embed/overlay.ts +12 -95
  320. package/src/tools/table/index.ts +37 -1
  321. package/src/tools/table/table-cell-blocks.ts +65 -0
  322. package/src/tools/table/table-operations.ts +51 -2
  323. package/src/tools/table/table-row-col-action-handler.ts +25 -2
  324. package/src/tools/table/table-subsystems.ts +6 -1
  325. package/src/tools/video/constants.ts +22 -0
  326. package/src/tools/video/controls.ts +1448 -0
  327. package/src/tools/video/empty-state.ts +45 -0
  328. package/src/tools/video/i18n.ts +13 -0
  329. package/src/tools/video/index.ts +521 -0
  330. package/src/tools/video/ui.ts +83 -0
  331. package/src/tools/video/uploader.ts +75 -0
  332. package/types/configs/blok-config.d.ts +2 -9
  333. package/types/tools/file.d.ts +9 -3
  334. package/types/tools/image.d.ts +11 -2
  335. package/types/tools/max-size.d.ts +12 -0
  336. package/types/tools/video.d.ts +72 -0
  337. package/dist/chunks/constants-B1fDH6ZT.cjs +0 -539
  338. package/dist/chunks/messages--XZLcuUK.cjs +0 -1
  339. package/dist/chunks/messages-6adLi-J9.cjs +0 -1
  340. package/dist/chunks/messages-9xZnfk_-.cjs +0 -1
  341. package/dist/chunks/messages-B-7wgQm5.cjs +0 -1
  342. package/dist/chunks/messages-B4-kmmK72.cjs +0 -1
  343. package/dist/chunks/messages-BBh7sF4o.cjs +0 -1
  344. package/dist/chunks/messages-BIhN9JOT.cjs +0 -1
  345. package/dist/chunks/messages-BJU_3KpD.cjs +0 -1
  346. package/dist/chunks/messages-BNfoWRc02.cjs +0 -1
  347. package/dist/chunks/messages-BOrASwT4.cjs +0 -1
  348. package/dist/chunks/messages-BPWs2ZiL.cjs +0 -1
  349. package/dist/chunks/messages-BR6HUjXI.cjs +0 -1
  350. package/dist/chunks/messages-BWZYYHHF.cjs +0 -1
  351. package/dist/chunks/messages-BY3nxQWj.cjs +0 -1
  352. package/dist/chunks/messages-BYpAVGd12.cjs +0 -1
  353. package/dist/chunks/messages-BZzpf1UP.cjs +0 -1
  354. package/dist/chunks/messages-B_12_UjB.cjs +0 -1
  355. package/dist/chunks/messages-BaZ-Dtr92.cjs +0 -1
  356. package/dist/chunks/messages-BeaFn5UT.cjs +0 -1
  357. package/dist/chunks/messages-BgosUxKq2.cjs +0 -1
  358. package/dist/chunks/messages-BgrhLzFS.cjs +0 -1
  359. package/dist/chunks/messages-BmP5kV232.cjs +0 -1
  360. package/dist/chunks/messages-Bnp8vNJz.cjs +0 -1
  361. package/dist/chunks/messages-BpkV__T7.cjs +0 -1
  362. package/dist/chunks/messages-BqYqYBH02.cjs +0 -1
  363. package/dist/chunks/messages-Bv7MXv7R.cjs +0 -1
  364. package/dist/chunks/messages-Byi8D3Hp.cjs +0 -1
  365. package/dist/chunks/messages-C2tGk63O2.cjs +0 -1
  366. package/dist/chunks/messages-C8lWOU7O.cjs +0 -1
  367. package/dist/chunks/messages-C9Usx2VK.cjs +0 -1
  368. package/dist/chunks/messages-C9vxfOaB2.cjs +0 -1
  369. package/dist/chunks/messages-CBqID_rf2.cjs +0 -1
  370. package/dist/chunks/messages-CKaebA4N2.cjs +0 -1
  371. package/dist/chunks/messages-CNuuKnxY.cjs +0 -1
  372. package/dist/chunks/messages-CS1dVWiH2.cjs +0 -1
  373. package/dist/chunks/messages-CSHcjK_N2.cjs +0 -1
  374. package/dist/chunks/messages-CSWjZBVp2.cjs +0 -1
  375. package/dist/chunks/messages-CVi9dbMY2.cjs +0 -1
  376. package/dist/chunks/messages-CXkEnOpM2.cjs +0 -1
  377. package/dist/chunks/messages-Ch4PcGQ42.cjs +0 -1
  378. package/dist/chunks/messages-Cj12Zgsk.cjs +0 -1
  379. package/dist/chunks/messages-CjFn_dGR2.cjs +0 -1
  380. package/dist/chunks/messages-CnFZ_js2.cjs +0 -1
  381. package/dist/chunks/messages-CstdYlPl.cjs +0 -1
  382. package/dist/chunks/messages-CzEXG3wA2.cjs +0 -1
  383. package/dist/chunks/messages-CzW0fnvJ2.cjs +0 -1
  384. package/dist/chunks/messages-D2BWvpXy.cjs +0 -1
  385. package/dist/chunks/messages-D2jPVYje2.cjs +0 -1
  386. package/dist/chunks/messages-D8DMxR-v2.cjs +0 -1
  387. package/dist/chunks/messages-DAF4iFuz.cjs +0 -1
  388. package/dist/chunks/messages-DJpBxc3X.cjs +0 -1
  389. package/dist/chunks/messages-DJqLD3KO.cjs +0 -1
  390. package/dist/chunks/messages-DSFJ_vqv.cjs +0 -1
  391. package/dist/chunks/messages-DW0CLNsD.cjs +0 -1
  392. package/dist/chunks/messages-DZFhIff62.cjs +0 -1
  393. package/dist/chunks/messages-Dd56p0Kf.cjs +0 -1
  394. package/dist/chunks/messages-DigHfTmz.cjs +0 -1
  395. package/dist/chunks/messages-DkuidYgG.cjs +0 -1
  396. package/dist/chunks/messages-DoZqsswJ.cjs +0 -1
  397. package/dist/chunks/messages-DvmpvSeR.cjs +0 -1
  398. package/dist/chunks/messages-Dvurigo8.cjs +0 -1
  399. package/dist/chunks/messages-Dx16KgRk2.cjs +0 -1
  400. package/dist/chunks/messages-EjezcPS22.cjs +0 -1
  401. package/dist/chunks/messages-EsgioDiN.cjs +0 -1
  402. package/dist/chunks/messages-cDH-bKpE.cjs +0 -1
  403. package/dist/chunks/messages-lhqD_WQA.cjs +0 -1
  404. package/dist/chunks/messages-xndoTJ282.cjs +0 -1
  405. package/dist/chunks/tools-I_BZLnbG.cjs +0 -208
  406. /package/dist/chunks/{am-B37aLxvu.cjs → am-BA02TqF9.cjs} +0 -0
  407. /package/dist/chunks/{am-D7yfVqJS.mjs → am-C9_6r8HY.mjs} +0 -0
  408. /package/dist/chunks/{ar-D00SixXA.mjs → ar-BM96nSXF.mjs} +0 -0
  409. /package/dist/chunks/{ar-ySo_KDqd.cjs → ar-CB4IsGCa.cjs} +0 -0
  410. /package/dist/chunks/{az-BmIwKcoq.mjs → az-DnZSY5ok.mjs} +0 -0
  411. /package/dist/chunks/{az-nCoWuGBd.cjs → az-FykE_aDi.cjs} +0 -0
  412. /package/dist/chunks/{bg-BTZaB21W.mjs → bg-BplUvPeX.mjs} +0 -0
  413. /package/dist/chunks/{bg-BKB8_J3v.cjs → bg-D6r90gqH.cjs} +0 -0
  414. /package/dist/chunks/{bn-BQiBKtpR.cjs → bn-B7w2dbK4.cjs} +0 -0
  415. /package/dist/chunks/{bn-BVpf0XL6.mjs → bn-CdP9lnfr.mjs} +0 -0
  416. /package/dist/chunks/{bs-BSz4cPth.mjs → bs-BtX-qLsk.mjs} +0 -0
  417. /package/dist/chunks/{bs-D_lekdEb.cjs → bs-DztHHorM.cjs} +0 -0
  418. /package/dist/chunks/{cs-Dv8Jg_Fa.cjs → cs-CLMsCdIt.cjs} +0 -0
  419. /package/dist/chunks/{cs-p5s4GudH.mjs → cs-NcDYS-aU.mjs} +0 -0
  420. /package/dist/chunks/{da-BqJa8BMd.mjs → da-ANg6gK3-.mjs} +0 -0
  421. /package/dist/chunks/{da-D33rjz-t.cjs → da-sJ7EsHcO.cjs} +0 -0
  422. /package/dist/chunks/{de-BDDktkfI.mjs → de-CTxvRxuE.mjs} +0 -0
  423. /package/dist/chunks/{de-I8YFq0Ej.cjs → de-CxMqLKhy.cjs} +0 -0
  424. /package/dist/chunks/{el-BInM0nQo.cjs → el-Bg6QXLt5.cjs} +0 -0
  425. /package/dist/chunks/{el-R63G08P0.mjs → el-CgOoJaXB.mjs} +0 -0
  426. /package/dist/chunks/{es-Cj_AHhb9.cjs → es-7zUbslPJ.cjs} +0 -0
  427. /package/dist/chunks/{es-BleH_dHg.mjs → es-D5YDFRu-.mjs} +0 -0
  428. /package/dist/chunks/{et-BuISCVFl.mjs → et-57a7ees8.mjs} +0 -0
  429. /package/dist/chunks/{et-BkMzN_qG.cjs → et-D_rhRdDD.cjs} +0 -0
  430. /package/dist/chunks/{fa-CI9f3My0.mjs → fa-Dp_BXnBP.mjs} +0 -0
  431. /package/dist/chunks/{fa-C3VQIfEJ.cjs → fa-JBr2zsfI.cjs} +0 -0
  432. /package/dist/chunks/{fi-p8xxtchQ.cjs → fi-DjbYN6MA.cjs} +0 -0
  433. /package/dist/chunks/{fi-C0_Jyps9.mjs → fi-at45xjOS.mjs} +0 -0
  434. /package/dist/chunks/{fil-BZsJ4YZG.mjs → fil-D_HT2vGt.mjs} +0 -0
  435. /package/dist/chunks/{fil-DC8VTmfd.cjs → fil-dcVBIQoi.cjs} +0 -0
  436. /package/dist/chunks/{fr-BjeioA2N.mjs → fr-ByR9PLTE.mjs} +0 -0
  437. /package/dist/chunks/{fr-Cbstr5ii.cjs → fr-Ch4zj1rM.cjs} +0 -0
  438. /package/dist/chunks/{gu-DpPoUPem.cjs → gu-CoLW5Saq.cjs} +0 -0
  439. /package/dist/chunks/{gu-CNi9WnhQ.mjs → gu-CvfPvH3Y.mjs} +0 -0
  440. /package/dist/chunks/{he-Rlv-PVKK.cjs → he-2wS2DK0D.cjs} +0 -0
  441. /package/dist/chunks/{he-bU_Id5XQ.mjs → he-Bmqypvkq.mjs} +0 -0
  442. /package/dist/chunks/{hi-CYYjJgoQ.mjs → hi-DbcN0x64.mjs} +0 -0
  443. /package/dist/chunks/{hi-CfLaLKZL.cjs → hi-f4gshON3.cjs} +0 -0
  444. /package/dist/chunks/{hr-CerKCstu.mjs → hr-D5mydeyn.mjs} +0 -0
  445. /package/dist/chunks/{hr-B6eFd_4M.cjs → hr-DMExeWwd.cjs} +0 -0
  446. /package/dist/chunks/{hu-DQcisouf.cjs → hu-COmlHkse.cjs} +0 -0
  447. /package/dist/chunks/{hu-DNYoHMic.mjs → hu-DVCPn8un.mjs} +0 -0
  448. /package/dist/chunks/{hy-x9QOWTT6.cjs → hy-BoBSSiJc.cjs} +0 -0
  449. /package/dist/chunks/{hy-N0XBqVv_.mjs → hy-CP6oqcK_.mjs} +0 -0
  450. /package/dist/chunks/{id-dmUIQB07.mjs → id-COwan-Bb.mjs} +0 -0
  451. /package/dist/chunks/{id-G7ASv812.cjs → id-Dk2AQ6-R.cjs} +0 -0
  452. /package/dist/chunks/{it-DXDwm7Aj.cjs → it-BCmU3zOg.cjs} +0 -0
  453. /package/dist/chunks/{it-G9Rg2LaN.mjs → it-DJqN-zLs.mjs} +0 -0
  454. /package/dist/chunks/{ja-C1Nou_k5.mjs → ja-CvoLNAXS.mjs} +0 -0
  455. /package/dist/chunks/{ja-DHMurrnk.cjs → ja-DcMqJvnV.cjs} +0 -0
  456. /package/dist/chunks/{ka-P0_q1_oW.cjs → ka-BdyjQFkv.cjs} +0 -0
  457. /package/dist/chunks/{ka-9rtmTdhq.mjs → ka-BsqbDXqr.mjs} +0 -0
  458. /package/dist/chunks/{km-DedsOdPY.cjs → km-BShH0mB9.cjs} +0 -0
  459. /package/dist/chunks/{km-T8J0lGcC.mjs → km-C9FxSKv0.mjs} +0 -0
  460. /package/dist/chunks/{kn-CMb5Cv2d.mjs → kn-BKTm-E-A.mjs} +0 -0
  461. /package/dist/chunks/{kn-CAGP6H3x.cjs → kn-bNx6e6NK.cjs} +0 -0
  462. /package/dist/chunks/{ko-DulVmkjC.mjs → ko-BLEDr4t_.mjs} +0 -0
  463. /package/dist/chunks/{ko-3D0kPtnu.cjs → ko-LmGjEODJ.cjs} +0 -0
  464. /package/dist/chunks/{ku-BYzD3GnU.cjs → ku-BekLwcHQ.cjs} +0 -0
  465. /package/dist/chunks/{ku-C5mlSVfC.mjs → ku-DGpIv9vX.mjs} +0 -0
  466. /package/dist/chunks/{lo-Cw2hfj84.mjs → lo-C3wsS73b.mjs} +0 -0
  467. /package/dist/chunks/{lo-D9ixPNJD.cjs → lo-YgZPFD63.cjs} +0 -0
  468. /package/dist/chunks/{lt-CzfEJdVd.cjs → lt-CIvBJk2h.cjs} +0 -0
  469. /package/dist/chunks/{lt-Ceg9NAdI.mjs → lt-DWWjfR4Z.mjs} +0 -0
  470. /package/dist/chunks/{lv-DWyBbTHI.cjs → lv-B6Djmvjl.cjs} +0 -0
  471. /package/dist/chunks/{lv-3CXzQoic.mjs → lv-D4nb-9oK.mjs} +0 -0
  472. /package/dist/chunks/{mk-CEbNT0Oe.mjs → mk-BPUvDORf.mjs} +0 -0
  473. /package/dist/chunks/{mk-Anl5AUSU.cjs → mk-Ck56Emvp.cjs} +0 -0
  474. /package/dist/chunks/{ml-B1QmnbTX.cjs → ml-DsibsgSA.cjs} +0 -0
  475. /package/dist/chunks/{ml-DaF_zn1h.mjs → ml-qo0n1JHs.mjs} +0 -0
  476. /package/dist/chunks/{mn-DLpgZmIl.mjs → mn-BAQnLAOv.mjs} +0 -0
  477. /package/dist/chunks/{mn-DM3AWPQI.cjs → mn-Db0fVNYE.cjs} +0 -0
  478. /package/dist/chunks/{mr-CPCMiBsx.cjs → mr-BTz5VL4u.cjs} +0 -0
  479. /package/dist/chunks/{mr-C-d3CWSD.mjs → mr-CFEPrQYy.mjs} +0 -0
  480. /package/dist/chunks/{ms-D3Zil5Dz.mjs → ms-C9p2_6EB.mjs} +0 -0
  481. /package/dist/chunks/{ms-BKg5zJ6g.cjs → ms-ItzWfmiu.cjs} +0 -0
  482. /package/dist/chunks/{my-HzQdQq6H.mjs → my-BQhcHK_d.mjs} +0 -0
  483. /package/dist/chunks/{my-BhrbZPAE.cjs → my-Bq1EPoFX.cjs} +0 -0
  484. /package/dist/chunks/{ne-Dw6kUPkS.mjs → ne-Cf4GpHyI.mjs} +0 -0
  485. /package/dist/chunks/{ne-BsEUv3Vp.cjs → ne-Mog3kAWt.cjs} +0 -0
  486. /package/dist/chunks/{nl-D8QQ6wmJ.mjs → nl-7DE7AKK5.mjs} +0 -0
  487. /package/dist/chunks/{nl-C1jFx32v.cjs → nl-Do9Y1u3F.cjs} +0 -0
  488. /package/dist/chunks/{no-BWEOGeAo.cjs → no-DNuo9wW6.cjs} +0 -0
  489. /package/dist/chunks/{no-Rg2uuKdV.mjs → no-J4jj2fW7.mjs} +0 -0
  490. /package/dist/chunks/{notifier-CEnelp-K.mjs → notifier-BDNwSr07.mjs} +0 -0
  491. /package/dist/chunks/{notifier-BOB8o7IG.cjs → notifier-BW5H3Ctc.cjs} +0 -0
  492. /package/dist/chunks/{pa-BitCteAA.cjs → pa-BVCDv2EV.cjs} +0 -0
  493. /package/dist/chunks/{pa-BSwIZvA0.mjs → pa-DMuUOUxa.mjs} +0 -0
  494. /package/dist/chunks/{pl-CbCrHaA6.cjs → pl-Ct8v4d8V.cjs} +0 -0
  495. /package/dist/chunks/{pl-FhXomIGp.mjs → pl-DIZm5XzV.mjs} +0 -0
  496. /package/dist/chunks/{ps-4sPZuv3g.cjs → ps-DT4DAHOy.cjs} +0 -0
  497. /package/dist/chunks/{ps-BoBtbrB6.mjs → ps-X3--6pS3.mjs} +0 -0
  498. /package/dist/chunks/{pt-BYA5NOw_.mjs → pt-BMT2BIpj.mjs} +0 -0
  499. /package/dist/chunks/{pt-CSzjho-V.cjs → pt-Dwe6Dinw.cjs} +0 -0
  500. /package/dist/chunks/{ro-C9tN3AFF.cjs → ro-CoHEUo3b.cjs} +0 -0
  501. /package/dist/chunks/{ro-mtobtMpD.mjs → ro-Ndh2J4Fv.mjs} +0 -0
  502. /package/dist/chunks/{ru-B791LPq3.mjs → ru-DEoON4H0.mjs} +0 -0
  503. /package/dist/chunks/{ru-BYPO5wNO.cjs → ru-Pmgo28Kt.cjs} +0 -0
  504. /package/dist/chunks/{sd-C8ngG92I.mjs → sd-B46KwBlt.mjs} +0 -0
  505. /package/dist/chunks/{sd-BWuglgs_.cjs → sd-DxSmw84d.cjs} +0 -0
  506. /package/dist/chunks/{si-C_q8DxVt.mjs → si-CEX6-_X4.mjs} +0 -0
  507. /package/dist/chunks/{si-IX2P_DGB.cjs → si-attpuQg-.cjs} +0 -0
  508. /package/dist/chunks/{sk-HJJlM9uq.mjs → sk-Crsvi9aQ.mjs} +0 -0
  509. /package/dist/chunks/{sk-CxtyIOlr.cjs → sk-CvkpO0ti.cjs} +0 -0
  510. /package/dist/chunks/{sl-CPjYG80u.cjs → sl-BT19lhkA.cjs} +0 -0
  511. /package/dist/chunks/{sl-kB1f5rPn.mjs → sl-Cqe1IKhE.mjs} +0 -0
  512. /package/dist/chunks/{sq-CD0W0D6z.mjs → sq-BOQb1hx9.mjs} +0 -0
  513. /package/dist/chunks/{sq-Do6UyHn9.cjs → sq-rY2-arjV.cjs} +0 -0
  514. /package/dist/chunks/{sr-lLJu9TsT.mjs → sr-WVqhi-MV.mjs} +0 -0
  515. /package/dist/chunks/{sr-BcyT-MWS.cjs → sr-jnkxoHkR.cjs} +0 -0
  516. /package/dist/chunks/{sv-Bsz7ersx.cjs → sv-BiWSYdw7.cjs} +0 -0
  517. /package/dist/chunks/{sv-C3GL-a0k.mjs → sv-cjssSK3x.mjs} +0 -0
  518. /package/dist/chunks/{sw-D6-DZ14-.mjs → sw-BNNAgQNn.mjs} +0 -0
  519. /package/dist/chunks/{sw-CUElHZxL.cjs → sw-DFyk62c4.cjs} +0 -0
  520. /package/dist/chunks/{ta-D0DQba-y.cjs → ta-DowDx1bh.cjs} +0 -0
  521. /package/dist/chunks/{ta-BZy78kBk.mjs → ta-jg4mBsL9.mjs} +0 -0
  522. /package/dist/chunks/{te-vigCVKdg.mjs → te-BiLupA2T.mjs} +0 -0
  523. /package/dist/chunks/{te-DPMvJyXg.cjs → te-G0buJU1V.cjs} +0 -0
  524. /package/dist/chunks/{th-DtcrIt9J.cjs → th-DsjA6OWh.cjs} +0 -0
  525. /package/dist/chunks/{th-CGc0RLWB.mjs → th-Dtb_u833.mjs} +0 -0
  526. /package/dist/chunks/{tr-Cgkf5aJo.mjs → tr-01MbT9-l.mjs} +0 -0
  527. /package/dist/chunks/{tr-BrEFaVNA.cjs → tr-DN1xdxQn.cjs} +0 -0
  528. /package/dist/chunks/{ug-BVK7qBs4.mjs → ug-BFlA2VRZ.mjs} +0 -0
  529. /package/dist/chunks/{ug-CqZXfhXi.cjs → ug-DEJ9cNGH.cjs} +0 -0
  530. /package/dist/chunks/{uk-DgReWEge.cjs → uk-Bv6aB1Nd.cjs} +0 -0
  531. /package/dist/chunks/{uk-CSPaCalw.mjs → uk-DY7rBPyo.mjs} +0 -0
  532. /package/dist/chunks/{ur-ByrwJnY1.cjs → ur-C3CFfx9s.cjs} +0 -0
  533. /package/dist/chunks/{ur-VpFFsATs.mjs → ur-DHfULZeF.mjs} +0 -0
  534. /package/dist/chunks/{vi-CWQtvATS.mjs → vi-BFuaq2Tk.mjs} +0 -0
  535. /package/dist/chunks/{vi-lUD3w7gP.cjs → vi-DQrrRkmq.cjs} +0 -0
  536. /package/dist/chunks/{zh-fSp1qOne.cjs → zh-5rdSdLkR.cjs} +0 -0
  537. /package/dist/chunks/{zh-akJj2cdF.mjs → zh-BGpl7x7W.mjs} +0 -0
@@ -0,0 +1,1221 @@
1
+
2
+ /* =================================================
3
+ Video block tool
4
+
5
+ Airbnb-grade media frame: generous radius, a soft resting shadow that
6
+ lifts the player off the page, refined caption typography, and a dark
7
+ floating toolbar that mirrors the Image block chrome for product
8
+ cohesion. The native `<video controls>` bar is intentional — we render a
9
+ real HTML5 player, not custom JS controls.
10
+ ================================================= */
11
+ [data-blok-tool="video"] {
12
+ position: relative;
13
+ margin: var(--blok-space-2-5) 0;
14
+ }
15
+ [data-blok-tool="video"][data-align="left"] { text-align: left; }
16
+ [data-blok-tool="video"][data-align="center"] { text-align: center; }
17
+ [data-blok-tool="video"][data-align="right"] { text-align: right; }
18
+
19
+ /* figure wrapper — shrinks to the player, anchors the toolbar + handles */
20
+ [data-blok-tool="video"] .blok-video-inner {
21
+ display: inline-block;
22
+ position: relative;
23
+ max-width: 100%;
24
+ vertical-align: top;
25
+ }
26
+
27
+ /* media box — hugs the player, rounds + clips the overlaid chrome, casts the
28
+ soft resting shadow that lifts the player off the page */
29
+ [data-blok-tool="video"] .blok-video-media {
30
+ position: relative;
31
+ border-radius: var(--blok-radius-lg);
32
+ overflow: hidden;
33
+ background: var(--blok-video-stage);
34
+ box-shadow: var(--blok-image-shadow-resting);
35
+ transition: box-shadow 160ms cubic-bezier(0.2, 0.8, 0.2, 1);
36
+ }
37
+ [data-blok-tool="video"] .blok-video-inner:hover .blok-video-media {
38
+ box-shadow: var(--blok-video-shadow-hover);
39
+ }
40
+ [data-blok-tool="video"][data-selected="true"] .blok-video-media {
41
+ box-shadow:
42
+ 0 0 0 2px var(--blok-color-accent),
43
+ 0 0 0 4px color-mix(in srgb, var(--blok-color-accent) 20%, transparent);
44
+ }
45
+ [data-blok-tool="video"] .blok-video-media video {
46
+ display: block;
47
+ width: 100%;
48
+ height: auto;
49
+ background: var(--blok-video-stage);
50
+ outline: none;
51
+ }
52
+
53
+ /* Block-selection highlight: paint the figure box only, not the full zone. */
54
+ [data-blok-element-content].bg-selection:has([data-blok-tool="video"]) {
55
+ background-color: transparent;
56
+ }
57
+ [data-blok-element-content].bg-selection:has([data-blok-tool="video"]) .blok-video-inner {
58
+ background-color: var(--blok-selection);
59
+ border-radius: var(--blok-space-1);
60
+ }
61
+
62
+ /* ----- caption ----- */
63
+ [data-blok-tool="video"] .blok-video-caption-row {
64
+ display: flex;
65
+ align-items: flex-start;
66
+ gap: var(--blok-space-2);
67
+ }
68
+ [data-blok-tool="video"] .blok-video-caption {
69
+ flex: 1 1 auto;
70
+ min-width: 0;
71
+ display: block;
72
+ margin-top: var(--blok-space-2);
73
+ font-size: 13.5px;
74
+ color: var(--blok-text-secondary);
75
+ line-height: 1.5;
76
+ outline: none;
77
+ min-height: 1em;
78
+ }
79
+ [data-blok-tool="video"] .blok-video-caption[contenteditable="true"]:empty::before {
80
+ content: attr(data-placeholder);
81
+ color: var(--blok-text-tertiary);
82
+ }
83
+ [data-blok-tool="video"][data-caption="off"] .blok-video-caption-row,
84
+ [data-blok-tool="video"][data-caption="off"] .blok-video-caption { display: none; }
85
+
86
+ /* Only the rendered state carries a player; hide caption otherwise. */
87
+ [data-blok-tool="video"]:not([data-state="rendered"]) .blok-video-caption-row { display: none; }
88
+
89
+ /* ----- fullscreen — strip the editor chrome down to the playback bar -----
90
+ Native fullscreen promotes the whole figure, dragging the caption row and
91
+ resize pills into the viewing surface. Neither belongs in a fullscreen
92
+ player, so hide them and leave only the playback controls. */
93
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] .blok-video-caption-row,
94
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] [data-role="resize-handle"] {
95
+ display: none;
96
+ }
97
+
98
+ /* The figure fills the screen (UA :fullscreen); centre the player inside it so
99
+ a clip that doesn't match the screen aspect is letterboxed on all sides
100
+ instead of pinned to the top-left. The media box fills the figure and the
101
+ <video> keeps its UA object-fit:contain, which centres + letterboxes the
102
+ frame within that box. */
103
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] {
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ background: var(--blok-video-stage);
108
+ /* Beat the inline width:N% a resized player carries — otherwise a clip scaled
109
+ down in the page would only fill a fraction of the screen in fullscreen. */
110
+ width: 100% !important;
111
+ height: 100%;
112
+ }
113
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] .blok-video-media {
114
+ width: 100%;
115
+ height: 100%;
116
+ border-radius: 0;
117
+ box-shadow: none;
118
+ }
119
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] .blok-video-media video {
120
+ height: 100%;
121
+ }
122
+
123
+ /* Fullscreen title bar — the caption surfaced at the top of the immersive
124
+ surface (YouTube-style), fading together with the bottom control bar. Lives
125
+ inside the controls overlay; `hidden` keeps it out of the inline player. */
126
+ [data-blok-tool="video"] .blok-video-controls__title {
127
+ position: absolute;
128
+ top: 0; left: 0; right: 0;
129
+ padding: var(--blok-space-4) var(--blok-space-5) var(--blok-space-6);
130
+ background: linear-gradient(to bottom, var(--blok-video-scrim-strong) 0%, var(--blok-video-scrim-mid) 55%, transparent 100%);
131
+ color: var(--blok-video-control-fg);
132
+ font-size: 18px;
133
+ font-weight: 600;
134
+ line-height: 1.3;
135
+ letter-spacing: -0.01em;
136
+ text-align: left;
137
+ pointer-events: none;
138
+ opacity: 0;
139
+ transform: translateY(-6px);
140
+ transition: opacity 160ms ease, transform 160ms ease;
141
+ z-index: 1;
142
+ }
143
+ [data-blok-tool="video"] .blok-video-inner:hover .blok-video-controls__title,
144
+ [data-blok-tool="video"] .blok-video-controls:focus-within .blok-video-controls__title,
145
+ [data-blok-tool="video"] .blok-video-inner:not([data-playing="true"]) .blok-video-controls__title {
146
+ opacity: 1;
147
+ transform: translateY(0);
148
+ }
149
+ [data-blok-tool="video"] .blok-video-inner[data-controls-hidden="true"] .blok-video-controls__title {
150
+ opacity: 0;
151
+ transform: translateY(-6px);
152
+ pointer-events: none;
153
+ }
154
+
155
+ /* ----- resize handle — Notion-style pill straddling the edge ----- */
156
+ [data-blok-tool="video"] [data-role="resize-handle"] {
157
+ position: absolute;
158
+ top: 50%;
159
+ width: 6px;
160
+ height: clamp(24px, 25%, 50px);
161
+ background: var(--blok-handle-bg-default);
162
+ border: 1px solid var(--blok-handle-fg-default);
163
+ border-radius: var(--blok-radius-pill);
164
+ cursor: ew-resize;
165
+ opacity: 0;
166
+ transform: translateY(-50%) scale(1);
167
+ transform-origin: center;
168
+ transition:
169
+ opacity 120ms ease,
170
+ background-color 120ms ease,
171
+ transform 140ms cubic-bezier(0.2, 0.8, 0.2, 1);
172
+ z-index: 2;
173
+ }
174
+ [data-blok-tool="video"] [data-role="resize-handle"]::before {
175
+ content: '';
176
+ position: absolute;
177
+ inset: -8px -6px;
178
+ }
179
+ [data-blok-tool="video"] [data-role="resize-handle"][data-edge="left"] { left: 8px; }
180
+ [data-blok-tool="video"] [data-role="resize-handle"][data-edge="right"] { right: 8px; }
181
+ [data-blok-tool="video"] .blok-video-inner:hover [data-role="resize-handle"],
182
+ [data-blok-tool="video"][data-selected="true"] [data-role="resize-handle"],
183
+ [data-blok-tool="video"][data-settings-open="true"] [data-role="resize-handle"],
184
+ [data-blok-tool="video"][data-align-open="true"] [data-role="resize-handle"] {
185
+ opacity: 1;
186
+ }
187
+ [data-blok-tool="video"] [data-role="resize-handle"]:hover {
188
+ background: var(--blok-handle-bg-hover);
189
+ transform: translateY(-50%) scale(1.15);
190
+ }
191
+ [data-blok-tool="video"] [data-role="resize-handle"]:active {
192
+ background: var(--blok-handle-bg-active);
193
+ transform: translateY(-50%) scale(1.15);
194
+ transition-duration: 0s;
195
+ }
196
+
197
+ /* ----- error state — flat soft-danger callout (mirrors image error) ----- */
198
+ [data-blok-tool="video"] .blok-video-error-state {
199
+ padding: var(--blok-space-3);
200
+ background: color-mix(in srgb, var(--blok-color-danger) 6%, var(--blok-bg-secondary));
201
+ border: 1px solid color-mix(in srgb, var(--blok-color-danger) 18%, var(--blok-border-subtle));
202
+ border-radius: var(--blok-radius-lg);
203
+ display: flex; gap: var(--blok-space-3); align-items: center;
204
+ color: var(--blok-text-primary);
205
+ font-family: var(--blok-font-family, var(--blok-font-sans));
206
+ text-align: left;
207
+ }
208
+ [data-blok-tool="video"] .blok-video-retry {
209
+ margin-left: auto;
210
+ flex-shrink: 0;
211
+ appearance: none;
212
+ padding: var(--blok-space-1-5) var(--blok-space-3);
213
+ border-radius: var(--blok-radius-md);
214
+ border: 1px solid var(--blok-border-subtle);
215
+ background: var(--blok-bg-primary);
216
+ color: var(--blok-text-primary);
217
+ font-size: 12.5px;
218
+ font-weight: 600;
219
+ font-family: inherit;
220
+ cursor: pointer;
221
+ transition: background var(--blok-duration-base) ease, border-color var(--blok-duration-base) ease;
222
+ }
223
+ [data-blok-tool="video"] .blok-video-retry:hover {
224
+ background: var(--blok-bg-hover);
225
+ border-color: var(--blok-border-primary);
226
+ }
227
+ [data-blok-tool="video"] .blok-video-retry:focus-visible {
228
+ outline: none;
229
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--blok-color-accent) 40%, transparent);
230
+ }
231
+
232
+ /* =================================================
233
+ Custom player controls — Airbnb-inspired
234
+
235
+ Replaces native browser chrome with a bottom scrim + control bar (play/pause,
236
+ scrubber, time, volume, fullscreen) that fades in on hover. Clicking the
237
+ video toggles play/pause; a centre play disc shows while paused at the start.
238
+ White glyphs on a dark scrim, pill geometry, neutral white progress fill.
239
+ ================================================= */
240
+ [data-blok-tool="video"] .blok-video-controls {
241
+ --blok-seek-pct: 0%;
242
+ --blok-buffered-pct: 0%;
243
+ --blok-vol-pct: 100%;
244
+ --blok-speed-pct: 42.86%;
245
+ --blok-tooltip-x: 0%;
246
+ --blok-ctx-x: 50%;
247
+ --blok-ctx-y: 50%;
248
+ position: absolute;
249
+ inset: 0;
250
+ pointer-events: none;
251
+ font-family: var(--blok-font-family, var(--blok-font-sans));
252
+ }
253
+
254
+ /* the media reads as a play/pause surface */
255
+ [data-blok-tool="video"] .blok-video-media video { cursor: pointer; }
256
+
257
+ /* centre burst — a frosted disc that snaps the just-taken action's glyph into
258
+ the middle of the player and drifts out as a ring ripples past it, echoing the
259
+ tactile feedback of native players. Inert by default; the .is-active class
260
+ (re-applied per toggle) drives the one-shot animation. */
261
+ @keyframes blok-video-burst {
262
+ 0% { opacity: 0; transform: translate(-50%, -50%) scale(0.66); }
263
+ 18% { opacity: 1; transform: translate(-50%, -50%) scale(1.06); }
264
+ 36% { transform: translate(-50%, -50%) scale(0.98); }
265
+ 70% { opacity: 1; transform: translate(-50%, -50%) scale(1.02); }
266
+ 100% { opacity: 0; transform: translate(-50%, -50%) scale(1.16); }
267
+ }
268
+ /* the ripple: a hairline ring that radiates out from the disc and dissolves */
269
+ @keyframes blok-video-burst-ring {
270
+ 0% { opacity: 0.7; transform: scale(0.85); }
271
+ 60% { opacity: 0.28; }
272
+ 100% { opacity: 0; transform: scale(1.75); }
273
+ }
274
+ @keyframes blok-video-burst-glyph {
275
+ 0% { transform: scale(0.6); }
276
+ 55% { transform: scale(1.08); }
277
+ 100% { transform: scale(1); }
278
+ }
279
+ [data-blok-tool="video"] .blok-video-controls__burst {
280
+ position: absolute;
281
+ top: 50%; left: 50%;
282
+ width: 78px; height: 78px;
283
+ display: grid; place-items: center;
284
+ border-radius: var(--blok-radius-pill);
285
+ color: var(--blok-video-burst-fg);
286
+ background: var(--blok-video-burst-bg);
287
+ box-shadow: var(--blok-video-burst-shadow);
288
+ -webkit-backdrop-filter: blur(8px);
289
+ backdrop-filter: blur(8px);
290
+ opacity: 0;
291
+ transform: translate(-50%, -50%) scale(0.68);
292
+ pointer-events: none;
293
+ z-index: 1;
294
+ }
295
+ [data-blok-tool="video"] .blok-video-controls__burst::after {
296
+ content: '';
297
+ position: absolute;
298
+ inset: -1px;
299
+ border-radius: var(--blok-radius-pill);
300
+ border: 2px solid var(--blok-video-burst-ring);
301
+ opacity: 0;
302
+ }
303
+ [data-blok-tool="video"] .blok-video-controls__burst svg {
304
+ width: 34px; height: 34px;
305
+ /* keep the entrance pop crisp from the centre */
306
+ transform-origin: center;
307
+ }
308
+ /* nudge the play triangle to its optical centre */
309
+ [data-blok-tool="video"] .blok-video-controls__burst svg path:only-child { transform: translateX(1px); }
310
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active {
311
+ animation: blok-video-burst 560ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
312
+ }
313
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active::after {
314
+ animation: blok-video-burst-ring 540ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
315
+ }
316
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active svg {
317
+ animation: blok-video-burst-glyph 460ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
318
+ }
319
+
320
+ /* press-and-hold speed badge — a frosted "2×" pill that slides down from the top
321
+ edge while the user holds the video to scrub at double speed, then fades. Reuses
322
+ the burst frosting tokens for visual kinship with the centre flash. */
323
+ [data-blok-tool="video"] .blok-video-controls__speed {
324
+ position: absolute;
325
+ top: var(--blok-space-3); left: 50%;
326
+ display: inline-flex;
327
+ align-items: center;
328
+ gap: var(--blok-space-1);
329
+ padding: var(--blok-space-1) var(--blok-space-2-5);
330
+ border-radius: var(--blok-radius-pill);
331
+ color: var(--blok-video-burst-fg);
332
+ background: var(--blok-video-burst-bg);
333
+ box-shadow: var(--blok-video-burst-shadow);
334
+ -webkit-backdrop-filter: blur(8px);
335
+ backdrop-filter: blur(8px);
336
+ font-size: 12px;
337
+ font-weight: 600;
338
+ font-variant-numeric: tabular-nums;
339
+ letter-spacing: 0.02em;
340
+ opacity: 0;
341
+ transform: translate(-50%, -8px);
342
+ pointer-events: none;
343
+ z-index: 1;
344
+ transition: opacity 140ms ease, transform 140ms ease;
345
+ }
346
+ [data-blok-tool="video"] .blok-video-controls__speed svg {
347
+ width: 14px;
348
+ height: 14px;
349
+ display: block;
350
+ }
351
+ [data-blok-tool="video"] .blok-video-controls__speed.is-active {
352
+ opacity: 1;
353
+ transform: translate(-50%, 0);
354
+ }
355
+
356
+ /* arrow-key seek indicator — a frosted pill that flashes in from the matching
357
+ edge (rewind ← left, skip → right) when the user nudges playback 5s. Reuses
358
+ the burst frosting tokens. Inert until the .is-active class re-arms the side
359
+ keyframe. The pill slides in with a slight inward overshoot, holds, then
360
+ drifts back out toward its edge; the glyph marquees in the seek direction to
361
+ sell the motion. */
362
+ @keyframes blok-video-seek-flash-back {
363
+ 0% { opacity: 0; transform: translate(-16px, -50%) scale(0.9); }
364
+ 18% { opacity: 1; transform: translate(3px, -50%) scale(1.03); }
365
+ 32% { transform: translate(0, -50%) scale(1); }
366
+ 64% { opacity: 1; transform: translate(0, -50%) scale(1); }
367
+ 100% { opacity: 0; transform: translate(-18px, -50%) scale(0.95); }
368
+ }
369
+ @keyframes blok-video-seek-flash-forward {
370
+ 0% { opacity: 0; transform: translate(16px, -50%) scale(0.9); }
371
+ 18% { opacity: 1; transform: translate(-3px, -50%) scale(1.03); }
372
+ 32% { transform: translate(0, -50%) scale(1); }
373
+ 64% { opacity: 1; transform: translate(0, -50%) scale(1); }
374
+ 100% { opacity: 0; transform: translate(18px, -50%) scale(0.95); }
375
+ }
376
+ /* glyph marquee — the triangles drift in the seek direction and ease back, run
377
+ a couple of times within the pill's life to read as fast motion */
378
+ @keyframes blok-video-seek-glyph-back {
379
+ 0%, 100% { transform: translateX(2px); opacity: 0.8; }
380
+ 50% { transform: translateX(-3px); opacity: 1; }
381
+ }
382
+ @keyframes blok-video-seek-glyph-forward {
383
+ 0%, 100% { transform: translateX(-2px); opacity: 0.8; }
384
+ 50% { transform: translateX(3px); opacity: 1; }
385
+ }
386
+ [data-blok-tool="video"] .blok-video-controls__seek-flash {
387
+ position: absolute;
388
+ top: 50%;
389
+ display: inline-flex;
390
+ align-items: center;
391
+ gap: var(--blok-space-1);
392
+ padding: var(--blok-space-1-5) var(--blok-space-3);
393
+ border-radius: var(--blok-radius-pill);
394
+ color: var(--blok-video-burst-fg);
395
+ background: var(--blok-video-burst-bg);
396
+ box-shadow: var(--blok-video-burst-shadow);
397
+ -webkit-backdrop-filter: blur(8px);
398
+ backdrop-filter: blur(8px);
399
+ font-size: 12px;
400
+ font-weight: 600;
401
+ font-variant-numeric: tabular-nums;
402
+ letter-spacing: 0.02em;
403
+ opacity: 0;
404
+ pointer-events: none;
405
+ z-index: 1;
406
+ }
407
+ [data-blok-tool="video"] .blok-video-controls__seek-flash svg { width: 16px; height: 16px; display: block; }
408
+ [data-blok-tool="video"] .blok-video-controls__seek-flash[data-side="back"] {
409
+ left: var(--blok-space-5);
410
+ transform: translate(-10px, -50%);
411
+ }
412
+ [data-blok-tool="video"] .blok-video-controls__seek-flash[data-side="forward"] {
413
+ right: var(--blok-space-5);
414
+ transform: translate(10px, -50%);
415
+ }
416
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active[data-side="back"] {
417
+ animation: blok-video-seek-flash-back 720ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
418
+ }
419
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active[data-side="forward"] {
420
+ animation: blok-video-seek-flash-forward 720ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
421
+ }
422
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active[data-side="back"] svg {
423
+ animation: blok-video-seek-glyph-back 340ms ease-in-out 2;
424
+ }
425
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active[data-side="forward"] svg {
426
+ animation: blok-video-seek-glyph-forward 340ms ease-in-out 2;
427
+ }
428
+
429
+ /* bottom scrim + bar */
430
+ [data-blok-tool="video"] .blok-video-controls__bar {
431
+ position: absolute;
432
+ left: 0; right: 0; bottom: 0;
433
+ display: flex;
434
+ align-items: center;
435
+ gap: var(--blok-space-2-5);
436
+ padding: var(--blok-space-5) var(--blok-space-3) var(--blok-space-2-5);
437
+ background: linear-gradient(to top, var(--blok-video-scrim-strong) 0%, var(--blok-video-scrim-mid) 55%, transparent 100%);
438
+ pointer-events: auto;
439
+ opacity: 0;
440
+ transform: translateY(6px);
441
+ transition: opacity 160ms ease, transform 160ms ease;
442
+ }
443
+ [data-blok-tool="video"] .blok-video-inner:hover .blok-video-controls__bar,
444
+ [data-blok-tool="video"] .blok-video-controls:focus-within .blok-video-controls__bar,
445
+ [data-blok-tool="video"] .blok-video-inner:not([data-playing="true"]) .blok-video-controls__bar {
446
+ opacity: 1;
447
+ transform: translateY(0);
448
+ }
449
+
450
+ [data-blok-tool="video"] .blok-video-controls__btn {
451
+ flex-shrink: 0;
452
+ width: 32px; height: 32px;
453
+ display: grid; place-items: center;
454
+ color: var(--blok-video-control-fg);
455
+ background: transparent;
456
+ border: 0;
457
+ border-radius: var(--blok-radius-pill);
458
+ cursor: pointer;
459
+ transition: background 120ms ease, transform 120ms ease;
460
+ }
461
+ [data-blok-tool="video"] .blok-video-controls__btn:hover { background: var(--blok-video-control-bg-hover); }
462
+ [data-blok-tool="video"] .blok-video-controls__btn:active { transform: scale(0.92); }
463
+ [data-blok-tool="video"] .blok-video-controls__btn svg { width: 18px; height: 18px; }
464
+
465
+ [data-blok-tool="video"] .blok-video-controls__time {
466
+ flex-shrink: 0;
467
+ color: var(--blok-video-time-fg);
468
+ font-size: 12px;
469
+ font-weight: 500;
470
+ font-variant-numeric: tabular-nums;
471
+ letter-spacing: 0.01em;
472
+ user-select: none;
473
+ }
474
+
475
+ /* scrubber wrap — flex-grows; layers a base track, a buffered fill, the range
476
+ input (transparent track so the layers show through), and a hover tooltip */
477
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap {
478
+ position: relative;
479
+ flex: 1 1 auto;
480
+ min-width: 0;
481
+ display: flex;
482
+ align-items: center;
483
+ }
484
+ /* base (unbuffered) track behind everything */
485
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap::before {
486
+ content: "";
487
+ position: absolute;
488
+ left: 0; right: 0;
489
+ top: 50%;
490
+ transform: translateY(-50%);
491
+ height: 4px;
492
+ border-radius: var(--blok-radius-pill);
493
+ background: var(--blok-video-track);
494
+ transition: height 120ms ease;
495
+ }
496
+ /* buffered-ahead fill */
497
+ [data-blok-tool="video"] .blok-video-controls__buffered {
498
+ position: absolute;
499
+ left: 0;
500
+ top: 50%;
501
+ transform: translateY(-50%);
502
+ width: var(--blok-buffered-pct, 0%);
503
+ height: 4px;
504
+ border-radius: var(--blok-radius-pill);
505
+ background: var(--blok-video-buffered);
506
+ pointer-events: none;
507
+ transition: height 120ms ease;
508
+ }
509
+ /* scrubber — white elapsed fill, transparent track (layers show through) */
510
+ [data-blok-tool="video"] .blok-video-controls__seek {
511
+ position: relative;
512
+ flex: 1 1 auto;
513
+ min-width: 0;
514
+ height: 4px;
515
+ margin: 0;
516
+ -webkit-appearance: none;
517
+ appearance: none;
518
+ background: linear-gradient(
519
+ to right,
520
+ var(--blok-video-accent) var(--blok-seek-pct),
521
+ transparent var(--blok-seek-pct)
522
+ );
523
+ border-radius: var(--blok-radius-pill);
524
+ cursor: pointer;
525
+ outline: none;
526
+ }
527
+ /* the whole bar thickens on hover for an easier grab */
528
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap:hover::before,
529
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap:hover .blok-video-controls__buffered,
530
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap:hover .blok-video-controls__seek { height: 6px; }
531
+ /* hover time bubble */
532
+ [data-blok-tool="video"] .blok-video-controls__seek-tooltip {
533
+ position: absolute;
534
+ bottom: 100%;
535
+ left: var(--blok-tooltip-x, 0%);
536
+ transform: translateX(-50%);
537
+ margin-bottom: var(--blok-space-2);
538
+ display: flex;
539
+ flex-direction: column;
540
+ align-items: center;
541
+ gap: var(--blok-space-1);
542
+ padding: var(--blok-space-1);
543
+ border-radius: var(--blok-radius-sm);
544
+ background: var(--blok-video-burst-bg);
545
+ color: var(--blok-video-burst-fg);
546
+ box-shadow: var(--blok-video-burst-shadow);
547
+ font-size: 11px;
548
+ font-weight: 500;
549
+ font-variant-numeric: tabular-nums;
550
+ white-space: nowrap;
551
+ pointer-events: none;
552
+ opacity: 0;
553
+ transition: opacity 120ms ease;
554
+ }
555
+ [data-blok-tool="video"] .blok-video-controls__seek-tooltip[aria-hidden="false"] { opacity: 1; }
556
+ /* frame preview thumbnail — only shown once a frame has been painted */
557
+ [data-blok-tool="video"] .blok-video-controls__seek-thumb {
558
+ display: none;
559
+ width: 160px;
560
+ height: auto;
561
+ border-radius: var(--blok-radius-xs);
562
+ background: var(--blok-video-stage);
563
+ }
564
+ [data-blok-tool="video"] .blok-video-controls__seek-thumb[data-ready="true"] { display: block; }
565
+ /* the hidden source video that frames are grabbed from */
566
+ [data-blok-tool="video"] .blok-video-controls__preview-source {
567
+ position: absolute;
568
+ width: 0;
569
+ height: 0;
570
+ opacity: 0;
571
+ pointer-events: none;
572
+ }
573
+ [data-blok-tool="video"] .blok-video-controls__seek::-webkit-slider-thumb {
574
+ -webkit-appearance: none;
575
+ appearance: none;
576
+ width: 13px; height: 13px;
577
+ border-radius: var(--blok-radius-pill);
578
+ background: var(--blok-video-thumb);
579
+ box-shadow: var(--blok-video-thumb-shadow);
580
+ transition: transform 120ms ease;
581
+ }
582
+ [data-blok-tool="video"] .blok-video-controls__seek:hover::-webkit-slider-thumb { transform: scale(1.2); }
583
+ [data-blok-tool="video"] .blok-video-controls__seek::-moz-range-thumb {
584
+ width: 13px; height: 13px;
585
+ border: 0;
586
+ border-radius: var(--blok-radius-pill);
587
+ background: var(--blok-video-thumb);
588
+ box-shadow: var(--blok-video-thumb-shadow);
589
+ }
590
+ [data-blok-tool="video"] .blok-video-controls__seek:focus-visible {
591
+ box-shadow: 0 0 0 3px var(--blok-video-focus-ring);
592
+ }
593
+
594
+ /* volume — slider reveals on hover of the cluster */
595
+ [data-blok-tool="video"] .blok-video-controls__volume-wrap {
596
+ flex-shrink: 0;
597
+ display: flex;
598
+ align-items: center;
599
+ gap: var(--blok-space-1);
600
+ }
601
+ [data-blok-tool="video"] .blok-video-controls__volume {
602
+ width: 0;
603
+ height: 4px;
604
+ margin: 0;
605
+ -webkit-appearance: none;
606
+ appearance: none;
607
+ background: linear-gradient(
608
+ to right,
609
+ var(--blok-video-accent) var(--blok-vol-pct),
610
+ var(--blok-video-volume-track) var(--blok-vol-pct)
611
+ );
612
+ box-shadow: var(--blok-video-thumb-shadow);
613
+ border-radius: var(--blok-radius-pill);
614
+ opacity: 0;
615
+ cursor: pointer;
616
+ transition: width 160ms ease, opacity 160ms ease;
617
+ }
618
+ [data-blok-tool="video"] .blok-video-controls__volume-wrap:hover .blok-video-controls__volume,
619
+ [data-blok-tool="video"] .blok-video-controls__volume-wrap:focus-within .blok-video-controls__volume,
620
+ [data-blok-tool="video"] .blok-video-controls__volume:focus-visible {
621
+ width: 64px;
622
+ opacity: 1;
623
+ }
624
+ [data-blok-tool="video"] .blok-video-controls__volume::-webkit-slider-thumb {
625
+ -webkit-appearance: none;
626
+ appearance: none;
627
+ width: 11px; height: 11px;
628
+ border-radius: var(--blok-radius-pill);
629
+ background: var(--blok-video-thumb);
630
+ box-shadow: var(--blok-video-thumb-shadow);
631
+ }
632
+ [data-blok-tool="video"] .blok-video-controls__volume::-moz-range-thumb {
633
+ width: 11px; height: 11px;
634
+ border: 0;
635
+ border-radius: var(--blok-radius-pill);
636
+ background: var(--blok-video-thumb);
637
+ box-shadow: var(--blok-video-thumb-shadow);
638
+ }
639
+ /* mute glyph pops when the user flips audible↔muted */
640
+ @keyframes blok-video-mute-pop {
641
+ 0% { transform: scale(1); }
642
+ 35% { transform: scale(0.78); }
643
+ 100% { transform: scale(1); }
644
+ }
645
+ [data-blok-tool="video"] .blok-video-controls__btn[data-action="mute-toggle"].is-bumped svg {
646
+ animation: blok-video-mute-pop 260ms cubic-bezier(0.34, 1.56, 0.64, 1);
647
+ }
648
+
649
+ /* gear settings popover — speed / loop */
650
+ [data-blok-tool="video"] .blok-video-controls__menu-wrap {
651
+ position: relative;
652
+ flex-shrink: 0;
653
+ }
654
+ /* Frosted-glass settings card: a fixed-width pane whose height tweens between
655
+ views (set inline from JS), with a horizontal track that slides the main pane
656
+ out and the speed submenu in. The hairline border + saturated blur give it a
657
+ floating-glass edge that lifts it off the video. */
658
+ [data-blok-tool="video"] .blok-video-controls__menu {
659
+ position: absolute;
660
+ /* right/bottom set from JS (anchored to the gear); sits on the figure, outside the
661
+ media overflow clip, so it can spill out of a short player. */
662
+ width: 224px;
663
+ overflow: hidden;
664
+ padding: var(--blok-space-1-5);
665
+ border: 1px solid var(--blok-video-menu-border);
666
+ border-radius: var(--blok-radius-lg);
667
+ box-shadow: var(--blok-video-burst-shadow);
668
+ color: var(--blok-video-control-fg);
669
+ transform-origin: bottom right;
670
+ transition: height 320ms cubic-bezier(0.2, 0.85, 0.25, 1);
671
+ z-index: 3;
672
+ }
673
+ /* Frosted glass lives on a ::before so it is NOT on the same box as overflow: hidden —
674
+ backdrop-filter on the clipping element makes it drop the clip (a compositing
675
+ quirk), which leaked the off-screen speed pane beside the card. */
676
+ [data-blok-tool="video"] .blok-video-controls__menu::before {
677
+ content: "";
678
+ position: absolute;
679
+ inset: 0;
680
+ z-index: -1;
681
+ border-radius: inherit;
682
+ background: var(--blok-video-menu-bg);
683
+ -webkit-backdrop-filter: blur(22px) saturate(1.6);
684
+ backdrop-filter: blur(22px) saturate(1.6);
685
+ }
686
+ [data-blok-tool="video"] .blok-video-controls__menu[hidden] { display: none; }
687
+ @keyframes blok-video-menu-in {
688
+ from { opacity: 0; transform: translateY(8px) scale(0.94); }
689
+ to { opacity: 1; transform: translateY(0) scale(1); }
690
+ }
691
+ /* each speed row lifts into place — drives the staggered cascade on submenu entry.
692
+ Transform-only: the pane cross-fade (below) owns the opacity, so rows stay visible
693
+ and merely settle up — no fade-stacked-on-fade that left late rows pouring into an
694
+ already-full card. */
695
+ @keyframes blok-video-menu-rise {
696
+ from { transform: translateY(10px); }
697
+ to { transform: translateY(0); }
698
+ }
699
+ /* Entrance is motion only — honour reduced-motion by dropping the animation. */
700
+ @media (prefers-reduced-motion: no-preference) {
701
+ [data-blok-tool="video"] .blok-video-controls__menu {
702
+ animation: blok-video-menu-in 160ms cubic-bezier(0.2, 0.8, 0.2, 1);
703
+ }
704
+ }
705
+
706
+ /* the two panes ride a 200%-wide flex track; data-view slides it sideways */
707
+ [data-blok-tool="video"] .blok-video-controls__menu-track {
708
+ display: flex;
709
+ align-items: flex-start;
710
+ width: 200%;
711
+ /* Spring curve (control-point y > 1) overshoots the slide a touch, so the panes
712
+ land with a gentle settle instead of snapping flat to a stop. */
713
+ transition: transform 320ms cubic-bezier(0.32, 1.12, 0.4, 1);
714
+ }
715
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] .blok-video-controls__menu-track {
716
+ transform: translateX(-50%);
717
+ }
718
+ [data-blok-tool="video"] .blok-video-controls__menu-pane {
719
+ flex: 0 0 50%;
720
+ display: flex;
721
+ flex-direction: column;
722
+ /* Each pane recedes (shrinks + fades back) as it parks and pushes forward (grows
723
+ in) as it enters, so the view-switch reads as a layered depth swap rather than a
724
+ flat sideways slide. Opacity runs quicker than the transform so the outgoing pane
725
+ clears the seam before the slide settles — no double-stack of text mid-slide. */
726
+ opacity: 1;
727
+ transform: scale(1);
728
+ transition: opacity 200ms ease, transform 320ms cubic-bezier(0.32, 1.12, 0.4, 1);
729
+ }
730
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] [data-role="menu-main"],
731
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="main"] [data-role="menu-speed"] {
732
+ opacity: 0;
733
+ transform: scale(0.92);
734
+ }
735
+
736
+ /* a single tappable row — leading glyph + label left, value/chevron right */
737
+ [data-blok-tool="video"] .blok-video-controls__menu-row {
738
+ display: flex;
739
+ align-items: center;
740
+ gap: var(--blok-space-2);
741
+ width: 100%;
742
+ min-height: 34px;
743
+ padding: var(--blok-space-1-5) var(--blok-space-2-5);
744
+ border: 0;
745
+ border-radius: var(--blok-radius-md);
746
+ background: transparent;
747
+ color: inherit;
748
+ font-size: 13px;
749
+ font-weight: 500;
750
+ text-align: left;
751
+ cursor: pointer;
752
+ transition: background 120ms ease, transform 120ms ease;
753
+ }
754
+ [data-blok-tool="video"] .blok-video-controls__menu-row:hover { background: var(--blok-video-control-bg-hover); }
755
+ [data-blok-tool="video"] .blok-video-controls__menu-row:hover .blok-video-controls__menu-icon,
756
+ [data-blok-tool="video"] .blok-video-controls__menu-row:hover .blok-video-controls__menu-value,
757
+ [data-blok-tool="video"] .blok-video-controls__menu-row:hover .blok-video-controls__menu-chevron {
758
+ color: var(--blok-video-control-fg);
759
+ }
760
+ [data-blok-tool="video"] .blok-video-controls__menu-row:active { transform: scale(0.985); }
761
+ [data-blok-tool="video"] .blok-video-controls__menu-row:focus-visible {
762
+ outline: none;
763
+ background: var(--blok-video-control-bg-hover);
764
+ box-shadow: inset 0 0 0 1.5px var(--blok-video-focus-ring);
765
+ }
766
+ /* leading glyph — a scannable icon per setting; dims at rest, lifts on hover */
767
+ [data-blok-tool="video"] .blok-video-controls__menu-icon {
768
+ display: grid;
769
+ place-items: center;
770
+ flex-shrink: 0;
771
+ width: 18px;
772
+ height: 18px;
773
+ color: var(--blok-video-menu-icon);
774
+ transition: color 120ms ease;
775
+ }
776
+ [data-blok-tool="video"] .blok-video-controls__menu-icon svg { width: 18px; height: 18px; }
777
+ [data-blok-tool="video"] .blok-video-controls__menu-label {
778
+ flex: 1 1 auto;
779
+ min-width: 0;
780
+ }
781
+ /* current-value hint on the right of a main row (e.g. "Normal", "On") */
782
+ [data-blok-tool="video"] .blok-video-controls__menu-value {
783
+ flex-shrink: 0;
784
+ font-size: 12px;
785
+ font-weight: 500;
786
+ letter-spacing: 0.01em;
787
+ color: var(--blok-video-menu-value-fg);
788
+ font-variant-numeric: tabular-nums;
789
+ transition: color 120ms ease;
790
+ }
791
+ [data-blok-tool="video"] .blok-video-controls__menu-chevron {
792
+ display: grid;
793
+ place-items: center;
794
+ flex-shrink: 0;
795
+ width: 14px;
796
+ height: 14px;
797
+ margin-right: calc(-1 * var(--blok-space-1));
798
+ color: var(--blok-video-menu-icon);
799
+ transition: color 120ms ease;
800
+ }
801
+ [data-blok-tool="video"] .blok-video-controls__menu-chevron svg { width: 14px; height: 14px; }
802
+
803
+ /* speed submenu back header — set apart by weight + spacing; no border-radius override
804
+ so its hover stays a rounded pill, not a squared-off full-width band. */
805
+ [data-blok-tool="video"] .blok-video-controls__menu-back {
806
+ margin-bottom: var(--blok-space-1-5);
807
+ padding-left: var(--blok-space-1);
808
+ font-weight: 600;
809
+ }
810
+ [data-blok-tool="video"] .blok-video-controls__menu-back .blok-video-controls__menu-chevron { margin-right: 0; }
811
+
812
+ /* ===== Notion-style speed control: quiet readout + flat steppers + segmented presets ===== */
813
+ /* The live value, stated calmly (Notion never shouts a number); tabular so the card
814
+ width doesn't jitter as digits change. */
815
+ [data-blok-tool="video"] .blok-video-controls__speed-readout {
816
+ margin: var(--blok-space-1) 0 var(--blok-space-2);
817
+ font-size: 15px;
818
+ font-weight: 600;
819
+ line-height: 1;
820
+ letter-spacing: -0.01em;
821
+ text-align: center;
822
+ font-variant-numeric: tabular-nums;
823
+ color: var(--blok-video-control-fg);
824
+ }
825
+
826
+ /* − [slider] + — flat icon steppers (no filled discs) flank a flexible track */
827
+ [data-blok-tool="video"] .blok-video-controls__speed-slider-row {
828
+ display: flex;
829
+ align-items: center;
830
+ gap: var(--blok-space-1-5);
831
+ padding: 0;
832
+ }
833
+ [data-blok-tool="video"] .blok-video-controls__speed-step {
834
+ display: grid;
835
+ place-items: center;
836
+ flex-shrink: 0;
837
+ width: 26px;
838
+ height: 26px;
839
+ padding: 0;
840
+ border: 0;
841
+ border-radius: var(--blok-radius-md);
842
+ background: transparent;
843
+ color: var(--blok-video-menu-icon);
844
+ cursor: pointer;
845
+ transition: background 120ms ease, color 120ms ease, transform 120ms ease, opacity 120ms ease;
846
+ }
847
+ [data-blok-tool="video"] .blok-video-controls__speed-step:hover {
848
+ background: var(--blok-video-control-bg-hover);
849
+ color: var(--blok-video-control-fg);
850
+ }
851
+ [data-blok-tool="video"] .blok-video-controls__speed-step:active { transform: scale(0.92); }
852
+ [data-blok-tool="video"] .blok-video-controls__speed-step:disabled { opacity: 0.3; cursor: default; transform: none; }
853
+ [data-blok-tool="video"] .blok-video-controls__speed-step:focus-visible {
854
+ outline: none;
855
+ box-shadow: 0 0 0 1.5px var(--blok-video-focus-ring);
856
+ }
857
+ [data-blok-tool="video"] .blok-video-controls__speed-step svg { width: 16px; height: 16px; }
858
+
859
+ /* the continuous slider — a thin white elapsed fill + small knob on a faint track.
860
+ The fill gradient is JS-driven via --blok-speed-pct, exactly like the volume slider. */
861
+ [data-blok-tool="video"] .blok-video-controls__speed-slider {
862
+ flex: 1 1 auto;
863
+ min-width: 0;
864
+ height: 3px;
865
+ margin: 0;
866
+ -webkit-appearance: none;
867
+ appearance: none;
868
+ background: linear-gradient(
869
+ to right,
870
+ var(--blok-video-accent) var(--blok-speed-pct),
871
+ var(--blok-video-track) var(--blok-speed-pct)
872
+ );
873
+ border-radius: var(--blok-radius-pill);
874
+ cursor: pointer;
875
+ }
876
+ [data-blok-tool="video"] .blok-video-controls__speed-slider::-webkit-slider-thumb {
877
+ -webkit-appearance: none;
878
+ appearance: none;
879
+ width: 12px;
880
+ height: 12px;
881
+ border-radius: var(--blok-radius-pill);
882
+ background: var(--blok-video-thumb);
883
+ box-shadow: var(--blok-video-thumb-shadow);
884
+ transition: transform 120ms ease;
885
+ }
886
+ [data-blok-tool="video"] .blok-video-controls__speed-slider::-moz-range-thumb {
887
+ width: 12px;
888
+ height: 12px;
889
+ border: 0;
890
+ border-radius: var(--blok-radius-pill);
891
+ background: var(--blok-video-thumb);
892
+ box-shadow: var(--blok-video-thumb-shadow);
893
+ }
894
+ [data-blok-tool="video"] .blok-video-controls__speed-slider:active::-webkit-slider-thumb { transform: scale(1.2); }
895
+ [data-blok-tool="video"] .blok-video-controls__speed-slider:focus-visible { outline: none; }
896
+ [data-blok-tool="video"] .blok-video-controls__speed-slider:focus-visible::-webkit-slider-thumb {
897
+ box-shadow: var(--blok-video-thumb-shadow), 0 0 0 4px var(--blok-video-focus-ring);
898
+ }
899
+
900
+ /* preset rates float on the frosted glass like the menu rows — no filled track, no
901
+ raised card (those read as a foreign block against the airy list). Inactive labels
902
+ are muted; the active rate fills with the same subtle tint a row gets on hover. */
903
+ [data-blok-tool="video"] .blok-video-controls__speed-chips {
904
+ display: flex;
905
+ gap: var(--blok-space-1);
906
+ margin-top: var(--blok-space-2-5);
907
+ }
908
+ [data-blok-tool="video"] .blok-video-controls__speed-chip {
909
+ display: flex;
910
+ flex: 1 1 0;
911
+ flex-direction: column;
912
+ align-items: center;
913
+ justify-content: center;
914
+ gap: var(--blok-space-0-5);
915
+ min-width: 0;
916
+ min-height: 30px;
917
+ padding: var(--blok-space-1);
918
+ border: 0;
919
+ border-radius: var(--blok-radius-md);
920
+ background: transparent;
921
+ color: var(--blok-video-menu-value-fg);
922
+ font-size: 12px;
923
+ font-weight: 500;
924
+ font-variant-numeric: tabular-nums;
925
+ cursor: pointer;
926
+ transition: background 120ms ease, color 120ms ease, transform 120ms ease;
927
+ }
928
+ [data-blok-tool="video"] .blok-video-controls__speed-chip:hover {
929
+ background: var(--blok-video-control-bg-hover);
930
+ color: var(--blok-video-control-fg);
931
+ }
932
+ [data-blok-tool="video"] .blok-video-controls__speed-chip:active { transform: scale(0.96); }
933
+ [data-blok-tool="video"] .blok-video-controls__speed-chip:focus-visible {
934
+ outline: none;
935
+ box-shadow: inset 0 0 0 1.5px var(--blok-video-focus-ring);
936
+ }
937
+
938
+ /* Entering the speed submenu: the sections (back header → readout → slider → chips)
939
+ settle up in sequence as the card grows, instead of snapping in as one rigid block.
940
+ `backwards` holds the lowered position through the delay, then frees the transform so
941
+ each section's press-scale still works. The stagger is tight so the last section lands
942
+ as the height tween settles. Reduced-motion keeps the plain slide. */
943
+ @media (prefers-reduced-motion: no-preference) {
944
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] [data-role="menu-speed"] > * {
945
+ animation: blok-video-menu-rise 300ms cubic-bezier(0.2, 0.85, 0.25, 1) backwards;
946
+ }
947
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] [data-role="menu-speed"] > :nth-child(2) { animation-delay: 45ms; }
948
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] [data-role="menu-speed"] > :nth-child(3) { animation-delay: 90ms; }
949
+ [data-blok-tool="video"] .blok-video-controls__menu[data-view="speed"] [data-role="menu-speed"] > :nth-child(4) { animation-delay: 135ms; }
950
+ }
951
+
952
+ /* view-mode + gear toggles read as selected when active: a filled pill + accent tint */
953
+ [data-blok-tool="video"] .blok-video-controls__btn[data-action="gear"][aria-expanded="true"],
954
+ [data-blok-tool="video"] .blok-video-controls__btn[data-action="theater"][aria-pressed="true"],
955
+ [data-blok-tool="video"] .blok-video-controls__btn[data-action="picture-in-picture"][aria-pressed="true"] {
956
+ background: var(--blok-video-control-bg-active);
957
+ color: var(--blok-video-accent);
958
+ }
959
+
960
+ /* ambient glow — blurred frame sample bleeding out behind the player */
961
+ [data-blok-tool="video"] .blok-video-controls__ambient {
962
+ position: absolute;
963
+ inset: 0;
964
+ z-index: -1;
965
+ width: 100%;
966
+ height: 100%;
967
+ filter: blur(28px) saturate(1.5);
968
+ transform: scale(1.06);
969
+ /* glow is dark until the video plays; data-active fades it in, and dropping it
970
+ on pause fades the bloom back out instead of freezing the last frame */
971
+ opacity: 0;
972
+ transition: opacity 420ms ease;
973
+ pointer-events: none;
974
+ }
975
+ /* user-chosen glow intensity (block settings → Glow): more / less / minimal / none.
976
+ minimal is the default — a barely-there bloom that lifts the player off the page
977
+ without competing with the frame. */
978
+ [data-blok-tool="video"] .blok-video-controls__ambient[data-glow="minimal"][data-active="true"] { opacity: 0.3; }
979
+ [data-blok-tool="video"] .blok-video-controls__ambient[data-glow="less"][data-active="true"] { opacity: 0.55; }
980
+ [data-blok-tool="video"] .blok-video-controls__ambient[data-glow="more"][data-active="true"] { opacity: 0.85; }
981
+ [data-blok-tool="video"] .blok-video-controls__ambient[data-glow="none"] { display: none; }
982
+ [data-blok-tool="video"] .blok-video-controls__ambient[data-ambient="off"] { display: none; }
983
+
984
+ /* theater (cinema) — promote the player into the browser top layer (Popover
985
+ API) so it sits above every editor surface, lands dead-centre in the viewport
986
+ (fixed + inset:0 + margin:auto), and gets a real ::backdrop that dims the page
987
+ and light-dismisses on an outside click. !important only overrides
988
+ renderVideo's inline position/margin/width — it never mutates them, so the
989
+ saved width survives. The 100vmax box-shadow is the scrim fallback for
990
+ browsers without the Popover API; once promoted, ::backdrop owns the dimming. */
991
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] {
992
+ position: fixed !important;
993
+ inset: 0;
994
+ margin: auto !important;
995
+ width: min(92vw, 1200px) !important;
996
+ max-width: 92vw;
997
+ height: -moz-fit-content;
998
+ height: fit-content;
999
+ max-height: 94vh;
1000
+ /* reset the UA popover frame so the card centres on the video exactly and the
1001
+ caption (top:100%) isn't clipped. background:transparent kills the UA popover's
1002
+ white Canvas fill, which the rounded video now reveals as white corner slivers. */
1003
+ padding: 0;
1004
+ border: 0;
1005
+ background: transparent;
1006
+ overflow: visible;
1007
+ z-index: 2147483000;
1008
+ box-shadow:
1009
+ 0 0 0 100vmax var(--blok-video-theater-scrim),
1010
+ var(--blok-video-theater-shadow);
1011
+ transform-origin: center;
1012
+ }
1013
+ /* Popover-less fallback (no top layer): the card can't FLIP from its inline slot,
1014
+ so it rises + expands in place with an easeOutExpo settle. */
1015
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"]:not(:popover-open) {
1016
+ animation: blok-video-theater-in 360ms cubic-bezier(0.16, 1, 0.3, 1);
1017
+ }
1018
+ /* Promoted (top layer): the JS FLIP morphs the card from its inline rect into the
1019
+ centre, so no keyframe here — only shed the scrim fallback shadow. */
1020
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"]:popover-open {
1021
+ box-shadow: var(--blok-video-theater-shadow);
1022
+ }
1023
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"]:popover-open::backdrop {
1024
+ background: var(--blok-video-theater-scrim);
1025
+ -webkit-backdrop-filter: blur(4px);
1026
+ backdrop-filter: blur(4px);
1027
+ opacity: 1;
1028
+ /* the page dims to black like house lights going down, a touch behind the card */
1029
+ animation: blok-video-theater-curtain 300ms ease-out;
1030
+ }
1031
+ /* exit: the house lights come back up — the scrim fades out while the JS shrinks
1032
+ the card back into its inline slot, so the page is never revealed by a hard cut */
1033
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"][data-theater-leaving="true"]:popover-open::backdrop {
1034
+ animation: none;
1035
+ opacity: 0;
1036
+ transition: opacity 280ms ease;
1037
+ }
1038
+ @keyframes blok-video-theater-in {
1039
+ from { opacity: 0; transform: translateY(22px) scale(0.84); }
1040
+ 60% { opacity: 1; }
1041
+ to { opacity: 1; transform: translateY(0) scale(1); }
1042
+ }
1043
+ @keyframes blok-video-theater-curtain {
1044
+ from { opacity: 0; }
1045
+ to { opacity: 1; }
1046
+ }
1047
+ /* honour reduced-motion: snap in, no rise/zoom/curtain */
1048
+ @media (prefers-reduced-motion: reduce) {
1049
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"]:not(:popover-open),
1050
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"]:popover-open::backdrop {
1051
+ animation: none;
1052
+ }
1053
+ }
1054
+ /* the cinema card owns its own depth via the scrim — drop the resting page
1055
+ shadow, and shed the chrome that doesn't belong in a presentation view */
1056
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] .blok-video-media {
1057
+ box-shadow: none;
1058
+ }
1059
+ /* Pin the <video> to its own composited layer for the whole theater session.
1060
+ Otherwise Chromium paints it as a low-level hardware-overlay quad that doesn't
1061
+ follow the card's FLIP transform — it lingers at the inline slot for a frame or
1062
+ two, leaving a frozen "ghost" of the small video as the card morphs out. */
1063
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] .blok-video-media video {
1064
+ transform: translateZ(0);
1065
+ /* the composited layer escapes the media's overflow:hidden rounding, so round
1066
+ the <video> itself to keep the theater frame's corners soft */
1067
+ border-radius: var(--blok-radius-lg);
1068
+ }
1069
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] [data-role="resize-handle"],
1070
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] .blok-video-controls__ambient {
1071
+ display: none;
1072
+ }
1073
+ /* theater is a presentation view — drop the caption entirely so the centred box
1074
+ is the VIDEO itself and the frame lands exactly mid-viewport */
1075
+ [data-blok-tool="video"] .blok-video-inner[data-theater="true"] .blok-video-caption-row {
1076
+ display: none;
1077
+ }
1078
+
1079
+ /* centre play affordance — shown while paused at the start */
1080
+ [data-blok-tool="video"] .blok-video-controls__center {
1081
+ position: absolute;
1082
+ top: 50%; left: 50%;
1083
+ transform: translate(-50%, -50%);
1084
+ width: 64px; height: 64px;
1085
+ display: grid;
1086
+ place-items: center;
1087
+ border: 0;
1088
+ border-radius: var(--blok-radius-pill);
1089
+ background: var(--blok-video-burst-bg);
1090
+ color: var(--blok-video-burst-fg);
1091
+ box-shadow: var(--blok-video-burst-shadow);
1092
+ -webkit-backdrop-filter: blur(8px);
1093
+ backdrop-filter: blur(8px);
1094
+ cursor: pointer;
1095
+ pointer-events: auto;
1096
+ }
1097
+ [data-blok-tool="video"] .blok-video-controls__center[hidden] { display: none; }
1098
+ [data-blok-tool="video"] .blok-video-controls__center svg { width: 30px; height: 30px; }
1099
+
1100
+ /* buffering spinner */
1101
+ [data-blok-tool="video"] .blok-video-controls__spinner {
1102
+ position: absolute;
1103
+ inset: 0;
1104
+ width: 38px; height: 38px;
1105
+ margin: auto;
1106
+ border-radius: 50%;
1107
+ border: 3px solid var(--blok-video-track);
1108
+ border-top-color: var(--blok-video-control-fg);
1109
+ opacity: 0;
1110
+ pointer-events: none;
1111
+ }
1112
+ [data-blok-tool="video"] .blok-video-controls__spinner[data-active="true"] {
1113
+ opacity: 1;
1114
+ animation: blok-video-spin 720ms linear infinite;
1115
+ }
1116
+ @keyframes blok-video-spin { to { transform: rotate(360deg); } }
1117
+
1118
+ /* idle auto-hide — fade the bar + hide the cursor during playback */
1119
+ [data-blok-tool="video"] .blok-video-inner[data-controls-hidden="true"] .blok-video-controls__bar {
1120
+ opacity: 0;
1121
+ transform: translateY(6px);
1122
+ pointer-events: none;
1123
+ }
1124
+ [data-blok-tool="video"] .blok-video-inner[data-controls-hidden="true"] video { cursor: none; }
1125
+
1126
+ /* the time label is an interactive elapsed/remaining toggle */
1127
+ [data-blok-tool="video"] .blok-video-controls__time { cursor: pointer; }
1128
+
1129
+ /* keyboard focus rings */
1130
+ [data-blok-tool="video"] .blok-video-controls__btn:focus-visible,
1131
+ [data-blok-tool="video"] .blok-video-controls__center:focus-visible,
1132
+ [data-blok-tool="video"] .blok-video-controls__time:focus-visible,
1133
+ [data-blok-tool="video"] .blok-video-controls__ctx-item:focus-visible {
1134
+ outline: none;
1135
+ box-shadow: 0 0 0 2px var(--blok-video-focus-ring);
1136
+ }
1137
+
1138
+ /* right-click context menu */
1139
+ [data-blok-tool="video"] .blok-video-controls__ctx {
1140
+ position: absolute;
1141
+ top: var(--blok-ctx-y, 50%);
1142
+ left: var(--blok-ctx-x, 50%);
1143
+ min-width: 210px;
1144
+ max-width: 90%;
1145
+ padding: var(--blok-space-1-5);
1146
+ border-radius: var(--blok-radius-md);
1147
+ background: var(--blok-video-burst-bg);
1148
+ box-shadow: var(--blok-video-burst-shadow);
1149
+ -webkit-backdrop-filter: blur(12px);
1150
+ backdrop-filter: blur(12px);
1151
+ color: var(--blok-video-control-fg);
1152
+ pointer-events: auto;
1153
+ z-index: 4;
1154
+ }
1155
+ [data-blok-tool="video"] .blok-video-controls__ctx[hidden] { display: none; }
1156
+ [data-blok-tool="video"] .blok-video-controls__ctx-item {
1157
+ display: block;
1158
+ width: 100%;
1159
+ padding: var(--blok-space-1-5) var(--blok-space-2);
1160
+ border: 0;
1161
+ border-radius: var(--blok-radius-sm);
1162
+ background: transparent;
1163
+ color: inherit;
1164
+ font-size: 13px;
1165
+ text-align: left;
1166
+ cursor: pointer;
1167
+ }
1168
+ [data-blok-tool="video"] .blok-video-controls__ctx-item:hover { background: var(--blok-video-control-bg-hover); }
1169
+
1170
+ /* stats-for-nerds overlay */
1171
+ [data-blok-tool="video"] .blok-video-controls__stats {
1172
+ position: absolute;
1173
+ top: var(--blok-space-3);
1174
+ left: var(--blok-space-3);
1175
+ padding: var(--blok-space-2) var(--blok-space-2-5);
1176
+ border-radius: var(--blok-radius-sm);
1177
+ background: var(--blok-video-burst-bg);
1178
+ color: var(--blok-video-control-fg);
1179
+ font-size: 11px;
1180
+ font-variant-numeric: tabular-nums;
1181
+ line-height: 1.5;
1182
+ pointer-events: none;
1183
+ z-index: 4;
1184
+ }
1185
+ [data-blok-tool="video"] .blok-video-controls__stats[hidden] { display: none; }
1186
+
1187
+ /* bottom mini progress — revealed by CSS only while the control bar is hidden
1188
+ (the auto-hide bucket sets data-controls-hidden on the figure) */
1189
+ [data-blok-tool="video"] .blok-video-controls__mini {
1190
+ position: absolute;
1191
+ left: 0; bottom: 0;
1192
+ height: 3px;
1193
+ width: var(--blok-seek-pct, 0%);
1194
+ background: var(--blok-video-accent);
1195
+ pointer-events: none;
1196
+ opacity: 0;
1197
+ transition: opacity 160ms ease;
1198
+ }
1199
+ [data-blok-tool="video"] .blok-video-inner[data-controls-hidden="true"] .blok-video-controls__mini { opacity: 1; }
1200
+ /* In fullscreen the bottom edge-line is redundant — the full scrubber is one
1201
+ mouse-move away — and reads as a stray hairline across the immersive frame. */
1202
+ [data-blok-tool="video"] .blok-video-inner[data-fullscreen="true"] .blok-video-controls__mini { display: none; }
1203
+
1204
+ @media (prefers-reduced-motion: reduce) {
1205
+ [data-blok-tool="video"] .blok-video-controls__bar,
1206
+ [data-blok-tool="video"] .blok-video-controls__title,
1207
+ [data-blok-tool="video"] .blok-video-controls__volume,
1208
+ [data-blok-tool="video"] .blok-video-controls__mini,
1209
+ [data-blok-tool="video"] .blok-video-controls__seek-tooltip,
1210
+ [data-blok-tool="video"] .blok-video-controls__seek-wrap::before,
1211
+ [data-blok-tool="video"] .blok-video-controls__buffered,
1212
+ [data-blok-tool="video"] .blok-video-controls__seek,
1213
+ [data-blok-tool="video"] .blok-video-controls__speed { transition: none; }
1214
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active,
1215
+ [data-blok-tool="video"] .blok-video-controls__seek-flash.is-active svg { animation: none; opacity: 0; }
1216
+ [data-blok-tool="video"] .blok-video-controls__spinner[data-active="true"] { animation: none; }
1217
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active,
1218
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active::after,
1219
+ [data-blok-tool="video"] .blok-video-controls__burst.is-active svg { animation: none; opacity: 0; }
1220
+ [data-blok-tool="video"] .blok-video-controls__btn[data-action="mute-toggle"].is-bumped svg { animation: none; }
1221
+ }