nuxt-og-image 6.2.3 → 6.2.5

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 (58) hide show
  1. package/dist/chunks/tw4.cjs +1 -1
  2. package/dist/chunks/tw4.mjs +1 -1
  3. package/dist/chunks/uno.cjs +1 -1
  4. package/dist/chunks/uno.mjs +1 -1
  5. package/dist/devtools/200.html +1 -1
  6. package/dist/devtools/404.html +1 -1
  7. package/dist/devtools/_nuxt/{BxWyagB1.js → BXPqj_uX.js} +1 -1
  8. package/dist/devtools/_nuxt/Bo4lSgm2.js +3 -0
  9. package/dist/devtools/_nuxt/C9JKABtj.js +1 -0
  10. package/dist/devtools/_nuxt/CHHO6nw6.js +1 -0
  11. package/dist/devtools/_nuxt/{CAzZHHIh.js → Co3OAyKc.js} +1 -1
  12. package/dist/devtools/_nuxt/D7z5XWgK.js +4 -0
  13. package/dist/devtools/_nuxt/DGCfXCQ-.js +2 -0
  14. package/dist/devtools/_nuxt/DS7cgx7X.js +174 -0
  15. package/dist/devtools/_nuxt/DevtoolsSnippet.DzxGChOp.css +1 -0
  16. package/dist/devtools/_nuxt/KJjel4YO.js +1 -0
  17. package/dist/devtools/_nuxt/builds/latest.json +1 -1
  18. package/dist/devtools/_nuxt/builds/meta/dfa7312f-7f4d-4432-b920-c3983bc07cfc.json +1 -0
  19. package/dist/devtools/_nuxt/entry.COZPpVMd.css +2 -0
  20. package/dist/devtools/_nuxt/pages.Cmouj34P.css +1 -0
  21. package/dist/devtools/debug/index.html +1 -1
  22. package/dist/devtools/docs/index.html +1 -1
  23. package/dist/devtools/index.html +1 -1
  24. package/dist/devtools/templates/index.html +1 -1
  25. package/dist/module.cjs +1 -1
  26. package/dist/module.d.cts +33 -0
  27. package/dist/module.d.mts +33 -0
  28. package/dist/module.d.ts +33 -0
  29. package/dist/module.json +1 -1
  30. package/dist/module.mjs +1 -1
  31. package/dist/runtime/app/utils.d.ts +1 -1
  32. package/dist/runtime/app/utils.js +7 -5
  33. package/dist/runtime/server/og-image/context.d.ts +1 -1
  34. package/dist/runtime/server/og-image/context.js +43 -5
  35. package/dist/runtime/server/og-image/core/plugins/imageSrc.js +73 -12
  36. package/dist/runtime/server/og-image/takumi/renderer.js +5 -3
  37. package/dist/runtime/server/util/eventHandlers.js +34 -3
  38. package/dist/runtime/server/utils.d.ts +2 -2
  39. package/dist/runtime/server/utils.js +7 -1
  40. package/dist/runtime/shared/urlEncoding.js +4 -1
  41. package/dist/runtime/shared.d.ts +5 -0
  42. package/dist/runtime/shared.js +10 -0
  43. package/dist/runtime/types.d.ts +9 -0
  44. package/dist/shared/{nuxt-og-image.CvPWboEh.mjs → nuxt-og-image.CA6cPvTd.mjs} +48 -3
  45. package/dist/shared/{nuxt-og-image.Ni0_6XZ0.cjs → nuxt-og-image.DVJetxwr.cjs} +49 -4
  46. package/package.json +9 -7
  47. package/dist/devtools/_nuxt/BWyopNGL.js +0 -173
  48. package/dist/devtools/_nuxt/BexYm1Ph.js +0 -3
  49. package/dist/devtools/_nuxt/C31aju0P.js +0 -1
  50. package/dist/devtools/_nuxt/Cad3TRlU.js +0 -2
  51. package/dist/devtools/_nuxt/D69ab5lN.js +0 -1
  52. package/dist/devtools/_nuxt/D_4A40tz.js +0 -4
  53. package/dist/devtools/_nuxt/DevtoolsSection.C6JB6bJh.css +0 -1
  54. package/dist/devtools/_nuxt/DevtoolsSnippet.C3GhU5E5.css +0 -1
  55. package/dist/devtools/_nuxt/builds/meta/5bd1f05d-c888-4aaa-b6d8-022addcf074f.json +0 -1
  56. package/dist/devtools/_nuxt/entry.B9oj49pl.css +0 -2
  57. package/dist/devtools/_nuxt/pages.XaEO80KK.css +0 -1
  58. package/dist/devtools/_nuxt/u09lXEfj.js +0 -1
@@ -0,0 +1 @@
1
+ @font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.twitter-card{flex-direction:column;max-height:100%;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;position:relative}.twitter-card-inner{width:100%;max-width:600px;margin:0 auto}.twitter-card .card-container{background:oklch(100% 0 0);border:1px solid oklch(92% .01 285);border-radius:16px;transition:border-color .2s,box-shadow .2s;overflow:hidden;box-shadow:0 4px 24px oklch(0% 0 0/.06)}.dark .twitter-card .card-container{background:oklch(18% .04 285);border-color:oklch(28% .04 285);box-shadow:0 4px 24px oklch(0% 0 0/.2)}.twitter-card .card-container:hover{border-color:oklch(85% .02 285);box-shadow:0 6px 32px oklch(0% 0 0/.1)}.dark .twitter-card .card-container:hover{border-color:oklch(35% .04 285)}.twitter-card .card-image{background:oklch(96% .01 285);position:relative;overflow:hidden}.dark .twitter-card .card-image{background:oklch(22% .04 285)}.twitter-card .card-image img,.twitter-card .card-image>:first-child:not(.card-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.twitter-card .card-image-overlay{position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .twitter-card .card-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}.twitter-card .card-content{padding:12px 14px}.twitter-card .card-domain{color:oklch(55% .04 285);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:13px;overflow:hidden}.twitter-card .card-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:2px 0 0;font-size:15px;font-weight:500;line-height:1.3;display:-webkit-box;overflow:hidden}.twitter-card .card-time{color:oklch(55% .04 285);margin-top:12px;font-size:14px}.devtools-toolbar[data-v-ba5754ed]{border-bottom:1px solid var(--color-border);align-items:center;display:flex}.devtools-toolbar-default[data-v-ba5754ed]{background:var(--color-surface-elevated);justify-content:space-between;gap:.75rem;padding:.625rem .75rem;position:relative}@media (width>=640px){.devtools-toolbar-default[data-v-ba5754ed]{padding:.75rem 1rem}}.devtools-toolbar-minimal[data-v-ba5754ed]{background:var(--color-surface-sunken);gap:.5rem;padding:.5rem 1rem;font-size:.75rem}.devtools-empty[data-v-9a4481f3]{text-align:center;flex-direction:column;align-items:center;max-width:32rem;margin:0 auto;display:flex}.devtools-empty-icon[data-v-9a4481f3]{border-radius:var(--radius-lg);justify-content:center;align-items:center;width:4rem;height:4rem;margin-bottom:1.5rem;display:inline-flex}.devtools-empty-icon-default[data-v-9a4481f3]{color:var(--seo-green);background:oklch(65% .2 145/.12)}.dark .devtools-empty-icon-default[data-v-9a4481f3]{background:oklch(65% .2 145/.15)}.devtools-empty-icon-error[data-v-9a4481f3]{color:oklch(55% .2 25);background:oklch(55% .2 25/.12)}.dark .devtools-empty-icon-error[data-v-9a4481f3]{color:oklch(75% .15 25);background:oklch(55% .2 25/.15)}.devtools-empty-title[data-v-9a4481f3]{color:var(--color-text);margin-bottom:.75rem;font-size:1.125rem;font-weight:600}@media (width>=640px){.devtools-empty-title[data-v-9a4481f3]{font-size:1.25rem}}.devtools-empty-description[data-v-9a4481f3]{color:var(--color-text-muted);margin-bottom:1.25rem;font-size:.875rem;line-height:1.5}@media (width>=640px){.devtools-empty-description[data-v-9a4481f3]{font-size:1rem}}.devtools-empty-actions[data-v-9a4481f3]{flex-direction:column;align-items:center;gap:.75rem;display:flex}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.facebook-card{background:#f0f2f5;border:1px solid #dadde1;border-radius:0;max-width:500px;margin:0 auto;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,Helvetica,Arial,sans-serif;overflow:hidden;box-shadow:0 4px 24px oklch(0% 0 0/.1)}.dark .facebook-card{background:#242526;border-color:oklch(28% .02 285);box-shadow:0 4px 24px oklch(0% 0 0/.2)}.facebook-image{aspect-ratio:2;background:#e4e6e9;width:100%;position:relative;overflow:hidden}.dark .facebook-image{background:oklch(25% .02 285)}.facebook-image img,.facebook-image>:first-child:not(.facebook-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.facebook-image-overlay{position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .facebook-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}.facebook-content{background:#f0f2f5;padding:12px 14px}.dark .facebook-content{background:#242526}.facebook-sitename{color:#606770;letter-spacing:.03em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;margin:0 0 4px;font-size:12px;overflow:hidden}.dark .facebook-sitename{color:oklch(60% .02 285)}.facebook-title{color:#1c1e21;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 4px;font-size:16px;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.dark .facebook-title{color:oklch(95% .01 285)}.facebook-description{color:#606770;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:14px;line-height:1.4;display:-webkit-box;overflow:hidden}.dark .facebook-description{color:oklch(70% .02 285)}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.linkedin-card{background:oklch(100% 0 0);border:1px solid #e0e0e0;border-radius:8px;width:100%;max-width:552px;margin:0 auto;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,-apple-system,BlinkMacSystemFont,sans-serif;overflow:hidden;box-shadow:0 4px 24px oklch(0% 0 0/.1)}.dark .linkedin-card{background:#1b1f23;border-color:oklch(28% .02 285);box-shadow:0 4px 24px oklch(0% 0 0/.2)}.linkedin-image{aspect-ratio:2;background:#f3f2ef;width:100%;position:relative;overflow:hidden}.dark .linkedin-image{background:oklch(22% .02 285)}.linkedin-image img,.linkedin-image>:first-child:not(.linkedin-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.linkedin-image-overlay{position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .linkedin-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}.linkedin-content{padding:12px 14px}.linkedin-title{color:oklch(15% .02 285);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 4px;font-size:14px;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.dark .linkedin-title{color:oklch(95% .01 285)}.linkedin-sitename{color:oklch(50% .03 285);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:12px;overflow:hidden}.discord-card{background:#f2f3f5;border:1px solid #e3e5e8;border-left-width:4px;border-radius:8px;max-width:432px;margin:0 auto;font-family:gg sans,Noto Sans,Helvetica Neue,Helvetica,Arial,sans-serif;display:flex;overflow:hidden}.dark .discord-card{background:#2b2d31;border-color:#232428 #232428 #232428 #1e1f22}.discord-body{flex:1;min-width:0;padding:8px 16px 16px 12px}.discord-sitename{color:#4e5058;margin-bottom:2px;font-size:12px;font-weight:400;line-height:16px}.dark .discord-sitename{color:#b5bac1}.discord-title{color:#006ce7;cursor:pointer;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:4px;font-size:16px;font-weight:700;line-height:22px;display:-webkit-box;overflow:hidden}.dark .discord-title{color:#00a8fc}.discord-title:hover{text-decoration:underline}.discord-description{color:#313338;-webkit-line-clamp:3;white-space:pre-wrap;-webkit-box-orient:vertical;margin-bottom:16px;font-size:14px;line-height:18px;display:-webkit-box;overflow:hidden}.dark .discord-description{color:#dbdee1}.discord-image{border-radius:4px;max-width:400px;max-height:300px;position:relative;overflow:hidden}.discord-image img,.discord-image>:first-child:not(.discord-image-overlay){border-radius:4px;max-width:100%;max-height:300px;display:block}.discord-image-overlay{pointer-events:none;border-radius:4px;position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.04)}.dark .discord-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.06)}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.slack-card{-webkit-font-smoothing:antialiased;background:oklch(100% 0 0);border-radius:8px;max-width:500px;min-height:200px;margin:0 auto;padding:8px 0;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,Lato,-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;line-height:1.46;display:flex}.dark .slack-card{background:#1a1d21}.slack-bar{background:#a855f7;border-radius:4px;flex-shrink:0;width:4px;margin:4px 0}.slack-content{flex:1;min-width:0;padding:0 12px}.slack-header{align-items:center;gap:8px;margin-bottom:4px;display:flex}.slack-favicon img{-o-object-fit:cover;object-fit:cover;border-radius:3px;width:16px;height:16px}.slack-sitename{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.slack-title{color:#1264a3;cursor:pointer;margin-bottom:2px;font-size:15px;font-weight:600}.dark .slack-title{color:#1d9bd1}.slack-title:hover{text-decoration:underline}.slack-description{color:oklch(55% .04 285);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:8px;font-size:14px;line-height:1.5;display:-webkit-box;overflow:hidden}.dark .slack-description{color:oklch(70% .03 285)}.slack-image{border-radius:6px;max-width:320px;position:relative;overflow:hidden}.slack-image img,.slack-image>:first-child:not(.slack-image-overlay){width:100%;height:auto}.slack-image-overlay{pointer-events:none;border-radius:6px;position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .slack-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.whatsapp-dual-preview{flex-wrap:wrap;justify-content:center;gap:24px;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex}.whatsapp-section{flex-direction:column;gap:8px;display:flex}.whatsapp-label{color:oklch(55% .03 285);margin:0;font-size:12px}.dark .whatsapp-label{color:oklch(60% .03 285)}.whatsapp-inline-card{background:#dcf8c6;border-radius:8px;max-width:360px;display:flex;overflow:hidden;box-shadow:0 4px 20px oklch(0% 0 0/.1)}.dark .whatsapp-inline-card{background:#1f2c34;box-shadow:0 4px 20px oklch(0% 0 0/.2)}.whatsapp-inline-image{background:oklch(85% .02 165);flex-shrink:0;width:80px;height:80px;position:relative;overflow:hidden}.dark .whatsapp-inline-image{background:oklch(25% .03 165)}.whatsapp-inline-image img,.whatsapp-inline-image>:first-child:not(.whatsapp-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.whatsapp-inline-content{flex:1;min-width:0;padding:10px}.whatsapp-title-inline{color:oklch(20% .02 285);-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:13px;font-weight:500;display:-webkit-box;overflow:hidden}.dark .whatsapp-title-inline{color:#e9edef}.whatsapp-description-inline{color:oklch(40% .03 285);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:3px;font-size:11px;display:-webkit-box;overflow:hidden}.dark .whatsapp-description-inline{color:#8696a0}.whatsapp-url-inline{color:oklch(50% .03 285);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:4px;margin-top:3px;font-size:11px;display:flex;overflow:hidden}.dark .whatsapp-url-inline{color:#8696a0}.whatsapp-full-card{background:#dcf8c6;border-radius:8px;width:360px;overflow:hidden;box-shadow:0 4px 20px oklch(0% 0 0/.1)}.dark .whatsapp-full-card{background:#1f2c34;box-shadow:0 4px 20px oklch(0% 0 0/.2)}.whatsapp-full-image{aspect-ratio:2;background:oklch(85% .02 165);width:100%;position:relative;overflow:hidden}.dark .whatsapp-full-image{background:oklch(25% .03 165)}.whatsapp-full-image img,.whatsapp-full-image>:first-child:not(.whatsapp-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.whatsapp-full-content{background:#dcf8c6;padding:14px}.dark .whatsapp-full-content{background:#1f2c34}.whatsapp-title{color:oklch(20% .02 285);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:15px;font-weight:500;display:-webkit-box;overflow:hidden}.dark .whatsapp-title{color:#e9edef}.whatsapp-description{color:oklch(40% .03 285);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:4px;font-size:13px;display:-webkit-box;overflow:hidden}.dark .whatsapp-description{color:#8696a0}.whatsapp-url{color:oklch(50% .03 285);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;margin-top:8px;font-size:13px;display:flex;overflow:hidden}.dark .whatsapp-url{color:#8696a0}.whatsapp-image-overlay{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .whatsapp-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}.whatsapp-inline-card--squared{max-width:560px}.whatsapp-inline-card--squared .whatsapp-inline-image{width:128px;height:128px}.whatsapp-inline-card--squared .whatsapp-title-inline{-webkit-line-clamp:2;font-size:14px}.whatsapp-inline-card--squared .whatsapp-description-inline{-webkit-line-clamp:3;font-size:12px}.whatsapp-inline-card--squared .whatsapp-url-inline{font-size:12px}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans Fallback\: BlinkMacSystemFont;src:local(BlinkMacSystemFont);size-adjust:108.763%;ascent-override:100.218%;descent-override:29.4219%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Segoe UI;src:local(Segoe UI);size-adjust:102.174%;ascent-override:106.68%;descent-override:31.319%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Helvetica Neue;src:local(Helvetica Neue);size-adjust:100.667%;ascent-override:108.278%;descent-override:31.7881%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Arial;src:local(Arial);size-adjust:101.615%;ascent-override:107.268%;descent-override:31.4914%;line-gap-override:0%}@font-face{font-family:Hubot Sans Fallback\: Noto Sans;src:local(Noto Sans);size-adjust:95.5696%;ascent-override:114.053%;descent-override:33.4834%;line-gap-override:0%}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular Italic),local(Hubot Sans Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/fVoGbnMbBFd5L9BBp9fUPavUSkZ_EmsQNSyadkT-108-U4T0khaeLQSIhtt9eVvaCEKJjtWJ4ioRJOf8hvqkWY0.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/lntlqNHKLV2n82yTwMde70QqOjcfLE2XJ5oKZ3vRPWc-z6TxpIZQdWXztWLr9_OFWqt_WJJoeGtuK_-XQMZGQwE.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold Italic),url(../_fonts/PV2hrQG6wq5BlIPDjdL1IcOflycaghyt5MHzlBqZtlo-lb_WexLz3VZqfTN0oi554iBH5tT2j2UFEV-XErCAS3E.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:italic}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Regular),local(Hubot Sans),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Medium),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:500;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans SemiBold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:600;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/VE4cDVCv5MxbFM7ZLoLCGbIpNd71zhp7MDI9lmN5Y7I-xZyDYCUVrd6LV8eVGF3Um3UZjBFuUtDGtvdyTBBRYBo.woff2)format("woff2");font-display:swap;unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/lQAxeCEs1R0Lw-H9XRU1RlOARQN8J6npRsPjyEDMe5s-_DUSLEkO3tKTuun_gSnDLoQPVEnpOnyqZMOw0ByZ6PA.woff2)format("woff2");font-display:swap;unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:700;font-style:normal}@font-face{font-family:Hubot Sans;src:local(Hubot Sans Bold),url(../_fonts/4ppnHhMi-pBsWSPo7mY0avYxlDoAg1N3PTzCwXLZ5rA-d9oibkGnTd1JL3tc_xnaVgBLYmOB8kjrK2cvZaqwj9s.woff2)format("woff2");font-display:swap;unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:700;font-style:normal}.bluesky-card{background:oklch(100% 0 0);border:1px solid oklch(88% .01 260);border-radius:12px;width:100%;max-width:513px;margin:0 auto;font-family:Hubot Sans,Hubot Sans Fallback\: BlinkMacSystemFont,Hubot Sans Fallback\: Segoe UI,Hubot Sans Fallback\: Helvetica Neue,Hubot Sans Fallback\: Arial,Hubot Sans Fallback\: Noto Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow:hidden;box-shadow:0 4px 24px oklch(0% 0 0/.08)}.dark .bluesky-card{background:#171d27;border-color:#2c3a4e;box-shadow:0 4px 24px oklch(0% 0 0/.25)}.bluesky-image{aspect-ratio:2;background:oklch(96% .01 260);width:100%;position:relative;overflow:hidden}.dark .bluesky-image{background:oklch(22% .02 260)}.bluesky-image img,.bluesky-image>:first-child:not(.bluesky-image-overlay){-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.bluesky-image-overlay{pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px oklch(0% 0 0/.05)}.dark .bluesky-image-overlay{box-shadow:inset 0 0 0 1px oklch(100% 0 0/.05)}.bluesky-content{padding:12px 14px}.bluesky-title{color:oklch(15% .02 260);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 2px;font-size:15px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.dark .bluesky-title{color:oklch(95% .01 260)}.bluesky-description{color:oklch(50% .02 260);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0 0 8px;font-size:13px;line-height:1.4;display:-webkit-box;overflow:hidden}.dark .bluesky-description{color:oklch(65% .02 260)}.bluesky-domain{color:#abb8c9;letter-spacing:0;border-top:1px solid oklch(92% .01 260);align-items:center;gap:4px;padding-top:8px;font-size:11.3px;display:flex}.dark .bluesky-domain{border-top-color:oklch(28% .02 260)}.bluesky-globe{flex-shrink:0;width:13px;height:13px}.devtools-panel[data-v-ffb85a2d]{background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);flex-direction:column;display:flex;overflow:hidden;box-shadow:0 8px 32px oklch(0% 0 0/.12)}.dark .devtools-panel[data-v-ffb85a2d]{box-shadow:0 8px 32px oklch(0% 0 0/.4)}.devtools-panel-header[data-v-ffb85a2d]{background:var(--color-surface-sunken);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:.625rem .75rem;display:flex}.devtools-panel-title[data-v-ffb85a2d]{color:var(--color-text);font-size:.875rem;font-weight:500}.devtools-panel-actions[data-v-ffb85a2d]{align-items:center;gap:.25rem;display:flex}.devtools-panel-content[data-v-ffb85a2d]{flex:1;overflow:auto}.preview-container[data-v-3517e82f]{flex-direction:column;height:calc(100vh - 100px);min-height:500px;display:flex;overflow:hidden}.preview-container[data-v-3517e82f]:hover{border-color:var(--color-border);box-shadow:none}@media (height<=600px){.preview-container[data-v-3517e82f]{border-left:0;border-right:0;border-radius:0;height:100vh;min-height:0}}.component-info[data-v-3517e82f]{align-items:center;gap:.5rem;font-size:.8125rem;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.component-path-link[data-v-3517e82f]{font-family:var(--font-mono,ui-monospace,monospace);font-size:.8125rem}.size-variant-bar[data-v-3517e82f]{background:var(--color-surface-elevated);border-bottom:1px solid var(--color-border);align-items:center;gap:.5rem;padding:.375rem .75rem;display:flex}@media (width>=640px){.size-variant-bar[data-v-3517e82f]{padding:.375rem 1rem}}.size-variant-label[data-v-3517e82f]{color:var(--color-text-subtle);letter-spacing:.02em;white-space:nowrap;font-size:.6875rem}.size-variant-group[data-v-3517e82f]{background:var(--color-border);border-radius:6px;gap:1px;display:flex;overflow:hidden}.size-variant-btn[data-v-3517e82f]{background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;border:none;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.6875rem;line-height:1;transition:background .12s,color .12s;display:flex}.size-variant-btn.active[data-v-3517e82f],.size-variant-btn[data-v-3517e82f]:hover{background:var(--color-surface-sunken);color:var(--color-text)}.size-variant-name[data-v-3517e82f]{font-weight:500}.size-variant-px[data-v-3517e82f]{font-family:var(--font-mono,ui-monospace,monospace);opacity:.6;font-size:.625rem}.size-variant-btn.active .size-variant-px[data-v-3517e82f]{opacity:.8}.preview-area[data-v-3517e82f]{flex:1;justify-content:center;align-items:center;padding:1rem;transition:padding .2s cubic-bezier(.22,1,.36,1);display:flex;position:relative;overflow:auto}@media (width>=640px){.preview-area[data-v-3517e82f]{padding:1.5rem}.preview-area--panel-open[data-v-3517e82f]{padding-right:20rem}}.preview-content[data-v-3517e82f]{width:100%;max-width:42rem;margin:0 auto;transition:max-width .2s cubic-bezier(.22,1,.36,1)}.preview-content--no-transition[data-v-3517e82f]{transition:none}@media (height<=600px){.preview-area[data-v-3517e82f]{padding:.5rem;overflow:hidden}.preview-content[data-v-3517e82f]{flex-direction:column;justify-content:center;max-width:100%;max-height:calc(100vh - 160px);display:flex}.preview-content[data-v-3517e82f] img{-o-object-fit:contain;object-fit:contain;width:auto;max-height:calc(100vh - 280px)}.preview-content[data-v-3517e82f] .bluesky-image,.preview-content[data-v-3517e82f] .discord-image,.preview-content[data-v-3517e82f] .facebook-image,.preview-content[data-v-3517e82f] .linkedin-image,.preview-content[data-v-3517e82f] .slack-image{max-height:calc(100vh - 280px)}}.raw-preview-wrapper[data-v-3517e82f]{width:100%;position:relative}.raw-preview[data-v-3517e82f]{border-radius:var(--radius-lg);width:100%;overflow:hidden;box-shadow:0 4px 24px oklch(0% 0 0/.08)}.raw-preview--dragging[data-v-3517e82f]{-webkit-user-select:none;user-select:none}.dark .raw-preview[data-v-3517e82f]{box-shadow:0 4px 24px oklch(0% 0 0/.3)}.raw-resize-handle[data-v-3517e82f]{cursor:col-resize;z-index:2;justify-content:center;align-items:center;width:28px;height:100%;display:flex;position:absolute;top:0;right:-14px}.raw-resize-grip[data-v-3517e82f]{background:var(--color-border);border-radius:2px;width:4px;height:32px;transition:background .15s,height .15s}.raw-preview--dragging~.raw-resize-handle .raw-resize-grip[data-v-3517e82f],.raw-resize-handle:hover .raw-resize-grip[data-v-3517e82f]{background:var(--color-text-subtle);height:48px}.raw-resize-readout[data-v-3517e82f]{color:var(--color-text-subtle);font-family:var(--font-mono,ui-monospace,monospace);white-space:nowrap;font-size:.625rem;position:absolute;bottom:-24px;left:50%;transform:translate(-50%)}.status-line[data-v-3517e82f]{color:var(--color-text-subtle);text-align:center;margin-top:1rem;font-size:.75rem}@media (height<=600px){.status-line[data-v-3517e82f]{margin-top:.375rem;font-size:.6875rem}}.props-panel[data-v-3517e82f]{z-index:10;width:18rem;position:absolute;top:7rem;bottom:.75rem;right:.75rem}@media (width>=640px){.props-panel[data-v-3517e82f]{top:8rem;bottom:1rem;right:1rem}}@media (height<=600px){.props-panel[data-v-3517e82f]{border-radius:var(--radius-md);top:5.5rem;bottom:.25rem;right:.25rem}}.props-field[data-v-3517e82f]{padding:.375rem .75rem}.props-field-label[data-v-3517e82f]{color:var(--color-text-muted);letter-spacing:.03em;text-transform:uppercase;align-items:center;gap:.375rem;margin-bottom:.25rem;font-size:.6875rem;font-weight:500;display:flex}.fonts-tab[data-v-3517e82f]{flex-direction:column;display:flex}.fonts-detected[data-v-3517e82f]{border-bottom:1px solid var(--color-border-subtle);padding:.5rem .75rem}.fonts-detected-inner[data-v-3517e82f]{flex-wrap:wrap;align-items:center;gap:.25rem;display:flex}.fonts-detected-label[data-v-3517e82f]{color:var(--color-text-subtle);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;margin-right:.125rem;font-size:.5625rem;font-weight:600}.fonts-chip[data-v-3517e82f]{background:var(--color-surface-sunken);border:1px solid var(--color-border-subtle);color:var(--color-text-muted);font-family:var(--font-mono);border-radius:3px;align-items:center;gap:.1875rem;padding:.0625rem .3125rem;font-size:.625rem;line-height:1.4;display:inline-flex}.fonts-chip--family[data-v-3517e82f]{color:var(--seo-green);background:oklch(65% .2 145/.06);border-color:oklch(65% .2 145/.2)}.dark .fonts-chip--family[data-v-3517e82f]{background:oklch(65% .2 145/.1)}.fonts-chip--error[data-v-3517e82f]{color:oklch(55% .2 25);background:oklch(55% .2 25/.08);border-color:oklch(55% .2 25/.25)}.dark .fonts-chip--error[data-v-3517e82f]{color:oklch(75% .15 25);background:oklch(55% .2 25/.12)}.fonts-resolved[data-v-3517e82f]{border-bottom:none;padding-top:0}.fonts-detected+.fonts-resolved[data-v-3517e82f]{padding-top:0}.fonts-detected-sep[data-v-3517e82f]{background:var(--color-border);flex-shrink:0;width:1px;height:.75rem;margin:0 .125rem}.fonts-specimen[data-v-3517e82f]{flex-direction:column;display:flex}.fonts-family-row[data-v-3517e82f]{cursor:pointer;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:.375rem .75rem;transition:background .15s cubic-bezier(.22,1,.36,1);display:flex}.fonts-family-row[data-v-3517e82f]:hover{background:var(--color-surface-sunken)}.fonts-family-row.active[data-v-3517e82f]{background:oklch(65% .2 145/.06)}.dark .fonts-family-row.active[data-v-3517e82f]{background:oklch(65% .2 145/.08)}.fonts-family-name[data-v-3517e82f]{color:var(--color-text);font-size:.8125rem;font-weight:500;line-height:1.3}.fonts-family-row.active .fonts-family-name[data-v-3517e82f]{color:var(--seo-green)}.fonts-family-meta[data-v-3517e82f]{flex-shrink:0;align-items:center;gap:.375rem;display:flex}.fonts-family-size[data-v-3517e82f]{color:var(--color-text-subtle);font-family:var(--font-mono);letter-spacing:.01em;font-size:.5625rem}.fonts-family-check[data-v-3517e82f]{color:var(--seo-green);flex-shrink:0;width:.875rem;height:.875rem}.fonts-variants[data-v-3517e82f]{border-bottom:1px solid var(--color-border-subtle);flex-wrap:wrap;gap:.375rem .625rem;padding:.125rem .75rem .5rem 1rem;display:flex}.fonts-variant[data-v-3517e82f]{flex-wrap:wrap;align-items:baseline;gap:.25rem;display:flex}.fonts-variant-dot[data-v-3517e82f]{background:var(--color-border);border-radius:50%;flex-shrink:0;align-self:center;width:5px;height:5px}.fonts-variant.loaded .fonts-variant-dot[data-v-3517e82f]{background:var(--seo-green)}.fonts-variant-label[data-v-3517e82f]{color:var(--color-text-subtle);font-family:var(--font-mono);font-size:.625rem;line-height:1}.fonts-variant.loaded .fonts-variant-label[data-v-3517e82f]{color:var(--color-text-muted)}.fonts-variant-count[data-v-3517e82f]{opacity:.7;font-size:.5625rem}.fonts-subset-chip[data-v-3517e82f],.fonts-variant-count[data-v-3517e82f]{color:var(--color-text-subtle);font-family:var(--font-mono)}.fonts-subset-chip[data-v-3517e82f]{background:var(--color-surface-sunken);border:1px solid var(--color-border-subtle);border-radius:2px;padding:.0625rem .1875rem;font-size:.5rem;line-height:1}.fonts-variant.loaded .fonts-subset-chip[data-v-3517e82f]{color:var(--color-text-muted)}.fonts-empty[data-v-3517e82f]{color:var(--color-text-subtle);text-align:center;padding:1rem .75rem;font-size:.75rem}.prop-editor[data-v-3517e82f]{gap:.375rem;padding:.5rem .75rem}.prop-editor[data-v-3517e82f],.prop-field[data-v-3517e82f]{flex-direction:column;display:flex}.prop-field[data-v-3517e82f]{gap:.125rem}.prop-label[data-v-3517e82f]{color:var(--color-text-subtle);letter-spacing:.01em;font-size:.6875rem}.prop-input[data-v-3517e82f],.prop-label[data-v-3517e82f]{font-family:var(--font-mono)}.prop-input[data-v-3517e82f]{background:var(--color-surface-sunken);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--color-text);outline:none;padding:.25rem .375rem;font-size:.75rem;transition:border-color .15s}.prop-input[data-v-3517e82f]:focus{border-color:var(--seo-green)}.prop-input-color[data-v-3517e82f]{cursor:pointer;width:2.5rem;height:1.5rem;padding:.125rem}.prop-input-json[data-v-3517e82f]{resize:vertical;min-height:2.5rem;line-height:1.4}.prop-editor-empty[data-v-3517e82f]{color:var(--color-text-subtle);text-align:center;padding:1rem .75rem;font-size:.75rem}.inline-code[data-v-3517e82f]{background:var(--color-surface-sunken);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);color:var(--seo-green);font-family:var(--font-mono);padding:.125rem .375rem;font-size:.8125rem}
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BWyopNGL.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.B9oj49pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BWyopNGL.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CAzZHHIh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BWyopNGL.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"5bd1f05d-c888-4aaa-b6d8-022addcf074f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499598204,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/DS7cgx7X.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.COZPpVMd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DS7cgx7X.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/DS7cgx7X.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"dfa7312f-7f4d-4432-b920-c3983bc07cfc",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774539628114,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BWyopNGL.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.B9oj49pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BWyopNGL.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CAzZHHIh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BWyopNGL.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"5bd1f05d-c888-4aaa-b6d8-022addcf074f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499598205,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/DS7cgx7X.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.COZPpVMd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DS7cgx7X.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/DS7cgx7X.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"dfa7312f-7f4d-4432-b920-c3983bc07cfc",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774539628115,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BWyopNGL.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.B9oj49pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BWyopNGL.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CAzZHHIh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BWyopNGL.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"5bd1f05d-c888-4aaa-b6d8-022addcf074f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499598205,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/DS7cgx7X.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.COZPpVMd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DS7cgx7X.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/DS7cgx7X.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT_SITE_CONFIG__={_priority:{env:-15,url:-3},env:"production",url:"https:\u002F\u002Fnuxtseo.com"}</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"dfa7312f-7f4d-4432-b920-c3983bc07cfc",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774539628115,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/BWyopNGL.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.B9oj49pl.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/BWyopNGL.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CAzZHHIh.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/BWyopNGL.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"5bd1f05d-c888-4aaa-b6d8-022addcf074f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774499598205,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-og-image/_nuxt/DS7cgx7X.js"}}</script><link rel="stylesheet" href="/__nuxt-og-image/_nuxt/entry.COZPpVMd.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/DS7cgx7X.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/CHHO6nw6.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/D2zWjF09.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/Co3OAyKc.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-og-image/_nuxt/C-b6hTTf.js"><script type="module" src="/__nuxt-og-image/_nuxt/DS7cgx7X.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-og-image",buildId:"dfa7312f-7f4d-4432-b920-c3983bc07cfc",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1774539628115,false]</script></body></html>
package/dist/module.cjs CHANGED
@@ -9,7 +9,7 @@ require('nuxt-site-config/kit');
9
9
  require('ohash');
10
10
  require('pathe');
11
11
  require('pkg-types');
12
- const module$1 = require('./shared/nuxt-og-image.Ni0_6XZ0.cjs');
12
+ const module$1 = require('./shared/nuxt-og-image.DVJetxwr.cjs');
13
13
  require('nuxtseo-shared/kit');
14
14
  require('../dist/runtime/logger.js');
15
15
  require('node:crypto');
package/dist/module.d.cts CHANGED
@@ -137,6 +137,39 @@ interface ModuleOptions {
137
137
  * @example { provider: 'cloudflare', binding: 'BROWSER' }
138
138
  */
139
139
  browser?: BrowserConfig;
140
+ /**
141
+ * Security limits for image generation. Prevents denial of service via
142
+ * oversized dimensions, unbounded DPR, or long-running renders.
143
+ */
144
+ security?: {
145
+ /** Maximum allowed width or height in pixels. @default 2048 */
146
+ maxDimension?: number;
147
+ /** Maximum device pixel ratio (takumi renderer). @default 2 */
148
+ maxDpr?: number;
149
+ /** Render timeout in milliseconds. Returns 408 on timeout. @default 15000 */
150
+ renderTimeout?: number;
151
+ /**
152
+ * Maximum allowed length (in characters) for the query string on runtime OG image requests.
153
+ * Requests exceeding this limit receive a 400 response.
154
+ *
155
+ * Set to a number to enable (e.g. `2048`). Leave `null` to disable.
156
+ *
157
+ * @default null
158
+ */
159
+ maxQueryParamSize?: number | null;
160
+ /**
161
+ * Restrict runtime image generation to requests whose Host header matches allowed hosts.
162
+ * - `true`: only allow requests whose Host matches the site config URL host
163
+ * - `string[]`: allow the site config URL host plus these additional origins
164
+ * - `false` (default): no host restriction
165
+ *
166
+ * Uses h3's `getRequestHost` with `X-Forwarded-Host` support for reverse proxies.
167
+ * Prerendering and dev mode are never restricted.
168
+ *
169
+ * @default false
170
+ */
171
+ restrictRuntimeImagesToOrigin?: boolean | string[];
172
+ };
140
173
  }
141
174
  interface ModuleHooks {
142
175
  'nuxt-og-image:components': (ctx: {
package/dist/module.d.mts CHANGED
@@ -137,6 +137,39 @@ interface ModuleOptions {
137
137
  * @example { provider: 'cloudflare', binding: 'BROWSER' }
138
138
  */
139
139
  browser?: BrowserConfig;
140
+ /**
141
+ * Security limits for image generation. Prevents denial of service via
142
+ * oversized dimensions, unbounded DPR, or long-running renders.
143
+ */
144
+ security?: {
145
+ /** Maximum allowed width or height in pixels. @default 2048 */
146
+ maxDimension?: number;
147
+ /** Maximum device pixel ratio (takumi renderer). @default 2 */
148
+ maxDpr?: number;
149
+ /** Render timeout in milliseconds. Returns 408 on timeout. @default 15000 */
150
+ renderTimeout?: number;
151
+ /**
152
+ * Maximum allowed length (in characters) for the query string on runtime OG image requests.
153
+ * Requests exceeding this limit receive a 400 response.
154
+ *
155
+ * Set to a number to enable (e.g. `2048`). Leave `null` to disable.
156
+ *
157
+ * @default null
158
+ */
159
+ maxQueryParamSize?: number | null;
160
+ /**
161
+ * Restrict runtime image generation to requests whose Host header matches allowed hosts.
162
+ * - `true`: only allow requests whose Host matches the site config URL host
163
+ * - `string[]`: allow the site config URL host plus these additional origins
164
+ * - `false` (default): no host restriction
165
+ *
166
+ * Uses h3's `getRequestHost` with `X-Forwarded-Host` support for reverse proxies.
167
+ * Prerendering and dev mode are never restricted.
168
+ *
169
+ * @default false
170
+ */
171
+ restrictRuntimeImagesToOrigin?: boolean | string[];
172
+ };
140
173
  }
141
174
  interface ModuleHooks {
142
175
  'nuxt-og-image:components': (ctx: {
package/dist/module.d.ts CHANGED
@@ -137,6 +137,39 @@ interface ModuleOptions {
137
137
  * @example { provider: 'cloudflare', binding: 'BROWSER' }
138
138
  */
139
139
  browser?: BrowserConfig;
140
+ /**
141
+ * Security limits for image generation. Prevents denial of service via
142
+ * oversized dimensions, unbounded DPR, or long-running renders.
143
+ */
144
+ security?: {
145
+ /** Maximum allowed width or height in pixels. @default 2048 */
146
+ maxDimension?: number;
147
+ /** Maximum device pixel ratio (takumi renderer). @default 2 */
148
+ maxDpr?: number;
149
+ /** Render timeout in milliseconds. Returns 408 on timeout. @default 15000 */
150
+ renderTimeout?: number;
151
+ /**
152
+ * Maximum allowed length (in characters) for the query string on runtime OG image requests.
153
+ * Requests exceeding this limit receive a 400 response.
154
+ *
155
+ * Set to a number to enable (e.g. `2048`). Leave `null` to disable.
156
+ *
157
+ * @default null
158
+ */
159
+ maxQueryParamSize?: number | null;
160
+ /**
161
+ * Restrict runtime image generation to requests whose Host header matches allowed hosts.
162
+ * - `true`: only allow requests whose Host matches the site config URL host
163
+ * - `string[]`: allow the site config URL host plus these additional origins
164
+ * - `false` (default): no host restriction
165
+ *
166
+ * Uses h3's `getRequestHost` with `X-Forwarded-Host` support for reverse proxies.
167
+ * Prerendering and dev mode are never restricted.
168
+ *
169
+ * @default false
170
+ */
171
+ restrictRuntimeImagesToOrigin?: boolean | string[];
172
+ };
140
173
  }
141
174
  interface ModuleHooks {
142
175
  'nuxt-og-image:components': (ctx: {
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "nuxt": ">=3.16.0"
5
5
  },
6
6
  "configKey": "ogImage",
7
- "version": "6.2.3",
7
+ "version": "6.2.5",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.2",
10
10
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -7,7 +7,7 @@ import 'nuxt-site-config/kit';
7
7
  import 'ohash';
8
8
  import 'pathe';
9
9
  import 'pkg-types';
10
- export { m as default } from './shared/nuxt-og-image.CvPWboEh.mjs';
10
+ export { m as default } from './shared/nuxt-og-image.CA6cPvTd.mjs';
11
11
  import 'nuxtseo-shared/kit';
12
12
  import '../dist/runtime/logger.js';
13
13
  import 'node:crypto';
@@ -19,6 +19,6 @@ export interface GetOgImagePathResult {
19
19
  /**
20
20
  * @deprecated Use the return value of `defineOgImage()` instead, which now returns an array of generated paths.
21
21
  */
22
- export declare function getOgImagePath(_pagePath: string, _options?: Partial<OgImageOptions>): GetOgImagePathResult;
22
+ export declare function getOgImagePath(_pagePath: string, _options?: Partial<OgImageOptionsInternal>): GetOgImagePathResult;
23
23
  export declare function useOgImageRuntimeConfig(): OgImageRuntimeConfig;
24
24
  export {};
@@ -134,11 +134,13 @@ export function getOgImagePath(_pagePath, _options) {
134
134
  const { defaults } = useOgImageRuntimeConfig();
135
135
  const extension = _options?.extension || defaults?.extension || "png";
136
136
  const isStatic = import.meta.prerender;
137
- const result = buildOgImageUrl({ ..._options, _path: _pagePath }, extension, isStatic, defaults);
138
- let path = joinURL("/", baseURL, result.url);
139
- if (!isStatic && runtimeConfig.app.buildId) {
140
- path = withQuery(path, { _v: runtimeConfig.app.buildId });
141
- }
137
+ const options = { ..._options, _path: _pagePath };
138
+ const componentName = _options?.component || componentNames?.[0]?.pascalName;
139
+ const component = componentNames?.find((c) => c.pascalName === componentName || c.kebabName === componentName);
140
+ if (component?.hash)
141
+ options._componentHash = component.hash;
142
+ const result = buildOgImageUrl(options, extension, isStatic, defaults);
143
+ const path = joinURL("/", baseURL, result.url);
142
144
  return {
143
145
  path,
144
146
  hash: result.hash
@@ -1,4 +1,4 @@
1
1
  import type { H3Error, H3Event } from 'h3';
2
2
  import type { OgImageRenderEventContext } from '../../types.js';
3
- export declare function resolvePathCacheKey(e: H3Event, path: string, includeQuery?: boolean): string;
3
+ export declare function resolvePathCacheKey(e: H3Event, path: string, resolvedOptions?: Record<string, any>): string;
4
4
  export declare function resolveContext(e: H3Event): Promise<H3Error | OgImageRenderEventContext>;
@@ -7,14 +7,15 @@ import { useNitroApp } from "nitropack/runtime";
7
7
  import { hash } from "ohash";
8
8
  import { parseURL, withoutLeadingSlash, withoutTrailingSlash, withQuery } from "ufo";
9
9
  import { normalizeKey } from "unstorage";
10
- import { decodeOgImageParams, extractEncodedSegment, separateProps } from "../../shared.js";
10
+ import { logger } from "../../logger.js";
11
+ import { decodeOgImageParams, extractEncodedSegment, sanitizeProps, separateProps } from "../../shared.js";
11
12
  import { autoEjectCommunityTemplate } from "../util/auto-eject.js";
12
13
  import { createNitroRouteRuleMatcher } from "../util/kit.js";
13
14
  import { normaliseOptions } from "../util/options.js";
14
15
  import { useOgImageRuntimeConfig } from "../utils.js";
15
16
  import { getBrowserRenderer, getSatoriRenderer, getTakumiRenderer } from "./instances.js";
16
17
  const RE_HASH_MODE = /^o_([a-z0-9]+)$/i;
17
- export function resolvePathCacheKey(e, path, includeQuery = false) {
18
+ export function resolvePathCacheKey(e, path, resolvedOptions) {
18
19
  const siteConfig = getSiteConfig(e, {
19
20
  resolveRefs: true
20
21
  });
@@ -23,8 +24,8 @@ export function resolvePathCacheKey(e, path, includeQuery = false) {
23
24
  basePath,
24
25
  import.meta.prerender ? "" : siteConfig.url
25
26
  ];
26
- if (includeQuery)
27
- hashParts.push(hash(getQuery(e)));
27
+ if (resolvedOptions)
28
+ hashParts.push(hash(resolvedOptions));
28
29
  return [
29
30
  !basePath || basePath === "/" ? "index" : basePath,
30
31
  hash(hashParts)
@@ -65,6 +66,16 @@ export async function resolveContext(e) {
65
66
  } else {
66
67
  urlOptions = decodeOgImageParams(encodedSegment);
67
68
  }
69
+ const maxQueryParamSize = runtimeConfig.security?.maxQueryParamSize;
70
+ if (maxQueryParamSize && !import.meta.prerender) {
71
+ const queryString = parseURL(e.path).search || "";
72
+ if (queryString.length > maxQueryParamSize) {
73
+ return createError({
74
+ statusCode: 400,
75
+ statusMessage: `[Nuxt OG Image] Query string exceeds maximum allowed length of ${maxQueryParamSize} characters.`
76
+ });
77
+ }
78
+ }
68
79
  const query = getQuery(e);
69
80
  let queryParams = {};
70
81
  for (const k in query) {
@@ -82,14 +93,27 @@ export async function resolveContext(e) {
82
93
  }
83
94
  queryParams = separateProps(queryParams);
84
95
  const basePath = withoutTrailingSlash(urlOptions._path || "/");
96
+ const componentHash = urlOptions._componentHash || "";
85
97
  delete urlOptions._path;
86
98
  delete urlOptions._hash;
99
+ delete urlOptions._componentHash;
87
100
  const basePathWithQuery = queryParams._query && typeof queryParams._query === "object" ? withQuery(basePath, queryParams._query) : basePath;
88
101
  const isDebugJsonPayload = extension === "json" && (import.meta.dev || runtimeConfig.debug);
89
102
  const routeRuleMatcher = createNitroRouteRuleMatcher();
90
103
  const routeRules = routeRuleMatcher(basePath);
91
104
  const ogImageRouteRules = separateProps(routeRules.ogImage);
92
105
  const options = defu(queryParams, urlOptions, ogImageRouteRules, runtimeConfig.defaults);
106
+ const maxDim = runtimeConfig.security?.maxDimension || 2048;
107
+ if (options.width != null) {
108
+ const w = Number(options.width);
109
+ options.width = Number.isFinite(w) ? Math.min(Math.max(1, w), maxDim) : void 0;
110
+ }
111
+ if (options.height != null) {
112
+ const h = Number(options.height);
113
+ options.height = Number.isFinite(h) ? Math.min(Math.max(1, h), maxDim) : void 0;
114
+ }
115
+ if (options.props && typeof options.props === "object")
116
+ options.props = sanitizeProps(options.props);
93
117
  if (!options) {
94
118
  return createError({
95
119
  statusCode: 404,
@@ -97,10 +121,24 @@ export async function resolveContext(e) {
97
121
  });
98
122
  }
99
123
  const normalised = normaliseOptions(options);
124
+ if (normalised.component && normalised.options.props && typeof normalised.options.props === "object") {
125
+ const allowedProps = normalised.component.propNames || [];
126
+ const allowedSet = new Set(allowedProps);
127
+ const raw = normalised.options.props;
128
+ const filtered = {};
129
+ for (const key2 of Object.keys(raw)) {
130
+ if (allowedSet.has(key2))
131
+ filtered[key2] = raw[key2];
132
+ else if (import.meta.dev)
133
+ logger.warn(`[Nuxt OG Image] Prop "${key2}" is not declared by component "${normalised.component.pascalName}" and was dropped. Declared props: ${allowedProps.join(", ")}`);
134
+ }
135
+ normalised.options.props = filtered;
136
+ }
100
137
  if (normalised.component?.category === "community")
101
138
  autoEjectCommunityTemplate(normalised.component, runtimeConfig, { requestPath: e.path });
102
139
  const rendererType = normalised.renderer;
103
- const key = normalised.options.cacheKey || (hashMatch ? `hash:${hashMatch[1]}` : resolvePathCacheKey(e, basePathWithQuery, runtimeConfig.cacheQueryParams));
140
+ const baseCacheKey = normalised.options.cacheKey || (hashMatch ? `hash:${hashMatch[1]}` : resolvePathCacheKey(e, basePathWithQuery, normalised.options));
141
+ const key = componentHash ? `${baseCacheKey}:${componentHash}` : baseCacheKey;
104
142
  let renderer;
105
143
  switch (rendererType) {
106
144
  case "satori":