nextclaw 0.18.2 → 0.18.4

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 (107) hide show
  1. package/dist/cli/app/index.js +409 -123
  2. package/package.json +15 -15
  3. package/ui-dist/assets/api-DnPN4SyA.js +15 -0
  4. package/ui-dist/assets/app-manager-provider-M7TngYxx.js +1 -0
  5. package/ui-dist/assets/app-navigation.config-B5YIdRju.js +1 -0
  6. package/ui-dist/assets/{book-open-BE8M56IM.js → book-open-B4mOKdz8.js} +1 -1
  7. package/ui-dist/assets/channels-list-page-Cm-Bbu6u.js +8 -0
  8. package/ui-dist/assets/chat-C0ZNZtS3.js +58 -0
  9. package/ui-dist/assets/chat-page-CGHNhXaw.js +1 -0
  10. package/ui-dist/assets/chunk-JZWAC4HX-BJer-fqD.js +3 -0
  11. package/ui-dist/assets/config-split-page-B3PRA_AV.js +1 -0
  12. package/ui-dist/assets/{createLucideIcon-CCiTGX8L.js → createLucideIcon-C_GFKVuW.js} +1 -1
  13. package/ui-dist/assets/desktop-update-config-Dfh-3uma.js +1 -0
  14. package/ui-dist/assets/{dialog-BghZFPch.js → dialog-D-I7ONHQ.js} +1 -1
  15. package/ui-dist/assets/{dist-Dd9cr-kz.js → dist-DreLBS93.js} +1 -1
  16. package/ui-dist/assets/doc-browser-CoKIUCJj.js +1 -0
  17. package/ui-dist/assets/doc-browser-CwgI7ipB.js +1 -0
  18. package/ui-dist/assets/doc-browser-DYKpRqe-.js +1 -0
  19. package/ui-dist/assets/doc-browser-context-Dib9sS83.js +1 -0
  20. package/ui-dist/assets/{es2015-CEAreese.js → es2015-DMSUl3fm.js} +1 -1
  21. package/ui-dist/assets/{external-link-qsnCMhw1.js → external-link-DP2IJ7AM.js} +1 -1
  22. package/ui-dist/assets/folder-BPwc278w.js +1 -0
  23. package/ui-dist/assets/{hash-0zjWsNl-.js → hash-CvcvtMBq.js} +1 -1
  24. package/ui-dist/assets/i18n-BnNAQpVM.js +1 -0
  25. package/ui-dist/assets/index-Bc6c1kIx.js +2 -0
  26. package/ui-dist/assets/index-mRmSAB-e.css +1 -0
  27. package/ui-dist/assets/{key-round-BLe9D8ND.js → key-round-BQXmPSxD.js} +1 -1
  28. package/ui-dist/assets/loader-circle-C6gg2m2a.js +1 -0
  29. package/ui-dist/assets/{LogoBadge-DP8Ye7wJ.js → logo-badge-uB4SwANR.js} +1 -1
  30. package/ui-dist/assets/{logos-_v5b2SdG.js → logos-BcELLmYh.js} +1 -1
  31. package/ui-dist/assets/marketplace-page-BCrS-jH6.js +49 -0
  32. package/ui-dist/assets/marketplace-page-DVrlpB68.js +1 -0
  33. package/ui-dist/assets/mcp-marketplace-page-CjrxT6wI.js +40 -0
  34. package/ui-dist/assets/mcp-marketplace-page-pQ_A38fH.js +1 -0
  35. package/ui-dist/assets/message-square-CLVODA23.js +1 -0
  36. package/ui-dist/assets/model-config-D4myteLK.js +1 -0
  37. package/ui-dist/assets/notice-card-DX_NEZTQ.js +1 -0
  38. package/ui-dist/assets/play-DeNVUA5C.js +1 -0
  39. package/ui-dist/assets/plus-BptLViq1.js +1 -0
  40. package/ui-dist/assets/popover-Dm_NQ3Cs.js +1 -0
  41. package/ui-dist/assets/provider-scoped-model-input-BLHImwI5.js +1 -0
  42. package/ui-dist/assets/providers-list-DsBFslNi.js +1 -0
  43. package/ui-dist/assets/refresh-ccw-CeG203yU.js +1 -0
  44. package/ui-dist/assets/remote-CQQykOYe.js +1 -0
  45. package/ui-dist/assets/rotate-cw-F7aThvYj.js +1 -0
  46. package/ui-dist/assets/runtime-config-page-Bz9r68Rf.js +1 -0
  47. package/ui-dist/assets/{save-D4bObrmH.js → save-7ztImRj7.js} +1 -1
  48. package/ui-dist/assets/search-DZSNKEGp.js +1 -0
  49. package/ui-dist/assets/search-config-C-6KpgRQ.js +1 -0
  50. package/ui-dist/assets/secrets-config-MiMElvpm.js +3 -0
  51. package/ui-dist/assets/{select-BILPf7zs.js → select-RgeHgn_-.js} +1 -1
  52. package/ui-dist/assets/sessions-config-page-0KNW9QC_.js +2 -0
  53. package/ui-dist/assets/{setting-row-BATDgg4r.js → setting-row-vwm4XKv2.js} +1 -1
  54. package/ui-dist/assets/settings-DjvNMJde.js +1 -0
  55. package/ui-dist/assets/skeleton-5Mg6vZHN.js +1 -0
  56. package/ui-dist/assets/sparkles-CyDTgTM4.js +1 -0
  57. package/ui-dist/assets/status-dot-aQU9Mia4.js +1 -0
  58. package/ui-dist/assets/{tabs-custom-Bx3cNhD-.js → tabs-custom-C4P7g4vR.js} +1 -1
  59. package/ui-dist/assets/{tag-chip-zUaDE2-H.js → tag-chip-DGqz3TON.js} +1 -1
  60. package/ui-dist/assets/theme-provider-CUppbOyN.js +1 -0
  61. package/ui-dist/assets/tooltip-DQlSKhZ_.js +1 -0
  62. package/ui-dist/assets/{trash-2-CQUgYyRn.js → trash-2-C1cdqL6V.js} +1 -1
  63. package/ui-dist/assets/use-config-CrsavfWZ.js +1 -0
  64. package/ui-dist/assets/{useConfirmDialog-patAnl1g.js → use-confirm-dialog-D1AnLFlc.js} +1 -1
  65. package/ui-dist/assets/use-infinite-scroll-loader-DZhv-rmv.js +1 -0
  66. package/ui-dist/assets/use-viewport-layout-CytJAPWM.js +1 -0
  67. package/ui-dist/assets/x-BjMO7v8q.js +1 -0
  68. package/ui-dist/index.html +39 -22
  69. package/ui-dist/assets/ChannelsList-SQ7Oxotv.js +0 -8
  70. package/ui-dist/assets/DocBrowser-BCO2k6XD.js +0 -1
  71. package/ui-dist/assets/DocBrowser-rDOjI3ga.js +0 -1
  72. package/ui-dist/assets/DocBrowserContext-BUq3Wo8O.js +0 -1
  73. package/ui-dist/assets/ModelConfig-C77Ae9ru.js +0 -1
  74. package/ui-dist/assets/ProviderScopedModelInput-CEnK61uo.js +0 -1
  75. package/ui-dist/assets/ProvidersList-BCupBayq.js +0 -1
  76. package/ui-dist/assets/RuntimeConfig-Ad-CAcmy.js +0 -1
  77. package/ui-dist/assets/SearchConfig-BfCz4wJ4.js +0 -1
  78. package/ui-dist/assets/SecretsConfig-DjmBIhyy.js +0 -3
  79. package/ui-dist/assets/SessionsConfig-CvjxU40H.js +0 -2
  80. package/ui-dist/assets/chat-page-JKC6ln-y.js +0 -58
  81. package/ui-dist/assets/chat-session-display-YcRMrAMa.js +0 -1
  82. package/ui-dist/assets/chunk-JZWAC4HX-erTUn3b8.js +0 -3
  83. package/ui-dist/assets/client-CszWMVKi.js +0 -7
  84. package/ui-dist/assets/config-split-page-BAGSzUR3.js +0 -1
  85. package/ui-dist/assets/desktop-DfkLlkG2.js +0 -1
  86. package/ui-dist/assets/desktop-update-config-BXeGlqHD.js +0 -1
  87. package/ui-dist/assets/dist-ZwoAXs46.js +0 -9
  88. package/ui-dist/assets/download-D7LOizcW.js +0 -1
  89. package/ui-dist/assets/i18n-DvzXOGQX.js +0 -1
  90. package/ui-dist/assets/index-DvVTC9FF.css +0 -1
  91. package/ui-dist/assets/index-lr6rQUSd.js +0 -2
  92. package/ui-dist/assets/loader-circle-wj7kARHv.js +0 -1
  93. package/ui-dist/assets/marketplace-page-CAAk1Khc.js +0 -1
  94. package/ui-dist/assets/marketplace-page-CfCiq90S.js +0 -49
  95. package/ui-dist/assets/mcp-marketplace-page-D0Pp9Hs-.js +0 -40
  96. package/ui-dist/assets/play-o6NmwGTi.js +0 -1
  97. package/ui-dist/assets/plus-I9pBS4Fl.js +0 -1
  98. package/ui-dist/assets/refresh-cw-MNqgR3LZ.js +0 -1
  99. package/ui-dist/assets/remote-C9fXm4V5.js +0 -1
  100. package/ui-dist/assets/search-DxmL3IWE.js +0 -1
  101. package/ui-dist/assets/security-config-BUm6FFfl.js +0 -1
  102. package/ui-dist/assets/skeleton-COKMAnJy.js +0 -1
  103. package/ui-dist/assets/switch-CBOzecWS.js +0 -1
  104. package/ui-dist/assets/use-infinite-scroll-loader-B5V2Klve.js +0 -1
  105. package/ui-dist/assets/useMutation-__AYv-Pz.js +0 -1
  106. package/ui-dist/assets/x-BHUGQIUv.js +0 -1
  107. /package/ui-dist/assets/{config-hints-DSQQbeOA.js → config-hints-CPNzbMEp.js} +0 -0
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=o((e=>{var t=Symbol.for(`react.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.provider`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.iterator;function p(e){return typeof e!=`object`||!e?null:(e=f&&e[f]||e[`@@iterator`],typeof e==`function`?e:null)}var m={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},h=Object.assign,g={};function _(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}_.prototype.isReactComponent={},_.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`setState(...): takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},_.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function v(){}v.prototype=_.prototype;function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||m}var b=y.prototype=new v;b.constructor=y,h(b,_.prototype),b.isPureReactComponent=!0;var x=Array.isArray,S=Object.prototype.hasOwnProperty,C={current:null},w={key:!0,ref:!0,__self:!0,__source:!0};function T(e,n,r){var i,a={},o=null,s=null;if(n!=null)for(i in n.ref!==void 0&&(s=n.ref),n.key!==void 0&&(o=``+n.key),n)S.call(n,i)&&!w.hasOwnProperty(i)&&(a[i]=n[i]);var c=arguments.length-2;if(c===1)a.children=r;else if(1<c){for(var l=Array(c),u=0;u<c;u++)l[u]=arguments[u+2];a.children=l}if(e&&e.defaultProps)for(i in c=e.defaultProps,c)a[i]===void 0&&(a[i]=c[i]);return{$$typeof:t,type:e,key:o,ref:s,props:a,_owner:C.current}}function E(e,n){return{$$typeof:t,type:e.type,key:n,ref:e.ref,props:e.props,_owner:e._owner}}function D(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function O(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var k=/\/+/g;function A(e,t){return typeof e==`object`&&e&&e.key!=null?O(``+e.key):t.toString(36)}function j(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0}}if(c)return c=e,o=o(c),e=a===``?`.`+A(c,0):a,x(o)?(i=``,e!=null&&(i=e.replace(k,`$&/`)+`/`),j(o,r,i,``,function(e){return e})):o!=null&&(D(o)&&(o=E(o,i+(!o.key||c&&c.key===o.key?``:(``+o.key).replace(k,`$&/`)+`/`)+e)),r.push(o)),1;if(c=0,a=a===``?`.`:a+`:`,x(e))for(var l=0;l<e.length;l++){s=e[l];var u=a+A(s,l);c+=j(s,r,i,u,o)}else if(u=p(e),typeof u==`function`)for(e=u.call(e),l=0;!(s=e.next()).done;)s=s.value,u=a+A(s,l++),c+=j(s,r,i,u,o);else if(s===`object`)throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`);return c}function M(e,t,n){if(e==null)return e;var r=[],i=0;return j(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function N(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t)},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var P={current:null},F={transition:null},I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:F,ReactCurrentOwner:C};function L(){throw Error(`act(...) is not supported in production builds of React.`)}e.Children={map:M,forEach:function(e,t,n){M(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return M(e,function(){t++}),t},toArray:function(e){return M(e,function(e){return e})||[]},only:function(e){if(!D(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}},e.Component=_,e.Fragment=r,e.Profiler=a,e.PureComponent=y,e.StrictMode=i,e.Suspense=l,e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,e.act=L,e.cloneElement=function(e,n,r){if(e==null)throw Error(`React.cloneElement(...): The argument must be a React element, but you passed `+e+`.`);var i=h({},e.props),a=e.key,o=e.ref,s=e._owner;if(n!=null){if(n.ref!==void 0&&(o=n.ref,s=C.current),n.key!==void 0&&(a=``+n.key),e.type&&e.type.defaultProps)var c=e.type.defaultProps;for(l in n)S.call(n,l)&&!w.hasOwnProperty(l)&&(i[l]=n[l]===void 0&&c!==void 0?c[l]:n[l])}var l=arguments.length-2;if(l===1)i.children=r;else if(1<l){c=Array(l);for(var u=0;u<l;u++)c[u]=arguments[u+2];i.children=c}return{$$typeof:t,type:e.type,key:a,ref:o,props:i,_owner:s}},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:o,_context:e},e.Consumer=e},e.createElement=T,e.createFactory=function(e){var t=T.bind(null,e);return t.type=e,t},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=D,e.lazy=function(e){return{$$typeof:d,_payload:{_status:-1,_result:e},_init:N}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=function(e){var t=F.transition;F.transition={};try{e()}finally{F.transition=t}},e.unstable_act=L,e.useCallback=function(e,t){return P.current.useCallback(e,t)},e.useContext=function(e){return P.current.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e){return P.current.useDeferredValue(e)},e.useEffect=function(e,t){return P.current.useEffect(e,t)},e.useId=function(){return P.current.useId()},e.useImperativeHandle=function(e,t,n){return P.current.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return P.current.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return P.current.useLayoutEffect(e,t)},e.useMemo=function(e,t){return P.current.useMemo(e,t)},e.useReducer=function(e,t,n){return P.current.useReducer(e,t,n)},e.useRef=function(e){return P.current.useRef(e)},e.useState=function(e){return P.current.useState(e)},e.useSyncExternalStore=function(e,t,n){return P.current.useSyncExternalStore(e,t,n)},e.useTransition=function(){return P.current.useTransition()},e.version=`18.3.1`})),d=o(((e,t)=>{t.exports=u()})),f=o((e=>{var t=d(),n=Symbol.for(`react.element`),r=Symbol.for(`react.fragment`),i=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,o={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,r){var s,c={},l=null,u=null;for(s in r!==void 0&&(l=``+r),t.key!==void 0&&(l=``+t.key),t.ref!==void 0&&(u=t.ref),t)i.call(t,s)&&!o.hasOwnProperty(s)&&(c[s]=t[s]);if(e&&e.defaultProps)for(s in t=e.defaultProps,t)c[s]===void 0&&(c[s]=t[s]);return{$$typeof:n,type:e,key:l,ref:u,props:c,_owner:a.current}}e.Fragment=r,e.jsx=s,e.jsxs=s})),p=o(((e,t)=>{t.exports=f()}));function m(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=m(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function h(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=m(e))&&(r&&(r+=` `),r+=t);return r}var g=`-`,_=e=>{let t=x(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{let n=e.split(g);return n[0]===``&&n.length!==1&&n.shift(),v(n,t)||b(e)},getConflictingClassGroupIds:(e,t)=>{let i=n[e]||[];return t&&r[e]?[...i,...r[e]]:i}}},v=(e,t)=>{if(e.length===0)return t.classGroupId;let n=e[0],r=t.nextPart.get(n),i=r?v(e.slice(1),r):void 0;if(i)return i;if(t.validators.length===0)return;let a=e.join(g);return t.validators.find(({validator:e})=>e(a))?.classGroupId},y=/^\[(.+)\]$/,b=e=>{if(y.test(e)){let t=y.exec(e)[1],n=t?.substring(0,t.indexOf(`:`));if(n)return`arbitrary..`+n}},x=e=>{let{theme:t,prefix:n}=e,r={nextPart:new Map,validators:[]};return T(Object.entries(e.classGroups),n).forEach(([e,n])=>{S(n,r,e,t)}),r},S=(e,t,n,r)=>{e.forEach(e=>{if(typeof e==`string`){let r=e===``?t:C(t,e);r.classGroupId=n;return}if(typeof e==`function`){if(w(e)){S(e(r),t,n,r);return}t.validators.push({validator:e,classGroupId:n});return}Object.entries(e).forEach(([e,i])=>{S(i,C(t,e),n,r)})})},C=(e,t)=>{let n=e;return t.split(g).forEach(e=>{n.nextPart.has(e)||n.nextPart.set(e,{nextPart:new Map,validators:[]}),n=n.nextPart.get(e)}),n},w=e=>e.isThemeGetter,T=(e,t)=>t?e.map(([e,n])=>[e,n.map(e=>typeof e==`string`?t+e:typeof e==`object`?Object.fromEntries(Object.entries(e).map(([e,n])=>[t+e,n])):e)]):e,E=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=new Map,r=new Map,i=(i,a)=>{n.set(i,a),t++,t>e&&(t=0,r=n,n=new Map)};return{get(e){let t=n.get(e);if(t!==void 0)return t;if((t=r.get(e))!==void 0)return i(e,t),t},set(e,t){n.has(e)?n.set(e,t):i(e,t)}}},D=`!`,O=e=>{let{separator:t,experimentalParseClassName:n}=e,r=t.length===1,i=t[0],a=t.length,o=e=>{let n=[],o=0,s=0,c;for(let l=0;l<e.length;l++){let u=e[l];if(o===0){if(u===i&&(r||e.slice(l,l+a)===t)){n.push(e.slice(s,l)),s=l+a;continue}if(u===`/`){c=l;continue}}u===`[`?o++:u===`]`&&o--}let l=n.length===0?e:e.substring(s),u=l.startsWith(D);return{modifiers:n,hasImportantModifier:u,baseClassName:u?l.substring(1):l,maybePostfixModifierPosition:c&&c>s?c-s:void 0}};return n?e=>n({className:e,parseClassName:o}):o},k=e=>{if(e.length<=1)return e;let t=[],n=[];return e.forEach(e=>{e[0]===`[`?(t.push(...n.sort(),e),n=[]):n.push(e)}),t.push(...n.sort()),t},A=e=>({cache:E(e.cacheSize),parseClassName:O(e),..._(e)}),j=/\s+/,M=(e,t)=>{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i}=t,a=[],o=e.trim().split(j),s=``;for(let e=o.length-1;e>=0;--e){let t=o[e],{modifiers:c,hasImportantModifier:l,baseClassName:u,maybePostfixModifierPosition:d}=n(t),f=!!d,p=r(f?u.substring(0,d):u);if(!p){if(!f){s=t+(s.length>0?` `+s:s);continue}if(p=r(u),!p){s=t+(s.length>0?` `+s:s);continue}f=!1}let m=k(c).join(`:`),h=l?m+D:m,g=h+p;if(a.includes(g))continue;a.push(g);let _=i(p,f);for(let e=0;e<_.length;++e){let t=_[e];a.push(h+t)}s=t+(s.length>0?` `+s:s)}return s};function N(){let e=0,t,n,r=``;for(;e<arguments.length;)(t=arguments[e++])&&(n=P(t))&&(r&&(r+=` `),r+=n);return r}var P=e=>{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r<e.length;r++)e[r]&&(t=P(e[r]))&&(n&&(n+=` `),n+=t);return n};function F(e,...t){let n,r,i,a=o;function o(o){return n=A(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)}function s(e){let t=r(e);if(t)return t;let a=M(e,n);return i(e,a),a}return function(){return a(N.apply(null,arguments))}}var I=e=>{let t=t=>t[e]||[];return t.isThemeGetter=!0,t},L=/^\[(?:([a-z-]+):)?(.+)\]$/i,R=/^\d+\/\d+$/,ee=new Set([`px`,`full`,`screen`]),te=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ne=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,re=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,ie=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,ae=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,z=e=>V(e)||ee.has(e)||R.test(e),B=e=>q(e,`length`,pe),V=e=>!!e&&!Number.isNaN(Number(e)),H=e=>q(e,`number`,V),U=e=>!!e&&Number.isInteger(Number(e)),oe=e=>e.endsWith(`%`)&&V(e.slice(0,-1)),W=e=>L.test(e),G=e=>te.test(e),se=new Set([`length`,`size`,`percentage`]),ce=e=>q(e,se,J),le=e=>q(e,`position`,J),ue=new Set([`image`,`url`]),de=e=>q(e,ue,he),fe=e=>q(e,``,me),K=()=>!0,q=(e,t,n)=>{let r=L.exec(e);return r?r[1]?typeof t==`string`?r[1]===t:t.has(r[1]):n(r[2]):!1},pe=e=>ne.test(e)&&!re.test(e),J=()=>!1,me=e=>ie.test(e),he=e=>ae.test(e),Y=F(()=>{let e=I(`colors`),t=I(`spacing`),n=I(`blur`),r=I(`brightness`),i=I(`borderColor`),a=I(`borderRadius`),o=I(`borderSpacing`),s=I(`borderWidth`),c=I(`contrast`),l=I(`grayscale`),u=I(`hueRotate`),d=I(`invert`),f=I(`gap`),p=I(`gradientColorStops`),m=I(`gradientColorStopPositions`),h=I(`inset`),g=I(`margin`),_=I(`opacity`),v=I(`padding`),y=I(`saturate`),b=I(`scale`),x=I(`sepia`),S=I(`skew`),C=I(`space`),w=I(`translate`),T=()=>[`auto`,`contain`,`none`],E=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],D=()=>[`auto`,W,t],O=()=>[W,t],k=()=>[``,z,B],A=()=>[`auto`,V,W],j=()=>[`bottom`,`center`,`left`,`left-bottom`,`left-top`,`right`,`right-bottom`,`right-top`,`top`],M=()=>[`solid`,`dashed`,`dotted`,`double`,`none`],N=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],P=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`],F=()=>[``,`0`,W],L=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],R=()=>[V,W];return{cacheSize:500,separator:`:`,theme:{colors:[K],spacing:[z,B],blur:[`none`,``,G,W],brightness:R(),borderColor:[e],borderRadius:[`none`,``,`full`,G,W],borderSpacing:O(),borderWidth:k(),contrast:R(),grayscale:F(),hueRotate:R(),invert:F(),gap:O(),gradientColorStops:[e],gradientColorStopPositions:[oe,B],inset:D(),margin:D(),opacity:R(),padding:O(),saturate:R(),scale:R(),sepia:F(),skew:R(),space:O(),translate:O()},classGroups:{aspect:[{aspect:[`auto`,`square`,`video`,W]}],container:[`container`],columns:[{columns:[G]}],"break-after":[{"break-after":L()}],"break-before":[{"break-before":L()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:[...j(),W]}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:T()}],"overscroll-x":[{"overscroll-x":T()}],"overscroll-y":[{"overscroll-y":T()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:[h]}],"inset-x":[{"inset-x":[h]}],"inset-y":[{"inset-y":[h]}],start:[{start:[h]}],end:[{end:[h]}],top:[{top:[h]}],right:[{right:[h]}],bottom:[{bottom:[h]}],left:[{left:[h]}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[`auto`,U,W]}],basis:[{basis:D()}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`wrap`,`wrap-reverse`,`nowrap`]}],flex:[{flex:[`1`,`auto`,`initial`,`none`,W]}],grow:[{grow:F()}],shrink:[{shrink:F()}],order:[{order:[`first`,`last`,`none`,U,W]}],"grid-cols":[{"grid-cols":[K]}],"col-start-end":[{col:[`auto`,{span:[`full`,U,W]},W]}],"col-start":[{"col-start":A()}],"col-end":[{"col-end":A()}],"grid-rows":[{"grid-rows":[K]}],"row-start-end":[{row:[`auto`,{span:[U,W]},W]}],"row-start":[{"row-start":A()}],"row-end":[{"row-end":A()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":[`auto`,`min`,`max`,`fr`,W]}],"auto-rows":[{"auto-rows":[`auto`,`min`,`max`,`fr`,W]}],gap:[{gap:[f]}],"gap-x":[{"gap-x":[f]}],"gap-y":[{"gap-y":[f]}],"justify-content":[{justify:[`normal`,...P()]}],"justify-items":[{"justify-items":[`start`,`end`,`center`,`stretch`]}],"justify-self":[{"justify-self":[`auto`,`start`,`end`,`center`,`stretch`]}],"align-content":[{content:[`normal`,...P(),`baseline`]}],"align-items":[{items:[`start`,`end`,`center`,`baseline`,`stretch`]}],"align-self":[{self:[`auto`,`start`,`end`,`center`,`stretch`,`baseline`]}],"place-content":[{"place-content":[...P(),`baseline`]}],"place-items":[{"place-items":[`start`,`end`,`center`,`baseline`,`stretch`]}],"place-self":[{"place-self":[`auto`,`start`,`end`,`center`,`stretch`]}],p:[{p:[v]}],px:[{px:[v]}],py:[{py:[v]}],ps:[{ps:[v]}],pe:[{pe:[v]}],pt:[{pt:[v]}],pr:[{pr:[v]}],pb:[{pb:[v]}],pl:[{pl:[v]}],m:[{m:[g]}],mx:[{mx:[g]}],my:[{my:[g]}],ms:[{ms:[g]}],me:[{me:[g]}],mt:[{mt:[g]}],mr:[{mr:[g]}],mb:[{mb:[g]}],ml:[{ml:[g]}],"space-x":[{"space-x":[C]}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":[C]}],"space-y-reverse":[`space-y-reverse`],w:[{w:[`auto`,`min`,`max`,`fit`,`svw`,`lvw`,`dvw`,W,t]}],"min-w":[{"min-w":[W,t,`min`,`max`,`fit`]}],"max-w":[{"max-w":[W,t,`none`,`full`,`min`,`max`,`fit`,`prose`,{screen:[G]},G]}],h:[{h:[W,t,`auto`,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"min-h":[{"min-h":[W,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],"max-h":[{"max-h":[W,t,`min`,`max`,`fit`,`svh`,`lvh`,`dvh`]}],size:[{size:[W,t,`auto`,`min`,`max`,`fit`]}],"font-size":[{text:[`base`,G,B]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`,H]}],"font-family":[{font:[K]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`,W]}],"line-clamp":[{"line-clamp":[`none`,V,H]}],leading:[{leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`,z,W]}],"list-image":[{"list-image":[`none`,W]}],"list-style-type":[{list:[`none`,`disc`,`decimal`,W]}],"list-style-position":[{list:[`inside`,`outside`]}],"placeholder-color":[{placeholder:[e]}],"placeholder-opacity":[{"placeholder-opacity":[_]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"text-color":[{text:[e]}],"text-opacity":[{"text-opacity":[_]}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...M(),`wavy`]}],"text-decoration-thickness":[{decoration:[`auto`,`from-font`,z,B]}],"underline-offset":[{"underline-offset":[`auto`,z,W]}],"text-decoration-color":[{decoration:[e]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:O()}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,W]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,W]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-opacity":[{"bg-opacity":[_]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:[...j(),le]}],"bg-repeat":[{bg:[`no-repeat`,{repeat:[``,`x`,`y`,`round`,`space`]}]}],"bg-size":[{bg:[`auto`,`cover`,`contain`,ce]}],"bg-image":[{bg:[`none`,{"gradient-to":[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},de]}],"bg-color":[{bg:[e]}],"gradient-from-pos":[{from:[m]}],"gradient-via-pos":[{via:[m]}],"gradient-to-pos":[{to:[m]}],"gradient-from":[{from:[p]}],"gradient-via":[{via:[p]}],"gradient-to":[{to:[p]}],rounded:[{rounded:[a]}],"rounded-s":[{"rounded-s":[a]}],"rounded-e":[{"rounded-e":[a]}],"rounded-t":[{"rounded-t":[a]}],"rounded-r":[{"rounded-r":[a]}],"rounded-b":[{"rounded-b":[a]}],"rounded-l":[{"rounded-l":[a]}],"rounded-ss":[{"rounded-ss":[a]}],"rounded-se":[{"rounded-se":[a]}],"rounded-ee":[{"rounded-ee":[a]}],"rounded-es":[{"rounded-es":[a]}],"rounded-tl":[{"rounded-tl":[a]}],"rounded-tr":[{"rounded-tr":[a]}],"rounded-br":[{"rounded-br":[a]}],"rounded-bl":[{"rounded-bl":[a]}],"border-w":[{border:[s]}],"border-w-x":[{"border-x":[s]}],"border-w-y":[{"border-y":[s]}],"border-w-s":[{"border-s":[s]}],"border-w-e":[{"border-e":[s]}],"border-w-t":[{"border-t":[s]}],"border-w-r":[{"border-r":[s]}],"border-w-b":[{"border-b":[s]}],"border-w-l":[{"border-l":[s]}],"border-opacity":[{"border-opacity":[_]}],"border-style":[{border:[...M(),`hidden`]}],"divide-x":[{"divide-x":[s]}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":[s]}],"divide-y-reverse":[`divide-y-reverse`],"divide-opacity":[{"divide-opacity":[_]}],"divide-style":[{divide:M()}],"border-color":[{border:[i]}],"border-color-x":[{"border-x":[i]}],"border-color-y":[{"border-y":[i]}],"border-color-s":[{"border-s":[i]}],"border-color-e":[{"border-e":[i]}],"border-color-t":[{"border-t":[i]}],"border-color-r":[{"border-r":[i]}],"border-color-b":[{"border-b":[i]}],"border-color-l":[{"border-l":[i]}],"divide-color":[{divide:[i]}],"outline-style":[{outline:[``,...M()]}],"outline-offset":[{"outline-offset":[z,W]}],"outline-w":[{outline:[z,B]}],"outline-color":[{outline:[e]}],"ring-w":[{ring:k()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:[e]}],"ring-opacity":[{"ring-opacity":[_]}],"ring-offset-w":[{"ring-offset":[z,B]}],"ring-offset-color":[{"ring-offset":[e]}],shadow:[{shadow:[``,`inner`,`none`,G,fe]}],"shadow-color":[{shadow:[K]}],opacity:[{opacity:[_]}],"mix-blend":[{"mix-blend":[...N(),`plus-lighter`,`plus-darker`]}],"bg-blend":[{"bg-blend":N()}],filter:[{filter:[``,`none`]}],blur:[{blur:[n]}],brightness:[{brightness:[r]}],contrast:[{contrast:[c]}],"drop-shadow":[{"drop-shadow":[``,`none`,G,W]}],grayscale:[{grayscale:[l]}],"hue-rotate":[{"hue-rotate":[u]}],invert:[{invert:[d]}],saturate:[{saturate:[y]}],sepia:[{sepia:[x]}],"backdrop-filter":[{"backdrop-filter":[``,`none`]}],"backdrop-blur":[{"backdrop-blur":[n]}],"backdrop-brightness":[{"backdrop-brightness":[r]}],"backdrop-contrast":[{"backdrop-contrast":[c]}],"backdrop-grayscale":[{"backdrop-grayscale":[l]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u]}],"backdrop-invert":[{"backdrop-invert":[d]}],"backdrop-opacity":[{"backdrop-opacity":[_]}],"backdrop-saturate":[{"backdrop-saturate":[y]}],"backdrop-sepia":[{"backdrop-sepia":[x]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":[o]}],"border-spacing-x":[{"border-spacing-x":[o]}],"border-spacing-y":[{"border-spacing-y":[o]}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[`none`,`all`,``,`colors`,`opacity`,`shadow`,`transform`,W]}],duration:[{duration:R()}],ease:[{ease:[`linear`,`in`,`out`,`in-out`,W]}],delay:[{delay:R()}],animate:[{animate:[`none`,`spin`,`ping`,`pulse`,`bounce`,W]}],transform:[{transform:[``,`gpu`,`none`]}],scale:[{scale:[b]}],"scale-x":[{"scale-x":[b]}],"scale-y":[{"scale-y":[b]}],rotate:[{rotate:[U,W]}],"translate-x":[{"translate-x":[w]}],"translate-y":[{"translate-y":[w]}],"skew-x":[{"skew-x":[S]}],"skew-y":[{"skew-y":[S]}],"transform-origin":[{origin:[`center`,`top`,`top-right`,`right`,`bottom-right`,`bottom`,`bottom-left`,`left`,`top-left`,W]}],accent:[{accent:[`auto`,e]}],appearance:[{appearance:[`none`,`auto`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,W]}],"caret-color":[{caret:[e]}],"pointer-events":[{"pointer-events":[`none`,`auto`]}],resize:[{resize:[`none`,`y`,`x`,``]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scroll-m":[{"scroll-m":O()}],"scroll-mx":[{"scroll-mx":O()}],"scroll-my":[{"scroll-my":O()}],"scroll-ms":[{"scroll-ms":O()}],"scroll-me":[{"scroll-me":O()}],"scroll-mt":[{"scroll-mt":O()}],"scroll-mr":[{"scroll-mr":O()}],"scroll-mb":[{"scroll-mb":O()}],"scroll-ml":[{"scroll-ml":O()}],"scroll-p":[{"scroll-p":O()}],"scroll-px":[{"scroll-px":O()}],"scroll-py":[{"scroll-py":O()}],"scroll-ps":[{"scroll-ps":O()}],"scroll-pe":[{"scroll-pe":O()}],"scroll-pt":[{"scroll-pt":O()}],"scroll-pr":[{"scroll-pr":O()}],"scroll-pb":[{"scroll-pb":O()}],"scroll-pl":[{"scroll-pl":O()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,W]}],fill:[{fill:[e,`none`]}],"stroke-w":[{stroke:[z,B,H]}],stroke:[{stroke:[e,`none`]}],sr:[`sr-only`,`not-sr-only`],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-s`,`border-w-e`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-s`,`border-color-e`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]}}});function ge(...e){return Y(h(e))}var _e={agentsPageTitle:{zh:`Agent 管理`,en:`Agents`},agentsPageDescription:{zh:`管理可对话的 Agent 身份。每个 Agent 都有自己的主目录、设定、记忆与技能。`,en:`Manage conversational agent identities. Each agent owns its home directory, setup, memory, and skills.`},agentsHeroEyebrow:{zh:`Agent 管理台`,en:`Agent Gallery`},agentsHeroTitle:{zh:`让每个 Agent 都像真正的协作者一样存在`,en:`Give every agent the presence of a real collaborator`},agentsHeroDescription:{zh:`在这里浏览、创建并切换不同的 Agent 身份。每个 Agent 都有自己的头像、名称、主目录,以及独立的记忆与技能空间。`,en:`Browse, create, and choose distinct agent identities. Every agent carries its own avatar, name, home directory, memory, and skills space.`},agentsCreateButton:{zh:`新增 Agent`,en:`New Agent`},agentsCreateDialogTitle:{zh:`创建新的 Agent 身份`,en:`Create a new agent identity`},agentsCreateDialogDescription:{zh:`默认逻辑保持简单。只填必要信息,其余能力继续走统一配置与主目录模板。`,en:`Keep the flow simple. Provide only the essentials and let shared defaults plus the home directory template do the rest.`},agentsCreateDialogHint:{zh:"如果你希望让 AI 自动完成全部自定义,也可以继续使用 `nextclaw agents new`。",en:"If you want AI to automate the full setup, you can still use `nextclaw agents new`."},agentsCreateTitle:{zh:`创建 Agent`,en:`Create Agent`},agentsCreateDescription:{zh:"这里提供轻量入口。完整自动化创建链路也可通过 `nextclaw agents new` 使用。",en:"This is the lightweight UI entry. The full automation path is also available through `nextclaw agents new`."},agentsFormIdPlaceholder:{zh:`Agent ID,例如 engineer`,en:`Agent ID, for example engineer`},agentsFormNamePlaceholder:{zh:`显示名称,可选`,en:`Display name, optional`},agentsFormDescriptionPlaceholder:{zh:`角色描述,可选`,en:`Role description, optional`},agentsFormAvatarPlaceholder:{zh:`头像 URL 或本地路径,可选`,en:`Avatar URL or local path, optional`},agentsFormHomePlaceholder:{zh:`主目录,可选`,en:`Home Directory, optional`},agentsFormRuntimePlaceholder:{zh:`Runtime(如 native 或 codex,可选)`,en:`Runtime (e.g. native or codex, optional)`},agentsRuntimeSelectPlaceholder:{zh:`选择 Runtime`,en:`Select runtime`},agentsRuntimeUnavailableHelp:{zh:`当前 Runtime 已不在可用列表中;建议改选一个已安装且可用的 Runtime。`,en:`This runtime is no longer available in the current list. Switch to an installed and available runtime.`},agentsCreateAction:{zh:`创建 Agent`,en:`Create Agent`},agentsEditAction:{zh:`编辑`,en:`Edit`},agentsEditDialogTitle:{zh:`编辑 Agent 身份`,en:`Edit agent identity`},agentsEditDialogDescription:{zh:`更新名称、角色描述与头像。Agent ID 与主目录保持稳定,避免影响既有记忆、技能与会话。`,en:`Update the name, role description, and avatar. The agent ID and home directory stay stable to protect existing memory, skills, and sessions.`},agentsEditHomeReadonly:{zh:`主目录保持不变`,en:`Home directory stays unchanged`},agentsEditHomeReadonlyHint:{zh:`如需迁移主目录,请走独立配置迁移流程,避免意外丢失 Agent 上下文。`,en:`Use a dedicated config migration flow to move the home directory and avoid losing agent context unexpectedly.`},agentsEditSaveAction:{zh:`保存编辑`,en:`Save edits`},agentsRemoveAction:{zh:`移除`,en:`Remove`},agentsNewChat:{zh:`新建会话`,en:`New Chat`},agentsLoading:{zh:`正在加载 Agent...`,en:`Loading agents...`},agentsEmpty:{zh:`当前还没有附加 Agent`,en:`No extra agents yet`},agentsEmptyDescription:{zh:`先创建第一个专职 Agent,让它拥有自己的名字、头像与主目录。`,en:`Create the first specialist agent with its own name, avatar, and home directory.`},agentsBuiltIn:{zh:`内建`,en:`Built-in`},agentsCustom:{zh:`自定义`,en:`Custom`},agentsOverviewTotal:{zh:`全部 Agent`,en:`Conversational agents`},agentsOverviewBuiltIn:{zh:`系统主 Agent`,en:`System main agents`},agentsOverviewCustom:{zh:`专职 Agent`,en:`Specialist agents`},agentsCardBuiltInSummary:{zh:`系统主 Agent,适合作为默认入口与总控协作者。`,en:`The built-in main agent, ideal as the default entry and coordinating collaborator.`},agentsCardCustomSummary:{zh:`专属 Agent 身份,可沉淀自己的记忆、技能与角色风格。`,en:`A dedicated identity with its own memory, skills, and role style.`},agentsCardRuntimeLabel:{zh:`Runtime`,en:`Runtime`},agentsCardHomeLabel:{zh:`主目录`,en:`Home Directory`},agentsCardAvatarLabel:{zh:`Avatar`,en:`Avatar`},agentsCardStartChat:{zh:`开始对话`,en:`Start Chat`},agentsCardBuiltInTag:{zh:`系统主`,en:`Main Agent`},agentsCardCustomTag:{zh:`专职`,en:`Specialist`},chatDraftAgentTitle:{zh:`本次会话 Agent`,en:`Draft agent`},chatDraftAgentDescription:{zh:`创建后不可切换`,en:`Locked after creation`},chatDraftAgentCurrent:{zh:`当前 Agent`,en:`Current Agent`}},ve={channelsPageTitle:{zh:`消息渠道`,en:`Message Channels`},channelsPageDescription:{zh:`在一个页面中连续筛选、切换并配置各个消息渠道。`,en:`Filter, switch, and configure messaging channels in one continuous workspace.`},channelsLoading:{zh:`加载渠道中...`,en:`Loading channels...`},channelsTabEnabled:{zh:`已启用`,en:`Enabled`},channelsTabAll:{zh:`全部渠道`,en:`All Channels`},channelsFilterPlaceholder:{zh:`搜索渠道`,en:`Search channels`},channelsNoMatch:{zh:`没有匹配的渠道`,en:`No matching channels`},channelsSelectTitle:{zh:`选择左侧渠道开始配置`,en:`Select a channel from the left to configure`},channelsSelectDescription:{zh:`你可以连续切换多个渠道并逐个保存配置。`,en:`Switch between channels continuously and save each configuration.`},channelsFormDescription:{zh:`配置消息渠道参数`,en:`Configure message channel parameters`},channelsEmptyTitle:{zh:`暂无启用渠道`,en:`No channels enabled`},channelsEmptyDescription:{zh:`启用一个消息渠道以开始接收消息。`,en:`Enable a messaging channel to start receiving messages.`},channelDescriptionDefault:{zh:`配置该通信渠道`,en:`Configure this communication channel`},channelDescTelegram:{zh:`连接 Telegram 机器人以进行即时消息收发`,en:`Connect with Telegram bots for instant messaging`},channelDescSlack:{zh:`接入 Slack 工作区进行团队协作消息处理`,en:`Integrate with Slack workspaces for team collaboration`},channelDescEmail:{zh:`通过邮件协议收发消息`,en:`Send and receive messages via email protocols`},channelDescWebhook:{zh:`接收 HTTP Webhook 以支持自定义集成`,en:`Receive HTTP webhooks for custom integrations`},channelDescDiscord:{zh:`将 Discord 机器人连接到你的社区服务器`,en:`Connect Discord bots to your community servers`},channelDescFeishu:{zh:`企业消息与协作平台接入`,en:`Enterprise messaging and collaboration platform`},channelDescWeixin:{zh:`通过微信扫码登录并使用长轮询收发个人微信消息`,en:`Use QR login and long-poll updates for personal Weixin messaging`},configureMessageChannelParameters:{zh:`配置消息渠道参数`,en:`Configure message channel parameters`},channelsGuideTitle:{zh:`查看指南`,en:`View Guide`},allowFrom:{zh:`允许来源`,en:`Allow From`},token:{zh:`Token`,en:`Token`},botToken:{zh:`Bot Token`,en:`Bot Token`},appToken:{zh:`App Token`,en:`App Token`},appId:{zh:`App ID`,en:`App ID`},domain:{zh:`域名`,en:`Domain`},corpId:{zh:`企业 ID`,en:`Corp ID`},agentId:{zh:`应用 Agent ID`,en:`Agent ID`},appSecret:{zh:`App Secret`,en:`App Secret`},markdownSupport:{zh:`Markdown 支持`,en:`Markdown Support`},clientId:{zh:`Client ID`,en:`Client ID`},clientSecret:{zh:`Client Secret`,en:`Client Secret`},encryptKey:{zh:`加密密钥`,en:`Encrypt Key`},verificationToken:{zh:`验证令牌`,en:`Verification Token`},bridgeUrl:{zh:`桥接 URL`,en:`Bridge URL`},gatewayUrl:{zh:`网关 URL`,en:`Gateway URL`},proxy:{zh:`代理`,en:`Proxy`},intents:{zh:`Intents`,en:`Intents`},mode:{zh:`模式`,en:`Mode`},webhookPath:{zh:`Webhook 路径`,en:`Webhook Path`},callbackPort:{zh:`回调端口`,en:`Callback Port`},callbackPath:{zh:`回调路径`,en:`Callback Path`},defaultAccountId:{zh:`默认账号 ID`,en:`Default Account ID`},pollTimeoutMs:{zh:`长轮询超时(毫秒)`,en:`Long Poll Timeout (ms)`},accountsJson:{zh:`账号配置 JSON`,en:`Accounts JSON`},groupPolicy:{zh:`群组策略`,en:`Group Policy`}},ye={weixinAuthTitle:{zh:`扫码连接微信`,en:`Connect Weixin by QR`},weixinAuthDescription:{zh:`微信渠道现在以扫码连接为主流程。`,en:`Weixin now uses QR login as the primary setup flow.`},weixinAuthHint:{zh:`通常只需要点击按钮并扫码确认,连接成功后会自动写入配置。`,en:`In most cases you only need to start the flow, scan the QR code, and confirm on your phone. The config will be saved automatically.`},weixinAuthCapabilityHint:{zh:`连接成功后,Agent 可以通过微信渠道向已知微信用户主动发消息。`,en:`After connecting, the agent can proactively message known Weixin users through this channel.`},weixinAuthPrimaryAccount:{zh:`当前默认账号`,en:`Current default account`},weixinAuthConnectedAccounts:{zh:`已连接账号`,en:`Connected accounts`},weixinAuthBaseUrl:{zh:`当前接口地址`,en:`Current API base URL`},weixinAuthConnect:{zh:`扫码连接微信`,en:`Scan QR to connect Weixin`},weixinAuthReconnect:{zh:`重新扫码连接`,en:`Reconnect with QR`},weixinAuthStarting:{zh:`正在生成二维码...`,en:`Generating QR code...`},weixinAuthWaiting:{zh:`等待扫码确认`,en:`Waiting for scan confirmation`},weixinAuthScanned:{zh:`已扫码,等待确认`,en:`Scanned, waiting for confirmation`},weixinAuthAuthorized:{zh:`已连接`,en:`Connected`},weixinAuthConnectedDisabled:{zh:`已连接,但渠道未启用`,en:`Connected, but channel inactive`},weixinAuthNotConnected:{zh:`未连接`,en:`Not connected`},weixinAuthDisabledHint:{zh:`当前账号已完成扫码连接,但渠道处于未启用状态。打开 Enabled 后才会开始收发消息。`,en:`This account is connected, but the channel is inactive. Turn on Enabled before it can send or receive messages.`},weixinAuthRetryRequired:{zh:`二维码已失效,请重新扫码。`,en:`QR session expired. Please start again.`},weixinAuthQrAlt:{zh:`微信登录二维码`,en:`Weixin login QR code`},weixinAuthScanPrompt:{zh:`请用微信扫码,并在手机上确认登录。`,en:`Scan with Weixin and confirm the login on your phone.`},weixinAuthExpiresAt:{zh:`二维码过期时间`,en:`QR expires at`},weixinAuthOpenQr:{zh:`新窗口打开二维码`,en:`Open QR code in new tab`},weixinAuthReadyTitle:{zh:`准备连接微信`,en:`Ready to connect Weixin`},weixinAuthReadyDescription:{zh:`点击左侧按钮后,这里会显示二维码。整个首配流程默认不需要手动填写底层参数。`,en:`After you start the flow, the QR code will appear here. Most first-time setups do not require filling low-level fields manually.`},weixinAuthAdvancedTitle:{zh:`高级设置`,en:`Advanced settings`},weixinAuthAdvancedDescription:{zh:`仅在你需要自定义接口地址、账号映射或白名单时再展开这些字段。`,en:`Expand these fields only when you need to customize the API base URL, account mapping, or allowlist.`}},be={chatPageTitle:{zh:`Agent 对话`,en:`Agent Chat`},chatPageDescription:{zh:`在 UI 内直接与 Agent 交互,支持多会话与多 Agent 切换。`,en:`Chat with your agent directly in UI with multi-session and multi-agent switching.`},chatRefresh:{zh:`刷新`,en:`Refresh`},chatNewSession:{zh:`新会话`,en:`New Session`},chatSearchSessionPlaceholder:{zh:`搜索会话 key / 标签`,en:`Search session key / label`},chatAgentLabel:{zh:`目标 Agent`,en:`Target Agent`},chatSelectAgent:{zh:`选择 Agent`,en:`Select Agent`},chatModelLabel:{zh:`对话模型`,en:`Chat Model`},chatSelectModel:{zh:`选择模型`,en:`Select model`},chatThinkingLevelOff:{zh:`思考关闭`,en:`Thinking Off`},chatThinkingLevelMinimal:{zh:`思考 Minimal`,en:`Thinking Minimal`},chatThinkingLevelLow:{zh:`思考 Low`,en:`Thinking Low`},chatThinkingLevelMedium:{zh:`思考 Medium`,en:`Thinking Medium`},chatThinkingLevelHigh:{zh:`思考 High`,en:`Thinking High`},chatThinkingLevelAdaptive:{zh:`思考 Adaptive`,en:`Thinking Adaptive`},chatThinkingLevelXhigh:{zh:`思考 XHigh`,en:`Thinking XHigh`},chatSessionTypeLabel:{zh:`会话类型`,en:`Session Type`},chatSessionTypeNative:{zh:`原生`,en:`Native`},chatSessionTypeCodex:{zh:`Codex`,en:`Codex`},chatSessionTypeClaude:{zh:`Claude Code`,en:`Claude Code`},chatSessionTypeWeixin:{zh:`微信`,en:`WeChat`},chatSessionTypeFeishu:{zh:`飞书`,en:`Feishu`},chatSessionTypeHeartbeat:{zh:`心跳`,en:`Heartbeat`},chatSessionTypeCron:{zh:`定时任务`,en:`Cron`},chatSessionTypeUnavailableSuffix:{zh:`当前不可用,请启用对应插件或新建 Native 会话。`,en:`is unavailable now. Re-enable the plugin or create a native session.`},chatModelNoOptions:{zh:`暂无可用模型,请先配置提供商。`,en:`No available models. Configure a provider first.`},chatGoConfigureProvider:{zh:`去配置提供商`,en:`Go to Providers`},chatProviderSetupTitle:{zh:`开始前先配置提供商`,en:`Configure a Provider First`},chatProviderSetupDescription:{zh:`你还没有可用模型。先在提供商页面配置并保存至少一个 Provider 后,再回来开始对话。`,en:`No models are available yet. Configure and save at least one provider, then return to start chatting.`},chatSessionLabel:{zh:`当前会话`,en:`Current Session`},chatNoSession:{zh:`未选择会话`,en:`No session selected`},chatNoSessionHint:{zh:`创建一个会话并发送第一条消息。`,en:`Create a session and send your first message.`},chatHistoryLoading:{zh:`加载会话历史中...`,en:`Loading session history...`},chatNoMessages:{zh:`暂无消息,发送一条开始对话。`,en:`No messages yet. Send one to start.`},chatBackToParent:{zh:`返回父会话`,en:`Back to parent`},chatSessionOpenChildSessions:{zh:`查看子会话`,en:`View child sessions`},chatChildSessionLoading:{zh:`正在加载子会话…`,en:`Loading child session…`},chatChildSessionEmpty:{zh:`子会话还没有消息。`,en:`No child session messages yet.`},chatWorkspaceClosePanel:{zh:`关闭工作区侧栏`,en:`Close workspace panel`},chatWorkspaceChildSessions:{zh:`子会话`,en:`Child sessions`},chatWorkspaceOpenFiles:{zh:`打开的文件`,en:`Open files`},chatWorkspacePreview:{zh:`预览`,en:`Preview`},chatWorkspaceDiff:{zh:`Diff`,en:`Diff`},chatWorkspaceCloseFile:{zh:`关闭文件`,en:`Close file`},chatWorkspaceLoadingFile:{zh:`正在加载文件…`,en:`Loading file…`},chatWorkspacePreviewUnsupported:{zh:`该文件暂不支持在侧栏预览。`,en:`This file is not supported in the sidebar preview yet.`},chatWorkspacePreviewEmpty:{zh:`当前没有可显示的文件内容。`,en:`No file content is available for preview.`},chatWorkspaceDiffEmpty:{zh:`当前没有可显示的 diff 内容。`,en:`No diff content is available.`},chatWorkspacePreviewTruncated:{zh:`内容已截断`,en:`Preview truncated`},chatSessionUnread:{zh:`会话有未读更新`,en:`Session has unread updates`},chatTyping:{zh:`Agent 正在思考...`,en:`Agent is thinking...`},chatRuntimeInitializing:{zh:`聊天能力正在初始化。你可以先输入内容,完成后即可发送。`,en:`Chat is still initializing. You can keep typing and send once startup finishes.`},chatRuntimeInitializationFailed:{zh:`聊天能力启动失败,请稍后重试或检查服务日志。`,en:`Chat startup failed. Please retry in a moment or inspect the service logs.`},chatInputPlaceholder:{zh:`输入消息,输入 / 选择技能,Enter 发送,Shift + Enter 换行`,en:`Type a message, type / to select skills, Enter to send, Shift + Enter for newline`},chatInputHint:{zh:`支持多轮上下文,默认走当前会话。`,en:`Multi-turn context is preserved in the current session.`},chatSlashSectionCommands:{zh:`命令`,en:`Commands`},chatSlashSectionSkills:{zh:`技能`,en:`Skills`},chatSlashTypeCommand:{zh:`命令`,en:`Command`},chatSlashTypeSkill:{zh:`技能`,en:`Skill`},chatSlashSkillSpec:{zh:`标识`,en:`Spec`},chatSlashSkillScope:{zh:`作用域`,en:`Scope`},chatSlashLoading:{zh:`加载命令与技能中…`,en:`Loading commands and skills…`},chatSlashNoResult:{zh:`无匹配项`,en:`No matches`},chatSlashHint:{zh:`输入 / 触发命令或技能选择`,en:`Type / to access commands and skills`},chatSlashCommandHint:{zh:`回车插入命令,继续输入参数后发送。`,en:`Press Enter to insert command, then add args and send.`},chatSlashSkillHint:{zh:`回车把该技能加入本轮请求。`,en:`Press Enter to add this skill for the next turn.`},chatSkillScopeBuiltin:{zh:`内建`,en:`Built-in`},chatSkillScopeProject:{zh:`项目`,en:`Project`},chatSkillScopeWorkspace:{zh:`工作区`,en:`Workspace`},chatPickerRecent:{zh:`最近使用`,en:`Recent`},chatPickerRecentModels:{zh:`最近选择`,en:`Recent`},chatPickerAllModels:{zh:`全部模型`,en:`All models`},chatPickerAllSkills:{zh:`全部技能`,en:`All skills`},chatSend:{zh:`发送`,en:`Send`},chatStop:{zh:`停止`,en:`Stop`},chatStopPreparing:{zh:`正在建立可停止会话,请稍候…`,en:`Preparing stoppable run…`},chatStopUnavailable:{zh:`当前后端引擎不支持手动停止。`,en:`Manual stop is not supported by the current backend engine.`},chatSending:{zh:`发送中...`,en:`Sending...`},chatQueueSend:{zh:`排队发送`,en:`Queue`},chatQueuedHintPrefix:{zh:`当前有`,en:`Queued`},chatQueuedHintSuffix:{zh:`条消息待发送。`,en:`pending messages.`},chatQueueMoveFirst:{zh:`置顶到下一条`,en:`Move to Next`},chatDeleteSession:{zh:`删除会话`,en:`Delete Session`},chatDeleteSessionConfirm:{zh:`确认删除当前会话?`,en:`Delete the current session?`},chatSessionMoreActions:{zh:`更多操作`,en:`More actions`},chatSessionSetProject:{zh:`设置项目目录`,en:`Set Project Directory`},chatSessionClearProject:{zh:`清除项目目录`,en:`Clear Project Directory`},chatSessionProjectDialogTitle:{zh:`设置项目目录`,en:`Set Project Directory`},chatSessionProjectDialogDescription:{zh:`把当前会话绑定到运行 NextClaw 服务的那台机器上的一个目录,让后续消息和工具执行围绕这个目录展开。`,en:`Bind this session to a directory on the machine running the NextClaw service so future messages and tool runs work around that directory.`},chatSessionProjectPathLabel:{zh:`项目目录路径`,en:`Project Directory Path`},chatSessionProjectPathPlaceholder:{zh:`/path/to/project`,en:`/path/to/project`},chatSessionProjectUpdateHint:{zh:`这里浏览和选择的是服务端机器上的目录。修改项目目录只影响后续消息和后续工具执行,不会改写历史会话。`,en:`The browser lists directories from the server machine. Changing the project directory only affects future messages and tool runs. History stays unchanged.`},chatSessionProjectUpdated:{zh:`项目目录已更新`,en:`Project directory updated`},chatSessionProjectCleared:{zh:`项目目录已清除`,en:`Project directory cleared`},chatSendFailed:{zh:`发送消息失败`,en:`Failed to send message`},chatRoleUser:{zh:`你`,en:`You`},chatRoleAssistant:{zh:`助手`,en:`Assistant`},chatRoleTool:{zh:`工具`,en:`Tool`},chatRoleSystem:{zh:`系统`,en:`System`},chatRoleMessage:{zh:`消息`,en:`Message`},chatToolCall:{zh:`工具调用`,en:`Tool Call`},chatToolResult:{zh:`工具结果`,en:`Tool Result`},chatToolInput:{zh:`输入`,en:`Input`},chatToolWorkflow:{zh:`工具工作流`,en:`Tool Workflow`},chatToolWorkflowDetails:{zh:`展开查看参数和结果`,en:`Expand to view params and results`},chatToolOutput:{zh:`输出`,en:`Output`},chatToolNoOutput:{zh:`无输出(执行完成)`,en:`No output (completed)`},chatToolStatusPreparing:{zh:`准备中`,en:`Preparing`},chatToolStatusRunning:{zh:`执行中`,en:`Running`},chatToolStatusCompleted:{zh:`已完成`,en:`Completed`},chatToolStatusFailed:{zh:`失败`,en:`Failed`},chatToolStatusCancelled:{zh:`已取消`,en:`Cancelled`},chatReasoning:{zh:`推理过程`,en:`Reasoning`},chatImageAttachment:{zh:`图片附件`,en:`Image attachment`},chatFileAttachment:{zh:`文件附件`,en:`File attachment`},chatAttachmentOpen:{zh:`打开`,en:`Open`},chatAttachmentAttached:{zh:`已附加`,en:`Attached`},chatAttachmentCategoryArchive:{zh:`压缩包`,en:`Archive`},chatAttachmentCategoryAudio:{zh:`音频`,en:`Audio`},chatAttachmentCategoryCode:{zh:`代码文件`,en:`Code file`},chatAttachmentCategoryData:{zh:`数据文件`,en:`Data file`},chatAttachmentCategoryDocument:{zh:`文档`,en:`Document`},chatAttachmentCategoryGeneric:{zh:`文件`,en:`File`},chatAttachmentCategoryImage:{zh:`图片`,en:`Image`},chatAttachmentCategoryPdf:{zh:`PDF 文档`,en:`PDF document`},chatAttachmentCategorySheet:{zh:`表格`,en:`Spreadsheet`},chatAttachmentCategoryVideo:{zh:`视频`,en:`Video`},chatUnknownPart:{zh:`未知消息片段`,en:`Unknown message part`},chatCodeCopy:{zh:`复制代码`,en:`Copy`},chatCodeCopied:{zh:`已复制`,en:`Copied`},chatMessageCopy:{zh:`复制`,en:`Copy`},chatMessageCopied:{zh:`已复制`,en:`Copied`},chatSidebarNewTask:{zh:`新任务`,en:`New Task`},chatSidebarSearchPlaceholder:{zh:`搜索对话...`,en:`Search conversations...`},chatSidebarScheduledTasks:{zh:`定时任务`,en:`Scheduled Tasks`},chatSidebarSkills:{zh:`技能`,en:`Skills`},chatSidebarTaskRecords:{zh:`会话记录`,en:`Sessions`},chatSidebarViewTime:{zh:`时间`,en:`Time`},chatSidebarViewProject:{zh:`项目`,en:`Project`},chatSidebarToday:{zh:`今天`,en:`Today`},chatSidebarYesterday:{zh:`昨天`,en:`Yesterday`},chatSidebarPrevious7Days:{zh:`近 7 天`,en:`Previous 7 Days`},chatSidebarOlder:{zh:`更早`,en:`Older`},chatSidebarProjectViewEmpty:{zh:`还没有绑定项目的会话`,en:`No project conversations yet`},chatWelcomeTitle:{zh:`你好,有什么可以帮你的吗?`,en:`Hello, how can I help you?`},chatWelcomeSubtitle:{zh:`开始一个新任务或选择已有对话`,en:`Start a new task or select an existing conversation`},chatWelcomeCapability1Title:{zh:`智能对话`,en:`Smart Conversations`},chatWelcomeCapability1Desc:{zh:`多轮上下文对话,支持多种 AI 模型`,en:`Multi-turn context conversations with multiple AI models`},chatWelcomeCapability2Title:{zh:`技能扩展`,en:`Skill Extensions`},chatWelcomeCapability2Desc:{zh:`通过安装技能扩展 Agent 能力`,en:`Extend Agent capabilities by installing skills`},chatWelcomeCapability3Title:{zh:`定时任务`,en:`Scheduled Tasks`},chatWelcomeCapability3Desc:{zh:`设置定时执行的自动化任务`,en:`Set up scheduled automated tasks`},chatSkillsPickerTitle:{zh:`技能`,en:`Skills`},chatSkillsPickerEmpty:{zh:`暂无已安装技能`,en:`No skills installed`},chatSkillsPickerSearchPlaceholder:{zh:`搜索技能`,en:`Search skills`},chatSkillsPickerNoDescription:{zh:`暂无描述`,en:`No description`},chatSkillsPickerOfficial:{zh:`官方`,en:`Official`},chatSkillsPickerManage:{zh:`管理技能`,en:`Manage Skills`},chatInputAttach:{zh:`添加附件`,en:`Attach file`},chatInputAttachmentUnsupported:{zh:`当前上传流程不支持该文件类型。`,en:`This file type is not supported in the current upload flow.`},chatInputAttachmentTooLarge:{zh:`文件不能超过 {maxMb} MB。`,en:`Files must be {maxMb} MB or smaller.`},chatInputAttachmentReadFailed:{zh:`读取文件失败,请重试。`,en:`Failed to read the file. Please try again.`},chatInputAttachComingSoon:{zh:`即将支持`,en:`Coming soon`}},xe=`nextclaw.ui.language`,Se={en:`en-US`,zh:`zh-CN`},Ce=[{value:`en`,label:`English`},{value:`zh`,label:`中文`}],X=new class{constructor(){this.activeLanguage=`en`,this.initialized=!1,this.listeners=new Set,this.isLanguage=e=>e===`en`||e===`zh`,this.detectBrowserLanguage=()=>typeof navigator>`u`?`en`:(navigator.language?.toLowerCase()??`en`).startsWith(`zh`)?`zh`:`en`,this.getDesktopBridge=()=>typeof window>`u`?null:window.nextclawDesktop??null,this.resolveInitialLanguage=()=>{if(typeof window>`u`)return`en`;let e=this.getDesktopBridge();if(e)return this.isLanguage(e.localePreference)?e.localePreference:this.detectBrowserLanguage();try{let e=window.localStorage.getItem(xe);if(this.isLanguage(e))return e}catch{}return this.detectBrowserLanguage()},this.initialize=()=>(this.initialized||=(this.activeLanguage=this.resolveInitialLanguage(),!0),this.activeLanguage),this.getLanguage=()=>this.initialized?this.activeLanguage:this.initialize(),this.setLanguage=e=>{if(this.initialize(),this.activeLanguage===e)return;this.activeLanguage=e;let t=this.getDesktopBridge();if(t)t.setLocalePreference?.(e);else if(typeof window<`u`)try{window.localStorage.setItem(xe,e)}catch{}this.listeners.forEach(t=>t(e))},this.subscribeLanguageChange=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),this.getLocale=(e=this.getLanguage())=>Se[e]}};X.resolveInitialLanguage;var we=X.initialize,Z=X.getLanguage,Te=X.setLanguage,Ee=X.subscribeLanguageChange,Q=X.getLocale,De={updates:{zh:`更新`,en:`Updates`},desktopUpdatesPageTitle:{zh:`桌面端更新`,en:`Desktop Updates`},desktopUpdatesPageDescription:{zh:`在应用内检查、下载并决定何时应用新的桌面端版本。`,en:`Check, download, and decide when to apply new desktop versions without leaving the app.`},desktopUpdatesDesktopOnlyTitle:{zh:`当前仅桌面端可用`,en:`Currently Desktop Only`},desktopUpdatesDesktopOnlyDescription:{zh:`这个页面暂时只在 NextClaw Desktop 中可用。`,en:`This page is currently only available inside NextClaw Desktop.`},desktopUpdatesDesktopOnlyFutureHint:{zh:`网页端与其他产品形态的更新体验还在继续完善,敬请期待。`,en:`Update experiences for the web and other product surfaces are still being built. Stay tuned.`},desktopUpdatesOverviewTitle:{zh:`当前状态`,en:`Current Status`},desktopUpdatesOverviewDescription:{zh:`查看当前已运行版本、可用版本和最近一次检查结果。`,en:`Review the running version, the available version, and the latest check result.`},desktopUpdatesStatusLabel:{zh:`更新状态`,en:`Update Status`},desktopUpdatesStatusIdle:{zh:`待命`,en:`Idle`},desktopUpdatesStatusChecking:{zh:`检查中`,en:`Checking`},desktopUpdatesStatusAvailable:{zh:`有可用更新`,en:`Update Available`},desktopUpdatesStatusDownloading:{zh:`下载中`,en:`Downloading`},desktopUpdatesStatusDownloaded:{zh:`已下载待应用`,en:`Downloaded`},desktopUpdatesStatusUpToDate:{zh:`已是最新`,en:`Up to Date`},desktopUpdatesStatusFailed:{zh:`更新失败`,en:`Failed`},desktopUpdatesLauncherVersion:{zh:`桌面壳版本`,en:`Launcher Version`},desktopUpdatesCurrentBundleVersion:{zh:`当前内核版本`,en:`Current Kernel Version`},desktopUpdatesAvailableVersion:{zh:`可用版本`,en:`Available Version`},desktopUpdatesLastCheckedAt:{zh:`上次检查时间`,en:`Last Checked`},desktopUpdatesCurrentChannel:{zh:`当前更新通道`,en:`Current Release Channel`},desktopUpdatesDownloadedBannerTitle:{zh:`更新已就绪`,en:`Update Ready`},desktopUpdatesDownloadedBannerDescription:{zh:`版本 {version} 已下载完成,等你确认后即可重启应用并完成更新。`,en:`Version {version} is ready. Restart the app whenever you want to apply it.`},desktopUpdatesPreferencesTitle:{zh:`更新偏好`,en:`Update Preferences`},desktopUpdatesPreferencesDescription:{zh:`默认自动检查更新,但是否后台下载由你决定。`,en:`Automatic checks stay on by default, while background download remains under your control.`},desktopUpdatesReleaseChannel:{zh:`更新通道`,en:`Release Channel`},desktopUpdatesReleaseChannelHelp:{zh:`Stable 面向日常主力使用;Beta 用于提前体验新版本,但可能更不稳定。`,en:`Stable is for everyday use, while Beta lets you try newer builds earlier with more risk.`},desktopUpdatesReleaseChannelDowngradeHint:{zh:`切回 Stable 后不会立刻强制降级;只有当 Stable 追平或超过当前版本时,才会继续提供 Stable 更新。`,en:`Switching back to Stable does not force an immediate downgrade. Stable updates resume once that channel catches up with or exceeds your current version.`},desktopUpdatesChannelStable:{zh:`Stable`,en:`Stable`},desktopUpdatesChannelBeta:{zh:`Beta`,en:`Beta`},desktopUpdatesBetaBadgeTitle:{zh:`当前正在跟随 Beta 通道`,en:`Following the Beta Channel`},desktopUpdatesBetaBadgeDescription:{zh:`你会更早收到新版本,但也可能遇到更多变动和回归。`,en:`You will receive new versions earlier, but you may also encounter more change and regression risk.`},desktopUpdatesAutomaticChecks:{zh:`自动检查更新`,en:`Automatic Update Checks`},desktopUpdatesAutomaticChecksHelp:{zh:`启动应用后自动检查是否有新版本。`,en:`Check for new versions automatically after the app starts.`},desktopUpdatesAutoDownload:{zh:`发现更新后自动后台下载`,en:`Auto Download in Background`},desktopUpdatesAutoDownloadHelp:{zh:`检查到更新后自动把新版本下载到本地,但仍由你决定何时应用。`,en:`Download new versions automatically after detection, while still letting you decide when to apply them.`},desktopUpdatesActionsTitle:{zh:`更新操作`,en:`Update Actions`},desktopUpdatesActionsDescription:{zh:`支持手动检查、手动下载,以及在你准备好之后重启应用完成更新。`,en:`Manually check, manually download, and restart the app when you are ready to finish the update.`},desktopUpdatesCheckNow:{zh:`检查更新`,en:`Check for Updates`},desktopUpdatesDownloadNow:{zh:`下载更新`,en:`Download Update`},desktopUpdatesApplyNow:{zh:`立即重启更新`,en:`Restart to Update`},desktopUpdatesReleaseNotes:{zh:`查看更新说明`,en:`Release Notes`},desktopUpdatesLoadFailed:{zh:`读取更新状态失败`,en:`Failed to load update state`},desktopUpdatesCheckFailed:{zh:`检查更新失败`,en:`Failed to check for updates`},desktopUpdatesDownloadFailed:{zh:`下载更新失败`,en:`Failed to download update`},desktopUpdatesApplyFailed:{zh:`应用更新失败`,en:`Failed to apply update`},desktopUpdatesPreferencesFailed:{zh:`保存更新偏好失败`,en:`Failed to save update preferences`},desktopUpdatesChannelChangeFailed:{zh:`切换更新通道失败`,en:`Failed to change the release channel`},desktopUpdatesAlreadyLatest:{zh:`当前已经是最新版本。`,en:`You already have the latest version.`},desktopUpdatesReadyToApply:{zh:`更新已下载完成,可以在方便的时候重启应用。`,en:`The update is ready. Restart the app whenever you want to apply it.`},desktopUpdatesAvailable:{zh:`发现新版本 {version}。`,en:`Version {version} is available.`},desktopUpdatesUnknownVersion:{zh:`新版本`,en:`a new version`},desktopUpdatesChannelChanged:{zh:`已切换到 {channel} 更新通道。`,en:`Switched to the {channel} release channel.`},desktopUpdatesChannelChangedWithUpdate:{zh:`已切换到 {channel} 通道,发现版本 {version}。`,en:`Switched to the {channel} channel and found version {version}.`}},Oe={marketplacePluginsPageTitle:{zh:`插件市场`,en:`Plugin Marketplace`},marketplacePluginsPageDescription:{zh:`安装、启用与管理插件。`,en:`Install, enable, and manage plugins.`},marketplaceSkillsPageTitle:{zh:`技能市场`,en:`Skill Marketplace`},marketplaceSkillsPageDescription:{zh:`安装与管理技能。`,en:`Install and manage skills.`},marketplaceMcpPageTitle:{zh:`MCP 市场`,en:`MCP Marketplace`},marketplaceMcpPageDescription:{zh:`发现、安装、诊断并管理 MCP servers。`,en:`Discover, install, diagnose, and manage MCP servers.`},marketplaceTabMarketplacePlugins:{zh:`插件市场`,en:`Plugin Market`},marketplaceTabMarketplaceSkills:{zh:`技能市场`,en:`Skill Market`},marketplaceMcpTabCatalog:{zh:`MCP 市场`,en:`MCP Market`},marketplaceMcpTabInstalled:{zh:`已安装 MCP`,en:`Installed MCP`},marketplaceTabInstalledPlugins:{zh:`已安装插件`,en:`Installed Plugins`},marketplaceTabInstalledSkills:{zh:`已安装技能`,en:`Installed Skills`},marketplaceSearchPlaceholderPlugins:{zh:`搜索插件...`,en:`Search plugins...`},marketplaceSearchPlaceholderSkills:{zh:`搜索技能...`,en:`Search skills...`},marketplaceMcpSearchPlaceholder:{zh:`搜索 MCP servers...`,en:`Search MCP servers...`},marketplaceFilterPlugins:{zh:`插件`,en:`Plugins`},marketplaceFilterSkills:{zh:`技能`,en:`Skills`},marketplaceFilterMcp:{zh:`MCP`,en:`MCP`},marketplaceSortRelevance:{zh:`相关性`,en:`Relevance`},marketplaceSortUpdated:{zh:`最近更新`,en:`Recently Updated`},marketplaceUnknownItem:{zh:`未知项目`,en:`Unknown Item`},marketplaceInstalledLocalSummary:{zh:`已在本地安装,市场暂无详情。`,en:`Installed locally. Details are currently unavailable from marketplace.`},marketplaceTypePlugin:{zh:`插件`,en:`Plugin`},marketplaceTypeSkill:{zh:`技能`,en:`Skill`},marketplaceTypeMcp:{zh:`MCP`,en:`MCP`},marketplaceTypeExtension:{zh:`扩展`,en:`Extension`},marketplaceInstall:{zh:`安装`,en:`Install`},marketplaceInstalling:{zh:`安装中...`,en:`Installing...`},marketplaceEnable:{zh:`启用`,en:`Enable`},marketplaceDisable:{zh:`禁用`,en:`Disable`},marketplaceEnabling:{zh:`启用中...`,en:`Enabling...`},marketplaceDisabling:{zh:`禁用中...`,en:`Disabling...`},marketplaceUninstall:{zh:`卸载`,en:`Uninstall`},marketplaceRemoving:{zh:`卸载中...`,en:`Removing...`},marketplaceSectionPlugins:{zh:`插件列表`,en:`Plugin Catalog`},marketplaceSectionSkills:{zh:`技能列表`,en:`Skill Catalog`},marketplaceMcpSectionCatalog:{zh:`MCP 列表`,en:`MCP Catalog`},marketplaceMcpSectionInstalled:{zh:`已安装 MCP`,en:`Installed MCP`},marketplaceSectionInstalledPlugins:{zh:`已安装插件`,en:`Installed Plugins`},marketplaceSectionInstalledSkills:{zh:`已安装技能`,en:`Installed Skills`},marketplaceErrorLoadingPluginsData:{zh:`加载插件市场数据失败`,en:`Failed to load plugin marketplace data`},marketplaceErrorLoadingSkillsData:{zh:`加载技能市场数据失败`,en:`Failed to load skill marketplace data`},marketplaceErrorLoadingInstalledPlugins:{zh:`加载已安装插件失败`,en:`Failed to load installed plugins`},marketplaceErrorLoadingInstalledSkills:{zh:`加载已安装技能失败`,en:`Failed to load installed skills`},marketplaceNoPlugins:{zh:`未找到插件。`,en:`No plugins found.`},marketplaceNoSkills:{zh:`未找到技能。`,en:`No skills found.`},marketplaceNoMcp:{zh:`未找到 MCP server。`,en:`No MCP servers found.`},marketplaceNoInstalledPlugins:{zh:`未找到已安装插件。`,en:`No installed plugins found.`},marketplaceNoInstalledSkills:{zh:`未找到已安装技能。`,en:`No installed skills found.`},marketplaceNoInstalledMcp:{zh:`未找到已安装 MCP server。`,en:`No installed MCP servers found.`},marketplaceUninstallTitle:{zh:`确认卸载`,en:`Uninstall`},marketplaceUninstallDescription:{zh:`该操作会移除扩展,后续可在市场中重新安装。`,en:`This will remove the extension. You can install it again from the marketplace.`},marketplaceInstallSuccessPlugin:{zh:`插件安装成功`,en:`Plugin installed successfully`},marketplaceInstallSuccessSkill:{zh:`技能安装成功`,en:`Skill installed successfully`},marketplaceInstallSuccessMcp:{zh:`MCP 安装成功`,en:`MCP installed successfully`},marketplaceEnableSuccess:{zh:`启用成功`,en:`Enabled successfully`},marketplaceDisableSuccess:{zh:`禁用成功`,en:`Disabled successfully`},marketplaceUninstallSuccess:{zh:`卸载成功`,en:`Uninstalled successfully`},marketplaceMcpManageSuccess:{zh:`MCP 操作成功`,en:`MCP operation completed`},marketplaceInstallFailed:{zh:`安装失败`,en:`Install failed`},marketplaceOperationFailed:{zh:`操作失败`,en:`Operation failed`},marketplaceInstalledPluginsCountSuffix:{zh:`个已安装插件`,en:`installed plugins`},marketplaceInstalledSkillsCountSuffix:{zh:`个已安装技能`,en:`installed skills`},marketplaceDetailPanelTitle:{zh:`详情预览`,en:`Detail Preview`},marketplaceDetailPanelEmpty:{zh:`点击左侧任意插件/技能,在这里查看详情。`,en:`Click an item on the left to preview details here.`},marketplaceDetailSummary:{zh:`摘要`,en:`Summary`},marketplaceDetailDescription:{zh:`描述`,en:`Description`},marketplaceOpenInDocBrowserTab:{zh:`新标签打开`,en:`Open in New Tab`},marketplaceMcpInstallDialogTitle:{zh:`安装 MCP Server`,en:`Install MCP Server`},marketplaceMcpServerName:{zh:`Server 名称`,en:`Server Name`},marketplaceMcpAllAgents:{zh:`默认对全部 Agent 可用`,en:`Available to All Agents`},marketplaceMcpAllAgentsDescription:{zh:`默认作为公共资源池接入,不做 runtime 级限制。`,en:`Use the server as a shared tool source by default instead of scoping it per runtime.`},marketplaceMcpDoctor:{zh:`Doctor`,en:`Doctor`},marketplaceMcpDoctorTitle:{zh:`MCP Doctor`,en:`MCP Doctor`},marketplaceMcpDoctorAccessible:{zh:`可访问`,en:`Accessible`},marketplaceMcpDoctorTransport:{zh:`传输方式`,en:`Transport`},marketplaceMcpDoctorTools:{zh:`工具数`,en:`Tools`},marketplaceMcpRemove:{zh:`移除`,en:`Remove`},marketplaceMcpRemoveTitle:{zh:`确认移除`,en:`Remove MCP Server`},marketplaceMcpRemoveDescription:{zh:`该操作会删除 MCP server 配置,并通过热插拔立即从工具源中移除。`,en:`This removes the MCP server config and hot-unplugs it from the tool source immediately.`}},ke={browse:{zh:`浏览`,en:`Browse`},openPath:{zh:`打开`,en:`Open`},homeDirectory:{zh:`主目录`,en:`Home`},currentDirectory:{zh:`当前目录`,en:`Current Directory`},parentDirectory:{zh:`上一级`,en:`Up`},pathPickerSearchPlaceholder:{zh:`搜索当前目录`,en:`Search current directory`},pathPickerSearchEmpty:{zh:`当前目录下没有匹配结果。`,en:`No matching entries in the current directory.`},selectCurrentDirectory:{zh:`选择当前目录`,en:`Select Current Directory`},emptyDirectory:{zh:`当前目录下暂无可浏览项。`,en:`No entries in the current directory.`},pathBrowseFailed:{zh:`读取目录失败`,en:`Failed to load directory`}},Ae={pwaInstallTitle:{zh:`安装为应用`,en:`Install as App`},pwaInstallDescription:{zh:`把当前 NextClaw UI 安装为独立入口,方便从桌面、启动器或任务栏直接打开。`,en:`Install this NextClaw UI as a standalone entry point you can launch from your desktop, launcher, or dock.`},pwaInstallAction:{zh:`安装 NextClaw`,en:`Install NextClaw`},pwaInstallDismiss:{zh:`不再提示`,en:`Don't Ask Again`},pwaInstallAccepted:{zh:`已打开安装面板。`,en:`Install prompt opened.`},pwaInstalledToast:{zh:`NextClaw 已安装为应用入口。`,en:`NextClaw is now installed as an app.`},pwaInstallStatusAvailable:{zh:`可安装`,en:`Installable`},pwaInstallStatusInstalled:{zh:`已安装`,en:`Installed`},pwaInstallStatusDesktopHost:{zh:`桌面宿主已接管`,en:`Desktop Host Active`},pwaInstallStatusUnavailable:{zh:`当前不可安装`,en:`Unavailable`},pwaInstallCardPrompt:{zh:`当前浏览器已经准备好安装面板。安装后,NextClaw 会以独立窗口形态打开,但仍沿用同一套 Web UI 和运行时连接逻辑。`,en:`Your browser is ready to install NextClaw. Once installed, it opens in a standalone window while keeping the same Web UI and runtime behavior.`},pwaInstallCardManual:{zh:`当前环境支持把 NextClaw 安装为应用,但浏览器没有提供即时安装弹窗。你仍可通过浏览器菜单中的“安装应用”或“添加到主屏幕”完成安装。`,en:`This environment can install NextClaw as an app, but the browser did not expose an immediate install prompt. Use your browser menu to install or add it to the home screen.`},pwaInstallCardInstalled:{zh:`当前已经以应用形态运行。浏览器访问与已安装形态共用同一套 NextClaw UI,不会分叉成第二套产品逻辑。`,en:`NextClaw is already running as an installed app. Browser access and the installed experience share the same UI and product behavior.`},pwaInstallCardSuppressed:{zh:`当前 UI 已运行在 Electron 桌面宿主中,原生桌面壳优先于 PWA 入口,因此这里不会继续展示安装入口。`,en:`This UI is already running inside the Electron desktop host. The native desktop shell takes priority, so the PWA install entry stays hidden here.`},pwaInstallCardInsecureContext:{zh:"当前地址不是浏览器允许安装 PWA 的安全上下文。请使用 `localhost`、`127.0.0.1` 或 HTTPS 域名访问。",en:`This address is not a secure context for browser-managed app installation. Use localhost, 127.0.0.1, or an HTTPS origin instead.`},pwaInstallCardDevServer:{zh:`当前是 Vite 开发环境。为避免 service worker 缓存和 HMR 热更新互相干扰,开发态默认关闭 PWA 安装与更新能力;请使用 preview 或正式构建验证 PWA。`,en:`This is the Vite development server. PWA install and update are disabled in dev to avoid service worker caching conflicts with HMR; use preview or a production build to verify the PWA.`},pwaInstallCardUnsupported:{zh:`当前浏览器环境不支持这套安装能力,或缺少 PWA 所需的关键运行能力。`,en:`This browser environment does not support the required installation capabilities for this PWA shell.`},pwaInstallPromptHint:{zh:`安装后仍然连接当前本地或远端 NextClaw 服务,不会额外生成一套离线副本。`,en:`The installed app still connects to the same local or remote NextClaw service instead of creating an offline copy.`},pwaInstallManualHint:{zh:`如果浏览器没有弹出安装面板,请打开浏览器菜单,选择“安装应用”“安装此站点”或“添加到主屏幕”等同类入口。`,en:`If the browser does not show an install prompt, open the browser menu and look for actions such as Install App, Install Site, or Add to Home Screen.`},pwaInstallBannerTitle:{zh:`把 NextClaw 固定成桌面入口`,en:`Pin NextClaw as an App`},pwaInstallBannerDescription:{zh:`当前站点已经满足安装条件。安装后你可以像打开普通应用一样直接进入 NextClaw。`,en:`This site is ready to install. Once installed, you can launch NextClaw like a regular app.`},pwaUpdateBannerTitle:{zh:`NextClaw 已准备好更新`,en:`NextClaw Update Ready`},pwaUpdateBannerDescription:{zh:`检测到新的 PWA 壳版本,刷新后即可切换到最新 UI 资源。`,en:`A newer PWA shell version is ready. Refresh to switch to the latest UI assets.`},pwaUpdateAction:{zh:`刷新更新`,en:`Refresh Now`}},je={remotePageTitle:{zh:`远程访问`,en:`Remote Access`},remotePageDescription:{zh:`让这台设备出现在 NextClaw Platform 的设备列表里,并从网页中打开它。`,en:`Make this device appear in your NextClaw Platform device list and open it from the web.`},remoteOpenWeb:{zh:`前往 NextClaw Web`,en:`Open NextClaw Web`},remoteOpenDeviceList:{zh:`前往 NextClaw Web`,en:`Open NextClaw Web`},remoteOpenWebHint:{zh:`开启后,这台设备会出现在 NextClaw Web 中,你可以在那里点击打开并继续使用。`,en:`Once enabled, this device appears in NextClaw Web, where you can open it and keep working.`},remoteOpenWebUnavailable:{zh:`暂时还没有可用的平台地址,请先完成登录。`,en:`No platform URL is available yet. Sign in first.`},remoteLoading:{zh:`正在加载远程访问状态...`,en:`Loading remote access status...`},remoteStatusNeedsSignIn:{zh:`先登录 NextClaw`,en:`Sign in to NextClaw first`},remoteStatusNeedsSignInDescription:{zh:`远程访问依赖 NextClaw 账号。登录后,这台设备才能和网页版关联起来。`,en:`Remote access depends on your NextClaw account. Sign in first to link this device to the web app.`},remoteStatusNeedsEnable:{zh:`还没有开启远程访问`,en:`Remote access is not enabled yet`},remoteStatusNeedsEnableDescription:{zh:`你已经登录 NextClaw。开启后,这台设备会出现在网页版的设备列表中。`,en:`You are already signed in. Enable remote access and this device will appear in your web device list.`},remoteStatusConnectingTitle:{zh:`正在把这台设备接入 NextClaw Web`,en:`Connecting this device to NextClaw Web`},remoteStatusConnectingDescription:{zh:`后台服务正在建立连接,几秒后刷新即可看到最新状态。`,en:`The managed service is establishing the connection. Refresh in a few seconds to see the latest state.`},remoteStatusReadyTitle:{zh:`这台设备已经可在网页中打开`,en:`This device is ready in the web app`},remoteStatusReadyDescription:{zh:`你现在可以前往 NextClaw Web,在设备列表中点击打开,继续这条 Agent 链路。`,en:`You can now open NextClaw Web, find this device in the list, and continue your agent workflow there.`},remoteStatusNeedsServiceTitle:{zh:`需要拉起后台服务`,en:`The managed service needs to run`},remoteStatusNeedsServiceDescription:{zh:`远程访问已经开启,但后台服务没有运行。拉起后才会真正连到网页版。`,en:`Remote access is enabled, but the managed service is not running yet. Start it to connect to the web app.`},remoteStatusReauthorizationTitle:{zh:`登录已过期,请重新登录 NextClaw`,en:`Your sign-in expired. Sign in to NextClaw again.`},remoteStatusReauthorizationDescription:{zh:`为了保护你的账号安全,远程访问已暂停。重新登录后会自动恢复,不需要重新配置设备。`,en:`Remote access is paused to protect your account. Sign in again and it will recover automatically without reconfiguring this device.`},remoteStatusIssueTitle:{zh:`远程访问暂时没有连上`,en:`Remote access is temporarily offline`},remoteStatusIssueDescription:{zh:`设备配置还在,但当前没有稳定连上平台。你可以先重新连接;如果问题持续,再重新登录或稍后再试。`,en:`Your device settings are still there, but this device is not stably connected to the platform right now. Reconnect first, then sign in again or try later if it keeps happening.`},remoteStatusIssueDetailTitle:{zh:`下一步`,en:`Next Step`},remoteStatusRecoveryTitle:{zh:`推荐操作`,en:`Recommended Next Step`},remoteStatusIssueDetailGeneric:{zh:`远程访问暂时不可用。你可以先重新连接;如果问题持续,再重新登录或稍后再试。`,en:`Remote access is temporarily unavailable. Reconnect first, then sign in again or try later if the issue continues.`},remoteStatusIssueDetailServiceStopped:{zh:`后台服务当前没有运行。启动后,这台设备才会重新出现在网页版设备列表里。`,en:`The managed service is not running right now. Start it so this device can show up in the web device list again.`},remoteStatusReauthorizationHint:{zh:`点击下方按钮后会打开登录页。完成登录后,这台设备会自动恢复远程访问,不需要重新配置。`,en:`Use the button below to open the sign-in page. Once you finish signing in, this device will recover remote access automatically.`},remoteSignInAndEnable:{zh:`登录并开启远程访问`,en:`Sign In and Enable Remote Access`},remoteEnableNow:{zh:`开启远程访问`,en:`Enable Remote Access`},remoteReconnectNow:{zh:`重新连接`,en:`Reconnect`},remoteReauthorizeNow:{zh:`重新登录并恢复远程访问`,en:`Sign In Again and Restore Remote Access`},remoteDisable:{zh:`关闭远程访问`,en:`Disable Remote Access`},remoteDeviceSummaryTitle:{zh:`当前设备`,en:`This Device`},remoteDeviceSummaryDescription:{zh:`普通用户只需要关心账号、设备名、连接状态和网页版入口。`,en:`Users only need the account, device name, connection state, and web entry.`},remoteSignedInAccount:{zh:`当前账号`,en:`Signed-in Account`},remoteConnectionStatus:{zh:`连接状态`,en:`Connection Status`},remoteAdvancedTitle:{zh:`高级设置`,en:`Advanced Settings`},remoteAdvancedDescription:{zh:`只有在排查或自定义平台地址时,才需要打开这一层。`,en:`Only open this section when you need diagnostics or a custom platform API base.`},remoteAdvancedToggleOpen:{zh:`展开高级设置`,en:`Show Advanced Settings`},remoteAdvancedToggleClose:{zh:`收起高级设置`,en:`Hide Advanced Settings`},remoteAdvancedSaved:{zh:`高级设置已保存`,en:`Advanced settings saved`},remoteEnabledReady:{zh:`远程访问已开启,现在可以前往 NextClaw Web 使用`,en:`Remote access is enabled. You can now use NextClaw Web.`},remoteDisabledDone:{zh:`远程访问已关闭`,en:`Remote access is disabled`},remoteServiceRecovered:{zh:`后台服务已重新接上远程访问`,en:`The managed service is connected again`},remoteActionEnabling:{zh:`正在开启远程访问...`,en:`Enabling remote access...`},remoteActionDisabling:{zh:`正在关闭远程访问...`,en:`Disabling remote access...`},remoteActionSavingAdvanced:{zh:`正在保存高级设置...`,en:`Saving advanced settings...`},remoteActionStarting:{zh:`正在启动后台服务...`,en:`Starting the managed service...`},remoteActionRestarting:{zh:`正在重启后台服务...`,en:`Restarting the managed service...`},remoteActionStopping:{zh:`正在停止后台服务...`,en:`Stopping the managed service...`},remoteAccountEntryTitle:{zh:`NextClaw 账号`,en:`NextClaw Account`},remoteAccountEntryDisconnected:{zh:`未登录,点击连接`,en:`Not signed in. Click to connect.`},remoteAccountEntryConnected:{zh:`已连接到 NextClaw`,en:`Connected to NextClaw`},remoteAccountEntryManage:{zh:`账号`,en:`Account`},accountPanelTitle:{zh:`NextClaw 账号`,en:`NextClaw Account`},accountPanelDescription:{zh:`远程访问依赖这个账号登录。后续 token、授权和更多云端能力也会基于它展开。`,en:`Remote access depends on this account. Tokens, authorization, and future cloud capabilities will build on it.`},accountPanelSignedInTitle:{zh:`账号已连接`,en:`Account Connected`},accountPanelSignedInDescription:{zh:`这台设备已经和你的 NextClaw 账号关联,可以直接去网页版查看设备。`,en:`This device is linked to your NextClaw account. You can go to the web app and open the device there.`},accountPanelSignedOutTitle:{zh:`通过浏览器完成登录`,en:`Continue Sign-In in Your Browser`},accountPanelSignedOutDescription:{zh:`点击下方按钮后会打开 NextClaw 网页,在网页中登录或注册,当前设备会自动接入。`,en:`Click the button below to open NextClaw Web, sign in or create an account there, and this device will attach automatically.`},remoteOverviewTitle:{zh:`连接总览`,en:`Connection Overview`},remoteOverviewDescription:{zh:`只保留普通用户真正需要知道的信息。`,en:`Keep only the information ordinary users actually need.`},remoteAccountConnected:{zh:`平台已登录`,en:`Platform Connected`},remoteAccountNotConnected:{zh:`平台未登录`,en:`Platform Not Connected`},remoteRuntimeMissing:{zh:`连接器未运行`,en:`Connector Not Running`},remoteStateConnected:{zh:`已连接`,en:`Connected`},remoteStateConnecting:{zh:`连接中`,en:`Connecting`},remoteStateError:{zh:`连接异常`,en:`Error`},remoteStateDisconnected:{zh:`已断开`,en:`Disconnected`},remoteStateDisabled:{zh:`未启用`,en:`Disabled`},remoteStateReauthorizationRequired:{zh:`需要重新登录`,en:`Sign-In Required`},remoteLocalOrigin:{zh:`本地服务地址`,en:`Local Origin`},remotePublicPlatform:{zh:`平台地址`,en:`Platform Base`},remoteDeviceId:{zh:`设备 ID`,en:`Device ID`},remoteRuntimeUpdatedAt:{zh:`状态更新时间`,en:`Status Updated At`},remoteLastConnectedAt:{zh:`上次连接时间`,en:`Last Connected At`},remoteLastError:{zh:`最近错误`,en:`Last Error`},remoteDeviceTitle:{zh:`设备配置`,en:`Device Settings`},remoteDeviceDescription:{zh:`保存远程访问开关、设备名和平台 API Base。`,en:`Save remote access state, device name, and platform API base.`},remoteDeviceSectionTitle:{zh:`设备信息`,en:`Device Info`},remoteDeviceSectionDescription:{zh:`开启之后,这台设备会在平台网页的设备列表中出现。`,en:`Once enabled, this device will appear in the platform web device list.`},remoteDeviceNameAuto:{zh:`未命名设备`,en:`Unnamed Device`},remoteEnabled:{zh:`启用远程访问`,en:`Enable Remote Access`},remoteEnabledHelp:{zh:`保存后需要启动或重启后台服务,新的远程配置才会真正生效。`,en:`After saving, start or restart the managed service to apply the new remote configuration.`},remoteDeviceName:{zh:`设备名称`,en:`Device Name`},remoteDeviceNamePlaceholder:{zh:`例如:PeideMacBook-Pro`,en:`For example: PeideMacBook-Pro`},remotePlatformApiBase:{zh:`平台 API Base`,en:`Platform API Base`},remotePlatformApiBaseHelp:{zh:`留空可回退到登录时写入的 providers.nextclaw.apiBase。`,en:`Leave empty to fall back to providers.nextclaw.apiBase saved at login time.`},remoteSaveSettings:{zh:`保存设置`,en:`Save Settings`},remoteSettingsSaved:{zh:`远程设置已保存`,en:`Remote settings saved`},remoteSettingsSaveFailed:{zh:`远程设置保存失败`,en:`Failed to save remote settings`},remoteSaveHint:{zh:`推荐流程:先保存设置,再启动或重启服务,最后运行诊断确认。`,en:`Recommended flow: save settings, start or restart the service, then run diagnostics.`},remoteAccountTitle:{zh:`平台账号`,en:`Platform Account`},remoteAccountDescription:{zh:`通过浏览器授权把当前设备安全连接到 NextClaw 平台。`,en:`Authorize this device in your browser and connect it to the NextClaw platform.`},remoteAccountEmail:{zh:`邮箱`,en:`Email`},remoteAccountUsername:{zh:`用户名`,en:`Username`},remoteAccountUsernameRequiredTitle:{zh:`发布 skill 前需要先设置用户名`,en:`Set a username before publishing skills`},remoteAccountUsernameRequiredDescription:{zh:"平台账号已经登录,但还没有正式用户名。设置后,你的个人 skill 会使用 `@username/skill-name` 作为发布标识。",en:"Your platform account is already signed in, but it does not have a username yet. Once set, your personal skills will publish as `@username/skill-name`."},remoteAccountUsernamePlaceholder:{zh:`例如:alice-dev`,en:`For example: alice-dev`},remoteAccountUsernameSave:{zh:`保存用户名`,en:`Save Username`},remoteAccountUsernameSaving:{zh:`保存中...`,en:`Saving...`},remoteAccountUsernameSetSuccess:{zh:`用户名已保存`,en:`Username saved`},remoteAccountUsernameSetFailed:{zh:`用户名保存失败`,en:`Failed to save username`},remoteAccountUsernameLockedHelp:{zh:`当前版本先支持首次设置用户名;设置后暂不支持改名。`,en:`This version supports initial username setup only. Renaming is not available yet.`},remoteAccountRole:{zh:`角色`,en:`Role`},remoteApiBase:{zh:`API Base`,en:`API Base`},remoteBrowserAuthTitle:{zh:`浏览器授权登录`,en:`Browser Authorization`},remoteBrowserAuthDescription:{zh:`点击后会打开平台授权页,在浏览器内登录或注册并授权当前设备。`,en:`Open the platform authorization page in your browser, then sign in or create an account there.`},remoteBrowserAuthAction:{zh:`前往浏览器授权`,en:`Continue in Browser`},remoteBrowserAuthActionRetry:{zh:`重新发起浏览器登录`,en:`Restart Browser Sign-In`},remoteBrowserAuthResume:{zh:`重新打开授权页`,en:`Reopen Authorization Page`},remoteBrowserAuthStarting:{zh:`正在创建授权会话...`,en:`Starting authorization...`},remoteBrowserAuthAuthorizing:{zh:`等待浏览器完成授权...`,en:`Waiting for browser authorization...`},remoteBrowserAuthWaiting:{zh:`浏览器授权页已打开。请在网页中完成登录或注册,然后此页面会自动接入。`,en:`The authorization page is open. Complete sign in or registration there and this page will connect automatically.`},remoteBrowserAuthCompleted:{zh:`浏览器授权完成,正在刷新登录状态。`,en:`Authorization completed. Refreshing account status.`},remoteBrowserAuthExpired:{zh:`授权会话已过期,请重新发起。`,en:`Authorization session expired. Start again.`},remoteBrowserAuthPopupBlocked:{zh:`浏览器没有自动打开,请点击“重新打开授权页”。`,en:`Your browser did not open automatically. Use "Reopen Authorization Page".`},remoteBrowserAuthSession:{zh:`授权会话`,en:`Auth Session`},remoteBrowserAuthExpiresAt:{zh:`授权过期时间`,en:`Auth Expires At`},remoteBrowserAuthHint:{zh:`如果你刚修改了上方 Platform API Base,建议先保存设置;未保存时当前页面也会沿用你输入的新地址发起授权。`,en:`If you just changed the Platform API Base above, saving settings is recommended. This page will still use the current value for browser authorization.`},remoteBrowserAuthStartFailed:{zh:`启动浏览器授权失败`,en:`Failed to start browser authorization`},remoteBrowserAuthPollFailed:{zh:`浏览器授权状态检查失败`,en:`Failed to check browser authorization status`},remoteEmail:{zh:`邮箱`,en:`Email`},remotePassword:{zh:`密码`,en:`Password`},remotePasswordPlaceholder:{zh:`请输入你的平台密码`,en:`Enter your platform password`},remoteRegisterIfNeeded:{zh:`首次验证自动创建账号`,en:`Auto-create on First Verification`},remoteRegisterIfNeededHelp:{zh:`如果邮箱还没有对应账号,平台会在验证码验证成功后自动创建账号并保存登录态。`,en:`When enabled, the UI will sign in on the platform and then save the resulting login token.`},remoteLogin:{zh:`登录平台`,en:`Login to Platform`},remoteCreateAccount:{zh:`注册并登录`,en:`Create Account & Login`},remoteLoggingIn:{zh:`登录中...`,en:`Logging in...`},remoteLoginSuccess:{zh:`平台登录成功`,en:`Platform login succeeded`},remoteLoginFailed:{zh:`平台登录失败`,en:`Platform login failed`},remoteLogout:{zh:`退出登录`,en:`Logout`},remoteLoggingOut:{zh:`退出中...`,en:`Logging out...`},remoteLogoutSuccess:{zh:`已退出平台登录`,en:`Logged out from platform`},remoteLogoutFailed:{zh:`退出登录失败`,en:`Failed to logout`},remoteServiceTitle:{zh:`后台服务`,en:`Managed Service`},remoteServiceDescription:{zh:`直接控制托管当前 UI 的后台服务。`,en:`Directly control the managed service that hosts the current UI.`},remoteServiceRunning:{zh:`服务运行中`,en:`Service Running`},remoteServiceManagedRunning:{zh:`当前就是托管服务`,en:`Current Managed Service`},remoteServiceStopped:{zh:`服务未运行`,en:`Service Stopped`},remoteServicePid:{zh:`进程 PID`,en:`Process PID`},remoteServiceUiUrl:{zh:`UI 地址`,en:`UI URL`},remoteServiceCurrentProcess:{zh:`当前页面是否由该服务提供`,en:`Current Page Served By It`},remoteStartService:{zh:`启动服务`,en:`Start Service`},remoteRestartService:{zh:`重启服务`,en:`Restart Service`},remoteStopService:{zh:`停止服务`,en:`Stop Service`},remoteServiceHint:{zh:`如果当前页面本身就是托管服务,停止或重启时页面会短暂断开,这是预期行为。`,en:`If this page is served by the managed service itself, stop/restart may briefly disconnect the page.`},remoteServiceActionFailed:{zh:`服务操作失败`,en:`Service action failed`},remoteDoctorTitle:{zh:`远程诊断`,en:`Remote Diagnostics`},remoteDoctorDescription:{zh:`检查开关、平台登录、本地 UI 健康和连接器状态。`,en:`Check config state, platform login, local UI health, and connector status.`},remoteRunDoctor:{zh:`运行诊断`,en:`Run Diagnostics`},remoteDoctorRunning:{zh:`诊断中...`,en:`Running diagnostics...`},remoteDoctorCompleted:{zh:`诊断完成`,en:`Diagnostics completed`},remoteDoctorFailed:{zh:`诊断失败`,en:`Diagnostics failed`},remoteDoctorGeneratedAt:{zh:`生成时间`,en:`Generated At`},remoteDoctorEmpty:{zh:`点击上方按钮运行一次诊断。`,en:`Run diagnostics to see the latest checks here.`},remoteCheckPassed:{zh:`通过`,en:`Passed`},remoteCheckFailed:{zh:`失败`,en:`Failed`},connected:{zh:`已连接`,en:`Connected`},disconnected:{zh:`未连接`,en:`Disconnected`},connecting:{zh:`连接中...`,en:`Connecting...`},feishuConnecting:{zh:`验证 / 连接中...`,en:`Verifying / connecting...`},statusReady:{zh:`就绪`,en:`Ready`},statusSetup:{zh:`待配置`,en:`Setup`},statusActive:{zh:`活跃`,en:`Active`},statusInactive:{zh:`未启用`,en:`Inactive`}},Me={runtimePageTitle:{zh:`路由与运行时`,en:`Routing & Runtime`},runtimePageDescription:{zh:`对齐 OpenClaw 的多 Agent 路由:绑定规则、Agent 池、私聊范围。`,en:`Align multi-agent routing with OpenClaw: bindings, agent pool, and DM scope.`},runtimeLoading:{zh:`加载运行时配置中...`,en:`Loading runtime settings...`},runtimeControlTitle:{zh:`服务管理`,en:`Service Management`},runtimeControlDescription:{zh:`明确当前服务状态,并在宿主允许的范围内执行启动、重启、停止或桌面应用重启。`,en:`Make the current service state explicit and manage start, restart, stop, or full desktop app restart when the host allows it.`},runtimePresenceTitle:{zh:`运行形态与常驻`,en:`Presence & Lifecycle`},runtimePresenceDescription:{zh:`明确当前环境里“关闭窗口/页面”会发生什么,以及哪些后台能力由宿主层负责。`,en:`Make the current environment explicit: what happens when the window or page closes, and which background behaviors belong to the host.`},runtimePresenceLoading:{zh:`正在读取常驻状态...`,en:`Loading presence settings...`},runtimePresenceLoadFailed:{zh:`读取桌面端常驻状态失败`,en:`Failed to load desktop presence settings`},runtimePresenceBehaviorLabel:{zh:`当前关闭行为`,en:`Current Close Behavior`},runtimePresenceBehaviorBackground:{zh:`关闭窗口时隐藏到后台`,en:`Closing the window hides it to the background`},runtimePresenceBehaviorQuit:{zh:`关闭窗口时退出应用`,en:`Closing the window quits the app`},runtimePresenceCloseToBackground:{zh:`关闭窗口时继续在后台运行`,en:`Keep running in background when closing the window`},runtimePresenceCloseToBackgroundHelp:{zh:`开启后,关闭桌面窗口只会隐藏到托盘,不会停止本地 NextClaw 服务。`,en:`When enabled, closing the desktop window hides it to the tray instead of stopping the local NextClaw service.`},runtimePresenceLaunchAtLogin:{zh:`登录系统时自动启动 NextClaw`,en:`Launch NextClaw at login`},runtimePresenceLaunchAtLoginHelp:{zh:`开启后,桌面端会在登录系统后自动启动,并默认保持后台运行。`,en:`When enabled, the desktop app starts automatically after login and stays in the background by default.`},runtimePresenceLaunchAtLoginUnavailable:{zh:`当前环境暂不支持在这里配置开机自启。`,en:`Launch-at-login is not configurable in this environment yet.`},runtimePresenceSaved:{zh:`桌面端常驻设置已保存`,en:`Desktop presence settings saved`},runtimePresenceSaveFailed:{zh:`保存桌面端常驻设置失败`,en:`Failed to save desktop presence settings`},runtimePresenceManagedLocalTitle:{zh:`浏览器只是本地服务控制面`,en:`The browser is only a control surface for the local service`},runtimePresenceManagedLocalDescription:{zh:`关闭浏览器标签页不会停止本地 NextClaw 服务。服务生命周期由本地受管服务负责,而不是由页面生命周期决定。`,en:`Closing the browser tab does not stop the local NextClaw service. The local managed service owns the lifecycle, not the page.`},runtimePresenceSelfHostedTitle:{zh:`页面不拥有自托管服务生命周期`,en:`The page does not own the self-hosted service lifecycle`},runtimePresenceSelfHostedDescription:{zh:`关闭浏览器页面不会影响自托管实例。服务启停和开机常驻应由宿主环境或部署层管理。`,en:`Closing the browser page does not affect the self-hosted instance. Service start, stop, and auto-start belong to the host environment or deployment layer.`},runtimePresenceSharedTitle:{zh:`共享网页端只暴露状态,不暴露进程控制`,en:`Shared web exposes service state, not process ownership`},runtimePresenceSharedDescription:{zh:`关闭页面只会结束当前连接或会话,不会影响共享服务本体。服务生命周期由平台托管层负责。`,en:`Closing the page only ends the current connection or session, not the shared service itself. The platform owns the lifecycle.`},runtimeControlLoading:{zh:`读取运行时控制能力中...`,en:`Loading runtime control capabilities...`},runtimeControlLoadFailed:{zh:`读取运行时控制状态失败`,en:`Failed to load runtime control state`},runtimeControlServiceRunning:{zh:`服务运行中`,en:`Service running`},runtimeControlServiceStopped:{zh:`服务已停止`,en:`Service stopped`},runtimeControlServiceStarting:{zh:`正在启动服务`,en:`Starting service`},runtimeControlServiceStopping:{zh:`正在停止服务`,en:`Stopping service`},runtimeControlServiceRestarting:{zh:`正在重启服务`,en:`Restarting service`},runtimeControlServiceUnknown:{zh:`服务状态未知`,en:`Service state unknown`},runtimeControlHealthy:{zh:`运行时正常`,en:`Runtime healthy`},runtimeControlStartingService:{zh:`正在启动服务`,en:`Starting service`},runtimeControlRestartingService:{zh:`正在重启服务`,en:`Restarting service`},runtimeControlStoppingService:{zh:`正在停止服务`,en:`Stopping service`},runtimeControlRestartingApp:{zh:`正在重启应用`,en:`Restarting app`},runtimeControlRecovering:{zh:`正在恢复连接`,en:`Recovering connection`},runtimeControlFailed:{zh:`重启失败`,en:`Restart failed`},runtimeControlUnavailable:{zh:`当前不可用`,en:`Currently unavailable`},runtimeControlEnvironmentDesktop:{zh:`桌面端内嵌运行时`,en:`Desktop embedded runtime`},runtimeControlEnvironmentManagedService:{zh:`本地托管服务`,en:`Managed local service`},runtimeControlEnvironmentSelfHosted:{zh:`自托管网页端`,en:`Self-hosted web`},runtimeControlEnvironmentSharedWeb:{zh:`共享网页端`,en:`Shared web`},runtimeControlStartService:{zh:`启动服务`,en:`Start Service`},runtimeControlRestartService:{zh:`重启服务`,en:`Restart Service`},runtimeControlStopService:{zh:`停止服务`,en:`Stop Service`},runtimeControlRestartApp:{zh:`重启应用`,en:`Restart App`},runtimeControlPendingRestartTitle:{zh:`待重启`,en:`Pending Restart`},runtimeControlPendingRestartDescription:{zh:`这次改动已经保存,但系统不会自动重启。请在你方便的时候手动重启,重启完成后该提示会自动清空。`,en:`These changes are saved, but the system will not restart automatically. Restart manually when you are ready, and this notice clears after the restart finishes.`},runtimeControlPendingRestartPaths:{zh:`待生效项`,en:`Changes Waiting For Restart`},runtimeStatusLoadingTitle:{zh:`读取状态中`,en:`Loading status`},runtimeStatusLoadingDescription:{zh:`正在读取当前系统状态。`,en:`Loading the current system status.`},runtimeStatusHealthyTitle:{zh:`系统正常`,en:`System healthy`},runtimeStatusHealthyDescription:{zh:`当前没有需要你立即处理的系统动作。`,en:`There is no system action that needs your attention right now.`},runtimeStatusPendingRestartTitle:{zh:`待重启`,en:`Restart required`},runtimeStatusPendingRestartDescription:{zh:`这些改动已经保存,但不会自动重启。你可以在这里查看原因,并在方便的时候手动重启。`,en:`These changes are saved, but the system will not restart automatically. Review the reason here and restart when you are ready.`},runtimeStatusPendingRestartReasonItem:{zh:`{path} 改动将在重启后生效。`,en:`Changes in {path} will apply after restart.`},runtimeStatusActionHint:{zh:`准备好时再执行`,en:`Run when you are ready`},runtimeStatusRestartAction:{zh:`立即重启`,en:`Restart now`},runtimeStatusRestartingAction:{zh:`重启中...`,en:`Restarting...`},runtimeControlStartingServiceHelp:{zh:`正在启动 NextClaw 服务,页面可能会在服务恢复后重新连接。`,en:`Starting the NextClaw service. The page may reconnect after the service becomes available.`},runtimeControlRestartingServiceHelp:{zh:`正在重启 NextClaw 服务,页面可能会短暂断开。`,en:`Restarting the NextClaw service. The page may disconnect briefly.`},runtimeControlStoppingServiceHelp:{zh:`正在停止 NextClaw 服务,当前页面会很快断开。`,en:`Stopping the NextClaw service. This page will disconnect shortly.`},runtimeControlRestartingAppHelp:{zh:`正在重新启动桌面应用,当前窗口会短暂关闭并立即拉起。`,en:`Restarting the desktop app. The current window will close briefly and relaunch.`},runtimeControlRecoveringHelp:{zh:`正在等待服务恢复连接...`,en:`Waiting for the service to come back...`},runtimeControlRecovered:{zh:`运行时已恢复连接`,en:`Runtime connection restored`},runtimeControlActionFailed:{zh:`服务管理动作失败`,en:`Service management action failed`},runtimeControlRestartAppConfirm:{zh:`这会重启整个 NextClaw 桌面应用,并中断当前窗口。确定继续吗?`,en:`This restarts the entire NextClaw desktop app and interrupts the current window. Continue?`},runtimeControlStopServiceConfirm:{zh:`这会停止当前 NextClaw 服务,当前页面会立即断开。确定继续吗?`,en:`This stops the current NextClaw service and disconnects the page immediately. Continue?`},runtimeRestartAppUnavailable:{zh:`当前环境不支持从前端重启整个应用。`,en:`This environment does not support restarting the entire app from the UI.`},runtimeControlDesktopServiceHint:{zh:`桌面端由 Launcher 持有应用生命周期;普通用户无需单独停止内嵌服务。`,en:`The desktop launcher owns the app lifecycle, so end users do not stop the embedded service separately.`},runtimeRecoveryTimedOut:{zh:`等待运行时恢复超时,请稍后重试或查看日志。`,en:`Timed out waiting for the runtime to recover. Try again or inspect the logs.`}},Ne={searchPageTitle:{zh:`搜索渠道`,en:`Search Channels`},searchPageDescription:{zh:`配置网页搜索提供商`,en:`Configure web search providers.`},searchActiveProvider:{zh:`当前搜索提供商`,en:`Active Search Provider`},searchDefaultMaxResults:{zh:`默认返回条数`,en:`Default Result Count`},searchProviderSummary:{zh:`结果摘要`,en:`Result Summary`},searchProviderFreshness:{zh:`时间范围`,en:`Freshness`},searchProviderSearchDepth:{zh:`搜索深度`,en:`Search Depth`},searchProviderIncludeAnswer:{zh:`包含回答`,en:`Include Answer`},searchProviderBaseUrl:{zh:`接口地址`,en:`API Base URL`},searchProviderOpenDocs:{zh:`查看文档`,en:`Open Docs`},searchProviderActivate:{zh:`激活`,en:`Activate`},searchProviderActivated:{zh:`已激活`,en:`Activated`},searchProviderDeactivate:{zh:`取消激活`,en:`Deactivate`},searchProviderBochaDescription:{zh:`更适合中国大陆用户的 AI 搜索。`,en:`AI-ready search that works better for mainland China users.`},searchProviderTavilyDescription:{zh:`更适合调研和网页信息整合的搜索 provider。`,en:`Research-focused search with configurable answer synthesis.`},searchProviderBraveDescription:{zh:`保留 Brave 作为可选 provider。`,en:`Keep Brave as an optional provider.`},searchStatusConfigured:{zh:`已配置`,en:`Configured`},searchStatusNeedsSetup:{zh:`待配置`,en:`Needs Setup`},searchFreshnessNoLimit:{zh:`不限`,en:`No Limit`},searchFreshnessOneDay:{zh:`一天内`,en:`One Day`},searchFreshnessOneWeek:{zh:`一周内`,en:`One Week`},searchFreshnessOneMonth:{zh:`一个月内`,en:`One Month`},searchFreshnessOneYear:{zh:`一年内`,en:`One Year`},searchDepthBasic:{zh:`基础`,en:`Basic`},searchDepthAdvanced:{zh:`高级`,en:`Advanced`},searchNoProviderSelected:{zh:`请选择左侧搜索 provider`,en:`Select a search provider from the left.`}};function Pe(e,t=Z()){if(!e)return`-`;let n=e instanceof Date?e:new Date(e);return Number.isNaN(n.getTime())?typeof e==`string`?e:`-`:n.toLocaleString(Q(t))}function Fe(e,t=Z()){if(!e)return`-`;let n=e instanceof Date?e:new Date(e);return Number.isNaN(n.getTime())?typeof e==`string`?e:`-`:new Intl.DateTimeFormat(Q(t),{year:`numeric`,month:`2-digit`,day:`2-digit`}).format(n)}function Ie(e,t=Z()){return new Intl.NumberFormat(Q(t)).format(e)}var $={chat:{zh:`对话`,en:`Chat`},model:{zh:`模型`,en:`Model`},searchChannels:{zh:`搜索渠道`,en:`Search Channels`},providers:{zh:`提供商`,en:`Providers`},channels:{zh:`渠道`,en:`Channels`},cron:{zh:`定时任务`,en:`Cron Jobs`},secrets:{zh:`密钥管理`,en:`Secrets`},runtime:{zh:`路由与运行时`,en:`Routing & Runtime`},remote:{zh:`远程访问`,en:`Remote Access`},marketplace:{zh:`市场`,en:`Marketplace`},advanced:{zh:`高级`,en:`Advanced`},settings:{zh:`设置`,en:`Settings`},security:{zh:`安全`,en:`Security`},backToMain:{zh:`返回主界面`,en:`Back to Main`},enabled:{zh:`启用`,en:`Enabled`},disabled:{zh:`禁用`,en:`Disabled`},save:{zh:`保存`,en:`Save`},cancel:{zh:`取消`,en:`Cancel`},delete:{zh:`删除`,en:`Delete`},add:{zh:`添加`,en:`Add`},edit:{zh:`编辑`,en:`Edit`},loading:{zh:`加载中...`,en:`Loading...`},success:{zh:`成功`,en:`Success`},error:{zh:`错误`,en:`Error`},confirm:{zh:`确认`,en:`Confirm`},unchanged:{zh:`未修改`,en:`Unchanged`},saving:{zh:`保存中...`,en:`Saving...`},remove:{zh:`移除`,en:`Remove`},all:{zh:`全部`,en:`All`},yes:{zh:`是`,en:`Yes`},no:{zh:`否`,en:`No`},prev:{zh:`上一页`,en:`Prev`},next:{zh:`下一页`,en:`Next`},noneOption:{zh:`无`,en:`None`},language:{zh:`语言`,en:`Language`},theme:{zh:`主题`,en:`Theme`},themeWarm:{zh:`暖色`,en:`Warm`},themeCool:{zh:`冷色`,en:`Cool`},isRequired:{zh:`必填`,en:`is required`},duplicate:{zh:`重复`,en:`duplicate`},notFound:{zh:`未找到`,en:`not found`},modelPageTitle:{zh:`模型配置`,en:`Model Configuration`},modelPageDescription:{zh:`配置默认 AI 模型选择`,en:`Configure default AI model selection`},defaultModel:{zh:`默认模型`,en:`Default Model`},workspace:{zh:`工作空间`,en:`Workspace`},modelName:{zh:`模型`,en:`Model`},modelPickerNoOptions:{zh:`暂无可选模型`,en:`No model options available`},modelPickerUseCustom:{zh:`使用自定义模型:{value}`,en:`Use custom model: {value}`},modelInputCustomHint:{zh:`如果列表里没有目标模型,可直接输入自定义模型 ID。`,en:`If the model is not listed, type a custom model ID directly.`},modelIdentifierHelp:{zh:`Agent 默认模型标识,使用带 provider 前缀的格式。例如:openai/gpt-5.1、anthropic/claude-opus-4-1、deepseek/deepseek-chat、minimax/MiniMax-M2.5、openrouter/openai/gpt-5.3-codex。`,en:`Default model identifier used by the agent. Use provider-prefixed format. Examples: openai/gpt-5.1 · anthropic/claude-opus-4-1 · deepseek/deepseek-chat · minimax/MiniMax-M2.5 · openrouter/openai/gpt-5.3-codex.`},maxToolIterations:{zh:`最大工具迭代次数`,en:`Max Tool Iterations`},saveChanges:{zh:`保存变更`,en:`Save Changes`},providersPageTitle:{zh:`AI 提供商`,en:`AI Providers`},providersPageDescription:{zh:`在一个页面内完成提供商切换、配置与保存。`,en:`Switch, configure, and save providers in one continuous workspace.`},providersLoading:{zh:`加载中...`,en:`Loading...`},providersTabConfigured:{zh:`已配置`,en:`Configured`},providersTabAll:{zh:`全部提供商`,en:`All Providers`},providersFilterPlaceholder:{zh:`搜索提供商`,en:`Search providers`},providersNoMatch:{zh:`没有匹配的提供商`,en:`No matching providers`},providerAddCustom:{zh:`新增自定义提供商`,en:`Add Custom Provider`},providerDelete:{zh:`删除该提供商`,en:`Delete Provider`},providerDeleteConfirm:{zh:`确认删除这个自定义提供商吗?删除后不可恢复。`,en:`Delete this custom provider? This action cannot be undone.`},providersSelectPlaceholder:{zh:`选择提供商`,en:`Select Provider`},providersSelectTitle:{zh:`选择左侧提供商开始配置`,en:`Select a provider from the left to configure`},providersSelectDescription:{zh:`你可以连续切换多个提供商并逐个保存配置。`,en:`Switch between providers continuously and save each configuration.`},providersDefaultDescription:{zh:`为你的 Agent 配置 AI 服务`,en:`Configure AI services for your agents`},providersEmptyTitle:{zh:`尚未配置提供商`,en:`No providers configured`},providersEmptyDescription:{zh:`添加一个 AI 提供商后即可开始使用。`,en:`Add an AI provider to start using the platform.`},apiKey:{zh:`API 密钥`,en:`API Key`},apiBase:{zh:`API Base URL`,en:`API Base URL`},extraHeaders:{zh:`额外请求头`,en:`Extra Headers`},wireApi:{zh:`请求接口`,en:`Wire API`},wireApiAuto:{zh:`自动(优先 Chat,必要时 Responses)`,en:`Auto (Chat with fallback)`},wireApiChat:{zh:`Chat Completions`,en:`Chat Completions`},wireApiResponses:{zh:`Responses`,en:`Responses`},apiKeySet:{zh:`已设置`,en:`Set`},apiKeyNotSet:{zh:`未设置`,en:`Not Set`},showKey:{zh:`显示密钥`,en:`Show Key`},hideKey:{zh:`隐藏密钥`,en:`Hide Key`},providerFormDescription:{zh:`配置 AI 提供商的 API 密钥与参数`,en:`Configure API keys and parameters for AI provider`},providerDisplayName:{zh:`自定义名称`,en:`Custom Name`},providerDisplayNamePlaceholder:{zh:`例如:中转站 A`,en:`For example: Relay A`},providerDisplayNameHelp:{zh:`仅用于界面展示,便于区分多个自定义 Provider。`,en:`Display-only label to distinguish multiple custom providers.`},enterApiKey:{zh:`请输入 API 密钥`,en:`Enter API Key`},providerApiBaseHelp:{zh:`留空或恢复默认即可使用预置 API Base。`,en:`Leave empty or reset to use the default API base.`},providerApiBaseHelpMinimax:{zh:`MiniMax 中国区请使用 https://api.minimaxi.com/v1;海外请使用 https://api.minimax.io/v1。`,en:`Use https://api.minimaxi.com/v1 for Mainland China accounts, and https://api.minimax.io/v1 for overseas accounts.`},providerOpenAICompatHint:{zh:`自定义提供商默认按 OpenAI 兼容 API 格式接入(Chat Completions / Responses)。`,en:`Custom providers use OpenAI-compatible API format by default (Chat Completions / Responses).`},providerExtraHeadersHelp:{zh:`用于自定义请求头(可选)。`,en:`Optional custom request headers.`},providerTestConnection:{zh:`测试连接`,en:`Test Connection`},providerTestingConnection:{zh:`测试中...`,en:`Testing...`},providerTestConnectionSuccess:{zh:`连接测试通过`,en:`Connection test passed`},providerTestConnectionFailed:{zh:`连接测试失败`,en:`Connection test failed`},providerModelsTitle:{zh:`可用模型列表`,en:`Available Models`},providerModelInputPlaceholder:{zh:`输入模型 ID(无需 provider 前缀,不在列表也可)`,en:`Enter model id (without provider prefix; custom values allowed)`},providerModelInputHint:{zh:`列表仅作参考,不在列表也可直接输入并添加。`,en:`The list is only a reference. You can type and add models that are not listed.`},providerAddModel:{zh:`添加模型`,en:`Add Model`},providerModelsEmpty:{zh:`当前没有模型,可直接输入并添加。`,en:`No models yet. Add one by typing model id.`},providerModelDefaultTag:{zh:`默认`,en:`Default`},providerModelCustomTag:{zh:`自定义`,en:`Custom`},providerModelsHelp:{zh:`系统会先填充预置模型;你可以在这里新增或删除。请填写当前提供商自己的模型 ID(不带当前 provider 前缀);若输入带当前 provider 前缀会自动去除,但会保留后续路径(如 openai/gpt-5)。`,en:`Built-in models are prefilled and can be added or removed here. Enter provider-local model ids without the current provider prefix; if prefixed input is entered, only the current provider prefix is removed while the remaining path is preserved (for example, openai/gpt-5).`},providerModelsEmptyShort:{zh:`暂无可用模型`,en:`No models available`},providerAddFirstModel:{zh:`添加第一个模型`,en:`Add first model`},providerModelThinkingTitle:{zh:`思考档位能力`,en:`Thinking Capability`},providerModelThinkingHint:{zh:`为该模型声明可切换的思考档位,聊天会话将按这里的能力展示下拉。`,en:`Declare supported thinking levels for this model. Chat sessions will show the selector accordingly.`},providerModelThinkingDefault:{zh:`默认思考档位`,en:`Default Thinking Level`},providerModelThinkingDefaultNone:{zh:`无默认(回落 off)`,en:`No default (fallback off)`},providerModelThinkingNoSupported:{zh:`请先至少选择一个支持档位。`,en:`Select at least one supported level first.`},providerDisplayNameHelpShort:{zh:`便于区分多个自定义提供商`,en:`Helps distinguish multiple custom providers`},providerApiBaseHelpShort:{zh:`一般只需填写域名,系统自动补全路径`,en:`Usually just the domain; path auto-appended`},providerExtraHeadersHelpShort:{zh:`可选,用于自定义鉴权等场景`,en:`Optional, for custom auth etc.`},providerAdvancedSettings:{zh:`高级设置`,en:`Advanced Settings`},providerAuthSectionTitle:{zh:`提供商授权`,en:`Provider Authorization`},providerAuthStarting:{zh:`启动中...`,en:`Starting...`},providerAuthAuthorizing:{zh:`授权中...`,en:`Authorizing...`},providerAuthAuthorizeInBrowser:{zh:`浏览器授权`,en:`Authorize in Browser`},providerAuthWaitingBrowser:{zh:`等待浏览器完成授权...`,en:`Waiting for browser authorization...`},providerAuthCompleted:{zh:`授权已完成。`,en:`Authorization completed.`},providerAuthOpenPrompt:{zh:`请在浏览器完成授权,验证码:`,en:`Open browser and complete authorization (code: `},providerAuthOpenPromptSuffix:{zh:``,en:`)`},providerAuthStartFailed:{zh:`启动授权失败`,en:`Failed to start authorization`},providerAuthMethodLabel:{zh:`授权区域`,en:`Authorization Region`},providerAuthMethodPlaceholder:{zh:`请选择授权方式`,en:`Select authorization method`},providerAuthImportFromCli:{zh:`从 Qwen CLI 导入`,en:`Import From Qwen CLI`},providerAuthImporting:{zh:`导入中...`,en:`Importing...`},providerAuthImportSuccess:{zh:`已从 CLI 导入凭证。`,en:`Imported provider credentials from CLI.`},providerAuthImportStatusPrefix:{zh:`CLI 导入成功。`,en:`Imported credentials from CLI successfully.`},providerAuthImportFailed:{zh:`导入凭证失败`,en:`Failed to import credentials`},providerAuthSessionLabel:{zh:`会话`,en:`Session`},resetToDefault:{zh:`恢复默认`,en:`Reset to Default`},leaveBlankToKeepUnchanged:{zh:`留空则保持不变`,en:`Leave blank to keep unchanged`},...De,...Ne,...ve,consentGranted:{zh:`同意条款`,en:`Consent Granted`},imapHost:{zh:`IMAP 服务器`,en:`IMAP Host`},imapPort:{zh:`IMAP 端口`,en:`IMAP Port`},imapUsername:{zh:`IMAP 用户名`,en:`IMAP Username`},imapPassword:{zh:`IMAP 密码`,en:`IMAP Password`},imapMailbox:{zh:`IMAP 邮箱`,en:`IMAP Mailbox`},imapUseSsl:{zh:`IMAP 使用 SSL`,en:`IMAP Use SSL`},smtpHost:{zh:`SMTP 服务器`,en:`SMTP Host`},smtpPort:{zh:`SMTP 端口`,en:`SMTP Port`},smtpUsername:{zh:`SMTP 用户名`,en:`SMTP Username`},smtpPassword:{zh:`SMTP 密码`,en:`SMTP Password`},smtpUseTls:{zh:`SMTP 使用 TLS`,en:`SMTP Use TLS`},smtpUseSsl:{zh:`SMTP 使用 SSL`,en:`SMTP Use SSL`},fromAddress:{zh:`发件地址`,en:`From Address`},autoReplyEnabled:{zh:`自动回复已启用`,en:`Auto Reply Enabled`},pollIntervalSeconds:{zh:`轮询间隔(秒)`,en:`Poll Interval (s)`},markSeen:{zh:`标记为已读`,en:`Mark Seen`},maxBodyChars:{zh:`最大正文字符数`,en:`Max Body Chars`},subjectPrefix:{zh:`主题前缀`,en:`Subject Prefix`},baseUrl:{zh:`Base URL`,en:`Base URL`},socketUrl:{zh:`Socket URL`,en:`Socket URL`},socketPath:{zh:`Socket 路径`,en:`Socket Path`},socketDisableMsgpack:{zh:`禁用 Msgpack`,en:`Disable Msgpack`},socketReconnectDelayMs:{zh:`重连延迟(ms)`,en:`Reconnect Delay (ms)`},socketMaxReconnectDelayMs:{zh:`最大重连延迟(ms)`,en:`Max Reconnect Delay (ms)`},socketConnectTimeoutMs:{zh:`连接超时(ms)`,en:`Connect Timeout (ms)`},refreshIntervalMs:{zh:`刷新间隔(ms)`,en:`Refresh Interval (ms)`},watchTimeoutMs:{zh:`监视超时(ms)`,en:`Watch Timeout (ms)`},watchLimit:{zh:`监视限制`,en:`Watch Limit`},retryDelayMs:{zh:`重试延迟(ms)`,en:`Retry Delay (ms)`},maxRetryAttempts:{zh:`最大重试次数`,en:`Max Retry Attempts`},clawToken:{zh:`Claw Token`,en:`Claw Token`},agentUserId:{zh:`代理用户ID`,en:`Agent User ID`},sessions:{zh:`会话`,en:`Sessions`},panels:{zh:`面板`,en:`Panels`},mentionRequireInGroups:{zh:`群组中需要@`,en:`Require Mention in Groups`},groups:{zh:`群组`,en:`Groups`},replyDelayMode:{zh:`回复延迟模式`,en:`Reply Delay Mode`},replyDelayMs:{zh:`回复延迟(ms)`,en:`Reply Delay (ms)`},secret:{zh:`密钥`,en:`Secret`},accountId:{zh:`账号 ID`,en:`Account ID`},dmPolicy:{zh:`私聊策略`,en:`DM Policy`},groupAllowFrom:{zh:`群组允许来源`,en:`Group Allow From`},requireMention:{zh:`需要 @ 提及`,en:`Require Mention`},mentionPatterns:{zh:`提及匹配规则`,en:`Mention Patterns`},groupRulesJson:{zh:`群组规则(JSON)`,en:`Group Rules (JSON)`},allowBotMessages:{zh:`允许机器人消息`,en:`Allow Bot Messages`},attachmentMaxSizeMb:{zh:`附件最大体积(MB)`,en:`Attachment Max Size (MB)`},streamingMode:{zh:`流式模式`,en:`Streaming Mode`},draftChunkingJson:{zh:`草稿分块(JSON)`,en:`Draft Chunking (JSON)`},textChunkLimit:{zh:`文本分块上限`,en:`Text Chunk Limit`},invalidJson:{zh:`JSON 格式无效`,en:`Invalid JSON`},authBrand:{zh:`NextClaw UI`,en:`NextClaw UI`},authLoginTitle:{zh:`管理员登录`,en:`Admin Sign In`},authLoginDescription:{zh:`认证已开启。登录后才能查看这台机器的 NextClaw UI。`,en:`Authentication is enabled. Sign in to access this machine’s NextClaw UI.`},authUsername:{zh:`管理员用户名`,en:`Admin Username`},authUsernamePlaceholder:{zh:`输入管理员用户名`,en:`Enter admin username`},authPassword:{zh:`管理员密码`,en:`Admin Password`},authPasswordPlaceholder:{zh:`输入管理员密码`,en:`Enter admin password`},authConfirmPassword:{zh:`确认密码`,en:`Confirm Password`},authConfirmPasswordPlaceholder:{zh:`再次输入密码`,en:`Enter password again`},authLoginAction:{zh:`登录`,en:`Sign In`},authLoggingIn:{zh:`登录中...`,en:`Signing in...`},authLoggingOut:{zh:`退出中...`,en:`Signing out...`},authActionFailed:{zh:`认证操作失败`,en:`Authentication action failed`},authLoginSuccess:{zh:`登录成功`,en:`Signed in successfully`},authLogoutSuccess:{zh:`已退出登录`,en:`Signed out successfully`},authSetupSuccess:{zh:`认证已开启,当前标签页已自动登录,可直接继续使用`,en:`Authentication enabled. This tab is now signed in and ready to use.`},authPasswordUpdated:{zh:`管理员密码已更新`,en:`Admin password updated`},authEnabledSuccess:{zh:`认证已开启`,en:`Authentication enabled`},authDisabledSuccess:{zh:`认证已关闭`,en:`Authentication disabled`},authRetryStatus:{zh:`重试`,en:`Retry`},authStatusLoadFailed:{zh:`无法获取认证状态,请检查 UI 服务是否正常。`,en:`Failed to load authentication status. Check whether the UI server is healthy.`},...Me,authSecurityTitle:{zh:`Security`,en:`Security`},authSecurityDescription:{zh:`保持本机控制台默认简单;只有在你需要远程暴露时,再给 UI 加一层登录门。`,en:`Keep the local console simple by default, and add a lightweight login gate only when you expose the UI remotely.`},authSetupTitle:{zh:`开启轻量认证`,en:`Enable Lightweight Authentication`},authSetupDescription:{zh:`首次开启时设置单个管理员账号。完成后当前标签页会自动登录。`,en:`Create the single admin account the first time you enable authentication. This tab will be signed in automatically.`},authSetupAction:{zh:`开启认证`,en:`Enable Authentication`},authSettingUp:{zh:`开启中...`,en:`Enabling...`},authPasswordMismatch:{zh:`两次输入的密码不一致`,en:`Passwords do not match`},authPasswordMinLengthHint:{zh:`密码至少 8 个字符。当前版本只支持单管理员账号。`,en:`Passwords must be at least 8 characters. This version supports a single admin account only.`},authStatusLabel:{zh:`当前状态`,en:`Current Status`},authStatusConfiguredUser:{zh:`管理员账号:{username}`,en:`Admin account: {username}`},authUsernameFixedHelp:{zh:`首版不提供修改用户名和多用户管理;如需重新定义账号,请后续扩展这套边界。`,en:`This first version does not support renaming the admin account or managing multiple users.`},authEnableLabel:{zh:`要求登录`,en:`Require Login`},authEnableOnHelp:{zh:`已开启后,除健康检查与认证接口外,其余 UI API 和 WebSocket 都需要登录。`,en:`When enabled, every UI API and WebSocket except health and auth endpoints requires login.`},authEnableOffHelp:{zh:`当前保持即开即用。重新打开后,这个标签页会自动拿到新的登录会话。`,en:`The UI is currently open for local-style use. Re-enabling will issue a fresh signed-in session to this tab.`},authPasswordSectionTitle:{zh:`修改管理员密码`,en:`Change Admin Password`},authPasswordSectionDescription:{zh:`更新密码后,旧会话会立即失效;当前标签页会自动续成新会话(仅在认证开启时)。`,en:`Updating the password invalidates old sessions immediately. This tab gets a fresh session automatically while auth is enabled.`},authPasswordAction:{zh:`更新密码`,en:`Update Password`},authPasswordUpdating:{zh:`更新中...`,en:`Updating...`},authLogoutAction:{zh:`退出当前标签页`,en:`Sign Out This Tab`},authSessionMemoryNotice:{zh:`当前版本的会话只保存在服务端内存里。NextClaw UI 进程重启后,需要重新登录。`,en:`Sessions are stored only in server memory for now. You will need to sign in again after the NextClaw UI process restarts.`},dmScope:{zh:`私聊范围`,en:`DM Scope`},dmScopeHelp:{zh:`控制私聊会话如何隔离。`,en:`Control how direct-message sessions are isolated.`},defaultContextTokens:{zh:`默认上下文 Token`,en:`Default Context Tokens`},defaultContextTokensHelp:{zh:`当 Agent 未设置单独值时使用该上下文预算。`,en:`Input context budget for agents when no per-agent override is set.`},defaultEngine:{zh:`默认 Runtime`,en:`Default Runtime`},defaultEngineHelp:{zh:`默认使用的 Agent Runtime,例如 native、codex 或 claude。`,en:`Default agent runtime, for example native, codex, or claude.`},agentList:{zh:`Agent 列表`,en:`Agent List`},agentListHelp:{zh:`在同一个网关进程中运行多个固定角色 Agent。`,en:`Run multiple fixed-role agents in one gateway process.`},bindings:{zh:`绑定规则`,en:`Bindings`},bindingsHelp:{zh:`根据渠道 + 账号 + 对端将入站消息路由到目标 Agent。`,en:`Route inbound message by channel + account + peer to target agent.`},agentIdRequiredError:{zh:`agents.list[{index}].id 必填`,en:`agents.list[{index}].id is required`},duplicateAgentId:{zh:`重复的 agent id`,en:`Duplicate agent id`},bindingAgentIdRequired:{zh:`bindings[{index}].agentId 必填`,en:`bindings[{index}].agentId is required`},bindingAgentIdNotFound:{zh:`bindings[{index}].agentId 未在 agents.list/main 中找到`,en:`bindings[{index}].agentId not found in agents.list/main`},bindingChannelRequired:{zh:`bindings[{index}].match.channel 必填`,en:`bindings[{index}].match.channel is required`},bindingPeerIdRequired:{zh:`设置 peer.kind 时,bindings[{index}].match.peer.id 必填`,en:`bindings[{index}].match.peer.id is required when peer.kind is set`},agentIdPlaceholder:{zh:`Agent ID(例如 engineer)`,en:`Agent ID (e.g. engineer)`},workspaceOverridePlaceholder:{zh:`工作空间覆盖(可选)`,en:`Workspace override (optional)`},modelOverridePlaceholder:{zh:`模型覆盖(可选)`,en:`Model override (optional)`},defaultEnginePlaceholder:{zh:`默认 Runtime(如 native 或 codex)`,en:`Default runtime (e.g. native or codex)`},engineOverridePlaceholder:{zh:`Runtime 覆盖(可选)`,en:`Runtime override (optional)`},contextTokensPlaceholder:{zh:`上下文 tokens`,en:`Context tokens`},maxToolsPlaceholder:{zh:`最大工具次数`,en:`Max tools`},defaultAgent:{zh:`默认 Agent`,en:`Default agent`},addAgent:{zh:`添加 Agent`,en:`Add Agent`},targetAgentIdPlaceholder:{zh:`目标 Agent ID`,en:`Target agent ID`},channelPlaceholder:{zh:`渠道(例如 discord)`,en:`Channel (e.g. discord)`},accountIdOptionalPlaceholder:{zh:`账号 ID(可选)`,en:`Account ID (optional)`},peerKindOptional:{zh:`对端类型(可选)`,en:`Peer kind (optional)`},peerIdPlaceholder:{zh:`对端 ID(需先设置对端类型)`,en:`Peer ID (requires peer kind)`},addBinding:{zh:`添加绑定`,en:`Add Binding`},saveRuntimeSettings:{zh:`保存运行时设置`,en:`Save Runtime Settings`},secretsPageTitle:{zh:`密钥管理`,en:`Secrets Management`},secretsPageDescription:{zh:`集中管理 secrets.providers、secrets.defaults 与 secrets.refs。`,en:`Manage secrets.providers, secrets.defaults, and secrets.refs in one place.`},secretsEnabledHelp:{zh:"关闭后不会解析 `{{secret:*}}` 引用。",en:"When disabled, `{{secret:*}}` refs are not resolved."},defaultEnvProvider:{zh:`默认 Env 提供器`,en:`Default Env Provider`},defaultFileProvider:{zh:`默认 File 提供器`,en:`Default File Provider`},defaultExecProvider:{zh:`默认 Exec 提供器`,en:`Default Exec Provider`},secretProvidersTitle:{zh:`Secret Providers`,en:`Secret Providers`},secretProvidersDescription:{zh:`定义可复用的 secrets provider(env/file/exec)。`,en:`Define reusable secret providers (env/file/exec).`},providerAlias:{zh:`提供器别名`,en:`Provider Alias`},removeProvider:{zh:`移除提供器`,en:`Remove Provider`},envPrefix:{zh:`环境变量前缀`,en:`Environment Prefix`},secretFilePath:{zh:`Secrets 文件路径`,en:`Secrets File Path`},secretExecCommand:{zh:`执行命令`,en:`Exec Command`},secretExecArgs:{zh:`命令参数(每行一个)`,en:`Exec Args (one per line)`},secretExecCwd:{zh:`执行目录(可选)`,en:`Exec Working Directory (optional)`},secretExecTimeoutMs:{zh:`超时(毫秒)`,en:`Timeout (ms)`},addSecretProvider:{zh:`添加 Provider`,en:`Add Provider`},secretRefsTitle:{zh:`Secret Refs`,en:`Secret Refs`},secretRefsDescription:{zh:`把配置路径映射到 secret 引用(source/provider/id)。`,en:`Map config paths to secret refs (source/provider/id).`},secretConfigPath:{zh:`配置路径`,en:`Config Path`},secretId:{zh:`Secret ID`,en:`Secret ID`},secretProviderAlias:{zh:`Provider 别名`,en:`Provider Alias`},addSecretRef:{zh:`添加 Ref`,en:`Add Ref`},sessionsPageTitle:{zh:`会话管理`,en:`Sessions`},sessionsPageDescription:{zh:`管理会话:筛选、按渠道分组、查看历史、改标签/偏好模型、清空和删除。`,en:`Manage sessions: filter, group by channel, inspect history, edit metadata, clear, and delete.`},sessionsFiltersTitle:{zh:`筛选`,en:`Filters`},sessionsFiltersDescription:{zh:`按关键词、活跃窗口和分组方式筛选会话。`,en:`Filter sessions by query, activity window, and grouping mode.`},sessionsSearchPlaceholder:{zh:`搜索 key 或标签`,en:`Search session key or label`},sessionsActiveMinutesPlaceholder:{zh:`活跃分钟(0=不限)`,en:`Active minutes (0 = no limit)`},sessionsLimitPlaceholder:{zh:`展示上限`,en:`Limit`},sessionsGroupModeLabel:{zh:`分组方式`,en:`Grouping`},sessionsGroupModeAll:{zh:`不分组 / 全部`,en:`All (No grouping)`},sessionsGroupModeByChannel:{zh:`按渠道分组`,en:`Group by channel`},sessionsListTitle:{zh:`会话列表`,en:`Session list`},sessionsTotalLabel:{zh:`总数`,en:`Total`},sessionsCurrentLabel:{zh:`当前展示`,en:`Showing`},sessionsLoading:{zh:`加载会话中...`,en:`Loading sessions...`},sessionsEmpty:{zh:`暂无会话。`,en:`No sessions yet.`},sessionsKeyLabel:{zh:`键`,en:`Key`},sessionsChannelLabel:{zh:`渠道`,en:`Channel`},sessionsMessagesLabel:{zh:`消息数`,en:`Messages`},sessionsUpdatedLabel:{zh:`更新时间`,en:`Updated`},sessionsLastRoleLabel:{zh:`最后角色`,en:`Last Role`},sessionsLabelPlaceholder:{zh:`会话标签(可选)`,en:`Session label (optional)`},sessionsModelPlaceholder:{zh:`偏好模型(可选)`,en:`Preferred model (optional)`},sessionsShowHistory:{zh:`查看历史`,en:`View history`},sessionsHideHistory:{zh:`隐藏历史`,en:`Hide history`},sessionsSaveMeta:{zh:`保存元信息`,en:`Save metadata`},sessionsClearHistory:{zh:`清空历史`,en:`Clear history`},sessionsDeleteConfirm:{zh:`确认删除会话`,en:`Delete session`},sessionsHistoryTitle:{zh:`历史`,en:`History`},sessionsHistoryDescription:{zh:`最近 200 条消息(展示窗口)。`,en:`Latest 200 messages (display window).`},sessionsHistoryLoading:{zh:`加载历史中...`,en:`Loading history...`},sessionsApplyingChanges:{zh:`正在应用会话变更...`,en:`Applying session changes...`},sessionsUnknownChannel:{zh:`未知渠道`,en:`Unknown channel`},sessionsAllChannels:{zh:`全部渠道`,en:`All Channels`},sessionsRunStatusRunning:{zh:`运行中`,en:`Running`},sessionsRunStatusQueued:{zh:`排队中`,en:`Queued`},sessionsMetadata:{zh:`元信息`,en:`Metadata`},sessionsNoSelectionTitle:{zh:`未选择会话`,en:`No Session Selected`},sessionsNoSelectionDescription:{zh:`从左侧列表选择一个会话以查看聊天历史并配置其元信息。`,en:`Select a session from the list on the left to view its chat history and configure its metadata.`},..._e,...be,cronPageTitle:{zh:`定时任务`,en:`Cron Jobs`},cronPageDescription:{zh:`查看与删除定时任务,关注执行时间与状态。`,en:`View and delete cron jobs, track schedule and status.`},cronSearchPlaceholder:{zh:`搜索名称 / 消息 / ID`,en:`Search name / message / ID`},cronStatusLabel:{zh:`状态`,en:`Status`},cronStatusAll:{zh:`全部`,en:`All`},cronStatusEnabled:{zh:`仅启用`,en:`Enabled`},cronStatusDisabled:{zh:`仅禁用`,en:`Disabled`},cronTotalLabel:{zh:`总数`,en:`Total`},cronLoading:{zh:`加载定时任务中...`,en:`Loading cron jobs...`},cronEmpty:{zh:`暂无定时任务。`,en:`No cron jobs yet.`},cronScheduleLabel:{zh:`计划`,en:`Schedule`},cronDeliverTo:{zh:`投递到`,en:`Deliver to`},cronNextRun:{zh:`下次执行`,en:`Next run`},cronLastRun:{zh:`上次执行`,en:`Last run`},cronLastStatus:{zh:`上次状态`,en:`Last status`},cronDeleteConfirm:{zh:`确认删除定时任务`,en:`Delete cron job`},cronOneShot:{zh:`一次性`,en:`One-shot`},cronEnable:{zh:`启用`,en:`Enable`},cronDisable:{zh:`禁用`,en:`Disable`},cronRunNow:{zh:`立即执行`,en:`Run now`},cronEnableConfirm:{zh:`确认启用定时任务`,en:`Enable cron job`},cronDisableConfirm:{zh:`确认禁用定时任务`,en:`Disable cron job`},cronRunConfirm:{zh:`确认立即执行定时任务`,en:`Run cron job now`},cronRunForceConfirm:{zh:`任务已禁用,仍要立即执行`,en:`Cron job disabled. Force run now`},...Oe,...je,actionConfigure:{zh:`配置`,en:`Configure`},actionAddProvider:{zh:`添加提供商`,en:`Add Provider`},actionEnable:{zh:`启用`,en:`Enable`},configSaved:{zh:`配置已保存`,en:`Configuration saved`},configSavedApplying:{zh:`配置已保存,正在应用`,en:`Configuration saved, applying changes`},configSavedApplied:{zh:`配置已保存并已应用`,en:`Configuration saved and applied`},configSaveFailed:{zh:`保存配置失败`,en:`Failed to save configuration`},configReloaded:{zh:`配置已重载`,en:`Configuration reloaded`},configReloadFailed:{zh:`重载配置失败`,en:`Failed to reload configuration`},channelConfigApplying:{zh:`渠道配置正在应用`,en:`Channel configuration is applying`},channelConfigApplied:{zh:`渠道配置已应用`,en:`Channel configuration applied`},channelConfigApplyFailed:{zh:`渠道配置应用失败`,en:`Failed to apply channel configuration`},feishuVerifySuccess:{zh:`验证成功,请到飞书开放平台完成事件订阅与发布后再开始使用。`,en:`Verified. Please finish Feishu event subscription and app publishing before using.`},feishuVerifyFailed:{zh:`验证失败`,en:`Verification failed`},enterTag:{zh:`输入后按回车...`,en:`Type and press Enter...`},headerName:{zh:`Header 名称`,en:`Header Name`},headerValue:{zh:`Header 值`,en:`Header Value`},docBrowserTitle:{zh:`内嵌浏览器`,en:`Embedded Browser`},docBrowserSearchPlaceholder:{zh:`搜索,也可以输入文档地址直接打开`,en:`Search, or enter a doc URL to open`},docBrowserUrlPlaceholder:{zh:`输入文档路径,如 /guide/channels`,en:`Enter a doc path, e.g. /guide/channels`},docBrowserOpenExternal:{zh:`文档中心打开`,en:`Open in Docs`},docBrowserFloatMode:{zh:`悬浮窗口`,en:`Float Window`},docBrowserDockMode:{zh:`固定到侧栏`,en:`Dock to Sidebar`},docBrowserClose:{zh:`关闭`,en:`Close`},docBrowserHelp:{zh:`帮助文档`,en:`Help Docs`},docBrowserNewTab:{zh:`新建标签`,en:`New Tab`},docBrowserCloseTab:{zh:`关闭标签`,en:`Close Tab`},docBrowserTabUntitled:{zh:`未命名`,en:`Untitled`},...ke,...Ae,...ye};function Le(e,t=Z()){return $[e]?.[t]||$[e]?.en||e}export{l as _,Ce as a,Te as c,Y as d,h as f,s as g,o as h,Le as i,Ee as l,d as m,Pe as n,Z as o,p,Ie as r,we as s,Fe as t,ge as u};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/doc-browser-DYKpRqe-.js","assets/doc-browser-CoKIUCJj.js","assets/i18n-BnNAQpVM.js","assets/createLucideIcon-C_GFKVuW.js","assets/search-DZSNKEGp.js","assets/book-open-B4mOKdz8.js","assets/external-link-DP2IJ7AM.js","assets/plus-BptLViq1.js","assets/x-BjMO7v8q.js","assets/doc-browser-context-Dib9sS83.js","assets/model-config-D4myteLK.js","assets/api-DnPN4SyA.js","assets/provider-scoped-model-input-BLHImwI5.js","assets/select-RgeHgn_-.js","assets/es2015-DMSUl3fm.js","assets/folder-BPwc278w.js","assets/loader-circle-C6gg2m2a.js","assets/sparkles-CyDTgTM4.js","assets/skeleton-5Mg6vZHN.js","assets/use-config-CrsavfWZ.js","assets/config-hints-CPNzbMEp.js","assets/chat-page-CGHNhXaw.js","assets/chat-C0ZNZtS3.js","assets/dialog-D-I7ONHQ.js","assets/dist-DreLBS93.js","assets/popover-Dm_NQ3Cs.js","assets/tooltip-DQlSKhZ_.js","assets/theme-provider-CUppbOyN.js","assets/chunk-JZWAC4HX-BJer-fqD.js","assets/logos-BcELLmYh.js","assets/refresh-ccw-CeG203yU.js","assets/settings-DjvNMJde.js","assets/trash-2-C1cdqL6V.js","assets/doc-browser-CwgI7ipB.js","assets/use-viewport-layout-CytJAPWM.js","assets/logo-badge-uB4SwANR.js","assets/mcp-marketplace-page-CjrxT6wI.js","assets/use-infinite-scroll-loader-DZhv-rmv.js","assets/use-confirm-dialog-D1AnLFlc.js","assets/notice-card-DX_NEZTQ.js","assets/tag-chip-DGqz3TON.js","assets/play-DeNVUA5C.js","assets/marketplace-page-BCrS-jH6.js","assets/tabs-custom-C4P7g4vR.js","assets/search-config-C-6KpgRQ.js","assets/key-round-BQXmPSxD.js","assets/config-split-page-B3PRA_AV.js","assets/providers-list-DsBFslNi.js","assets/setting-row-vwm4XKv2.js","assets/status-dot-aQU9Mia4.js","assets/channels-list-page-Cm-Bbu6u.js","assets/hash-CvcvtMBq.js","assets/message-square-CLVODA23.js","assets/runtime-config-page-Bz9r68Rf.js","assets/rotate-cw-F7aThvYj.js","assets/save-7ztImRj7.js","assets/desktop-update-config-Dfh-3uma.js","assets/sessions-config-page-0KNW9QC_.js","assets/secrets-config-MiMElvpm.js","assets/remote-CQQykOYe.js","assets/app-manager-provider-M7TngYxx.js","assets/marketplace-page-DVrlpB68.js","assets/mcp-marketplace-page-pQ_A38fH.js"])))=>i.map(i=>d[i]);
2
+ import{_ as e,a as t,h as n,i as r,m as i,p as a,u as o}from"./i18n-BnNAQpVM.js";import{Gt as s,Mt as c,Nt as l,Pt as u,Rt as d,Wt as f,bt as p,ct as m,dt as h,f as g,ut as _,vt as v,yt as y}from"./api-DnPN4SyA.js";import{a as b,c as x,i as S,n as ee,o as te,r as C,s as w,t as T}from"./chunk-JZWAC4HX-BJer-fqD.js";import{b as ne,c as E,d as D,g as O,h as k,i as A,l as j,m as re,n as ie,o as ae,r as oe,s as M,t as se,u as ce,v as le,y as ue}from"./theme-provider-CUppbOyN.js";import{n as N}from"./search-DZSNKEGp.js";import{m as de,u as fe}from"./chat-C0ZNZtS3.js";import{t as pe}from"./book-open-B4mOKdz8.js";import{k as P,r as F}from"./select-RgeHgn_-.js";import{a as I,i as L,n as R,o as z,r as B,s as me,t as he}from"./app-navigation.config-B5YIdRju.js";import{t as ge}from"./key-round-BQXmPSxD.js";import{h as _e,i as ve,n as ye,r as be,t as xe}from"./app-manager-provider-M7TngYxx.js";import{t as Se}from"./settings-DjvNMJde.js";import{i as V,n as Ce}from"./doc-browser-context-Dib9sS83.js";import{n as H,r as we,t as Te}from"./doc-browser-CwgI7ipB.js";import{t as U}from"./use-viewport-layout-CytJAPWM.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ee=n((e=>{var t=s();e.createRoot=t.createRoot,e.hydrateRoot=t.hydrateRoot})),W=e(i(),1),De=Ee(),G=p(()=>({supported:!1,initialized:!1,busyAction:null,snapshot:null})),Oe=new class{constructor(){this.start=async()=>{let e=this.getDesktopApi();if(!e){this.markUnsupported();return}G.setState({supported:!0,initialized:!1,busyAction:`loading`});try{let t=await e.getPresenceState();G.setState({supported:!0,initialized:!0,busyAction:null,snapshot:t})}catch(e){G.setState({supported:!0,initialized:!0,busyAction:null}),u.error(`${r(`runtimePresenceLoadFailed`)}: ${this.getErrorMessage(e)}`)}},this.markUnsupported=()=>{G.setState({supported:!1,initialized:!0,busyAction:null,snapshot:null})},this.updatePreferences=async e=>{let t=this.getDesktopApi();if(!t)throw Error(r(`runtimePresenceLaunchAtLoginUnavailable`));G.setState({busyAction:`saving-preferences`});try{let n=await t.updatePresencePreferences(e);return G.setState({supported:!0,initialized:!0,snapshot:n}),u.success(r(`runtimePresenceSaved`)),n}catch(e){throw u.error(`${r(`runtimePresenceSaveFailed`)}: ${this.getErrorMessage(e)}`),e}finally{G.setState({busyAction:null})}},this.getDesktopApi=()=>typeof window>`u`?null:window.nextclawDesktop??null,this.getErrorMessage=e=>e instanceof Error?e.message:r(`error`)}},K=p(()=>({supported:!1,initialized:!1,busyAction:null,snapshot:null})),ke=new class{constructor(){this.unsubscribe=null,this.start=async()=>{let e=this.getDesktopApi();if(!e){K.setState({supported:!1,initialized:!0,snapshot:null});return}this.unsubscribe||=e.onUpdateStateChanged(e=>{K.setState({supported:!0,initialized:!0,snapshot:e})}),K.setState({supported:!0,initialized:!1});try{let t=await e.getUpdateState();K.setState({supported:!0,initialized:!0,snapshot:t})}catch(e){K.setState({supported:!0,initialized:!0}),u.error(`${r(`desktopUpdatesLoadFailed`)}: ${this.getErrorMessage(e)}`)}},this.stop=()=>{this.unsubscribe?.(),this.unsubscribe=null},this.checkForUpdates=async()=>{let e;try{e=await this.runSnapshotCommand(`checking`,r(`desktopUpdatesCheckFailed`),async e=>await e.checkForUpdates())}catch{return}if(e.status===`up-to-date`){u.success(r(`desktopUpdatesAlreadyLatest`));return}if(e.status===`update-available`){u.success(r(`desktopUpdatesAvailable`).replace(`{version}`,e.availableVersion??r(`desktopUpdatesUnknownVersion`)));return}if(e.status===`downloaded`){u.success(r(`desktopUpdatesReadyToApply`));return}e.status===`failed`&&e.errorMessage&&u.error(e.errorMessage)},this.downloadUpdate=async()=>{let e;try{e=await this.runSnapshotCommand(`downloading`,r(`desktopUpdatesDownloadFailed`),async e=>await e.downloadUpdate())}catch{return}e.status===`downloaded`&&u.success(r(`desktopUpdatesReadyToApply`))},this.applyDownloadedUpdate=async()=>{try{await this.runSnapshotCommand(`applying`,r(`desktopUpdatesApplyFailed`),async e=>await e.applyDownloadedUpdate())}catch{return}},this.updatePreferences=async e=>{try{await this.runSnapshotCommand(`saving-preferences`,r(`desktopUpdatesPreferencesFailed`),async t=>await t.updatePreferences(e))}catch{return}},this.updateChannel=async e=>{if(K.getState().snapshot?.channel===e)return;let t;try{t=await this.runSnapshotCommand(`switching-channel`,r(`desktopUpdatesChannelChangeFailed`),async t=>await t.updateChannel(e))}catch{return}if(t.status===`update-available`&&t.availableVersion){u.success(r(`desktopUpdatesChannelChangedWithUpdate`).replace(`{channel}`,this.getChannelLabel(e)).replace(`{version}`,t.availableVersion));return}u.success(r(`desktopUpdatesChannelChanged`).replace(`{channel}`,this.getChannelLabel(e)))},this.runSnapshotCommand=async(e,t,n)=>{let i=this.getDesktopApi();if(!i)throw Error(r(`desktopUpdatesDesktopOnlyDescription`));K.setState({busyAction:e});try{let e=await n(i);return K.setState({snapshot:e}),e}catch(e){throw u.error(`${t}: ${this.getErrorMessage(e)}`),e}finally{K.setState({busyAction:null})}},this.getDesktopApi=()=>typeof window>`u`?null:window.nextclawDesktop??null,this.getErrorMessage=e=>e instanceof Error?e.message:r(`error`),this.getChannelLabel=e=>r(e===`beta`?`desktopUpdatesChannelBeta`:`desktopUpdatesChannelStable`)}};function q(){let{language:e,setLanguage:n}=H();return{currentLanguage:e,currentLanguageLabel:t.find(t=>t.value===e)?.label??e,languageOptions:t,selectLanguage:(0,W.useCallback)(t=>{e!==t&&(n(t),window.location.reload())},[e,n])}}var J=a();function Ae(){let{currentLanguage:e,currentLanguageLabel:t,languageOptions:n,selectLanguage:i}=q();return(0,J.jsxs)(`section`,{className:`mx-auto w-full max-w-3xl space-y-4`,children:[(0,J.jsx)(`div`,{className:`rounded-3xl border border-gray-200/80 bg-white p-5 shadow-card`,children:(0,J.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,J.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl bg-gray-100 text-gray-600`,children:(0,J.jsx)(O,{className:`h-4 w-4`})}),(0,J.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,J.jsx)(`h2`,{className:`text-base font-semibold text-gray-900`,children:r(`language`)}),(0,J.jsx)(`p`,{className:`mt-1 text-sm text-gray-500`,children:t})]})]})}),(0,J.jsx)(`div`,{className:`overflow-hidden rounded-3xl border border-gray-200/80 bg-white shadow-card`,children:n.map(t=>{let n=t.value===e;return(0,J.jsxs)(`button`,{type:`button`,onClick:()=>i(t.value),className:o(`flex w-full items-center justify-between gap-3 border-b border-gray-100 px-5 py-4 text-left text-sm transition-colors last:border-b-0`,n?`bg-gray-50 text-gray-900`:`text-gray-700 hover:bg-gray-50/70`),"aria-current":n?`true`:void 0,children:[(0,J.jsx)(`span`,{className:`font-medium`,children:t.label}),n?(0,J.jsx)(P,{className:`h-4 w-4 text-gray-700`}):null]},t.value)})})]})}function je({mode:e}){let t=ye(),n=V(),i=_e(),{currentLanguage:a,currentLanguageLabel:s,languageOptions:c,selectLanguage:l}=q(),{theme:u,setTheme:d}=ie(),f=e===`settings`,p=r(D.find(e=>e.value===u)?.labelKey??`themeWarm`),m=i.data?.account.email?.trim(),h=!!i.data?.account.loggedIn,g=e=>{u!==e&&d(e)},_=[{target:`/chat`,label:r(`chat`),icon:k},{target:`/chat/cron`,label:r(`cron`),icon:ne},{target:`/chat/skills`,label:r(`marketplaceFilterSkills`),icon:le},{target:`/agents`,label:r(`agentsPageTitle`),icon:ue}],v=B(r),y=f?v:_,b=f?`compact`:`default`;return(0,J.jsxs)(`aside`,{className:`w-[240px] shrink-0 flex h-full min-h-0 flex-col overflow-hidden bg-secondary px-4 py-6`,children:[f?(0,J.jsx)(`div`,{className:`shrink-0 px-2 pb-3`,children:(0,J.jsxs)(`div`,{className:`flex items-center gap-2 px-1 py-1`,"data-testid":`settings-sidebar-header`,children:[(0,J.jsxs)(C,{to:`/chat`,className:`group inline-flex min-w-0 items-center gap-1.5 rounded-lg px-1 py-1 text-[12px] font-medium text-gray-500 transition-colors hover:bg-gray-200/60 hover:text-gray-900`,children:[(0,J.jsx)(N,{className:`h-3.5 w-3.5 shrink-0 text-gray-400 group-hover:text-gray-700`}),(0,J.jsx)(`span`,{className:`truncate`,children:r(`backToMain`)})]}),(0,J.jsx)(`span`,{className:`h-4 w-px shrink-0 bg-[#dddfe6]`,"aria-hidden":`true`}),(0,J.jsx)(`h1`,{className:`truncate text-[15px] font-semibold tracking-[-0.01em] text-gray-800`,children:r(`settings`)})]})}):(0,J.jsx)(`div`,{className:`shrink-0 px-2 pb-8`,children:(0,J.jsx)(ce,{className:`flex items-center gap-2.5 cursor-pointer`})}),(0,J.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,J.jsx)(`nav`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto pr-1`,children:(0,J.jsx)(`ul`,{className:o(f?`space-y-0.5 pb-3`:`space-y-1 pb-4`),children:y.map(e=>(0,J.jsx)(`li`,{children:(0,J.jsx)(E,{to:e.target,label:e.label,icon:e.icon,density:b})},e.target))})}),(0,J.jsxs)(`div`,{className:o(`shrink-0 border-t border-[#dde0ea] bg-secondary`,f?`mt-2 pt-3`:`mt-3 pt-3`),children:[f?(0,J.jsx)(M,{onClick:()=>t.accountManager.openAccountPanel(),icon:ge,label:r(`remoteAccountEntryManage`),density:`compact`,className:`mb-1.5`,trailing:h?m||r(`remoteAccountEntryConnected`):r(`remoteAccountEntryDisconnected`),trailingClassName:`max-w-[92px] truncate text-right`,testId:`settings-sidebar-account-entry`,trailingTestId:`settings-sidebar-account-status`}):null,e===`main`&&(0,J.jsx)(`div`,{className:`mb-2`,children:(0,J.jsx)(E,{to:`/settings`,label:r(`settings`),icon:Se})}),(0,J.jsx)(`div`,{className:`mb-2`,children:(0,J.jsx)(j,{value:u,onValueChange:e=>g(e),icon:re,label:r(`theme`),valueLabel:p,density:b,children:D.map(e=>(0,J.jsx)(F,{value:e.value,className:`text-xs`,children:r(e.labelKey)},e.value))})}),(0,J.jsx)(`div`,{className:`mb-2`,children:(0,J.jsx)(j,{value:a,onValueChange:e=>l(e),icon:O,label:r(`language`),valueLabel:s,density:b,children:c.map(e=>(0,J.jsx)(F,{value:e.value,className:`text-xs`,children:e.label},e.value))})}),(0,J.jsx)(M,{onClick:()=>n.open(void 0,{kind:`docs`,newTab:!0,title:`Docs`}),icon:pe,label:r(`docBrowserHelp`),density:b})]})]})]})}var Y=(0,W.lazy)(async()=>({default:(await f(async()=>{let{DocBrowser:e}=await import(`./doc-browser-DYKpRqe-.js`);return{DocBrowser:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))).DocBrowser}));function Me({pathname:e,isDocBrowserOpen:t,docBrowserMode:n,children:r}){let i=I(e);return(0,J.jsxs)(`div`,{className:`h-screen flex bg-background font-sans text-foreground`,children:[!i&&(0,J.jsx)(je,{mode:`settings`}),(0,J.jsxs)(`div`,{className:`flex-1 flex min-w-0 overflow-hidden relative`,children:[(0,J.jsx)(`div`,{className:`flex-1 flex flex-col min-w-0 overflow-hidden`,children:i?(0,J.jsx)(`div`,{className:`flex-1 h-full overflow-hidden`,children:r}):(0,J.jsx)(`main`,{className:`flex-1 overflow-auto p-8 pb-16 custom-scrollbar`,children:(0,J.jsx)(`div`,{className:`mx-auto h-full max-w-6xl animate-fade-in`,children:r})})}),t&&n===`docked`?(0,J.jsx)(W.Suspense,{fallback:null,children:(0,J.jsx)(Y,{})}):null]}),t&&n===`floating`?(0,J.jsx)(W.Suspense,{fallback:null,children:(0,J.jsx)(Y,{})}):null]})}function Ne(e,t){if(t===`/settings`)return z(e);let n=e.toLowerCase(),r=t.toLowerCase();return n===r||n.startsWith(`${r}/`)}function Pe(){let{pathname:e}=w(),t=he(r);return(0,J.jsx)(`nav`,{"data-testid":`mobile-bottom-nav`,"aria-label":r(`settings`),className:`shrink-0 border-t border-gray-200/80 bg-white/95 backdrop-blur-sm`,style:{paddingBottom:`calc(env(safe-area-inset-bottom, 0px) + 0.25rem)`},children:(0,J.jsx)(`ul`,{className:`grid grid-cols-4 gap-1 px-2 pt-1`,children:t.map(t=>{let n=Ne(e,t.target);return(0,J.jsx)(`li`,{children:(0,J.jsx)(ee,{to:t.target,"aria-current":n?`page`:void 0,className:o(`group flex min-h-[2.875rem] items-center justify-center rounded-xl px-1 py-1 text-[10px] font-medium transition-colors`,n?`text-gray-900`:`text-gray-500 hover:text-gray-800`),children:(0,J.jsxs)(`span`,{"data-testid":n?`mobile-nav-active-indicator`:void 0,className:o(`inline-flex max-w-full min-w-14 flex-col items-center justify-center gap-0.5 rounded-xl px-2 py-1 transition-colors`,n?`bg-gray-100`:`bg-transparent group-hover:bg-gray-50`),children:[(0,J.jsx)(t.icon,{className:o(`h-3.5 w-3.5`,n?`text-gray-900`:`text-gray-400`)}),(0,J.jsx)(`span`,{className:`max-w-full truncate`,children:t.label})]})})},t.target)})})})}function Fe(){let e=x(),{pathname:t}=w(),n=me(t,r);return(0,J.jsx)(`header`,{"data-testid":`mobile-topbar`,className:`shrink-0 border-b border-gray-200/80 bg-white/95 backdrop-blur-sm`,style:{paddingTop:`calc(env(safe-area-inset-top, 0px) + 0.25rem)`},children:(0,J.jsxs)(`div`,{className:`flex min-h-[2.75rem] items-center gap-2 px-3 py-1.5`,children:[n.backTarget?(0,J.jsx)(`button`,{type:`button`,onClick:()=>e(n.backTarget),className:`inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-full border border-gray-200 text-gray-600 transition-colors hover:bg-gray-50 hover:text-gray-900`,"aria-label":n.backLabel??r(`backToMain`),children:(0,J.jsx)(N,{className:`h-4 w-4`})}):null,(0,J.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,J.jsx)(`h1`,{className:`truncate text-center text-[15px] font-semibold text-gray-900`,children:n.title})}),n.backTarget?(0,J.jsx)(`div`,{className:`h-8 w-8 shrink-0`,"aria-hidden":`true`}):null]})})}var Ie=(0,W.lazy)(async()=>({default:(await f(async()=>{let{DocBrowser:e}=await import(`./doc-browser-DYKpRqe-.js`);return{DocBrowser:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9]))).DocBrowser}));function Le({pathname:e,isDocBrowserOpen:t,children:n}){let r=I(e),i=!L(e),a=!L(e);return(0,J.jsxs)(`div`,{className:`flex h-screen flex-col bg-background font-sans text-foreground`,children:[i?(0,J.jsx)(Fe,{}):null,(0,J.jsx)(`div`,{className:`relative flex-1 min-h-0 overflow-hidden`,children:r?(0,J.jsx)(`div`,{className:`h-full min-h-0 overflow-hidden`,children:n}):(0,J.jsx)(`main`,{className:`h-full overflow-auto px-4 py-4 custom-scrollbar`,children:(0,J.jsx)(`div`,{className:`mx-auto max-w-3xl animate-fade-in`,children:n})})}),a?(0,J.jsx)(Pe,{}):null,t?(0,J.jsx)(W.Suspense,{fallback:null,children:(0,J.jsx)(Ie,{displayMode:`fullscreen`})}):null]})}function Re(){let e=R(r);return(0,J.jsx)(`div`,{"data-testid":`mobile-settings-shell`,className:`space-y-3 pb-4`,children:e.map(e=>(0,J.jsxs)(C,{to:e.target,className:({isActive:e})=>o(`flex items-center gap-3 rounded-2xl border border-gray-200/80 bg-white px-4 py-4 shadow-card transition-colors`,e?`border-gray-300 bg-gray-50`:`hover:border-gray-300 hover:bg-gray-50/70`),children:[(0,J.jsx)(`div`,{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-2xl bg-gray-100 text-gray-600`,children:(0,J.jsx)(e.icon,{className:`h-4 w-4`})}),(0,J.jsx)(`div`,{className:`min-w-0`,children:(0,J.jsx)(`p`,{className:`truncate text-sm font-semibold text-gray-900`,children:e.label})})]},e.target))})}function ze(){let{pathname:e}=w(),t=x();return L(e)?(0,J.jsx)(de,{layoutMode:`mobile`,onBackToList:()=>t(`/chat`)}):(0,J.jsx)(fe,{variant:`mobile`})}var Be=`NextClaw`,Ve=[{prefix:`/marketplace/mcp`,key:`marketplaceMcpPageTitle`},{prefix:`/marketplace/plugins`,key:`marketplacePluginsPageTitle`},{prefix:`/marketplace/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/marketplace`,key:`marketplace`},{prefix:`/skills`,key:`marketplaceSkillsPageTitle`},{prefix:`/cron`,key:`cronPageTitle`},{prefix:`/agents`,key:`agentsPageTitle`},{prefix:`/chat`,key:`chat`},{prefix:`/model`,key:`modelPageTitle`},{prefix:`/search`,key:`searchPageTitle`},{prefix:`/providers`,key:`providersPageTitle`},{prefix:`/channels`,key:`channelsPageTitle`},{prefix:`/runtime`,key:`runtimePageTitle`},{prefix:`/updates`,key:`desktopUpdatesPageTitle`},{prefix:`/remote`,key:`remotePageTitle`},{prefix:`/security`,key:`authSecurityTitle`},{prefix:`/sessions`,key:`sessionsPageTitle`},{prefix:`/secrets`,key:`secretsPageTitle`}];function He(e,t){return e===t||e.startsWith(`${t}/`)}function Ue(e){let t=e.toLowerCase();for(let{prefix:e,key:n}of Ve)if(He(t,e))return r(n);return r(`settings`)}function We(e){return`${Be} - ${Ue(e)}`}function Ge({children:e}){let{isOpen:t,mode:n}=V();we();let{pathname:r}=w(),{language:i}=H(),{isMobile:a}=U();return(0,W.useEffect)(()=>{document.title=We(r)},[r,i]),a?(0,J.jsx)(Le,{pathname:r,isDocBrowserOpen:t,children:e}):(0,J.jsx)(Me,{pathname:r,isDocBrowserOpen:t,docBrowserMode:n,children:e})}function Ke({children:e}){return(0,J.jsx)(Ce,{children:(0,J.jsx)(Ge,{children:e})})}function qe(){let{isMobile:e}=U();return e?(0,J.jsx)(Re,{}):(0,J.jsx)(S,{to:`/model`,replace:!0})}function Je(e){let t=e.trim().toLowerCase();return t?!(t.startsWith(`plugins`)||t.startsWith(`skills`)):!0}function Ye(e,t){t.startsWith(`plugins`)&&(e?.invalidateQueries({queryKey:[`ncp-session-types`]}),e?.invalidateQueries({queryKey:[`marketplace-installed`,`plugin`]}),e?.invalidateQueries({queryKey:[`marketplace-items`]})),t.startsWith(`mcp`)&&(e?.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e?.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}))}function Xe(e,t){e&&Je(t)&&e.invalidateQueries({queryKey:[`config`]}),Ye(e,t)}function Ze(e){let{queryClient:t,shouldResyncSessions:n,clearShouldResyncSessions:r,markShouldResyncSessions:i,event:a}=e;if(a.type===`connection.open`){y.handleConnectionRestored(),n&&(r(),t?.invalidateQueries({queryKey:[`ncp-sessions`]}));return}if(a.type===`connection.close`||a.type===`connection.error`){y.handleConnectionInterrupted(a.type===`connection.error`?a.payload?.message:null),i();return}if(a.type===`config.updated`){Xe(t,typeof a.payload?.path==`string`?a.payload.path:``);return}if(a.type===`session.run-status`||a.type===`session.summary.upsert`||a.type===`session.summary.delete`){g(t,a);return}a.type===`error`&&console.error(`Realtime transport error:`,a.payload.message)}function Qe(e){let t=(0,W.useRef)(!1);(0,W.useEffect)(()=>m.subscribe(n=>Ze({queryClient:e,shouldResyncSessions:t.current,clearShouldResyncSessions:()=>{t.current=!1},markShouldResyncSessions:()=>{t.current=!0},event:n})),[e])}var $e=(0,W.lazy)(async()=>({default:(await f(async()=>{let{ModelConfig:e}=await import(`./model-config-D4myteLK.js`);return{ModelConfig:e}},__vite__mapDeps([10,2,11,5,3,12,13,14,15,16,17,9,18,19,20]))).ModelConfig})),X=(0,W.lazy)(async()=>({default:(await f(async()=>{let{ChatPage:e}=await import(`./chat-page-CGHNhXaw.js`);return{ChatPage:e}},__vite__mapDeps([21,2,11,13,14,3,22,23,24,8,25,26,27,28,19,4,5,6,15,29,16,7,30,31,17,32,33,1,9,34,35,18,12,36,37,38,39,40,41,42,43]))).ChatPage})),et=(0,W.lazy)(async()=>({default:(await f(async()=>{let{SearchConfig:e}=await import(`./search-config-C-6KpgRQ.js`);return{SearchConfig:e}},__vite__mapDeps([44,2,11,13,14,3,4,6,45,34,46,19]))).SearchConfig})),tt=(0,W.lazy)(async()=>({default:(await f(async()=>{let{ProvidersList:e}=await import(`./providers-list-DsBFslNi.js`);return{ProvidersList:e}},__vite__mapDeps([47,2,11,13,14,3,25,24,4,45,7,32,8,34,35,46,48,49,43,19,20]))).ProvidersList})),nt=(0,W.lazy)(async()=>({default:(await f(async()=>{let{ChannelsList:e}=await import(`./channels-list-page-Cm-Bbu6u.js`);return{ChannelsList:e}},__vite__mapDeps([50,2,11,13,14,3,4,5,6,29,51,45,16,52,31,8,34,35,46,49,43,40,19,20]))).ChannelsList})),rt=(0,W.lazy)(async()=>({default:(await f(async()=>{let{RuntimeConfig:e}=await import(`./runtime-config-page-Bz9r68Rf.js`);return{RuntimeConfig:e}},__vite__mapDeps([53,2,11,13,14,3,27,25,24,8,28,19,16,41,7,54,55,32,39,48,20]))).RuntimeConfig})),Z=(0,W.lazy)(async()=>({default:(await f(async()=>{let{DesktopUpdateConfig:e}=await import(`./desktop-update-config-Dfh-3uma.js`);return{DesktopUpdateConfig:e}},__vite__mapDeps([56,2,11,13,14,3,27,25,24,8,28,19,6,54]))).DesktopUpdateConfig})),it=(0,W.lazy)(async()=>({default:(await f(async()=>{let{SecurityConfig:e}=await import(`./api-DnPN4SyA.js`).then(e=>e.lt);return{SecurityConfig:e}},__vite__mapDeps([11,2]))).SecurityConfig})),at=(0,W.lazy)(async()=>({default:(await f(async()=>{let{SessionsConfig:e}=await import(`./sessions-config-page-0KNW9QC_.js`);return{SessionsConfig:e}},__vite__mapDeps([57,2,11,13,14,3,22,23,24,8,25,26,27,28,19,4,5,6,15,29,16,7,30,31,17,32,33,1,9,34,35,18,51,46,38]))).SessionsConfig})),ot=(0,W.lazy)(async()=>({default:(await f(async()=>{let{SecretsConfig:e}=await import(`./secrets-config-MiMElvpm.js`);return{SecretsConfig:e}},__vite__mapDeps([58,2,11,13,14,3,7,55,32,19]))).SecretsConfig})),st=(0,W.lazy)(async()=>({default:(await f(async()=>{let{RemoteAccessPage:e}=await import(`./remote-CQQykOYe.js`);return{RemoteAccessPage:e}},__vite__mapDeps([59,60,2,11,23,14,24,8,3,45,30,39,49]))).RemoteAccessPage})),ct=(0,W.lazy)(async()=>({default:(await f(async()=>{let{MarketplacePage:e}=await import(`./marketplace-page-DVrlpB68.js`);return{MarketplacePage:e}},__vite__mapDeps([61,42,2,11,26,13,14,3,24,37,18,28,33,1,4,5,6,7,8,9,38,23,43]))).MarketplacePage})),lt=(0,W.lazy)(async()=>({default:(await f(async()=>{let{McpMarketplacePage:e}=await import(`./mcp-marketplace-page-pQ_A38fH.js`);return{McpMarketplacePage:e}},__vite__mapDeps([62,36,2,11,23,14,24,8,3,37,13,18,17,33,1,4,5,6,7,9,38,39,40]))).McpMarketplacePage}));function ut(){return(0,J.jsx)(`div`,{className:`h-full w-full animate-pulse rounded-2xl border border-border/40 bg-card/40`})}function dt({children:e}){return(0,J.jsx)(W.Suspense,{fallback:(0,J.jsx)(ut,{}),children:e})}function Q(e){return(0,J.jsx)(dt,{children:e})}var ft=[{path:`/chat/skills`,redirectTo:`/skills`},{path:`/chat/cron`,redirectTo:`/cron`},{path:`/chat/agents`,redirectTo:`/agents`},{path:`/chat/:sessionId?`,element:Q((0,J.jsx)(X,{view:`chat`}))},{path:`/agents`,element:Q((0,J.jsx)(X,{view:`agents`}))},{path:`/skills`,element:Q((0,J.jsx)(X,{view:`skills`}))},{path:`/cron`,element:Q((0,J.jsx)(X,{view:`cron`}))},{path:`/model`,element:Q((0,J.jsx)($e,{}))},{path:`/search`,element:Q((0,J.jsx)(et,{}))},{path:`/providers`,element:Q((0,J.jsx)(tt,{}))},{path:`/channels`,element:Q((0,J.jsx)(nt,{}))},{path:`/runtime`,element:Q((0,J.jsx)(rt,{}))},{path:`/updates`,element:Q((0,J.jsx)(Z,{}))},{path:`/remote`,element:Q((0,J.jsx)(st,{}))},{path:`/security`,element:Q((0,J.jsx)(it,{}))},{path:`/sessions`,element:Q((0,J.jsx)(at,{}))},{path:`/secrets`,element:Q((0,J.jsx)(ot,{}))},{path:`/language`,element:(0,J.jsx)(Ae,{})},{path:`/settings`,element:(0,J.jsx)(qe,{})},{path:`/marketplace/skills`,redirectTo:`/skills`},{path:`/marketplace`,redirectTo:`/marketplace/plugins`},{path:`/marketplace/mcp`,element:Q((0,J.jsx)(lt,{}))},{path:`/marketplace/:type`,element:Q((0,J.jsx)(ct,{}))},{path:`/`,redirectTo:`/chat`},{path:`*`,redirectTo:`/chat`}];function pt(e){return`redirectTo`in e?(0,J.jsx)(b,{path:e.path,element:(0,J.jsx)(S,{to:e.redirectTo,replace:!0})},e.path):(0,J.jsx)(b,{path:e.path,element:e.element},e.path)}function mt(){return(0,J.jsx)(te,{children:ft.map(pt)})}function $(){return Qe(c),v(),(0,J.jsxs)(xe,{children:[(0,J.jsx)(Ke,{children:(0,J.jsx)(mt,{})}),(0,J.jsx)(ve,{})]})}function ht(){let e=h(),t=e.isError&&_(e.error);return e.isLoading&&!e.isError||t||e.isError?(0,J.jsx)($,{}):e.data?.enabled&&!e.data.authenticated?(0,J.jsx)(be,{username:e.data.username}):(0,J.jsx)($,{})}function gt(){return(0,W.useEffect)(()=>{oe()},[]),(0,J.jsxs)(d,{client:c,children:[(0,J.jsx)(ht,{}),(0,J.jsx)(A,{}),(0,J.jsx)(ae,{}),(0,J.jsx)(l,{position:`top-right`,richColors:!0})]})}(0,De.createRoot)(document.getElementById(`root`)).render((0,J.jsx)(W.StrictMode,{children:(0,J.jsx)(se,{children:(0,J.jsx)(Te,{children:(0,J.jsx)(T,{children:(0,J.jsx)(gt,{})})})})}));export{G as a,Oe as i,ke as n,K as r,ze as t};
@@ -0,0 +1 @@
1
+ *,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-style:solid;border-width:0;border-color:hsl(var(--gray-200))}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:hsl(var(--gray-400))}textarea::-moz-placeholder{opacity:1;color:hsl(var(--gray-400))}input::placeholder,textarea::placeholder{opacity:1;color:hsl(var(--gray-400))}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--brand-50:94 20% 95%;--brand-100:94 20% 90%;--brand-200:94 18% 80%;--brand-300:94 16% 65%;--brand-400:94 16% 50%;--brand-500:94 13% 37%;--brand-600:94 13% 30%;--brand-700:94 15% 25%;--brand-800:94 20% 18%;--brand-900:94 25% 12%;--gray-50:45 25% 97%;--gray-100:45 14% 94%;--gray-200:45 14% 88%;--gray-300:45 10% 80%;--gray-400:45 10% 60%;--gray-500:45 10% 50%;--gray-600:45 3% 39%;--gray-700:45 5% 25%;--gray-800:45 5% 20%;--gray-900:45 5% 12%;--background:var(--gray-50);--background-secondary:var(--gray-100);--background-tertiary:var(--gray-200);--foreground:var(--gray-800);--foreground-secondary:var(--gray-700);--foreground-tertiary:var(--gray-500);--foreground-muted:var(--gray-400);--primary:var(--brand-500);--primary-hover:var(--brand-600);--primary-active:var(--brand-700);--primary-foreground:0 0% 100%;--secondary:var(--gray-100);--secondary-hover:var(--gray-200);--secondary-foreground:var(--gray-800);--accent:var(--brand-50);--accent-foreground:var(--brand-700);--muted:var(--gray-100);--muted-foreground:var(--gray-500);--destructive:0 84% 60%;--destructive-foreground:0 0% 98%;--success:142 76% 36%;--success-foreground:0 0% 100%;--warning:38 92% 50%;--warning-foreground:0 0% 100%;--card:0 0% 100%;--card-foreground:var(--gray-800);--card-border:var(--gray-200);--popover:0 0% 100%;--popover-foreground:var(--gray-800);--border:var(--gray-200);--border-hover:var(--gray-300);--border-active:var(--brand-500);--input:0 0% 100%;--input-border:var(--gray-200);--input-focus:var(--brand-500);--ring:var(--brand-500);--ring-offset:var(--gray-50);--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:20px;--radius-3xl:24px;--radius-full:9999px;--shadow-xs:0 1px 2px 0 #1e140a0a;--shadow-sm:0 1px 3px 0 #1e140a0f, 0 1px 2px -1px #1e140a0a;--shadow-md:0 4px 6px -1px #1e140a0f, 0 2px 4px -2px #1e140a0a;--shadow-lg:0 10px 15px -3px #1e140a0f, 0 4px 6px -4px #1e140a0a;--shadow-xl:0 20px 25px -5px #1e140a14, 0 8px 10px -6px #1e140a0a;--shadow-2xl:0 25px 50px -12px #1e140a26;--shadow-card:0 0 8px 0 #0000000a;--shadow-card-hover:0 0 16px 0 #0000000f;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:18px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--text-4xl:36px;--text-5xl:48px;--font-normal:400;--font-medium:500;--font-semibold:600;--font-bold:700;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--tracking-tight:-.025em;--tracking-normal:0;--tracking-wide:.025em;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--z-dropdown:100;--z-sticky:200;--z-fixed:300;--z-modal-backdrop:400;--z-modal:500;--z-popover:600;--z-tooltip:700}:root[data-theme=cool]{--brand-50:214 100% 97%;--brand-100:214 95% 93%;--brand-200:213 97% 87%;--brand-300:212 96% 78%;--brand-400:213 94% 68%;--brand-500:217 91% 60%;--brand-600:221 83% 53%;--brand-700:224 76% 48%;--brand-800:226 71% 40%;--brand-900:224 64% 33%;--gray-50:210 20% 98%;--gray-100:220 14% 96%;--gray-200:220 13% 91%;--gray-300:216 12% 84%;--gray-400:218 11% 65%;--gray-500:220 9% 46%;--gray-600:215 14% 34%;--gray-700:217 19% 27%;--gray-800:220 26% 18%;--gray-900:224 39% 11%;--background:var(--gray-50);--background-secondary:var(--gray-100);--background-tertiary:var(--gray-200);--foreground:var(--gray-800);--foreground-secondary:var(--gray-700);--foreground-tertiary:var(--gray-500);--foreground-muted:var(--gray-400);--primary:var(--brand-500);--primary-hover:var(--brand-600);--primary-active:var(--brand-700);--secondary:var(--gray-100);--secondary-hover:var(--gray-200);--secondary-foreground:var(--gray-800);--accent:var(--brand-50);--accent-foreground:var(--brand-700);--muted:var(--gray-100);--muted-foreground:var(--gray-500);--card:0 0% 100%;--card-foreground:var(--gray-800);--card-border:var(--gray-200);--popover:0 0% 100%;--popover-foreground:var(--gray-800);--border:var(--gray-200);--border-hover:var(--gray-300);--border-active:var(--brand-500);--input:0 0% 100%;--input-border:var(--gray-200);--input-focus:var(--brand-500);--ring:var(--brand-500);--ring-offset:var(--gray-50);--shadow-xs:0 1px 2px 0 #0f172a0a;--shadow-sm:0 1px 3px 0 #0f172a0f, 0 1px 2px -1px #0f172a0a;--shadow-md:0 4px 6px -1px #0f172a0f, 0 2px 4px -2px #0f172a0a;--shadow-lg:0 10px 15px -3px #0f172a0f, 0 4px 6px -4px #0f172a0a;--shadow-xl:0 20px 25px -5px #0f172a14, 0 8px 10px -6px #0f172a0a;--shadow-2xl:0 25px 50px -12px #0f172a24}:root{--radius:.75rem}*{border-color:hsl(var(--border))}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{background-color:hsl(var(--background));color:hsl(var(--foreground));font-family:var(--font-sans);overflow:hidden}*{scrollbar-width:thin;scrollbar-color:hsl(var(--gray-300)) transparent}.\!container{width:100%!important}.container{width:100%}@media (width>=640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (width>=768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (width>=1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (width>=1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (width>=1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-bottom-10{bottom:-2.5rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.bottom-full{bottom:100%}.left-0{left:0}.left-3{left:.75rem}.left-4{left:1rem}.left-8{left:2rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-7{right:1.75rem}.top-0{top:0}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-5{top:1.25rem}.top-\[50\%\]{top:50%}.isolate{isolation:isolate}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[70\]{z-index:70}.z-\[9999\]{z-index:9999}.z-\[var\(--z-popover\,50\)\]{z-index:var(--z-popover,50)}.z-\[var\(--z-tooltip\)\]{z-index:var(--z-tooltip)}.-m-32{margin:-8rem}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-\[2px\]{margin-left:2px;margin-right:2px}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mb-0{margin-bottom:0}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mr-2{margin-right:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-\[1px\]{margin-top:1px}.mt-auto{margin-top:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-square{aspect-ratio:1}.h-0{height:0}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-36{height:9rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[1\.125rem\]{height:1.125rem}.h-\[100dvh\]{height:100dvh}.h-\[112px\]{height:112px}.h-\[17px\]{height:17px}.h-\[180px\]{height:180px}.h-\[18px\]{height:18px}.h-\[22px\]{height:22px}.h-\[2px\]{height:2px}.h-\[400px\]{height:400px}.h-\[500px\]{height:500px}.h-\[84px\]{height:84px}.h-\[calc\(100vh-80px\)\]{height:calc(100vh - 80px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-48{max-height:12rem}.max-h-56{max-height:14rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-72{max-height:18rem}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[188px\]{max-height:188px}.max-h-\[26rem\]{max-height:26rem}.max-h-\[28rem\]{max-height:28rem}.max-h-\[320px\]{max-height:320px}.max-h-\[85vh\]{max-height:85vh}.max-h-\[calc\(100vh-2rem\)\]{max-height:calc(100vh - 2rem)}.min-h-0{min-height:0}.min-h-28{min-height:7rem}.min-h-32{min-height:8rem}.min-h-7{min-height:1.75rem}.min-h-\[120px\]{min-height:120px}.min-h-\[2\.75rem\]{min-height:2.75rem}.min-h-\[2\.875rem\]{min-height:2.875rem}.min-h-\[220px\]{min-height:220px}.min-h-\[240px\]{min-height:240px}.min-h-\[280px\]{min-height:280px}.min-h-\[42px\]{min-height:42px}.min-h-\[60px\]{min-height:60px}.min-h-\[84px\]{min-height:84px}.min-h-full{min-height:100%}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-1\/3{width:33.3333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-36{width:9rem}.w-4{width:1rem}.w-40{width:10rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-60{width:15rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[1\.125rem\]{width:1.125rem}.w-\[150px\]{width:150px}.w-\[160px\]{width:160px}.w-\[17px\]{width:17px}.w-\[180px\]{width:180px}.w-\[18px\]{width:18px}.w-\[220px\]{width:220px}.w-\[240px\]{width:240px}.w-\[280px\]{width:280px}.w-\[290px\]{width:290px}.w-\[320px\]{width:320px}.w-\[360px\]{width:360px}.w-\[400px\]{width:400px}.w-\[46\%\]{width:46%}.w-\[500px\]{width:500px}.w-\[min\(32rem\,calc\(100vw-1\.5rem\)\)\]{width:min(32rem,100vw - 1.5rem)}.w-\[min\(420px\,calc\(100vw-2rem\)\)\]{width:min(420px,100vw - 2rem)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.w-screen{width:100vw}.min-w-0{min-width:0}.min-w-14{min-width:3.5rem}.min-w-5{min-width:1.25rem}.min-w-\[100px\]{min-width:100px}.min-w-\[140px\]{min-width:140px}.min-w-\[150px\]{min-width:150px}.min-w-\[180px\]{min-width:180px}.min-w-\[18px\]{min-width:18px}.min-w-\[220px\]{min-width:220px}.min-w-\[240px\]{min-width:240px}.min-w-\[56px\]{min-width:56px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-6xl{max-width:72rem}.max-w-\[100px\]{max-width:100px}.max-w-\[1400px\]{max-width:1400px}.max-w-\[140px\]{max-width:140px}.max-w-\[180px\]{max-width:180px}.max-w-\[200px\]{max-width:200px}.max-w-\[220px\]{max-width:220px}.max-w-\[240px\]{max-width:240px}.max-w-\[280px\]{max-width:280px}.max-w-\[300px\]{max-width:300px}.max-w-\[320px\]{max-width:320px}.max-w-\[400px\]{max-width:400px}.max-w-\[420px\]{max-width:420px}.max-w-\[500px\]{max-width:500px}.max-w-\[62\%\]{max-width:62%}.max-w-\[70\%\]{max-width:70%}.max-w-\[78\%\]{max-width:78%}.max-w-\[85\%\]{max-width:85%}.max-w-\[88\%\]{max-width:88%}.max-w-\[92\%\]{max-width:92%}.max-w-\[92px\]{max-width:92px}.max-w-\[calc\(100vw-1\.5rem\)\]{max-width:calc(100vw - 1.5rem)}.max-w-\[min\(100\%\,17rem\)\]{max-width:min(100%,17rem)}.max-w-\[min\(1120px\,100\%\)\]{max-width:min(1120px,100%)}.max-w-\[min\(1180px\,100\%\)\]{max-width:min(1180px,100%)}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-\[240px\]{flex-basis:240px}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-rotate-3{--tw-rotate:-3deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-3{--tw-rotate:3deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-\[-45deg\]{--tw-rotate:-45deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-150{--tw-scale-x:1.5;--tw-scale-y:1.5;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-gpu{transform:translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.animate-bounce{animation:1s infinite bounce}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes slideIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-default{cursor:default}.cursor-ew-resize{cursor:ew-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-ns-resize{cursor:ns-resize}.cursor-pointer{cursor:pointer}.cursor-se-resize{cursor:se-resize}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(220px\,300px\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(220px,300px) minmax(0,1fr)}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-3\.5{gap:.875rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[22px\]{gap:22px}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.self-stretch{align-self:stretch}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:calc(var(--radius) + 8px)}.rounded-3xl{border-radius:1.5rem}.rounded-\[1\.25rem\]{border-radius:1.25rem}.rounded-\[14px\]{border-radius:14px}.rounded-\[1rem\]{border-radius:1rem}.rounded-\[26px\]{border-radius:26px}.rounded-\[28px\]{border-radius:28px}.rounded-\[2px\]{border-radius:2px}.rounded-\[30px\]{border-radius:30px}.rounded-\[32px\]{border-radius:32px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#bde6da\]{--tw-border-opacity:1;border-color:rgb(189 230 218/var(--tw-border-opacity,1))}.border-\[\#d7e2ff\]{--tw-border-opacity:1;border-color:rgb(215 226 255/var(--tw-border-opacity,1))}.border-\[\#d9dce3\]{--tw-border-opacity:1;border-color:rgb(217 220 227/var(--tw-border-opacity,1))}.border-\[\#dde0ea\]{--tw-border-opacity:1;border-color:rgb(221 224 234/var(--tw-border-opacity,1))}.border-\[\#f0d6aa\]{--tw-border-opacity:1;border-color:rgb(240 214 170/var(--tw-border-opacity,1))}.border-\[\#f0e2c8\]{--tw-border-opacity:1;border-color:rgb(240 226 200/var(--tw-border-opacity,1))}.border-\[\#f1e7d4\]{--tw-border-opacity:1;border-color:rgb(241 231 212/var(--tw-border-opacity,1))}.border-\[\#f2d19c\]{--tw-border-opacity:1;border-color:rgb(242 209 156/var(--tw-border-opacity,1))}.border-\[\#f2d5a4\]{--tw-border-opacity:1;border-color:rgb(242 213 164/var(--tw-border-opacity,1))}.border-\[\#f2d7a7\]{--tw-border-opacity:1;border-color:rgb(242 215 167/var(--tw-border-opacity,1))}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-amber-200\/15{border-color:#fde68a26}.border-amber-200\/20{border-color:#fde68a33}.border-amber-200\/50{border-color:#fde68a80}.border-amber-200\/70{border-color:#fde68ab3}.border-amber-200\/80{border-color:#fde68acc}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-200\/80{border-color:#bfdbfecc}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-border\/40{border-color:hsl(var(--border) / .4)}.border-cyan-200\/80{border-color:#a5f3fccc}.border-emerald-200{--tw-border-opacity:1;border-color:rgb(167 243 208/var(--tw-border-opacity,1))}.border-emerald-200\/35{border-color:#a7f3d059}.border-emerald-200\/70{border-color:#a7f3d0b3}.border-emerald-200\/80{border-color:#a7f3d0cc}.border-fuchsia-200\/80{border-color:#f5d0fecc}.border-gray-100{border-color:hsl(var(--gray-100))}.border-gray-100\/50{border-color:hsl(var(--gray-100) / .5)}.border-gray-200{border-color:hsl(var(--gray-200))}.border-gray-200\/40{border-color:hsl(var(--gray-200) / .4)}.border-gray-200\/50{border-color:hsl(var(--gray-200) / .5)}.border-gray-200\/60{border-color:hsl(var(--gray-200) / .6)}.border-gray-200\/70{border-color:hsl(var(--gray-200) / .7)}.border-gray-200\/80{border-color:hsl(var(--gray-200) / .8)}.border-gray-300{border-color:hsl(var(--gray-300))}.border-gray-400{border-color:hsl(var(--gray-400))}.border-lime-200\/80{border-color:#d9f99dcc}.border-orange-200\/80{border-color:#fed7aacc}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/25{border-color:hsl(var(--primary) / .25)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-red-100{--tw-border-opacity:1;border-color:rgb(254 226 226/var(--tw-border-opacity,1))}.border-red-100\/80{border-color:#fee2e2cc}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-200\/80{border-color:#fecacacc}.border-rose-100{--tw-border-opacity:1;border-color:rgb(255 228 230/var(--tw-border-opacity,1))}.border-rose-200{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity,1))}.border-rose-200\/80{border-color:#fecdd3cc}.border-slate-200\/70{border-color:#e2e8f0b3}.border-slate-200\/80{border-color:#e2e8f0cc}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228/var(--tw-border-opacity,1))}.border-stone-200\/80{border-color:#e7e5e4cc}.border-stone-200\/85{border-color:#e7e5e4d9}.border-transparent{border-color:#0000}.border-violet-200\/80{border-color:#ddd6fecc}.border-white\/10{border-color:#ffffff1a}.border-white\/30{border-color:#ffffff4d}.border-white\/70{border-color:#ffffffb3}.border-white\/80{border-color:#fffc}.border-b-primary{border-bottom-color:hsl(var(--primary))}.border-b-transparent{border-bottom-color:#0000}.bg-\[\#8fd4c0\]{--tw-bg-opacity:1;background-color:rgb(143 212 192/var(--tw-bg-opacity,1))}.bg-\[\#b7c9fb\]{--tw-bg-opacity:1;background-color:rgb(183 201 251/var(--tw-bg-opacity,1))}.bg-\[\#dddfe6\]{--tw-bg-opacity:1;background-color:rgb(221 223 230/var(--tw-bg-opacity,1))}.bg-\[\#e6b765\]{--tw-bg-opacity:1;background-color:rgb(230 183 101/var(--tw-bg-opacity,1))}.bg-\[\#efc37a\]{--tw-bg-opacity:1;background-color:rgb(239 195 122/var(--tw-bg-opacity,1))}.bg-\[\#effbf7\]{--tw-bg-opacity:1;background-color:rgb(239 251 247/var(--tw-bg-opacity,1))}.bg-\[\#f4f7ff\]{--tw-bg-opacity:1;background-color:rgb(244 247 255/var(--tw-bg-opacity,1))}.bg-\[\#ffe6c0\]\/55{background-color:#ffe6c08c}.bg-\[\#fff8eb\]{--tw-bg-opacity:1;background-color:rgb(255 248 235/var(--tw-bg-opacity,1))}.bg-\[\#fff8ec\]{--tw-bg-opacity:1;background-color:rgb(255 248 236/var(--tw-bg-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-100\/30{background-color:#fef3c74d}.bg-amber-200\/30{background-color:#fde68a4d}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-50\/50{background-color:#fffbeb80}.bg-amber-50\/70{background-color:#fffbebb3}.bg-amber-50\/90{background-color:#fffbebe6}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-amber-500\/60{background-color:#f59e0b99}.bg-amber-500\/80{background-color:#f59e0bcc}.bg-amber-600{--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.bg-background{background-color:hsl(var(--background))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/40{background-color:#0006}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-card\/40{background-color:hsl(var(--card) / .4)}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity,1))}.bg-cyan-50{--tw-bg-opacity:1;background-color:rgb(236 254 255/var(--tw-bg-opacity,1))}.bg-cyan-600{--tw-bg-opacity:1;background-color:rgb(8 145 178/var(--tw-bg-opacity,1))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-emerald-50\/70{background-color:#ecfdf5b3}.bg-emerald-500{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-fuchsia-50{--tw-bg-opacity:1;background-color:rgb(253 244 255/var(--tw-bg-opacity,1))}.bg-gray-100\/60{background-color:hsl(var(--gray-100) / .6)}.bg-gray-100\/80{background-color:hsl(var(--gray-100) / .8)}.bg-gray-100\/90{background-color:hsl(var(--gray-100) / .9)}.bg-gray-200{background-color:hsl(var(--gray-200))}.bg-gray-200\/70{background-color:hsl(var(--gray-200) / .7)}.bg-gray-200\/75{background-color:hsl(var(--gray-200) / .75)}.bg-gray-200\/80{background-color:hsl(var(--gray-200) / .8)}.bg-gray-200\/85{background-color:hsl(var(--gray-200) / .85)}.bg-gray-200\/90{background-color:hsl(var(--gray-200) / .9)}.bg-gray-300{background-color:hsl(var(--gray-300))}.bg-gray-400{background-color:hsl(var(--gray-400))}.bg-gray-50\/50{background-color:hsl(var(--gray-50) / .5)}.bg-gray-50\/55{background-color:hsl(var(--gray-50) / .55)}.bg-gray-50\/60{background-color:hsl(var(--gray-50) / .6)}.bg-gray-50\/70{background-color:hsl(var(--gray-50) / .7)}.bg-gray-50\/80{background-color:hsl(var(--gray-50) / .8)}.bg-gray-50\/85{background-color:hsl(var(--gray-50) / .85)}.bg-gray-50\/90{background-color:hsl(var(--gray-50) / .9)}.bg-gray-700{background-color:hsl(var(--gray-700))}.bg-lime-50{--tw-bg-opacity:1;background-color:rgb(247 254 231/var(--tw-bg-opacity,1))}.bg-muted{background-color:hsl(var(--muted))}.bg-orange-50\/70{background-color:#fff7edb3}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary-50\/40{background-color:hsl(var(--brand-50) / .4)}.bg-primary-50\/50{background-color:hsl(var(--brand-50) / .5)}.bg-primary-700\/60{background-color:hsl(var(--brand-700) / .6)}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-50\/70{background-color:#fef2f2b3}.bg-red-50\/80{background-color:#fef2f2cc}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity,1))}.bg-rose-100\/80{background-color:#ffe4e6cc}.bg-rose-50{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity,1))}.bg-rose-50\/85{background-color:#fff1f2d9}.bg-rose-500{--tw-bg-opacity:1;background-color:rgb(244 63 94/var(--tw-bg-opacity,1))}.bg-rose-500\/80{background-color:#f43f5ecc}.bg-secondary{background-color:hsl(var(--secondary))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-100\/80{background-color:#f1f5f9cc}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244/var(--tw-bg-opacity,1))}.bg-stone-100\/85{background-color:#f5f5f4d9}.bg-stone-400\/80{background-color:#a8a29ecc}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249/var(--tw-bg-opacity,1))}.bg-stone-50\/90{background-color:#fafaf9e6}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78/var(--tw-bg-opacity,1))}.bg-teal-600{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.bg-transparent{background-color:#0000}.bg-violet-100{--tw-bg-opacity:1;background-color:rgb(237 233 254/var(--tw-bg-opacity,1))}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity,1))}.bg-violet-500{--tw-bg-opacity:1;background-color:rgb(139 92 246/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:#ffffff1a}.bg-white\/70{background-color:#ffffffb3}.bg-white\/75{background-color:#ffffffbf}.bg-white\/80{background-color:#fffc}.bg-white\/85{background-color:#ffffffd9}.bg-white\/90{background-color:#ffffffe6}.bg-white\/95{background-color:#fffffff2}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-\[linear-gradient\(135deg\,\#fff7ea_0\%\,\#f4fbff_100\%\)\]{background-image:linear-gradient(135deg,#fff7ea 0%,#f4fbff 100%)}.bg-\[linear-gradient\(135deg\,\#fff7ea_0\%\,\#fff9f1_32\%\,\#f2fbff_100\%\)\]{background-image:linear-gradient(135deg,#fff7ea 0%,#fff9f1 32%,#f2fbff 100%)}.bg-\[linear-gradient\(180deg\,\#fff9f1_0\%\,\#ffffff_24\%\)\]{background-image:linear-gradient(#fff9f1 0%,#fff 24%)}.bg-\[radial-gradient\(circle_at_top_right\,rgba\(255\,215\,163\,0\.52\)\,transparent_54\%\)\]{background-image:radial-gradient(circle at 100% 0,#ffd7a385,#0000 54%)}.bg-gradient-to-b{background-image:linear-gradient(to bottom, var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right, var(--tw-gradient-stops))}.bg-gradient-to-l{background-image:linear-gradient(to left, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-tl{background-image:linear-gradient(to top left, var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right, var(--tw-gradient-stops))}.from-\[\#0F172A\]{--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:#0f172a00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-blue-500\/40{--tw-gradient-from:#3b82f666 var(--tw-gradient-from-position);--tw-gradient-to:#3b82f600 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-fuchsia-500\/40{--tw-gradient-from:#d946ef66 var(--tw-gradient-from-position);--tw-gradient-to:#d946ef00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-50\/60{--tw-gradient-from:hsl(var(--gray-50) / .6) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--gray-50) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-gray-700{--tw-gradient-from:hsl(var(--gray-700)) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--gray-700) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-50\/70{--tw-gradient-from:hsl(var(--brand-50) / .7) var(--tw-gradient-from-position);--tw-gradient-to:hsl(var(--brand-50) / 0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-\[\#1E1B4B\]{--tw-gradient-to:#1e1b4b00 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #1e1b4b var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-purple-500\/30{--tw-gradient-to:#a855f700 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #a855f74d var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-white{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), #fff var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-\[\#312E81\]{--tw-gradient-to:#312e81 var(--tw-gradient-to-position)}.to-cyan-500\/20{--tw-gradient-to:#06b6d433 var(--tw-gradient-to-position)}.to-emerald-50\/60{--tw-gradient-to:#ecfdf599 var(--tw-gradient-to-position)}.to-gray-950{--tw-gradient-to:#030712 var(--tw-gradient-to-position)}.to-indigo-500\/20{--tw-gradient-to:#6366f133 var(--tw-gradient-to-position)}.to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-white\/10{--tw-gradient-to:#ffffff1a var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to:#ffffffb3 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-3\.5{padding:.875rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-10{padding-bottom:2.5rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-3\.5{padding-bottom:.875rem}.pb-4{padding-bottom:1rem}.pb-5{padding-bottom:1.25rem}.pb-8{padding-bottom:2rem}.pl-2{padding-left:.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-\[calc\(env\(safe-area-inset-top\,0px\)\+0\.625rem\)\]{padding-top:calc(env(safe-area-inset-top,0px) + .625rem)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:1.5rem;line-height:2rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[17px\]{font-size:17px}.text-\[18px\]{font-size:18px}.text-\[30px\]{font-size:30px}.text-\[38px\]{font-size:38px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-tight{line-height:1.25}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-\[-0\.03em\]{letter-spacing:-.03em}.tracking-\[-0\.04em\]{letter-spacing:-.04em}.tracking-\[-0\.05em\]{letter-spacing:-.05em}.tracking-\[0\.08em\]{letter-spacing:.08em}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.16em\]{letter-spacing:.16em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.24em\]{letter-spacing:.24em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-\[\#156653\]{--tw-text-opacity:1;color:rgb(21 102 83/var(--tw-text-opacity,1))}.text-\[\#1f2937\]{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-\[\#2d4d8f\]{--tw-text-opacity:1;color:rgb(45 77 143/var(--tw-text-opacity,1))}.text-\[\#2f2212\]{--tw-text-opacity:1;color:rgb(47 34 18/var(--tw-text-opacity,1))}.text-\[\#475569\]{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-\[\#64748b\]{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-\[\#6d5841\]{--tw-text-opacity:1;color:rgb(109 88 65/var(--tw-text-opacity,1))}.text-\[\#78644d\]{--tw-text-opacity:1;color:rgb(120 100 77/var(--tw-text-opacity,1))}.text-\[\#7a4d12\]{--tw-text-opacity:1;color:rgb(122 77 18/var(--tw-text-opacity,1))}.text-\[\#7b8794\]{--tw-text-opacity:1;color:rgb(123 135 148/var(--tw-text-opacity,1))}.text-\[\#8d5a18\]{--tw-text-opacity:1;color:rgb(141 90 24/var(--tw-text-opacity,1))}.text-\[\#90550d\]{--tw-text-opacity:1;color:rgb(144 85 13/var(--tw-text-opacity,1))}.text-\[\#94a3b8\]{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-\[\#9b6118\]{--tw-text-opacity:1;color:rgb(155 97 24/var(--tw-text-opacity,1))}.text-\[\#d39a3b\]{--tw-text-opacity:1;color:rgb(211 154 59/var(--tw-text-opacity,1))}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-amber-400\/80{color:#fbbf24cc}.text-amber-500\/50{color:#f59e0b80}.text-amber-500\/80{color:#f59e0bcc}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-600\/80{color:#d97706cc}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-amber-950{--tw-text-opacity:1;color:rgb(69 26 3/var(--tw-text-opacity,1))}.text-amber-950\/70{color:#451a03b3}.text-amber-950\/80{color:#451a03cc}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-700{--tw-text-opacity:1;color:rgb(14 116 144/var(--tw-text-opacity,1))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-emerald-100\/90{color:#d1fae5e6}.text-emerald-50\/95{color:#ecfdf5f2}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity,1))}.text-emerald-950{--tw-text-opacity:1;color:rgb(2 44 34/var(--tw-text-opacity,1))}.text-foreground{color:hsl(var(--foreground))}.text-fuchsia-700{--tw-text-opacity:1;color:rgb(162 28 175/var(--tw-text-opacity,1))}.text-gray-300{color:hsl(var(--gray-300))}.text-gray-400{color:hsl(var(--gray-400))}.text-gray-500\/90{color:hsl(var(--gray-500) / .9)}.text-gray-700{color:hsl(var(--gray-700))}.text-gray-800{color:hsl(var(--gray-800))}.text-lime-700{--tw-text-opacity:1;color:rgb(77 124 15/var(--tw-text-opacity,1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-100{color:hsl(var(--brand-100))}.text-primary-200{color:hsl(var(--brand-200))}.text-primary-50{color:hsl(var(--brand-50))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/70{color:hsl(var(--primary) / .7)}.text-primary\/90{color:hsl(var(--primary) / .9)}.text-purple-100\/70{color:#f3e8ffb3}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-rose-500{--tw-text-opacity:1;color:rgb(244 63 94/var(--tw-text-opacity,1))}.text-rose-600{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity,1))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity,1))}.text-rose-950{--tw-text-opacity:1;color:rgb(76 5 25/var(--tw-text-opacity,1))}.text-rose-950\/85{color:#4c0519d9}.text-sky-600{--tw-text-opacity:1;color:rgb(2 132 199/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209/var(--tw-text-opacity,1))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108/var(--tw-text-opacity,1))}.text-stone-700{--tw-text-opacity:1;color:rgb(68 64 60/var(--tw-text-opacity,1))}.text-transparent{color:#0000}.text-violet-700{--tw-text-opacity:1;color:rgb(109 40 217/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-white\/70{color:#ffffffb3}.text-white\/95{color:#fffffff2}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.mix-blend-multiply{mix-blend-mode:multiply}.mix-blend-screen{mix-blend-mode:screen}.shadow{--tw-shadow:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_1px_rgba\(15\,23\,42\,0\.03\)\]{--tw-shadow:0 0 0 1px #0f172a08;--tw-shadow-colored:0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(156\,163\,175\,0\.12\)\]{--tw-shadow:0 0 0 3px #9ca3af1f;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(16\,185\,129\,0\.14\)\]{--tw-shadow:0 0 0 3px #10b98124;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_0_0_3px_rgba\(251\,191\,36\,0\.16\)\]{--tw-shadow:0 0 0 3px #fbbf2429;--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_14px_30px_rgba\(167\,117\,47\,0\.07\)\]{--tw-shadow:0 14px 30px #a7752f12;--tw-shadow-colored:0 14px 30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_18px_40px_rgba\(167\,117\,47\,0\.08\)\]{--tw-shadow:0 18px 40px #a7752f14;--tw-shadow-colored:0 18px 40px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_18px_44px_rgba\(0\,0\,0\,0\.08\)\]{--tw-shadow:0 18px 44px #00000014;--tw-shadow-colored:0 18px 44px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 1px 2px #00000005;--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_24px_60px_-28px_rgba\(15\,23\,42\,0\.38\)\]{--tw-shadow:0 24px 60px -28px #0f172a61;--tw-shadow-colored:0 24px 60px -28px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_24px_70px_-30px_rgba\(15\,23\,42\,0\.45\)\]{--tw-shadow:0 24px 70px -30px #0f172a73;--tw-shadow-colored:0 24px 70px -30px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_2px_10px_rgb\(0\,0\,0\,0\.06\)\]{--tw-shadow:0 2px 10px #0000000f;--tw-shadow-colored:0 2px 10px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_2px_8px_-2px_rgba\(0\,0\,0\,0\.02\)\]{--tw-shadow:0 2px 8px -2px #00000005;--tw-shadow-colored:0 2px 8px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[inset_0_0_0_1px_rgba\(17\,24\,39\,0\.06\)\]{--tw-shadow:inset 0 0 0 1px #1118270f;--tw-shadow-colored:inset 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[inset_0_1px_0_rgba\(255\,255\,255\,0\.45\)\]{--tw-shadow:inset 0 1px 0 #ffffff73;--tw-shadow-colored:inset 0 1px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-card{--tw-shadow:var(--shadow-card);--tw-shadow-colored:var(--shadow-card);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-card-hover{--tw-shadow:var(--shadow-card-hover);--tw-shadow-colored:var(--shadow-card-hover);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-inner{--tw-shadow:inset 0 2px 4px 0 #0000000d;--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-card{--tw-shadow-color:hsl(var(--card));--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline-offset:2px;outline:2px solid #0000}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-inset{--tw-ring-inset:inset}.ring-amber-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 243 199/var(--tw-ring-opacity,1))}.ring-black\/5{--tw-ring-color:#0000000d}.ring-emerald-100{--tw-ring-opacity:1;--tw-ring-color:rgb(209 250 229/var(--tw-ring-opacity,1))}.ring-gray-200{--tw-ring-color:hsl(var(--gray-200))}.ring-red-100{--tw-ring-opacity:1;--tw-ring-color:rgb(254 226 226/var(--tw-ring-opacity,1))}.ring-slate-200\/80{--tw-ring-color:#e2e8f0cc}.ring-white\/10{--tw-ring-color:#ffffff1a}.ring-white\/20{--tw-ring-color:#fff3}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.ring-offset-white{--tw-ring-offset-color:#fff}.blur-3xl{--tw-blur:blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-\[80px\]{--tw-blur:blur(80px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px #0000000d);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,background-color\,box-shadow\,color\]{transition-property:border-color,background-color,box-shadow,color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-property:box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-base{transition-duration:.2s}.duration-fast{transition-duration:.15s}.duration-slow{transition-duration:.3s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.animate-in{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.fade-in-0{--tw-enter-opacity:0}.zoom-in-95{--tw-enter-scale:.95}.duration-150{animation-duration:.15s}.duration-200{animation-duration:.2s}.duration-300{animation-duration:.3s}.duration-base{animation-duration:.2s}.duration-fast{animation-duration:.15s}.duration-slow{animation-duration:.3s}.running{animation-play-state:running}.paused{animation-play-state:paused}.bg-brand-50{background-color:hsl(var(--brand-50))}.text-brand-600{color:hsl(var(--brand-600))}.bg-gray-50{background-color:hsl(var(--gray-50))}.bg-gray-100{background-color:hsl(var(--gray-100))}.text-gray-500{color:hsl(var(--gray-500))}.text-gray-600{color:hsl(var(--gray-600))}.text-gray-900{color:hsl(var(--gray-900))}.custom-scrollbar::-webkit-scrollbar{width:5px;height:5px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:hsl(var(--gray-300));border-radius:6px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:hsl(var(--gray-400))}.workspace-horizontal-scrollbar{scrollbar-width:thin;scrollbar-color:hsl(var(--gray-300) / .38) transparent;scrollbar-gutter:stable}.workspace-horizontal-scrollbar::-webkit-scrollbar{width:3px;height:2px}.workspace-horizontal-scrollbar::-webkit-scrollbar-track{background:0 0}.workspace-horizontal-scrollbar::-webkit-scrollbar-thumb{background:hsl(var(--gray-300) / .38);border-radius:999px}.workspace-horizontal-scrollbar::-webkit-scrollbar-thumb:hover{background:hsl(var(--gray-400) / .48)}.shadow-card{box-shadow:0 1px 3px -1px #1e140a08,0 1px 2px -1px #1e140a05}.shadow-card-hover{box-shadow:0 8px 20px -4px #1e140a0f,0 4px 8px -4px #1e140a08}.\[animation-delay\:200ms\]{animation-delay:.2s}.\[animation-delay\:400ms\]{animation-delay:.4s}@keyframes scaleIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}@keyframes pulse-soft{0%,to{opacity:1}50%{opacity:.85}}.animate-fade-in{animation:.35s cubic-bezier(.16,1,.3,1) forwards fadeIn}.animate-slide-in{animation:.3s cubic-bezier(.16,1,.3,1) forwards slideIn}.animate-scale-in{animation:.3s cubic-bezier(.16,1,.3,1) forwards scaleIn}.animate-pulse-soft{animation:3s ease-in-out infinite pulse-soft}.chat-markdown{--md-text:#0f172a;--md-muted:#334155;--md-border:#94a3b857;--md-link:hsl(var(--primary));--md-inline-code-bg:#0f172a14;--md-inline-code-color:#1e293b;--md-blockquote-border:#0ea5e973;--md-blockquote-bg:#0ea5e914;--md-code-surface:#0b1220;--md-code-toolbar-bg:#0f172a8f;--md-code-toolbar-border:#94a3b84d;--md-code-text:#e5e7eb;--md-table-head-bg:#94a3b824;color:var(--md-text);word-break:break-word;font-size:.925rem;line-height:1.72}.chat-markdown-user{--md-text:#fffffff7;--md-muted:#dbeafeeb;--md-border:#bfdbfe59;--md-link:#dbeafe;--md-inline-code-bg:#0f172a59;--md-inline-code-color:#eff6ff;--md-blockquote-border:#bfdbfecc;--md-blockquote-bg:#0f172a33;--md-code-surface:#020617eb;--md-code-toolbar-bg:#020617e0;--md-code-toolbar-border:#bfdbfe42;--md-code-text:#e2e8f0;--md-table-head-bg:#bfdbfe29}.chat-markdown>*+*{margin-top:.72rem}.chat-markdown p,.chat-markdown li,.chat-markdown blockquote{color:var(--md-text)}.chat-markdown h1,.chat-markdown h2,.chat-markdown h3,.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{letter-spacing:-.01em;margin:.2rem 0 0;font-weight:700;line-height:1.35}.chat-markdown h1{font-size:1.22rem}.chat-markdown h2{font-size:1.12rem}.chat-markdown h3{font-size:1.02rem}.chat-markdown h4,.chat-markdown h5,.chat-markdown h6{font-size:.96rem}.chat-markdown ul,.chat-markdown ol{margin:.35rem 0;padding-left:1.5rem;list-style-position:outside}.chat-markdown ul{list-style-type:disc}.chat-markdown ol{list-style-type:decimal}.chat-markdown ul ul{list-style-type:circle}.chat-markdown ul ul ul{list-style-type:square}.chat-markdown ol ol{list-style-type:lower-alpha}.chat-markdown ol ol ol{list-style-type:lower-roman}.chat-markdown li{display:list-item}.chat-markdown li::marker{color:#334155e6;font-weight:600}.chat-markdown li+li{margin-top:.25rem}.chat-markdown li>p{margin:0}.chat-markdown ul.contains-task-list,.chat-markdown ol.contains-task-list{padding-left:.2rem;list-style:none}.chat-markdown li.task-list-item{align-items:flex-start;gap:.52rem;display:flex}.chat-markdown-user li::marker{color:#dbeafef2}.chat-markdown .chat-task-checkbox{cursor:default;width:.92rem;height:.92rem;position:relative;top:.2rem}.chat-markdown hr{border:0;border-top:1px solid var(--md-border);margin:.92rem 0}.chat-markdown a{color:var(--md-link);text-underline-offset:2px;word-break:break-all;text-decoration-line:underline;text-decoration-thickness:1.2px}.chat-markdown .chat-link-invalid{color:var(--md-muted);text-decoration-line:underline;text-decoration-style:dotted}.chat-markdown code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.82rem}.chat-markdown .chat-inline-code,.chat-markdown :not(pre)>code{background:var(--md-inline-code-bg);color:var(--md-inline-code-color);border:1px solid var(--md-border);border-radius:.4rem;padding:.1rem .35rem;font-weight:520}.chat-codeblock{border:1px solid var(--md-code-toolbar-border);background:var(--md-code-surface);border-radius:.78rem;margin:.2rem 0 .1rem;overflow:hidden}.chat-codeblock-toolbar{background:var(--md-code-toolbar-bg);border-bottom:1px solid var(--md-code-toolbar-border);justify-content:space-between;align-items:center;gap:.5rem;padding:.43rem .58rem;display:flex}.chat-codeblock-language{text-transform:uppercase;letter-spacing:.06em;color:var(--md-code-text);opacity:.8;font-size:.68rem;font-weight:700}.chat-codeblock-copy{color:var(--md-code-text);border:1px solid var(--md-code-toolbar-border);cursor:pointer;background:0 0;border-radius:.48rem;align-items:center;gap:.3rem;padding:.18rem .36rem;font-size:.7rem;font-weight:600;transition:background-color .15s,border-color .15s;display:inline-flex}.chat-codeblock-copy:hover{background:#94a3b833}.chat-codeblock pre{background:0 0;margin:0;padding:.75rem .82rem .8rem;overflow-x:auto}.chat-codeblock code{white-space:pre;min-width:max-content;color:var(--md-code-text);line-height:1.58;display:block}.chat-table-wrap{border:1px solid var(--md-border);border-radius:.72rem;margin:.15rem 0;overflow-x:auto}.chat-markdown table{border-collapse:separate;border-spacing:0;width:100%;min-width:420px;font-size:.82rem}.chat-markdown thead{background:var(--md-table-head-bg)}.chat-markdown th,.chat-markdown td{border-bottom:1px solid var(--md-border);text-align:left;vertical-align:top;padding:.45rem .58rem}.chat-markdown th+th,.chat-markdown td+td{border-left:1px solid var(--md-border)}.chat-markdown tbody tr:last-child td{border-bottom:none}.chat-markdown th,.chat-markdown strong{font-weight:650}.chat-markdown img{border:1px solid var(--md-border);border-radius:.75rem;max-width:100%}.chat-markdown blockquote{border-left:3px solid var(--md-blockquote-border);background:var(--md-blockquote-bg);color:var(--md-muted);border-radius:0 .55rem .55rem 0;margin:.2rem 0;padding:.45rem .72rem}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:font-normal::placeholder{font-weight:400}.placeholder\:text-gray-300::placeholder{color:hsl(var(--gray-300))}.placeholder\:text-gray-400::placeholder{color:hsl(var(--gray-400))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\:border-blue-300\/80:hover{border-color:#93c5fdcc}.hover\:border-gray-200:hover{border-color:hsl(var(--gray-200))}.hover\:border-gray-300:hover{border-color:hsl(var(--gray-300))}.hover\:border-primary\/40:hover{border-color:hsl(var(--primary) / .4)}.hover\:border-red-200:hover{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.hover\:border-rose-200:hover{--tw-border-opacity:1;border-color:rgb(254 205 211/var(--tw-border-opacity,1))}.hover\:border-rose-300:hover{--tw-border-opacity:1;border-color:rgb(253 164 175/var(--tw-border-opacity,1))}.hover\:border-slate-300:hover{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.hover\:border-white\/20:hover{border-color:#fff3}.hover\:bg-\[\#f3f4f6\]:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-amber-100\/30:hover{background-color:#fef3c74d}.hover\:bg-amber-50:hover{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.hover\:bg-black\/10:hover{background-color:#0000001a}.hover\:bg-blue-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.hover\:bg-destructive\/10:hover{background-color:hsl(var(--destructive) / .1)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-gray-100\/70:hover{background-color:hsl(var(--gray-100) / .7)}.hover\:bg-gray-100\/80:hover{background-color:hsl(var(--gray-100) / .8)}.hover\:bg-gray-200:hover{background-color:hsl(var(--gray-200))}.hover\:bg-gray-200\/40:hover{background-color:hsl(var(--gray-200) / .4)}.hover\:bg-gray-200\/60:hover{background-color:hsl(var(--gray-200) / .6)}.hover\:bg-gray-200\/80:hover{background-color:hsl(var(--gray-200) / .8)}.hover\:bg-gray-300\/80:hover{background-color:hsl(var(--gray-300) / .8)}.hover\:bg-gray-50\/70:hover{background-color:hsl(var(--gray-50) / .7)}.hover\:bg-gray-50\/80:hover{background-color:hsl(var(--gray-50) / .8)}.hover\:bg-primary:hover{background-color:hsl(var(--primary))}.hover\:bg-primary-600:hover{background-color:hsl(var(--brand-600))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-rose-50:hover{--tw-bg-opacity:1;background-color:rgb(255 241 242/var(--tw-bg-opacity,1))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-white\/50:hover{background-color:#ffffff80}.hover\:bg-white\/70:hover{background-color:#ffffffb3}.hover\:text-\[\#475569\]:hover{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.hover\:text-amber-900:hover{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.hover\:text-gray-700:hover{color:hsl(var(--gray-700))}.hover\:text-gray-800:hover{color:hsl(var(--gray-800))}.hover\:text-primary:hover{color:hsl(var(--primary))}.hover\:text-primary-foreground:hover{color:hsl(var(--primary-foreground))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\:text-red-600:hover{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.hover\:text-rose-200:hover{--tw-text-opacity:1;color:rgb(254 205 211/var(--tw-text-opacity,1))}.hover\:text-rose-600:hover{--tw-text-opacity:1;color:rgb(225 29 72/var(--tw-text-opacity,1))}.hover\:text-sky-700:hover{--tw-text-opacity:1;color:rgb(3 105 161/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-card-hover:hover{--tw-shadow:var(--shadow-card-hover);--tw-shadow-colored:var(--shadow-card-hover);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:bg-gray-50:hover{background-color:hsl(var(--gray-50))}.hover\:bg-gray-100:hover{background-color:hsl(var(--gray-100))}.hover\:text-gray-500:hover{color:hsl(var(--gray-500))}.hover\:text-gray-600:hover{color:hsl(var(--gray-600))}.hover\:text-gray-900:hover{color:hsl(var(--gray-900))}.hover\:shadow-card-hover:hover{box-shadow:var(--shadow-card-hover);box-shadow:0 8px 20px -4px #1e140a0f,0 4px 8px -4px #1e140a08}.focus\:border-gray-200\/80:focus{border-color:hsl(var(--gray-200) / .8)}.focus\:border-primary\/40:focus{border-color:hsl(var(--primary) / .4)}.focus\:bg-white:focus{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-0:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus\:ring-primary\/30:focus{--tw-ring-color:hsl(var(--primary) / .3)}.focus\:ring-primary\/40:focus{--tw-ring-color:hsl(var(--primary) / .4)}.focus\:bg-gray-100:focus{background-color:hsl(var(--gray-100))}.focus-visible\:bg-white:focus-visible{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-primary:focus-visible{--tw-ring-color:hsl(var(--primary))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-white:focus-visible{--tw-ring-offset-color:#fff}.active\:cursor-grabbing:active{cursor:grabbing}.active\:bg-primary-700:active{background-color:hsl(var(--brand-700))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:text-gray-400:disabled{color:hsl(var(--gray-400))}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group\/session:focus-within .group-focus-within\/session\:opacity-100{opacity:1}.group\/action:hover .group-hover\/action\:translate-x-0\.5{--tw-translate-x:.125rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-\[1\.01\]{--tw-scale-x:1.01;--tw-scale-y:1.01;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-gray-700{color:hsl(var(--gray-700))}.group:hover .group-hover\:text-gray-800{color:hsl(var(--gray-800))}.group:hover .group-hover\:text-primary{color:hsl(var(--primary))}.group\/session:hover .group-hover\/session\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:bg-gray-50{background-color:hsl(var(--gray-50))}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:bg-emerald-500[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(16 185 129/var(--tw-bg-opacity,1))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:animate-in[data-state=open]{--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial;animation-name:enter;animation-duration:.15s}.data-\[state\=closed\]\:animate-out[data-state=closed]{--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial;animation-name:exit;animation-duration:.15s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-.5rem}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:.5rem}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-.5rem}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:.5rem}.data-\[state\=closed\]\:slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.data-\[state\=closed\]\:slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.data-\[state\=open\]\:slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.data-\[state\=open\]\:slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}@media (width>=640px){.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-flex{display:inline-flex}.sm\:h-\[42rem\]{height:42rem}.sm\:max-h-\[760px\]{max-height:760px}.sm\:w-\[360px\]{width:360px}.sm\:w-\[38\%\]{width:38%}.sm\:min-w-\[170px\]{min-width:170px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[220px\]{max-width:220px}.sm\:max-w-xl{max-width:36rem}.sm\:flex-1{flex:1}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(180px\,240px\)\]{grid-template-columns:minmax(0,1fr) minmax(180px,240px)}.sm\:grid-rows-\[auto_minmax\(0\,1fr\)\]{grid-template-rows:auto minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:gap-0{gap:0}.sm\:gap-3{gap:.75rem}.sm\:p-6{padding:1.5rem}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-5{padding-left:1.25rem;padding-right:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.sm\:text-left{text-align:left}.sm\:text-\[15px\]{font-size:15px}.sm\:text-\[38px\]{font-size:38px}.sm\:leading-7{line-height:1.75rem}}@media (width>=768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:flex{display:flex}.md\:w-\[26rem\]{width:26rem}.md\:w-\[480px\]{width:480px}.md\:max-w-md{max-width:28rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:opacity-0{opacity:0}.group:focus-within .md\:group-focus-within\:opacity-100,.group:hover .md\:group-hover\:opacity-100{opacity:1}}@media (width>=1024px){.lg\:w-\[30rem\]{width:30rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}}@media (width>=1280px){.xl\:col-span-3{grid-column:span 3/span 3}.xl\:flex{display:flex}.xl\:h-\[calc\(100vh-180px\)\]{height:calc(100vh - 180px)}.xl\:h-full{height:100%}.xl\:max-h-\[860px\]{max-height:860px}.xl\:min-h-0{min-height:0}.xl\:w-\[320px\]{width:320px}.xl\:w-\[34rem\]{width:34rem}.xl\:flex-1{flex:1}.xl\:flex-none{flex:none}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[1\.2fr_0\.8fr\]{grid-template-columns:1.2fr .8fr}.xl\:grid-cols-\[340px_minmax\(0\,1fr\)\]{grid-template-columns:340px minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_320px\]{grid-template-columns:minmax(0,1fr) 320px}.xl\:flex-col{flex-direction:column}.xl\:items-center{align-items:center}.xl\:overflow-hidden{overflow:hidden}.xl\:overflow-y-auto{overflow-y:auto}.xl\:overscroll-contain{overscroll-behavior:contain}}@media (width>=1536px){.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:\:-webkit-scrollbar-thumb\]\:rounded-full::-webkit-scrollbar-thumb{border-radius:9999px}.\[\&\:\:-webkit-scrollbar-thumb\]\:bg-gray-300\/80::-webkit-scrollbar-thumb{background-color:hsl(var(--gray-300) / .8)}.\[\&\:\:-webkit-scrollbar\]\:w-2::-webkit-scrollbar{width:.5rem}.\[\&\>\:last-child\]\:hidden>:last-child{display:none}.\[\&\>span\]\:line-clamp-1>span{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-C_GFKVuW.js";var t=e(`KeyRound`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-C_GFKVuW.js";var t=e(`LoaderCircle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
@@ -1 +1 @@
1
- import{_ as e,m as t,p as n,u as r}from"./i18n-DvzXOGQX.js";var i=e(t(),1),a=n();function o({name:e,src:t,className:n,imgClassName:o,fallback:s}){let[c,l]=(0,i.useState)(!1),u=!!t&&!c;return(0,a.jsx)(`div`,{className:r(`inline-flex shrink-0 items-center justify-center overflow-hidden`,n),children:u?(0,a.jsx)(`img`,{src:t,alt:`${e} logo`,className:r(`block h-6 w-6 object-contain`,o),onError:()=>l(!0),draggable:!1}):s??(0,a.jsx)(`span`,{className:`text-lg font-bold uppercase`,children:e.slice(0,1)})})}export{o as t};
1
+ import{_ as e,m as t,p as n,u as r}from"./i18n-BnNAQpVM.js";var i=e(t(),1),a=n();function o({name:e,src:t,className:n,imgClassName:o,fallback:s}){let[c,l]=(0,i.useState)(!1),u=!!t&&!c;return(0,a.jsx)(`div`,{className:r(`inline-flex shrink-0 items-center justify-center overflow-hidden`,n),children:u?(0,a.jsx)(`img`,{src:t,alt:`${e} logo`,className:r(`block h-6 w-6 object-contain`,o),onError:()=>l(!0),draggable:!1}):s??(0,a.jsx)(`span`,{className:`text-lg font-bold uppercase`,children:e.slice(0,1)})})}export{o as t};