@camera.ui/server 0.0.89 → 0.0.91

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 (119) hide show
  1. package/dist/interface/assets/{404-co30HPev.js → 404-DGUJCxZf.js} +1 -1
  2. package/dist/interface/assets/{About-BCKeUGk3.js → About-BTrHdyyV.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-DyqmLmxI.js → Adminpanel-DJXuFTSM.js} +1 -1
  4. package/dist/interface/assets/{Automation-BpMPRwi4.js → Automation-EiuRFhAZ.js} +2 -2
  5. package/dist/interface/assets/{Automations-CTZBwEjR.js → Automations-CvRcqapD.js} +1 -1
  6. package/dist/interface/assets/{Camera-DW_54mER.js → Camera-xnpjwtIs.js} +2 -2
  7. package/dist/interface/assets/{CameraConsole-CJlyAhLQ.js → CameraConsole-DXWTwUZP.js} +1 -1
  8. package/dist/interface/assets/{Cameras-CynDfdyU.js → Cameras-BsCHNz8P.js} +1 -1
  9. package/dist/interface/assets/{Camview-C9fLF5p2.js → Camview-DcsypDAx.js} +1 -1
  10. package/dist/interface/assets/{Config-Dil7gkU1.js → Config-DSQ8Lnlt.js} +1 -1
  11. package/dist/interface/assets/{ConfigActionCameraControl-9ManmR_w.js → ConfigActionCameraControl-CBKAmQHo.js} +1 -1
  12. package/dist/interface/assets/{ConfigActionNotification-gZ8RFmSJ.js → ConfigActionNotification-C3AapWV_.js} +1 -1
  13. package/dist/interface/assets/{ConfigActionPlugin-9mhYqMVg.js → ConfigActionPlugin-uBybWoW3.js} +1 -1
  14. package/dist/interface/assets/{ConfigActionSensor-BgXC06jA.js → ConfigActionSensor-mDsYN4Jx.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionSnapshot-D6SDN3PY.js → ConfigActionSnapshot-j6F9cHxc.js} +1 -1
  16. package/dist/interface/assets/{ConfigConditionSensorState-Bqbyd5o9.js → ConfigConditionSensorState-czbhdDYN.js} +1 -1
  17. package/dist/interface/assets/{ConfigTriggerDetection-BjDi3ERC.js → ConfigTriggerDetection-DOuYcxK2.js} +1 -1
  18. package/dist/interface/assets/{ConfigTriggerGeofence-C0-Uhq8b.js → ConfigTriggerGeofence-Bfmy8dWu.js} +1 -1
  19. package/dist/interface/assets/{ConfigTriggerSensor-BBVl6eRI.js → ConfigTriggerSensor-B4f1FLEx.js} +1 -1
  20. package/dist/interface/assets/{ConfigTriggerSystem-I54h5JkD.js → ConfigTriggerSystem-DDi5FfKr.js} +1 -1
  21. package/dist/interface/assets/{Console-h9s7ob8z.js → Console-Cai-gPYI.js} +1 -1
  22. package/dist/interface/assets/{CuiAvatar-B-hIwVL3.js → CuiAvatar-CO46fyUA.js} +1 -1
  23. package/dist/interface/assets/{CuiBottomSheet-CT2MDZ2w.js → CuiBottomSheet-DhiOYOdi.js} +1 -1
  24. package/dist/interface/assets/CuiBottomSheet-am53yKeq.js +1 -0
  25. package/dist/interface/assets/{CuiCameraCard-C_vnbvj3.js → CuiCameraCard-BjO1XlxZ.js} +1 -1
  26. package/dist/interface/assets/{CuiCameraPipCard-B4vRJErQ.js → CuiCameraPipCard-2TonoKQu.js} +1 -1
  27. package/dist/interface/assets/{CuiCameraRecordings-Cxsf6_BO.js → CuiCameraRecordings-CODZCqKp.js} +1 -1
  28. package/dist/interface/assets/{CuiCameraShares-DwlA-I86.js → CuiCameraShares-Z4Zi_S6X.js} +1 -1
  29. package/dist/interface/assets/{CuiCameraSnapshot-Dbut4xsv.js → CuiCameraSnapshot-CLrFhkzU.js} +1 -1
  30. package/dist/interface/assets/{CuiCameraTable-45bytt0t.js → CuiCameraTable-BZhlpITf.js} +1 -1
  31. package/dist/interface/assets/{CuiImage-fqAOZjUq.js → CuiImage-CZlhNpZc.js} +1 -1
  32. package/dist/interface/assets/{CuiMenu-DW_XRoWp.js → CuiMenu-DRbeduzk.js} +1 -1
  33. package/dist/interface/assets/{CuiPluginCard-Emy3RTR8.js → CuiPluginCard-7jbKSV0j.js} +2 -2
  34. package/dist/interface/assets/{CuiPluginOAuthButton-BiAE0hXQ.js → CuiPluginOAuthButton-yLnhvjke.js} +2 -2
  35. package/dist/interface/assets/{CuiQRCode-DHeZXcsR.js → CuiQRCode-DVFfJlJz.js} +1 -1
  36. package/dist/interface/assets/{CuiRecordingsGrid-D6TmFzl4.js → CuiRecordingsGrid-BGJtNWn1.js} +1 -1
  37. package/dist/interface/assets/{CuiSchema-D4Bi0dJu.js → CuiSchema-Bv35CnHS.js} +1 -1
  38. package/dist/interface/assets/{Faces-DuzeSvM_.js → Faces-BAeXYJhd.js} +1 -1
  39. package/dist/interface/assets/{FirstSteps-BC948zEX.js → FirstSteps-p8NGgF3j.js} +1 -1
  40. package/dist/interface/assets/{Instances-CHb7PEYG.js → Instances-BtpvnInM.js} +1 -1
  41. package/dist/interface/assets/{Menu-DAWPMfFl.js → Menu-D4JpHZij.js} +1 -1
  42. package/dist/interface/assets/{OAuthDeviceFlow-C04_s9_u.js → OAuthDeviceFlow-Dxoa8854.js} +1 -1
  43. package/dist/interface/assets/{Plugin-DrQlaA_j.js → Plugin-Bzm3s2QZ.js} +1 -1
  44. package/dist/interface/assets/{PluginConsole-QrEbxAZ5.js → PluginConsole-4-87jpcM.js} +1 -1
  45. package/dist/interface/assets/{PluginSchema-BjopPs1j.js → PluginSchema-BqrB8wQJ.js} +1 -1
  46. package/dist/interface/assets/{Plugins-B7p2facZ.js → Plugins-BVKsFjK-.js} +2 -2
  47. package/dist/interface/assets/{Recordings-DeW-wdoR.js → Recordings-CdU-tmVt.js} +1 -1
  48. package/dist/interface/assets/{Settings-BXHcMV5q.js → Settings-Ds5LFZCd.js} +1 -1
  49. package/dist/interface/assets/SettingsAccount-BQRRfMfi.js +1 -0
  50. package/dist/interface/assets/{SettingsAccount-C_gvUwgq.js → SettingsAccount-ByBd2zx_.js} +1 -1
  51. package/dist/interface/assets/{SettingsAppearance-Bp1UnsXB.js → SettingsAppearance-BY4Wo2-o.js} +1 -1
  52. package/dist/interface/assets/SettingsAppearance-BZ3eEaNS.js +1 -0
  53. package/dist/interface/assets/{SettingsBackup-CUJpN0UK.js → SettingsBackup-C64eGQ4z.js} +1 -1
  54. package/dist/interface/assets/SettingsNotifications-BpBK0vUB.js +2 -0
  55. package/dist/interface/assets/{SettingsRecordings-CWmfG-m8.js → SettingsRecordings-Dyfw7tu0.js} +1 -1
  56. package/dist/interface/assets/{SettingsRemote-Cfw1UDTq.js → SettingsRemote-AA8KRV6E.js} +1 -1
  57. package/dist/interface/assets/SettingsSystem-CReduJ2-.js +2 -0
  58. package/dist/interface/assets/{SettingsUsers-EA3pkJ-B.js → SettingsUsers-kzd83pMM.js} +1 -1
  59. package/dist/interface/assets/{Terminal-BTI74rvo.js → Terminal-CcjA6wjm.js} +1 -1
  60. package/dist/interface/assets/{VersionsHandler-l7tefYXW.js → VersionsHandler-CKePa3IK.js} +1 -1
  61. package/dist/interface/assets/{Workers-DP2XKDj_.js → Workers-CSKethmF.js} +1 -1
  62. package/dist/interface/assets/{api-CsrueOfu.js → api-CChrFDmT.js} +1 -1
  63. package/dist/interface/assets/api-DiZ55Kc8.js +2 -0
  64. package/dist/interface/assets/{auth-BaxL37-V.js → auth-DQq1xLWW.js} +1 -1
  65. package/dist/interface/assets/{automations-BiUEMs2m.js → automations-BEeCuqc2.js} +1 -1
  66. package/dist/interface/assets/{backup-BHJ-5CGY.js → backup-DLHpsIK8.js} +1 -1
  67. package/dist/interface/assets/{cameras-D-DkGB5k.js → cameras-CW62AByZ.js} +1 -1
  68. package/dist/interface/assets/{cameras.schema-B93btXUO.js → cameras.schema-CqgWLUAv.js} +1 -1
  69. package/dist/interface/assets/cloudHandoff-DyHfoqj6.js +1 -0
  70. package/dist/interface/assets/{deviceId-ChytJHFg.js → deviceId-CkiK7vmX.js} +1 -1
  71. package/dist/interface/assets/{hasPermission-Cv-Silt3.js → hasPermission-g7MKb703.js} +1 -1
  72. package/dist/interface/assets/{instances-BjBsARle.js → instances-BV9I3c7j.js} +1 -1
  73. package/dist/interface/assets/{locale-_83xCkfX.js → locale-BYt-aVgE.js} +1 -1
  74. package/dist/interface/assets/{main-L2HCiLFS.css → main-CIfIE2H1.css} +1 -1
  75. package/dist/interface/assets/main-RhtUdk1i.js +3 -0
  76. package/dist/interface/assets/{notifications-DjPFJSMi.js → notifications-6APLyMBX.js} +1 -1
  77. package/dist/interface/assets/{plugins-CYXTnaHA.js → plugins-DM1BGcI9.js} +1 -1
  78. package/dist/interface/assets/{round-restart-alt-B4DTry1o.js → round-restart-alt-DYpSazYV.js} +1 -1
  79. package/dist/interface/assets/{router-cAiMkJTu.js → router-DSJRLymd.js} +2 -2
  80. package/dist/interface/assets/server-USCLWg5j.js +1 -0
  81. package/dist/interface/assets/{shares-aCZvOCus.js → shares-Bb1qhUXx.js} +1 -1
  82. package/dist/interface/assets/{theme-CCv8eMkH.js → theme-D2_SYr2z.js} +1 -1
  83. package/dist/interface/assets/types-BM7_Mdl3.js +1 -0
  84. package/dist/interface/assets/{useBiometricCredentials-efWYPOte.js → useBiometricCredentials-DwqOdV6s.js} +1 -1
  85. package/dist/interface/assets/{useCameraOptions-C_DS0VxZ.js → useCameraOptions-BxHlvNNj.js} +1 -1
  86. package/dist/interface/assets/{useCuiDialog-CiyUBAnR.js → useCuiDialog-DDOxJgxq.js} +1 -1
  87. package/dist/interface/assets/{useFileDownload-BmuAS3kq.js → useFileDownload-BtbVxiqd.js} +1 -1
  88. package/dist/interface/assets/{useLogsSocket-yoTXI8LY.js → useLogsSocket-Dcb1eXTJ.js} +1 -1
  89. package/dist/interface/assets/{useStreamStatus-DHcMacRY.js → useStreamStatus-BOA10Y4z.js} +1 -1
  90. package/dist/interface/assets/{users.schema-nZK4wXvw.js → users.schema-Dod-mP8U.js} +1 -1
  91. package/dist/interface/assets/{view-grid-BOIGk1YA.js → view-grid-fG_14uKl.js} +1 -1
  92. package/dist/interface/index.html +29 -29
  93. package/dist/interface/sw.js +1 -1
  94. package/dist/server/package.json +1 -1
  95. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -4
  96. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +2 -2
  97. package/dist/server/src/api/controllers/notifications.controller.js +10 -3
  98. package/dist/server/src/api/controllers/notifications.controller.js.map +1 -1
  99. package/dist/server/src/api/schemas/cameras.schema.js +14 -0
  100. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  101. package/dist/server/src/api/services/notifications.service.d.ts +3 -3
  102. package/dist/server/src/api/services/notifications.service.js +6 -6
  103. package/dist/server/src/api/services/notifications.service.js.map +1 -1
  104. package/dist/server/src/manager/notificationManager.d.ts +6 -3
  105. package/dist/server/src/manager/notificationManager.js +32 -14
  106. package/dist/server/src/manager/notificationManager.js.map +1 -1
  107. package/dist/server/src/manager/terminalManager.js +4 -0
  108. package/dist/server/src/manager/terminalManager.js.map +1 -1
  109. package/package.json +1 -1
  110. package/dist/interface/assets/CuiBottomSheet-lLGlW6W9.js +0 -1
  111. package/dist/interface/assets/SettingsAccount-CDs9kgkl.js +0 -1
  112. package/dist/interface/assets/SettingsAppearance-CmIQg0LB.js +0 -1
  113. package/dist/interface/assets/SettingsNotifications-GFUeBNtc.js +0 -2
  114. package/dist/interface/assets/SettingsSystem-B8Egv2PY.js +0 -2
  115. package/dist/interface/assets/api-Co-27wVr.js +0 -2
  116. package/dist/interface/assets/cloudHandoff-DkSQZL0l.js +0 -1
  117. package/dist/interface/assets/main-C-5uV5Ps.js +0 -3
  118. package/dist/interface/assets/server-2xTGm7ZB.js +0 -1
  119. package/dist/interface/assets/types-QvsYiGdQ.js +0 -1
@@ -1 +1 @@
1
- import{A as e,N as t,S as n,b as r,d as i,j as a,w as o}from"./api-Co-27wVr.js";import{$n as s,$t as c,F as l,I as u,Qn as d,Xt as f,Yn as p,Yt as m,or as h,wn as g,z as _}from"./vendor-CF-D4B9g.js";import{Di as v,J as ee,Li as y,O as b,kt as x}from"./vendor-cameraui-tvNekvZ-.js";import{d as S,l as C}from"./vendor-core-DinQdIbm.js";import{t as te}from"./hasPermission-Cv-Silt3.js";import{t as w}from"./useCuiDialog-CiyUBAnR.js";var T={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function E(e,t){return g(),c(`svg`,T,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var D=p({name:`bx-cctv`,render:E}),O={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function k(e,t){return g(),c(`svg`,O,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var A=p({name:`bxs-server`,render:k});async function j(t){return(await e.get(`/instances`,{signal:t})).data}async function M(t){return(await e.post(`/instances`,t)).data}async function N({id:t,data:n}){return(await e.put(`/instances/${t}`,n)).data}async function P(t){await e.delete(`/instances/${t}`)}async function F(t){return(await e.patch(`/instances/${t}/favorite`)).data}async function I(t){return(await e.post(`/instances/${t}/login`)).data}async function L(t,n){return(await e.get(`/instances/${t}/status`,{signal:n})).data}var R=class{_queryClient=_();toast=n();t=o.global.t;listQuery(){return r({queryKey:[`instances`],queryFn:({signal:e})=>j(e)})}statusQueries(e){return u({queries:m(()=>h(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>L(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return l({mutationFn:M,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return l({mutationFn:N,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return l({mutationFn:async e=>{await P(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return l({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return l({mutationFn:I,onError:()=>{}})}};function z(e){let{prefix:t,enabled:n}=e;function r(e,r,i,a){if(!n)return;let o=new Date,s=`[${t} ${String(o.getHours()).padStart(2,`0`)}:${String(o.getMinutes()).padStart(2,`0`)}:${String(o.getSeconds()).padStart(2,`0`)}.${String(o.getMilliseconds()).padStart(3,`0`)}]`;a===void 0?console[e](s,`[${r}]`,i):console[e](s,`[${r}]`,i,a)}return{info:(e,t,n)=>r(`log`,e,t,n),event:(e,t,n)=>r(`log`,e,`[Event] ${t}`,n),warn:(e,t,n)=>r(`warn`,e,t,n),error:(e,t,n)=>r(`error`,e,t,n)}}var B=3e4,V=5e3,H=`__home__`,U=new Set([`localhost`,`127.0.0.1`,`::1`]),W=z({prefix:`Instances`,enabled:!0});async function G(e,t){try{let n=AbortSignal.timeout(V),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return W.event(`probe`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return W.event(`probe`,`${e} → FAIL`,n),!1}}function K(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function q(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=S(`instances`,()=>{let e=i(),r=C(),c=n(),l=w(),u=_(),{t:f}=o.global,p=v(`instanceTokens`,{}),h=v(`activeInstanceId`,null),g=s(!1),S=s(null),T=s(0),E=0,D=s(null),O=s([]),k=y(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),A=m(()=>h.value===null),L=m(()=>h.value===null?null:O.value.find(e=>e.id===h.value)?.url??null);async function R(){try{if(!te(void 0,`admin`))return;let e=await j();O.value=e.instances,D.value=e.homeId,W.info(`fetch`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){W.warn(`fetch`,`failed`,e)}}let z=m(()=>{let e=D.value;return O.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=p.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function V(){let e=p.value[H],t=h.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:f(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=m(()=>{if(h.value!==null){let e=z.value.find(e=>e.id===h.value);if(e)return e}return V()}),Y=m(()=>z.value.filter(e=>e.favorite)),X=m(()=>Y.value.length>0||h.value!==null||k.value!==null);function Z(e){return O.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await F(e),n=O.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await M(e);return O.value=[...O.value,t],t}async function ie(e){await P(e),O.value=O.value.filter(t=>t.id!==e),delete p.value[e]}async function ae(e,t){let n=await N({id:e,data:t}),r=O.value.findIndex(t=>t.id===e);r!==-1&&(O.value[r]=n)}async function oe(e,t){let n=O.value.find(t=>t.id===e);return n?G(n.url,t):!1}function Q(){let t=a().target.value;if(!t?.tokens.access){W.event(`save-tokens`,`skipped — no live access token`);return}let n=h.value??H;p.value[n]={userData:q(t.tokens,e.user??void 0),lastConnectedAt:Date.now(),url:t.endpoint.url},W.event(`save-tokens`,`slot=${n} url=${t.endpoint.url}`)}function se(){if(h.value===null){t.value=null,W.event(`restore-override`,`no active instance — home target`);return}let e=p.value[h.value],n=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;t.value=n,W.event(`restore-override`,`activeId=${h.value} → ${n??`no cached url`}`)}async function ce(n){if(g.value){W.warn(`switch`,`ignored — another switch is already in progress`);return}let i=n===null?V():z.value.find(e=>e.id===n)??V();if(n!==null&&$(i.url)&&!await ue(i.name)){W.info(`switch`,`URL handoff declined by user`);return}let o=++E;g.value=!0,S.value=i.name,W.info(`switch`,`START targetId=${n??`home`} gen=${o}`),W.info(`switch`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(n!==null){let e=await G(i.url);if(o!==E){W.event(`switch`,`aborted after probe — newer gen=${E}`);return}if(!e){W.warn(`switch`,`target unreachable — ${i.url}`),c.add({severity:`warn`,detail:f(`instances.unreachable`,{name:i.name}),life:3e3});return}}let s=null;if(n!==null&&i.hasCredentials)try{s=await I(n),W.event(`switch`,`backend relay login OK`)}catch(e){W.warn(`switch`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==E){W.event(`switch`,`aborted after relay-login — newer gen=${E}`);return}Q();let l=n??H,d=s?K(s):le(l);if(W.event(`switch`,`tokens source: ${s?`fresh`:d?`cached`:`none`} (slot=${l})`),n!==null&&$(i.url)){W.info(`switch`,`URL handoff required — leaving SPA`),await de(i,s);return}let m=a();if(m.reset(),W.event(`switch`,`kernel RESET`),x(),b(),ee(),u.clear(),W.event(`switch`,`vue-query cleared`),h.value=n,t.value=n===null?null:i.url,W.event(`switch`,`activeId=${n} instanceOverride=${t.value??`null`}`),d&&s&&(p.value[l]={userData:s,lastConnectedAt:Date.now(),url:i.url},e.user={_id:s._id,username:s.username,role:s.role,firstLogin:s.firstLogin,avatar:s.avatar}),d){let e={url:i.url,mode:`direct-lan`,priority:0};W.info(`switch`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:d},n??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),B))])}else{W.warn(`switch`,`no tokens — boot + route to login`),m.boot(n??`home`),e.user=null,r.push(`/`);return}if(o!==E){W.event(`switch`,`aborted after seedAndRetry — newer gen=${E}`);return}T.value++,W.info(`switch`,`DONE gen=${o} → /home`),r.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(W.error(`switch`,`TIMEOUT after ${B}ms`),c.add({severity:`error`,detail:f(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(W.error(`switch`,`failed`,e),c.add({severity:`error`,detail:e,life:3e3}))}finally{o===E&&(g.value=!1,S.value=null)}}function le(e){let t=p.value[e];return t?.userData?.access_token?K(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=U.has(t.hostname)&&!U.has(n.hostname);return r||i}catch{return!1}}function ue(e){return W.warn(`switch`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};l.openTextDialog({data:{title:f(`instances.insecure_handoff_title`),confirmText:f(`instances.insecure_handoff_confirm`),contentText:f(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;W.info(`url-handoff`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){p.value={},h.value=null,t.value=null,k.value=null,O.value=[],D.value=null,W.info(`reset`,`store cleared`)}return{instances:z,activeInstance:J,activeId:h,activeUrl:L,isHomeActive:A,isMultiInstance:X,isSwitching:d(g),switchTargetName:d(S),switchKey:d(T),serverHomeId:D,redirectInfo:k,serverInstances:O,instanceTokens:p,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:R,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{D as a,A as i,z as n,R as r,J as t};
1
+ import{A as e,N as t,S as n,b as r,d as i,j as a,w as o}from"./api-DiZ55Kc8.js";import{$n as s,$t as c,F as l,I as u,Qn as d,Xt as f,Yn as p,Yt as m,or as h,wn as g,z as _}from"./vendor-CF-D4B9g.js";import{Di as v,J as ee,Li as y,O as b,kt as x}from"./vendor-cameraui-tvNekvZ-.js";import{d as S,l as C}from"./vendor-core-DinQdIbm.js";import{t as te}from"./hasPermission-g7MKb703.js";import{t as w}from"./useCuiDialog-DDOxJgxq.js";var T={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function E(e,t){return g(),c(`svg`,T,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var D=p({name:`bx-cctv`,render:E}),O={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function k(e,t){return g(),c(`svg`,O,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var A=p({name:`bxs-server`,render:k});async function j(t){return(await e.get(`/instances`,{signal:t})).data}async function M(t){return(await e.post(`/instances`,t)).data}async function N({id:t,data:n}){return(await e.put(`/instances/${t}`,n)).data}async function P(t){await e.delete(`/instances/${t}`)}async function F(t){return(await e.patch(`/instances/${t}/favorite`)).data}async function I(t){return(await e.post(`/instances/${t}/login`)).data}async function L(t,n){return(await e.get(`/instances/${t}/status`,{signal:n})).data}var R=class{_queryClient=_();toast=n();t=o.global.t;listQuery(){return r({queryKey:[`instances`],queryFn:({signal:e})=>j(e)})}statusQueries(e){return u({queries:m(()=>h(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>L(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return l({mutationFn:M,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return l({mutationFn:N,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return l({mutationFn:async e=>{await P(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return l({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return l({mutationFn:I,onError:()=>{}})}};function z(e){let{prefix:t,enabled:n}=e;function r(e,r,i,a){if(!n)return;let o=new Date,s=`[${t} ${String(o.getHours()).padStart(2,`0`)}:${String(o.getMinutes()).padStart(2,`0`)}:${String(o.getSeconds()).padStart(2,`0`)}.${String(o.getMilliseconds()).padStart(3,`0`)}]`;a===void 0?console[e](s,`[${r}]`,i):console[e](s,`[${r}]`,i,a)}return{info:(e,t,n)=>r(`log`,e,t,n),event:(e,t,n)=>r(`log`,e,`[Event] ${t}`,n),warn:(e,t,n)=>r(`warn`,e,t,n),error:(e,t,n)=>r(`error`,e,t,n)}}var B=3e4,V=5e3,H=`__home__`,U=new Set([`localhost`,`127.0.0.1`,`::1`]),W=z({prefix:`Instances`,enabled:!0});async function G(e,t){try{let n=AbortSignal.timeout(V),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return W.event(`probe`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return W.event(`probe`,`${e} → FAIL`,n),!1}}function K(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function q(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=S(`instances`,()=>{let e=i(),r=C(),c=n(),l=w(),u=_(),{t:f}=o.global,p=v(`instanceTokens`,{}),h=v(`activeInstanceId`,null),g=s(!1),S=s(null),T=s(0),E=0,D=s(null),O=s([]),k=y(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),A=m(()=>h.value===null),L=m(()=>h.value===null?null:O.value.find(e=>e.id===h.value)?.url??null);async function R(){try{if(!te(void 0,`admin`))return;let e=await j();O.value=e.instances,D.value=e.homeId,W.info(`fetch`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){W.warn(`fetch`,`failed`,e)}}let z=m(()=>{let e=D.value;return O.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=p.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function V(){let e=p.value[H],t=h.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:f(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=m(()=>{if(h.value!==null){let e=z.value.find(e=>e.id===h.value);if(e)return e}return V()}),Y=m(()=>z.value.filter(e=>e.favorite)),X=m(()=>Y.value.length>0||h.value!==null||k.value!==null);function Z(e){return O.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await F(e),n=O.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await M(e);return O.value=[...O.value,t],t}async function ie(e){await P(e),O.value=O.value.filter(t=>t.id!==e),delete p.value[e]}async function ae(e,t){let n=await N({id:e,data:t}),r=O.value.findIndex(t=>t.id===e);r!==-1&&(O.value[r]=n)}async function oe(e,t){let n=O.value.find(t=>t.id===e);return n?G(n.url,t):!1}function Q(){let t=a().target.value;if(!t?.tokens.access){W.event(`save-tokens`,`skipped — no live access token`);return}let n=h.value??H;p.value[n]={userData:q(t.tokens,e.user??void 0),lastConnectedAt:Date.now(),url:t.endpoint.url},W.event(`save-tokens`,`slot=${n} url=${t.endpoint.url}`)}function se(){if(h.value===null){t.value=null,W.event(`restore-override`,`no active instance — home target`);return}let e=p.value[h.value],n=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;t.value=n,W.event(`restore-override`,`activeId=${h.value} → ${n??`no cached url`}`)}async function ce(n){if(g.value){W.warn(`switch`,`ignored — another switch is already in progress`);return}let i=n===null?V():z.value.find(e=>e.id===n)??V();if(n!==null&&$(i.url)&&!await ue(i.name)){W.info(`switch`,`URL handoff declined by user`);return}let o=++E;g.value=!0,S.value=i.name,W.info(`switch`,`START targetId=${n??`home`} gen=${o}`),W.info(`switch`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(n!==null){let e=await G(i.url);if(o!==E){W.event(`switch`,`aborted after probe — newer gen=${E}`);return}if(!e){W.warn(`switch`,`target unreachable — ${i.url}`),c.add({severity:`warn`,detail:f(`instances.unreachable`,{name:i.name}),life:3e3});return}}let s=null;if(n!==null&&i.hasCredentials)try{s=await I(n),W.event(`switch`,`backend relay login OK`)}catch(e){W.warn(`switch`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==E){W.event(`switch`,`aborted after relay-login — newer gen=${E}`);return}Q();let l=n??H,d=s?K(s):le(l);if(W.event(`switch`,`tokens source: ${s?`fresh`:d?`cached`:`none`} (slot=${l})`),n!==null&&$(i.url)){W.info(`switch`,`URL handoff required — leaving SPA`),await de(i,s);return}let m=a();if(m.reset(),W.event(`switch`,`kernel RESET`),x(),b(),ee(),u.clear(),W.event(`switch`,`vue-query cleared`),h.value=n,t.value=n===null?null:i.url,W.event(`switch`,`activeId=${n} instanceOverride=${t.value??`null`}`),d&&s&&(p.value[l]={userData:s,lastConnectedAt:Date.now(),url:i.url},e.user={_id:s._id,username:s.username,role:s.role,firstLogin:s.firstLogin,avatar:s.avatar}),d){let e={url:i.url,mode:`direct-lan`,priority:0};W.info(`switch`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:d},n??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),B))])}else{W.warn(`switch`,`no tokens — boot + route to login`),m.boot(n??`home`),e.user=null,r.push(`/`);return}if(o!==E){W.event(`switch`,`aborted after seedAndRetry — newer gen=${E}`);return}T.value++,W.info(`switch`,`DONE gen=${o} → /home`),r.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(W.error(`switch`,`TIMEOUT after ${B}ms`),c.add({severity:`error`,detail:f(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(W.error(`switch`,`failed`,e),c.add({severity:`error`,detail:e,life:3e3}))}finally{o===E&&(g.value=!1,S.value=null)}}function le(e){let t=p.value[e];return t?.userData?.access_token?K(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=U.has(t.hostname)&&!U.has(n.hostname);return r||i}catch{return!1}}function ue(e){return W.warn(`switch`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};l.openTextDialog({data:{title:f(`instances.insecure_handoff_title`),confirmText:f(`instances.insecure_handoff_confirm`),contentText:f(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;W.info(`url-handoff`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){p.value={},h.value=null,t.value=null,k.value=null,O.value=[],D.value=null,W.info(`reset`,`store cleared`)}return{instances:z,activeInstance:J,activeId:h,activeUrl:L,isHomeActive:A,isMultiInstance:X,isSwitching:d(g),switchTargetName:d(S),switchKey:d(T),serverHomeId:D,redirectInfo:k,serverInstances:O,instanceTokens:p,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:R,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{D as a,A as i,z as n,R as r,J as t};
@@ -1 +1 @@
1
- import{C as e,w as t}from"./api-Co-27wVr.js";import{$n as n,Rn as r,_ as i,v as a}from"./vendor-CF-D4B9g.js";import{Di as o}from"./vendor-cameraui-tvNekvZ-.js";import{d as s}from"./vendor-core-DinQdIbm.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-D0-7UQst.js";var u={de:a,en:i},d=s(`locale`,()=>{let i=o(`locale`,`en`),a=n(e),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return r(i,e=>{p(e),m(e)}),p(i.value),m(i.value),{languages:a,locale:i,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};
1
+ import{C as e,w as t}from"./api-DiZ55Kc8.js";import{$n as n,Rn as r,_ as i,v as a}from"./vendor-CF-D4B9g.js";import{Di as o}from"./vendor-cameraui-tvNekvZ-.js";import{d as s}from"./vendor-core-DinQdIbm.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-D0-7UQst.js";var u={de:a,en:i},d=s(`locale`,()=>{let i=o(`locale`,`en`),a=n(e),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return r(i,e=>{p(e),m(e)}),p(i.value),m(i.value),{languages:a,locale:i,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};
@@ -1 +1 @@
1
- .app-lock-overlay[data-v-272f1996]{z-index:9999;background:var(--ground-background);-webkit-backdrop-filter:blur(20px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cui-update-indicator[data-v-12abbc97]{z-index:9999;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;padding:.75rem 1rem;position:fixed;left:50%;transform:translate(-50%)}.cui-update-indicator__content[data-v-12abbc97]{align-items:center;gap:.5rem;display:flex}.cui-update-indicator__spinner[data-v-12abbc97]{width:20px!important;height:20px!important}.cui-update-indicator__icon[data-v-12abbc97]{width:20px;height:20px;color:var(--text-color)}.cui-update-indicator__text[data-v-12abbc97]{color:var(--text-color);white-space:nowrap;font-size:.875rem}.cui-update-indicator__button[data-v-12abbc97]{white-space:nowrap;margin-left:.5rem}.fade-enter-active[data-v-12abbc97],.fade-leave-active[data-v-12abbc97]{transition:opacity .3s}.fade-enter-from[data-v-12abbc97],.fade-leave-to[data-v-12abbc97]{opacity:0}.cui-connection-indicator[data-v-89935ae5]{z-index:9999;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;max-width:calc(100vw - 2rem);padding:.75rem 1rem;position:fixed;left:50%;transform:translate(-50%)}.cui-connection-indicator__content[data-v-89935ae5]{align-items:center;gap:.5rem;display:flex}.cui-connection-indicator__text[data-v-89935ae5]{color:var(--text-color);white-space:nowrap;font-size:.875rem}.cui-connection-indicator__button[data-v-89935ae5]{margin-left:.5rem}.fade-enter-active[data-v-89935ae5],.fade-leave-active[data-v-89935ae5]{transition:opacity .3s}.fade-enter-from[data-v-89935ae5],.fade-leave-to[data-v-89935ae5]{opacity:0}.close-button[data-v-d1e31a06],.minify-button[data-v-d1e31a06],.expand-button[data-v-d1e31a06],.disabled-button[data-v-d1e31a06]{-webkit-app-region:no-drag;border-radius:20px;width:12px;height:12px;transition:all .2s ease-in-out}.close-button[data-v-d1e31a06]:hover,.minify-button[data-v-d1e31a06]:hover,.expand-button[data-v-d1e31a06]:hover,.disabled-button[data-v-d1e31a06]:hover{cursor:default}.close-button[data-v-d1e31a06]{background-color:#ff5954;border:0 solid #df302a}.close-button[data-v-d1e31a06]:active{background-color:#d63f3a;border:0 solid #c12e26}.minify-button[data-v-d1e31a06]{background-color:#fdbd30;border:0 solid #c18b17}.minify-button[data-v-d1e31a06]:active{background-color:#c18b17;border:0 solid #a27613}.expand-button[data-v-d1e31a06]{background-color:#00ca3b;border:0 solid #02a934}.expand-button[data-v-d1e31a06]:active{background-color:#02a934;border:0 solid #028b2b}.disabled-button[data-v-d1e31a06]{background-color:#3d3d3d;border:0 solid #282828}.navitem-active[data-v-9e0c467b]{background:var(--navitem-active-color,var(--p-button-text-primary-active-background));border-color:#0000;border-top:1px solid var(--navitem-active-color,var(--p-button-outlined-danger-hover-background))}.navbar-group-enter-active[data-v-b7562e9d],.navbar-group-leave-active[data-v-b7562e9d]{transition:all .2s;overflow:hidden}.navbar-group-enter-from[data-v-b7562e9d],.navbar-group-leave-to[data-v-b7562e9d]{opacity:0;max-height:0}.navbar-group-enter-to[data-v-b7562e9d],.navbar-group-leave-from[data-v-b7562e9d]{opacity:1;max-height:400px}.cui-bottombar[data-v-b0d768aa]:before{content:"";background:linear-gradient(#0000000d,#0000);height:1px;position:absolute;top:-1px;left:0;right:0}.notification-menu{left:auto!important;right:calc(env(safe-area-inset-right,0px) + .5rem)!important;top:calc(env(safe-area-inset-top,0px) + 3.3rem)!important}.cui-topbar[data-v-052ebc62]{background:var(--topbar-background);border-bottom:1px solid var(--border-color)}.playground-container[data-v-a2f172f4]{z-index:100;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;flex:1;justify-content:center;position:relative}@media (width>=800px){.playground-container[data-v-a2f172f4]{border-radius:0 0 2px 2px}}.playground-container .playground[data-v-a2f172f4]{position:relative}.playground-container .playground:hover .handle[data-v-a2f172f4]{opacity:1}.playground-container .playground.customizing[data-v-a2f172f4]{cursor:crosshair}.playground-container .playground.start .custom-notice[data-v-a2f172f4]{opacity:1}.playground-container .playground .custom-notice[data-v-a2f172f4]{pointer-events:none;opacity:0;background:#fff0;justify-content:center;align-items:center;transition:background .25s;display:flex;position:absolute;inset:0 0 1rem}.playground-container .playground .custom-notice div[data-v-a2f172f4]{text-align:center;opacity:1;background:#ffffffe6;border-radius:2px;width:100%;margin:0 2rem;padding:1rem;transition:opacity .25s;box-shadow:0 1px 2px #100a0926}.playground-container .playground .custom-notice div .touchy[data-v-a2f172f4]:after{content:"Click"}.playground-container .playground .sandbox[data-v-a2f172f4]{touch-action:none;width:100%;height:100%;position:relative;inset:0}.playground-container .playground .sandbox .shadowboard[data-v-a2f172f4]{z-index:11;pointer-events:none;opacity:0;background:#df2a4c4d 50%/cover;transition:opacity .375s;position:absolute;inset:10px}.playground-container .playground .sandbox .shadowboard.on[data-v-a2f172f4]{opacity:0}.playground-container .playground.customizing .handle[data-v-a2f172f4]{pointer-events:none}.handles[data-v-a2f172f4]{z-index:10;position:absolute;inset:0}.handles .clipboard[data-v-a2f172f4]{z-index:1;position:absolute;inset:0}.handles .clipboard .polygon-container[data-v-a2f172f4]{position:absolute}.handles .clipboard .polygon-container path.selected[data-v-a2f172f4]{stroke-width:2px}.handles .clipboard .polygon-container path.dash[data-v-a2f172f4]{stroke-dasharray:5 5}.handles .delete-point[data-v-a2f172f4],.handles .handle[data-v-a2f172f4]{z-index:2;width:20px;height:20px;position:absolute}.handles .handle[data-v-a2f172f4]{opacity:.8;border-radius:50%;transition:opacity .25s;box-shadow:inset 0 0 0 10px #fff}.handles .handle.is-dragging[data-v-a2f172f4],.handles .handle.is-pointer-down[data-v-a2f172f4]{z-index:100;cursor:none;transition:box-shadow;box-shadow:inset 0 0 0 10px #d0d0d0}.handles .handle.draggable[data-v-a2f172f4]{cursor:grab}.handles .handle.show-delete .delete-point[data-v-a2f172f4]{opacity:1;transition:transform .25s cubic-bezier(.15,1,.3,1.1),opacity .25s;transform:scale3d(.9,.9,.9)}.handles .handle[data-v-a2f172f4]:after{content:"";display:block;position:absolute;inset:-8px}.handles .handle .delete-point[data-v-a2f172f4]{transform-origin:0;cursor:pointer;opacity:.75;clip-path:polygon(25% 0,100% 1%,100% 100%,25% 100%,0 50%);background:#d3d0c9;border-radius:3px;width:25px;padding-left:5px;transition:transform .25s,opacity .25s;position:absolute;top:0;left:22px;transform:scale3d(0,0,0)}.handles .handle .delete-point[data-v-a2f172f4]:after{content:"";clip-path:polygon(20% 10%,10% 20%,40% 50%,10% 80%,20% 90%,50% 60%,80% 90%,90% 80%,60% 50%,90% 20%,80% 10%,50% 40%);background:#100a09;display:block;position:absolute;inset:4px 4px 4px 9px}.cui-battery-info[data-v-c181f3d4]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-battery-info--disabled[data-v-c181f3d4]{opacity:.6}.cui-battery-info__header[data-v-c181f3d4]{align-items:center;gap:.5rem;display:flex}.cui-battery-info__icon[data-v-c181f3d4]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-battery-info__icon-svg[data-v-c181f3d4]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-battery-info__icon-svg--critical[data-v-c181f3d4]{animation:1s ease-in-out infinite battery-pulse-c181f3d4}@keyframes battery-pulse-c181f3d4{0%,to{opacity:1}50%{opacity:.5}}.cui-battery-info__info[data-v-c181f3d4]{flex-direction:column;flex:1;gap:0;display:flex}.cui-battery-info__label[data-v-c181f3d4]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-battery-info__status[data-v-c181f3d4]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-battery-info__status--charging[data-v-c181f3d4]{color:#3b82f6}.cui-battery-info__status--full[data-v-c181f3d4]{color:#22c55e}.cui-battery-info__status--low[data-v-c181f3d4]{color:#eab308}.cui-battery-info__status--critical[data-v-c181f3d4]{color:#ef4444;animation:.5s ease-in-out infinite alternate status-blink-c181f3d4}@keyframes status-blink-c181f3d4{0%{opacity:1}to{opacity:.6}}.cui-battery-info__level[data-v-c181f3d4]{color:var(--text-color);font-size:.875rem;font-weight:600}.cui-battery-info__level--charging[data-v-c181f3d4]{color:#3b82f6}.cui-battery-info__level--full[data-v-c181f3d4]{color:#22c55e}.cui-battery-info__level--low[data-v-c181f3d4]{color:#eab308}.cui-battery-info__level--critical[data-v-c181f3d4]{color:#ef4444}.cui-battery-info__bar[data-v-c181f3d4]{border-radius:.125rem;height:.25rem;overflow:hidden}.cui-battery-info__bar-fill[data-v-c181f3d4]{border-radius:.125rem;height:100%;transition:width .3s,background-color .3s}.cui-battery-info--small[data-v-c181f3d4]{gap:.375rem;padding:.5rem}.cui-battery-info--small .cui-battery-info__icon[data-v-c181f3d4]{width:1.25rem;height:1.25rem}.cui-battery-info--small .cui-battery-info__icon-svg[data-v-c181f3d4]{width:1.125rem;height:1.125rem}.cui-battery-info--small .cui-battery-info__label[data-v-c181f3d4]{font-size:.75rem}.cui-battery-info--small .cui-battery-info__status[data-v-c181f3d4]{font-size:.625rem}.cui-battery-info--small .cui-battery-info__level[data-v-c181f3d4]{font-size:.75rem}.cui-battery-info--small .cui-battery-info__bar[data-v-c181f3d4]{height:.1875rem}.cui-battery-info--large[data-v-c181f3d4]{gap:.75rem;padding:1rem}.cui-battery-info--large .cui-battery-info__icon[data-v-c181f3d4]{width:2.25rem;height:2.25rem}.cui-battery-info--large .cui-battery-info__icon-svg[data-v-c181f3d4]{width:2rem;height:2rem}.cui-battery-info--large .cui-battery-info__label[data-v-c181f3d4]{font-size:1rem}.cui-battery-info--large .cui-battery-info__status[data-v-c181f3d4]{font-size:.875rem}.cui-battery-info--large .cui-battery-info__level[data-v-c181f3d4]{font-size:1rem}.cui-battery-info--large .cui-battery-info__bar[data-v-c181f3d4]{height:.375rem}.cui-humidity-info[data-v-1f41d794]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-humidity-info--disabled[data-v-1f41d794]{opacity:.6}.cui-humidity-info__header[data-v-1f41d794]{align-items:center;gap:.5rem;display:flex}.cui-humidity-info__icon[data-v-1f41d794]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-humidity-info__icon-svg[data-v-1f41d794]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-humidity-info__info[data-v-1f41d794]{flex-direction:column;flex:1;gap:0;display:flex}.cui-humidity-info__label[data-v-1f41d794]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-humidity-info__status[data-v-1f41d794]{font-size:.75rem;font-weight:500;transition:color .2s}.cui-humidity-info__value[data-v-1f41d794]{white-space:nowrap;font-size:.875rem;font-weight:600;transition:color .2s}.cui-humidity-info--small[data-v-1f41d794]{gap:.375rem;padding:.5rem}.cui-humidity-info--small .cui-humidity-info__icon[data-v-1f41d794]{width:1.25rem;height:1.25rem}.cui-humidity-info--small .cui-humidity-info__icon-svg[data-v-1f41d794]{width:1.125rem;height:1.125rem}.cui-humidity-info--small .cui-humidity-info__label[data-v-1f41d794]{font-size:.75rem}.cui-humidity-info--small .cui-humidity-info__status[data-v-1f41d794]{font-size:.625rem}.cui-humidity-info--small .cui-humidity-info__value[data-v-1f41d794]{font-size:.75rem}.cui-humidity-info--large[data-v-1f41d794]{gap:.75rem;padding:1rem}.cui-humidity-info--large .cui-humidity-info__icon[data-v-1f41d794]{width:2.25rem;height:2.25rem}.cui-humidity-info--large .cui-humidity-info__icon-svg[data-v-1f41d794]{width:2rem;height:2rem}.cui-humidity-info--large .cui-humidity-info__label[data-v-1f41d794]{font-size:1rem}.cui-humidity-info--large .cui-humidity-info__status[data-v-1f41d794]{font-size:.875rem}.cui-humidity-info--large .cui-humidity-info__value[data-v-1f41d794]{font-size:1rem}.cui-temperature-info[data-v-0edddec9]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-temperature-info--disabled[data-v-0edddec9]{opacity:.6}.cui-temperature-info__header[data-v-0edddec9]{align-items:center;gap:.5rem;display:flex}.cui-temperature-info__icon[data-v-0edddec9]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-temperature-info__icon-svg[data-v-0edddec9]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-temperature-info__info[data-v-0edddec9]{flex-direction:column;flex:1;gap:0;display:flex}.cui-temperature-info__label[data-v-0edddec9]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-temperature-info__status[data-v-0edddec9]{font-size:.75rem;font-weight:500;transition:color .2s}.cui-temperature-info__value[data-v-0edddec9]{white-space:nowrap;font-size:.875rem;font-weight:600;transition:color .2s}.cui-temperature-info--small[data-v-0edddec9]{gap:.375rem;padding:.5rem}.cui-temperature-info--small .cui-temperature-info__icon[data-v-0edddec9]{width:1.25rem;height:1.25rem}.cui-temperature-info--small .cui-temperature-info__icon-svg[data-v-0edddec9]{width:1.125rem;height:1.125rem}.cui-temperature-info--small .cui-temperature-info__label[data-v-0edddec9]{font-size:.75rem}.cui-temperature-info--small .cui-temperature-info__status[data-v-0edddec9]{font-size:.625rem}.cui-temperature-info--small .cui-temperature-info__value[data-v-0edddec9]{font-size:.75rem}.cui-temperature-info--large[data-v-0edddec9]{gap:.75rem;padding:1rem}.cui-temperature-info--large .cui-temperature-info__icon[data-v-0edddec9]{width:2.25rem;height:2.25rem}.cui-temperature-info--large .cui-temperature-info__icon-svg[data-v-0edddec9]{width:2rem;height:2rem}.cui-temperature-info--large .cui-temperature-info__label[data-v-0edddec9]{font-size:1rem}.cui-temperature-info--large .cui-temperature-info__status[data-v-0edddec9]{font-size:.875rem}.cui-temperature-info--large .cui-temperature-info__value[data-v-0edddec9]{font-size:1rem}.cui-garage-control[data-v-4c6505c2]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-garage-control--disabled[data-v-4c6505c2]{opacity:.6;pointer-events:none}.cui-garage-control__header[data-v-4c6505c2]{align-items:center;gap:.5rem;display:flex}.cui-garage-control__icon[data-v-4c6505c2]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex;position:relative}.cui-garage-control__icon-svg[data-v-4c6505c2]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-garage-control__obstruction[data-v-4c6505c2]{background-color:#ef4444;border-radius:50%;width:8px;height:8px;position:absolute;top:-2px;right:-2px;box-shadow:0 0 6px #ef444499}.cui-garage-control__info[data-v-4c6505c2]{flex-direction:column;gap:0;display:flex}.cui-garage-control__label[data-v-4c6505c2]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-garage-control__status[data-v-4c6505c2]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-garage-control__status--open[data-v-4c6505c2]{color:#22c55e}.cui-garage-control__status--transitioning[data-v-4c6505c2]{color:#facc15;animation:1s ease-in-out infinite cui-garage-pulse-text-4c6505c2}.cui-garage-control__status--stopped[data-v-4c6505c2]{color:#fb923c}@keyframes cui-garage-pulse-text-4c6505c2{0%,to{opacity:1}50%{opacity:.5}}.cui-garage-control--small[data-v-4c6505c2]{gap:.375rem;padding:.5rem}.cui-garage-control--small .cui-garage-control__icon[data-v-4c6505c2]{width:1.25rem;height:1.25rem}.cui-garage-control--small .cui-garage-control__icon-svg[data-v-4c6505c2]{width:1.125rem;height:1.125rem}.cui-garage-control--small .cui-garage-control__label[data-v-4c6505c2]{font-size:.75rem}.cui-garage-control--small .cui-garage-control__status[data-v-4c6505c2]{font-size:.625rem}.cui-garage-control--small .cui-garage-control__obstruction[data-v-4c6505c2]{width:6px;height:6px}.cui-garage-control--large[data-v-4c6505c2]{gap:.75rem;padding:1rem}.cui-garage-control--large .cui-garage-control__icon[data-v-4c6505c2]{width:2.25rem;height:2.25rem}.cui-garage-control--large .cui-garage-control__icon-svg[data-v-4c6505c2]{width:2rem;height:2rem}.cui-garage-control--large .cui-garage-control__label[data-v-4c6505c2]{font-size:1rem}.cui-garage-control--large .cui-garage-control__status[data-v-4c6505c2]{font-size:.875rem}.cui-leak-sensor[data-v-14a46a3f]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-leak-sensor--disabled[data-v-14a46a3f]{opacity:.6}.cui-leak-sensor__header[data-v-14a46a3f]{align-items:center;gap:.5rem;display:flex}.cui-leak-sensor__icon[data-v-14a46a3f]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-leak-sensor__info[data-v-14a46a3f]{flex-direction:column;flex:1;gap:0;display:flex}.cui-leak-sensor__label[data-v-14a46a3f]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-leak-sensor__status[data-v-14a46a3f]{font-size:.75rem;font-weight:500}.cui-leak-sensor__status--detected[data-v-14a46a3f]{color:#3b82f6}.cui-leak-sensor__status--clear[data-v-14a46a3f]{color:var(--text-secondary-color)}.cui-leak-sensor__indicator[data-v-14a46a3f]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-leak-sensor__indicator--detected[data-v-14a46a3f]{background-color:#3b82f6;animation:1.5s ease-in-out infinite pulse-indicator-14a46a3f;box-shadow:0 0 6px #3b82f699}.cui-leak-sensor__indicator--clear[data-v-14a46a3f]{background-color:var(--text-secondary-color)}@keyframes pulse-indicator-14a46a3f{0%,to{opacity:1}50%{opacity:.5}}.cui-leak-sensor--small[data-v-14a46a3f]{gap:.375rem;padding:.5rem}.cui-leak-sensor--small .cui-leak-sensor__icon[data-v-14a46a3f]{width:1.25rem;height:1.25rem}.cui-leak-sensor--small .cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:1.125rem;height:1.125rem}.cui-leak-sensor--small .cui-leak-sensor__label[data-v-14a46a3f]{font-size:.75rem}.cui-leak-sensor--small .cui-leak-sensor__status[data-v-14a46a3f]{font-size:.625rem}.cui-leak-sensor--small .cui-leak-sensor__indicator[data-v-14a46a3f]{width:.375rem;height:.375rem}.cui-leak-sensor--large[data-v-14a46a3f]{gap:.75rem;padding:1rem}.cui-leak-sensor--large .cui-leak-sensor__icon[data-v-14a46a3f]{width:2.25rem;height:2.25rem}.cui-leak-sensor--large .cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:2rem;height:2rem}.cui-leak-sensor--large .cui-leak-sensor__label[data-v-14a46a3f]{font-size:1rem}.cui-leak-sensor--large .cui-leak-sensor__status[data-v-14a46a3f]{font-size:.875rem}.cui-leak-sensor--large .cui-leak-sensor__indicator[data-v-14a46a3f]{width:.625rem;height:.625rem}.cui-smoke-sensor[data-v-4db50b68]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-smoke-sensor--disabled[data-v-4db50b68]{opacity:.6}.cui-smoke-sensor__header[data-v-4db50b68]{align-items:center;gap:.5rem;display:flex}.cui-smoke-sensor__icon[data-v-4db50b68]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-smoke-sensor__info[data-v-4db50b68]{flex-direction:column;flex:1;gap:0;display:flex}.cui-smoke-sensor__label[data-v-4db50b68]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-smoke-sensor__status[data-v-4db50b68]{font-size:.75rem;font-weight:500}.cui-smoke-sensor__status--detected[data-v-4db50b68]{color:#ef4444}.cui-smoke-sensor__status--clear[data-v-4db50b68]{color:var(--text-secondary-color)}.cui-smoke-sensor__indicator[data-v-4db50b68]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-smoke-sensor__indicator--detected[data-v-4db50b68]{background-color:#ef4444;animation:1.5s ease-in-out infinite pulse-indicator-4db50b68;box-shadow:0 0 6px #ef444499}.cui-smoke-sensor__indicator--clear[data-v-4db50b68]{background-color:var(--text-secondary-color)}@keyframes pulse-indicator-4db50b68{0%,to{opacity:1}50%{opacity:.5}}.cui-smoke-sensor--small[data-v-4db50b68]{gap:.375rem;padding:.5rem}.cui-smoke-sensor--small .cui-smoke-sensor__icon[data-v-4db50b68]{width:1.25rem;height:1.25rem}.cui-smoke-sensor--small .cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:1.125rem;height:1.125rem}.cui-smoke-sensor--small .cui-smoke-sensor__label[data-v-4db50b68]{font-size:.75rem}.cui-smoke-sensor--small .cui-smoke-sensor__status[data-v-4db50b68]{font-size:.625rem}.cui-smoke-sensor--small .cui-smoke-sensor__indicator[data-v-4db50b68]{width:.375rem;height:.375rem}.cui-smoke-sensor--large[data-v-4db50b68]{gap:.75rem;padding:1rem}.cui-smoke-sensor--large .cui-smoke-sensor__icon[data-v-4db50b68]{width:2.25rem;height:2.25rem}.cui-smoke-sensor--large .cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:2rem;height:2rem}.cui-smoke-sensor--large .cui-smoke-sensor__label[data-v-4db50b68]{font-size:1rem}.cui-smoke-sensor--large .cui-smoke-sensor__status[data-v-4db50b68]{font-size:.875rem}.cui-smoke-sensor--large .cui-smoke-sensor__indicator[data-v-4db50b68]{width:.625rem;height:.625rem}.cui-occupancy-sensor[data-v-8ca5a1ce]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-occupancy-sensor--disabled[data-v-8ca5a1ce]{opacity:.6}.cui-occupancy-sensor__header[data-v-8ca5a1ce]{align-items:center;gap:.5rem;display:flex}.cui-occupancy-sensor__icon[data-v-8ca5a1ce]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-occupancy-sensor__info[data-v-8ca5a1ce]{flex-direction:column;flex:1;gap:0;display:flex}.cui-occupancy-sensor__label[data-v-8ca5a1ce]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.75rem;font-weight:500}.cui-occupancy-sensor__status--occupied[data-v-8ca5a1ce]{color:#22c55e}.cui-occupancy-sensor__status--empty[data-v-8ca5a1ce]{color:var(--text-secondary-color)}.cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-occupancy-sensor__indicator--occupied[data-v-8ca5a1ce]{background-color:#22c55e;box-shadow:0 0 6px #22c55e99}.cui-occupancy-sensor__indicator--empty[data-v-8ca5a1ce]{background-color:var(--text-secondary-color)}.cui-occupancy-sensor--small[data-v-8ca5a1ce]{gap:.375rem;padding:.5rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__icon[data-v-8ca5a1ce]{width:1.25rem;height:1.25rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:1.125rem;height:1.125rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__label[data-v-8ca5a1ce]{font-size:.75rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.625rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{width:.375rem;height:.375rem}.cui-occupancy-sensor--large[data-v-8ca5a1ce]{gap:.75rem;padding:1rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__icon[data-v-8ca5a1ce]{width:2.25rem;height:2.25rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:2rem;height:2rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__label[data-v-8ca5a1ce]{font-size:1rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.875rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{width:.625rem;height:.625rem}.cui-contact-sensor[data-v-0cc50676]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-contact-sensor--disabled[data-v-0cc50676]{opacity:.6}.cui-contact-sensor__header[data-v-0cc50676]{align-items:center;gap:.5rem;display:flex}.cui-contact-sensor__icon[data-v-0cc50676]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-contact-sensor__icon-svg[data-v-0cc50676]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-contact-sensor__info[data-v-0cc50676]{flex-direction:column;flex:1;gap:0;display:flex}.cui-contact-sensor__label[data-v-0cc50676]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-contact-sensor__status[data-v-0cc50676]{font-size:.75rem;font-weight:500}.cui-contact-sensor__status--closed[data-v-0cc50676]{color:#22c55e}.cui-contact-sensor__status--open[data-v-0cc50676]{color:#fb923c}.cui-contact-sensor__indicator[data-v-0cc50676]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-contact-sensor__indicator--closed[data-v-0cc50676]{background-color:#22c55e;box-shadow:0 0 6px #22c55e99}.cui-contact-sensor__indicator--open[data-v-0cc50676]{background-color:#fb923c;animation:1.5s ease-in-out infinite pulse-indicator-0cc50676;box-shadow:0 0 6px #fb923c99}@keyframes pulse-indicator-0cc50676{0%,to{opacity:1}50%{opacity:.5}}.cui-contact-sensor--small[data-v-0cc50676]{gap:.375rem;padding:.5rem}.cui-contact-sensor--small .cui-contact-sensor__icon[data-v-0cc50676]{width:1.25rem;height:1.25rem}.cui-contact-sensor--small .cui-contact-sensor__icon-svg[data-v-0cc50676]{width:1.125rem;height:1.125rem}.cui-contact-sensor--small .cui-contact-sensor__label[data-v-0cc50676]{font-size:.75rem}.cui-contact-sensor--small .cui-contact-sensor__status[data-v-0cc50676]{font-size:.625rem}.cui-contact-sensor--small .cui-contact-sensor__indicator[data-v-0cc50676]{width:.375rem;height:.375rem}.cui-contact-sensor--large[data-v-0cc50676]{gap:.75rem;padding:1rem}.cui-contact-sensor--large .cui-contact-sensor__icon[data-v-0cc50676]{width:2.25rem;height:2.25rem}.cui-contact-sensor--large .cui-contact-sensor__icon-svg[data-v-0cc50676]{width:2rem;height:2rem}.cui-contact-sensor--large .cui-contact-sensor__label[data-v-0cc50676]{font-size:1rem}.cui-contact-sensor--large .cui-contact-sensor__status[data-v-0cc50676]{font-size:.875rem}.cui-contact-sensor--large .cui-contact-sensor__indicator[data-v-0cc50676]{width:.625rem;height:.625rem}.cui-doorbell[data-v-081a6b0b]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;transition:all .2s;display:flex}.cui-doorbell--disabled[data-v-081a6b0b]{opacity:.6;pointer-events:none}.cui-doorbell__header[data-v-081a6b0b]{align-items:center;gap:.5rem;display:flex}.cui-doorbell__icon[data-v-081a6b0b]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-doorbell__icon-svg[data-v-081a6b0b]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-doorbell__icon-svg--ringing[data-v-081a6b0b]{animation:.15s ease-in-out infinite doorbell-shake-081a6b0b}@keyframes doorbell-shake-081a6b0b{0%,to{transform:rotate(-15deg)}50%{transform:rotate(15deg)}}.cui-doorbell__info[data-v-081a6b0b]{flex-direction:column;flex:1;gap:0;display:flex}.cui-doorbell__label[data-v-081a6b0b]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-doorbell__status[data-v-081a6b0b]{color:var(--text-secondary-color);font-size:.75rem}.cui-doorbell__status--ringing[data-v-081a6b0b]{color:#eab308;font-weight:600;animation:.3s ease-in-out infinite alternate blink-081a6b0b}@keyframes blink-081a6b0b{0%{opacity:1}to{opacity:.5}}.cui-doorbell__button[data-v-081a6b0b]{margin-left:auto}.cui-doorbell__button-icon[data-v-081a6b0b]{width:1rem;height:1rem}.cui-doorbell--small[data-v-081a6b0b]{gap:.375rem;padding:.5rem}.cui-doorbell--small .cui-doorbell__icon[data-v-081a6b0b]{width:1.25rem;height:1.25rem}.cui-doorbell--small .cui-doorbell__icon-svg[data-v-081a6b0b]{width:1.125rem;height:1.125rem}.cui-doorbell--small .cui-doorbell__label[data-v-081a6b0b]{font-size:.75rem}.cui-doorbell--small .cui-doorbell__status[data-v-081a6b0b]{font-size:.625rem}.cui-doorbell--large[data-v-081a6b0b]{gap:.75rem;padding:1rem}.cui-doorbell--large .cui-doorbell__icon[data-v-081a6b0b]{width:2.25rem;height:2.25rem}.cui-doorbell--large .cui-doorbell__icon-svg[data-v-081a6b0b]{width:2rem;height:2rem}.cui-doorbell--large .cui-doorbell__label[data-v-081a6b0b]{font-size:1rem}.cui-doorbell--large .cui-doorbell__status[data-v-081a6b0b]{font-size:.875rem}.cui-security-system[data-v-67cacde3]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-security-system--disabled[data-v-67cacde3]{opacity:.6;pointer-events:none}.cui-security-system__header[data-v-67cacde3]{align-items:center;gap:.5rem;display:flex}.cui-security-system__icon[data-v-67cacde3]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-security-system__icon-svg[data-v-67cacde3]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-security-system__info[data-v-67cacde3]{flex-direction:column;gap:0;display:flex}.cui-security-system__label[data-v-67cacde3]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-security-system__status[data-v-67cacde3]{font-size:.75rem;font-weight:500}.cui-security-system__status--disarmed[data-v-67cacde3]{color:var(--text-secondary-color)}.cui-security-system__status--armed[data-v-67cacde3]{color:#22c55e}.cui-security-system__status--transitioning[data-v-67cacde3]{color:#eab308;animation:1s ease-in-out infinite pulse-text-67cacde3}@keyframes pulse-text-67cacde3{0%,to{opacity:1}50%{opacity:.5}}.cui-security-system__status--alarm[data-v-67cacde3]{color:#ef4444;animation:.5s ease-in-out infinite alternate blink-67cacde3}@keyframes blink-67cacde3{0%{opacity:1}to{opacity:.5}}@keyframes pulse-67cacde3{0%{transform:scale(1)}to{transform:scale(1.1)}}.cui-security-system__alarm[data-v-67cacde3]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d;border-radius:.375rem;align-items:center;gap:.375rem;padding:.5rem;font-size:.75rem;font-weight:500;display:flex}.cui-security-system__alarm-icon[data-v-67cacde3]{width:1rem;height:1rem;animation:.5s ease-in-out infinite alternate pulse-67cacde3}.cui-security-system__alarm[data-v-67cacde3] .p-button{margin-left:auto}.cui-security-system__modes[data-v-67cacde3]{grid-template-columns:repeat(4,1fr);gap:.375rem;display:grid}.cui-security-system__mode[data-v-67cacde3]{border:1px solid var(--surface-border);background-color:var(--surface-ground);color:var(--text-secondary-color);cursor:pointer;border-radius:.375rem;flex-direction:column;align-items:center;gap:.125rem;padding:.5rem .25rem;font-size:.625rem;font-weight:500;transition:all .2s;display:flex}.cui-security-system__mode[data-v-67cacde3]:disabled{opacity:.5;cursor:not-allowed}.cui-security-system__mode--active[data-v-67cacde3]{background-color:var(--primary-500);border-color:var(--primary-500);color:#fff}.cui-security-system__mode--active[data-v-67cacde3]:hover:not(:disabled){background-color:var(--primary-600)}.cui-security-system__mode-icon[data-v-67cacde3]{width:1.125rem;height:1.125rem}.cui-security-system--small[data-v-67cacde3]{gap:.375rem;padding:.5rem}.cui-security-system--small .cui-security-system__icon[data-v-67cacde3]{width:1.25rem;height:1.25rem}.cui-security-system--small .cui-security-system__icon-svg[data-v-67cacde3]{width:1.125rem;height:1.125rem}.cui-security-system--small .cui-security-system__label[data-v-67cacde3]{font-size:.75rem}.cui-security-system--small .cui-security-system__status[data-v-67cacde3]{font-size:.625rem}.cui-security-system--small .cui-security-system__mode[data-v-67cacde3]{padding:.375rem .125rem;font-size:.5rem}.cui-security-system--small .cui-security-system__mode-icon[data-v-67cacde3]{width:.875rem;height:.875rem}.cui-security-system--large[data-v-67cacde3]{gap:.75rem;padding:1rem}.cui-security-system--large .cui-security-system__icon[data-v-67cacde3]{width:2.25rem;height:2.25rem}.cui-security-system--large .cui-security-system__icon-svg[data-v-67cacde3]{width:2rem;height:2rem}.cui-security-system--large .cui-security-system__label[data-v-67cacde3]{font-size:1rem}.cui-security-system--large .cui-security-system__status[data-v-67cacde3]{font-size:.875rem}.cui-security-system--large .cui-security-system__mode[data-v-67cacde3]{padding:.625rem .375rem;font-size:.75rem}.cui-security-system--large .cui-security-system__mode-icon[data-v-67cacde3]{width:1.375rem;height:1.375rem}.cui-siren-control[data-v-7f88e563]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-siren-control--disabled[data-v-7f88e563]{opacity:.6;pointer-events:none}.cui-siren-control__header[data-v-7f88e563]{align-items:center;gap:.75rem;display:flex}.cui-siren-control__icon[data-v-7f88e563]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-siren-control__icon-svg[data-v-7f88e563]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s,opacity .2s}.cui-siren-control__icon-svg--active[data-v-7f88e563]{animation:.5s ease-in-out infinite alternate siren-pulse-7f88e563}@keyframes siren-pulse-7f88e563{0%{transform:scale(1)}to{transform:scale(1.1)}}.cui-siren-control__label[data-v-7f88e563]{color:var(--text-color);flex:1;font-weight:500}.cui-siren-control__toggle[data-v-7f88e563]{margin-left:auto}.cui-siren-control__volume[data-v-7f88e563]{flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.cui-siren-control__volume-header[data-v-7f88e563]{align-items:center;gap:.5rem;display:flex}.cui-siren-control__volume-icon[data-v-7f88e563]{width:1rem;height:1rem;color:var(--text-secondary-color)}.cui-siren-control__volume-value[data-v-7f88e563]{color:var(--text-secondary-color);margin-left:auto;font-size:.875rem}.cui-siren-control__slider[data-v-7f88e563]{width:100%}.cui-siren-control--small[data-v-7f88e563]{gap:.5rem;padding:.75rem}.cui-siren-control--small .cui-siren-control__icon[data-v-7f88e563]{width:1.5rem;height:1.5rem}.cui-siren-control--small .cui-siren-control__icon-svg[data-v-7f88e563]{width:1.25rem;height:1.25rem}.cui-siren-control--small .cui-siren-control__label[data-v-7f88e563]{font-size:.875rem}.cui-siren-control--large[data-v-7f88e563]{gap:1rem;padding:1.25rem}.cui-siren-control--large .cui-siren-control__icon[data-v-7f88e563]{width:2.5rem;height:2.5rem}.cui-siren-control--large .cui-siren-control__icon-svg[data-v-7f88e563]{width:2rem;height:2rem}.cui-siren-control--large .cui-siren-control__label[data-v-7f88e563]{font-size:1.125rem}.cui-lock-control[data-v-4b2a60ff]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-lock-control--disabled[data-v-4b2a60ff]{opacity:.6;pointer-events:none}.cui-lock-control__header[data-v-4b2a60ff]{align-items:center;gap:.5rem;display:flex}.cui-lock-control__icon[data-v-4b2a60ff]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-lock-control__icon-svg[data-v-4b2a60ff]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-lock-control__info[data-v-4b2a60ff]{flex-direction:column;gap:0;display:flex}.cui-lock-control__label[data-v-4b2a60ff]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-lock-control__status[data-v-4b2a60ff]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-lock-control__status--secured[data-v-4b2a60ff]{color:#22c55e}.cui-lock-control__status--unsecured[data-v-4b2a60ff]{color:#eab308}.cui-lock-control__status--transitioning[data-v-4b2a60ff]{color:#eab308;animation:1s ease-in-out infinite pulse-text-4b2a60ff}@keyframes pulse-text-4b2a60ff{0%,to{opacity:1}50%{opacity:.5}}.cui-lock-control--small[data-v-4b2a60ff]{gap:.375rem;padding:.5rem}.cui-lock-control--small .cui-lock-control__icon[data-v-4b2a60ff]{width:1.25rem;height:1.25rem}.cui-lock-control--small .cui-lock-control__icon-svg[data-v-4b2a60ff]{width:1.125rem;height:1.125rem}.cui-lock-control--small .cui-lock-control__label[data-v-4b2a60ff]{font-size:.75rem}.cui-lock-control--small .cui-lock-control__status[data-v-4b2a60ff]{font-size:.625rem}.cui-lock-control--large[data-v-4b2a60ff]{gap:.75rem;padding:1rem}.cui-lock-control--large .cui-lock-control__icon[data-v-4b2a60ff]{width:2.25rem;height:2.25rem}.cui-lock-control--large .cui-lock-control__icon-svg[data-v-4b2a60ff]{width:2rem;height:2rem}.cui-lock-control--large .cui-lock-control__label[data-v-4b2a60ff]{font-size:1rem}.cui-lock-control--large .cui-lock-control__status[data-v-4b2a60ff]{font-size:.875rem}.cui-switch-control[data-v-86992927]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-switch-control--disabled[data-v-86992927]{opacity:.6;pointer-events:none}.cui-switch-control__header[data-v-86992927]{align-items:center;gap:.75rem;display:flex}.cui-switch-control__icon[data-v-86992927]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-switch-control__icon-svg[data-v-86992927]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-switch-control__label[data-v-86992927]{color:var(--text-color);flex:1;font-weight:500}.cui-switch-control__toggle[data-v-86992927]{margin-left:auto}.cui-switch-control--small[data-v-86992927]{gap:.5rem;padding:.75rem}.cui-switch-control--small .cui-switch-control__icon[data-v-86992927]{width:1.5rem;height:1.5rem}.cui-switch-control--small .cui-switch-control__icon-svg[data-v-86992927]{width:1.25rem;height:1.25rem}.cui-switch-control--small .cui-switch-control__label[data-v-86992927]{font-size:.875rem}.cui-switch-control--large[data-v-86992927]{gap:1rem;padding:1.25rem}.cui-switch-control--large .cui-switch-control__icon[data-v-86992927]{width:2.5rem;height:2.5rem}.cui-switch-control--large .cui-switch-control__icon-svg[data-v-86992927]{width:2rem;height:2rem}.cui-switch-control--large .cui-switch-control__label[data-v-86992927]{font-size:1.125rem}.cui-light-control[data-v-231e0be1]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-light-control--disabled[data-v-231e0be1]{opacity:.6;pointer-events:none}.cui-light-control__header[data-v-231e0be1]{align-items:center;gap:.75rem;display:flex}.cui-light-control__icon[data-v-231e0be1]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-light-control__icon-svg[data-v-231e0be1]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s,opacity .2s}.cui-light-control__icon-svg--on[data-v-231e0be1]{color:var(--yellow-400)}.cui-light-control__label[data-v-231e0be1]{color:var(--text-color);flex:1;font-weight:500}.cui-light-control__toggle[data-v-231e0be1]{margin-left:auto}.cui-light-control__brightness[data-v-231e0be1]{flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.cui-light-control__brightness-header[data-v-231e0be1]{align-items:center;gap:.5rem;display:flex}.cui-light-control__brightness-icon[data-v-231e0be1]{width:1rem;height:1rem;color:var(--text-secondary-color)}.cui-light-control__brightness-value[data-v-231e0be1]{color:var(--text-secondary-color);margin-left:auto;font-size:.875rem}.cui-light-control__slider[data-v-231e0be1]{width:100%}.cui-light-control--small[data-v-231e0be1]{gap:.5rem;padding:.75rem}.cui-light-control--small .cui-light-control__icon[data-v-231e0be1]{width:1.5rem;height:1.5rem}.cui-light-control--small .cui-light-control__icon-svg[data-v-231e0be1]{width:1.25rem;height:1.25rem}.cui-light-control--small .cui-light-control__label[data-v-231e0be1]{font-size:.875rem}.cui-light-control--large[data-v-231e0be1]{gap:1rem;padding:1.25rem}.cui-light-control--large .cui-light-control__icon[data-v-231e0be1]{width:2.5rem;height:2.5rem}.cui-light-control--large .cui-light-control__icon-svg[data-v-231e0be1]{width:2rem;height:2rem}.cui-light-control--large .cui-light-control__label[data-v-231e0be1]{font-size:1.125rem}.cui-detection[data-v-4bdc871b]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-detection--detected[data-v-4bdc871b]{border-color:#22c55e4d}.cui-detection--disabled[data-v-4bdc871b]{opacity:.6}.cui-detection__header[data-v-4bdc871b]{align-items:center;gap:.5rem;display:flex}.cui-detection__icon[data-v-4bdc871b]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-detection__icon-svg[data-v-4bdc871b]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s}.cui-detection__icon--detected .cui-detection__icon-svg[data-v-4bdc871b]{color:#22c55e}.cui-detection__info[data-v-4bdc871b]{flex-direction:column;flex:1;gap:0;display:flex}.cui-detection__label[data-v-4bdc871b]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-detection__status[data-v-4bdc871b]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-detection__status--detected[data-v-4bdc871b]{color:#22c55e}.cui-detection__indicator[data-v-4bdc871b]{background-color:var(--surface-300);border-radius:50%;width:.5rem;height:.5rem;transition:all .2s}.cui-detection__indicator--detected[data-v-4bdc871b]{background-color:#22c55e;animation:1.5s ease-in-out infinite pulse-indicator-4bdc871b;box-shadow:0 0 6px #22c55e99}@keyframes pulse-indicator-4bdc871b{0%,to{opacity:1}50%{opacity:.5}}.cui-detection__detections[data-v-4bdc871b]{flex-wrap:wrap;gap:.25rem;padding-top:.5rem;display:flex}.cui-detection__detection-tag[data-v-4bdc871b]{color:#22c55e;text-transform:capitalize;background:#22c55e26;border-radius:1rem;align-items:center;padding:.125rem .5rem;font-size:.625rem;font-weight:500;display:inline-flex}.cui-detection--small[data-v-4bdc871b]{gap:.375rem;padding:.5rem}.cui-detection--small .cui-detection__icon[data-v-4bdc871b]{width:1.25rem;height:1.25rem}.cui-detection--small .cui-detection__icon-svg[data-v-4bdc871b]{width:1.125rem;height:1.125rem}.cui-detection--small .cui-detection__label[data-v-4bdc871b]{font-size:.75rem}.cui-detection--small .cui-detection__status[data-v-4bdc871b]{font-size:.625rem}.cui-detection--small .cui-detection__indicator[data-v-4bdc871b]{width:.375rem;height:.375rem}.cui-detection--small .cui-detection__detection-tag[data-v-4bdc871b]{padding:.0625rem .375rem;font-size:.5rem}.cui-detection--large[data-v-4bdc871b]{gap:.75rem;padding:1rem}.cui-detection--large .cui-detection__icon[data-v-4bdc871b]{width:2.25rem;height:2.25rem}.cui-detection--large .cui-detection__icon-svg[data-v-4bdc871b]{width:2rem;height:2rem}.cui-detection--large .cui-detection__label[data-v-4bdc871b]{font-size:1rem}.cui-detection--large .cui-detection__status[data-v-4bdc871b]{font-size:.875rem}.cui-detection--large .cui-detection__indicator[data-v-4bdc871b]{width:.625rem;height:.625rem}.cui-detection--large .cui-detection__detection-tag[data-v-4bdc871b]{padding:.1875rem .625rem;font-size:.75rem}.overview-container[data-v-745063e6]{flex-direction:column;display:flex}.overview-section[data-v-745063e6]{border-bottom:1px solid var(--surface-border);padding:1rem}.overview-section[data-v-745063e6]:last-child{border-bottom:none}.overview-section-title[data-v-745063e6]{text-transform:uppercase;color:var(--text-secondary-color);letter-spacing:.05em;margin-bottom:.75rem;font-size:.75rem;font-weight:600}[data-v-745063e6] .p-datatable-tbody>tr>td{height:50px}.no-sensors[data-v-745063e6]{text-align:center;color:var(--text-secondary-color);padding:1.5rem;font-size:.875rem}.drawer-header[data-v-d95d997c]{background:var(--p-drawer-background)}.loader[data-v-839ba1ea]{background:var(--ground-background);width:100dvw;min-width:100dvw;max-width:100dvw;height:100dvh;min-height:100dvh;max-height:100dvh}div[data-v-839ba1ea] .cameraLens{transform-origin:35% 55%;animation:.8s cubic-bezier(.47,1.84,.21,.8) forwards lensMove-839ba1ea,.8s ease-in-out .4s forwards lensRotate-839ba1ea,.6s cubic-bezier(.47,1.84,.21,.8) 1.3s forwards lensMoveBack-839ba1ea}div[data-v-839ba1ea] .cameraLetter{transform-origin:50%;animation:.4s cubic-bezier(.47,1.84,.21,.8) forwards letterScale-839ba1ea,.4s cubic-bezier(.47,1.84,.21,.8) 1.2s forwards letterScaleBack-839ba1ea}@keyframes letterScale-839ba1ea{0%{transform:scale(1)}to{transform:scale(.8)}}@keyframes letterScaleBack-839ba1ea{0%{transform:scale(.8)}to{transform:scale(1)}}@keyframes lensMove-839ba1ea{0%{transform:translateY(0)}to{transform:translateY(-40px)}}@keyframes lensMoveBack-839ba1ea{0%{transform:translateY(-40px)}to{transform:translateY(0)}}@keyframes lensRotate-839ba1ea{0%{transform:translateY(-40px)rotate(0)}to{transform:translateY(-40px)rotate(-360deg)}}.fixed-bg[data-v-9324cb33]{top:calc(0px - env(safe-area-inset-top,0px) - 10px);left:calc(0px - env(safe-area-inset-left,0px) - 10px);right:calc(0px - env(safe-area-inset-right,0px) - 10px);bottom:calc(0px - env(safe-area-inset-bottom,0px) - 10px);z-index:0;position:fixed}
1
+ .app-lock-overlay[data-v-272f1996]{z-index:9999;background:var(--ground-background);-webkit-backdrop-filter:blur(20px);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.cui-update-indicator[data-v-12abbc97]{z-index:9999;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;padding:.75rem 1rem;position:fixed;left:50%;transform:translate(-50%)}.cui-update-indicator__content[data-v-12abbc97]{align-items:center;gap:.5rem;display:flex}.cui-update-indicator__spinner[data-v-12abbc97]{width:20px!important;height:20px!important}.cui-update-indicator__icon[data-v-12abbc97]{width:20px;height:20px;color:var(--text-color)}.cui-update-indicator__text[data-v-12abbc97]{color:var(--text-color);white-space:nowrap;font-size:.875rem}.cui-update-indicator__button[data-v-12abbc97]{white-space:nowrap;margin-left:.5rem}.fade-enter-active[data-v-12abbc97],.fade-leave-active[data-v-12abbc97]{transition:opacity .3s}.fade-enter-from[data-v-12abbc97],.fade-leave-to[data-v-12abbc97]{opacity:0}.cui-connection-indicator[data-v-89935ae5]{z-index:9999;background:var(--card-background);border:1px solid var(--border-color);border-radius:.5rem;max-width:calc(100vw - 2rem);padding:.75rem 1rem;position:fixed;left:50%;transform:translate(-50%)}.cui-connection-indicator__content[data-v-89935ae5]{align-items:center;gap:.5rem;display:flex}.cui-connection-indicator__text[data-v-89935ae5]{color:var(--text-color);white-space:nowrap;font-size:.875rem}.cui-connection-indicator__button[data-v-89935ae5]{margin-left:.5rem}.fade-enter-active[data-v-89935ae5],.fade-leave-active[data-v-89935ae5]{transition:opacity .3s}.fade-enter-from[data-v-89935ae5],.fade-leave-to[data-v-89935ae5]{opacity:0}.close-button[data-v-d1e31a06],.minify-button[data-v-d1e31a06],.expand-button[data-v-d1e31a06],.disabled-button[data-v-d1e31a06]{-webkit-app-region:no-drag;border-radius:20px;width:12px;height:12px;transition:all .2s ease-in-out}.close-button[data-v-d1e31a06]:hover,.minify-button[data-v-d1e31a06]:hover,.expand-button[data-v-d1e31a06]:hover,.disabled-button[data-v-d1e31a06]:hover{cursor:default}.close-button[data-v-d1e31a06]{background-color:#ff5954;border:0 solid #df302a}.close-button[data-v-d1e31a06]:active{background-color:#d63f3a;border:0 solid #c12e26}.minify-button[data-v-d1e31a06]{background-color:#fdbd30;border:0 solid #c18b17}.minify-button[data-v-d1e31a06]:active{background-color:#c18b17;border:0 solid #a27613}.expand-button[data-v-d1e31a06]{background-color:#00ca3b;border:0 solid #02a934}.expand-button[data-v-d1e31a06]:active{background-color:#02a934;border:0 solid #028b2b}.disabled-button[data-v-d1e31a06]{background-color:#3d3d3d;border:0 solid #282828}.navitem-active[data-v-9e0c467b]{background:var(--navitem-active-color,var(--p-button-text-primary-active-background));border-color:#0000;border-top:1px solid var(--navitem-active-color,var(--p-button-outlined-danger-hover-background))}.navbar-group-enter-active[data-v-ab78e111],.navbar-group-leave-active[data-v-ab78e111]{transition:all .2s;overflow:hidden}.navbar-group-enter-from[data-v-ab78e111],.navbar-group-leave-to[data-v-ab78e111]{opacity:0;max-height:0}.navbar-group-enter-to[data-v-ab78e111],.navbar-group-leave-from[data-v-ab78e111]{opacity:1;max-height:400px}.cui-bottombar[data-v-b0d768aa]:before{content:"";background:linear-gradient(#0000000d,#0000);height:1px;position:absolute;top:-1px;left:0;right:0}.notification-menu{left:auto!important;right:calc(env(safe-area-inset-right,0px) + .5rem)!important;top:calc(env(safe-area-inset-top,0px) + 3.3rem)!important}.cui-topbar[data-v-052ebc62]{background:var(--topbar-background);border-bottom:1px solid var(--border-color)}.playground-container[data-v-a2f172f4]{z-index:100;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;flex:1;justify-content:center;position:relative}@media (width>=800px){.playground-container[data-v-a2f172f4]{border-radius:0 0 2px 2px}}.playground-container .playground[data-v-a2f172f4]{position:relative}.playground-container .playground:hover .handle[data-v-a2f172f4]{opacity:1}.playground-container .playground.customizing[data-v-a2f172f4]{cursor:crosshair}.playground-container .playground.start .custom-notice[data-v-a2f172f4]{opacity:1}.playground-container .playground .custom-notice[data-v-a2f172f4]{pointer-events:none;opacity:0;background:#fff0;justify-content:center;align-items:center;transition:background .25s;display:flex;position:absolute;inset:0 0 1rem}.playground-container .playground .custom-notice div[data-v-a2f172f4]{text-align:center;opacity:1;background:#ffffffe6;border-radius:2px;width:100%;margin:0 2rem;padding:1rem;transition:opacity .25s;box-shadow:0 1px 2px #100a0926}.playground-container .playground .custom-notice div .touchy[data-v-a2f172f4]:after{content:"Click"}.playground-container .playground .sandbox[data-v-a2f172f4]{touch-action:none;width:100%;height:100%;position:relative;inset:0}.playground-container .playground .sandbox .shadowboard[data-v-a2f172f4]{z-index:11;pointer-events:none;opacity:0;background:#df2a4c4d 50%/cover;transition:opacity .375s;position:absolute;inset:10px}.playground-container .playground .sandbox .shadowboard.on[data-v-a2f172f4]{opacity:0}.playground-container .playground.customizing .handle[data-v-a2f172f4]{pointer-events:none}.handles[data-v-a2f172f4]{z-index:10;position:absolute;inset:0}.handles .clipboard[data-v-a2f172f4]{z-index:1;position:absolute;inset:0}.handles .clipboard .polygon-container[data-v-a2f172f4]{position:absolute}.handles .clipboard .polygon-container path.selected[data-v-a2f172f4]{stroke-width:2px}.handles .clipboard .polygon-container path.dash[data-v-a2f172f4]{stroke-dasharray:5 5}.handles .delete-point[data-v-a2f172f4],.handles .handle[data-v-a2f172f4]{z-index:2;width:20px;height:20px;position:absolute}.handles .handle[data-v-a2f172f4]{opacity:.8;border-radius:50%;transition:opacity .25s;box-shadow:inset 0 0 0 10px #fff}.handles .handle.is-dragging[data-v-a2f172f4],.handles .handle.is-pointer-down[data-v-a2f172f4]{z-index:100;cursor:none;transition:box-shadow;box-shadow:inset 0 0 0 10px #d0d0d0}.handles .handle.draggable[data-v-a2f172f4]{cursor:grab}.handles .handle.show-delete .delete-point[data-v-a2f172f4]{opacity:1;transition:transform .25s cubic-bezier(.15,1,.3,1.1),opacity .25s;transform:scale3d(.9,.9,.9)}.handles .handle[data-v-a2f172f4]:after{content:"";display:block;position:absolute;inset:-8px}.handles .handle .delete-point[data-v-a2f172f4]{transform-origin:0;cursor:pointer;opacity:.75;clip-path:polygon(25% 0,100% 1%,100% 100%,25% 100%,0 50%);background:#d3d0c9;border-radius:3px;width:25px;padding-left:5px;transition:transform .25s,opacity .25s;position:absolute;top:0;left:22px;transform:scale3d(0,0,0)}.handles .handle .delete-point[data-v-a2f172f4]:after{content:"";clip-path:polygon(20% 10%,10% 20%,40% 50%,10% 80%,20% 90%,50% 60%,80% 90%,90% 80%,60% 50%,90% 20%,80% 10%,50% 40%);background:#100a09;display:block;position:absolute;inset:4px 4px 4px 9px}.cui-battery-info[data-v-c181f3d4]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-battery-info--disabled[data-v-c181f3d4]{opacity:.6}.cui-battery-info__header[data-v-c181f3d4]{align-items:center;gap:.5rem;display:flex}.cui-battery-info__icon[data-v-c181f3d4]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-battery-info__icon-svg[data-v-c181f3d4]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-battery-info__icon-svg--critical[data-v-c181f3d4]{animation:1s ease-in-out infinite battery-pulse-c181f3d4}@keyframes battery-pulse-c181f3d4{0%,to{opacity:1}50%{opacity:.5}}.cui-battery-info__info[data-v-c181f3d4]{flex-direction:column;flex:1;gap:0;display:flex}.cui-battery-info__label[data-v-c181f3d4]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-battery-info__status[data-v-c181f3d4]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-battery-info__status--charging[data-v-c181f3d4]{color:#3b82f6}.cui-battery-info__status--full[data-v-c181f3d4]{color:#22c55e}.cui-battery-info__status--low[data-v-c181f3d4]{color:#eab308}.cui-battery-info__status--critical[data-v-c181f3d4]{color:#ef4444;animation:.5s ease-in-out infinite alternate status-blink-c181f3d4}@keyframes status-blink-c181f3d4{0%{opacity:1}to{opacity:.6}}.cui-battery-info__level[data-v-c181f3d4]{color:var(--text-color);font-size:.875rem;font-weight:600}.cui-battery-info__level--charging[data-v-c181f3d4]{color:#3b82f6}.cui-battery-info__level--full[data-v-c181f3d4]{color:#22c55e}.cui-battery-info__level--low[data-v-c181f3d4]{color:#eab308}.cui-battery-info__level--critical[data-v-c181f3d4]{color:#ef4444}.cui-battery-info__bar[data-v-c181f3d4]{border-radius:.125rem;height:.25rem;overflow:hidden}.cui-battery-info__bar-fill[data-v-c181f3d4]{border-radius:.125rem;height:100%;transition:width .3s,background-color .3s}.cui-battery-info--small[data-v-c181f3d4]{gap:.375rem;padding:.5rem}.cui-battery-info--small .cui-battery-info__icon[data-v-c181f3d4]{width:1.25rem;height:1.25rem}.cui-battery-info--small .cui-battery-info__icon-svg[data-v-c181f3d4]{width:1.125rem;height:1.125rem}.cui-battery-info--small .cui-battery-info__label[data-v-c181f3d4]{font-size:.75rem}.cui-battery-info--small .cui-battery-info__status[data-v-c181f3d4]{font-size:.625rem}.cui-battery-info--small .cui-battery-info__level[data-v-c181f3d4]{font-size:.75rem}.cui-battery-info--small .cui-battery-info__bar[data-v-c181f3d4]{height:.1875rem}.cui-battery-info--large[data-v-c181f3d4]{gap:.75rem;padding:1rem}.cui-battery-info--large .cui-battery-info__icon[data-v-c181f3d4]{width:2.25rem;height:2.25rem}.cui-battery-info--large .cui-battery-info__icon-svg[data-v-c181f3d4]{width:2rem;height:2rem}.cui-battery-info--large .cui-battery-info__label[data-v-c181f3d4]{font-size:1rem}.cui-battery-info--large .cui-battery-info__status[data-v-c181f3d4]{font-size:.875rem}.cui-battery-info--large .cui-battery-info__level[data-v-c181f3d4]{font-size:1rem}.cui-battery-info--large .cui-battery-info__bar[data-v-c181f3d4]{height:.375rem}.cui-humidity-info[data-v-1f41d794]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-humidity-info--disabled[data-v-1f41d794]{opacity:.6}.cui-humidity-info__header[data-v-1f41d794]{align-items:center;gap:.5rem;display:flex}.cui-humidity-info__icon[data-v-1f41d794]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-humidity-info__icon-svg[data-v-1f41d794]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-humidity-info__info[data-v-1f41d794]{flex-direction:column;flex:1;gap:0;display:flex}.cui-humidity-info__label[data-v-1f41d794]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-humidity-info__status[data-v-1f41d794]{font-size:.75rem;font-weight:500;transition:color .2s}.cui-humidity-info__value[data-v-1f41d794]{white-space:nowrap;font-size:.875rem;font-weight:600;transition:color .2s}.cui-humidity-info--small[data-v-1f41d794]{gap:.375rem;padding:.5rem}.cui-humidity-info--small .cui-humidity-info__icon[data-v-1f41d794]{width:1.25rem;height:1.25rem}.cui-humidity-info--small .cui-humidity-info__icon-svg[data-v-1f41d794]{width:1.125rem;height:1.125rem}.cui-humidity-info--small .cui-humidity-info__label[data-v-1f41d794]{font-size:.75rem}.cui-humidity-info--small .cui-humidity-info__status[data-v-1f41d794]{font-size:.625rem}.cui-humidity-info--small .cui-humidity-info__value[data-v-1f41d794]{font-size:.75rem}.cui-humidity-info--large[data-v-1f41d794]{gap:.75rem;padding:1rem}.cui-humidity-info--large .cui-humidity-info__icon[data-v-1f41d794]{width:2.25rem;height:2.25rem}.cui-humidity-info--large .cui-humidity-info__icon-svg[data-v-1f41d794]{width:2rem;height:2rem}.cui-humidity-info--large .cui-humidity-info__label[data-v-1f41d794]{font-size:1rem}.cui-humidity-info--large .cui-humidity-info__status[data-v-1f41d794]{font-size:.875rem}.cui-humidity-info--large .cui-humidity-info__value[data-v-1f41d794]{font-size:1rem}.cui-temperature-info[data-v-0edddec9]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-temperature-info--disabled[data-v-0edddec9]{opacity:.6}.cui-temperature-info__header[data-v-0edddec9]{align-items:center;gap:.5rem;display:flex}.cui-temperature-info__icon[data-v-0edddec9]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-temperature-info__icon-svg[data-v-0edddec9]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-temperature-info__info[data-v-0edddec9]{flex-direction:column;flex:1;gap:0;display:flex}.cui-temperature-info__label[data-v-0edddec9]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-temperature-info__status[data-v-0edddec9]{font-size:.75rem;font-weight:500;transition:color .2s}.cui-temperature-info__value[data-v-0edddec9]{white-space:nowrap;font-size:.875rem;font-weight:600;transition:color .2s}.cui-temperature-info--small[data-v-0edddec9]{gap:.375rem;padding:.5rem}.cui-temperature-info--small .cui-temperature-info__icon[data-v-0edddec9]{width:1.25rem;height:1.25rem}.cui-temperature-info--small .cui-temperature-info__icon-svg[data-v-0edddec9]{width:1.125rem;height:1.125rem}.cui-temperature-info--small .cui-temperature-info__label[data-v-0edddec9]{font-size:.75rem}.cui-temperature-info--small .cui-temperature-info__status[data-v-0edddec9]{font-size:.625rem}.cui-temperature-info--small .cui-temperature-info__value[data-v-0edddec9]{font-size:.75rem}.cui-temperature-info--large[data-v-0edddec9]{gap:.75rem;padding:1rem}.cui-temperature-info--large .cui-temperature-info__icon[data-v-0edddec9]{width:2.25rem;height:2.25rem}.cui-temperature-info--large .cui-temperature-info__icon-svg[data-v-0edddec9]{width:2rem;height:2rem}.cui-temperature-info--large .cui-temperature-info__label[data-v-0edddec9]{font-size:1rem}.cui-temperature-info--large .cui-temperature-info__status[data-v-0edddec9]{font-size:.875rem}.cui-temperature-info--large .cui-temperature-info__value[data-v-0edddec9]{font-size:1rem}.cui-garage-control[data-v-4c6505c2]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-garage-control--disabled[data-v-4c6505c2]{opacity:.6;pointer-events:none}.cui-garage-control__header[data-v-4c6505c2]{align-items:center;gap:.5rem;display:flex}.cui-garage-control__icon[data-v-4c6505c2]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex;position:relative}.cui-garage-control__icon-svg[data-v-4c6505c2]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-garage-control__obstruction[data-v-4c6505c2]{background-color:#ef4444;border-radius:50%;width:8px;height:8px;position:absolute;top:-2px;right:-2px;box-shadow:0 0 6px #ef444499}.cui-garage-control__info[data-v-4c6505c2]{flex-direction:column;gap:0;display:flex}.cui-garage-control__label[data-v-4c6505c2]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-garage-control__status[data-v-4c6505c2]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-garage-control__status--open[data-v-4c6505c2]{color:#22c55e}.cui-garage-control__status--transitioning[data-v-4c6505c2]{color:#facc15;animation:1s ease-in-out infinite cui-garage-pulse-text-4c6505c2}.cui-garage-control__status--stopped[data-v-4c6505c2]{color:#fb923c}@keyframes cui-garage-pulse-text-4c6505c2{0%,to{opacity:1}50%{opacity:.5}}.cui-garage-control--small[data-v-4c6505c2]{gap:.375rem;padding:.5rem}.cui-garage-control--small .cui-garage-control__icon[data-v-4c6505c2]{width:1.25rem;height:1.25rem}.cui-garage-control--small .cui-garage-control__icon-svg[data-v-4c6505c2]{width:1.125rem;height:1.125rem}.cui-garage-control--small .cui-garage-control__label[data-v-4c6505c2]{font-size:.75rem}.cui-garage-control--small .cui-garage-control__status[data-v-4c6505c2]{font-size:.625rem}.cui-garage-control--small .cui-garage-control__obstruction[data-v-4c6505c2]{width:6px;height:6px}.cui-garage-control--large[data-v-4c6505c2]{gap:.75rem;padding:1rem}.cui-garage-control--large .cui-garage-control__icon[data-v-4c6505c2]{width:2.25rem;height:2.25rem}.cui-garage-control--large .cui-garage-control__icon-svg[data-v-4c6505c2]{width:2rem;height:2rem}.cui-garage-control--large .cui-garage-control__label[data-v-4c6505c2]{font-size:1rem}.cui-garage-control--large .cui-garage-control__status[data-v-4c6505c2]{font-size:.875rem}.cui-leak-sensor[data-v-14a46a3f]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-leak-sensor--disabled[data-v-14a46a3f]{opacity:.6}.cui-leak-sensor__header[data-v-14a46a3f]{align-items:center;gap:.5rem;display:flex}.cui-leak-sensor__icon[data-v-14a46a3f]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-leak-sensor__info[data-v-14a46a3f]{flex-direction:column;flex:1;gap:0;display:flex}.cui-leak-sensor__label[data-v-14a46a3f]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-leak-sensor__status[data-v-14a46a3f]{font-size:.75rem;font-weight:500}.cui-leak-sensor__status--detected[data-v-14a46a3f]{color:#3b82f6}.cui-leak-sensor__status--clear[data-v-14a46a3f]{color:var(--text-secondary-color)}.cui-leak-sensor__indicator[data-v-14a46a3f]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-leak-sensor__indicator--detected[data-v-14a46a3f]{background-color:#3b82f6;animation:1.5s ease-in-out infinite pulse-indicator-14a46a3f;box-shadow:0 0 6px #3b82f699}.cui-leak-sensor__indicator--clear[data-v-14a46a3f]{background-color:var(--text-secondary-color)}@keyframes pulse-indicator-14a46a3f{0%,to{opacity:1}50%{opacity:.5}}.cui-leak-sensor--small[data-v-14a46a3f]{gap:.375rem;padding:.5rem}.cui-leak-sensor--small .cui-leak-sensor__icon[data-v-14a46a3f]{width:1.25rem;height:1.25rem}.cui-leak-sensor--small .cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:1.125rem;height:1.125rem}.cui-leak-sensor--small .cui-leak-sensor__label[data-v-14a46a3f]{font-size:.75rem}.cui-leak-sensor--small .cui-leak-sensor__status[data-v-14a46a3f]{font-size:.625rem}.cui-leak-sensor--small .cui-leak-sensor__indicator[data-v-14a46a3f]{width:.375rem;height:.375rem}.cui-leak-sensor--large[data-v-14a46a3f]{gap:.75rem;padding:1rem}.cui-leak-sensor--large .cui-leak-sensor__icon[data-v-14a46a3f]{width:2.25rem;height:2.25rem}.cui-leak-sensor--large .cui-leak-sensor__icon-svg[data-v-14a46a3f]{width:2rem;height:2rem}.cui-leak-sensor--large .cui-leak-sensor__label[data-v-14a46a3f]{font-size:1rem}.cui-leak-sensor--large .cui-leak-sensor__status[data-v-14a46a3f]{font-size:.875rem}.cui-leak-sensor--large .cui-leak-sensor__indicator[data-v-14a46a3f]{width:.625rem;height:.625rem}.cui-smoke-sensor[data-v-4db50b68]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-smoke-sensor--disabled[data-v-4db50b68]{opacity:.6}.cui-smoke-sensor__header[data-v-4db50b68]{align-items:center;gap:.5rem;display:flex}.cui-smoke-sensor__icon[data-v-4db50b68]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-smoke-sensor__info[data-v-4db50b68]{flex-direction:column;flex:1;gap:0;display:flex}.cui-smoke-sensor__label[data-v-4db50b68]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-smoke-sensor__status[data-v-4db50b68]{font-size:.75rem;font-weight:500}.cui-smoke-sensor__status--detected[data-v-4db50b68]{color:#ef4444}.cui-smoke-sensor__status--clear[data-v-4db50b68]{color:var(--text-secondary-color)}.cui-smoke-sensor__indicator[data-v-4db50b68]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-smoke-sensor__indicator--detected[data-v-4db50b68]{background-color:#ef4444;animation:1.5s ease-in-out infinite pulse-indicator-4db50b68;box-shadow:0 0 6px #ef444499}.cui-smoke-sensor__indicator--clear[data-v-4db50b68]{background-color:var(--text-secondary-color)}@keyframes pulse-indicator-4db50b68{0%,to{opacity:1}50%{opacity:.5}}.cui-smoke-sensor--small[data-v-4db50b68]{gap:.375rem;padding:.5rem}.cui-smoke-sensor--small .cui-smoke-sensor__icon[data-v-4db50b68]{width:1.25rem;height:1.25rem}.cui-smoke-sensor--small .cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:1.125rem;height:1.125rem}.cui-smoke-sensor--small .cui-smoke-sensor__label[data-v-4db50b68]{font-size:.75rem}.cui-smoke-sensor--small .cui-smoke-sensor__status[data-v-4db50b68]{font-size:.625rem}.cui-smoke-sensor--small .cui-smoke-sensor__indicator[data-v-4db50b68]{width:.375rem;height:.375rem}.cui-smoke-sensor--large[data-v-4db50b68]{gap:.75rem;padding:1rem}.cui-smoke-sensor--large .cui-smoke-sensor__icon[data-v-4db50b68]{width:2.25rem;height:2.25rem}.cui-smoke-sensor--large .cui-smoke-sensor__icon-svg[data-v-4db50b68]{width:2rem;height:2rem}.cui-smoke-sensor--large .cui-smoke-sensor__label[data-v-4db50b68]{font-size:1rem}.cui-smoke-sensor--large .cui-smoke-sensor__status[data-v-4db50b68]{font-size:.875rem}.cui-smoke-sensor--large .cui-smoke-sensor__indicator[data-v-4db50b68]{width:.625rem;height:.625rem}.cui-occupancy-sensor[data-v-8ca5a1ce]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-occupancy-sensor--disabled[data-v-8ca5a1ce]{opacity:.6}.cui-occupancy-sensor__header[data-v-8ca5a1ce]{align-items:center;gap:.5rem;display:flex}.cui-occupancy-sensor__icon[data-v-8ca5a1ce]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-occupancy-sensor__info[data-v-8ca5a1ce]{flex-direction:column;flex:1;gap:0;display:flex}.cui-occupancy-sensor__label[data-v-8ca5a1ce]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.75rem;font-weight:500}.cui-occupancy-sensor__status--occupied[data-v-8ca5a1ce]{color:#22c55e}.cui-occupancy-sensor__status--empty[data-v-8ca5a1ce]{color:var(--text-secondary-color)}.cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-occupancy-sensor__indicator--occupied[data-v-8ca5a1ce]{background-color:#22c55e;box-shadow:0 0 6px #22c55e99}.cui-occupancy-sensor__indicator--empty[data-v-8ca5a1ce]{background-color:var(--text-secondary-color)}.cui-occupancy-sensor--small[data-v-8ca5a1ce]{gap:.375rem;padding:.5rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__icon[data-v-8ca5a1ce]{width:1.25rem;height:1.25rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:1.125rem;height:1.125rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__label[data-v-8ca5a1ce]{font-size:.75rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.625rem}.cui-occupancy-sensor--small .cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{width:.375rem;height:.375rem}.cui-occupancy-sensor--large[data-v-8ca5a1ce]{gap:.75rem;padding:1rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__icon[data-v-8ca5a1ce]{width:2.25rem;height:2.25rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__icon-svg[data-v-8ca5a1ce]{width:2rem;height:2rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__label[data-v-8ca5a1ce]{font-size:1rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__status[data-v-8ca5a1ce]{font-size:.875rem}.cui-occupancy-sensor--large .cui-occupancy-sensor__indicator[data-v-8ca5a1ce]{width:.625rem;height:.625rem}.cui-contact-sensor[data-v-0cc50676]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-contact-sensor--disabled[data-v-0cc50676]{opacity:.6}.cui-contact-sensor__header[data-v-0cc50676]{align-items:center;gap:.5rem;display:flex}.cui-contact-sensor__icon[data-v-0cc50676]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-contact-sensor__icon-svg[data-v-0cc50676]{width:1.5rem;height:1.5rem;transition:color .2s,filter .2s}.cui-contact-sensor__info[data-v-0cc50676]{flex-direction:column;flex:1;gap:0;display:flex}.cui-contact-sensor__label[data-v-0cc50676]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-contact-sensor__status[data-v-0cc50676]{font-size:.75rem;font-weight:500}.cui-contact-sensor__status--closed[data-v-0cc50676]{color:#22c55e}.cui-contact-sensor__status--open[data-v-0cc50676]{color:#fb923c}.cui-contact-sensor__indicator[data-v-0cc50676]{border-radius:50%;width:.5rem;height:.5rem;transition:background-color .2s}.cui-contact-sensor__indicator--closed[data-v-0cc50676]{background-color:#22c55e;box-shadow:0 0 6px #22c55e99}.cui-contact-sensor__indicator--open[data-v-0cc50676]{background-color:#fb923c;animation:1.5s ease-in-out infinite pulse-indicator-0cc50676;box-shadow:0 0 6px #fb923c99}@keyframes pulse-indicator-0cc50676{0%,to{opacity:1}50%{opacity:.5}}.cui-contact-sensor--small[data-v-0cc50676]{gap:.375rem;padding:.5rem}.cui-contact-sensor--small .cui-contact-sensor__icon[data-v-0cc50676]{width:1.25rem;height:1.25rem}.cui-contact-sensor--small .cui-contact-sensor__icon-svg[data-v-0cc50676]{width:1.125rem;height:1.125rem}.cui-contact-sensor--small .cui-contact-sensor__label[data-v-0cc50676]{font-size:.75rem}.cui-contact-sensor--small .cui-contact-sensor__status[data-v-0cc50676]{font-size:.625rem}.cui-contact-sensor--small .cui-contact-sensor__indicator[data-v-0cc50676]{width:.375rem;height:.375rem}.cui-contact-sensor--large[data-v-0cc50676]{gap:.75rem;padding:1rem}.cui-contact-sensor--large .cui-contact-sensor__icon[data-v-0cc50676]{width:2.25rem;height:2.25rem}.cui-contact-sensor--large .cui-contact-sensor__icon-svg[data-v-0cc50676]{width:2rem;height:2rem}.cui-contact-sensor--large .cui-contact-sensor__label[data-v-0cc50676]{font-size:1rem}.cui-contact-sensor--large .cui-contact-sensor__status[data-v-0cc50676]{font-size:.875rem}.cui-contact-sensor--large .cui-contact-sensor__indicator[data-v-0cc50676]{width:.625rem;height:.625rem}.cui-doorbell[data-v-081a6b0b]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;transition:all .2s;display:flex}.cui-doorbell--disabled[data-v-081a6b0b]{opacity:.6;pointer-events:none}.cui-doorbell__header[data-v-081a6b0b]{align-items:center;gap:.5rem;display:flex}.cui-doorbell__icon[data-v-081a6b0b]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-doorbell__icon-svg[data-v-081a6b0b]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-doorbell__icon-svg--ringing[data-v-081a6b0b]{animation:.15s ease-in-out infinite doorbell-shake-081a6b0b}@keyframes doorbell-shake-081a6b0b{0%,to{transform:rotate(-15deg)}50%{transform:rotate(15deg)}}.cui-doorbell__info[data-v-081a6b0b]{flex-direction:column;flex:1;gap:0;display:flex}.cui-doorbell__label[data-v-081a6b0b]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-doorbell__status[data-v-081a6b0b]{color:var(--text-secondary-color);font-size:.75rem}.cui-doorbell__status--ringing[data-v-081a6b0b]{color:#eab308;font-weight:600;animation:.3s ease-in-out infinite alternate blink-081a6b0b}@keyframes blink-081a6b0b{0%{opacity:1}to{opacity:.5}}.cui-doorbell__button[data-v-081a6b0b]{margin-left:auto}.cui-doorbell__button-icon[data-v-081a6b0b]{width:1rem;height:1rem}.cui-doorbell--small[data-v-081a6b0b]{gap:.375rem;padding:.5rem}.cui-doorbell--small .cui-doorbell__icon[data-v-081a6b0b]{width:1.25rem;height:1.25rem}.cui-doorbell--small .cui-doorbell__icon-svg[data-v-081a6b0b]{width:1.125rem;height:1.125rem}.cui-doorbell--small .cui-doorbell__label[data-v-081a6b0b]{font-size:.75rem}.cui-doorbell--small .cui-doorbell__status[data-v-081a6b0b]{font-size:.625rem}.cui-doorbell--large[data-v-081a6b0b]{gap:.75rem;padding:1rem}.cui-doorbell--large .cui-doorbell__icon[data-v-081a6b0b]{width:2.25rem;height:2.25rem}.cui-doorbell--large .cui-doorbell__icon-svg[data-v-081a6b0b]{width:2rem;height:2rem}.cui-doorbell--large .cui-doorbell__label[data-v-081a6b0b]{font-size:1rem}.cui-doorbell--large .cui-doorbell__status[data-v-081a6b0b]{font-size:.875rem}.cui-security-system[data-v-67cacde3]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-security-system--disabled[data-v-67cacde3]{opacity:.6;pointer-events:none}.cui-security-system__header[data-v-67cacde3]{align-items:center;gap:.5rem;display:flex}.cui-security-system__icon[data-v-67cacde3]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-security-system__icon-svg[data-v-67cacde3]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-security-system__info[data-v-67cacde3]{flex-direction:column;gap:0;display:flex}.cui-security-system__label[data-v-67cacde3]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-security-system__status[data-v-67cacde3]{font-size:.75rem;font-weight:500}.cui-security-system__status--disarmed[data-v-67cacde3]{color:var(--text-secondary-color)}.cui-security-system__status--armed[data-v-67cacde3]{color:#22c55e}.cui-security-system__status--transitioning[data-v-67cacde3]{color:#eab308;animation:1s ease-in-out infinite pulse-text-67cacde3}@keyframes pulse-text-67cacde3{0%,to{opacity:1}50%{opacity:.5}}.cui-security-system__status--alarm[data-v-67cacde3]{color:#ef4444;animation:.5s ease-in-out infinite alternate blink-67cacde3}@keyframes blink-67cacde3{0%{opacity:1}to{opacity:.5}}@keyframes pulse-67cacde3{0%{transform:scale(1)}to{transform:scale(1.1)}}.cui-security-system__alarm[data-v-67cacde3]{color:#ef4444;background-color:#ef44441a;border:1px solid #ef44444d;border-radius:.375rem;align-items:center;gap:.375rem;padding:.5rem;font-size:.75rem;font-weight:500;display:flex}.cui-security-system__alarm-icon[data-v-67cacde3]{width:1rem;height:1rem;animation:.5s ease-in-out infinite alternate pulse-67cacde3}.cui-security-system__alarm[data-v-67cacde3] .p-button{margin-left:auto}.cui-security-system__modes[data-v-67cacde3]{grid-template-columns:repeat(4,1fr);gap:.375rem;display:grid}.cui-security-system__mode[data-v-67cacde3]{border:1px solid var(--surface-border);background-color:var(--surface-ground);color:var(--text-secondary-color);cursor:pointer;border-radius:.375rem;flex-direction:column;align-items:center;gap:.125rem;padding:.5rem .25rem;font-size:.625rem;font-weight:500;transition:all .2s;display:flex}.cui-security-system__mode[data-v-67cacde3]:disabled{opacity:.5;cursor:not-allowed}.cui-security-system__mode--active[data-v-67cacde3]{background-color:var(--primary-500);border-color:var(--primary-500);color:#fff}.cui-security-system__mode--active[data-v-67cacde3]:hover:not(:disabled){background-color:var(--primary-600)}.cui-security-system__mode-icon[data-v-67cacde3]{width:1.125rem;height:1.125rem}.cui-security-system--small[data-v-67cacde3]{gap:.375rem;padding:.5rem}.cui-security-system--small .cui-security-system__icon[data-v-67cacde3]{width:1.25rem;height:1.25rem}.cui-security-system--small .cui-security-system__icon-svg[data-v-67cacde3]{width:1.125rem;height:1.125rem}.cui-security-system--small .cui-security-system__label[data-v-67cacde3]{font-size:.75rem}.cui-security-system--small .cui-security-system__status[data-v-67cacde3]{font-size:.625rem}.cui-security-system--small .cui-security-system__mode[data-v-67cacde3]{padding:.375rem .125rem;font-size:.5rem}.cui-security-system--small .cui-security-system__mode-icon[data-v-67cacde3]{width:.875rem;height:.875rem}.cui-security-system--large[data-v-67cacde3]{gap:.75rem;padding:1rem}.cui-security-system--large .cui-security-system__icon[data-v-67cacde3]{width:2.25rem;height:2.25rem}.cui-security-system--large .cui-security-system__icon-svg[data-v-67cacde3]{width:2rem;height:2rem}.cui-security-system--large .cui-security-system__label[data-v-67cacde3]{font-size:1rem}.cui-security-system--large .cui-security-system__status[data-v-67cacde3]{font-size:.875rem}.cui-security-system--large .cui-security-system__mode[data-v-67cacde3]{padding:.625rem .375rem;font-size:.75rem}.cui-security-system--large .cui-security-system__mode-icon[data-v-67cacde3]{width:1.375rem;height:1.375rem}.cui-siren-control[data-v-7f88e563]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-siren-control--disabled[data-v-7f88e563]{opacity:.6;pointer-events:none}.cui-siren-control__header[data-v-7f88e563]{align-items:center;gap:.75rem;display:flex}.cui-siren-control__icon[data-v-7f88e563]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-siren-control__icon-svg[data-v-7f88e563]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s,opacity .2s}.cui-siren-control__icon-svg--active[data-v-7f88e563]{animation:.5s ease-in-out infinite alternate siren-pulse-7f88e563}@keyframes siren-pulse-7f88e563{0%{transform:scale(1)}to{transform:scale(1.1)}}.cui-siren-control__label[data-v-7f88e563]{color:var(--text-color);flex:1;font-weight:500}.cui-siren-control__toggle[data-v-7f88e563]{margin-left:auto}.cui-siren-control__volume[data-v-7f88e563]{flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.cui-siren-control__volume-header[data-v-7f88e563]{align-items:center;gap:.5rem;display:flex}.cui-siren-control__volume-icon[data-v-7f88e563]{width:1rem;height:1rem;color:var(--text-secondary-color)}.cui-siren-control__volume-value[data-v-7f88e563]{color:var(--text-secondary-color);margin-left:auto;font-size:.875rem}.cui-siren-control__slider[data-v-7f88e563]{width:100%}.cui-siren-control--small[data-v-7f88e563]{gap:.5rem;padding:.75rem}.cui-siren-control--small .cui-siren-control__icon[data-v-7f88e563]{width:1.5rem;height:1.5rem}.cui-siren-control--small .cui-siren-control__icon-svg[data-v-7f88e563]{width:1.25rem;height:1.25rem}.cui-siren-control--small .cui-siren-control__label[data-v-7f88e563]{font-size:.875rem}.cui-siren-control--large[data-v-7f88e563]{gap:1rem;padding:1.25rem}.cui-siren-control--large .cui-siren-control__icon[data-v-7f88e563]{width:2.5rem;height:2.5rem}.cui-siren-control--large .cui-siren-control__icon-svg[data-v-7f88e563]{width:2rem;height:2rem}.cui-siren-control--large .cui-siren-control__label[data-v-7f88e563]{font-size:1.125rem}.cui-lock-control[data-v-4b2a60ff]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-lock-control--disabled[data-v-4b2a60ff]{opacity:.6;pointer-events:none}.cui-lock-control__header[data-v-4b2a60ff]{align-items:center;gap:.5rem;display:flex}.cui-lock-control__icon[data-v-4b2a60ff]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-lock-control__icon-svg[data-v-4b2a60ff]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-lock-control__info[data-v-4b2a60ff]{flex-direction:column;gap:0;display:flex}.cui-lock-control__label[data-v-4b2a60ff]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-lock-control__status[data-v-4b2a60ff]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-lock-control__status--secured[data-v-4b2a60ff]{color:#22c55e}.cui-lock-control__status--unsecured[data-v-4b2a60ff]{color:#eab308}.cui-lock-control__status--transitioning[data-v-4b2a60ff]{color:#eab308;animation:1s ease-in-out infinite pulse-text-4b2a60ff}@keyframes pulse-text-4b2a60ff{0%,to{opacity:1}50%{opacity:.5}}.cui-lock-control--small[data-v-4b2a60ff]{gap:.375rem;padding:.5rem}.cui-lock-control--small .cui-lock-control__icon[data-v-4b2a60ff]{width:1.25rem;height:1.25rem}.cui-lock-control--small .cui-lock-control__icon-svg[data-v-4b2a60ff]{width:1.125rem;height:1.125rem}.cui-lock-control--small .cui-lock-control__label[data-v-4b2a60ff]{font-size:.75rem}.cui-lock-control--small .cui-lock-control__status[data-v-4b2a60ff]{font-size:.625rem}.cui-lock-control--large[data-v-4b2a60ff]{gap:.75rem;padding:1rem}.cui-lock-control--large .cui-lock-control__icon[data-v-4b2a60ff]{width:2.25rem;height:2.25rem}.cui-lock-control--large .cui-lock-control__icon-svg[data-v-4b2a60ff]{width:2rem;height:2rem}.cui-lock-control--large .cui-lock-control__label[data-v-4b2a60ff]{font-size:1rem}.cui-lock-control--large .cui-lock-control__status[data-v-4b2a60ff]{font-size:.875rem}.cui-switch-control[data-v-86992927]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-switch-control--disabled[data-v-86992927]{opacity:.6;pointer-events:none}.cui-switch-control__header[data-v-86992927]{align-items:center;gap:.75rem;display:flex}.cui-switch-control__icon[data-v-86992927]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-switch-control__icon-svg[data-v-86992927]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s}.cui-switch-control__label[data-v-86992927]{color:var(--text-color);flex:1;font-weight:500}.cui-switch-control__toggle[data-v-86992927]{margin-left:auto}.cui-switch-control--small[data-v-86992927]{gap:.5rem;padding:.75rem}.cui-switch-control--small .cui-switch-control__icon[data-v-86992927]{width:1.5rem;height:1.5rem}.cui-switch-control--small .cui-switch-control__icon-svg[data-v-86992927]{width:1.25rem;height:1.25rem}.cui-switch-control--small .cui-switch-control__label[data-v-86992927]{font-size:.875rem}.cui-switch-control--large[data-v-86992927]{gap:1rem;padding:1.25rem}.cui-switch-control--large .cui-switch-control__icon[data-v-86992927]{width:2.5rem;height:2.5rem}.cui-switch-control--large .cui-switch-control__icon-svg[data-v-86992927]{width:2rem;height:2rem}.cui-switch-control--large .cui-switch-control__label[data-v-86992927]{font-size:1.125rem}.cui-light-control[data-v-231e0be1]{border-radius:.75rem;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.cui-light-control--disabled[data-v-231e0be1]{opacity:.6;pointer-events:none}.cui-light-control__header[data-v-231e0be1]{align-items:center;gap:.75rem;display:flex}.cui-light-control__icon[data-v-231e0be1]{justify-content:center;align-items:center;width:2rem;height:2rem;display:flex}.cui-light-control__icon-svg[data-v-231e0be1]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s,filter .2s,opacity .2s}.cui-light-control__icon-svg--on[data-v-231e0be1]{color:var(--yellow-400)}.cui-light-control__label[data-v-231e0be1]{color:var(--text-color);flex:1;font-weight:500}.cui-light-control__toggle[data-v-231e0be1]{margin-left:auto}.cui-light-control__brightness[data-v-231e0be1]{flex-direction:column;gap:.5rem;padding-top:.5rem;display:flex}.cui-light-control__brightness-header[data-v-231e0be1]{align-items:center;gap:.5rem;display:flex}.cui-light-control__brightness-icon[data-v-231e0be1]{width:1rem;height:1rem;color:var(--text-secondary-color)}.cui-light-control__brightness-value[data-v-231e0be1]{color:var(--text-secondary-color);margin-left:auto;font-size:.875rem}.cui-light-control__slider[data-v-231e0be1]{width:100%}.cui-light-control--small[data-v-231e0be1]{gap:.5rem;padding:.75rem}.cui-light-control--small .cui-light-control__icon[data-v-231e0be1]{width:1.5rem;height:1.5rem}.cui-light-control--small .cui-light-control__icon-svg[data-v-231e0be1]{width:1.25rem;height:1.25rem}.cui-light-control--small .cui-light-control__label[data-v-231e0be1]{font-size:.875rem}.cui-light-control--large[data-v-231e0be1]{gap:1rem;padding:1.25rem}.cui-light-control--large .cui-light-control__icon[data-v-231e0be1]{width:2.5rem;height:2.5rem}.cui-light-control--large .cui-light-control__icon-svg[data-v-231e0be1]{width:2rem;height:2rem}.cui-light-control--large .cui-light-control__label[data-v-231e0be1]{font-size:1.125rem}.cui-detection[data-v-4bdc871b]{border-radius:.5rem;flex-direction:column;gap:.5rem;padding:.75rem;display:flex}.cui-detection--detected[data-v-4bdc871b]{border-color:#22c55e4d}.cui-detection--disabled[data-v-4bdc871b]{opacity:.6}.cui-detection__header[data-v-4bdc871b]{align-items:center;gap:.5rem;display:flex}.cui-detection__icon[data-v-4bdc871b]{justify-content:center;align-items:center;width:1.75rem;height:1.75rem;display:flex}.cui-detection__icon-svg[data-v-4bdc871b]{width:1.5rem;height:1.5rem;color:var(--text-secondary-color);transition:color .2s}.cui-detection__icon--detected .cui-detection__icon-svg[data-v-4bdc871b]{color:#22c55e}.cui-detection__info[data-v-4bdc871b]{flex-direction:column;flex:1;gap:0;display:flex}.cui-detection__label[data-v-4bdc871b]{color:var(--text-color);font-size:.875rem;font-weight:500}.cui-detection__status[data-v-4bdc871b]{color:var(--text-secondary-color);font-size:.75rem;font-weight:500}.cui-detection__status--detected[data-v-4bdc871b]{color:#22c55e}.cui-detection__indicator[data-v-4bdc871b]{background-color:var(--surface-300);border-radius:50%;width:.5rem;height:.5rem;transition:all .2s}.cui-detection__indicator--detected[data-v-4bdc871b]{background-color:#22c55e;animation:1.5s ease-in-out infinite pulse-indicator-4bdc871b;box-shadow:0 0 6px #22c55e99}@keyframes pulse-indicator-4bdc871b{0%,to{opacity:1}50%{opacity:.5}}.cui-detection__detections[data-v-4bdc871b]{flex-wrap:wrap;gap:.25rem;padding-top:.5rem;display:flex}.cui-detection__detection-tag[data-v-4bdc871b]{color:#22c55e;text-transform:capitalize;background:#22c55e26;border-radius:1rem;align-items:center;padding:.125rem .5rem;font-size:.625rem;font-weight:500;display:inline-flex}.cui-detection--small[data-v-4bdc871b]{gap:.375rem;padding:.5rem}.cui-detection--small .cui-detection__icon[data-v-4bdc871b]{width:1.25rem;height:1.25rem}.cui-detection--small .cui-detection__icon-svg[data-v-4bdc871b]{width:1.125rem;height:1.125rem}.cui-detection--small .cui-detection__label[data-v-4bdc871b]{font-size:.75rem}.cui-detection--small .cui-detection__status[data-v-4bdc871b]{font-size:.625rem}.cui-detection--small .cui-detection__indicator[data-v-4bdc871b]{width:.375rem;height:.375rem}.cui-detection--small .cui-detection__detection-tag[data-v-4bdc871b]{padding:.0625rem .375rem;font-size:.5rem}.cui-detection--large[data-v-4bdc871b]{gap:.75rem;padding:1rem}.cui-detection--large .cui-detection__icon[data-v-4bdc871b]{width:2.25rem;height:2.25rem}.cui-detection--large .cui-detection__icon-svg[data-v-4bdc871b]{width:2rem;height:2rem}.cui-detection--large .cui-detection__label[data-v-4bdc871b]{font-size:1rem}.cui-detection--large .cui-detection__status[data-v-4bdc871b]{font-size:.875rem}.cui-detection--large .cui-detection__indicator[data-v-4bdc871b]{width:.625rem;height:.625rem}.cui-detection--large .cui-detection__detection-tag[data-v-4bdc871b]{padding:.1875rem .625rem;font-size:.75rem}.overview-container[data-v-745063e6]{flex-direction:column;display:flex}.overview-section[data-v-745063e6]{border-bottom:1px solid var(--surface-border);padding:1rem}.overview-section[data-v-745063e6]:last-child{border-bottom:none}.overview-section-title[data-v-745063e6]{text-transform:uppercase;color:var(--text-secondary-color);letter-spacing:.05em;margin-bottom:.75rem;font-size:.75rem;font-weight:600}[data-v-745063e6] .p-datatable-tbody>tr>td{height:50px}.no-sensors[data-v-745063e6]{text-align:center;color:var(--text-secondary-color);padding:1.5rem;font-size:.875rem}.drawer-header[data-v-d95d997c]{background:var(--p-drawer-background)}.loader[data-v-839ba1ea]{background:var(--ground-background);width:100dvw;min-width:100dvw;max-width:100dvw;height:100dvh;min-height:100dvh;max-height:100dvh}div[data-v-839ba1ea] .cameraLens{transform-origin:35% 55%;animation:.8s cubic-bezier(.47,1.84,.21,.8) forwards lensMove-839ba1ea,.8s ease-in-out .4s forwards lensRotate-839ba1ea,.6s cubic-bezier(.47,1.84,.21,.8) 1.3s forwards lensMoveBack-839ba1ea}div[data-v-839ba1ea] .cameraLetter{transform-origin:50%;animation:.4s cubic-bezier(.47,1.84,.21,.8) forwards letterScale-839ba1ea,.4s cubic-bezier(.47,1.84,.21,.8) 1.2s forwards letterScaleBack-839ba1ea}@keyframes letterScale-839ba1ea{0%{transform:scale(1)}to{transform:scale(.8)}}@keyframes letterScaleBack-839ba1ea{0%{transform:scale(.8)}to{transform:scale(1)}}@keyframes lensMove-839ba1ea{0%{transform:translateY(0)}to{transform:translateY(-40px)}}@keyframes lensMoveBack-839ba1ea{0%{transform:translateY(-40px)}to{transform:translateY(0)}}@keyframes lensRotate-839ba1ea{0%{transform:translateY(-40px)rotate(0)}to{transform:translateY(-40px)rotate(-360deg)}}.fixed-bg[data-v-c73e44d2]{top:calc(0px - env(safe-area-inset-top,0px) - 10px);left:calc(0px - env(safe-area-inset-left,0px) - 10px);right:calc(0px - env(safe-area-inset-right,0px) - 10px);bottom:calc(0px - env(safe-area-inset-bottom,0px) - 10px);z-index:0;position:fixed}