clawmoney 0.18.1 → 0.18.2

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.
@@ -1,4 +1,4 @@
1
- (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(a){if(a.ep)return;a.ep=!0;const l=n(a);fetch(a.href,l)}})();function Zt(e,t,n,s){if(typeof t=="function"?e!==t||!s:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?s:n==="a"?s.call(e):s?s.value:t.get(e)}function ei(e,t,n,s,a){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,n),n}var ae;const k="__TAURI_TO_IPC_KEY__";function ti(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function c(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}class ii{get rid(){return Zt(this,ae,"f")}constructor(t){ae.set(this,void 0),ei(this,ae,t)}async close(){return c("plugin:resources|close",{rid:this.rid})}}ae=new WeakMap;class pt{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.width=t[0].Logical.width,this.height=t[0].Logical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toPhysical(t){return new V(this.width*t,this.height*t)}[k](){return{width:this.width,height:this.height}}toJSON(){return this[k]()}}class V{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.width=t[0].Physical.width,this.height=t[0].Physical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toLogical(t){return new pt(this.width/t,this.height/t)}[k](){return{width:this.width,height:this.height}}toJSON(){return this[k]()}}class O{constructor(t){this.size=t}toLogical(t){return this.size instanceof pt?this.size:this.size.toLogical(t)}toPhysical(t){return this.size instanceof V?this.size:this.size.toPhysical(t)}[k](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[k]()}}class mt{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.x=t[0].Logical.x,this.y=t[0].Logical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toPhysical(t){return new M(this.x*t,this.y*t)}[k](){return{x:this.x,y:this.y}}toJSON(){return this[k]()}}class M{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.x=t[0].Physical.x,this.y=t[0].Physical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toLogical(t){return new mt(this.x/t,this.y/t)}[k](){return{x:this.x,y:this.y}}toJSON(){return this[k]()}}class te{constructor(t){this.position=t}toLogical(t){return this.position instanceof mt?this.position:this.position.toLogical(t)}toPhysical(t){return this.position instanceof M?this.position:this.position.toPhysical(t)}[k](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[k]()}}var v;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(v||(v={}));async function ft(e,t){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(e,t),await c("plugin:event|unlisten",{event:e,eventId:t})}async function ht(e,t,n){var s;const a=typeof n?.target=="string"?{kind:"AnyLabel",label:n.target}:(s=n?.target)!==null&&s!==void 0?s:{kind:"Any"};return c("plugin:event|listen",{event:e,target:a,handler:ti(t)}).then(l=>async()=>ft(e,l))}async function ni(e,t,n){return ht(e,s=>{ft(e,s.id),t(s)},n)}async function si(e,t){await c("plugin:event|emit",{event:e,payload:t})}async function ai(e,t,n){await c("plugin:event|emit_to",{target:typeof e=="string"?{kind:"AnyLabel",label:e}:e,event:t,payload:n})}class j extends ii{constructor(t){super(t)}static async new(t,n,s){return c("plugin:image|new",{rgba:re(t),width:n,height:s}).then(a=>new j(a))}static async fromBytes(t){return c("plugin:image|from_bytes",{bytes:re(t)}).then(n=>new j(n))}static async fromPath(t){return c("plugin:image|from_path",{path:t}).then(n=>new j(n))}async rgba(){return c("plugin:image|rgba",{rid:this.rid}).then(t=>new Uint8Array(t))}async size(){return c("plugin:image|size",{rid:this.rid})}}function re(e){return e==null?null:typeof e=="string"?e:e instanceof j?e.rid:e}var Te;(function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"})(Te||(Te={}));class oi{constructor(t){this._preventDefault=!1,this.event=t.event,this.id=t.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var Je;(function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"})(Je||(Je={}));function Ne(){return new bt(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function _e(){return c("plugin:window|get_all_windows").then(e=>e.map(t=>new bt(t,{skip:!0})))}const Se=["tauri://created","tauri://error"];class bt{constructor(t,n={}){var s;this.label=t,this.listeners=Object.create(null),n?.skip||c("plugin:window|create",{options:{...n,parent:typeof n.parent=="string"?n.parent:(s=n.parent)===null||s===void 0?void 0:s.label,label:t}}).then(async()=>this.emit("tauri://created")).catch(async a=>this.emit("tauri://error",a))}static async getByLabel(t){var n;return(n=(await _e()).find(s=>s.label===t))!==null&&n!==void 0?n:null}static getCurrent(){return Ne()}static async getAll(){return _e()}static async getFocusedWindow(){for(const t of await _e())if(await t.isFocused())return t;return null}async listen(t,n){return this._handleTauriEvent(t,n)?()=>{const s=this.listeners[t];s.splice(s.indexOf(n),1)}:ht(t,n,{target:{kind:"Window",label:this.label}})}async once(t,n){return this._handleTauriEvent(t,n)?()=>{const s=this.listeners[t];s.splice(s.indexOf(n),1)}:ni(t,n,{target:{kind:"Window",label:this.label}})}async emit(t,n){if(Se.includes(t)){for(const s of this.listeners[t]||[])s({event:t,id:-1,payload:n});return}return si(t,n)}async emitTo(t,n,s){if(Se.includes(n)){for(const a of this.listeners[n]||[])a({event:n,id:-1,payload:s});return}return ai(t,n,s)}_handleTauriEvent(t,n){return Se.includes(t)?(t in this.listeners?this.listeners[t].push(n):this.listeners[t]=[n],!0):!1}async scaleFactor(){return c("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return c("plugin:window|inner_position",{label:this.label}).then(t=>new M(t))}async outerPosition(){return c("plugin:window|outer_position",{label:this.label}).then(t=>new M(t))}async innerSize(){return c("plugin:window|inner_size",{label:this.label}).then(t=>new V(t))}async outerSize(){return c("plugin:window|outer_size",{label:this.label}).then(t=>new V(t))}async isFullscreen(){return c("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return c("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return c("plugin:window|is_maximized",{label:this.label})}async isFocused(){return c("plugin:window|is_focused",{label:this.label})}async isDecorated(){return c("plugin:window|is_decorated",{label:this.label})}async isResizable(){return c("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return c("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return c("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return c("plugin:window|is_closable",{label:this.label})}async isVisible(){return c("plugin:window|is_visible",{label:this.label})}async title(){return c("plugin:window|title",{label:this.label})}async theme(){return c("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return c("plugin:window|is_always_on_top",{label:this.label})}async center(){return c("plugin:window|center",{label:this.label})}async requestUserAttention(t){let n=null;return t&&(t===Te.Critical?n={type:"Critical"}:n={type:"Informational"}),c("plugin:window|request_user_attention",{label:this.label,value:n})}async setResizable(t){return c("plugin:window|set_resizable",{label:this.label,value:t})}async setEnabled(t){return c("plugin:window|set_enabled",{label:this.label,value:t})}async isEnabled(){return c("plugin:window|is_enabled",{label:this.label})}async setMaximizable(t){return c("plugin:window|set_maximizable",{label:this.label,value:t})}async setMinimizable(t){return c("plugin:window|set_minimizable",{label:this.label,value:t})}async setClosable(t){return c("plugin:window|set_closable",{label:this.label,value:t})}async setTitle(t){return c("plugin:window|set_title",{label:this.label,value:t})}async maximize(){return c("plugin:window|maximize",{label:this.label})}async unmaximize(){return c("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return c("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return c("plugin:window|minimize",{label:this.label})}async unminimize(){return c("plugin:window|unminimize",{label:this.label})}async show(){return c("plugin:window|show",{label:this.label})}async hide(){return c("plugin:window|hide",{label:this.label})}async close(){return c("plugin:window|close",{label:this.label})}async destroy(){return c("plugin:window|destroy",{label:this.label})}async setDecorations(t){return c("plugin:window|set_decorations",{label:this.label,value:t})}async setShadow(t){return c("plugin:window|set_shadow",{label:this.label,value:t})}async setEffects(t){return c("plugin:window|set_effects",{label:this.label,value:t})}async clearEffects(){return c("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(t){return c("plugin:window|set_always_on_top",{label:this.label,value:t})}async setAlwaysOnBottom(t){return c("plugin:window|set_always_on_bottom",{label:this.label,value:t})}async setContentProtected(t){return c("plugin:window|set_content_protected",{label:this.label,value:t})}async setSize(t){return c("plugin:window|set_size",{label:this.label,value:t instanceof O?t:new O(t)})}async setMinSize(t){return c("plugin:window|set_min_size",{label:this.label,value:t instanceof O?t:t?new O(t):null})}async setMaxSize(t){return c("plugin:window|set_max_size",{label:this.label,value:t instanceof O?t:t?new O(t):null})}async setSizeConstraints(t){function n(s){return s?{Logical:s}:null}return c("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:n(t?.minWidth),minHeight:n(t?.minHeight),maxWidth:n(t?.maxWidth),maxHeight:n(t?.maxHeight)}})}async setPosition(t){return c("plugin:window|set_position",{label:this.label,value:t instanceof te?t:new te(t)})}async setFullscreen(t){return c("plugin:window|set_fullscreen",{label:this.label,value:t})}async setSimpleFullscreen(t){return c("plugin:window|set_simple_fullscreen",{label:this.label,value:t})}async setFocus(){return c("plugin:window|set_focus",{label:this.label})}async setFocusable(t){return c("plugin:window|set_focusable",{label:this.label,value:t})}async setIcon(t){return c("plugin:window|set_icon",{label:this.label,value:re(t)})}async setSkipTaskbar(t){return c("plugin:window|set_skip_taskbar",{label:this.label,value:t})}async setCursorGrab(t){return c("plugin:window|set_cursor_grab",{label:this.label,value:t})}async setCursorVisible(t){return c("plugin:window|set_cursor_visible",{label:this.label,value:t})}async setCursorIcon(t){return c("plugin:window|set_cursor_icon",{label:this.label,value:t})}async setBackgroundColor(t){return c("plugin:window|set_background_color",{color:t})}async setCursorPosition(t){return c("plugin:window|set_cursor_position",{label:this.label,value:t instanceof te?t:new te(t)})}async setIgnoreCursorEvents(t){return c("plugin:window|set_ignore_cursor_events",{label:this.label,value:t})}async startDragging(){return c("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(t){return c("plugin:window|start_resize_dragging",{label:this.label,value:t})}async setBadgeCount(t){return c("plugin:window|set_badge_count",{label:this.label,value:t})}async setBadgeLabel(t){return c("plugin:window|set_badge_label",{label:this.label,value:t})}async setOverlayIcon(t){return c("plugin:window|set_overlay_icon",{label:this.label,value:t?re(t):void 0})}async setProgressBar(t){return c("plugin:window|set_progress_bar",{label:this.label,value:t})}async setVisibleOnAllWorkspaces(t){return c("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:t})}async setTitleBarStyle(t){return c("plugin:window|set_title_bar_style",{label:this.label,value:t})}async setTheme(t){return c("plugin:window|set_theme",{label:this.label,value:t})}async onResized(t){return this.listen(v.WINDOW_RESIZED,n=>{n.payload=new V(n.payload),t(n)})}async onMoved(t){return this.listen(v.WINDOW_MOVED,n=>{n.payload=new M(n.payload),t(n)})}async onCloseRequested(t){return this.listen(v.WINDOW_CLOSE_REQUESTED,async n=>{const s=new oi(n);await t(s),s.isPreventDefault()||await this.destroy()})}async onDragDropEvent(t){const n=await this.listen(v.DRAG_ENTER,r=>{t({...r,payload:{type:"enter",paths:r.payload.paths,position:new M(r.payload.position)}})}),s=await this.listen(v.DRAG_OVER,r=>{t({...r,payload:{type:"over",position:new M(r.payload.position)}})}),a=await this.listen(v.DRAG_DROP,r=>{t({...r,payload:{type:"drop",paths:r.payload.paths,position:new M(r.payload.position)}})}),l=await this.listen(v.DRAG_LEAVE,r=>{t({...r,payload:{type:"leave"}})});return()=>{n(),a(),s(),l()}}async onFocusChanged(t){const n=await this.listen(v.WINDOW_FOCUS,a=>{t({...a,payload:!0})}),s=await this.listen(v.WINDOW_BLUR,a=>{t({...a,payload:!1})});return()=>{n(),s()}}async onScaleChanged(t){return this.listen(v.WINDOW_SCALE_FACTOR_CHANGED,t)}async onThemeChanged(t){return this.listen(v.WINDOW_THEME_CHANGED,t)}}var Xe;(function(e){e.Disabled="disabled",e.Throttle="throttle",e.Suspend="suspend"})(Xe||(Xe={}));var Qe;(function(e){e.Default="default",e.FluentOverlay="fluentOverlay"})(Qe||(Qe={}));var Ze;(function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"})(Ze||(Ze={}));var et;(function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"})(et||(et={}));const li=`# 更新日志
1
+ (function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const l of a)if(l.type==="childList")for(const r of l.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&s(r)}).observe(document,{childList:!0,subtree:!0});function n(a){const l={};return a.integrity&&(l.integrity=a.integrity),a.referrerPolicy&&(l.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?l.credentials="include":a.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(a){if(a.ep)return;a.ep=!0;const l=n(a);fetch(a.href,l)}})();function Zt(e,t,n,s){if(typeof t=="function"?e!==t||!s:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?s:n==="a"?s.call(e):s?s.value:t.get(e)}function ei(e,t,n,s,a){if(typeof t=="function"?e!==t||!0:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return t.set(e,n),n}var ae;const k="__TAURI_TO_IPC_KEY__";function ti(e,t=!1){return window.__TAURI_INTERNALS__.transformCallback(e,t)}async function c(e,t={},n){return window.__TAURI_INTERNALS__.invoke(e,t,n)}class ii{get rid(){return Zt(this,ae,"f")}constructor(t){ae.set(this,void 0),ei(this,ae,t)}async close(){return c("plugin:resources|close",{rid:this.rid})}}ae=new WeakMap;class gt{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.width=t[0].Logical.width,this.height=t[0].Logical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toPhysical(t){return new V(this.width*t,this.height*t)}[k](){return{width:this.width,height:this.height}}toJSON(){return this[k]()}}class V{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.width=t[0].Physical.width,this.height=t[0].Physical.height):(this.width=t[0].width,this.height=t[0].height):(this.width=t[0],this.height=t[1])}toLogical(t){return new gt(this.width/t,this.height/t)}[k](){return{width:this.width,height:this.height}}toJSON(){return this[k]()}}class N{constructor(t){this.size=t}toLogical(t){return this.size instanceof gt?this.size:this.size.toLogical(t)}toPhysical(t){return this.size instanceof V?this.size:this.size.toPhysical(t)}[k](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[k]()}}class pt{constructor(...t){this.type="Logical",t.length===1?"Logical"in t[0]?(this.x=t[0].Logical.x,this.y=t[0].Logical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toPhysical(t){return new M(this.x*t,this.y*t)}[k](){return{x:this.x,y:this.y}}toJSON(){return this[k]()}}class M{constructor(...t){this.type="Physical",t.length===1?"Physical"in t[0]?(this.x=t[0].Physical.x,this.y=t[0].Physical.y):(this.x=t[0].x,this.y=t[0].y):(this.x=t[0],this.y=t[1])}toLogical(t){return new pt(this.x/t,this.y/t)}[k](){return{x:this.x,y:this.y}}toJSON(){return this[k]()}}class te{constructor(t){this.position=t}toLogical(t){return this.position instanceof pt?this.position:this.position.toLogical(t)}toPhysical(t){return this.position instanceof M?this.position:this.position.toPhysical(t)}[k](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[k]()}}var v;(function(e){e.WINDOW_RESIZED="tauri://resize",e.WINDOW_MOVED="tauri://move",e.WINDOW_CLOSE_REQUESTED="tauri://close-requested",e.WINDOW_DESTROYED="tauri://destroyed",e.WINDOW_FOCUS="tauri://focus",e.WINDOW_BLUR="tauri://blur",e.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",e.WINDOW_THEME_CHANGED="tauri://theme-changed",e.WINDOW_CREATED="tauri://window-created",e.WEBVIEW_CREATED="tauri://webview-created",e.DRAG_ENTER="tauri://drag-enter",e.DRAG_OVER="tauri://drag-over",e.DRAG_DROP="tauri://drag-drop",e.DRAG_LEAVE="tauri://drag-leave"})(v||(v={}));async function mt(e,t){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(e,t),await c("plugin:event|unlisten",{event:e,eventId:t})}async function ft(e,t,n){var s;const a=typeof n?.target=="string"?{kind:"AnyLabel",label:n.target}:(s=n?.target)!==null&&s!==void 0?s:{kind:"Any"};return c("plugin:event|listen",{event:e,target:a,handler:ti(t)}).then(l=>async()=>mt(e,l))}async function ni(e,t,n){return ft(e,s=>{mt(e,s.id),t(s)},n)}async function si(e,t){await c("plugin:event|emit",{event:e,payload:t})}async function ai(e,t,n){await c("plugin:event|emit_to",{target:typeof e=="string"?{kind:"AnyLabel",label:e}:e,event:t,payload:n})}class j extends ii{constructor(t){super(t)}static async new(t,n,s){return c("plugin:image|new",{rgba:re(t),width:n,height:s}).then(a=>new j(a))}static async fromBytes(t){return c("plugin:image|from_bytes",{bytes:re(t)}).then(n=>new j(n))}static async fromPath(t){return c("plugin:image|from_path",{path:t}).then(n=>new j(n))}async rgba(){return c("plugin:image|rgba",{rid:this.rid}).then(t=>new Uint8Array(t))}async size(){return c("plugin:image|size",{rid:this.rid})}}function re(e){return e==null?null:typeof e=="string"?e:e instanceof j?e.rid:e}var Te;(function(e){e[e.Critical=1]="Critical",e[e.Informational=2]="Informational"})(Te||(Te={}));class oi{constructor(t){this._preventDefault=!1,this.event=t.event,this.id=t.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var Ke;(function(e){e.None="none",e.Normal="normal",e.Indeterminate="indeterminate",e.Paused="paused",e.Error="error"})(Ke||(Ke={}));function Oe(){return new ht(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function _e(){return c("plugin:window|get_all_windows").then(e=>e.map(t=>new ht(t,{skip:!0})))}const Se=["tauri://created","tauri://error"];class ht{constructor(t,n={}){var s;this.label=t,this.listeners=Object.create(null),n?.skip||c("plugin:window|create",{options:{...n,parent:typeof n.parent=="string"?n.parent:(s=n.parent)===null||s===void 0?void 0:s.label,label:t}}).then(async()=>this.emit("tauri://created")).catch(async a=>this.emit("tauri://error",a))}static async getByLabel(t){var n;return(n=(await _e()).find(s=>s.label===t))!==null&&n!==void 0?n:null}static getCurrent(){return Oe()}static async getAll(){return _e()}static async getFocusedWindow(){for(const t of await _e())if(await t.isFocused())return t;return null}async listen(t,n){return this._handleTauriEvent(t,n)?()=>{const s=this.listeners[t];s.splice(s.indexOf(n),1)}:ft(t,n,{target:{kind:"Window",label:this.label}})}async once(t,n){return this._handleTauriEvent(t,n)?()=>{const s=this.listeners[t];s.splice(s.indexOf(n),1)}:ni(t,n,{target:{kind:"Window",label:this.label}})}async emit(t,n){if(Se.includes(t)){for(const s of this.listeners[t]||[])s({event:t,id:-1,payload:n});return}return si(t,n)}async emitTo(t,n,s){if(Se.includes(n)){for(const a of this.listeners[n]||[])a({event:n,id:-1,payload:s});return}return ai(t,n,s)}_handleTauriEvent(t,n){return Se.includes(t)?(t in this.listeners?this.listeners[t].push(n):this.listeners[t]=[n],!0):!1}async scaleFactor(){return c("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return c("plugin:window|inner_position",{label:this.label}).then(t=>new M(t))}async outerPosition(){return c("plugin:window|outer_position",{label:this.label}).then(t=>new M(t))}async innerSize(){return c("plugin:window|inner_size",{label:this.label}).then(t=>new V(t))}async outerSize(){return c("plugin:window|outer_size",{label:this.label}).then(t=>new V(t))}async isFullscreen(){return c("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return c("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return c("plugin:window|is_maximized",{label:this.label})}async isFocused(){return c("plugin:window|is_focused",{label:this.label})}async isDecorated(){return c("plugin:window|is_decorated",{label:this.label})}async isResizable(){return c("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return c("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return c("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return c("plugin:window|is_closable",{label:this.label})}async isVisible(){return c("plugin:window|is_visible",{label:this.label})}async title(){return c("plugin:window|title",{label:this.label})}async theme(){return c("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return c("plugin:window|is_always_on_top",{label:this.label})}async center(){return c("plugin:window|center",{label:this.label})}async requestUserAttention(t){let n=null;return t&&(t===Te.Critical?n={type:"Critical"}:n={type:"Informational"}),c("plugin:window|request_user_attention",{label:this.label,value:n})}async setResizable(t){return c("plugin:window|set_resizable",{label:this.label,value:t})}async setEnabled(t){return c("plugin:window|set_enabled",{label:this.label,value:t})}async isEnabled(){return c("plugin:window|is_enabled",{label:this.label})}async setMaximizable(t){return c("plugin:window|set_maximizable",{label:this.label,value:t})}async setMinimizable(t){return c("plugin:window|set_minimizable",{label:this.label,value:t})}async setClosable(t){return c("plugin:window|set_closable",{label:this.label,value:t})}async setTitle(t){return c("plugin:window|set_title",{label:this.label,value:t})}async maximize(){return c("plugin:window|maximize",{label:this.label})}async unmaximize(){return c("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return c("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return c("plugin:window|minimize",{label:this.label})}async unminimize(){return c("plugin:window|unminimize",{label:this.label})}async show(){return c("plugin:window|show",{label:this.label})}async hide(){return c("plugin:window|hide",{label:this.label})}async close(){return c("plugin:window|close",{label:this.label})}async destroy(){return c("plugin:window|destroy",{label:this.label})}async setDecorations(t){return c("plugin:window|set_decorations",{label:this.label,value:t})}async setShadow(t){return c("plugin:window|set_shadow",{label:this.label,value:t})}async setEffects(t){return c("plugin:window|set_effects",{label:this.label,value:t})}async clearEffects(){return c("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(t){return c("plugin:window|set_always_on_top",{label:this.label,value:t})}async setAlwaysOnBottom(t){return c("plugin:window|set_always_on_bottom",{label:this.label,value:t})}async setContentProtected(t){return c("plugin:window|set_content_protected",{label:this.label,value:t})}async setSize(t){return c("plugin:window|set_size",{label:this.label,value:t instanceof N?t:new N(t)})}async setMinSize(t){return c("plugin:window|set_min_size",{label:this.label,value:t instanceof N?t:t?new N(t):null})}async setMaxSize(t){return c("plugin:window|set_max_size",{label:this.label,value:t instanceof N?t:t?new N(t):null})}async setSizeConstraints(t){function n(s){return s?{Logical:s}:null}return c("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:n(t?.minWidth),minHeight:n(t?.minHeight),maxWidth:n(t?.maxWidth),maxHeight:n(t?.maxHeight)}})}async setPosition(t){return c("plugin:window|set_position",{label:this.label,value:t instanceof te?t:new te(t)})}async setFullscreen(t){return c("plugin:window|set_fullscreen",{label:this.label,value:t})}async setSimpleFullscreen(t){return c("plugin:window|set_simple_fullscreen",{label:this.label,value:t})}async setFocus(){return c("plugin:window|set_focus",{label:this.label})}async setFocusable(t){return c("plugin:window|set_focusable",{label:this.label,value:t})}async setIcon(t){return c("plugin:window|set_icon",{label:this.label,value:re(t)})}async setSkipTaskbar(t){return c("plugin:window|set_skip_taskbar",{label:this.label,value:t})}async setCursorGrab(t){return c("plugin:window|set_cursor_grab",{label:this.label,value:t})}async setCursorVisible(t){return c("plugin:window|set_cursor_visible",{label:this.label,value:t})}async setCursorIcon(t){return c("plugin:window|set_cursor_icon",{label:this.label,value:t})}async setBackgroundColor(t){return c("plugin:window|set_background_color",{color:t})}async setCursorPosition(t){return c("plugin:window|set_cursor_position",{label:this.label,value:t instanceof te?t:new te(t)})}async setIgnoreCursorEvents(t){return c("plugin:window|set_ignore_cursor_events",{label:this.label,value:t})}async startDragging(){return c("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(t){return c("plugin:window|start_resize_dragging",{label:this.label,value:t})}async setBadgeCount(t){return c("plugin:window|set_badge_count",{label:this.label,value:t})}async setBadgeLabel(t){return c("plugin:window|set_badge_label",{label:this.label,value:t})}async setOverlayIcon(t){return c("plugin:window|set_overlay_icon",{label:this.label,value:t?re(t):void 0})}async setProgressBar(t){return c("plugin:window|set_progress_bar",{label:this.label,value:t})}async setVisibleOnAllWorkspaces(t){return c("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:t})}async setTitleBarStyle(t){return c("plugin:window|set_title_bar_style",{label:this.label,value:t})}async setTheme(t){return c("plugin:window|set_theme",{label:this.label,value:t})}async onResized(t){return this.listen(v.WINDOW_RESIZED,n=>{n.payload=new V(n.payload),t(n)})}async onMoved(t){return this.listen(v.WINDOW_MOVED,n=>{n.payload=new M(n.payload),t(n)})}async onCloseRequested(t){return this.listen(v.WINDOW_CLOSE_REQUESTED,async n=>{const s=new oi(n);await t(s),s.isPreventDefault()||await this.destroy()})}async onDragDropEvent(t){const n=await this.listen(v.DRAG_ENTER,r=>{t({...r,payload:{type:"enter",paths:r.payload.paths,position:new M(r.payload.position)}})}),s=await this.listen(v.DRAG_OVER,r=>{t({...r,payload:{type:"over",position:new M(r.payload.position)}})}),a=await this.listen(v.DRAG_DROP,r=>{t({...r,payload:{type:"drop",paths:r.payload.paths,position:new M(r.payload.position)}})}),l=await this.listen(v.DRAG_LEAVE,r=>{t({...r,payload:{type:"leave"}})});return()=>{n(),a(),s(),l()}}async onFocusChanged(t){const n=await this.listen(v.WINDOW_FOCUS,a=>{t({...a,payload:!0})}),s=await this.listen(v.WINDOW_BLUR,a=>{t({...a,payload:!1})});return()=>{n(),s()}}async onScaleChanged(t){return this.listen(v.WINDOW_SCALE_FACTOR_CHANGED,t)}async onThemeChanged(t){return this.listen(v.WINDOW_THEME_CHANGED,t)}}var Je;(function(e){e.Disabled="disabled",e.Throttle="throttle",e.Suspend="suspend"})(Je||(Je={}));var Xe;(function(e){e.Default="default",e.FluentOverlay="fluentOverlay"})(Xe||(Xe={}));var Qe;(function(e){e.AppearanceBased="appearanceBased",e.Light="light",e.Dark="dark",e.MediumLight="mediumLight",e.UltraDark="ultraDark",e.Titlebar="titlebar",e.Selection="selection",e.Menu="menu",e.Popover="popover",e.Sidebar="sidebar",e.HeaderView="headerView",e.Sheet="sheet",e.WindowBackground="windowBackground",e.HudWindow="hudWindow",e.FullScreenUI="fullScreenUI",e.Tooltip="tooltip",e.ContentBackground="contentBackground",e.UnderWindowBackground="underWindowBackground",e.UnderPageBackground="underPageBackground",e.Mica="mica",e.Blur="blur",e.Acrylic="acrylic",e.Tabbed="tabbed",e.TabbedDark="tabbedDark",e.TabbedLight="tabbedLight"})(Qe||(Qe={}));var Ze;(function(e){e.FollowsWindowActiveState="followsWindowActiveState",e.Active="active",e.Inactive="inactive"})(Ze||(Ze={}));const li=`# 更新日志
2
2
 
3
3
  本文件记录 ClawMoney Desktop 每个版本的新增功能与修复。
4
4
  格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/),版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
@@ -58,13 +58,13 @@
58
58
  ### 新增
59
59
  - 首版:账户登录(邮箱 / Google)、钱包余额(Base / BSC)、平台连接、Agent 上架、订单与收益、日志
60
60
  - 本地服务管理(Market Provider / Surf Relay)与浏览器插件状态
61
- `,ri="https://api.github.com/repos/jackleeio/clawmoney-releases/releases/latest",ci="https://github.com/jackleeio/clawmoney-releases/releases/latest";let D=null,$="idle";function di(e,t){const n=e.split(".").map(Number),s=t.split(".").map(Number);for(let a=0;a<3;a++){if((n[a]??0)>(s[a]??0))return!0;if((n[a]??0)<(s[a]??0))return!1}return!1}async function wt(e=!1){if($!=="checking"){$="checking",e&&u();try{const t=new AbortController,n=setTimeout(()=>t.abort(),8e3),s=await fetch(ri,{signal:t.signal,headers:{Accept:"application/vnd.github+json"}});if(clearTimeout(n),!s.ok)throw new Error(String(s.status));const a=await s.json(),l=String(a.tag_name??"").replace(/^v/,"");l&&di(l,"0.3.1")?(D={version:l,url:a.html_url||ci},$="found"):$="latest"}catch{$="idle"}u()}}const o={dashboard:null,tweaks:Mi(),ui:{route:"home",loginStep:"choose",googleState:"idle",loginEmail:"",loginCode:"",loginCodeError:!1,loginCodeVerifying:!1,loginCodeResendIn:45,loginLang:lt(),loginError:null,connectionsFilter:"全部",connectionsQuery:"",ordersTab:"recent",copiedChain:null,balance:48.27,modal:null},locale:lt()};let oe=["signedout","login"].includes(new URLSearchParams(location.search).get("state")||""),ce=!0,de=!0,f={query:"",filter:"all",paused:!1,logs:[],timer:null},B=null,A=[],F=!1,Oe=0;const ui=["全部","Image","Social","Developer","Crowdfunding","News","Finance","Podcast","Search"],vt=[{id:"gemini-image",name:"Gemini Image",cat:"Image",mode:"public",skills:2,status:"ready",hot:!0,brand:"#8e75d6",mark:"✦",slug:"googlegemini",caps:["生图","参考图编辑"]},{id:"codex-image",name:"Codex",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#000",mark:"C",slug:"openai",caps:["生图"]},{id:"chatgpt-image",name:"ChatGPT",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#10a37f",mark:"G",slug:"openai",caps:["生图"]},{id:"chatgpt-web-image",name:"ChatGPT Web",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#10a37f",mark:"G",slug:"openai",caps:["生图"]},{id:"flow-image",name:"Flow",cat:"Image",mode:"public",skills:2,status:"ready",brand:"#4285f4",mark:"F",slug:"google",caps:["生图","生视频"]},{id:"x",name:"X / Twitter",cat:"Social",mode:"browser",skills:7,status:"ready",hot:!0,brand:"#000",mark:"𝕏",slug:"x",caps:["搜推文","用户推文","用户资料","线程","首页时间线","通知","账号数据"]},{id:"xiaohongshu",name:"小红书",cat:"Social",mode:"browser",skills:1,status:"ready",brand:"#ff2442",mark:"红",caps:["搜笔记"]},{id:"instagram",name:"Instagram",cat:"Social",mode:"browser",skills:2,status:"login",brand:"#e1306c",mark:"IG",slug:"instagram",caps:["搜用户","Explore feed"]},{id:"tiktok",name:"TikTok",cat:"Social",mode:"browser",skills:2,status:"ready",hot:!0,brand:"#000",mark:"♪",slug:"tiktok",caps:["搜视频","趋势 feed"]},{id:"youtube",name:"YouTube",cat:"Social",mode:"browser",skills:3,status:"ready",brand:"#ff0033",mark:"▶",slug:"youtube",caps:["搜视频","视频信息","字幕转录"]},{id:"reddit",name:"Reddit",cat:"Social",mode:"browser",skills:10,status:"ready",hot:!0,brand:"#ff4500",mark:"r",slug:"reddit",caps:["搜帖","热门 / 首页","帖子评论","subreddit 帖子","subreddit 信息","用户资料","用户帖子","用户评论"]},{id:"linkedin",name:"LinkedIn",cat:"Social",mode:"browser",skills:1,status:"ready",brand:"#0a66c2",mark:"in",slug:"linkedin",caps:["搜职位"]},{id:"facebook",name:"Facebook",cat:"Social",mode:"browser",skills:3,status:"login",brand:"#1877f2",mark:"f",slug:"facebook",caps:["搜帖子","Profile","Events"]},{id:"bilibili",name:"Bilibili",cat:"Social",mode:"browser",skills:12,status:"ready",brand:"#00aeec",mark:"B",slug:"bilibili",caps:["搜视频","热门 / 排行榜","视频详情","评论","动态","用户投稿 / 关注","字幕","AI 总结","下载"]},{id:"zhihu",name:"知乎",cat:"Social",mode:"browser",skills:7,status:"ready",brand:"#0066ff",mark:"知",slug:"zhihu",caps:["搜问题","热榜","问题详情","回答详情","回答评论","推荐流","文章导出"]},{id:"weibo",name:"微博",cat:"Social",mode:"browser",skills:7,status:"ready",brand:"#df2029",mark:"W",slug:"sinaweibo",caps:["搜帖子","热搜","时间线","用户资料","用户帖子","帖子详情","评论"]},{id:"douban",name:"豆瓣",cat:"Social",mode:"browser",skills:6,status:"ready",brand:"#33b048",mark:"豆",slug:"douban",caps:["搜索","热门电影 / 图书","Top 250","条目详情","图片"]},{id:"jike",name:"即刻",cat:"Social",mode:"browser",skills:5,status:"login",brand:"#ffe411",mark:"J",caps:["搜帖子","首页 feed","帖子详情","话题 feed","用户 feed"]},{id:"medium",name:"Medium",cat:"Social",mode:"browser",skills:4,status:"ready",brand:"#000",mark:"M",slug:"medium",caps:["搜文章","热门 feed","Tag feed","用户文章"]},{id:"weixin",name:"微信公众号",cat:"Social",mode:"browser",skills:3,status:"ready",brand:"#07c160",mark:"微",slug:"wechat",caps:["文章抓取","搜文章","文章导出"]},{id:"hackernews",name:"Hacker News",cat:"Developer",mode:"public",skills:9,status:"ready",hot:!0,brand:"#ff6600",mark:"Y",slug:"ycombinator",caps:["搜索","Top / New / Best","Show / Ask / Jobs","评论树","用户资料"]},{id:"stackoverflow",name:"Stack Overflow",cat:"Developer",mode:"public",skills:2,status:"ready",brand:"#f48024",mark:"S",slug:"stackoverflow",caps:["搜问题","热门问题"]},{id:"v2ex",name:"V2EX",cat:"Developer",mode:"public",skills:2,status:"ready",brand:"#1f1f1f",mark:"V",caps:["热门","最新"]},{id:"linux-do",name:"Linux.do",cat:"Developer",mode:"browser",skills:1,status:"ready",brand:"#222",mark:"L",caps:["搜话题"]},{id:"wikipedia",name:"Wikipedia",cat:"Developer",mode:"public",skills:5,status:"ready",brand:"#000",mark:"W",slug:"wikipedia",caps:["搜索","摘要","全文","随机文章","趋势文章"]},{id:"producthunt",name:"Product Hunt",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#da552f",mark:"P",slug:"producthunt",caps:["Top launches"]},{id:"ycombinator",name:"Y Combinator",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#fb651e",mark:"YC",slug:"ycombinator",caps:["Batch 公司(website/industry/stage)"]},{id:"indiehackers",name:"Indie Hackers",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#0e2439",mark:"IH",caps:["产品(revenue/uniques/followers)"]},{id:"kickstarter",name:"Kickstarter",cat:"Crowdfunding",mode:"browser",skills:1,status:"ready",hot:!0,brand:"#05ce78",mark:"KS",slug:"kickstarter",caps:["最新项目(creator = 线索)"]},{id:"indiegogo",name:"Indiegogo",cat:"Crowdfunding",mode:"browser",skills:1,status:"ready",brand:"#eb1478",mark:"IG",slug:"indiegogo",caps:["Explore 项目"]},{id:"substack",name:"Substack",cat:"Developer",mode:"public",skills:3,status:"ready",brand:"#ff6719",mark:"S",slug:"substack",caps:["搜文章","热门 feed","Publication posts"]},{id:"bbc",name:"BBC",cat:"News",mode:"public",skills:2,status:"ready",brand:"#bb1919",mark:"B",slug:"bbc",caps:["头条","Topic 头条"]},{id:"bloomberg",name:"Bloomberg",cat:"News",mode:"public",skills:11,status:"ready",hot:!0,brand:"#000",mark:"B",slug:"bloomberg",caps:["头条","文章","feed 别名","Markets","Tech","Politics","Economics","Businessweek","Industries","Opinion"]},{id:"sinafinance",name:"Sina Finance",cat:"News",mode:"public",skills:4,status:"ready",brand:"#e6162d",mark:"新",caps:["7×24","滚动新闻","股票行情","股票热榜"]},{id:"sinablog",name:"Sina Blog",cat:"News",mode:"public",skills:1,status:"ready",brand:"#e6162d",mark:"博",caps:["搜博客"]},{id:"36kr",name:"36Kr",cat:"News",mode:"public",skills:4,status:"ready",brand:"#0070ff",mark:"Kr",caps:["搜文章","热榜","最新新闻","文章正文"]},{id:"yahoo-finance",name:"Yahoo Finance",cat:"Finance",mode:"public",skills:1,status:"ready",brand:"#6001d2",mark:"Y!",slug:"yahoo",caps:["股票报价"]},{id:"xueqiu",name:"雪球",cat:"Finance",mode:"browser",skills:7,status:"ready",brand:"#cf3a3a",mark:"X",caps:["搜股票","热门","热股榜","行情","评论","K 线","财报日期"]},{id:"apple-podcasts",name:"Apple Podcasts",cat:"Podcast",mode:"public",skills:1,status:"ready",brand:"#9933cc",mark:"🎙",slug:"applepodcasts",caps:["搜节目"]},{id:"xiaoyuzhou",name:"小宇宙",cat:"Podcast",mode:"public",skills:4,status:"ready",brand:"#ec6056",mark:"宇",caps:["播客信息","节目列表","Episode 列表","Episode 详情"]},{id:"weread",name:"微信读书",cat:"Search",mode:"browser",skills:3,status:"login",brand:"#1d77fb",mark:"读",caps:["搜书","排行榜","书籍详情"]},{id:"ctrip",name:"携程",cat:"Search",mode:"browser",skills:4,status:"ready",brand:"#287dfa",mark:"C",slug:"trip",caps:["目的地搜索","酒店联想","酒店搜索","航班搜索"]},{id:"google",name:"Google",cat:"Search",mode:"browser",skills:4,status:"ready",brand:"#4285f4",mark:"G",slug:"google",caps:["网页搜索","Google News","搜索建议","Daily Trends"]}],z={"gemini-image":"gemini","codex-image":"codex","chatgpt-image":"chatgpt","chatgpt-web-image":"chatgpt_web","flow-image":"flow",x:"x",xiaohongshu:"xhs",tiktok:"tk",youtube:"yt",reddit:"rd",linkedin:"li",facebook:"fb",bilibili:"bili",zhihu:"zh",weibo:"wb",douban:"db",jike:"jk",medium:"med",weixin:"wxmp",hackernews:"hn",wikipedia:"wiki",bloomberg:"bbg",sinafinance:"sf","36kr":"36kr","yahoo-finance":"yf",xueqiu:"xq",xiaoyuzhou:"xyz",weread:"wr",ctrip:"ct",google:"gg",substack:"sub",bbc:"bbc",ycombinator:"yc",indiehackers:"ih",kickstarter:"ks",indiegogo:"igg"},tt=(()=>{const e=new Map(vt.map(n=>[n.id,n])),t=new Map;for(const[n,s]of Object.entries(z)){const a=e.get(n);a&&t.set(s,a)}return t})();function gi(e){switch((e||"").split("/")[0].trim().toLowerCase()){case"generation":case"image":case"video":case"audio":return"Image";case"social":return"Social";case"coding":case"analysis":case"transformation":case"developer":return"Developer";case"news":return"News";case"finance":return"Finance";case"podcast":return"Podcast";case"search":case"reference":case"knowledge":return"Search";default:return"全部"}}let Ce=null,it=null;const yt="clawmoney.platformSkills.v1",pi=15e3,T=new Map;let I=mi();function mi(){try{const e=localStorage.getItem(yt);if(!e)return new Map;const t=JSON.parse(e);return new Map(t.map(([n,s])=>[n,s.filter(a=>typeof a.skill_name=="string").sort((a,l)=>a.skill_name.localeCompare(l.skill_name))]))}catch{return new Map}}function kt(){try{localStorage.setItem(yt,JSON.stringify([...I.entries()]))}catch{}}function _t(e,t,n=!0){t.length&&(I.set(e,[...t].sort((s,a)=>s.skill_name.localeCompare(a.skill_name))),n&&kt())}function fi(e,t){const n=z[e];n&&_t(n,t)}function St(){const e=o.dashboard?.skills;if(Ce&&it===e)return Ce;const t=new Map;for(const n of e||[]){if(typeof n.skill_name!="string")continue;const s=n.skill_name.split(".")[0],a=t.get(s);a?a.push(n):t.set(s,[n])}for(const[n,s]of t)s.sort((a,l)=>a.skill_name.localeCompare(l.skill_name)),_t(n,s,!1);return t.size&&kt(),Ce=t,it=e,t}function N(e){const t=z[e];return t?St().get(t)||I.get(t)||[]:[]}const ie=(()=>{const e=new Map;return vt.forEach((t,n)=>e.set(t.id,(t.cat==="Image"?0:1)*1e3+n)),e})();let xe=null,nt=null,st=-1;function C(){const e=St();if(xe&&nt===o.dashboard?.skills&&st===I.size)return xe;const t=new Set([...tt.keys(),...e.keys(),...I.keys()]),n=[];for(const s of t){const a=e.get(s)||I.get(s)||[],l=tt.get(s);if(l){n.push(l);continue}s in z||(z[s]=s),n.push({id:s,name:s.charAt(0).toUpperCase()+s.slice(1),cat:gi(a[0]?.category),mode:"public",skills:a.length,status:"ready",brand:"#8a8f98",mark:s.slice(0,2).toUpperCase(),caps:[]})}return n.sort((s,a)=>{const l=ie.has(s.id)?ie.get(s.id):Number.MAX_SAFE_INTEGER,r=ie.has(a.id)?ie.get(a.id):Number.MAX_SAFE_INTEGER;if(l!==r)return l-r;const d=s.cat==="Image"?0:1,p=a.cat==="Image"?0:1;return d!==p?d-p:s.id.localeCompare(a.id)}),xe=n,nt=o.dashboard?.skills,st=I.size,n}function hi(e,t){const n=z[t];return!!(n&&e.skill_name?.split(".")[0]===n)}function bi(e,t){const n=T.get(e);n?.syncTimer!=null&&window.clearTimeout(n.syncTimer),T.set(e,{active:t,expiresAt:Date.now()+pi,syncTimer:null}),Ue(e)}function L(e){const t=T.get(e);t?.syncTimer!=null&&window.clearTimeout(t.syncTimer),T.delete(e),Ue(e)}function Ct(e){const t=T.get(e);return t?t.expiresAt>Date.now()?!0:(L(e),!1):!1}function xt(e){const t=e?.skills;if(!Array.isArray(t)||T.size===0)return;const n=Date.now();for(const[s,a]of T){if(a.expiresAt<=n){L(s);continue}const l=t.filter(d=>hi(d,s));if(!l.length){a.active||L(s);continue}if(l.every(d=>d.is_active!==!1===a.active)){L(s);continue}l.forEach(d=>{d.is_active=a.active})}}const Et={ready:"就绪",login:"需登录",needs:"需处理",off:"未启用",error:"错误"},At={public:"Public",browser:"Browser"},wi=[{id:"ord_9hk2",t:"14:21",platform:"reddit",skill:"热门帖子 · r/macapps",status:"completed",amount:.18,dur:"2.4s"},{id:"ord_9hg4",t:"14:18",platform:"x",skill:"用户推文 · @sama",status:"completed",amount:.12,dur:"1.9s"},{id:"ord_9h95",t:"14:11",platform:"tiktok",skill:"趋势 feed",status:"completed",amount:.22,dur:"3.1s"},{id:"ord_9h82",t:"14:05",platform:"gemini-image",skill:"参考图编辑",status:"failed",amount:0,dur:"—"},{id:"ord_9h60",t:"13:58",platform:"bilibili",skill:"字幕转录",status:"completed",amount:.31,dur:"4.2s"},{id:"ord_9h41",t:"13:42",platform:"reddit",skill:"subreddit 帖子 · r/LocalLLaMA",status:"completed",amount:.09,dur:"1.1s"},{id:"ord_9h2a",t:"13:30",platform:"wikipedia",skill:'摘要 · "Bitcoin"',status:"completed",amount:.05,dur:"0.6s"},{id:"ord_9gz1",t:"13:21",platform:"youtube",skill:"视频信息",status:"completed",amount:.27,dur:"2.8s"},{id:"ord_9gr9",t:"12:54",platform:"xueqiu",skill:"热股榜",status:"completed",amount:.14,dur:"1.6s"},{id:"ord_9gn3",t:"12:40",platform:"medium",skill:"Tag feed · ai",status:"completed",amount:.11,dur:"2.0s"}],Me=wi.map(e=>({...e,createdAtMs:null})),Le=[{id:"esc_4112",deadline:"今日 18:00",platform:"x",skill:"品牌话题监测 · 30 分钟",reward:1.2,status:"in-progress"},{id:"esc_4108",deadline:"明日 09:00",platform:"reddit",skill:"r/macapps 周报",reward:.85,status:"queued"}],at=[1.82,2.4,3.1,2.85,3.95,4.62,5.31];function Be(){if(!fe())return{series:at,total:+at.reduce((l,r)=>l+r,0).toFixed(2)};const n=new Date;n.setHours(0,0,0,0);const s=n.getTime()-6*864e5,a=new Array(7).fill(0);for(const l of ue()){if(l.status!=="completed"||!l.createdAtMs)continue;const r=Math.floor((l.createdAtMs-s)/864e5);r>=0&&r<7&&(a[r]+=l.amount)}return{series:a.map(l=>+l.toFixed(2)),total:+a.reduce((l,r)=>l+r,0).toFixed(2)}}function vi(){if(!fe())return["周一","周二","周三","周四","周五","周六","今日"];const e=["周日","周一","周二","周三","周四","周五","周六"],t=new Date;return Array.from({length:7},(n,s)=>s===6?"今日":e[new Date(t.getTime()-(6-s)*864e5).getDay()])}const Fe=[{t:"14:21:08.317",lvl:"INFO",msg:"Order ord_9hk2 completed · reddit/hot · r/macapps · 2.4s"},{t:"14:20:46.992",lvl:"INFO",msg:"Uploaded artifact gemini_070f7429c6a9...png → cdn.clawmoney.ai"},{t:"14:20:12.118",lvl:"INFO",msg:"Surf relay handshake ok · peers=3"},{t:"14:19:55.461",lvl:"WARN",msg:"Rate limit headers from tiktok.com near threshold (82%)"},{t:"14:18:32.770",lvl:"INFO",msg:"Order ord_9hg4 completed · x/user-tweets @sama · 1.9s"},{t:"14:17:09.044",lvl:"INFO",msg:"Provider heartbeat → marketplace.clawmoney.ai 200 OK"},{t:"14:14:01.829",lvl:"ERROR",msg:"gemini-image/edit failed (401): INVALID_API_KEY · retrying with refreshed key"},{t:"14:13:55.612",lvl:"INFO",msg:"Refreshed provider API key (rotates every 30m)"},{t:"14:11:48.220",lvl:"INFO",msg:"Order ord_9h95 completed · tiktok/trends · 3.1s"},{t:"14:10:02.005",lvl:"DEBUG",msg:"BNBot bridge: chrome window 0x7f2 attached for bilibili"}],Ee={x:"x",yt:"youtube",tk:"tiktok",rd:"reddit",xhs:"xiaohongshu",bili:"bilibili",gg:"google",wxmp:"weixin",hn:"hackernews",wiki:"wikipedia",zh:"zhihu",med:"medium",sub:"substack",wb:"weibo",db:"douban",fb:"facebook",ct:"ctrip",li:"linkedin",yf:"yahoo-finance",bbc:"bbc",bbg:"bloomberg",sf:"sinafinance",jk:"jike",xq:"xueqiu",xyz:"xiaoyuzhou",wr:"weread",gemini:"gemini-image",codex:"codex-image",chatgpt:"chatgpt-image",chatgpt_web:"chatgpt-web-image",flow:"flow-image","36kr":"36kr",yc:"ycombinator",ih:"indiehackers",ks:"kickstarter",igg:"indiegogo"};function yi(){const e=o.dashboard?.history?.orders;return Array.isArray(e)?e:[]}function ki(){const e=o.dashboard?.history?.escrow;return Array.isArray(e)?e:[]}function fe(){return!!(o.dashboard&&"history"in o.dashboard)}function ue(){const e=yi().map(Si);return e.length>0||fe()?e:Me}function _i(){const e=ki().map(Ci);return e.length>0||fe()?e:Le}function Si(e){const t=String(e.status??"").toLowerCase(),n=t==="completed"||t==="success"?"completed":t==="pending"||t==="queued"||t==="processing"?"pending":"failed",s=Mt(e.completed_at??e.created_at),a=xi(e);return{id:String(e.id??e.order_id??"-"),t:We(s),platform:Tt(a,e),skill:a,status:n,amount:J(e.price??e.amount??e.cost_usd,0),dur:Ei(e.duration??e.duration_ms),createdAtMs:s}}function Ci(e){const t=String(e.status??"").toLowerCase(),n=String(e.skill??e.title??e.category??"托管任务");return{id:String(e.id??"-"),deadline:e.deadline?We(Mt(e.deadline)):"未设置",platform:Tt(n,e),skill:n,reward:J(e.budget??e.reward??e.price,0),status:t==="accepted"||t==="in_progress"||t==="assigned"?"in-progress":"queued"}}function xi(e){const t=e.skill_name??e.skill??e.skill_slug??e.category;if(typeof t=="string"&&t.trim())return t.trim();if(e.output_data&&typeof e.output_data=="object"&&"echoed"in e.output_data)return"echo";const n=String(e.skill_id??"");return n?`skill ${n.slice(0,8)}`:"service call"}function Tt(e,t={}){const n=String(t.platform??t.platform_id??t.provider??"").toLowerCase();if(n&&Ee[n])return Ee[n];const s=e.toLowerCase().split(/[._:/\s-]+/)[0];return Ee[s]??(s||"clawmoney")}function Mt(e){if(typeof e!="string"||!e.trim())return null;const t=e.trim(),n=/(?:z|[+-]\d{2}:?\d{2})$/i.test(t)?t:`${t}Z`,s=Date.parse(n);return Number.isFinite(s)?s:null}function We(e){return e?new Date(e).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1}):"—"}function Ei(e){if(typeof e!="number"||!Number.isFinite(e))return"—";const t=e>1e3?e/1e3:e;return`${t.toFixed(t<10?1:0)}s`}function J(e,t){const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?n:t}function Ai(e){if(!Number.isFinite(e)||e===0)return"$0.00";if(e>=1)return`$${e.toFixed(2)}`;let t=e.toFixed(4);return t=t.replace(/(\.\d{2}[1-9]*)0+$/,"$1"),`$${t}`}const Ti={zh:{tagline:"让你的 Agent 替你赚睡后收入",welcome:"欢迎回来",subtitle:"登录后即可启动 Agent 并接入市场。",google:"使用 Google 账号登录",or:"或",email:"使用邮箱继续",terms:"登录即表示同意服务条款。",backLink:"返回",emailTitle:"使用邮箱登录",emailSub:"我们会发一个 6 位验证码到你的邮箱。",emailLabel:"邮箱",emailCta:"发送验证码",codeTitle:"输入验证码",codeSubPre:"验证码已发送到 ",codeSubPost:"有效期 10 分钟。",codeError:"验证码不正确,请重试。",codeVerifying:"正在验证…",codeResend:"重新发送",codeResendIn:e=>`${e}s 后可重发`,codeChange:"换个邮箱",gRedirect:"正在跳转到 Google…",gGrant:"正在获取授权…",gSuccess:"登录成功!",gRedirectSub:"请在弹出的窗口中选择 Google 账号。",gGrantSub:"授权 ClawMoney 读取你的邮箱和基本信息。",gSuccessSub:"正在初始化 Agent 工作空间…",continueCta:"进入主页",fTerms:"服务条款",fPrivacy:"隐私政策",fSource:"查看源代码"},en:{tagline:"Let your Agent earn while you sleep",welcome:"Welcome back",subtitle:"Sign in to launch your Agent and join the market.",google:"Continue with Google",or:"or",email:"Continue with Email",terms:"By continuing you agree to the Terms of Service.",backLink:"Back",emailTitle:"Sign in with email",emailSub:"We'll send a 6-digit code to your inbox.",emailLabel:"Email",emailCta:"Send code",codeTitle:"Enter the code",codeSubPre:"Sent to ",codeSubPost:"Valid for 10 minutes.",codeError:"Incorrect code. Try again.",codeVerifying:"Verifying…",codeResend:"Resend code",codeResendIn:e=>`Resend in ${e}s`,codeChange:"Change email",gRedirect:"Redirecting to Google…",gGrant:"Granting access…",gSuccess:"Signed in!",gRedirectSub:"Pick a Google account in the popup window.",gGrantSub:"Allow ClawMoney to read your email and basic profile.",gSuccessSub:"Setting up your Agent workspace…",continueCta:"Enter dashboard",fTerms:"Terms",fPrivacy:"Privacy",fSource:"Source"}};function i(e,t={},...n){const s=document.createElement(e);for(const[a,l]of Object.entries(t))l===!1||l==null||(a==="class"?s.className=String(l):a==="style"&&typeof l=="object"?Object.assign(s.style,l):a.startsWith("on")&&typeof l=="function"?s.addEventListener(a.slice(2).toLowerCase(),l):a==="html"?s.innerHTML=String(l):a in s&&typeof s[a]!="object"?s[a]=l:s.setAttribute(a,String(l)));for(const a of n.flat())a==null||a===!1||s.append(a instanceof Node?a:document.createTextNode(String(a)));return s}function h(e,t={}){const s=document.createElementNS("http://www.w3.org/2000/svg","svg");return s.setAttribute("width",String(t.s||16)),s.setAttribute("height",String(t.s||16)),s.setAttribute("viewBox",t.viewBox||"0 0 24 24"),s.setAttribute("fill","none"),s.innerHTML=e.replace(/\{c\}/g,t.c||"currentColor"),s}const g={home:(e=16,t="currentColor")=>h(`<path d="M4 11l8-7 8 7v8a2 2 0 0 1-2 2h-3v-6h-6v6H6a2 2 0 0 1-2-2v-8z" stroke="${t}" stroke-width="1.7" stroke-linejoin="round"/>`,{s:e,c:t}),plug:(e=16,t="currentColor")=>h(`<path d="M9 3v5M15 3v5M6 8h12v3a6 6 0 0 1-6 6 6 6 0 0 1-6-6V8zm6 9v4" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),receipt:(e=16,t="currentColor")=>h(`<path d="M6 3h12v18l-3-2-3 2-3-2-3 2V3zm3 5h6M9 12h6M9 16h4" stroke="${t}" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"/>`,{s:e,c:t}),cog:(e=16,t="currentColor")=>h(`<circle cx="12" cy="12" r="3" stroke="${t}" stroke-width="1.7"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" stroke="${t}" stroke-width="1.5"/>`,{s:e,c:t}),refresh:(e=16,t="currentColor")=>h(`<path d="M3 12a9 9 0 0 1 15.5-6.3M21 12a9 9 0 0 1-15.5 6.3M19 3v5h-5M5 21v-5h5" stroke="${t}" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"/>`,{s:e,c:t}),search:(e=14,t="currentColor")=>h(`<circle cx="11" cy="11" r="7" stroke="${t}" stroke-width="1.8"/><path d="M21 21l-4-4" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),arrowUp:(e=12,t="currentColor")=>h(`<path d="M6 9V3M3 6l3-3 3 3" stroke="${t}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t,viewBox:"0 0 12 12"}),arrowOut:(e=14,t="currentColor")=>h(`<path d="M14 4h6v6M20 4l-9 9M11 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),power:(e=14,t="currentColor")=>h(`<path d="M12 4v8M7 7a7 7 0 1 0 10 0" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),close:(e=14,t="currentColor")=>h(`<path d="M6 6l12 12M18 6L6 18" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),check:(e=14,t="currentColor")=>h(`<path d="M4 12l5 5L20 6" stroke="${t}" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),copy:(e=14,t="currentColor")=>h(`<rect x="9" y="3" width="12" height="14" rx="2" stroke="${t}" stroke-width="1.6"/><path d="M5 7v12a2 2 0 0 0 2 2h10" stroke="${t}" stroke-width="1.6" stroke-linecap="round"/>`,{s:e,c:t}),bolt:(e=14,t="currentColor")=>h(`<path d="M13 2L4 14h7l-1 8 9-12h-7l1-8z" stroke="${t}" stroke-width="1.6" stroke-linejoin="round"/>`,{s:e,c:t}),expand:(e=14,t="currentColor")=>h(`<path d="M4 10V4h6M20 14v6h-6M4 4l7 7M20 20l-7-7" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),pause:(e=14,t="currentColor")=>h(`<rect x="6" y="5" width="4" height="14" rx="1" fill="${t}"/><rect x="14" y="5" width="4" height="14" rx="1" fill="${t}"/>`,{s:e,c:t}),play:(e=14,t="currentColor")=>h(`<path d="M7 5l12 7-12 7V5z" fill="${t}"/>`,{s:e,c:t}),download:(e=14,t="currentColor")=>h(`<path d="M12 4v12m0 0l-4-4m4 4l4-4M5 20h14" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),trash:(e=14,t="currentColor")=>h(`<path d="M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13M10 11v5M14 11v5" stroke="${t}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),spark:(e=14,t="currentColor")=>h(`<path d="M12 3v6M12 15v6M3 12h6M15 12h6M6 6l4 4M14 14l4 4M18 6l-4 4M6 18l4-4" stroke="${t}" stroke-width="1.5" stroke-linecap="round"/>`,{s:e,c:t}),mail:(e=16,t="currentColor")=>h(`<path d="M4 6h16v12H4z M4 6l8 7 8-7" stroke="${t}" stroke-width="1.7" stroke-linejoin="round"/>`,{s:e,c:t}),user:(e=16,t="currentColor")=>h(`<circle cx="12" cy="9" r="3.6" stroke="${t}" stroke-width="1.7"/><path d="M4.5 20.5a7.5 7.5 0 0 1 15 0" stroke="${t}" stroke-width="1.7" stroke-linecap="round"/>`,{s:e,c:t}),terminal:(e=16,t="currentColor")=>h(`<rect x="3" y="4" width="18" height="16" rx="2" stroke="${t}" stroke-width="1.7"/><path d="M7 9l3 3-3 3M13 16h4" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t})};function X(e=22,t="currentColor"){const n=document.createElement("img");return n.src="/brand/logo-icon.png",n.alt="ClawMoney",n.width=e,n.height=e,n.draggable=!1,n.style.objectFit="contain",n.style.flexShrink="0",n}function Lt(e=20){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");return n.setAttribute("width",String(e)),n.setAttribute("height",String(e)),n.setAttribute("viewBox","0 0 48 48"),n.innerHTML=`
61
+ `,ri="https://api.github.com/repos/jackleeio/clawmoney-releases/releases/latest",ci="https://github.com/jackleeio/clawmoney-releases/releases/latest";let D=null,P="idle";function di(e,t){const n=e.split(".").map(Number),s=t.split(".").map(Number);for(let a=0;a<3;a++){if((n[a]??0)>(s[a]??0))return!0;if((n[a]??0)<(s[a]??0))return!1}return!1}async function bt(e=!1){if(P!=="checking"){P="checking",e&&u();try{const t=new AbortController,n=setTimeout(()=>t.abort(),8e3),s=await fetch(ri,{signal:t.signal,headers:{Accept:"application/vnd.github+json"}});if(clearTimeout(n),!s.ok)throw new Error(String(s.status));const a=await s.json(),l=String(a.tag_name??"").replace(/^v/,"");l&&di(l,"0.3.1")?(D={version:l,url:a.html_url||ci},P="found"):P="latest"}catch{P="idle"}u()}}const o={dashboard:null,tweaks:Li(),ui:{route:"home",loginStep:"choose",googleState:"idle",loginEmail:"",loginCode:"",loginCodeError:!1,loginCodeVerifying:!1,loginCodeResendIn:45,loginLang:ot(),loginError:null,connectionsFilter:"全部",connectionsQuery:"",ordersTab:"recent",copiedChain:null,balance:48.27,modal:null},locale:ot()};let oe=["signedout","login"].includes(new URLSearchParams(location.search).get("state")||""),ce=!0,de=!0,f={query:"",filter:"all",paused:!1,logs:[],timer:null},B=null,A=[],F=!1,Ne=0;const ui=["全部","Image","Social","Developer","Crowdfunding","News","Finance","Podcast","Search"],wt=[{id:"gemini-image",name:"Gemini Image",cat:"Image",mode:"public",skills:2,status:"ready",hot:!0,brand:"#8e75d6",mark:"✦",slug:"googlegemini",caps:["生图","参考图编辑"]},{id:"codex-image",name:"Codex",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#000",mark:"C",slug:"openai",caps:["生图"]},{id:"chatgpt-image",name:"ChatGPT",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#10a37f",mark:"G",slug:"openai",caps:["生图"]},{id:"chatgpt-web-image",name:"ChatGPT Web",cat:"Image",mode:"public",skills:1,status:"ready",brand:"#10a37f",mark:"G",slug:"openai",caps:["生图"]},{id:"flow-image",name:"Flow",cat:"Image",mode:"public",skills:2,status:"ready",brand:"#4285f4",mark:"F",slug:"google",caps:["生图","生视频"]},{id:"x",name:"X / Twitter",cat:"Social",mode:"browser",skills:7,status:"ready",hot:!0,brand:"#000",mark:"𝕏",slug:"x",caps:["搜推文","用户推文","用户资料","线程","首页时间线","通知","账号数据"]},{id:"xiaohongshu",name:"小红书",cat:"Social",mode:"browser",skills:1,status:"ready",brand:"#ff2442",mark:"红",caps:["搜笔记"]},{id:"instagram",name:"Instagram",cat:"Social",mode:"browser",skills:2,status:"login",brand:"#e1306c",mark:"IG",slug:"instagram",caps:["搜用户","Explore feed"]},{id:"tiktok",name:"TikTok",cat:"Social",mode:"browser",skills:2,status:"ready",hot:!0,brand:"#000",mark:"♪",slug:"tiktok",caps:["搜视频","趋势 feed"]},{id:"youtube",name:"YouTube",cat:"Social",mode:"browser",skills:3,status:"ready",brand:"#ff0033",mark:"▶",slug:"youtube",caps:["搜视频","视频信息","字幕转录"]},{id:"reddit",name:"Reddit",cat:"Social",mode:"browser",skills:10,status:"ready",hot:!0,brand:"#ff4500",mark:"r",slug:"reddit",caps:["搜帖","热门 / 首页","帖子评论","subreddit 帖子","subreddit 信息","用户资料","用户帖子","用户评论"]},{id:"linkedin",name:"LinkedIn",cat:"Social",mode:"browser",skills:1,status:"ready",brand:"#0a66c2",mark:"in",slug:"linkedin",caps:["搜职位"]},{id:"facebook",name:"Facebook",cat:"Social",mode:"browser",skills:3,status:"login",brand:"#1877f2",mark:"f",slug:"facebook",caps:["搜帖子","Profile","Events"]},{id:"bilibili",name:"Bilibili",cat:"Social",mode:"browser",skills:12,status:"ready",brand:"#00aeec",mark:"B",slug:"bilibili",caps:["搜视频","热门 / 排行榜","视频详情","评论","动态","用户投稿 / 关注","字幕","AI 总结","下载"]},{id:"zhihu",name:"知乎",cat:"Social",mode:"browser",skills:7,status:"ready",brand:"#0066ff",mark:"知",slug:"zhihu",caps:["搜问题","热榜","问题详情","回答详情","回答评论","推荐流","文章导出"]},{id:"weibo",name:"微博",cat:"Social",mode:"browser",skills:7,status:"ready",brand:"#df2029",mark:"W",slug:"sinaweibo",caps:["搜帖子","热搜","时间线","用户资料","用户帖子","帖子详情","评论"]},{id:"douban",name:"豆瓣",cat:"Social",mode:"browser",skills:6,status:"ready",brand:"#33b048",mark:"豆",slug:"douban",caps:["搜索","热门电影 / 图书","Top 250","条目详情","图片"]},{id:"jike",name:"即刻",cat:"Social",mode:"browser",skills:5,status:"login",brand:"#ffe411",mark:"J",caps:["搜帖子","首页 feed","帖子详情","话题 feed","用户 feed"]},{id:"medium",name:"Medium",cat:"Social",mode:"browser",skills:4,status:"ready",brand:"#000",mark:"M",slug:"medium",caps:["搜文章","热门 feed","Tag feed","用户文章"]},{id:"weixin",name:"微信公众号",cat:"Social",mode:"browser",skills:3,status:"ready",brand:"#07c160",mark:"微",slug:"wechat",caps:["文章抓取","搜文章","文章导出"]},{id:"hackernews",name:"Hacker News",cat:"Developer",mode:"public",skills:9,status:"ready",hot:!0,brand:"#ff6600",mark:"Y",slug:"ycombinator",caps:["搜索","Top / New / Best","Show / Ask / Jobs","评论树","用户资料"]},{id:"stackoverflow",name:"Stack Overflow",cat:"Developer",mode:"public",skills:2,status:"ready",brand:"#f48024",mark:"S",slug:"stackoverflow",caps:["搜问题","热门问题"]},{id:"v2ex",name:"V2EX",cat:"Developer",mode:"public",skills:2,status:"ready",brand:"#1f1f1f",mark:"V",caps:["热门","最新"]},{id:"linux-do",name:"Linux.do",cat:"Developer",mode:"browser",skills:1,status:"ready",brand:"#222",mark:"L",caps:["搜话题"]},{id:"wikipedia",name:"Wikipedia",cat:"Developer",mode:"public",skills:5,status:"ready",brand:"#000",mark:"W",slug:"wikipedia",caps:["搜索","摘要","全文","随机文章","趋势文章"]},{id:"producthunt",name:"Product Hunt",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#da552f",mark:"P",slug:"producthunt",caps:["Top launches"]},{id:"ycombinator",name:"Y Combinator",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#fb651e",mark:"YC",slug:"ycombinator",caps:["Batch 公司(website/industry/stage)"]},{id:"indiehackers",name:"Indie Hackers",cat:"Developer",mode:"public",skills:1,status:"ready",brand:"#0e2439",mark:"IH",caps:["产品(revenue/uniques/followers)"]},{id:"kickstarter",name:"Kickstarter",cat:"Crowdfunding",mode:"browser",skills:1,status:"ready",hot:!0,brand:"#05ce78",mark:"KS",slug:"kickstarter",caps:["最新项目(creator = 线索)"]},{id:"indiegogo",name:"Indiegogo",cat:"Crowdfunding",mode:"browser",skills:1,status:"ready",brand:"#eb1478",mark:"IG",slug:"indiegogo",caps:["Explore 项目"]},{id:"substack",name:"Substack",cat:"Developer",mode:"public",skills:3,status:"ready",brand:"#ff6719",mark:"S",slug:"substack",caps:["搜文章","热门 feed","Publication posts"]},{id:"bbc",name:"BBC",cat:"News",mode:"public",skills:2,status:"ready",brand:"#bb1919",mark:"B",slug:"bbc",caps:["头条","Topic 头条"]},{id:"bloomberg",name:"Bloomberg",cat:"News",mode:"public",skills:11,status:"ready",hot:!0,brand:"#000",mark:"B",slug:"bloomberg",caps:["头条","文章","feed 别名","Markets","Tech","Politics","Economics","Businessweek","Industries","Opinion"]},{id:"sinafinance",name:"Sina Finance",cat:"News",mode:"public",skills:4,status:"ready",brand:"#e6162d",mark:"新",caps:["7×24","滚动新闻","股票行情","股票热榜"]},{id:"sinablog",name:"Sina Blog",cat:"News",mode:"public",skills:1,status:"ready",brand:"#e6162d",mark:"博",caps:["搜博客"]},{id:"36kr",name:"36Kr",cat:"News",mode:"public",skills:4,status:"ready",brand:"#0070ff",mark:"Kr",caps:["搜文章","热榜","最新新闻","文章正文"]},{id:"yahoo-finance",name:"Yahoo Finance",cat:"Finance",mode:"public",skills:1,status:"ready",brand:"#6001d2",mark:"Y!",slug:"yahoo",caps:["股票报价"]},{id:"xueqiu",name:"雪球",cat:"Finance",mode:"browser",skills:7,status:"ready",brand:"#cf3a3a",mark:"X",caps:["搜股票","热门","热股榜","行情","评论","K 线","财报日期"]},{id:"apple-podcasts",name:"Apple Podcasts",cat:"Podcast",mode:"public",skills:1,status:"ready",brand:"#9933cc",mark:"🎙",slug:"applepodcasts",caps:["搜节目"]},{id:"xiaoyuzhou",name:"小宇宙",cat:"Podcast",mode:"public",skills:4,status:"ready",brand:"#ec6056",mark:"宇",caps:["播客信息","节目列表","Episode 列表","Episode 详情"]},{id:"weread",name:"微信读书",cat:"Search",mode:"browser",skills:3,status:"login",brand:"#1d77fb",mark:"读",caps:["搜书","排行榜","书籍详情"]},{id:"ctrip",name:"携程",cat:"Search",mode:"browser",skills:4,status:"ready",brand:"#287dfa",mark:"C",slug:"trip",caps:["目的地搜索","酒店联想","酒店搜索","航班搜索"]},{id:"google",name:"Google",cat:"Search",mode:"browser",skills:4,status:"ready",brand:"#4285f4",mark:"G",slug:"google",caps:["网页搜索","Google News","搜索建议","Daily Trends"]}],z={"gemini-image":"gemini","codex-image":"codex","chatgpt-image":"chatgpt","chatgpt-web-image":"chatgpt_web","flow-image":"flow",x:"x",xiaohongshu:"xhs",tiktok:"tk",youtube:"yt",reddit:"rd",linkedin:"li",facebook:"fb",bilibili:"bili",zhihu:"zh",weibo:"wb",douban:"db",jike:"jk",medium:"med",weixin:"wxmp",hackernews:"hn",wikipedia:"wiki",bloomberg:"bbg",sinafinance:"sf","36kr":"36kr","yahoo-finance":"yf",xueqiu:"xq",xiaoyuzhou:"xyz",weread:"wr",ctrip:"ct",google:"gg",substack:"sub",bbc:"bbc",ycombinator:"yc",indiehackers:"ih",kickstarter:"ks",indiegogo:"igg"},et=(()=>{const e=new Map(wt.map(n=>[n.id,n])),t=new Map;for(const[n,s]of Object.entries(z)){const a=e.get(n);a&&t.set(s,a)}return t})();function gi(e){switch((e||"").split("/")[0].trim().toLowerCase()){case"generation":case"image":case"video":case"audio":return"Image";case"social":return"Social";case"coding":case"analysis":case"transformation":case"developer":return"Developer";case"news":return"News";case"finance":return"Finance";case"podcast":return"Podcast";case"search":case"reference":case"knowledge":return"Search";default:return"全部"}}let Ce=null,tt=null;const vt="clawmoney.platformSkills.v1",pi=15e3,T=new Map;let I=mi();function mi(){try{const e=localStorage.getItem(vt);if(!e)return new Map;const t=JSON.parse(e);return new Map(t.map(([n,s])=>[n,s.filter(a=>typeof a.skill_name=="string").sort((a,l)=>a.skill_name.localeCompare(l.skill_name))]))}catch{return new Map}}function yt(){try{localStorage.setItem(vt,JSON.stringify([...I.entries()]))}catch{}}function kt(e,t,n=!0){t.length&&(I.set(e,[...t].sort((s,a)=>s.skill_name.localeCompare(a.skill_name))),n&&yt())}function fi(e,t){const n=z[e];n&&kt(n,t)}function _t(){const e=o.dashboard?.skills;if(Ce&&tt===e)return Ce;const t=new Map;for(const n of e||[]){if(typeof n.skill_name!="string")continue;const s=n.skill_name.split(".")[0],a=t.get(s);a?a.push(n):t.set(s,[n])}for(const[n,s]of t)s.sort((a,l)=>a.skill_name.localeCompare(l.skill_name)),kt(n,s,!1);return t.size&&yt(),Ce=t,tt=e,t}function O(e){const t=z[e];return t?_t().get(t)||I.get(t)||[]:[]}const ie=(()=>{const e=new Map;return wt.forEach((t,n)=>e.set(t.id,(t.cat==="Image"?0:1)*1e3+n)),e})();let xe=null,it=null,nt=-1;function C(){const e=_t();if(xe&&it===o.dashboard?.skills&&nt===I.size)return xe;const t=new Set([...et.keys(),...e.keys(),...I.keys()]),n=[];for(const s of t){const a=e.get(s)||I.get(s)||[],l=et.get(s);if(l){n.push(l);continue}s in z||(z[s]=s),n.push({id:s,name:s.charAt(0).toUpperCase()+s.slice(1),cat:gi(a[0]?.category),mode:"public",skills:a.length,status:"ready",brand:"#8a8f98",mark:s.slice(0,2).toUpperCase(),caps:[]})}return n.sort((s,a)=>{const l=ie.has(s.id)?ie.get(s.id):Number.MAX_SAFE_INTEGER,r=ie.has(a.id)?ie.get(a.id):Number.MAX_SAFE_INTEGER;if(l!==r)return l-r;const d=s.cat==="Image"?0:1,p=a.cat==="Image"?0:1;return d!==p?d-p:s.id.localeCompare(a.id)}),xe=n,it=o.dashboard?.skills,nt=I.size,n}function hi(e,t){const n=z[t];return!!(n&&e.skill_name?.split(".")[0]===n)}function bi(e,t){const n=T.get(e);n?.syncTimer!=null&&window.clearTimeout(n.syncTimer),T.set(e,{active:t,expiresAt:Date.now()+pi,syncTimer:null}),qe(e)}function L(e){const t=T.get(e);t?.syncTimer!=null&&window.clearTimeout(t.syncTimer),T.delete(e),qe(e)}function St(e){const t=T.get(e);return t?t.expiresAt>Date.now()?!0:(L(e),!1):!1}function Ct(e){const t=e?.skills;if(!Array.isArray(t)||T.size===0)return;const n=Date.now();for(const[s,a]of T){if(a.expiresAt<=n){L(s);continue}const l=t.filter(d=>hi(d,s));if(!l.length){a.active||L(s);continue}if(l.every(d=>d.is_active!==!1===a.active)){L(s);continue}l.forEach(d=>{d.is_active=a.active})}}const xt={ready:"就绪",login:"需登录",needs:"需处理",off:"未启用",error:"错误"},Et={public:"Public",browser:"Browser"},wi=[{id:"ord_9hk2",t:"14:21",platform:"reddit",skill:"热门帖子 · r/macapps",status:"completed",amount:.18,dur:"2.4s"},{id:"ord_9hg4",t:"14:18",platform:"x",skill:"用户推文 · @sama",status:"completed",amount:.12,dur:"1.9s"},{id:"ord_9h95",t:"14:11",platform:"tiktok",skill:"趋势 feed",status:"completed",amount:.22,dur:"3.1s"},{id:"ord_9h82",t:"14:05",platform:"gemini-image",skill:"参考图编辑",status:"failed",amount:0,dur:"—"},{id:"ord_9h60",t:"13:58",platform:"bilibili",skill:"字幕转录",status:"completed",amount:.31,dur:"4.2s"},{id:"ord_9h41",t:"13:42",platform:"reddit",skill:"subreddit 帖子 · r/LocalLLaMA",status:"completed",amount:.09,dur:"1.1s"},{id:"ord_9h2a",t:"13:30",platform:"wikipedia",skill:'摘要 · "Bitcoin"',status:"completed",amount:.05,dur:"0.6s"},{id:"ord_9gz1",t:"13:21",platform:"youtube",skill:"视频信息",status:"completed",amount:.27,dur:"2.8s"},{id:"ord_9gr9",t:"12:54",platform:"xueqiu",skill:"热股榜",status:"completed",amount:.14,dur:"1.6s"},{id:"ord_9gn3",t:"12:40",platform:"medium",skill:"Tag feed · ai",status:"completed",amount:.11,dur:"2.0s"}],Me=wi.map(e=>({...e,createdAtMs:null})),Le=[{id:"esc_4112",deadline:"今日 18:00",platform:"x",skill:"品牌话题监测 · 30 分钟",reward:1.2,status:"in-progress"},{id:"esc_4108",deadline:"明日 09:00",platform:"reddit",skill:"r/macapps 周报",reward:.85,status:"queued"}],st=[1.82,2.4,3.1,2.85,3.95,4.62,5.31];function Be(){if(!fe())return{series:st,total:+st.reduce((l,r)=>l+r,0).toFixed(2)};const n=new Date;n.setHours(0,0,0,0);const s=n.getTime()-6*864e5,a=new Array(7).fill(0);for(const l of ue()){if(l.status!=="completed"||!l.createdAtMs)continue;const r=Math.floor((l.createdAtMs-s)/864e5);r>=0&&r<7&&(a[r]+=l.amount)}return{series:a.map(l=>+l.toFixed(2)),total:+a.reduce((l,r)=>l+r,0).toFixed(2)}}function vi(){if(!fe())return["周一","周二","周三","周四","周五","周六","今日"];const e=["周日","周一","周二","周三","周四","周五","周六"],t=new Date;return Array.from({length:7},(n,s)=>s===6?"今日":e[new Date(t.getTime()-(6-s)*864e5).getDay()])}const Fe=[{t:"14:21:08.317",lvl:"INFO",msg:"Order ord_9hk2 completed · reddit/hot · r/macapps · 2.4s"},{t:"14:20:46.992",lvl:"INFO",msg:"Uploaded artifact gemini_070f7429c6a9...png → cdn.clawmoney.ai"},{t:"14:20:12.118",lvl:"INFO",msg:"Surf relay handshake ok · peers=3"},{t:"14:19:55.461",lvl:"WARN",msg:"Rate limit headers from tiktok.com near threshold (82%)"},{t:"14:18:32.770",lvl:"INFO",msg:"Order ord_9hg4 completed · x/user-tweets @sama · 1.9s"},{t:"14:17:09.044",lvl:"INFO",msg:"Provider heartbeat → marketplace.clawmoney.ai 200 OK"},{t:"14:14:01.829",lvl:"ERROR",msg:"gemini-image/edit failed (401): INVALID_API_KEY · retrying with refreshed key"},{t:"14:13:55.612",lvl:"INFO",msg:"Refreshed provider API key (rotates every 30m)"},{t:"14:11:48.220",lvl:"INFO",msg:"Order ord_9h95 completed · tiktok/trends · 3.1s"},{t:"14:10:02.005",lvl:"DEBUG",msg:"BNBot bridge: chrome window 0x7f2 attached for bilibili"}],Ee={x:"x",yt:"youtube",tk:"tiktok",rd:"reddit",xhs:"xiaohongshu",bili:"bilibili",gg:"google",wxmp:"weixin",hn:"hackernews",wiki:"wikipedia",zh:"zhihu",med:"medium",sub:"substack",wb:"weibo",db:"douban",fb:"facebook",ct:"ctrip",li:"linkedin",yf:"yahoo-finance",bbc:"bbc",bbg:"bloomberg",sf:"sinafinance",jk:"jike",xq:"xueqiu",xyz:"xiaoyuzhou",wr:"weread",gemini:"gemini-image",codex:"codex-image",chatgpt:"chatgpt-image",chatgpt_web:"chatgpt-web-image",flow:"flow-image","36kr":"36kr",yc:"ycombinator",ih:"indiehackers",ks:"kickstarter",igg:"indiegogo"};function yi(){const e=o.dashboard?.history?.orders;return Array.isArray(e)?e:[]}function ki(){const e=o.dashboard?.history?.escrow;return Array.isArray(e)?e:[]}function fe(){return!!(o.dashboard&&"history"in o.dashboard)}function ue(){const e=yi().map(Si);return e.length>0||fe()?e:Me}function _i(){const e=ki().map(Ci);return e.length>0||fe()?e:Le}function Si(e){const t=String(e.status??"").toLowerCase(),n=t==="completed"||t==="success"?"completed":t==="pending"||t==="queued"||t==="processing"?"pending":"failed",s=Tt(e.completed_at??e.created_at),a=xi(e);return{id:String(e.id??e.order_id??"-"),t:Ei(s),platform:At(a,e),skill:a,status:n,amount:J(e.price??e.amount??e.cost_usd,0),dur:Ai(e.duration??e.duration_ms),createdAtMs:s}}function Ci(e){const t=String(e.status??"").toLowerCase(),n=String(e.skill??e.title??e.category??"托管任务");return{id:String(e.id??"-"),deadline:e.deadline?Mt(Tt(e.deadline)):"未设置",platform:At(n,e),skill:n,reward:J(e.budget??e.reward??e.price,0),status:t==="accepted"||t==="in_progress"||t==="assigned"?"in-progress":"queued"}}function xi(e){const t=e.skill_name??e.skill??e.skill_slug??e.category;if(typeof t=="string"&&t.trim())return t.trim();if(e.output_data&&typeof e.output_data=="object"&&"echoed"in e.output_data)return"echo";const n=String(e.skill_id??"");return n?`skill ${n.slice(0,8)}`:"service call"}function At(e,t={}){const n=String(t.platform??t.platform_id??t.provider??"").toLowerCase();if(n&&Ee[n])return Ee[n];const s=e.toLowerCase().split(/[._:/\s-]+/)[0];return Ee[s]??(s||"clawmoney")}function Tt(e){if(typeof e!="string"||!e.trim())return null;const t=e.trim(),n=/(?:z|[+-]\d{2}:?\d{2})$/i.test(t)?t:`${t}Z`,s=Date.parse(n);return Number.isFinite(s)?s:null}function Mt(e){return e?new Date(e).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit",hour12:!1}):"—"}function Ei(e){if(!e)return"—";const t=new Date(e),n=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),a=String(t.getHours()).padStart(2,"0"),l=String(t.getMinutes()).padStart(2,"0");return`${n}-${s} ${a}:${l}`}function Ai(e){if(typeof e!="number"||!Number.isFinite(e))return"—";const t=e>1e3?e/1e3:e;return`${t.toFixed(t<10?1:0)}s`}function J(e,t){const n=typeof e=="number"?e:Number(e);return Number.isFinite(n)?n:t}function Ti(e){if(!Number.isFinite(e)||e===0)return"$0.00";if(e>=1)return`$${e.toFixed(2)}`;let t=e.toFixed(4);return t=t.replace(/(\.\d{2}[1-9]*)0+$/,"$1"),`$${t}`}const Mi={zh:{tagline:"让你的 Agent 替你赚睡后收入",welcome:"欢迎回来",subtitle:"登录后即可启动 Agent 并接入市场。",google:"使用 Google 账号登录",or:"或",email:"使用邮箱继续",terms:"登录即表示同意服务条款。",backLink:"返回",emailTitle:"使用邮箱登录",emailSub:"我们会发一个 6 位验证码到你的邮箱。",emailLabel:"邮箱",emailCta:"发送验证码",codeTitle:"输入验证码",codeSubPre:"验证码已发送到 ",codeSubPost:"有效期 10 分钟。",codeError:"验证码不正确,请重试。",codeVerifying:"正在验证…",codeResend:"重新发送",codeResendIn:e=>`${e}s 后可重发`,codeChange:"换个邮箱",gRedirect:"正在跳转到 Google…",gGrant:"正在获取授权…",gSuccess:"登录成功!",gRedirectSub:"请在弹出的窗口中选择 Google 账号。",gGrantSub:"授权 ClawMoney 读取你的邮箱和基本信息。",gSuccessSub:"正在初始化 Agent 工作空间…",continueCta:"进入主页",fTerms:"服务条款",fPrivacy:"隐私政策",fSource:"查看源代码"},en:{tagline:"Let your Agent earn while you sleep",welcome:"Welcome back",subtitle:"Sign in to launch your Agent and join the market.",google:"Continue with Google",or:"or",email:"Continue with Email",terms:"By continuing you agree to the Terms of Service.",backLink:"Back",emailTitle:"Sign in with email",emailSub:"We'll send a 6-digit code to your inbox.",emailLabel:"Email",emailCta:"Send code",codeTitle:"Enter the code",codeSubPre:"Sent to ",codeSubPost:"Valid for 10 minutes.",codeError:"Incorrect code. Try again.",codeVerifying:"Verifying…",codeResend:"Resend code",codeResendIn:e=>`Resend in ${e}s`,codeChange:"Change email",gRedirect:"Redirecting to Google…",gGrant:"Granting access…",gSuccess:"Signed in!",gRedirectSub:"Pick a Google account in the popup window.",gGrantSub:"Allow ClawMoney to read your email and basic profile.",gSuccessSub:"Setting up your Agent workspace…",continueCta:"Enter dashboard",fTerms:"Terms",fPrivacy:"Privacy",fSource:"Source"}};function i(e,t={},...n){const s=document.createElement(e);for(const[a,l]of Object.entries(t))l===!1||l==null||(a==="class"?s.className=String(l):a==="style"&&typeof l=="object"?Object.assign(s.style,l):a.startsWith("on")&&typeof l=="function"?s.addEventListener(a.slice(2).toLowerCase(),l):a==="html"?s.innerHTML=String(l):a in s&&typeof s[a]!="object"?s[a]=l:s.setAttribute(a,String(l)));for(const a of n.flat())a==null||a===!1||s.append(a instanceof Node?a:document.createTextNode(String(a)));return s}function h(e,t={}){const s=document.createElementNS("http://www.w3.org/2000/svg","svg");return s.setAttribute("width",String(t.s||16)),s.setAttribute("height",String(t.s||16)),s.setAttribute("viewBox",t.viewBox||"0 0 24 24"),s.setAttribute("fill","none"),s.innerHTML=e.replace(/\{c\}/g,t.c||"currentColor"),s}const g={home:(e=16,t="currentColor")=>h(`<path d="M4 11l8-7 8 7v8a2 2 0 0 1-2 2h-3v-6h-6v6H6a2 2 0 0 1-2-2v-8z" stroke="${t}" stroke-width="1.7" stroke-linejoin="round"/>`,{s:e,c:t}),plug:(e=16,t="currentColor")=>h(`<path d="M9 3v5M15 3v5M6 8h12v3a6 6 0 0 1-6 6 6 6 0 0 1-6-6V8zm6 9v4" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),receipt:(e=16,t="currentColor")=>h(`<path d="M6 3h12v18l-3-2-3 2-3-2-3 2V3zm3 5h6M9 12h6M9 16h4" stroke="${t}" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"/>`,{s:e,c:t}),cog:(e=16,t="currentColor")=>h(`<circle cx="12" cy="12" r="3" stroke="${t}" stroke-width="1.7"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.9l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.9-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.9.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.9 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.9l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.9.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.9-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.9V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z" stroke="${t}" stroke-width="1.5"/>`,{s:e,c:t}),refresh:(e=16,t="currentColor")=>h(`<path d="M3 12a9 9 0 0 1 15.5-6.3M21 12a9 9 0 0 1-15.5 6.3M19 3v5h-5M5 21v-5h5" stroke="${t}" stroke-width="1.7" stroke-linejoin="round" stroke-linecap="round"/>`,{s:e,c:t}),search:(e=14,t="currentColor")=>h(`<circle cx="11" cy="11" r="7" stroke="${t}" stroke-width="1.8"/><path d="M21 21l-4-4" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),arrowUp:(e=12,t="currentColor")=>h(`<path d="M6 9V3M3 6l3-3 3 3" stroke="${t}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t,viewBox:"0 0 12 12"}),arrowOut:(e=14,t="currentColor")=>h(`<path d="M14 4h6v6M20 4l-9 9M11 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),power:(e=14,t="currentColor")=>h(`<path d="M12 4v8M7 7a7 7 0 1 0 10 0" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),close:(e=14,t="currentColor")=>h(`<path d="M6 6l12 12M18 6L6 18" stroke="${t}" stroke-width="1.8" stroke-linecap="round"/>`,{s:e,c:t}),check:(e=14,t="currentColor")=>h(`<path d="M4 12l5 5L20 6" stroke="${t}" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),copy:(e=14,t="currentColor")=>h(`<rect x="9" y="3" width="12" height="14" rx="2" stroke="${t}" stroke-width="1.6"/><path d="M5 7v12a2 2 0 0 0 2 2h10" stroke="${t}" stroke-width="1.6" stroke-linecap="round"/>`,{s:e,c:t}),bolt:(e=14,t="currentColor")=>h(`<path d="M13 2L4 14h7l-1 8 9-12h-7l1-8z" stroke="${t}" stroke-width="1.6" stroke-linejoin="round"/>`,{s:e,c:t}),expand:(e=14,t="currentColor")=>h(`<path d="M4 10V4h6M20 14v6h-6M4 4l7 7M20 20l-7-7" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),pause:(e=14,t="currentColor")=>h(`<rect x="6" y="5" width="4" height="14" rx="1" fill="${t}"/><rect x="14" y="5" width="4" height="14" rx="1" fill="${t}"/>`,{s:e,c:t}),play:(e=14,t="currentColor")=>h(`<path d="M7 5l12 7-12 7V5z" fill="${t}"/>`,{s:e,c:t}),download:(e=14,t="currentColor")=>h(`<path d="M12 4v12m0 0l-4-4m4 4l4-4M5 20h14" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),trash:(e=14,t="currentColor")=>h(`<path d="M4 7h16M9 7V4h6v3M6 7l1 13h10l1-13M10 11v5M14 11v5" stroke="${t}" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t}),spark:(e=14,t="currentColor")=>h(`<path d="M12 3v6M12 15v6M3 12h6M15 12h6M6 6l4 4M14 14l4 4M18 6l-4 4M6 18l4-4" stroke="${t}" stroke-width="1.5" stroke-linecap="round"/>`,{s:e,c:t}),mail:(e=16,t="currentColor")=>h(`<path d="M4 6h16v12H4z M4 6l8 7 8-7" stroke="${t}" stroke-width="1.7" stroke-linejoin="round"/>`,{s:e,c:t}),user:(e=16,t="currentColor")=>h(`<circle cx="12" cy="9" r="3.6" stroke="${t}" stroke-width="1.7"/><path d="M4.5 20.5a7.5 7.5 0 0 1 15 0" stroke="${t}" stroke-width="1.7" stroke-linecap="round"/>`,{s:e,c:t}),terminal:(e=16,t="currentColor")=>h(`<rect x="3" y="4" width="18" height="16" rx="2" stroke="${t}" stroke-width="1.7"/><path d="M7 9l3 3-3 3M13 16h4" stroke="${t}" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"/>`,{s:e,c:t})};function X(e=22,t="currentColor"){const n=document.createElement("img");return n.src="/brand/logo-icon.png",n.alt="ClawMoney",n.width=e,n.height=e,n.draggable=!1,n.style.objectFit="contain",n.style.flexShrink="0",n}function Lt(e=20){const n=document.createElementNS("http://www.w3.org/2000/svg","svg");return n.setAttribute("width",String(e)),n.setAttribute("height",String(e)),n.setAttribute("viewBox","0 0 48 48"),n.innerHTML=`
62
62
  <path fill="#4285F4" d="M45.12 24.5c0-1.56-.14-3.06-.4-4.5H24v8.51h11.84c-.51 2.75-2.06 5.08-4.39 6.64v5.52h7.11c4.16-3.83 6.56-9.47 6.56-16.17z"/>
63
63
  <path fill="#34A853" d="M24 46c5.94 0 10.92-1.97 14.56-5.33l-7.11-5.52c-1.97 1.32-4.49 2.1-7.45 2.1-5.73 0-10.58-3.87-12.31-9.07H4.34v5.7C7.96 41.07 15.4 46 24 46z"/>
64
64
  <path fill="#FBBC05" d="M11.69 28.18c-.44-1.32-.69-2.73-.69-4.18s.25-2.86.69-4.18v-5.7H4.34A21.99 21.99 0 0 0 2 24c0 3.55.85 6.91 2.34 9.88l7.35-5.7z"/>
65
65
  <path fill="#EA4335" d="M24 10.75c3.23 0 6.13 1.11 8.41 3.29l6.31-6.31C34.91 4.18 29.93 2 24 2 15.4 2 7.96 6.93 4.34 14.12l7.35 5.7C13.42 14.62 18.27 10.75 24 10.75z"/>
66
- `,n}function Mi(){try{const e=localStorage.getItem("clawmoney.tweaks.v2");if(e)return{...ot(),...JSON.parse(e)}}catch{}return ot()}function ot(){return{dark:!1,accent:"#F0B90B",density:"comfy",showBg:!0}}function Li(){try{localStorage.setItem("clawmoney.tweaks.v2",JSON.stringify(o.tweaks))}catch{}}function lt(){const e=new URLSearchParams(location.search).get("lang");if(e==="en"||e==="zh")return localStorage.setItem("clawmoney.locale",e),e;const t=localStorage.getItem("clawmoney.locale");return t==="en"||t==="zh"?t:navigator.language.toLowerCase().startsWith("zh")?"zh":"en"}function Ri(){const e=x();document.documentElement.classList.toggle("cm-dark",o.tweaks.dark),document.documentElement.classList.toggle("is-tauri-root",e),document.documentElement.style.setProperty("--accent",o.tweaks.accent),document.body.classList.toggle("density-compact",o.tweaks.density==="compact"),document.body.classList.toggle("is-tauri",e);const t=document.getElementById("desktop");t&&(t.style.opacity=e?"0":o.tweaks.showBg?"1":"0")}function u(){Ri();const e=document.getElementById("app");e.innerHTML="";const t=o.dashboard;if(!t){e.append(Pi()),Re();return}!!t?.configured?e.append($i(),Di()):e.append(i("div",{class:"login-corner-traffic"},Rt()),_n()),o.ui.modal?.kind==="platform"?e.append(fn(o.ui.modal.id)):o.ui.modal?.kind==="settings"?e.append(On(o.ui.modal.section)):o.ui.modal?.kind==="log"&&e.append(Hn()),Re(),document.getElementById("__perf")?.remove()}function Pi(){return i("div",{class:"boot-screen","data-tauri-drag-region":!0},i("div",{class:"boot-mark"},X(42,o.tweaks.accent)),i("div",{class:"boot-title"},"Claw Money"),i("div",{class:"boot-subtitle"},o.locale==="zh"?"你的 Agent,值得一份薪水":"Your agent deserves a paycheque."),i("div",{class:"boot-spinner"}))}function Re(){const e=document.getElementById("app");if(!e)return;if(x()){e.style.transform="";return}const t=1280,n=820,s=40,a=(window.innerWidth-s)/t,l=(window.innerHeight-s)/n,r=Math.min(1,a,l);e.style.transform=`scale(${r})`}function Rt(){const e=t=>n=>{if(n.stopPropagation(),!x())return;const s=Ne();t==="close"&&s.close(),t==="minimize"&&s.minimize(),t==="zoom"&&s.toggleMaximize()};return i("div",{class:"traffic"},i("button",{class:"traffic-dot close",title:"Close",onclick:e("close")},i("span",{},"×")),i("button",{class:"traffic-dot min",title:"Minimize",onclick:e("minimize")},i("span",{},"−")),i("button",{class:"traffic-dot max",title:"Maximize",onclick:e("zoom")},i("span",{},"+")))}function $i(){const e=o.ui.route,t=o.dashboard?.account?.data||{},n=o.dashboard?.config||{},s=t.name||t.slug||n.agent_slug||"agent";return i("aside",{class:"sidebar"},i("div",{class:"sidebar-header","data-tauri-drag-region":!0},Rt()),i("div",{class:"brand","data-tauri-drag-region":!0},X(22,o.tweaks.accent),i("span",{class:"brand-tag"},"v0.3.1")),i("nav",{class:"nav"},q("home","首页",g.home(15),e==="home"),q("connections","平台连接",g.plug(15),e==="connections"),q("relay","Agent 上架",g.bolt(15),e==="relay"),q("orders","订单",g.receipt(15),e==="orders"),q("logs","日志",g.terminal(15),e==="logs")),i("div",{class:"sidebar-spacer"}),Ii(s))}function q(e,t,n,s,a){return i("button",{class:`nav-item ${s?"active":""}`,onclick:()=>{o.ui.route!==e&&(o.ui.route=e,u())}},i("span",{class:"nav-icon"},n),i("span",{class:"nav-label"},t),null)}function Ii(e){return i("div",{class:"agent-card"},i("div",{class:"agent-row"},i("div",{class:"agent-avatar"},e.slice(0,2)),i("div",{class:"agent-info"},i("div",{class:"agent-name"},e),i("div",{class:"agent-status"},i("span",{class:"agent-status-dot"}),"active")),i("button",{class:"icon-button",title:"设置",onclick:()=>zn()},g.cog(13))))}function Di(){const e=i("div",{class:"main-scroll cm-scroll"});switch(o.ui.route){case"home":e.append(Wi());break;case"connections":e.append(nn());break;case"relay":e.append(Ui());break;case"orders":e.append(hn());break;case"logs":e.append(Zi());break}return i("main",{class:"main"},i("div",{class:"titlebar","data-tauri-drag-region":!0}),e)}function Pt(){const e=o.dashboard?.preflight;return!e||typeof e!="object"?null:e}function zi(e){const t=Pt();if(!t?.platforms)return null;const n=z[e.id]||e.id;return t.platforms[n]||null}function Ni(){if(!o.dashboard?.configured)return null;const e=o.dashboard?.extension||{};if(e.connected)return null;const t=!!e.installed;return i("div",{class:"card ext-offline-notice"},i("div",{class:"ext-offline-head"},i("span",{class:"ext-offline-icon"},g.power(15)),i("div",{class:"ext-offline-text"},i("div",{class:"ext-offline-title"},t?"Chrome / BNBot 插件未连接":"BNBot 插件未安装"),i("div",{class:"ext-offline-sub"},t?"当前接不到社交平台订单(reddit / 哔哩哔哩 / 知乎 / 微博 / 豆瓣 等)。打开 Chrome 并确保插件已启用即可恢复。":"社交平台订单需要 BNBot 浏览器插件。安装并登录对应站点后即可接单。"))),i("div",{class:"ext-offline-actions"},t?b("打开 Chrome",{size:"sm",leading:g.arrowOut(11),onClick:()=>{c("launch_chrome").catch(()=>{})}}):b("安装插件",{size:"sm",leading:g.arrowOut(11),onClick:()=>Y(e.installUrl||"https://chromewebstore.google.com/detail/bnbot/haammgigdkckogcgnbkigfleejpaiiln")})))}function Oi(){const e=o.dashboard?.taskService;if(e?.running&&e.phase==="probing")return i("div",{class:"card preflight-notice probing"},i("div",{class:"preflight-notice-head"},i("span",{class:"preflight-notice-icon"},i("span",{class:"pill-spinner"})),i("div",{class:"preflight-notice-text"},i("div",{class:"preflight-notice-title"},"接单服务已启动,正在检测平台登录态…"),i("div",{class:"preflight-notice-sub"},"首次检测约 1-2 分钟,完成后自动开始接单"))));const t=Pt();if(!t?.platforms)return null;const n=Object.entries(t.platforms).filter(([,a])=>a.status==="failed"&&a.actionable!==!1);if(!n.length)return null;const s=n.length;return i("div",{class:"card preflight-notice"},i("div",{class:"preflight-notice-head"},i("span",{class:"preflight-notice-icon"},g.bolt(15)),i("div",{class:"preflight-notice-text"},i("div",{class:"preflight-notice-title"},s>0?`${s} 个平台暂不接单`:"部分平台待确认"),i("div",{class:"preflight-notice-sub"},"装好依赖或登录对应站点后,接单守护重启会自动恢复"))),i("div",{class:"preflight-issue-list"},...n.map(([a,l])=>Bi(a,l))))}function Bi(e,t){const n=t.status==="failed"?"err":"warn";return i("div",{class:"preflight-issue"},i("span",{class:`preflight-issue-dot tone-${n}`}),i("div",{class:"preflight-issue-body"},i("div",{class:"preflight-issue-name"},i("span",{},t.label||e),t.skills?i("span",{class:"preflight-issue-count"},`${t.skills} 技能已暂停`):null),t.reason?i("div",{class:"preflight-issue-reason"},t.reason):null,t.hint?i("div",{class:"preflight-issue-hint"},t.hint):null),t.loginUrl?b("去登录",{size:"sm",kind:"soft",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:t.loginUrl})}}):null)}function Fi(){return D?i("div",{class:"card update-notice"},i("div",{class:"update-notice-text"},i("div",{class:"update-notice-title"},`发现新版本 v${D.version}`),i("div",{class:"update-notice-sub"},"当前 v0.3.1,下载安装包后替换即可")),b("去下载",{size:"sm",kind:"solid",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:D.url})}})):null}function Wi(){const e=o.dashboard?.wallet||{},t=e.address||o.dashboard?.config?.wallet_address||"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B",n=typeof e.balance=="number"?e.balance:o.ui.balance;o.ui.balance=n;const a=+(n*.62).toFixed(2),l=+(n-a).toFixed(2),r=t.slice(0,6)+"…"+t.slice(-4),d=o.dashboard?.extension||{},p=o.dashboard?.services||{};return!_&&!G&&(G=!0,be()),i("div",{class:"row-stack connections-stack"},Q("首页","账户、钱包、和本地服务的实时状态",i("div",{class:"page-actions"},b("刷新",{size:"sm",leading:g.refresh(13),onClick:E}),b("退出",{size:"sm",kind:"ghost",danger:!0,leading:g.power(13),onClick:Qt}))),Fi(),Ni(),i("div",{class:"row-hero"},Vi(n,a,l,t,r),Ki(d)),i("div",{class:"row-services"},Ji(p),en()))}let ge=null,pe=!1,Pe="";async function he(){try{ge=await m("llm_detect")}catch{ge=null}u()}function Gi(e){return e==="codex"?"Codex":e==="chatgpt-web"?"ChatGPT 网页":e==="gemini"?"Gemini":e}async function rt(e,t,n){Pe=e,u();try{if(t==="install")await m("llm_install",{cli:e});else if(t==="login"){const s=await m("llm_login",{cli:e});s?.message&&window.alert(s.message)}else await m("llm_upload",{cli:e,model:n})}catch(s){window.alert(`操作失败: ${s instanceof Error?s.message:String(s)}`)}finally{Pe="",await he()}}async function Hi(e,t){const n=y?.disabledClis??[],s=t?n.filter(a=>a!==e):[...new Set([...n,e])];y={...y??{},disabledClis:s},u();try{await m("llm_set_enabled",{cli:e,enabled:t})}catch(a){y={...y??{},disabledClis:n},u(),window.alert(`设置失败:${a instanceof Error?a.message:String(a)}`);return}be()}function qi(e,t){const n=e.cli,s=Pe===n,a=e.defaultModel||"",l=(y?.disabledClis??[]).includes(n),r=!!(e.installed&&e.loggedIn);let d,p,w=null;return e.installed?e.loggedIn?l?(p="off",d=S("已暂停","off")):t?(p="ok",d=S("接单中","ok")):(p="ok",d=S("已就绪","ok")):(p="warn",d=S("待登录","warn"),w=n==="chatgpt-web"?b("去登录",{size:"sm",kind:"soft",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:"https://chatgpt.com/"})}}):b(s?"登录中…":"登录",{size:"sm",kind:"soft",onClick:s?void 0:()=>{rt(n,"login")}})):(p="off",d=S("未安装","off"),w=b(s?"安装中…":"安装",{size:"sm",kind:"soft",onClick:s?void 0:()=>{rt(n,"install")}})),i("div",{class:`llm-provider-row${l?" is-disabled":""}`},i("span",{class:`llm-provider-dot tone-${l?"off":p}${p==="ok"&&t&&!l?" is-live":""}`}),i("div",{class:"llm-provider-info"},i("div",{class:"llm-provider-name"},Gi(n)),a?i("div",{class:"llm-provider-model"},a):null),i("div",{class:"llm-provider-side"},d,w,r?$e(!l,R=>{Hi(n,R)}):null))}let y=null,me=!1,_=null,G=!1;async function be(){try{_=await m("relay_earnings")}catch{_=null}u()}function Ae(e,t){return i("div",{class:"relay-earning-stat"},i("div",{class:"relay-earning-value"},e),i("div",{class:"relay-earning-label"},t))}async function Ge(){try{y=await m("relay_settings_get")}catch{y=null}u()}async function U(e){const t={...y??{},...e};y=t,u();try{await m("relay_settings_set",{settings:t})}catch(n){window.alert(`保存失败: ${n instanceof Error?n.message:String(n)}`)}await Ge(),await he()}function $e(e,t){return i("button",{class:`relay-switch ${e?"on":"off"}`,onclick:()=>t(!e)},i("span",{class:"relay-switch-knob"}))}function Ui(){!y&&!me&&(me=!0,Ge()),!ge&&!pe&&(pe=!0,he()),!_&&!G&&(G=!0,be());const e=y??{concurrency:2,online:!1,scheduleEnabled:!1,scheduleStart:"22:00",scheduleEnd:"08:00"},t=ge?.providers??[],n=e.online===!0,s=e.scheduleEnabled===!0;return i("div",{class:"row-stack connections-stack"},Q("Agent 上架","让你的 Codex / Gemini,从今天开始赚钱",i("div",{class:"page-actions"})),Oi(),i("div",{class:"card relay-toggle-card"},i("div",{class:"relay-toggle-info"},i("div",{class:"relay-toggle-title"},n?"接单中 · 已上线":"未上线"),i("div",{class:"relay-toggle-sub"},n?"买家正在调用你上架的订阅算力":"打开开关,下方就绪的订阅一起上架接单")),$e(n,a=>{U({online:a})})),t.length?i("div",{class:"card"},i("div",{class:"card-title"},"我的 Agent"),i("div",{class:"llm-provider-list"},...t.map(a=>qi(a,n)))):null,_?.ok?i("div",{class:"card"},i("div",{class:"card-title"},"接单收益"),i("div",{class:"relay-earnings-grid"},Ae(`$${(_.totalEarned??0).toFixed(4)}`,"累计收益"),Ae(String(_.totalRequests??0),"累计调用"),Ae(`$${(_.dailySpent??0).toFixed(4)}`,"今日流水"))):null,i("div",{class:"card"},i("div",{class:"card-title"},"接单设置"),i("div",{class:"relay-setting-row"},i("div",{class:"relay-setting-label"},i("div",{},"最大并发请求数"),i("div",{class:"relay-setting-hint"},"同时处理几个请求 · 越高越容易触发风控,建议 2–5")),i("input",{type:"number",min:"1",max:"20",value:String(e.concurrency??2),class:"relay-number-input",onchange:a=>{U({concurrency:Number(a.target.value)||5})}})),i("div",{class:"relay-setting-row"},i("div",{class:"relay-setting-label"},i("div",{},"每天定时接单"),i("div",{class:"relay-setting-hint"},"只在时段内接单(如晚上 IP 空闲时),时段外自动暂停")),$e(s,a=>{U({scheduleEnabled:a})})),s?i("div",{class:"relay-schedule-row"},i("input",{type:"time",value:String(e.scheduleStart??"22:00"),class:"relay-time-input",onchange:a=>{U({scheduleStart:a.target.value})}}),i("span",{class:"relay-schedule-dash"},"—"),i("input",{type:"time",value:String(e.scheduleEnd??"08:00"),class:"relay-time-input",onchange:a=>{U({scheduleEnd:a.target.value})}})):null))}function Vi(e,t,n,s,a){const l=Be(),r=o.dashboard?.orderEarnings,d=r?.ok?J(r.pending,0):0,p=_?.ok?_.pending??0:0,w=+(d+p).toFixed(6),R=e+w;return i("div",{class:"card"},i("div",{class:"balance-head"},i("div",{class:"eyebrow"},"钱包总余额"),l.total>0?i("span",{class:"balance-delta"},g.arrowUp(12),` +$${l.total.toFixed(2)} / 7d`):null),i("div",{class:"balance-row"},i("div",{class:"balance-value"},`$${R.toFixed(2)}`),Jt(l.series,140,48,o.tweaks.accent)),i("div",{class:"chain-list"},ct("base","Base",t,a,s),ct("bsc","BNB Smart Chain",n,a,s),w>1e-4?ji(w):null))}function ji(e){return i("div",{class:"chain-row pending-row"},i("div",{class:"chain-glyph pending-glyph",html:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>'}),i("div",{class:"chain-info"},i("div",{class:"chain-name"},"待发送"),i("div",{class:"pending-note"},"已赚待结算 · 自动打款到钱包")),i("div",{class:"chain-balance"},`$${e.toFixed(2)}`))}function ct(e,t,n,s,a){const l=o.ui.copiedChain===e;return i("div",{class:"chain-row"},i("div",{class:"chain-glyph",html:e==="base"?'<svg width="14" height="14" viewBox="0 0 111 111"><path d="M54.921 110.034c30.412 0 55.07-24.66 55.07-55.067C109.991 24.56 85.333-.107 54.921-.107c-28.851 0-52.534 22.353-54.7 50.86h72.81v8.491H.22c2.166 28.51 25.85 50.787 54.7 50.787Z" fill="#0052FF"/></svg>':'<svg width="14" height="14" viewBox="0 0 126.61 126.61"><path fill="#F3BA2F" d="m38.73 53.2 24.59-24.58 24.6 24.6 14.3-14.31L63.32 0 24.42 38.9zM0 63.31l14.3-14.31 14.31 14.31-14.31 14.3zm38.73 10.11 24.59 24.59 24.6-24.6 14.31 14.29-38.9 38.91-38.91-38.88zM97.99 63.31l14.3-14.31 14.31 14.3-14.31 14.32zM77.83 63.3 63.32 48.78 52.59 59.51l-1.23 1.24-2.54 2.54 14.5 14.5z"/></svg>'}),i("div",{class:"chain-info"},i("div",{class:"chain-name"},t),i("button",{class:`chain-addr ${l?"copied":""}`,title:"点击复制地址",onclick:()=>Yi(e,a)},s,l?g.check(10):g.copy(10),l?i("span",{style:{fontSize:"9.5px",fontWeight:"600"}},"已复制"):null)),i("div",{class:"chain-balance"},`$${n.toFixed(2)}`))}function Yi(e,t){try{navigator.clipboard?.writeText(t)}catch{}o.ui.copiedChain=e,u(),setTimeout(()=>{o.ui.copiedChain=null,u()},1400)}function Ki(e){const t=!!e.connected,n=!!e.installed,s=t?"已连接":n?"未连接":"未安装",a=t?"ok":"warn";return i("div",{class:"card"},i("div",{class:"balance-head"},i("div",{class:"eyebrow"},"浏览器插件"),S(s,a)),t?(()=>{const l=String(e.detail||""),r=l.match(/\(v([\d.]+)\)/)?.[1]||null,d=l.match(/wss?:\/\/[^\s]+/)?.[0]||null;return i("div",{style:{marginTop:"2px"}},r?dt("插件版本",`v${r}`):null,d?dt("本地服务",d):null)})():null,t?null:i("div",{class:"plugin-line"},n?"插件已安装,等待与浏览器握手 …":"尚未安装 BNBot 浏览器插件。"),n?null:i("div",{class:"plugin-actions"},b("安装插件",{kind:"soft",size:"sm",leading:g.arrowOut(11),onClick:()=>Y(e.installUrl||"https://chromewebstore.google.com/")})))}function dt(e,t){return i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",padding:"9px 2px"}},i("span",{style:{fontSize:"13px",color:"var(--muted, #8b8b8b)"}},e),i("span",{style:{fontSize:"13px",fontFamily:"var(--mono, ui-monospace, monospace)",color:"var(--text, inherit)",textAlign:"right"}},t))}function Ji(e){const t=e.market||{},n=e.surf||{};return i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"本地服务"),i("div",{class:"card-subtitle"},"工作进程与 Surf 中继状态")),b("全部启动",{kind:"ghost",size:"sm",onClick:jn})),i("div",{class:"service-list"},ut("Market Provider",Xi(t),t.running,()=>gt("market")),ut("Surf / Relay Service",Qi(n),n.running,()=>gt("surf"))))}function Xi(e){return e.running?`PID ${e.pid||"-"} · 正在接收服务调用`:"无进程 · 需要手动启动"}function Qi(e){return e.running?`PID ${e.pid||"-"} · 中继运行中`:"未启动 · Relay 离线"}function ut(e,t,n,s){return i("div",{class:"service-row"},i("div",{},i("div",{class:"service-head"},i("span",{class:`service-dot ${n?"running":""}`}),i("div",{class:"service-name"},e)),i("div",{class:"service-sub"},t)),i("div",{class:"service-actions"},S(n?"运行中":"已停止",n?"ok":"off"),b(n?"停止":"启动",{kind:n?"ghost":"soft",size:"sm",onClick:s})))}function Zi(){const e=o.dashboard?.providerLog||[],t=$t(e),n=i("div",{class:"log-body cm-scroll","data-provider-log-body":"true",style:{flex:"1",maxHeight:"none"}},...It(t));return requestAnimationFrame(()=>{n.scrollTop=n.scrollHeight}),i("div",{class:"row-stack",style:{height:"100%"}},Q("Provider 日志","本地 Market Provider 实时输出",i("div",{class:"page-actions"},i("span",{class:"log-live-tag"},i("span",{class:"log-live-dot"}),"LIVE"),b("刷新",{size:"sm",leading:g.refresh(13),onClick:E}))),i("div",{class:"card flush",style:{flex:"1",display:"flex",flexDirection:"column",minHeight:"0"}},n))}function en(){const e=we(),t=o.dashboard?.orderEarnings,n=t?.ok?J(t.count,ue().length):ue().length,s=C().filter(a=>a.status==="ready"&&!qe(a)).reduce((a,l)=>a+(l.skills||0),0);return i("div",{class:"card"},i("div",{class:"log-card-head"},i("div",{},i("div",{class:"card-title"},"接单概况"),i("div",{class:"card-subtitle"},"在线接单平台与累计调用")),i("button",{class:"log-expand",title:"查看 Provider 日志",onclick:()=>{o.ui.route="logs",u()}},g.terminal(13))),i("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"14px",padding:"12px 2px 4px"}},W("接单平台",String(e.ready)),W("服务数量",String(s)),W("调用次数",String(n))))}function $t(e){return Array.isArray(e)&&e.length>0?e.map(t=>tn(String(t))):x()?[]:[...Fe]}function tn(e){const t=d=>/^(INFO|WARN|ERROR|DEBUG|TRACE)$/i.test(d),n=e.match(/(\d{2}:\d{2}:\d{2}(?:\.\d{3})?)/),s=n?n[1]:"",a=e.match(/\b(INFO|WARN|ERROR|DEBUG|TRACE)\b/i),l=a?a[1].toUpperCase():"INFO";let r=e.replace(/^\[[^\]]+\]\s*/,"").replace(/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(\.\d+)?Z?\s*/,"").trim();return r=r.replace(/^\[(INFO|WARN|ERROR|DEBUG|TRACE)\]\s*/i,""),t(r.split(/\s/)[0]||"")&&(r=r.replace(/^\S+\s+/,"")),{t:s,lvl:l,msg:r||e}}function He(e){return i("div",{class:"log-line"},i("span",{class:"log-time"},e.t),i("span",{class:`log-level ${e.lvl}`},e.lvl),i("span",{class:`log-msg ${e.lvl}`},e.msg))}function It(e){return e.length===0?[i("div",{style:{padding:"22px 24px",color:"var(--text-muted)"}},"暂无 Provider 日志")]:e.map(He)}function nn(){const e=o.ui.connectionsFilter,t=o.ui.connectionsQuery.toLowerCase(),n=C().filter(a=>(e==="全部"||a.cat===e)&&(!t||a.name.toLowerCase().includes(t))),s=we();return i("div",{class:"row-stack"},Q("平台连接",sn(s),i("div",{class:"page-actions"},qn(o.ui.connectionsQuery,a=>{o.ui.connectionsQuery=a,u()}))),i("div",{class:"category-chips cm-noscrollbar"},...ui.map(a=>{const l=a===e,r=C(),d=a==="全部"?r.length:r.filter(p=>p.cat===a).length;return i("button",{class:`chip ${l?"active":""}`,onclick:()=>{o.ui.connectionsFilter=a,u()}},a,i("span",{class:"chip-count"},String(d)))})),i("div",{class:`platform-grid ${o.tweaks.density==="compact"?"compact":""}`},...n.length===0?[i("div",{class:"empty-state"},"没有匹配的平台")]:n.map(on)))}function Dt(e=we()){return[i("b",{style:{color:"var(--text)",fontWeight:"600"}},String(e.ready))," 就绪 · ",i("b",{style:{color:"var(--warn)",fontWeight:"600"}},String(e.needs))," 需登录"]}function sn(e=we()){return i("span",{"data-connections-stats":!0},...Dt(e))}function an(){document.querySelectorAll("[data-connections-stats]").forEach(e=>{e.replaceChildren(...Dt())})}function we(){let e=0,t=0,n=0;const s=C();for(const a of s)Ct(a.id)?n++:qe(a)||(a.status==="ready"?e++:(a.status==="login"||a.status==="needs")&&t++);return{ready:e,needs:t,updating:n,total:s.length}}function on(e){return i("button",{class:"platform-card","data-platform-card":e.id,onclick:()=>{o.ui.modal={kind:"platform",id:e.id},u()}},ve(e,36),i("div",{class:"platform-info"},i("div",{class:"platform-row1"},i("div",{class:"platform-name"},e.name)),i("div",{class:"platform-row2"},i("span",{class:`mode-tag ${e.mode}`},At[e.mode]),i("span",{title:"技能数",style:{flexShrink:"0",fontSize:"11px",fontWeight:"700",color:"var(--text-muted)",background:"var(--line)",borderRadius:"6px",padding:"1px 7px"}},String(N(e.id).length||e.skills)))),zt(e))}function qe(e){const t=N(e.id);return t.length>0&&t.every(n=>n.is_active===!1)}function ln(e){if(Ct(e.id))return{label:"更新中",tone:"sync",syncing:!0};if(qe(e))return{label:"已停用",tone:"off",syncing:!1};const t=zi(e);return t?.status==="failed"?{label:t.reason||"依赖未就绪",tone:"err",syncing:!1}:t?.status==="unknown"?{label:t.reason||"待确认",tone:"warn",syncing:!1}:{label:Et[e.status],tone:Nt(e.status),syncing:!1}}function zt(e){const t=ln(e);return t.syncing?i("span",{class:`pill platform-status-pill tone-${t.tone} icon-only`,title:"后台同步中","data-platform-status":e.id},i("span",{class:"pill-spinner"})):i("span",{class:`platform-status-light tone-${t.tone}`,title:t.label,"aria-label":t.label,"data-platform-status":e.id},i("span",{class:"status-light-core"}))}function Nt(e){return e==="ready"?"ok":e==="login"||e==="needs"?"warn":e==="error"?"err":"off"}const rn={openai:"M22.282 9.821a6 6 0 0 0-.516-4.91a6.05 6.05 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a6 6 0 0 0-3.998 2.9a6.05 6.05 0 0 0 .743 7.097a5.98 5.98 0 0 0 .51 4.911a6.05 6.05 0 0 0 6.515 2.9A6 6 0 0 0 13.26 24a6.06 6.06 0 0 0 5.772-4.206a6 6 0 0 0 3.997-2.9a6.06 6.06 0 0 0-.747-7.073M13.26 22.43a4.48 4.48 0 0 1-2.876-1.04l.141-.081l4.779-2.758a.8.8 0 0 0 .392-.681v-6.737l2.02 1.168a.07.07 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494M3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085l4.783 2.759a.77.77 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646M2.34 7.896a4.5 4.5 0 0 1 2.366-1.973V11.6a.77.77 0 0 0 .388.677l5.815 3.354l-2.02 1.168a.08.08 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855l-5.833-3.387L15.119 7.2a.08.08 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667m2.01-3.023l-.141-.085l-4.774-2.782a.78.78 0 0 0-.785 0L9.409 9.23V6.897a.07.07 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135l-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.8.8 0 0 0-.393.681zm1.097-2.365l2.602-1.5l2.607 1.5v2.999l-2.597 1.5l-2.607-1.5Z",googlegemini:"M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81",google:"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133c-1.147 1.147-2.933 2.4-6.053 2.4c-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0C5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36c2.16-2.16 2.84-5.213 2.84-7.667c0-.76-.053-1.467-.173-2.053z"};function ve(e,t=36){const n=i("div",{class:`platform-glyph${t===22?" size-sm":t>=52?" size-lg":""}`,style:{background:e.brand,fontSize:`${Math.round(t*.42)}px`}}),s=e.slug?rn[e.slug]:void 0;if(s)n.innerHTML=`<svg viewBox="0 0 24 24" role="img" aria-label="${e.name}"><path d="${s}"/></svg>`;else if(e.slug){const a=document.createElement("img");a.src=`https://api.iconify.design/simple-icons:${e.slug}.svg?color=white`,a.alt=e.name,a.referrerPolicy="no-referrer",a.addEventListener("error",()=>{a.replaceWith(document.createTextNode(e.mark))}),n.append(a)}else n.append(document.createTextNode(e.mark));return n}function Ot(e){return e?"● 已启用":"○ 已停用"}function cn(e){const t=e.is_active!==!1;return i("div",{class:"platform-skill-row"},i("div",{class:"platform-skill-copy"},i("span",{class:"platform-skill-name"},e.skill_name),e.description?i("span",{class:"platform-skill-desc"},e.description):null),i("span",{class:`platform-skill-status ${t?"on":""}`,"data-skill-status":!0},Ot(t)))}function Bt(e){return e?"点击停用整个平台":"点击启用整个平台"}function dn(e){const t=N(e.id),n=t.length>0&&t.every(s=>s.is_active!==!1);return i("button",{class:`platform-toggle ${n?"on":""}`,type:"button",title:Bt(n),"aria-pressed":String(n),"data-platform-toggle":e.id,onclick:s=>{s.stopPropagation();const a=N(e.id);a.length&&mn(e,!a.every(l=>l.is_active!==!1))}},i("span",{class:"platform-toggle-thumb"}))}function Ue(e){const t=C().find(n=>n.id===e);t&&(document.querySelectorAll("[data-platform-card]").forEach(n=>{if(n.dataset.platformCard!==e)return;const s=n.querySelector("[data-platform-status]");s&&s.replaceWith(zt(t))}),an())}function un(e){const t=document.querySelector(".platform-modal .platform-caps");if(!t)return!1;const n=t.dataset.platformId||"",s=t.querySelector("[data-platform-toggle]");return s&&(s.classList.toggle("on",e),s.setAttribute("aria-pressed",String(e)),s.title=Bt(e)),t.querySelectorAll("[data-skill-status]").forEach(a=>{a.classList.toggle("on",e),a.textContent=Ot(e)}),n&&Ue(n),!!s}function gn(e){if(document.hidden){window.setTimeout(e,0);return}window.requestAnimationFrame(()=>window.setTimeout(e,0))}function pn(e,t,n){const s=T.get(e);!s||s.active!==n||(s.syncTimer!=null&&window.clearTimeout(s.syncTimer),s.syncTimer=window.setTimeout(()=>{const a=T.get(e);if(!a||a.active!==n)return;const l=t.map(r=>({id:r.id,skill_name:r.skill_name,category:r.category,description:r.description??null,price:r.price??0}));c("set_skills_active",{skills:l,active:n}).then(r=>{if(r?.ok===!1){L(e),le();return}L(e),ze(),window.setTimeout(()=>{ze()},1500),window.setTimeout(()=>{le()},r?.queued?5e3:900)}).catch(()=>{L(e),le()})},120))}function mn(e,t){const n=N(e.id);if(n.length){if(bi(e.id,t),n.forEach(s=>{s.is_active=t}),fi(e.id,n),un(t)||Ft(),!x()){window.setTimeout(()=>L(e.id),700);return}gn(()=>pn(e.id,n,t))}}function Ft(){const e=o.ui.modal;if(e?.kind!=="platform")return;const t=C().find(s=>s.id===e.id),n=document.querySelector(".platform-modal .platform-caps");t&&n&&n.replaceWith(Wt(t))}function Wt(e){const t=N(e.id);return t.length===0?i("div",{class:"platform-caps","data-platform-id":e.id},i("div",{class:"caps-label"},`能力 (${e.caps.length})`),i("div",{class:"caps-list"},...e.caps.map(n=>i("span",{class:"cap-tag"},i("span",{class:"cap-icon"},g.bolt(11,o.tweaks.accent)),n)))):i("div",{class:"platform-caps","data-platform-id":e.id},i("div",{class:"caps-label",style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},i("span",{},`能力 (${t.length})`),dn(e)),i("div",{class:"cm-scroll",style:{maxHeight:"min(340px, 40vh)",overflowY:"auto",marginRight:"-6px",paddingRight:"6px"}},...t.map(cn)))}function fn(e){const t=C().find(l=>l.id===e);if(!t)return i("div",{});const n=t.mode==="browser",s=Nt(t.status),a=n?t.status==="login"?"需要在浏览器中完成登录。登录后可执行所有技能。":"该平台通过本地 BNBot 桥接到你已登录的浏览器会话调用。":"该平台走公开 API 调用,无需登录即可使用所有技能。";return i("div",{class:"modal-backdrop",onclick:K},i("div",{class:"platform-modal",onclick:l=>l.stopPropagation(),style:{background:"var(--surface)"}},i("div",{class:"platform-modal-head"},ve(t,52),i("div",{class:"platform-modal-info"},i("div",{class:"platform-modal-cat"},t.cat),i("div",{class:"platform-modal-title"},t.name),i("div",{class:"platform-modal-meta"},S(Et[t.status],s),i("span",{class:`mode-tag ${t.mode}`},At[t.mode]),i("span",{class:"platform-modal-skills"},`${N(t.id).length||t.skills} 个技能`))),i("button",{class:"modal-close-btn",onclick:K},g.close(14))),i("div",{class:"platform-modal-desc"},a),Wt(t)))}function hn(){const e=ue(),t=_i(),n=e.filter(ye=>ye.status==="completed"),s=J(o.dashboard?.history?.orderCount,e.length),a=Be(),l=a.series[a.series.length-1],r=a.total,d=a.series[a.series.length-2]??0,p=d>0?Math.round((l-d)/d*100):null,w=s||e.length,R=w===0?0:Math.round(n.length/w*100),Z=o.ui.ordersTab;return i("div",{class:"row-stack"},Q("订单与收益","服务调用记录、付费托管任务、收益结算",i("div",{class:"page-actions"},b("刷新",{size:"sm",leading:g.refresh(12),onClick:E}))),i("div",{class:"stats-strip"},W("今日收益",`$${l.toFixed(2)}`,p===null?void 0:`${p>=0?"+":""}${p}%`,p!==null&&p>=0?"ok":void 0),bn("近 7 日",`$${r.toFixed(2)}`,a.series),W("调用次数",String(w)),W("成功率",`${R}%`,"目标 ≥ 98%")),i("div",{class:"row-orders-mid"},wn(),vn(t)),yn(Z,e,s||e.length))}function W(e,t,n,s){return i("div",{class:"stat-card"},i("div",{class:"eyebrow"},e),i("div",{class:"stat-row"},i("div",{class:"stat-value"},t)),n?i("div",{class:`stat-delta ${s==="ok"?"tone-ok":""}`},n):null)}function bn(e,t,n){return i("div",{class:"stat-card"},i("div",{class:"eyebrow"},e),i("div",{class:"stat-row"},i("div",{class:"stat-value"},t),Jt(n,70,28,o.tweaks.accent)))}function wn(){const e=Be().series,t=vi(),n=Math.max(...e)*1.15||1,s=160,a=i("div",{class:"bar-chart"});return[.25,.5,.75,1].forEach(l=>{a.append(i("div",{class:"bar-grid",style:{bottom:`${l*s}px`}}))}),e.forEach((l,r)=>{const d=r===e.length-1,p=l/n,w=i("div",{class:"bar-col"},i("div",{class:`bar ${d?"is-last":""}`,style:{height:`${p*100}%`},title:`$${l.toFixed(2)}`},d?i("div",{class:"bar-tip"},`$${l.toFixed(2)}`):null));a.append(w)}),i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"近 7 日收益"),i("div",{class:"card-subtitle"},`截止 ${We(Date.now())} · USDT`)),b("月视图",{kind:"ghost",size:"sm"})),i("div",{class:"chart-container"},a,i("div",{class:"bar-labels"},...t.map((l,r)=>i("div",{class:`bar-label ${r===t.length-1?"is-last":""}`},l)))))}function vn(e){return i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"托管任务"),i("div",{class:"card-subtitle"},"已分配的付费长任务")),S(`${e.length} 进行中`,"warn")),i("div",{class:"escrow-list"},...e.length===0?[i("div",{style:{padding:"20px 2px",color:"var(--text-muted)"}},"暂无托管任务")]:e.map(t=>{const n=C().find(s=>s.id===t.platform);return i("div",{class:"escrow-row"},n?ve(n,36):null,i("div",{class:"escrow-info"},i("div",{class:"escrow-skill"},t.skill),i("div",{class:"escrow-meta"},`${n?.name||""} · 截止 ${t.deadline}`)),i("div",{class:"escrow-amount"},i("div",{class:"escrow-reward"},`$${t.reward.toFixed(2)}`),i("div",{class:"escrow-status"},t.status==="in-progress"?"执行中":"排队中")))})))}function yn(e,t,n=t.length){const s=t.filter(d=>d.status==="failed").length,a=t.filter(d=>d.status==="pending").length,l=[{id:"recent",label:"全部订单",n},{id:"failed",label:"失败",n:s},{id:"pending",label:"排队",n:a}],r=e==="failed"?t.filter(d=>d.status==="failed"):e==="pending"?t.filter(d=>d.status==="pending"):t;return i("div",{class:"card flush"},i("div",{class:"orders-toolbar"},i("div",{class:"tab-group"},...l.map(d=>i("button",{class:`tab ${d.id===e?"active":""}`,onclick:()=>{o.ui.ordersTab=d.id,u()}},d.label,i("span",{class:"tab-count"},String(d.n))))),i("div",{class:"tz-stamp"},"UTC+08:00 · today")),i("div",{class:"orders-grid-head"},i("div",{},"时间"),i("div",{},"平台"),i("div",{},"技能"),i("div",{},"状态"),i("div",{class:"right"},"时长"),i("div",{class:"right"},"金额")),i("div",{class:"orders-grid-body cm-scroll"},...r.length===0?[i("div",{style:{padding:"32px 20px",color:"var(--text-muted)"}},"暂无订单")]:r.map(kn)))}function kn(e){const t=C().find(n=>n.id===e.platform);return i("div",{class:"orders-row"},i("div",{class:"time"},e.t),i("div",{class:"platform-cell"},t?ve(t,22):null,i("span",{},t?.name||e.platform)),i("div",{},e.skill),i("div",{},S(e.status==="completed"?"已完成":e.status==="pending"?"排队中":"失败",e.status==="completed"?"ok":e.status==="pending"?"warn":"err")),i("div",{class:"dur right"},e.dur),i("div",{class:`amount right ${e.amount===0?"zero":""}`},Ai(e.amount)))}function _n(){const e=Ti[o.ui.loginLang];return i("div",{class:"login-screen"},i("div",{class:"login-grid"}),i("div",{class:"login-container"},i("div",{class:"login-brand"},X(36,o.tweaks.accent),i("div",{},i("div",{class:"login-brand-name"},"ClawMoney"),i("div",{class:"login-brand-tag"},e.tagline))),i("div",{class:"login-card"},Cn(e)),i("div",{class:"login-footer"},i("div",{class:"login-footer-links"},i("a",{onclick:()=>Y("https://clawmoney.ai/terms")},e.fTerms),i("a",{onclick:()=>Y("https://clawmoney.ai/privacy")},e.fPrivacy),i("a",{onclick:()=>Y("https://github.com/clawmoney")},e.fSource)),Sn())))}function Sn(){return i("div",{class:"lang-toggle-segment"},...["zh","en"].map(e=>i("button",{class:`lang-toggle-option ${o.ui.loginLang===e?"active":""}`,onclick:()=>{o.ui.loginLang=e,u()}},e==="zh"?"中文":"EN")))}function Cn(e){switch(o.ui.loginStep){case"choose":return xn(e);case"google":return En(e);case"email":return An(e);case"emailCode":return Tn(e)}}function xn(e){return i("div",{class:"login-pad"},i("div",{class:"login-title"},e.welcome),i("div",{class:"login-sub"},e.subtitle),i("button",{class:"login-btn-google",onclick:$n},Lt(18),i("span",{},e.google)),i("div",{class:"login-divider"},i("div",{class:"line"}),i("span",{class:"label"},e.or),i("div",{class:"line"})),i("button",{class:"login-btn-email",onclick:()=>{o.ui.loginStep="email",o.ui.loginError=null,u()}},i("span",{style:{display:"inline-flex",color:"var(--text-muted)"}},g.mail(16)),e.email),o.ui.loginError?i("div",{class:"login-error"},o.ui.loginError):null,i("div",{class:"login-terms"},e.terms))}function En(e){const t=o.ui.googleState,n={idle:"",redirecting:e.gRedirect,granting:e.gGrant,success:e.gSuccess},s={idle:"",redirecting:e.gRedirectSub,granting:e.gGrantSub,success:e.gSuccessSub},a=t==="success",l=i("div",{class:"google-avatar"},i("div",{class:`google-avatar-bg ${a?"success":""}`}),a?null:i("div",{class:"google-avatar-ring"}),i("div",{class:"google-avatar-icon"},a?X(38,"#fff"):Lt(32)));return i("div",{class:"login-google-state"},l,i("div",{class:"google-state-title"},n[t]),i("div",{class:"google-state-sub"},s[t]),t==="redirecting"?i("div",{class:"google-state-domain"},"accounts.google.com"):null,a?i("button",{class:"google-continue-btn",onclick:Ht},e.continueCta):null,a?null:i("button",{class:"login-back",style:{marginTop:"22px"},onclick:()=>{A.forEach(r=>window.clearTimeout(r)),A=[],o.ui.loginStep="choose",o.ui.googleState="idle",u()}},"← ",e.backLink))}function An(e){return i("form",{class:"login-pad",onsubmit:t=>{t.preventDefault(),In()}},i("button",{type:"button",class:"login-back",onclick:()=>{o.ui.loginStep="choose",u()}},"← ",e.backLink),i("div",{class:"login-title"},e.emailTitle),i("div",{class:"login-sub"},e.emailSub),i("label",{class:"login-label"},e.emailLabel),i("input",{type:"email",class:"login-input",placeholder:"you@example.com",value:o.ui.loginEmail,autofocus:!0,required:!0,oninput:t=>{o.ui.loginEmail=t.target.value}}),o.ui.loginError?i("div",{class:"login-error"},o.ui.loginError):null,i("button",{type:"submit",class:"login-submit"},e.emailCta))}function Tn(e){const t=o.ui.loginCodeError,n=o.ui.loginCodeVerifying,s=Array.from({length:6}).map((a,l)=>{const r=document.createElement("input");return r.className=`login-code-input ${t?"error":""}`,r.inputMode="numeric",r.maxLength=1,r.value=o.ui.loginCode[l]||"",r.disabled=n,l===0&&(r.autofocus=!0),r.addEventListener("input",d=>Ln(l,d.target.value)),r.addEventListener("keydown",d=>Rn(l,d)),l===0&&r.addEventListener("paste",Pn),r});return setTimeout(()=>{const a=o.ui.loginCode.length;s[Math.min(a,5)]?.focus()},30),i("div",{class:"login-pad"},i("button",{type:"button",class:"login-back",onclick:()=>{o.ui.loginStep="email",o.ui.loginCodeError=!1,o.ui.loginCode="",u()}},"← ",e.backLink),i("div",{class:"login-title"},e.codeTitle),i("div",{class:"login-sub"},e.codeSubPre,i("b",{style:{color:"var(--text)",fontWeight:"600"}},o.ui.loginEmail),"。",e.codeSubPost),i("div",{class:"login-code-row"},...s),Mn(e),i("div",{class:"login-code-footer"},o.ui.loginCodeResendIn>0?i("span",{},e.codeResendIn(o.ui.loginCodeResendIn)):i("button",{class:"login-code-resend",onclick:()=>{o.ui.loginCodeResendIn=45,Gt(),Dn(),u()}},e.codeResend),i("button",{style:{all:"unset",cursor:"pointer",color:"var(--text-muted)"},onclick:()=>{o.ui.loginStep="email",o.ui.loginCodeError=!1,o.ui.loginCode="",u()}},e.codeChange)))}function Mn(e){return o.ui.loginCodeVerifying?i("div",{class:"login-code-status muted"},i("span",{class:"login-spinner"}),e.codeVerifying):o.ui.loginCodeError?i("div",{class:"login-code-status error"},e.codeError):i("div",{class:"login-code-status"})}function Ln(e,t){o.ui.loginCodeError&&(o.ui.loginCodeError=!1);const n=t.replace(/\D/g,"").slice(0,1),s=o.ui.loginCode.split("");s[e]=n,o.ui.loginCode=s.slice(0,6).join(""),u(),n&&e<5&&setTimeout(()=>{document.querySelectorAll(".login-code-input")[e+1]?.focus()},20),o.ui.loginCode.length===6&&!o.ui.loginCodeVerifying&&qt(o.ui.loginCode)}function Rn(e,t){const n=document.querySelectorAll(".login-code-input");t.key==="Backspace"&&!o.ui.loginCode[e]&&e>0&&n[e-1]?.focus(),t.key==="ArrowLeft"&&e>0&&n[e-1]?.focus(),t.key==="ArrowRight"&&e<5&&n[e+1]?.focus()}function Pn(e){const n=(e.clipboardData?.getData("text")||"").replace(/\D/g,"").slice(0,6);n&&(e.preventDefault(),o.ui.loginCode=n,u(),n.length===6&&qt(n))}function Gt(){B!=null&&window.clearInterval(B),B=window.setInterval(()=>{o.ui.loginCodeResendIn=Math.max(0,o.ui.loginCodeResendIn-1),o.ui.loginCodeResendIn===0&&B!=null&&(window.clearInterval(B),B=null),u()},1e3)}async function $n(){if(A.forEach(e=>window.clearTimeout(e)),A=[],o.ui.loginStep="google",o.ui.googleState="redirecting",o.ui.loginError=null,u(),x()){const e=await m("start_google_login");if(!e.ok){o.ui.googleState="idle",o.ui.loginStep="choose",o.ui.loginError=Ve(e)||"Could not open Google login.",u();return}o.ui.googleState="success",u(),await E(),o.ui.loginStep="choose",o.ui.googleState="idle",u();return}m("start_google_login"),A.push(window.setTimeout(()=>{o.ui.googleState="granting",u()},700)),A.push(window.setTimeout(()=>{o.ui.googleState="success",u()},1600)),A.push(window.setTimeout(Ht,2200))}async function Ht(){A.forEach(e=>window.clearTimeout(e)),A=[],await E(),o.ui.loginStep="choose",o.ui.googleState="idle",o.ui.loginError=null,u()}async function In(){if(!o.ui.loginEmail)return;o.ui.loginError=null;const e=await m("start_email_login",{email:o.ui.loginEmail});if(!e.ok){o.ui.loginError=Ve(e)||"Could not send verification code.",u();return}o.ui.loginStep="emailCode",o.ui.loginCode="",o.ui.loginCodeError=!1,o.ui.loginCodeResendIn=45,Gt(),u()}async function qt(e){o.ui.loginCodeVerifying=!0,o.ui.loginError=null,u();const t=await m("verify_email_login",{email:o.ui.loginEmail,code:e});t.ok?(await E(),o.ui.loginStep="choose",o.ui.loginCode="",o.ui.loginCodeError=!1):(o.ui.loginCodeError=!0,o.ui.loginCode="",o.ui.loginError=Ve(t)),o.ui.loginCodeVerifying=!1,u()}async function Dn(){o.ui.loginEmail&&await m("start_email_login",{email:o.ui.loginEmail})}function Ve(e){if(!e)return"";const t=e.error??e.detail;if(!t)return"";if(typeof t=="string")return t;if(typeof t=="object"){const n=t.message??t.detail??t.error;if(typeof n=="string")return n;try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}function x(){return!!window.__TAURI_INTERNALS__}function zn(){o.ui.modal={kind:"settings",section:"app"},u()}const Ie=[{id:"app",label:"应用",icon:()=>g.home(14)},{id:"about",label:"关于",icon:()=>g.spark(14)}];function Ut(e){switch(e){case"app":return Bn();case"about":return Wn()}}function Nn(e){if(o.ui.modal?.kind!=="settings")return;o.ui.modal.section=e,document.querySelectorAll(".settings-nav").forEach(a=>{a.classList.toggle("active",a.dataset.section===e)});const t=document.querySelector(".settings-content-title");t&&(t.textContent=Ie.find(a=>a.id===e)?.label||"");const n=document.querySelector(".settings-content");if(!n)return;const s=n.querySelector(".settings-content-head");for(;n.lastChild&&n.lastChild!==s;)n.removeChild(n.lastChild);n.append(Ut(e))}function On(e){return i("div",{class:"modal-backdrop",onclick:K},i("div",{class:"settings-modal",onclick:t=>t.stopPropagation()},i("div",{class:"settings-sidebar"},i("div",{class:"settings-sidebar-title"},"设置"),...Ie.map(t=>i("button",{class:`settings-nav ${t.id===e?"active":""}`,"data-section":t.id,onclick:()=>Nn(t.id)},i("span",{class:"settings-nav-icon"},t.icon()),t.label)),i("div",{style:{flex:"1"}}),i("button",{class:"settings-logout",onclick:Qt},g.power(13,"var(--err)")," 退出登录")),i("div",{class:"settings-content cm-scroll"},i("div",{class:"settings-content-head"},i("div",{class:"settings-content-title"},Ie.find(t=>t.id===e)?.label||""),i("button",{class:"modal-close-btn",onclick:K},g.close(14))),Ut(e))))}function Bn(){return i("div",{},P("语言","登录页支持中英文 · 主界面目前仅中文",i("select",{class:"set-select",onchange:e=>{const t=e.target.value;o.locale=t,o.ui.loginLang=t,localStorage.setItem("clawmoney.locale",t),u()}},i("option",{value:"zh",selected:o.locale==="zh"},"简体中文"),i("option",{value:"en",selected:o.locale==="en"},"English"))),P("外观","明亮 / 深色",i("select",{class:"set-select",onchange:e=>{o.tweaks.dark=e.target.value==="dark",Li(),u()}},i("option",{value:"light",selected:!o.tweaks.dark},"明亮"),i("option",{value:"dark",selected:o.tweaks.dark},"深色"))),P("开机自启","系统启动时自动打开 ClawMoney",se(!0,()=>{})),P("保持不休眠","防止系统休眠中断接单(不影响显示器)",se(!!o.dashboard?.config?.keep_awake,e=>{c("set_keep_awake",{enabled:e}).then(()=>{o.dashboard?.config&&(o.dashboard.config.keep_awake=e),ze(),u()}).catch(()=>{})})),P("自动更新","在后台静默下载新版本",se(!0,()=>{})),P("数据目录","日志、缓存、配置存放位置",i("code",{class:"set-code",style:{fontSize:"11.5px"}},o.dashboard?.configPath||"~/.clawmoney")),P("发送匿名诊断","帮助我们改进稳定性",se(!1,()=>{})))}let ne=!1;function Fn(){const e=[];for(const t of li.split(`
67
- `))t.startsWith("## ")?e.push(i("div",{class:"cl-version"},t.slice(3))):t.startsWith("### ")?e.push(i("div",{class:"cl-section"},t.slice(4))):t.startsWith("- ")&&t.length>2&&e.push(i("div",{class:"cl-item"},t.slice(2)));return e}function Wn(){const e=$==="checking"?b("检查中…",{size:"sm",kind:"ghost"}):D?b(`下载 v${D.version}`,{size:"sm",kind:"solid",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:D.url})}}):b($==="latest"?"已是最新版本":"检查更新",{size:"sm",kind:"ghost",onClick:()=>{wt(!0)}});return i("div",{class:"about-block"},i("div",{style:{display:"inline-flex"}},X(56,o.tweaks.accent)),i("div",{class:"about-name"},"ClawMoney"),i("div",{class:"about-version"},"v0.3.1 · macOS Universal"),i("div",{class:"about-copy"},"© 2026 ClawMoney.AI",i("br",{}),"Open source soon."),i("div",{class:"about-actions"},e,b(ne?"收起更新日志":"查看更新日志",{size:"sm",kind:"ghost",onClick:()=>{ne=!ne,u()}})),ne?i("div",{class:"about-changelog cm-scroll"},...Fn()):null)}function P(e,t,n){return i("div",{class:"set-row"},i("div",{class:"label-wrap"},i("div",{class:"label"},e),i("div",{class:"sub"},t)),i("div",{style:{flexShrink:"0"}},n))}function se(e,t){return i("button",{class:`set-toggle ${e?"on":""}`,onclick:()=>t(!e)})}function Vt(){return $t(o.dashboard?.providerLog)}function je(){const e=Vt();document.querySelectorAll("[data-provider-log-body]").forEach(t=>{const n=t.scrollHeight-t.scrollTop-t.clientHeight<48;t.replaceChildren(...It(e)),n&&(t.scrollTop=t.scrollHeight)})}function Gn(){f.timer!=null&&window.clearInterval(f.timer),f.timer=null}function Hn(){const e=jt(),t=Yt(),n=f.paused;return i("div",{class:"modal-backdrop",style:{background:o.tweaks.dark?"rgba(8,8,9,0.6)":"rgba(20,18,14,0.4)",backdropFilter:"blur(10px)"},onclick:De},i("div",{class:"log-modal",onclick:s=>s.stopPropagation()},i("div",{class:"log-modal-head"},i("div",{class:"log-modal-title-tag"},i("span",{class:`log-modal-live ${n?"paused":""}`}),i("div",{class:"log-modal-title"},"Provider 日志"),i("span",{class:"log-modal-counts"},Kt(e.length,f.logs.length,n))),i("div",{class:"log-modal-spacer"}),i("div",{class:"log-modal-search"},i("span",{style:{display:"inline-flex"}},g.search(12,"rgba(255,255,255,0.5)")),i("input",{placeholder:"搜索日志…",value:f.query,oninput:s=>{f.query=s.target.value,u()}}),f.query?i("button",{style:{all:"unset",cursor:"pointer",color:"rgba(255,255,255,0.5)",display:"inline-flex"},onclick:()=>{f.query="",u()}},g.close(11)):null),i("div",{class:"log-modal-filters"},...["all","INFO","WARN","ERROR","DEBUG"].map(s=>i("button",{class:`log-modal-filter ${s} ${s===f.filter?"active":""}`,onclick:()=>{f.filter=s,u()}},s==="all"?"全部":s,s!=="all"?i("span",{class:"log-modal-filter-count","data-log-count":s},String(t[s]||0)):null))),i("div",{class:"log-modal-actions"},i("button",{class:"log-modal-iconbtn",title:n?"继续":"暂停",onclick:()=>{f.paused=!f.paused,u()}},n?g.play(12):g.pause(12)),i("button",{class:"log-modal-iconbtn",title:"下载"},g.download(12)),i("button",{class:"log-modal-iconbtn",title:"清空",onclick:()=>{f.logs=[],u()}},g.trash(12)),i("button",{class:"log-modal-iconbtn",title:"关闭",onclick:De,style:{marginLeft:"4px"}},g.close(13)))),i("div",{class:"log-modal-body cm-scroll"},...e.length===0?[i("div",{class:"log-modal-empty"},"没有匹配的日志行")]:e.map(He)),i("div",{class:"log-modal-foot"},i("div",{},"tail · 自动滚动到底部"),i("div",{},"~/.clawmoney/provider.log"))))}function jt(){const e=f.query.toLowerCase();return f.logs.filter(t=>(f.filter==="all"||t.lvl===f.filter)&&(!e||t.msg.toLowerCase().includes(e)))}function Yt(){return f.logs.reduce((e,t)=>(e[t.lvl]=(e[t.lvl]||0)+1,e),{})}function Kt(e,t,n){return`· ${e}/${t} 行 ${n?"· 已暂停":""}`}function Ye(){const e=document.querySelector(".log-modal-body");if(!e)return;const t=jt(),n=e.scrollHeight-e.scrollTop-e.clientHeight<48;e.replaceChildren(...t.length===0?[i("div",{class:"log-modal-empty"},"没有匹配的日志行")]:t.map(He)),n&&(e.scrollTop=e.scrollHeight);const s=document.querySelector(".log-modal-counts");s&&(s.textContent=Kt(t.length,f.logs.length,f.paused));const a=document.querySelector(".log-modal-live");a&&a.classList.toggle("paused",f.paused);const l=Yt();document.querySelectorAll("[data-log-count]").forEach(r=>{const d=r.getAttribute("data-log-count")||"";r.textContent=String(l[d]||0)})}function De(){Gn(),o.ui.modal?.kind==="log"&&(o.ui.modal=null,u())}function Q(e,t,n){return i("div",{class:"page-header"},i("div",{},i("h1",{class:"page-title"},e),i("div",{class:"page-subtitle"},(t instanceof Node,t))),n)}function S(e,t="off"){return i("span",{class:`pill tone-${t}`},i("span",{class:"pill-dot"}),e)}function b(e,t={}){const n=["btn"];return t.size&&t.size!=="md"&&n.push(`size-${t.size}`),n.push(`kind-${t.kind||"ghost"}`),t.danger&&n.push("danger"),i("button",{class:n.join(" "),onclick:t.onClick},t.leading,e)}function qn(e,t){return i("div",{class:"search-box"},i("span",{class:"icon-search"},g.search(13)),i("input",{placeholder:"搜索平台...",value:e,oninput:n=>t(n.target.value)}),e?i("button",{class:"icon-clear",onclick:()=>t("")},g.close(12)):null)}function Jt(e,t,n,s,a=.18,l=1.6){const r=Math.min(...e),d=Math.max(...e),p=2,w=e.map((ee,ke)=>p+ke*(t-2*p)/(e.length-1)),R=e.map(ee=>p+(1-(ee-r)/(d-r||1))*(n-2*p)),Z=w.map((ee,ke)=>`${ee.toFixed(1)},${R[ke].toFixed(1)}`).join(" "),ye=`M${w[0]},${n} L ${Z} L ${w[w.length-1]},${n} Z`,H=document.createElementNS("http://www.w3.org/2000/svg","svg");return H.setAttribute("width",String(t)),H.setAttribute("height",String(n)),H.setAttribute("viewBox",`0 0 ${t} ${n}`),H.innerHTML=`
66
+ `,n}function Li(){try{const e=localStorage.getItem("clawmoney.tweaks.v2");if(e)return{...at(),...JSON.parse(e)}}catch{}return at()}function at(){return{dark:!1,accent:"#F0B90B",density:"comfy",showBg:!0}}function Ri(){try{localStorage.setItem("clawmoney.tweaks.v2",JSON.stringify(o.tweaks))}catch{}}function ot(){const e=new URLSearchParams(location.search).get("lang");if(e==="en"||e==="zh")return localStorage.setItem("clawmoney.locale",e),e;const t=localStorage.getItem("clawmoney.locale");return t==="en"||t==="zh"?t:navigator.language.toLowerCase().startsWith("zh")?"zh":"en"}function $i(){const e=x();document.documentElement.classList.toggle("cm-dark",o.tweaks.dark),document.documentElement.classList.toggle("is-tauri-root",e),document.documentElement.style.setProperty("--accent",o.tweaks.accent),document.body.classList.toggle("density-compact",o.tweaks.density==="compact"),document.body.classList.toggle("is-tauri",e);const t=document.getElementById("desktop");t&&(t.style.opacity=e?"0":o.tweaks.showBg?"1":"0")}function u(){$i();const e=document.getElementById("app");e.innerHTML="";const t=o.dashboard;if(!t){e.append(Pi()),Re();return}!!t?.configured?e.append(Ii(),zi()):e.append(i("div",{class:"login-corner-traffic"},Rt()),Sn()),o.ui.modal?.kind==="platform"?e.append(hn(o.ui.modal.id)):o.ui.modal?.kind==="settings"?e.append(Bn(o.ui.modal.section)):o.ui.modal?.kind==="log"&&e.append(qn()),Re(),document.getElementById("__perf")?.remove()}function Pi(){return i("div",{class:"boot-screen","data-tauri-drag-region":!0},i("div",{class:"boot-mark"},X(42,o.tweaks.accent)),i("div",{class:"boot-title"},"Claw Money"),i("div",{class:"boot-subtitle"},o.locale==="zh"?"你的 Agent,值得一份薪水":"Your agent deserves a paycheque."),i("div",{class:"boot-spinner"}))}function Re(){const e=document.getElementById("app");if(!e)return;if(x()){e.style.transform="";return}const t=1280,n=820,s=40,a=(window.innerWidth-s)/t,l=(window.innerHeight-s)/n,r=Math.min(1,a,l);e.style.transform=`scale(${r})`}function Rt(){const e=t=>n=>{if(n.stopPropagation(),!x())return;const s=Oe();t==="close"&&s.close(),t==="minimize"&&s.minimize(),t==="zoom"&&s.toggleMaximize()};return i("div",{class:"traffic"},i("button",{class:"traffic-dot close",title:"Close",onclick:e("close")},i("span",{},"×")),i("button",{class:"traffic-dot min",title:"Minimize",onclick:e("minimize")},i("span",{},"−")),i("button",{class:"traffic-dot max",title:"Maximize",onclick:e("zoom")},i("span",{},"+")))}function Ii(){const e=o.ui.route,t=o.dashboard?.account?.data||{},n=o.dashboard?.config||{},s=t.name||t.slug||n.agent_slug||"agent";return i("aside",{class:"sidebar"},i("div",{class:"sidebar-header","data-tauri-drag-region":!0},Rt()),i("div",{class:"brand","data-tauri-drag-region":!0},X(22,o.tweaks.accent),i("span",{class:"brand-tag"},"v0.3.1")),i("nav",{class:"nav"},q("home","首页",g.home(15),e==="home"),q("connections","平台连接",g.plug(15),e==="connections"),q("relay","Agent 上架",g.bolt(15),e==="relay"),q("orders","订单",g.receipt(15),e==="orders"),q("logs","日志",g.terminal(15),e==="logs")),i("div",{class:"sidebar-spacer"}),Di(s))}function q(e,t,n,s,a){return i("button",{class:`nav-item ${s?"active":""}`,onclick:()=>{o.ui.route!==e&&(o.ui.route=e,u())}},i("span",{class:"nav-icon"},n),i("span",{class:"nav-label"},t),null)}function Di(e){return i("div",{class:"agent-card"},i("div",{class:"agent-row"},i("div",{class:"agent-avatar"},e.slice(0,2)),i("div",{class:"agent-info"},i("div",{class:"agent-name"},e),i("div",{class:"agent-status"},i("span",{class:"agent-status-dot"}),"active")),i("button",{class:"icon-button",title:"设置",onclick:()=>On()},g.cog(13))))}function zi(){const e=i("div",{class:"main-scroll cm-scroll"});switch(o.ui.route){case"home":e.append(Gi());break;case"connections":e.append(sn());break;case"relay":e.append(Vi());break;case"orders":e.append(bn());break;case"logs":e.append(en());break}return i("main",{class:"main"},i("div",{class:"titlebar","data-tauri-drag-region":!0}),e)}function $t(){const e=o.dashboard?.preflight;return!e||typeof e!="object"?null:e}function Oi(e){const t=$t();if(!t?.platforms)return null;const n=z[e.id]||e.id;return t.platforms[n]||null}function Ni(){if(!o.dashboard?.configured)return null;const e=o.dashboard?.extension||{};if(e.connected)return null;const t=!!e.installed;return i("div",{class:"card ext-offline-notice"},i("div",{class:"ext-offline-head"},i("span",{class:"ext-offline-icon"},g.power(15)),i("div",{class:"ext-offline-text"},i("div",{class:"ext-offline-title"},t?"Chrome / BNBot 插件未连接":"BNBot 插件未安装"),i("div",{class:"ext-offline-sub"},t?"当前接不到社交平台订单(reddit / 哔哩哔哩 / 知乎 / 微博 / 豆瓣 等)。打开 Chrome 并确保插件已启用即可恢复。":"社交平台订单需要 BNBot 浏览器插件。安装并登录对应站点后即可接单。"))),i("div",{class:"ext-offline-actions"},t?b("打开 Chrome",{size:"sm",leading:g.arrowOut(11),onClick:()=>{c("launch_chrome").catch(()=>{})}}):b("安装插件",{size:"sm",leading:g.arrowOut(11),onClick:()=>Y(e.installUrl||"https://chromewebstore.google.com/detail/bnbot/haammgigdkckogcgnbkigfleejpaiiln")})))}function Bi(){const e=o.dashboard?.taskService;if(e?.running&&e.phase==="probing")return i("div",{class:"card preflight-notice probing"},i("div",{class:"preflight-notice-head"},i("span",{class:"preflight-notice-icon"},i("span",{class:"pill-spinner"})),i("div",{class:"preflight-notice-text"},i("div",{class:"preflight-notice-title"},"接单服务已启动,正在检测平台登录态…"),i("div",{class:"preflight-notice-sub"},"首次检测约 1-2 分钟,完成后自动开始接单"))));const t=$t();if(!t?.platforms)return null;const n=Object.entries(t.platforms).filter(([,a])=>a.status==="failed"&&a.actionable!==!1);if(!n.length)return null;const s=n.length;return i("div",{class:"card preflight-notice"},i("div",{class:"preflight-notice-head"},i("span",{class:"preflight-notice-icon"},g.bolt(15)),i("div",{class:"preflight-notice-text"},i("div",{class:"preflight-notice-title"},s>0?`${s} 个平台暂不接单`:"部分平台待确认"),i("div",{class:"preflight-notice-sub"},"装好依赖或登录对应站点后,接单守护重启会自动恢复"))),i("div",{class:"preflight-issue-list"},...n.map(([a,l])=>Fi(a,l))))}function Fi(e,t){const n=t.status==="failed"?"err":"warn";return i("div",{class:"preflight-issue"},i("span",{class:`preflight-issue-dot tone-${n}`}),i("div",{class:"preflight-issue-body"},i("div",{class:"preflight-issue-name"},i("span",{},t.label||e),t.skills?i("span",{class:"preflight-issue-count"},`${t.skills} 技能已暂停`):null),t.reason?i("div",{class:"preflight-issue-reason"},t.reason):null,t.hint?i("div",{class:"preflight-issue-hint"},t.hint):null),t.loginUrl?b("去登录",{size:"sm",kind:"soft",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:t.loginUrl})}}):null)}function Wi(){return D?i("div",{class:"card update-notice"},i("div",{class:"update-notice-text"},i("div",{class:"update-notice-title"},`发现新版本 v${D.version}`),i("div",{class:"update-notice-sub"},"当前 v0.3.1,下载安装包后替换即可")),b("去下载",{size:"sm",kind:"solid",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:D.url})}})):null}function Gi(){const e=o.dashboard?.wallet||{},t=e.address||o.dashboard?.config?.wallet_address||"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B",n=typeof e.balance=="number"?e.balance:o.ui.balance;o.ui.balance=n;const a=+(n*.62).toFixed(2),l=+(n-a).toFixed(2),r=t.slice(0,6)+"…"+t.slice(-4),d=o.dashboard?.extension||{},p=o.dashboard?.services||{};return!_&&!G&&(G=!0,be()),i("div",{class:"row-stack connections-stack"},Q("首页","账户、钱包、和本地服务的实时状态",i("div",{class:"page-actions"},b("刷新",{size:"sm",leading:g.refresh(13),onClick:E}),b("退出",{size:"sm",kind:"ghost",danger:!0,leading:g.power(13),onClick:Qt}))),Wi(),Ni(),i("div",{class:"row-hero"},ji(n,a,l,t,r),Ji(d)),i("div",{class:"row-services"},Xi(p),tn()))}let ge=null,pe=!1,$e="";async function he(){try{ge=await m("llm_detect")}catch{ge=null}u()}function Hi(e){return e==="codex"?"Codex":e==="chatgpt-web"?"ChatGPT 网页":e==="gemini"?"Gemini":e}async function lt(e,t,n){$e=e,u();try{if(t==="install")await m("llm_install",{cli:e});else if(t==="login"){const s=await m("llm_login",{cli:e});s?.message&&window.alert(s.message)}else await m("llm_upload",{cli:e,model:n})}catch(s){window.alert(`操作失败: ${s instanceof Error?s.message:String(s)}`)}finally{$e="",await he()}}async function qi(e,t){const n=y?.disabledClis??[],s=t?n.filter(a=>a!==e):[...new Set([...n,e])];y={...y??{},disabledClis:s},u();try{await m("llm_set_enabled",{cli:e,enabled:t})}catch(a){y={...y??{},disabledClis:n},u(),window.alert(`设置失败:${a instanceof Error?a.message:String(a)}`);return}be()}function Ui(e,t){const n=e.cli,s=$e===n,a=e.defaultModel||"",l=(y?.disabledClis??[]).includes(n),r=!!(e.installed&&e.loggedIn);let d,p,w=null;return e.installed?e.loggedIn?l?(p="off",d=S("已暂停","off")):t?(p="ok",d=S("接单中","ok")):(p="ok",d=S("已就绪","ok")):(p="warn",d=S("待登录","warn"),w=n==="chatgpt-web"?b("去登录",{size:"sm",kind:"soft",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:"https://chatgpt.com/"})}}):b(s?"登录中…":"登录",{size:"sm",kind:"soft",onClick:s?void 0:()=>{lt(n,"login")}})):(p="off",d=S("未安装","off"),w=b(s?"安装中…":"安装",{size:"sm",kind:"soft",onClick:s?void 0:()=>{lt(n,"install")}})),i("div",{class:`llm-provider-row${l?" is-disabled":""}`},i("span",{class:`llm-provider-dot tone-${l?"off":p}${p==="ok"&&t&&!l?" is-live":""}`}),i("div",{class:"llm-provider-info"},i("div",{class:"llm-provider-name"},Hi(n)),a?i("div",{class:"llm-provider-model"},a):null),i("div",{class:"llm-provider-side"},d,w,r?Pe(!l,R=>{qi(n,R)}):null))}let y=null,me=!1,_=null,G=!1;async function be(){try{_=await m("relay_earnings")}catch{_=null}u()}function Ae(e,t){return i("div",{class:"relay-earning-stat"},i("div",{class:"relay-earning-value"},e),i("div",{class:"relay-earning-label"},t))}async function We(){try{y=await m("relay_settings_get")}catch{y=null}u()}async function U(e){const t={...y??{},...e};y=t,u();try{await m("relay_settings_set",{settings:t})}catch(n){window.alert(`保存失败: ${n instanceof Error?n.message:String(n)}`)}await We(),await he()}function Pe(e,t){return i("button",{class:`relay-switch ${e?"on":"off"}`,onclick:()=>t(!e)},i("span",{class:"relay-switch-knob"}))}function Vi(){!y&&!me&&(me=!0,We()),!ge&&!pe&&(pe=!0,he()),!_&&!G&&(G=!0,be());const e=y??{concurrency:2,online:!1,scheduleEnabled:!1,scheduleStart:"22:00",scheduleEnd:"08:00"},t=ge?.providers??[],n=e.online===!0,s=e.scheduleEnabled===!0;return i("div",{class:"row-stack connections-stack"},Q("Agent 上架","让你的 Codex / Gemini,从今天开始赚钱",i("div",{class:"page-actions"})),Bi(),i("div",{class:"card relay-toggle-card"},i("div",{class:"relay-toggle-info"},i("div",{class:"relay-toggle-title"},n?"接单中 · 已上线":"未上线"),i("div",{class:"relay-toggle-sub"},n?"买家正在调用你上架的订阅算力":"打开开关,下方就绪的订阅一起上架接单")),Pe(n,a=>{U({online:a})})),t.length?i("div",{class:"card"},i("div",{class:"card-title"},"我的 Agent"),i("div",{class:"llm-provider-list"},...t.map(a=>Ui(a,n)))):null,_?.ok?i("div",{class:"card"},i("div",{class:"card-title"},"接单收益"),i("div",{class:"relay-earnings-grid"},Ae(`$${(_.totalEarned??0).toFixed(4)}`,"累计收益"),Ae(String(_.totalRequests??0),"累计调用"),Ae(`$${(_.dailySpent??0).toFixed(4)}`,"今日流水"))):null,i("div",{class:"card"},i("div",{class:"card-title"},"接单设置"),i("div",{class:"relay-setting-row"},i("div",{class:"relay-setting-label"},i("div",{},"最大并发请求数"),i("div",{class:"relay-setting-hint"},"同时处理几个请求 · 越高越容易触发风控,建议 2–5")),i("input",{type:"number",min:"1",max:"20",value:String(e.concurrency??2),class:"relay-number-input",onchange:a=>{U({concurrency:Number(a.target.value)||5})}})),i("div",{class:"relay-setting-row"},i("div",{class:"relay-setting-label"},i("div",{},"每天定时接单"),i("div",{class:"relay-setting-hint"},"只在时段内接单(如晚上 IP 空闲时),时段外自动暂停")),Pe(s,a=>{U({scheduleEnabled:a})})),s?i("div",{class:"relay-schedule-row"},i("input",{type:"time",value:String(e.scheduleStart??"22:00"),class:"relay-time-input",onchange:a=>{U({scheduleStart:a.target.value})}}),i("span",{class:"relay-schedule-dash"},"—"),i("input",{type:"time",value:String(e.scheduleEnd??"08:00"),class:"relay-time-input",onchange:a=>{U({scheduleEnd:a.target.value})}})):null))}function ji(e,t,n,s,a){const l=Be(),r=o.dashboard?.orderEarnings,d=r?.ok?J(r.pending,0):0,p=_?.ok?_.pending??0:0,w=+(d+p).toFixed(6),R=e+w;return i("div",{class:"card"},i("div",{class:"balance-head"},i("div",{class:"eyebrow"},"钱包总余额"),l.total>0?i("span",{class:"balance-delta"},g.arrowUp(12),` +$${l.total.toFixed(2)} / 7d`):null),i("div",{class:"balance-row"},i("div",{class:"balance-value"},`$${R.toFixed(2)}`),Jt(l.series,140,48,o.tweaks.accent)),i("div",{class:"chain-list"},rt("base","Base",t,a,s),rt("bsc","BNB Smart Chain",n,a,s),w>1e-4?Yi(w):null))}function Yi(e){return i("div",{class:"chain-row pending-row"},i("div",{class:"chain-glyph pending-glyph",html:'<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>'}),i("div",{class:"chain-info"},i("div",{class:"chain-name"},"待发送"),i("div",{class:"pending-note"},"已赚待结算 · 自动打款到钱包")),i("div",{class:"chain-balance"},`$${e.toFixed(2)}`))}function rt(e,t,n,s,a){const l=o.ui.copiedChain===e;return i("div",{class:"chain-row"},i("div",{class:"chain-glyph",html:e==="base"?'<svg width="14" height="14" viewBox="0 0 111 111"><path d="M54.921 110.034c30.412 0 55.07-24.66 55.07-55.067C109.991 24.56 85.333-.107 54.921-.107c-28.851 0-52.534 22.353-54.7 50.86h72.81v8.491H.22c2.166 28.51 25.85 50.787 54.7 50.787Z" fill="#0052FF"/></svg>':'<svg width="14" height="14" viewBox="0 0 126.61 126.61"><path fill="#F3BA2F" d="m38.73 53.2 24.59-24.58 24.6 24.6 14.3-14.31L63.32 0 24.42 38.9zM0 63.31l14.3-14.31 14.31 14.31-14.31 14.3zm38.73 10.11 24.59 24.59 24.6-24.6 14.31 14.29-38.9 38.91-38.91-38.88zM97.99 63.31l14.3-14.31 14.31 14.3-14.31 14.32zM77.83 63.3 63.32 48.78 52.59 59.51l-1.23 1.24-2.54 2.54 14.5 14.5z"/></svg>'}),i("div",{class:"chain-info"},i("div",{class:"chain-name"},t),i("button",{class:`chain-addr ${l?"copied":""}`,title:"点击复制地址",onclick:()=>Ki(e,a)},s,l?g.check(10):g.copy(10),l?i("span",{style:{fontSize:"9.5px",fontWeight:"600"}},"已复制"):null)),i("div",{class:"chain-balance"},`$${n.toFixed(2)}`))}function Ki(e,t){try{navigator.clipboard?.writeText(t)}catch{}o.ui.copiedChain=e,u(),setTimeout(()=>{o.ui.copiedChain=null,u()},1400)}function Ji(e){const t=!!e.connected,n=!!e.installed,s=t?"已连接":n?"未连接":"未安装",a=t?"ok":"warn";return i("div",{class:"card"},i("div",{class:"balance-head"},i("div",{class:"eyebrow"},"浏览器插件"),S(s,a)),t?(()=>{const l=String(e.detail||""),r=l.match(/\(v([\d.]+)\)/)?.[1]||null,d=l.match(/wss?:\/\/[^\s]+/)?.[0]||null;return i("div",{style:{marginTop:"2px"}},r?ct("插件版本",`v${r}`):null,d?ct("本地服务",d):null)})():null,t?null:i("div",{class:"plugin-line"},n?"插件已安装,等待与浏览器握手 …":"尚未安装 BNBot 浏览器插件。"),n?null:i("div",{class:"plugin-actions"},b("安装插件",{kind:"soft",size:"sm",leading:g.arrowOut(11),onClick:()=>Y(e.installUrl||"https://chromewebstore.google.com/")})))}function ct(e,t){return i("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:"12px",padding:"9px 2px"}},i("span",{style:{fontSize:"13px",color:"var(--muted, #8b8b8b)"}},e),i("span",{style:{fontSize:"13px",fontFamily:"var(--mono, ui-monospace, monospace)",color:"var(--text, inherit)",textAlign:"right"}},t))}function Xi(e){const t=e.market||{},n=e.surf||{};return i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"本地服务"),i("div",{class:"card-subtitle"},"工作进程与 Surf 中继状态")),b("全部启动",{kind:"ghost",size:"sm",onClick:Yn})),i("div",{class:"service-list"},dt("Market Provider",Qi(t),t.running,()=>ut("market")),dt("Surf / Relay Service",Zi(n),n.running,()=>ut("surf"))))}function Qi(e){return e.running?`PID ${e.pid||"-"} · 正在接收服务调用`:"无进程 · 需要手动启动"}function Zi(e){return e.running?`PID ${e.pid||"-"} · 中继运行中`:"未启动 · Relay 离线"}function dt(e,t,n,s){return i("div",{class:"service-row"},i("div",{},i("div",{class:"service-head"},i("span",{class:`service-dot ${n?"running":""}`}),i("div",{class:"service-name"},e)),i("div",{class:"service-sub"},t)),i("div",{class:"service-actions"},S(n?"运行中":"已停止",n?"ok":"off"),b(n?"停止":"启动",{kind:n?"ghost":"soft",size:"sm",onClick:s})))}function en(){const e=o.dashboard?.providerLog||[],t=Pt(e),n=i("div",{class:"log-body cm-scroll","data-provider-log-body":"true",style:{flex:"1",maxHeight:"none"}},...It(t));return requestAnimationFrame(()=>{n.scrollTop=n.scrollHeight}),i("div",{class:"row-stack",style:{height:"100%"}},Q("Provider 日志","本地 Market Provider 实时输出",i("div",{class:"page-actions"},i("span",{class:"log-live-tag"},i("span",{class:"log-live-dot"}),"LIVE"),b("刷新",{size:"sm",leading:g.refresh(13),onClick:E}))),i("div",{class:"card flush",style:{flex:"1",display:"flex",flexDirection:"column",minHeight:"0"}},n))}function tn(){const e=we(),t=o.dashboard?.orderEarnings,n=t?.ok?J(t.count,ue().length):ue().length,s=C().filter(a=>a.status==="ready"&&!He(a)).reduce((a,l)=>a+(l.skills||0),0);return i("div",{class:"card"},i("div",{class:"log-card-head"},i("div",{},i("div",{class:"card-title"},"接单概况"),i("div",{class:"card-subtitle"},"在线接单平台与累计调用")),i("button",{class:"log-expand",title:"查看 Provider 日志",onclick:()=>{o.ui.route="logs",u()}},g.terminal(13))),i("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr 1fr",gap:"14px",padding:"12px 2px 4px"}},W("接单平台",String(e.ready)),W("服务数量",String(s)),W("调用次数",String(n))))}function Pt(e){return Array.isArray(e)&&e.length>0?e.map(t=>nn(String(t))):x()?[]:[...Fe]}function nn(e){const t=d=>/^(INFO|WARN|ERROR|DEBUG|TRACE)$/i.test(d),n=e.match(/(\d{2}:\d{2}:\d{2}(?:\.\d{3})?)/),s=n?n[1]:"",a=e.match(/\b(INFO|WARN|ERROR|DEBUG|TRACE)\b/i),l=a?a[1].toUpperCase():"INFO";let r=e.replace(/^\[[^\]]+\]\s*/,"").replace(/^\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(\.\d+)?Z?\s*/,"").trim();return r=r.replace(/^\[(INFO|WARN|ERROR|DEBUG|TRACE)\]\s*/i,""),t(r.split(/\s/)[0]||"")&&(r=r.replace(/^\S+\s+/,"")),{t:s,lvl:l,msg:r||e}}function Ge(e){return i("div",{class:"log-line"},i("span",{class:"log-time"},e.t),i("span",{class:`log-level ${e.lvl}`},e.lvl),i("span",{class:`log-msg ${e.lvl}`},e.msg))}function It(e){return e.length===0?[i("div",{style:{padding:"22px 24px",color:"var(--text-muted)"}},"暂无 Provider 日志")]:e.map(Ge)}function sn(){const e=o.ui.connectionsFilter,t=o.ui.connectionsQuery.toLowerCase(),n=C().filter(a=>(e==="全部"||a.cat===e)&&(!t||a.name.toLowerCase().includes(t))),s=we();return i("div",{class:"row-stack"},Q("平台连接",an(s),i("div",{class:"page-actions"},Un(o.ui.connectionsQuery,a=>{o.ui.connectionsQuery=a,u()}))),i("div",{class:"category-chips cm-noscrollbar"},...ui.map(a=>{const l=a===e,r=C(),d=a==="全部"?r.length:r.filter(p=>p.cat===a).length;return i("button",{class:`chip ${l?"active":""}`,onclick:()=>{o.ui.connectionsFilter=a,u()}},a,i("span",{class:"chip-count"},String(d)))})),i("div",{class:`platform-grid ${o.tweaks.density==="compact"?"compact":""}`},...n.length===0?[i("div",{class:"empty-state"},"没有匹配的平台")]:n.map(ln)))}function Dt(e=we()){return[i("b",{style:{color:"var(--text)",fontWeight:"600"}},String(e.ready))," 就绪 · ",i("b",{style:{color:"var(--warn)",fontWeight:"600"}},String(e.needs))," 需登录"]}function an(e=we()){return i("span",{"data-connections-stats":!0},...Dt(e))}function on(){document.querySelectorAll("[data-connections-stats]").forEach(e=>{e.replaceChildren(...Dt())})}function we(){let e=0,t=0,n=0;const s=C();for(const a of s)St(a.id)?n++:He(a)||(a.status==="ready"?e++:(a.status==="login"||a.status==="needs")&&t++);return{ready:e,needs:t,updating:n,total:s.length}}function ln(e){return i("button",{class:"platform-card","data-platform-card":e.id,onclick:()=>{o.ui.modal={kind:"platform",id:e.id},u()}},ve(e,36),i("div",{class:"platform-info"},i("div",{class:"platform-row1"},i("div",{class:"platform-name"},e.name)),i("div",{class:"platform-row2"},i("span",{class:`mode-tag ${e.mode}`},Et[e.mode]),i("span",{title:"技能数",style:{flexShrink:"0",fontSize:"11px",fontWeight:"700",color:"var(--text-muted)",background:"var(--line)",borderRadius:"6px",padding:"1px 7px"}},String(O(e.id).length||e.skills)))),zt(e))}function He(e){const t=O(e.id);return t.length>0&&t.every(n=>n.is_active===!1)}function rn(e){if(St(e.id))return{label:"更新中",tone:"sync",syncing:!0};if(He(e))return{label:"已停用",tone:"off",syncing:!1};const t=Oi(e);return t?.status==="failed"?{label:t.reason||"依赖未就绪",tone:"err",syncing:!1}:t?.status==="unknown"?{label:t.reason||"待确认",tone:"warn",syncing:!1}:{label:xt[e.status],tone:Ot(e.status),syncing:!1}}function zt(e){const t=rn(e);return t.syncing?i("span",{class:`pill platform-status-pill tone-${t.tone} icon-only`,title:"后台同步中","data-platform-status":e.id},i("span",{class:"pill-spinner"})):i("span",{class:`platform-status-light tone-${t.tone}`,title:t.label,"aria-label":t.label,"data-platform-status":e.id},i("span",{class:"status-light-core"}))}function Ot(e){return e==="ready"?"ok":e==="login"||e==="needs"?"warn":e==="error"?"err":"off"}const cn={openai:"M22.282 9.821a6 6 0 0 0-.516-4.91a6.05 6.05 0 0 0-6.51-2.9A6.065 6.065 0 0 0 4.981 4.18a6 6 0 0 0-3.998 2.9a6.05 6.05 0 0 0 .743 7.097a5.98 5.98 0 0 0 .51 4.911a6.05 6.05 0 0 0 6.515 2.9A6 6 0 0 0 13.26 24a6.06 6.06 0 0 0 5.772-4.206a6 6 0 0 0 3.997-2.9a6.06 6.06 0 0 0-.747-7.073M13.26 22.43a4.48 4.48 0 0 1-2.876-1.04l.141-.081l4.779-2.758a.8.8 0 0 0 .392-.681v-6.737l2.02 1.168a.07.07 0 0 1 .038.052v5.583a4.504 4.504 0 0 1-4.494 4.494M3.6 18.304a4.47 4.47 0 0 1-.535-3.014l.142.085l4.783 2.759a.77.77 0 0 0 .78 0l5.843-3.369v2.332a.08.08 0 0 1-.033.062L9.74 19.95a4.5 4.5 0 0 1-6.14-1.646M2.34 7.896a4.5 4.5 0 0 1 2.366-1.973V11.6a.77.77 0 0 0 .388.677l5.815 3.354l-2.02 1.168a.08.08 0 0 1-.071 0l-4.83-2.786A4.504 4.504 0 0 1 2.34 7.872zm16.597 3.855l-5.833-3.387L15.119 7.2a.08.08 0 0 1 .071 0l4.83 2.791a4.494 4.494 0 0 1-.676 8.105v-5.678a.79.79 0 0 0-.407-.667m2.01-3.023l-.141-.085l-4.774-2.782a.78.78 0 0 0-.785 0L9.409 9.23V6.897a.07.07 0 0 1 .028-.061l4.83-2.787a4.5 4.5 0 0 1 6.68 4.66zm-12.64 4.135l-2.02-1.164a.08.08 0 0 1-.038-.057V6.075a4.5 4.5 0 0 1 7.375-3.453l-.142.08L8.704 5.46a.8.8 0 0 0-.393.681zm1.097-2.365l2.602-1.5l2.607 1.5v2.999l-2.597 1.5l-2.607-1.5Z",googlegemini:"M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81",google:"M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133c-1.147 1.147-2.933 2.4-6.053 2.4c-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0C5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36c2.16-2.16 2.84-5.213 2.84-7.667c0-.76-.053-1.467-.173-2.053z"};function ve(e,t=36){const n=i("div",{class:`platform-glyph${t===22?" size-sm":t>=52?" size-lg":""}`,style:{background:e.brand,fontSize:`${Math.round(t*.42)}px`}}),s=e.slug?cn[e.slug]:void 0;if(s)n.innerHTML=`<svg viewBox="0 0 24 24" role="img" aria-label="${e.name}"><path d="${s}"/></svg>`;else if(e.slug){const a=document.createElement("img");a.src=`https://api.iconify.design/simple-icons:${e.slug}.svg?color=white`,a.alt=e.name,a.referrerPolicy="no-referrer",a.addEventListener("error",()=>{a.replaceWith(document.createTextNode(e.mark))}),n.append(a)}else n.append(document.createTextNode(e.mark));return n}function Nt(e){return e?"● 已启用":"○ 已停用"}function dn(e){const t=e.is_active!==!1;return i("div",{class:"platform-skill-row"},i("div",{class:"platform-skill-copy"},i("span",{class:"platform-skill-name"},e.skill_name),e.description?i("span",{class:"platform-skill-desc"},e.description):null),i("span",{class:`platform-skill-status ${t?"on":""}`,"data-skill-status":!0},Nt(t)))}function Bt(e){return e?"点击停用整个平台":"点击启用整个平台"}function un(e){const t=O(e.id),n=t.length>0&&t.every(s=>s.is_active!==!1);return i("button",{class:`platform-toggle ${n?"on":""}`,type:"button",title:Bt(n),"aria-pressed":String(n),"data-platform-toggle":e.id,onclick:s=>{s.stopPropagation();const a=O(e.id);a.length&&fn(e,!a.every(l=>l.is_active!==!1))}},i("span",{class:"platform-toggle-thumb"}))}function qe(e){const t=C().find(n=>n.id===e);t&&(document.querySelectorAll("[data-platform-card]").forEach(n=>{if(n.dataset.platformCard!==e)return;const s=n.querySelector("[data-platform-status]");s&&s.replaceWith(zt(t))}),on())}function gn(e){const t=document.querySelector(".platform-modal .platform-caps");if(!t)return!1;const n=t.dataset.platformId||"",s=t.querySelector("[data-platform-toggle]");return s&&(s.classList.toggle("on",e),s.setAttribute("aria-pressed",String(e)),s.title=Bt(e)),t.querySelectorAll("[data-skill-status]").forEach(a=>{a.classList.toggle("on",e),a.textContent=Nt(e)}),n&&qe(n),!!s}function pn(e){if(document.hidden){window.setTimeout(e,0);return}window.requestAnimationFrame(()=>window.setTimeout(e,0))}function mn(e,t,n){const s=T.get(e);!s||s.active!==n||(s.syncTimer!=null&&window.clearTimeout(s.syncTimer),s.syncTimer=window.setTimeout(()=>{const a=T.get(e);if(!a||a.active!==n)return;const l=t.map(r=>({id:r.id,skill_name:r.skill_name,category:r.category,description:r.description??null,price:r.price??0}));c("set_skills_active",{skills:l,active:n}).then(r=>{if(r?.ok===!1){L(e),le();return}L(e),ze(),window.setTimeout(()=>{ze()},1500),window.setTimeout(()=>{le()},r?.queued?5e3:900)}).catch(()=>{L(e),le()})},120))}function fn(e,t){const n=O(e.id);if(n.length){if(bi(e.id,t),n.forEach(s=>{s.is_active=t}),fi(e.id,n),gn(t)||Ft(),!x()){window.setTimeout(()=>L(e.id),700);return}pn(()=>mn(e.id,n,t))}}function Ft(){const e=o.ui.modal;if(e?.kind!=="platform")return;const t=C().find(s=>s.id===e.id),n=document.querySelector(".platform-modal .platform-caps");t&&n&&n.replaceWith(Wt(t))}function Wt(e){const t=O(e.id);return t.length===0?i("div",{class:"platform-caps","data-platform-id":e.id},i("div",{class:"caps-label"},`能力 (${e.caps.length})`),i("div",{class:"caps-list"},...e.caps.map(n=>i("span",{class:"cap-tag"},i("span",{class:"cap-icon"},g.bolt(11,o.tweaks.accent)),n)))):i("div",{class:"platform-caps","data-platform-id":e.id},i("div",{class:"caps-label",style:{display:"flex",alignItems:"center",justifyContent:"space-between"}},i("span",{},`能力 (${t.length})`),un(e)),i("div",{class:"cm-scroll",style:{maxHeight:"min(340px, 40vh)",overflowY:"auto",marginRight:"-6px",paddingRight:"6px"}},...t.map(dn)))}function hn(e){const t=C().find(l=>l.id===e);if(!t)return i("div",{});const n=t.mode==="browser",s=Ot(t.status),a=n?t.status==="login"?"需要在浏览器中完成登录。登录后可执行所有技能。":"该平台通过本地 BNBot 桥接到你已登录的浏览器会话调用。":"该平台走公开 API 调用,无需登录即可使用所有技能。";return i("div",{class:"modal-backdrop",onclick:K},i("div",{class:"platform-modal",onclick:l=>l.stopPropagation(),style:{background:"var(--surface)"}},i("div",{class:"platform-modal-head"},ve(t,52),i("div",{class:"platform-modal-info"},i("div",{class:"platform-modal-cat"},t.cat),i("div",{class:"platform-modal-title"},t.name),i("div",{class:"platform-modal-meta"},S(xt[t.status],s),i("span",{class:`mode-tag ${t.mode}`},Et[t.mode]),i("span",{class:"platform-modal-skills"},`${O(t.id).length||t.skills} 个技能`))),i("button",{class:"modal-close-btn",onclick:K},g.close(14))),i("div",{class:"platform-modal-desc"},a),Wt(t)))}function bn(){const e=ue(),t=_i(),n=e.filter(ye=>ye.status==="completed"),s=J(o.dashboard?.history?.orderCount,e.length),a=Be(),l=a.series[a.series.length-1],r=a.total,d=a.series[a.series.length-2]??0,p=d>0?Math.round((l-d)/d*100):null,w=s||e.length,R=w===0?0:Math.round(n.length/w*100),Z=o.ui.ordersTab;return i("div",{class:"row-stack"},Q("订单与收益","服务调用记录、付费托管任务、收益结算",i("div",{class:"page-actions"},b("刷新",{size:"sm",leading:g.refresh(12),onClick:E}))),i("div",{class:"stats-strip"},W("今日收益",`$${l.toFixed(2)}`,p===null?void 0:`${p>=0?"+":""}${p}%`,p!==null&&p>=0?"ok":void 0),wn("近 7 日",`$${r.toFixed(2)}`,a.series),W("调用次数",String(w)),W("成功率",`${R}%`,"目标 ≥ 98%")),i("div",{class:"row-orders-mid"},vn(),yn(t)),kn(Z,e,s||e.length))}function W(e,t,n,s){return i("div",{class:"stat-card"},i("div",{class:"eyebrow"},e),i("div",{class:"stat-row"},i("div",{class:"stat-value"},t)),n?i("div",{class:`stat-delta ${s==="ok"?"tone-ok":""}`},n):null)}function wn(e,t,n){return i("div",{class:"stat-card"},i("div",{class:"eyebrow"},e),i("div",{class:"stat-row"},i("div",{class:"stat-value"},t),Jt(n,70,28,o.tweaks.accent)))}function vn(){const e=Be().series,t=vi(),n=Math.max(...e)*1.15||1,s=160,a=i("div",{class:"bar-chart"});return[.25,.5,.75,1].forEach(l=>{a.append(i("div",{class:"bar-grid",style:{bottom:`${l*s}px`}}))}),e.forEach((l,r)=>{const d=r===e.length-1,p=l/n,w=i("div",{class:"bar-col"},i("div",{class:`bar ${d?"is-last":""}`,style:{height:`${p*100}%`},title:`$${l.toFixed(2)}`},d?i("div",{class:"bar-tip"},`$${l.toFixed(2)}`):null));a.append(w)}),i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"近 7 日收益"),i("div",{class:"card-subtitle"},`截止 ${Mt(Date.now())} · USDT`)),b("月视图",{kind:"ghost",size:"sm"})),i("div",{class:"chart-container"},a,i("div",{class:"bar-labels"},...t.map((l,r)=>i("div",{class:`bar-label ${r===t.length-1?"is-last":""}`},l)))))}function yn(e){return i("div",{class:"card"},i("div",{class:"balance-head",style:{alignItems:"baseline"}},i("div",{},i("div",{class:"card-title"},"托管任务"),i("div",{class:"card-subtitle"},"已分配的付费长任务")),S(`${e.length} 进行中`,"warn")),i("div",{class:"escrow-list"},...e.length===0?[i("div",{style:{padding:"20px 2px",color:"var(--text-muted)"}},"暂无托管任务")]:e.map(t=>{const n=C().find(s=>s.id===t.platform);return i("div",{class:"escrow-row"},n?ve(n,36):null,i("div",{class:"escrow-info"},i("div",{class:"escrow-skill"},t.skill),i("div",{class:"escrow-meta"},`${n?.name||""} · 截止 ${t.deadline}`)),i("div",{class:"escrow-amount"},i("div",{class:"escrow-reward"},`$${t.reward.toFixed(2)}`),i("div",{class:"escrow-status"},t.status==="in-progress"?"执行中":"排队中")))})))}function kn(e,t,n=t.length){const s=t.filter(d=>d.status==="failed").length,a=t.filter(d=>d.status==="pending").length,l=[{id:"recent",label:"全部订单",n},{id:"failed",label:"失败",n:s},{id:"pending",label:"排队",n:a}],r=e==="failed"?t.filter(d=>d.status==="failed"):e==="pending"?t.filter(d=>d.status==="pending"):t;return i("div",{class:"card flush"},i("div",{class:"orders-toolbar"},i("div",{class:"tab-group"},...l.map(d=>i("button",{class:`tab ${d.id===e?"active":""}`,onclick:()=>{o.ui.ordersTab=d.id,u()}},d.label,i("span",{class:"tab-count"},String(d.n))))),i("div",{class:"tz-stamp"},"UTC+08:00 · today")),i("div",{class:"orders-grid-head"},i("div",{},"时间"),i("div",{},"平台"),i("div",{},"技能"),i("div",{},"状态"),i("div",{class:"right"},"时长"),i("div",{class:"right"},"金额")),i("div",{class:"orders-grid-body cm-scroll"},...r.length===0?[i("div",{style:{padding:"32px 20px",color:"var(--text-muted)"}},"暂无订单")]:r.map(_n)))}function _n(e){const t=C().find(n=>n.id===e.platform);return i("div",{class:"orders-row"},i("div",{class:"time"},e.t),i("div",{class:"platform-cell"},t?ve(t,22):null,i("span",{},t?.name||e.platform)),i("div",{},e.skill),i("div",{},S(e.status==="completed"?"已完成":e.status==="pending"?"排队中":"失败",e.status==="completed"?"ok":e.status==="pending"?"warn":"err")),i("div",{class:"dur right"},e.dur),i("div",{class:`amount right ${e.amount===0?"zero":""}`},Ti(e.amount)))}function Sn(){const e=Mi[o.ui.loginLang];return i("div",{class:"login-screen"},i("div",{class:"login-grid"}),i("div",{class:"login-container"},i("div",{class:"login-brand"},X(36,o.tweaks.accent),i("div",{},i("div",{class:"login-brand-name"},"ClawMoney"),i("div",{class:"login-brand-tag"},e.tagline))),i("div",{class:"login-card"},xn(e)),i("div",{class:"login-footer"},i("div",{class:"login-footer-links"},i("a",{onclick:()=>Y("https://clawmoney.ai/terms")},e.fTerms),i("a",{onclick:()=>Y("https://clawmoney.ai/privacy")},e.fPrivacy),i("a",{onclick:()=>Y("https://github.com/clawmoney")},e.fSource)),Cn())))}function Cn(){return i("div",{class:"lang-toggle-segment"},...["zh","en"].map(e=>i("button",{class:`lang-toggle-option ${o.ui.loginLang===e?"active":""}`,onclick:()=>{o.ui.loginLang=e,u()}},e==="zh"?"中文":"EN")))}function xn(e){switch(o.ui.loginStep){case"choose":return En(e);case"google":return An(e);case"email":return Tn(e);case"emailCode":return Mn(e)}}function En(e){return i("div",{class:"login-pad"},i("div",{class:"login-title"},e.welcome),i("div",{class:"login-sub"},e.subtitle),i("button",{class:"login-btn-google",onclick:In},Lt(18),i("span",{},e.google)),i("div",{class:"login-divider"},i("div",{class:"line"}),i("span",{class:"label"},e.or),i("div",{class:"line"})),i("button",{class:"login-btn-email",onclick:()=>{o.ui.loginStep="email",o.ui.loginError=null,u()}},i("span",{style:{display:"inline-flex",color:"var(--text-muted)"}},g.mail(16)),e.email),o.ui.loginError?i("div",{class:"login-error"},o.ui.loginError):null,i("div",{class:"login-terms"},e.terms))}function An(e){const t=o.ui.googleState,n={idle:"",redirecting:e.gRedirect,granting:e.gGrant,success:e.gSuccess},s={idle:"",redirecting:e.gRedirectSub,granting:e.gGrantSub,success:e.gSuccessSub},a=t==="success",l=i("div",{class:"google-avatar"},i("div",{class:`google-avatar-bg ${a?"success":""}`}),a?null:i("div",{class:"google-avatar-ring"}),i("div",{class:"google-avatar-icon"},a?X(38,"#fff"):Lt(32)));return i("div",{class:"login-google-state"},l,i("div",{class:"google-state-title"},n[t]),i("div",{class:"google-state-sub"},s[t]),t==="redirecting"?i("div",{class:"google-state-domain"},"accounts.google.com"):null,a?i("button",{class:"google-continue-btn",onclick:Ht},e.continueCta):null,a?null:i("button",{class:"login-back",style:{marginTop:"22px"},onclick:()=>{A.forEach(r=>window.clearTimeout(r)),A=[],o.ui.loginStep="choose",o.ui.googleState="idle",u()}},"← ",e.backLink))}function Tn(e){return i("form",{class:"login-pad",onsubmit:t=>{t.preventDefault(),Dn()}},i("button",{type:"button",class:"login-back",onclick:()=>{o.ui.loginStep="choose",u()}},"← ",e.backLink),i("div",{class:"login-title"},e.emailTitle),i("div",{class:"login-sub"},e.emailSub),i("label",{class:"login-label"},e.emailLabel),i("input",{type:"email",class:"login-input",placeholder:"you@example.com",value:o.ui.loginEmail,autofocus:!0,required:!0,oninput:t=>{o.ui.loginEmail=t.target.value}}),o.ui.loginError?i("div",{class:"login-error"},o.ui.loginError):null,i("button",{type:"submit",class:"login-submit"},e.emailCta))}function Mn(e){const t=o.ui.loginCodeError,n=o.ui.loginCodeVerifying,s=Array.from({length:6}).map((a,l)=>{const r=document.createElement("input");return r.className=`login-code-input ${t?"error":""}`,r.inputMode="numeric",r.maxLength=1,r.value=o.ui.loginCode[l]||"",r.disabled=n,l===0&&(r.autofocus=!0),r.addEventListener("input",d=>Rn(l,d.target.value)),r.addEventListener("keydown",d=>$n(l,d)),l===0&&r.addEventListener("paste",Pn),r});return setTimeout(()=>{const a=o.ui.loginCode.length;s[Math.min(a,5)]?.focus()},30),i("div",{class:"login-pad"},i("button",{type:"button",class:"login-back",onclick:()=>{o.ui.loginStep="email",o.ui.loginCodeError=!1,o.ui.loginCode="",u()}},"← ",e.backLink),i("div",{class:"login-title"},e.codeTitle),i("div",{class:"login-sub"},e.codeSubPre,i("b",{style:{color:"var(--text)",fontWeight:"600"}},o.ui.loginEmail),"。",e.codeSubPost),i("div",{class:"login-code-row"},...s),Ln(e),i("div",{class:"login-code-footer"},o.ui.loginCodeResendIn>0?i("span",{},e.codeResendIn(o.ui.loginCodeResendIn)):i("button",{class:"login-code-resend",onclick:()=>{o.ui.loginCodeResendIn=45,Gt(),zn(),u()}},e.codeResend),i("button",{style:{all:"unset",cursor:"pointer",color:"var(--text-muted)"},onclick:()=>{o.ui.loginStep="email",o.ui.loginCodeError=!1,o.ui.loginCode="",u()}},e.codeChange)))}function Ln(e){return o.ui.loginCodeVerifying?i("div",{class:"login-code-status muted"},i("span",{class:"login-spinner"}),e.codeVerifying):o.ui.loginCodeError?i("div",{class:"login-code-status error"},e.codeError):i("div",{class:"login-code-status"})}function Rn(e,t){o.ui.loginCodeError&&(o.ui.loginCodeError=!1);const n=t.replace(/\D/g,"").slice(0,1),s=o.ui.loginCode.split("");s[e]=n,o.ui.loginCode=s.slice(0,6).join(""),u(),n&&e<5&&setTimeout(()=>{document.querySelectorAll(".login-code-input")[e+1]?.focus()},20),o.ui.loginCode.length===6&&!o.ui.loginCodeVerifying&&qt(o.ui.loginCode)}function $n(e,t){const n=document.querySelectorAll(".login-code-input");t.key==="Backspace"&&!o.ui.loginCode[e]&&e>0&&n[e-1]?.focus(),t.key==="ArrowLeft"&&e>0&&n[e-1]?.focus(),t.key==="ArrowRight"&&e<5&&n[e+1]?.focus()}function Pn(e){const n=(e.clipboardData?.getData("text")||"").replace(/\D/g,"").slice(0,6);n&&(e.preventDefault(),o.ui.loginCode=n,u(),n.length===6&&qt(n))}function Gt(){B!=null&&window.clearInterval(B),B=window.setInterval(()=>{o.ui.loginCodeResendIn=Math.max(0,o.ui.loginCodeResendIn-1),o.ui.loginCodeResendIn===0&&B!=null&&(window.clearInterval(B),B=null),u()},1e3)}async function In(){if(A.forEach(e=>window.clearTimeout(e)),A=[],o.ui.loginStep="google",o.ui.googleState="redirecting",o.ui.loginError=null,u(),x()){const e=await m("start_google_login");if(!e.ok){o.ui.googleState="idle",o.ui.loginStep="choose",o.ui.loginError=Ue(e)||"Could not open Google login.",u();return}o.ui.googleState="success",u(),await E(),o.ui.loginStep="choose",o.ui.googleState="idle",u();return}m("start_google_login"),A.push(window.setTimeout(()=>{o.ui.googleState="granting",u()},700)),A.push(window.setTimeout(()=>{o.ui.googleState="success",u()},1600)),A.push(window.setTimeout(Ht,2200))}async function Ht(){A.forEach(e=>window.clearTimeout(e)),A=[],await E(),o.ui.loginStep="choose",o.ui.googleState="idle",o.ui.loginError=null,u()}async function Dn(){if(!o.ui.loginEmail)return;o.ui.loginError=null;const e=await m("start_email_login",{email:o.ui.loginEmail});if(!e.ok){o.ui.loginError=Ue(e)||"Could not send verification code.",u();return}o.ui.loginStep="emailCode",o.ui.loginCode="",o.ui.loginCodeError=!1,o.ui.loginCodeResendIn=45,Gt(),u()}async function qt(e){o.ui.loginCodeVerifying=!0,o.ui.loginError=null,u();const t=await m("verify_email_login",{email:o.ui.loginEmail,code:e});t.ok?(await E(),o.ui.loginStep="choose",o.ui.loginCode="",o.ui.loginCodeError=!1):(o.ui.loginCodeError=!0,o.ui.loginCode="",o.ui.loginError=Ue(t)),o.ui.loginCodeVerifying=!1,u()}async function zn(){o.ui.loginEmail&&await m("start_email_login",{email:o.ui.loginEmail})}function Ue(e){if(!e)return"";const t=e.error??e.detail;if(!t)return"";if(typeof t=="string")return t;if(typeof t=="object"){const n=t.message??t.detail??t.error;if(typeof n=="string")return n;try{return JSON.stringify(t)}catch{return String(t)}}return String(t)}function x(){return!!window.__TAURI_INTERNALS__}function On(){o.ui.modal={kind:"settings",section:"app"},u()}const Ie=[{id:"app",label:"应用",icon:()=>g.home(14)},{id:"about",label:"关于",icon:()=>g.spark(14)}];function Ut(e){switch(e){case"app":return Fn();case"about":return Gn()}}function Nn(e){if(o.ui.modal?.kind!=="settings")return;o.ui.modal.section=e,document.querySelectorAll(".settings-nav").forEach(a=>{a.classList.toggle("active",a.dataset.section===e)});const t=document.querySelector(".settings-content-title");t&&(t.textContent=Ie.find(a=>a.id===e)?.label||"");const n=document.querySelector(".settings-content");if(!n)return;const s=n.querySelector(".settings-content-head");for(;n.lastChild&&n.lastChild!==s;)n.removeChild(n.lastChild);n.append(Ut(e))}function Bn(e){return i("div",{class:"modal-backdrop",onclick:K},i("div",{class:"settings-modal",onclick:t=>t.stopPropagation()},i("div",{class:"settings-sidebar"},i("div",{class:"settings-sidebar-title"},"设置"),...Ie.map(t=>i("button",{class:`settings-nav ${t.id===e?"active":""}`,"data-section":t.id,onclick:()=>Nn(t.id)},i("span",{class:"settings-nav-icon"},t.icon()),t.label)),i("div",{style:{flex:"1"}}),i("button",{class:"settings-logout",onclick:Qt},g.power(13,"var(--err)")," 退出登录")),i("div",{class:"settings-content cm-scroll"},i("div",{class:"settings-content-head"},i("div",{class:"settings-content-title"},Ie.find(t=>t.id===e)?.label||""),i("button",{class:"modal-close-btn",onclick:K},g.close(14))),Ut(e))))}function Fn(){return i("div",{},$("语言","登录页支持中英文 · 主界面目前仅中文",i("select",{class:"set-select",onchange:e=>{const t=e.target.value;o.locale=t,o.ui.loginLang=t,localStorage.setItem("clawmoney.locale",t),u()}},i("option",{value:"zh",selected:o.locale==="zh"},"简体中文"),i("option",{value:"en",selected:o.locale==="en"},"English"))),$("外观","明亮 / 深色",i("select",{class:"set-select",onchange:e=>{o.tweaks.dark=e.target.value==="dark",Ri(),u()}},i("option",{value:"light",selected:!o.tweaks.dark},"明亮"),i("option",{value:"dark",selected:o.tweaks.dark},"深色"))),$("开机自启","系统启动时自动打开 ClawMoney",se(!0,()=>{})),$("保持不休眠","防止系统休眠中断接单(不影响显示器)",se(!!o.dashboard?.config?.keep_awake,e=>{c("set_keep_awake",{enabled:e}).then(()=>{o.dashboard?.config&&(o.dashboard.config.keep_awake=e),ze(),u()}).catch(()=>{})})),$("自动更新","在后台静默下载新版本",se(!0,()=>{})),$("数据目录","日志、缓存、配置存放位置",i("code",{class:"set-code",style:{fontSize:"11.5px"}},o.dashboard?.configPath||"~/.clawmoney")),$("发送匿名诊断","帮助我们改进稳定性",se(!1,()=>{})))}let ne=!1;function Wn(){const e=[];for(const t of li.split(`
67
+ `))t.startsWith("## ")?e.push(i("div",{class:"cl-version"},t.slice(3))):t.startsWith("### ")?e.push(i("div",{class:"cl-section"},t.slice(4))):t.startsWith("- ")&&t.length>2&&e.push(i("div",{class:"cl-item"},t.slice(2)));return e}function Gn(){const e=P==="checking"?b("检查中…",{size:"sm",kind:"ghost"}):D?b(`下载 v${D.version}`,{size:"sm",kind:"solid",leading:g.arrowOut(11),onClick:()=>{m("open_external",{url:D.url})}}):b(P==="latest"?"已是最新版本":"检查更新",{size:"sm",kind:"ghost",onClick:()=>{bt(!0)}});return i("div",{class:"about-block"},i("div",{style:{display:"inline-flex"}},X(56,o.tweaks.accent)),i("div",{class:"about-name"},"ClawMoney"),i("div",{class:"about-version"},"v0.3.1 · macOS Universal"),i("div",{class:"about-copy"},"© 2026 ClawMoney.AI",i("br",{}),"Open source soon."),i("div",{class:"about-actions"},e,b(ne?"收起更新日志":"查看更新日志",{size:"sm",kind:"ghost",onClick:()=>{ne=!ne,u()}})),ne?i("div",{class:"about-changelog cm-scroll"},...Wn()):null)}function $(e,t,n){return i("div",{class:"set-row"},i("div",{class:"label-wrap"},i("div",{class:"label"},e),i("div",{class:"sub"},t)),i("div",{style:{flexShrink:"0"}},n))}function se(e,t){return i("button",{class:`set-toggle ${e?"on":""}`,onclick:()=>t(!e)})}function Vt(){return Pt(o.dashboard?.providerLog)}function Ve(){const e=Vt();document.querySelectorAll("[data-provider-log-body]").forEach(t=>{const n=t.scrollHeight-t.scrollTop-t.clientHeight<48;t.replaceChildren(...It(e)),n&&(t.scrollTop=t.scrollHeight)})}function Hn(){f.timer!=null&&window.clearInterval(f.timer),f.timer=null}function qn(){const e=jt(),t=Yt(),n=f.paused;return i("div",{class:"modal-backdrop",style:{background:o.tweaks.dark?"rgba(8,8,9,0.6)":"rgba(20,18,14,0.4)",backdropFilter:"blur(10px)"},onclick:De},i("div",{class:"log-modal",onclick:s=>s.stopPropagation()},i("div",{class:"log-modal-head"},i("div",{class:"log-modal-title-tag"},i("span",{class:`log-modal-live ${n?"paused":""}`}),i("div",{class:"log-modal-title"},"Provider 日志"),i("span",{class:"log-modal-counts"},Kt(e.length,f.logs.length,n))),i("div",{class:"log-modal-spacer"}),i("div",{class:"log-modal-search"},i("span",{style:{display:"inline-flex"}},g.search(12,"rgba(255,255,255,0.5)")),i("input",{placeholder:"搜索日志…",value:f.query,oninput:s=>{f.query=s.target.value,u()}}),f.query?i("button",{style:{all:"unset",cursor:"pointer",color:"rgba(255,255,255,0.5)",display:"inline-flex"},onclick:()=>{f.query="",u()}},g.close(11)):null),i("div",{class:"log-modal-filters"},...["all","INFO","WARN","ERROR","DEBUG"].map(s=>i("button",{class:`log-modal-filter ${s} ${s===f.filter?"active":""}`,onclick:()=>{f.filter=s,u()}},s==="all"?"全部":s,s!=="all"?i("span",{class:"log-modal-filter-count","data-log-count":s},String(t[s]||0)):null))),i("div",{class:"log-modal-actions"},i("button",{class:"log-modal-iconbtn",title:n?"继续":"暂停",onclick:()=>{f.paused=!f.paused,u()}},n?g.play(12):g.pause(12)),i("button",{class:"log-modal-iconbtn",title:"下载"},g.download(12)),i("button",{class:"log-modal-iconbtn",title:"清空",onclick:()=>{f.logs=[],u()}},g.trash(12)),i("button",{class:"log-modal-iconbtn",title:"关闭",onclick:De,style:{marginLeft:"4px"}},g.close(13)))),i("div",{class:"log-modal-body cm-scroll"},...e.length===0?[i("div",{class:"log-modal-empty"},"没有匹配的日志行")]:e.map(Ge)),i("div",{class:"log-modal-foot"},i("div",{},"tail · 自动滚动到底部"),i("div",{},"~/.clawmoney/provider.log"))))}function jt(){const e=f.query.toLowerCase();return f.logs.filter(t=>(f.filter==="all"||t.lvl===f.filter)&&(!e||t.msg.toLowerCase().includes(e)))}function Yt(){return f.logs.reduce((e,t)=>(e[t.lvl]=(e[t.lvl]||0)+1,e),{})}function Kt(e,t,n){return`· ${e}/${t} 行 ${n?"· 已暂停":""}`}function je(){const e=document.querySelector(".log-modal-body");if(!e)return;const t=jt(),n=e.scrollHeight-e.scrollTop-e.clientHeight<48;e.replaceChildren(...t.length===0?[i("div",{class:"log-modal-empty"},"没有匹配的日志行")]:t.map(Ge)),n&&(e.scrollTop=e.scrollHeight);const s=document.querySelector(".log-modal-counts");s&&(s.textContent=Kt(t.length,f.logs.length,f.paused));const a=document.querySelector(".log-modal-live");a&&a.classList.toggle("paused",f.paused);const l=Yt();document.querySelectorAll("[data-log-count]").forEach(r=>{const d=r.getAttribute("data-log-count")||"";r.textContent=String(l[d]||0)})}function De(){Hn(),o.ui.modal?.kind==="log"&&(o.ui.modal=null,u())}function Q(e,t,n){return i("div",{class:"page-header"},i("div",{},i("h1",{class:"page-title"},e),i("div",{class:"page-subtitle"},(t instanceof Node,t))),n)}function S(e,t="off"){return i("span",{class:`pill tone-${t}`},i("span",{class:"pill-dot"}),e)}function b(e,t={}){const n=["btn"];return t.size&&t.size!=="md"&&n.push(`size-${t.size}`),n.push(`kind-${t.kind||"ghost"}`),t.danger&&n.push("danger"),i("button",{class:n.join(" "),onclick:t.onClick},t.leading,e)}function Un(e,t){return i("div",{class:"search-box"},i("span",{class:"icon-search"},g.search(13)),i("input",{placeholder:"搜索平台...",value:e,oninput:n=>t(n.target.value)}),e?i("button",{class:"icon-clear",onclick:()=>t("")},g.close(12)):null)}function Jt(e,t,n,s,a=.18,l=1.6){const r=Math.min(...e),d=Math.max(...e),p=2,w=e.map((ee,ke)=>p+ke*(t-2*p)/(e.length-1)),R=e.map(ee=>p+(1-(ee-r)/(d-r||1))*(n-2*p)),Z=w.map((ee,ke)=>`${ee.toFixed(1)},${R[ke].toFixed(1)}`).join(" "),ye=`M${w[0]},${n} L ${Z} L ${w[w.length-1]},${n} Z`,H=document.createElementNS("http://www.w3.org/2000/svg","svg");return H.setAttribute("width",String(t)),H.setAttribute("height",String(n)),H.setAttribute("viewBox",`0 0 ${t} ${n}`),H.innerHTML=`
68
68
  <path d="${ye}" fill="${s}" opacity="${a}"/>
69
69
  <polyline points="${Z}" fill="none" stroke="${s}" stroke-width="${l}" stroke-linejoin="round" stroke-linecap="round"/>
70
- `,H}async function m(e,t){return x()?c(e,t):Un(e,t)}async function Un(e,t){return await new Promise(s=>window.setTimeout(s,80)),e==="logout"&&(oe=!0),e==="verify_email_login"&&(oe=!1),e==="start_google_login"&&(oe=!1),e==="start_market"&&(ce=!0),e==="stop_market"&&(ce=!1),e==="start_surf"&&(de=!0),e==="stop_surf"&&(de=!1),{load_dashboard:Vn(),load_provider_log:{ok:!0,providerLog:Fe.map(s=>`[${s.t.slice(0,8)}] ${s.lvl} ${s.msg}`)},start_email_login:{ok:!0,email:t?.email||"demo@clawmoney.ai"},verify_email_login:{ok:!0},start_google_login:{ok:!0},install_extension:{ok:!0},open_external:{ok:!0},logout:{ok:!0},start_market:{ok:!0},stop_market:{ok:!0},start_surf:{ok:!0},stop_surf:{ok:!0}}[e]||{ok:!0}}function Vn(){return oe?{ok:!0,apiBase:"https://api.bnbot.ai",configPath:"/Users/demo/.clawmoney/config.yaml",configured:!1,services:{market:{running:!1,pid:null},surf:{running:!1,pid:null}},extension:{installed:!1,connected:!1},connections:{platforms:[]},providerLog:[]}:{ok:!0,apiBase:"https://api.bnbot.ai",configPath:"/Users/demo/.clawmoney/config.yaml",configured:!0,config:{agent_slug:"claw-scout",email:"operator@clawmoney.ai",wallet_address:"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B"},account:{ok:!0,data:{name:"claw-scout",slug:"claw-scout",status:"ACTIVE",email:"operator@clawmoney.ai"}},wallet:{ok:!0,address:"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B",balance:48.27},extension:{installed:!0,connected:!0},services:{market:{running:ce,pid:ce?48371:null},surf:{running:de,pid:de?92682:null}},history:{ok:!0,orders:Me,escrow:Le,orderCount:Me.length,escrowCount:Le.length},providerLog:Fe.map(e=>`[${e.t.slice(0,8)}] ${e.lvl} ${e.msg}`),connections:{platforms:C().map(e=>({slug:e.id,label:e.name,category:e.cat,skillCount:e.skills,ready:e.status==="ready",loginRequired:e.mode==="browser",login:{status:e.status==="ready"?"logged_in":"logged_out"}})),desktop:[]},preflight:{ts:"2026-06-03T12:00:00.000Z",ok:!1,summary:{checked:8,failed:1,droppedSkills:1},platforms:{codex:{label:"Codex 绘图",category:"local-app",status:"failed",skills:1,reason:"Codex Desktop 未运行",hint:"安装并打开 Codex.app(运行 `codex app` 可自动下载)"},x:{label:"X / Twitter",category:"social-login",status:"unknown",skills:11,reason:"X 登录态未确认(探测超时)",hint:"若 X 接单失败,请检查 Chrome 是否登录 x.com"}},dropped:["codex.image_generate"]}}}function Xt(e){const t=e?.history,n=o.dashboard?.history;t&&t.ok===!1&&n&&n.ok===!0&&(e.history=n)}async function E(){if(!F){F=!0,Oe=Date.now(),document.body.classList.add("busy");try{const e=await m("load_dashboard");xt(e),Xt(e),o.dashboard=e,Ke(),o.ui.modal?.kind==="log"?Ye():o.ui.route==="logs"?je():u()}catch(e){console.error(e)}finally{F=!1,document.body.classList.remove("busy")}}}async function le(){if(F)return;F=!0,Oe=Date.now();const e=o.ui.route,t=o.ui.modal?.kind||null;try{const n=await m("load_dashboard");xt(n),Xt(n),o.dashboard=n,Ke();const s=o.ui.route!==e||(o.ui.modal?.kind||null)!==t;o.ui.modal?.kind==="log"?Ye():o.ui.route==="logs"?je():o.ui.modal?.kind==="platform"?Ft():!s&&!o.ui.modal&&u()}catch(n){console.error(n)}finally{F=!1}}async function ze(){try{const e=await m("load_provider_log");o.dashboard&&Array.isArray(e.providerLog)&&(o.dashboard.providerLog=e.providerLog),Ke(),o.ui.modal?.kind==="log"?Ye():je()}catch(e){console.error(e)}}function Ke(){o.ui.modal?.kind!=="log"||f.paused||(f.logs=Vt())}async function gt(e){const t=o.dashboard?.services?.[e]?.running;await m(t?`stop_${e}`:`start_${e}`),await E()}async function jn(){await Promise.all([o.dashboard?.services?.market?.running?null:m("start_market"),o.dashboard?.services?.surf?.running?null:m("start_surf")].filter(Boolean)),await E()}async function Qt(){await m("logout"),o.ui.modal=null,o.ui.route="home",o.ui.loginStep="choose",o.ui.loginCode="",o.ui.loginEmail="",await E()}async function Y(e){try{await m("open_external",{url:e})}catch{}}function K(){if(o.ui.modal?.kind==="log"){De();return}o.ui.modal=null,u()}window.addEventListener("resize",Re);document.addEventListener("keydown",e=>{e.key==="Escape"&&o.ui.modal&&K()});window.setInterval(()=>{o.dashboard?.configured&&(x()||(o.ui.balance=+(o.ui.balance+Math.random()*.04).toFixed(2),o.dashboard?.wallet&&(o.dashboard.wallet.balance=o.ui.balance),o.ui.route==="home"&&u()))},5200);window.setInterval(()=>{x()&&o.dashboard?.configured&&(document.hidden||Date.now()-Oe<12e3||le())},15e3);u();E();window.setTimeout(()=>{o.dashboard?.configured&&(me||(me=!0,Ge()),pe||(pe=!0,he()),G||(G=!0,be()))},3e3);window.setTimeout(()=>{wt()},6e3);(()=>{if(!x())return;const e=56,t=Ne(),n=a=>!!a?.closest("button,input,textarea,select,a,[role=button],[contenteditable=true]"),s=a=>{const l=a.target;return!l||n(l)?!1:a.clientY<=e||!!l.closest("[data-tauri-drag-region]")};window.addEventListener("mousedown",a=>{a.button===0&&s(a)&&t.startDragging().catch(()=>{})},!0),window.addEventListener("dblclick",a=>{s(a)&&t.toggleMaximize().catch(()=>{})},!0)})();
70
+ `,H}async function m(e,t){return x()?c(e,t):Vn(e,t)}async function Vn(e,t){return await new Promise(s=>window.setTimeout(s,80)),e==="logout"&&(oe=!0),e==="verify_email_login"&&(oe=!1),e==="start_google_login"&&(oe=!1),e==="start_market"&&(ce=!0),e==="stop_market"&&(ce=!1),e==="start_surf"&&(de=!0),e==="stop_surf"&&(de=!1),{load_dashboard:jn(),load_provider_log:{ok:!0,providerLog:Fe.map(s=>`[${s.t.slice(0,8)}] ${s.lvl} ${s.msg}`)},start_email_login:{ok:!0,email:t?.email||"demo@clawmoney.ai"},verify_email_login:{ok:!0},start_google_login:{ok:!0},install_extension:{ok:!0},open_external:{ok:!0},logout:{ok:!0},start_market:{ok:!0},stop_market:{ok:!0},start_surf:{ok:!0},stop_surf:{ok:!0}}[e]||{ok:!0}}function jn(){return oe?{ok:!0,apiBase:"https://api.bnbot.ai",configPath:"/Users/demo/.clawmoney/config.yaml",configured:!1,services:{market:{running:!1,pid:null},surf:{running:!1,pid:null}},extension:{installed:!1,connected:!1},connections:{platforms:[]},providerLog:[]}:{ok:!0,apiBase:"https://api.bnbot.ai",configPath:"/Users/demo/.clawmoney/config.yaml",configured:!0,config:{agent_slug:"claw-scout",email:"operator@clawmoney.ai",wallet_address:"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B"},account:{ok:!0,data:{name:"claw-scout",slug:"claw-scout",status:"ACTIVE",email:"operator@clawmoney.ai"}},wallet:{ok:!0,address:"0x95a9C8C40d4f1A8e9E76b9d0c7B342D8aB9D4B",balance:48.27},extension:{installed:!0,connected:!0},services:{market:{running:ce,pid:ce?48371:null},surf:{running:de,pid:de?92682:null}},history:{ok:!0,orders:Me,escrow:Le,orderCount:Me.length,escrowCount:Le.length},providerLog:Fe.map(e=>`[${e.t.slice(0,8)}] ${e.lvl} ${e.msg}`),connections:{platforms:C().map(e=>({slug:e.id,label:e.name,category:e.cat,skillCount:e.skills,ready:e.status==="ready",loginRequired:e.mode==="browser",login:{status:e.status==="ready"?"logged_in":"logged_out"}})),desktop:[]},preflight:{ts:"2026-06-03T12:00:00.000Z",ok:!1,summary:{checked:8,failed:1,droppedSkills:1},platforms:{codex:{label:"Codex 绘图",category:"local-app",status:"failed",skills:1,reason:"Codex Desktop 未运行",hint:"安装并打开 Codex.app(运行 `codex app` 可自动下载)"},x:{label:"X / Twitter",category:"social-login",status:"unknown",skills:11,reason:"X 登录态未确认(探测超时)",hint:"若 X 接单失败,请检查 Chrome 是否登录 x.com"}},dropped:["codex.image_generate"]}}}function Xt(e){const t=e?.history,n=o.dashboard?.history;t&&t.ok===!1&&n&&n.ok===!0&&(e.history=n)}async function E(){if(!F){F=!0,Ne=Date.now(),document.body.classList.add("busy");try{const e=await m("load_dashboard");Ct(e),Xt(e),o.dashboard=e,Ye(),o.ui.modal?.kind==="log"?je():o.ui.route==="logs"?Ve():u()}catch(e){console.error(e)}finally{F=!1,document.body.classList.remove("busy")}}}async function le(){if(F)return;F=!0,Ne=Date.now();const e=o.ui.route,t=o.ui.modal?.kind||null;try{const n=await m("load_dashboard");Ct(n),Xt(n),o.dashboard=n,Ye();const s=o.ui.route!==e||(o.ui.modal?.kind||null)!==t;o.ui.modal?.kind==="log"?je():o.ui.route==="logs"?Ve():o.ui.modal?.kind==="platform"?Ft():!s&&!o.ui.modal&&u()}catch(n){console.error(n)}finally{F=!1}}async function ze(){try{const e=await m("load_provider_log");o.dashboard&&Array.isArray(e.providerLog)&&(o.dashboard.providerLog=e.providerLog),Ye(),o.ui.modal?.kind==="log"?je():Ve()}catch(e){console.error(e)}}function Ye(){o.ui.modal?.kind!=="log"||f.paused||(f.logs=Vt())}async function ut(e){const t=o.dashboard?.services?.[e]?.running;await m(t?`stop_${e}`:`start_${e}`),await E()}async function Yn(){await Promise.all([o.dashboard?.services?.market?.running?null:m("start_market"),o.dashboard?.services?.surf?.running?null:m("start_surf")].filter(Boolean)),await E()}async function Qt(){await m("logout"),o.ui.modal=null,o.ui.route="home",o.ui.loginStep="choose",o.ui.loginCode="",o.ui.loginEmail="",await E()}async function Y(e){try{await m("open_external",{url:e})}catch{}}function K(){if(o.ui.modal?.kind==="log"){De();return}o.ui.modal=null,u()}window.addEventListener("resize",Re);document.addEventListener("keydown",e=>{e.key==="Escape"&&o.ui.modal&&K()});window.setInterval(()=>{o.dashboard?.configured&&(x()||(o.ui.balance=+(o.ui.balance+Math.random()*.04).toFixed(2),o.dashboard?.wallet&&(o.dashboard.wallet.balance=o.ui.balance),o.ui.route==="home"&&u()))},5200);window.setInterval(()=>{x()&&o.dashboard?.configured&&(document.hidden||Date.now()-Ne<12e3||le())},15e3);u();E();window.setTimeout(()=>{o.dashboard?.configured&&(me||(me=!0,We()),pe||(pe=!0,he()),G||(G=!0,be()))},3e3);window.setTimeout(()=>{bt()},6e3);(()=>{if(!x())return;const e=56,t=Oe(),n=a=>!!a?.closest("button,input,textarea,select,a,[role=button],[contenteditable=true]"),s=a=>{const l=a.target;return!l||n(l)?!1:a.clientY<=e||!!l.closest("[data-tauri-drag-region]")};window.addEventListener("mousedown",a=>{a.button===0&&s(a)&&t.startDragging().catch(()=>{})},!0),window.addEventListener("dblclick",a=>{s(a)&&t.toggleMaximize().catch(()=>{})},!0)})();
@@ -0,0 +1 @@
1
+ :root{--accent: #E85A2C;--bg: #fafaf6;--sidebar: linear-gradient(180deg, rgba(255, 255, 255, .58) 0%, rgba(244, 247, 244, .38) 100%);--surface: #ffffff;--surface-alt: #f7f5ef;--raised: #ffffff;--line: rgba(20, 18, 14, .07);--line-strong: rgba(20, 18, 14, .14);--text: #14130f;--text-muted: #6b6862;--text-subtle: #9b988f;--ok: #1f8a5b;--ok-bg: rgba(31, 138, 91, .1);--warn: #b46a16;--warn-bg: rgba(180, 106, 22, .12);--err: #c8392e;--err-bg: rgba(200, 57, 46, .1);--shadow: 0 28px 60px -12px rgba(0, 0, 0, .32), 0 12px 30px -16px rgba(0, 0, 0, .18);--card-shadow: 0 0 0 .5px rgba(20, 18, 14, .05), 0 1px 0 rgba(255, 255, 255, .6) inset;--window-outline: 0 0 0 .5px rgba(0, 0, 0, .25);--soft-fill: rgba(20, 18, 14, .05);--soft-fill-strong: rgba(20, 18, 14, .07);--dash-fill: rgba(20, 18, 14, .025);--nav-active-fill: rgba(20, 18, 14, .06);--terminal-bg: #13130f;--color-scheme: light}.cm-dark{--bg: #0e0e10;--sidebar: linear-gradient(180deg, rgba(32, 34, 38, .58) 0%, rgba(20, 21, 24, .42) 100%);--surface: #1a1b1f;--surface-alt: #202126;--raised: #23252b;--line: rgba(255, 255, 255, .07);--line-strong: rgba(255, 255, 255, .14);--text: #f3f2ee;--text-muted: #a8a59c;--text-subtle: #6e6c64;--ok: #3cc88a;--ok-bg: rgba(60, 200, 138, .14);--warn: #f0a955;--warn-bg: rgba(240, 169, 85, .16);--err: #f06464;--err-bg: rgba(240, 100, 100, .16);--shadow: 0 30px 60px -20px rgba(0, 0, 0, .6), 0 8px 24px -12px rgba(0, 0, 0, .6);--card-shadow: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 0 0 .5px rgba(255, 255, 255, .04);--window-outline: 0 0 0 .5px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .04);--soft-fill: rgba(255, 255, 255, .06);--soft-fill-strong: rgba(255, 255, 255, .08);--dash-fill: rgba(255, 255, 255, .03);--nav-active-fill: rgba(255, 255, 255, .06);--terminal-bg: #0b0c0e;--color-scheme: dark}*{box-sizing:border-box;font-variant-numeric:tabular-nums}html,body{-webkit-user-select:none;user-select:none;cursor:default}input,textarea,code,pre,.log-body,.log-modal-body,.chain-addr,.set-code,.platform-meta-grid .v.mono,.settings-profile .addr,.about-version{-webkit-user-select:text;user-select:text;cursor:text}button,.btn,.chip,.tab,.platform-card,.nav-item,.settings-nav,.icon-button,.modal-close-btn,.log-modal-iconbtn,.log-expand,.lang-toggle-option,.traffic-dot,.set-toggle,.login-btn-google,.login-btn-email,.login-submit,.login-back,.login-code-resend,.google-continue-btn,.settings-logout{cursor:pointer}html,body{margin:0;padding:0;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,system-ui,sans-serif;-webkit-font-smoothing:antialiased;background:#0d0f12;color:var(--text);font-size:13.5px}html.is-tauri-root,html.is-tauri-root body{background:transparent;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none;cursor:pointer}.desktop{position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 20% 10%,#2b3a3f 0%,transparent 60%),radial-gradient(ellipse 70% 50% at 90% 20%,#4d2e1f 0%,transparent 60%),radial-gradient(ellipse 100% 80% at 50% 110%,#1c2d2a 0%,transparent 60%),linear-gradient(180deg,#11141a,#0d0f12,#0a0c0e);transition:opacity .25s ease;z-index:0}.desktop:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 18% 28%,rgba(255,255,255,.025) 0%,transparent 30%),radial-gradient(circle at 82% 72%,rgba(255,255,255,.02) 0%,transparent 30%);mix-blend-mode:screen}.desktop:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at top,#0a0a0c00,#0a0a0c8c)}.stage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1}#app{width:1280px;height:820px;max-width:100%;max-height:100%;display:flex;gap:0;padding:0;position:relative;border-radius:28px;overflow:hidden;background:var(--bg);box-shadow:none;color:var(--text);transform-origin:center center}.cm-scroll::-webkit-scrollbar{width:10px;height:10px}.cm-scroll::-webkit-scrollbar-thumb{background:#0000002e;border:2px solid transparent;background-clip:content-box;border-radius:8px}.cm-scroll::-webkit-scrollbar-thumb:hover{background:#00000052;border:2px solid transparent;background-clip:content-box}.cm-dark .cm-scroll::-webkit-scrollbar-thumb{background:#ffffff29;border:2px solid transparent;background-clip:content-box}.cm-noscrollbar{scrollbar-width:none;-ms-overflow-style:none}.cm-noscrollbar::-webkit-scrollbar{width:0;height:0;display:none}.main-scroll,.orders-grid-body,.settings-content,.log-body,.log-modal-body{scrollbar-width:none;-ms-overflow-style:none}.main-scroll::-webkit-scrollbar,.orders-grid-body::-webkit-scrollbar,.settings-content::-webkit-scrollbar,.log-body::-webkit-scrollbar,.log-modal-body::-webkit-scrollbar{width:0;height:0;display:none}@keyframes cm-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}@keyframes cm-status-breathe{0%,to{box-shadow:0 0 color-mix(in srgb,currentColor 24%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,currentColor 0%,transparent)}}@keyframes cm-modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}@keyframes cm-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes cm-spin{to{transform:rotate(360deg)}}.sidebar{width:232px;flex-shrink:0;position:absolute;top:8px;left:8px;bottom:8px;background:var(--sidebar);border:0;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;backdrop-filter:saturate(180%) blur(34px);-webkit-backdrop-filter:saturate(180%) blur(34px);box-shadow:0 40px 100px #10161614,0 16px 40px #1016160d,0 4px 12px #10161608;z-index:5}.cm-dark .sidebar{border-right-color:#ffffff14;box-shadow:0 40px 100px #0000002e,0 16px 40px #0000001f,0 4px 12px #00000012}.sidebar:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#ffffff9e,#ffffff1f 58%,#fff0),radial-gradient(circle at 30% 6%,rgba(255,255,255,.64),transparent 38%);opacity:.72}.cm-dark .sidebar:before{background:linear-gradient(90deg,rgba(255,255,255,.05),transparent 58%),radial-gradient(circle at 28% 10%,rgba(255,255,255,.08),transparent 34%);opacity:1}.sidebar>*{position:relative;z-index:1}.sidebar-header{padding:14px 16px 8px;-webkit-app-region:drag}.brand{-webkit-app-region:drag}.traffic{display:flex;gap:8px;align-items:center;-webkit-app-region:no-drag}.traffic-dot{width:12px;height:12px;border-radius:50%;border:none;padding:0;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 .5px #00000026;cursor:pointer}.traffic-dot.close{background:#ff5f57}.traffic-dot.min{background:#febc2e}.traffic-dot.max{background:#28c840}.traffic-dot span{font-size:8px;line-height:1;color:#0000008c;font-weight:700;opacity:0}.traffic:hover .traffic-dot span{opacity:1}.brand{padding:10px 16px 18px;display:flex;align-items:center;gap:10px}.brand-text{font-size:14.5px;font-weight:700;color:var(--text);letter-spacing:-.005em}.brand-tag{margin-left:auto;font-size:10px;font-weight:700;color:var(--text-subtle);padding:2px 6px;border-radius:5px;background:var(--soft-fill);box-shadow:none}.cm-dark .brand-tag{background:#ffffff12;box-shadow:inset 0 1px #ffffff0d}.nav-section-label{padding:4px 18px 6px;font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--text-subtle);text-transform:uppercase}.nav{padding:0 10px;display:flex;flex-direction:column;gap:1px}.nav-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:500;color:var(--text-muted);background:transparent;transition:background .12s,color .12s,box-shadow .12s;position:relative;cursor:pointer}.nav-item:hover{background:#14120e09}.cm-dark .nav-item:hover{background:#ffffff0b}.nav-item.active{background:#14120e11;color:var(--text);box-shadow:inset 0 1px #ffffff6b,inset 0 0 0 .5px #14120e06}.cm-dark .nav-item.active{background:#ffffff13;box-shadow:inset 0 0 0 .5px #ffffff09}.nav-item.active:before{content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:2px;background:var(--accent)}.nav-icon{color:var(--text-muted);display:inline-flex}.nav-item.active .nav-icon{color:var(--accent)}.nav-label{flex:1}.nav-badge{font-size:10.5px;font-weight:700;background:var(--warn-bg);color:var(--warn);padding:1px 6px;border-radius:999px;line-height:1.4}.sidebar-spacer{flex:1}.network-rail{margin:0 16px 12px;padding:10px 12px;border-radius:10px;background:var(--dash-fill);border:.5px dashed var(--line);font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;justify-content:space-between}.network-left{display:flex;align-items:center;gap:7px}.network-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.network-ping{font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--text-subtle)}.agent-card{margin:0;padding:10px 16px 14px;border-radius:0;background:transparent;border:0;box-shadow:none;font-size:12px}.cm-dark .agent-card{background:transparent;box-shadow:none}.agent-row{display:flex;align-items:center;gap:8px}.agent-avatar{width:32px;height:32px;border-radius:8px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;letter-spacing:-.02em;flex-shrink:0;text-transform:uppercase}.agent-info{flex:1;min-width:0}.agent-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-status{font-size:11px;color:var(--text-subtle);display:flex;align-items:center;gap:5px;margin-top:2px}.agent-status-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 2.5px var(--ok-bg)}.icon-button{all:unset;cursor:pointer;color:var(--text-subtle);width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:var(--soft-fill)}.icon-button:hover{background:var(--soft-fill-strong)}.main{flex:1;width:100%;height:100%;display:flex;flex-direction:column;min-width:0;position:relative;background:var(--bg);border-radius:0;overflow:visible;z-index:1;padding-left:256px;box-sizing:border-box}.titlebar{height:0;flex-shrink:0;-webkit-app-region:drag}.main-scroll{flex:1;overflow:auto;padding:22px 28px 28px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:0;gap:16px}.page-title{margin:0;font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.page-subtitle{margin-top:6px;font-size:13px;color:var(--text-muted)}.page-actions{display:flex;gap:8px;align-items:center}.card{background:var(--surface);border-radius:14px;padding:20px;box-shadow:var(--card-shadow);border:.5px solid var(--line);transition:transform .14s ease,box-shadow .14s ease,border-color .14s}.card.flush{padding:0;overflow:hidden}.card.interactive{cursor:pointer}.card.interactive:hover{transform:translateY(-1px);border-color:var(--line-strong)}.eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase}.card-title{font-size:15.5px;font-weight:700;color:var(--text)}.card-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 8px;border-radius:999px;background:var(--soft-fill);color:var(--text-muted);font-size:11.5px;font-weight:600;letter-spacing:.01em;line-height:1;white-space:nowrap}.pill-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.pill.tone-ok{background:var(--ok-bg);color:var(--ok)}.pill.tone-warn{background:var(--warn-bg);color:var(--warn)}.pill.tone-err{background:var(--err-bg);color:var(--err)}.pill.tone-sync{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.pill-spinner{width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;flex-shrink:0;animation:cm-spin .45s linear infinite}.platform-status-light{width:14px;height:14px;border-radius:50%;flex-shrink:0;justify-self:end;display:inline-flex;align-items:center;justify-content:center;position:relative;background:color-mix(in srgb,currentColor 10%,transparent);color:var(--text-muted);box-shadow:inset 0 0 0 .5px color-mix(in srgb,currentColor 28%,transparent)}.status-light-core{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 .5px color-mix(in srgb,#fff 74%,transparent),0 1px 2px color-mix(in srgb,currentColor 34%,transparent)}.platform-status-light.tone-ok{color:#5cc98a;animation:cm-status-breathe 1.8s ease-in-out infinite}.platform-status-light.tone-warn{color:var(--warn);animation:cm-status-breathe 2s ease-in-out infinite}.platform-status-light.tone-err{color:var(--err);animation:cm-status-breathe 1.7s ease-in-out infinite}.platform-status-light.tone-off{color:color-mix(in srgb,var(--text-muted) 72%,transparent);background:color-mix(in srgb,currentColor 8%,transparent)}.platform-status-light.tone-off .status-light-core{width:5px;height:5px;opacity:.72;box-shadow:none}.btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:9px;font-size:13px;font-weight:600;border:.5px solid var(--line);background:transparent;color:var(--text);white-space:nowrap;transition:opacity .12s,transform .08s,background .12s}.btn:hover{opacity:.95}.btn:active{transform:translateY(.5px);opacity:.85}.btn.size-sm{padding:6px 10px;border-radius:7px;font-size:12px}.btn.size-lg{padding:12px 18px;font-size:14px}.btn.kind-solid{background:var(--accent);color:#fff;border-color:transparent;box-shadow:0 1px #ffffff2e inset,0 1px 2px #0000001f}.btn.kind-soft{background:var(--soft-fill);color:var(--text);border-color:transparent}.btn.kind-soft:hover{background:var(--soft-fill-strong)}.btn.danger{color:var(--err)}.btn.kind-solid.danger{background:var(--err);color:#fff}.btn.kind-soft.danger{background:var(--err-bg);color:var(--err)}.btn:disabled{opacity:.55;cursor:default}.row-stack{display:flex;flex-direction:column;gap:16px}.connections-stack .page-header{margin-bottom:8px}.row-hero{display:grid;grid-template-columns:1.55fr 1fr;gap:14px}.row-services{display:grid;grid-template-columns:1fr 1.1fr;gap:14px}.balance-head{display:flex;justify-content:space-between;align-items:flex-start}.balance-delta{display:inline-flex;align-items:center;gap:4px;color:var(--ok);font-size:12px;font-weight:600}.balance-row{display:flex;align-items:flex-end;justify-content:space-between;margin-top:10px;gap:14px}.balance-value{font-size:38px;font-weight:700;letter-spacing:-.025em;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}.chain-list{margin-top:16px;display:flex;flex-direction:column;border:.5px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface-alt)}.chain-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:.5px solid var(--line)}.chain-row:last-child{border-bottom:none}.pending-row{border-top:1px dashed var(--line-strong)}.pending-glyph{background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.pending-note{font-size:10.5px;color:var(--text-subtle);margin-top:1px}.pending-row .chain-balance{color:var(--accent)}.chain-glyph{width:24px;height:24px;border-radius:6px;background:var(--surface);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 0 0 .5px var(--line)}.chain-info{flex:1;min-width:0}.chain-name{font-size:12.5px;font-weight:600;color:var(--text)}.chain-addr{all:unset;cursor:pointer;margin-top:1px;font-size:10.5px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace;display:inline-flex;align-items:center;gap:4px}.chain-addr.copied{color:var(--ok)}.chain-balance{font-size:14px;font-weight:700;color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace}.plugin-line{margin-top:14px;font-size:13.5px;color:var(--text);line-height:1.55}.plugin-line .muted{color:var(--text-muted)}.plugin-meta{margin-top:8px;font-size:11.5px;color:var(--text-subtle);display:flex;align-items:center;gap:6px}.plugin-actions{margin-top:14px;display:flex;gap:8px}.service-list{margin-top:14px;display:flex;flex-direction:column}.service-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:.5px dashed var(--line)}.service-row:last-child{border-bottom:none}.service-head{display:flex;align-items:center;gap:8px}.service-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--text-subtle)}.service-dot.running{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.service-name{font-size:13.5px;font-weight:600;color:var(--text)}.service-sub{font-size:12px;color:var(--text-muted);margin-top:3px;margin-left:15px}.service-actions{display:flex;align-items:center;gap:8px}.log-card-head{padding:20px 20px 12px;display:flex;justify-content:space-between;align-items:flex-start}.card:not(.flush)>.log-card-head{padding:0 0 12px}.log-live{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-subtle)}.log-live-tag{display:inline-flex;align-items:center;gap:6px}.log-live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:cm-pulse 2s ease-in-out infinite}.log-expand{all:unset;cursor:pointer;width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--soft-fill)}.log-body{margin:0 20px 20px;background:var(--terminal-bg);border-radius:10px;padding:12px;max-height:224px;overflow-y:auto;overflow-x:hidden;font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace;font-size:11.5px;line-height:1.7;color:#e7e5df}.log-line{display:flex;gap:10px;padding:1px 0}.log-line .log-msg{min-width:0;flex:1;word-break:break-all;white-space:pre-wrap}.log-time{color:#ffffff61;flex-shrink:0}.log-level{width:42px;flex-shrink:0;font-weight:600}.log-level.INFO{color:#a8a59c}.log-level.WARN{color:#f0a955}.log-level.ERROR{color:#f06464}.log-level.DEBUG{color:#6e6c64}.log-msg{color:#e7e5df}.log-msg.ERROR{color:#fca5a5}.search-box{display:flex;align-items:center;gap:6px;padding:7px 10px;border:.5px solid var(--line);border-radius:9px;background:var(--surface);width:220px}.search-box input{all:unset;flex:1;font-size:13px;color:var(--text);min-width:0}.search-box input::placeholder{color:var(--text-subtle)}.icon-search{color:var(--text-subtle);display:inline-flex}.icon-clear{all:unset;cursor:pointer;color:var(--text-subtle);display:inline-flex}.category-chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0}.chip{all:unset;cursor:pointer;white-space:nowrap;padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--text);background:#14120e0b;border:.5px solid var(--line);display:inline-flex;align-items:center;gap:6px;transition:background .12s}.cm-dark .chip{background:#ffffff0d}.chip.active{background:var(--accent);color:#fff;-webkit-text-fill-color:#fff;border-color:var(--accent)}.chip-count{font-size:10.5px;font-weight:700;opacity:.5}.chip.active .chip-count{opacity:.55}.platform-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.platform-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.platform-card{all:unset;cursor:pointer;background:var(--surface);border-radius:12px;padding:13px 14px;box-shadow:var(--card-shadow);border:.5px solid color-mix(in srgb,var(--line) 62%,transparent);display:flex;align-items:center;gap:12px;position:relative;transition:transform .18s ease,border-color .2s ease,box-shadow .24s ease}.platform-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--line-strong) 46%,transparent);box-shadow:var(--card-shadow),0 18px 40px -24px #f0b90b8c,0 8px 18px -16px #f0b90b47}.cm-dark .platform-card:hover{box-shadow:var(--card-shadow),0 18px 40px -24px #f0b90b6b,0 8px 22px -16px #f0b90b3d}.platform-glyph{width:36px;height:36px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px;letter-spacing:-.5px;box-shadow:inset 0 0 0 .5px #ffffff1f,inset 0 1px #ffffff2e;overflow:hidden;font-family:-apple-system,SF Pro Display,PingFang SC,sans-serif}.platform-glyph img,.platform-glyph svg{width:56%;height:56%;object-fit:contain;display:block}.platform-glyph svg{fill:#fff}.platform-info{flex:1;min-width:0}.platform-row1{display:flex;align-items:center;gap:6px}.platform-name{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-hot{font-size:10px;font-weight:700;color:var(--accent);padding:1px 5px;border-radius:4px;background:color-mix(in srgb,var(--accent) 14%,transparent)}.cm-dark .platform-hot{background:#ffffff0f}.platform-row2{font-size:11.5px;color:var(--text-muted);margin-top:2px;display:flex;align-items:center;gap:6px}.mode-tag{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:1px 5px;border-radius:4px}.mode-tag.public{color:var(--ok);background:var(--ok-bg)}.mode-tag.browser{color:var(--warn);background:var(--warn-bg)}.empty-state{grid-column:1 / -1;text-align:center;padding:60px 0;color:var(--text-muted);font-size:13px}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat-card{padding:16px;background:var(--surface);border:.5px solid var(--line);border-radius:14px;box-shadow:var(--card-shadow)}.stat-row{display:flex;align-items:flex-end;justify-content:space-between;margin-top:8px;gap:8px}.stat-value{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1}.stat-delta{margin-top:8px;font-size:11.5px;font-weight:500;color:var(--text-muted)}.stat-delta.tone-ok{color:var(--ok)}.row-orders-mid{display:grid;grid-template-columns:1.05fr 1.4fr;gap:14px}.chart-container{margin-top:18px}.bar-chart{position:relative;height:160px;display:flex;align-items:flex-end;gap:10px}.bar-grid{position:absolute;left:0;right:0;border-top:.5px dashed var(--line);pointer-events:none}.bar-col{flex:1;position:relative;display:flex;flex-direction:column;justify-content:flex-end;height:100%}.bar{border-radius:6px;background:color-mix(in srgb,var(--accent) 28%,transparent);transition:height .35s cubic-bezier(.2,.7,.2,1);position:relative}.cm-dark .bar{background:color-mix(in srgb,var(--accent) 22%,transparent)}.bar.is-last{background:var(--accent)}.bar-tip{position:absolute;top:-22px;left:50%;transform:translate(-50%);font-size:11px;font-weight:700;color:var(--text);white-space:nowrap}.bar-labels{display:flex;gap:10px;margin-top:8px}.bar-label{flex:1;text-align:center;font-size:11px;color:var(--text-subtle);font-weight:500}.bar-label.is-last{color:var(--text);font-weight:600}.escrow-list{margin-top:14px;display:flex;flex-direction:column}.escrow-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:.5px dashed var(--line)}.escrow-row:last-child{border-bottom:none}.escrow-info{flex:1;min-width:0}.escrow-skill{font-size:13.5px;font-weight:600;color:var(--text)}.escrow-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px}.escrow-amount{text-align:right}.escrow-reward{font-size:14px;font-weight:700;color:var(--text)}.escrow-status{font-size:10.5px;color:var(--ok);font-weight:600;margin-top:2px}.orders-toolbar{padding:14px 20px;border-bottom:.5px solid var(--line);display:flex;align-items:center;gap:18px;justify-content:space-between}.tab-group{display:flex;gap:4px;background:#14120e0b;padding:3px;border-radius:9px}.cm-dark .tab-group{background:#ffffff0d}.tab{all:unset;cursor:pointer;padding:5px 12px;border-radius:6px;font-size:12.5px;font-weight:600;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px}.tab.active{color:var(--text);background:var(--surface);box-shadow:0 1px 2px #0000000f}.tab-count{font-size:10.5px;font-weight:700;opacity:.5}.tz-stamp{font-size:11.5px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.orders-grid-head{display:grid;grid-template-columns:112px 1.5fr 2fr 1fr 90px 70px;padding:10px 20px;gap:12px;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--text-subtle);text-transform:uppercase;border-bottom:.5px dashed var(--line)}.orders-grid-head .right{text-align:right}.orders-grid-body{max-height:260px;overflow:auto}.orders-row{display:grid;grid-template-columns:112px 1.5fr 2fr 1fr 90px 70px;padding:12px 20px;gap:12px;font-size:13px;color:var(--text);align-items:center;border-bottom:.5px solid var(--line)}.orders-row:last-child{border-bottom:none}.orders-row .time,.orders-row .dur{font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--text-muted);font-size:12px}.orders-row .platform-cell{display:flex;align-items:center;gap:8px}.orders-row .amount{text-align:right;font-weight:600}.orders-row .amount.zero{color:var(--text-subtle)}.orders-row .right{text-align:right}.platform-glyph.size-sm{width:22px;height:22px;border-radius:6px;font-size:9.5px}.platform-glyph.size-lg{width:52px;height:52px;border-radius:14px;font-size:22px}.modal-backdrop{position:absolute;inset:0;z-index:50;background:#14120e6b;display:flex;align-items:center;justify-content:center;border-radius:16px;animation:cm-overlay-in .2s ease both}.cm-dark .modal-backdrop{background:#080809ad}.platform-modal{width:520px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both;overflow:hidden}.platform-modal-head{padding:22px 24px 18px;display:flex;gap:14px;align-items:flex-start}.platform-modal-info{flex:1;min-width:0}.platform-modal-cat{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--text-subtle);text-transform:uppercase}.platform-modal-title{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em;margin-top:4px}.platform-modal-meta{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.platform-modal-skills{font-size:12px;color:var(--text-muted)}.modal-close-btn{all:unset;cursor:pointer;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--soft-fill)}.platform-modal-desc{padding:4px 24px 18px;font-size:13.5px;color:var(--text-muted);line-height:1.55}.platform-meta-grid{margin:0 24px 16px;padding:14px 16px;border-radius:12px;background:var(--surface-alt);border:.5px solid var(--line);display:grid;grid-template-columns:auto 1fr auto 1fr;row-gap:10px;column-gap:14px;font-size:12.5px}.platform-meta-grid .k{color:var(--text-muted)}.platform-meta-grid .v{color:var(--text);font-weight:500;text-align:right}.platform-meta-grid .v.strong{font-weight:600}.platform-meta-grid .v.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.platform-caps{padding:0 24px 6px}.platform-toggle{all:unset;display:block;flex-shrink:0;width:44px;height:25px;box-sizing:border-box;border-radius:999px;cursor:pointer;position:relative;background:#d2d5da;transition:background .1s ease}.cm-dark .platform-toggle{background:#4a4d53}.platform-toggle.on{background:var(--accent)}.platform-toggle-thumb{position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000047;transform:translate(0);transition:transform .11s cubic-bezier(.2,.8,.2,1);will-change:transform}.platform-toggle.on .platform-toggle-thumb{transform:translate(19px)}.platform-skill-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}.platform-skill-row:last-child{border-bottom:none}.platform-skill-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.platform-skill-name{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;font-weight:600;color:var(--text)}.platform-skill-desc{font-size:11.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-skill-status{flex-shrink:0;font-size:11.5px;font-weight:600;color:var(--text-muted)}.platform-skill-status.on{color:var(--accent)}.caps-label{font-size:11.5px;font-weight:700;letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase;margin-bottom:10px}.caps-list{display:flex;flex-wrap:wrap;gap:6px}.cap-tag{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:7px;background:var(--surface-alt);border:.5px solid var(--line);font-size:12px;color:var(--text)}.cap-icon{color:var(--accent);display:inline-flex}.platform-modal-footer{padding:14px 24px 20px;display:flex;justify-content:flex-end;gap:8px;border-top:.5px solid var(--line);margin-top:12px}.log-modal{width:min(1100px,100%);height:min(700px,100%);background:#0b0c0e;color:#e7e5df;border-radius:14px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);display:flex;flex-direction:column;animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both;overflow:hidden;font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace}.cm-dark .log-modal{background:#0b0c0e}.log-modal-head{padding:12px 16px;border-bottom:.5px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:12px;flex-shrink:0;font-family:-apple-system,SF Pro Text,PingFang SC,system-ui,sans-serif}.log-modal-title-tag{display:flex;align-items:center;gap:8px}.log-modal-live{width:8px;height:8px;border-radius:50%;background:#3cc88a;animation:cm-pulse 2s ease-in-out infinite}.log-modal-live.paused{background:#a8a59c;animation:none}.log-modal-title{font-size:13.5px;font-weight:700;color:#f3f2ee}.log-modal-counts{font-size:11px;color:#ffffff80}.log-modal-spacer{flex:1}.log-modal-search{display:flex;align-items:center;gap:6px;padding:5px 9px;border:.5px solid rgba(255,255,255,.08);border-radius:7px;background:#ffffff0a;width:220px}.log-modal-search input{all:unset;flex:1;font-size:12px;color:#f3f2ee;min-width:0}.log-modal-search input::placeholder{color:#fff6}.log-modal-filters{display:flex;gap:4px}.log-modal-filter{all:unset;cursor:pointer;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.04em;background:#ffffff0a;color:#f3f2ee;display:inline-flex;align-items:center;gap:5px}.log-modal-filter.INFO{color:#a8a59c}.log-modal-filter.WARN{color:#f0a955}.log-modal-filter.ERROR{color:#f06464}.log-modal-filter.DEBUG{color:#6e6c64}.log-modal-filter.active{color:#0b0c0e;background:#f3f2ee}.log-modal-filter.active.INFO{background:#a8a59c}.log-modal-filter.active.WARN{background:#f0a955}.log-modal-filter.active.ERROR{background:#f06464}.log-modal-filter.active.DEBUG{background:#6e6c64}.log-modal-filter-count{font-size:9.5px;opacity:.7}.log-modal-actions{display:flex;gap:4px}.log-modal-iconbtn{all:unset;cursor:pointer;width:28px;height:28px;border-radius:7px;background:#ffffff0a;color:#e7e5df;display:inline-flex;align-items:center;justify-content:center}.log-modal-iconbtn:hover{background:#ffffff14}.log-modal-body{flex:1;overflow:auto;padding:12px 16px;font-size:12.5px;line-height:1.75}.log-modal-body .log-line{gap:12px;padding:2px 0}.log-modal-body .log-time{width:104px;color:#ffffff59}.log-modal-body .log-level{width:52px;font-weight:700}.log-modal-body .log-msg.WARN{color:#fcd5a5}.log-modal-empty{padding:40px 0;text-align:center;color:#fff6;font-family:-apple-system,system-ui,sans-serif}.log-modal-foot{padding:8px 16px;border-top:.5px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:#ffffff73;flex-shrink:0}.login-screen{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden;background-image:radial-gradient(ellipse 80% 60% at 30% 0%,color-mix(in srgb,var(--accent) 18%,transparent) 0%,transparent 60%),radial-gradient(ellipse 60% 60% at 100% 100%,color-mix(in srgb,var(--accent) 14%,transparent) 0%,transparent 60%)}.login-grid{position:absolute;inset:0;opacity:.04;background-image:linear-gradient(var(--text) .5px,transparent .5px),linear-gradient(90deg,var(--text) .5px,transparent .5px);background-size:36px 36px;-webkit-mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%);mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%)}.cm-dark .login-grid{opacity:.05}.login-container{width:420px;position:relative;z-index:1}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:32px;justify-content:center}.login-brand-name{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em}.login-brand-tag{font-size:12px;color:var(--text-muted);margin-top:2px}.login-card{background:var(--surface);border-radius:18px;border:.5px solid var(--line);box-shadow:var(--shadow);overflow:hidden}.login-pad{padding:30px 28px 26px}.login-title{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.01em}.login-sub{font-size:13px;color:var(--text-muted);margin-top:4px;line-height:1.55}.login-btn-google{all:unset;cursor:pointer;margin-top:22px;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-sizing:border-box;padding:12px 14px;background:var(--surface);color:var(--text);border:.5px solid var(--line-strong);border-radius:10px;font-size:13.5px;font-weight:600;box-shadow:0 1px 2px #0000000a}.login-divider{margin:18px 0;display:flex;align-items:center;gap:10px}.login-divider .line{flex:1;height:1px;background:var(--line)}.login-divider .label{font-size:10.5px;font-weight:600;color:var(--text-subtle);letter-spacing:.1em;text-transform:uppercase}.login-btn-email{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;box-sizing:border-box;padding:12px 14px;background:transparent;color:var(--text);border:.5px solid var(--line);border-radius:10px;font-size:13.5px;font-weight:600}.login-terms{margin-top:20px;font-size:11px;color:var(--text-subtle);line-height:1.55}.login-error{margin-top:16px;padding:10px 12px;border-radius:9px;background:var(--err-bg);color:var(--err);font-size:12.5px;line-height:1.5}.login-back{all:unset;cursor:pointer;font-size:12px;color:var(--text-muted);margin-bottom:14px;display:inline-flex;align-items:center;gap:4px}.login-label{display:block;margin-top:18px;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--text)}.login-input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:9px;border:.5px solid var(--line);background:var(--surface-alt);color:var(--text);font-size:13.5px;font-family:inherit;outline:none}.login-input:focus{border-color:var(--accent)}.login-submit{all:unset;cursor:pointer;margin-top:24px;width:100%;box-sizing:border-box;padding:12px 14px;background:var(--accent);color:#fff;border-radius:10px;text-align:center;font-size:13.5px;font-weight:600;box-shadow:0 1px #ffffff2e inset}.login-code-row{display:flex;gap:8px;margin-top:20px;justify-content:space-between}.login-code-input{width:48px;height:56px;text-align:center;font-size:22px;font-weight:700;color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace;background:var(--surface-alt);border:1px solid var(--line);border-radius:10px;outline:none;transition:border-color .12s,background .12s;caret-color:var(--accent)}.login-code-input:focus{border-color:var(--accent)}.login-code-input.error{border-color:var(--err);background:var(--err-bg);color:var(--err)}.login-code-status{margin-top:14px;min-height:18px;font-size:12px;display:flex;align-items:center;gap:6px}.login-spinner{width:12px;height:12px;display:inline-block;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:cm-spin .8s linear infinite}.login-code-status.error{color:var(--err);font-weight:500}.login-code-status.muted{color:var(--text-muted)}.login-code-footer{margin-top:16px;padding-top:14px;border-top:.5px dashed var(--line);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted)}.login-code-resend{all:unset;cursor:pointer;color:var(--accent);font-weight:600}.login-code-resend.disabled{color:var(--text-muted);cursor:default}.login-google-state{padding:44px 28px 32px;text-align:center}.google-avatar{position:relative;width:72px;height:72px;margin:0 auto 18px}.google-avatar-bg{position:absolute;inset:0;border-radius:50%;background:var(--soft-fill);transition:background .3s}.google-avatar-bg.success{background:var(--accent)}.google-avatar-ring{position:absolute;inset:-4px;border-radius:50%;border:2px solid transparent;border-top-color:var(--accent);animation:cm-spin 1s linear infinite}.google-avatar-icon{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.google-state-title{font-size:17px;font-weight:700;color:var(--text)}.google-state-sub{font-size:13px;color:var(--text-muted);margin-top:8px;line-height:1.55}.google-state-domain{margin-top:18px;font-size:11px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.google-continue-btn{all:unset;cursor:pointer;margin-top:22px;padding:10px 22px;border-radius:9px;background:var(--text);color:var(--bg);font-size:13px;font-weight:600}.login-footer{margin-top:18px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-subtle)}.login-footer-links{display:flex;gap:14px}.lang-toggle-segment{display:inline-flex;padding:2px;border-radius:7px;background:#14120e0a;border:.5px solid var(--line)}.cm-dark .lang-toggle-segment{background:#ffffff0d}.lang-toggle-option{all:unset;cursor:pointer;padding:2px 9px;border-radius:5px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.lang-toggle-option.active{color:var(--text);background:var(--surface);box-shadow:0 1px 2px #0000000f}.login-corner-traffic{position:absolute;top:14px;left:16px;z-index:10;-webkit-app-region:no-drag}.settings-modal{width:760px;height:540px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);display:flex;overflow:hidden;animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both}.settings-sidebar{width:200px;background:var(--surface-alt);padding:14px 10px;border-right:.5px solid var(--line);display:flex;flex-direction:column}.settings-sidebar-title{padding:4px 10px 10px;font-size:13px;font-weight:700;color:var(--text)}.settings-nav{all:unset;cursor:pointer;padding:7px 10px;border-radius:7px;display:flex;align-items:center;gap:9px;font-size:12.5px;font-weight:500;color:var(--text-muted)}.settings-nav.active{font-weight:600;color:var(--text);background:var(--nav-active-fill)}.settings-nav-icon{color:var(--text-subtle);display:inline-flex}.settings-nav.active .settings-nav-icon{color:var(--accent)}.settings-logout{all:unset;cursor:pointer;padding:7px 10px;border-radius:7px;display:flex;align-items:center;gap:9px;font-size:12.5px;font-weight:600;color:var(--err)}.settings-content{flex:1;padding:18px 24px 24px;overflow:auto}.settings-content-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.settings-content-title{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.01em}.settings-profile{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--surface-alt);border:.5px solid var(--line)}.settings-profile .avatar{width:44px;height:44px;border-radius:10px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;letter-spacing:-.02em;font-size:16px;text-transform:uppercase}.settings-profile .info{flex:1;min-width:0}.settings-profile .name{font-size:15px;font-weight:700;color:var(--text)}.settings-profile .addr{font-size:12px;color:var(--text-muted);font-family:ui-monospace,SF Mono,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.set-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:.5px dashed var(--line);gap:18px}.set-row .label-wrap{min-width:0}.set-row .label{font-size:13.5px;font-weight:600;color:var(--text)}.set-row .sub{font-size:11.5px;color:var(--text-muted);margin-top:2px}.set-toggle{all:unset;cursor:pointer;position:relative;width:36px;height:22px;border-radius:999px;background:#14120e26;transition:background .15s}.cm-dark .set-toggle{background:#ffffff1f}.set-toggle.on{background:var(--ok)}.set-toggle:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:left .15s}.set-toggle.on:after{left:16px}.set-code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;background:var(--surface-alt);padding:4px 8px;border-radius:6px;color:var(--text)}.set-input,.set-select{padding:6px 10px;border-radius:7px;border:.5px solid var(--line);background:var(--surface);color:var(--text);font-size:13;font-family:inherit;outline:none}.set-input.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.about-block{text-align:center;padding:40px 0}.about-name{margin-top:14px;font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.02em}.about-version{margin-top:4px;font-size:12px;color:var(--text-muted);font-family:ui-monospace,SF Mono,Menlo,monospace}.about-copy{margin-top:18px;font-size:12px;color:var(--text-subtle);line-height:1.6}.about-actions{margin-top:22px;display:flex;justify-content:center;gap:8px}.hidden{display:none!important}.muted{color:var(--text-muted)}.busy{cursor:wait}.density-compact .card{padding:16px}.density-compact .log-card-head{padding:16px 16px 12px}.density-compact .log-body{margin:0 16px 16px}body.is-tauri{background:transparent}.is-tauri .desktop{display:none}.is-tauri .stage{padding:0}.is-tauri #app{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;box-shadow:none;transform:none!important}.is-tauri .traffic{visibility:hidden;pointer-events:none}.is-tauri .brand>*{pointer-events:none}.is-tauri .login-corner-traffic{display:none}.boot-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--bg);color:var(--text)}.boot-mark{width:64px;height:64px;display:grid;place-items:center;border-radius:18px;background:var(--surface);box-shadow:var(--card-shadow)}.boot-title{margin-top:8px;font-size:20px;font-weight:800}.boot-subtitle{color:var(--text-muted);font-size:13px}.boot-spinner{width:22px;height:22px;margin-top:8px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:cm-spin .8s linear infinite}.is-tauri .login-screen{padding-top:32px}.preflight-notice{border:.5px solid var(--warn);background:var(--warn-bg);display:flex;flex-direction:column;gap:14px}.preflight-notice.probing{border-color:var(--line-strong);background:var(--soft-fill)}.preflight-notice.probing .preflight-notice-icon{background:transparent}.preflight-notice-head{display:flex;align-items:flex-start;gap:11px}.preflight-notice-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--warn-bg);color:var(--warn);flex-shrink:0}.preflight-notice-text{display:flex;flex-direction:column;gap:2px;min-width:0}.preflight-notice-title{font-size:14px;font-weight:700;color:var(--text)}.preflight-notice-sub{font-size:12px;color:var(--text-muted)}.ext-offline-notice{border:.5px solid var(--warn);background:var(--warn-bg);display:flex;align-items:center;justify-content:space-between;gap:14px}.ext-offline-head{display:flex;align-items:flex-start;gap:11px;min-width:0}.ext-offline-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--warn-bg);color:var(--warn);flex-shrink:0}.ext-offline-text{display:flex;flex-direction:column;gap:2px;min-width:0}.ext-offline-title{font-size:14px;font-weight:700;color:var(--text)}.ext-offline-sub{font-size:12px;color:var(--text-muted);line-height:1.5}.ext-offline-actions{flex-shrink:0}.preflight-issue-list{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:.5px solid var(--line)}.preflight-issue{display:flex;align-items:flex-start;gap:10px}.preflight-issue-body{flex:1;min-width:0}.preflight-issue>.btn{flex-shrink:0;align-self:center}.preflight-issue-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0}.preflight-issue-dot.tone-err{background:var(--err)}.preflight-issue-dot.tone-warn{background:var(--warn)}.preflight-issue-body{display:flex;flex-direction:column;gap:2px;min-width:0}.preflight-issue-name{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:650;color:var(--text)}.preflight-issue-count{font-size:11px;font-weight:600;color:var(--text-muted);background:var(--soft-fill);border-radius:5px;padding:1px 6px;white-space:nowrap}.preflight-issue-reason{font-size:12px;color:var(--text-muted)}.preflight-issue-hint{font-size:12px;color:var(--text-subtle)}.llm-upload-card{display:flex;flex-direction:column;gap:12px}.llm-provider-list{display:flex;flex-direction:column;margin-top:14px;padding-top:4px;border-top:.5px solid var(--line)}.llm-provider-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0}.llm-provider-row+.llm-provider-row{border-top:.5px solid var(--line)}.llm-provider-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 15%,transparent)}.llm-provider-dot.tone-ok{color:#5cc98a}.llm-provider-dot.tone-warn{color:var(--warn)}.llm-provider-dot.tone-off{color:var(--text-subtle)}.llm-provider-dot.is-live{animation:cm-status-breathe 1.8s ease-in-out infinite}.llm-provider-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.llm-provider-name{font-size:13.5px;font-weight:650;color:var(--text)}.llm-provider-model{font-size:11px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.llm-provider-status{font-size:12px;color:var(--text-muted);white-space:nowrap;text-align:right}.llm-provider-side{display:flex;align-items:center;gap:10px;flex-shrink:0}.llm-provider-row.is-disabled .llm-provider-name{color:var(--text-muted)}.llm-provider-row.is-disabled .llm-provider-model{opacity:.6}.llm-provider-side .relay-switch{width:38px;height:22px;border-radius:11px}.llm-provider-side .relay-switch-knob{width:16px;height:16px}.llm-provider-side .relay-switch.on .relay-switch-knob{transform:translate(16px)}.update-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.update-notice-title{font-size:13.5px;font-weight:700;color:var(--text)}.update-notice-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.about-changelog{margin-top:14px;max-height:260px;overflow-y:auto;text-align:left;border-top:.5px solid var(--line);padding-top:12px}.cl-version{font-size:13px;font-weight:700;color:var(--text);margin:10px 0 4px}.cl-version:first-child{margin-top:0}.cl-section{font-size:11.5px;font-weight:650;color:var(--text-muted);margin:8px 0 3px}.cl-item{font-size:12px;color:var(--text-muted);line-height:1.55;padding-left:10px;position:relative}.cl-item:before{content:"·";position:absolute;left:2px}.relay-toggle-card{display:flex;align-items:center;justify-content:space-between;gap:16px}.relay-toggle-info{display:flex;flex-direction:column;gap:3px;min-width:0}.relay-toggle-title{font-size:15px;font-weight:700;color:var(--text)}.relay-toggle-sub{font-size:12.5px;color:var(--text-muted)}.relay-switch{width:46px;height:27px;border-radius:14px;border:none;cursor:pointer;padding:0;position:relative;flex-shrink:0;transition:background .16s ease}.relay-switch.off{background:var(--line-strong)}.relay-switch.on{background:var(--accent)}.relay-switch-knob{position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .16s ease}.relay-switch.on .relay-switch-knob{transform:translate(19px)}.relay-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-top:.5px solid var(--line)}.relay-setting-row:first-of-type{border-top:none}.relay-setting-label{display:flex;flex-direction:column;gap:2px;min-width:0}.relay-setting-label>div:first-child{font-size:13.5px;font-weight:600;color:var(--text)}.relay-setting-hint{font-size:12px;color:var(--text-muted)}.relay-number-input,.relay-time-input{padding:6px 10px;border-radius:8px;border:.5px solid var(--line-strong);background:var(--surface);color:var(--text);font-size:13px;font-variant-numeric:tabular-nums}.relay-number-input{width:64px;text-align:center}.relay-earnings-grid{display:flex;gap:12px;padding-top:10px;border-top:.5px solid var(--line)}.relay-earning-stat{flex:1;text-align:center}.relay-earning-value{font-size:20px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.relay-earning-label{font-size:11px;color:var(--text-muted);margin-top:3px}.relay-schedule-row{display:flex;align-items:center;gap:10px;padding:4px 0 10px}.relay-schedule-dash{color:var(--text-muted)}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Claw Money</title>
7
- <script type="module" crossorigin src="./assets/index-BNdx-pQ9.js"></script>
8
- <link rel="stylesheet" crossorigin href="./assets/index-JsJRIRy7.css">
7
+ <script type="module" crossorigin src="./assets/index-Cp4HSF5X.js"></script>
8
+ <link rel="stylesheet" crossorigin href="./assets/index-DgNmGRcF.css">
9
9
  </head>
10
10
  <body>
11
11
  <div class="desktop" id="desktop"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawmoney",
3
- "version": "0.18.1",
3
+ "version": "0.18.2",
4
4
  "description": "ClawMoney CLI -- Earn rewards with your AI agent",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- :root{--accent: #E85A2C;--bg: #fafaf6;--sidebar: linear-gradient(180deg, rgba(255, 255, 255, .58) 0%, rgba(244, 247, 244, .38) 100%);--surface: #ffffff;--surface-alt: #f7f5ef;--raised: #ffffff;--line: rgba(20, 18, 14, .07);--line-strong: rgba(20, 18, 14, .14);--text: #14130f;--text-muted: #6b6862;--text-subtle: #9b988f;--ok: #1f8a5b;--ok-bg: rgba(31, 138, 91, .1);--warn: #b46a16;--warn-bg: rgba(180, 106, 22, .12);--err: #c8392e;--err-bg: rgba(200, 57, 46, .1);--shadow: 0 28px 60px -12px rgba(0, 0, 0, .32), 0 12px 30px -16px rgba(0, 0, 0, .18);--card-shadow: 0 0 0 .5px rgba(20, 18, 14, .05), 0 1px 0 rgba(255, 255, 255, .6) inset;--window-outline: 0 0 0 .5px rgba(0, 0, 0, .25);--soft-fill: rgba(20, 18, 14, .05);--soft-fill-strong: rgba(20, 18, 14, .07);--dash-fill: rgba(20, 18, 14, .025);--nav-active-fill: rgba(20, 18, 14, .06);--terminal-bg: #13130f;--color-scheme: light}.cm-dark{--bg: #0e0e10;--sidebar: linear-gradient(180deg, rgba(32, 34, 38, .58) 0%, rgba(20, 21, 24, .42) 100%);--surface: #1a1b1f;--surface-alt: #202126;--raised: #23252b;--line: rgba(255, 255, 255, .07);--line-strong: rgba(255, 255, 255, .14);--text: #f3f2ee;--text-muted: #a8a59c;--text-subtle: #6e6c64;--ok: #3cc88a;--ok-bg: rgba(60, 200, 138, .14);--warn: #f0a955;--warn-bg: rgba(240, 169, 85, .16);--err: #f06464;--err-bg: rgba(240, 100, 100, .16);--shadow: 0 30px 60px -20px rgba(0, 0, 0, .6), 0 8px 24px -12px rgba(0, 0, 0, .6);--card-shadow: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 0 0 .5px rgba(255, 255, 255, .04);--window-outline: 0 0 0 .5px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .04);--soft-fill: rgba(255, 255, 255, .06);--soft-fill-strong: rgba(255, 255, 255, .08);--dash-fill: rgba(255, 255, 255, .03);--nav-active-fill: rgba(255, 255, 255, .06);--terminal-bg: #0b0c0e;--color-scheme: dark}*{box-sizing:border-box;font-variant-numeric:tabular-nums}html,body{-webkit-user-select:none;user-select:none;cursor:default}input,textarea,code,pre,.log-body,.log-modal-body,.chain-addr,.set-code,.platform-meta-grid .v.mono,.settings-profile .addr,.about-version{-webkit-user-select:text;user-select:text;cursor:text}button,.btn,.chip,.tab,.platform-card,.nav-item,.settings-nav,.icon-button,.modal-close-btn,.log-modal-iconbtn,.log-expand,.lang-toggle-option,.traffic-dot,.set-toggle,.login-btn-google,.login-btn-email,.login-submit,.login-back,.login-code-resend,.google-continue-btn,.settings-logout{cursor:pointer}html,body{margin:0;padding:0;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,system-ui,sans-serif;-webkit-font-smoothing:antialiased;background:#0d0f12;color:var(--text);font-size:13.5px}html.is-tauri-root,html.is-tauri-root body{background:transparent;overflow:hidden}button,input,select{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none;cursor:pointer}.desktop{position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 20% 10%,#2b3a3f 0%,transparent 60%),radial-gradient(ellipse 70% 50% at 90% 20%,#4d2e1f 0%,transparent 60%),radial-gradient(ellipse 100% 80% at 50% 110%,#1c2d2a 0%,transparent 60%),linear-gradient(180deg,#11141a,#0d0f12,#0a0c0e);transition:opacity .25s ease;z-index:0}.desktop:before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle at 18% 28%,rgba(255,255,255,.025) 0%,transparent 30%),radial-gradient(circle at 82% 72%,rgba(255,255,255,.02) 0%,transparent 30%);mix-blend-mode:screen}.desktop:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at top,#0a0a0c00,#0a0a0c8c)}.stage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1}#app{width:1280px;height:820px;max-width:100%;max-height:100%;display:flex;gap:0;padding:0;position:relative;border-radius:28px;overflow:hidden;background:var(--bg);box-shadow:none;color:var(--text);transform-origin:center center}.cm-scroll::-webkit-scrollbar{width:10px;height:10px}.cm-scroll::-webkit-scrollbar-thumb{background:#0000002e;border:2px solid transparent;background-clip:content-box;border-radius:8px}.cm-scroll::-webkit-scrollbar-thumb:hover{background:#00000052;border:2px solid transparent;background-clip:content-box}.cm-dark .cm-scroll::-webkit-scrollbar-thumb{background:#ffffff29;border:2px solid transparent;background-clip:content-box}.cm-noscrollbar{scrollbar-width:none;-ms-overflow-style:none}.cm-noscrollbar::-webkit-scrollbar{width:0;height:0;display:none}.main-scroll,.orders-grid-body,.settings-content,.log-body,.log-modal-body{scrollbar-width:none;-ms-overflow-style:none}.main-scroll::-webkit-scrollbar,.orders-grid-body::-webkit-scrollbar,.settings-content::-webkit-scrollbar,.log-body::-webkit-scrollbar,.log-modal-body::-webkit-scrollbar{width:0;height:0;display:none}@keyframes cm-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}@keyframes cm-status-breathe{0%,to{box-shadow:0 0 color-mix(in srgb,currentColor 24%,transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb,currentColor 0%,transparent)}}@keyframes cm-modal-in{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}@keyframes cm-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes cm-spin{to{transform:rotate(360deg)}}.sidebar{width:232px;flex-shrink:0;position:absolute;top:8px;left:8px;bottom:8px;background:var(--sidebar);border:0;border-radius:14px;display:flex;flex-direction:column;overflow:hidden;backdrop-filter:saturate(180%) blur(34px);-webkit-backdrop-filter:saturate(180%) blur(34px);box-shadow:0 40px 100px #10161614,0 16px 40px #1016160d,0 4px 12px #10161608;z-index:5}.cm-dark .sidebar{border-right-color:#ffffff14;box-shadow:0 40px 100px #0000002e,0 16px 40px #0000001f,0 4px 12px #00000012}.sidebar:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#ffffff9e,#ffffff1f 58%,#fff0),radial-gradient(circle at 30% 6%,rgba(255,255,255,.64),transparent 38%);opacity:.72}.cm-dark .sidebar:before{background:linear-gradient(90deg,rgba(255,255,255,.05),transparent 58%),radial-gradient(circle at 28% 10%,rgba(255,255,255,.08),transparent 34%);opacity:1}.sidebar>*{position:relative;z-index:1}.sidebar-header{padding:14px 16px 8px;-webkit-app-region:drag}.brand{-webkit-app-region:drag}.traffic{display:flex;gap:8px;align-items:center;-webkit-app-region:no-drag}.traffic-dot{width:12px;height:12px;border-radius:50%;border:none;padding:0;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 .5px #00000026;cursor:pointer}.traffic-dot.close{background:#ff5f57}.traffic-dot.min{background:#febc2e}.traffic-dot.max{background:#28c840}.traffic-dot span{font-size:8px;line-height:1;color:#0000008c;font-weight:700;opacity:0}.traffic:hover .traffic-dot span{opacity:1}.brand{padding:10px 16px 18px;display:flex;align-items:center;gap:10px}.brand-text{font-size:14.5px;font-weight:700;color:var(--text);letter-spacing:-.005em}.brand-tag{margin-left:auto;font-size:10px;font-weight:700;color:var(--text-subtle);padding:2px 6px;border-radius:5px;background:var(--soft-fill);box-shadow:none}.cm-dark .brand-tag{background:#ffffff12;box-shadow:inset 0 1px #ffffff0d}.nav-section-label{padding:4px 18px 6px;font-size:10.5px;font-weight:700;letter-spacing:.1em;color:var(--text-subtle);text-transform:uppercase}.nav{padding:0 10px;display:flex;flex-direction:column;gap:1px}.nav-item{all:unset;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:500;color:var(--text-muted);background:transparent;transition:background .12s,color .12s,box-shadow .12s;position:relative;cursor:pointer}.nav-item:hover{background:#14120e09}.cm-dark .nav-item:hover{background:#ffffff0b}.nav-item.active{background:#14120e11;color:var(--text);box-shadow:inset 0 1px #ffffff6b,inset 0 0 0 .5px #14120e06}.cm-dark .nav-item.active{background:#ffffff13;box-shadow:inset 0 0 0 .5px #ffffff09}.nav-item.active:before{content:"";position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:3px;height:18px;border-radius:2px;background:var(--accent)}.nav-icon{color:var(--text-muted);display:inline-flex}.nav-item.active .nav-icon{color:var(--accent)}.nav-label{flex:1}.nav-badge{font-size:10.5px;font-weight:700;background:var(--warn-bg);color:var(--warn);padding:1px 6px;border-radius:999px;line-height:1.4}.sidebar-spacer{flex:1}.network-rail{margin:0 16px 12px;padding:10px 12px;border-radius:10px;background:var(--dash-fill);border:.5px dashed var(--line);font-size:11.5px;color:var(--text-muted);display:flex;align-items:center;justify-content:space-between}.network-left{display:flex;align-items:center;gap:7px}.network-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.network-ping{font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--text-subtle)}.agent-card{margin:0;padding:10px 16px 14px;border-radius:0;background:transparent;border:0;box-shadow:none;font-size:12px}.cm-dark .agent-card{background:transparent;box-shadow:none}.agent-row{display:flex;align-items:center;gap:8px}.agent-avatar{width:32px;height:32px;border-radius:8px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;letter-spacing:-.02em;flex-shrink:0;text-transform:uppercase}.agent-info{flex:1;min-width:0}.agent-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agent-status{font-size:11px;color:var(--text-subtle);display:flex;align-items:center;gap:5px;margin-top:2px}.agent-status-dot{width:6px;height:6px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 2.5px var(--ok-bg)}.icon-button{all:unset;cursor:pointer;color:var(--text-subtle);width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:var(--soft-fill)}.icon-button:hover{background:var(--soft-fill-strong)}.main{flex:1;width:100%;height:100%;display:flex;flex-direction:column;min-width:0;position:relative;background:var(--bg);border-radius:0;overflow:visible;z-index:1;padding-left:256px;box-sizing:border-box}.titlebar{height:0;flex-shrink:0;-webkit-app-region:drag}.main-scroll{flex:1;overflow:auto;padding:22px 28px 28px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:0;gap:16px}.page-title{margin:0;font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.page-subtitle{margin-top:6px;font-size:13px;color:var(--text-muted)}.page-actions{display:flex;gap:8px;align-items:center}.card{background:var(--surface);border-radius:14px;padding:20px;box-shadow:var(--card-shadow);border:.5px solid var(--line);transition:transform .14s ease,box-shadow .14s ease,border-color .14s}.card.flush{padding:0;overflow:hidden}.card.interactive{cursor:pointer}.card.interactive:hover{transform:translateY(-1px);border-color:var(--line-strong)}.eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase}.card-title{font-size:15.5px;font-weight:700;color:var(--text)}.card-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 9px 3px 8px;border-radius:999px;background:var(--soft-fill);color:var(--text-muted);font-size:11.5px;font-weight:600;letter-spacing:.01em;line-height:1;white-space:nowrap}.pill-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.pill.tone-ok{background:var(--ok-bg);color:var(--ok)}.pill.tone-warn{background:var(--warn-bg);color:var(--warn)}.pill.tone-err{background:var(--err-bg);color:var(--err)}.pill.tone-sync{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.pill-spinner{width:8px;height:8px;border-radius:50%;border:1.5px solid currentColor;border-right-color:transparent;flex-shrink:0;animation:cm-spin .45s linear infinite}.platform-status-light{width:14px;height:14px;border-radius:50%;flex-shrink:0;justify-self:end;display:inline-flex;align-items:center;justify-content:center;position:relative;background:color-mix(in srgb,currentColor 10%,transparent);color:var(--text-muted);box-shadow:inset 0 0 0 .5px color-mix(in srgb,currentColor 28%,transparent)}.status-light-core{width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 .5px color-mix(in srgb,#fff 74%,transparent),0 1px 2px color-mix(in srgb,currentColor 34%,transparent)}.platform-status-light.tone-ok{color:#5cc98a;animation:cm-status-breathe 1.8s ease-in-out infinite}.platform-status-light.tone-warn{color:var(--warn);animation:cm-status-breathe 2s ease-in-out infinite}.platform-status-light.tone-err{color:var(--err);animation:cm-status-breathe 1.7s ease-in-out infinite}.platform-status-light.tone-off{color:color-mix(in srgb,var(--text-muted) 72%,transparent);background:color-mix(in srgb,currentColor 8%,transparent)}.platform-status-light.tone-off .status-light-core{width:5px;height:5px;opacity:.72;box-shadow:none}.btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:9px;font-size:13px;font-weight:600;border:.5px solid var(--line);background:transparent;color:var(--text);white-space:nowrap;transition:opacity .12s,transform .08s,background .12s}.btn:hover{opacity:.95}.btn:active{transform:translateY(.5px);opacity:.85}.btn.size-sm{padding:6px 10px;border-radius:7px;font-size:12px}.btn.size-lg{padding:12px 18px;font-size:14px}.btn.kind-solid{background:var(--accent);color:#fff;border-color:transparent;box-shadow:0 1px #ffffff2e inset,0 1px 2px #0000001f}.btn.kind-soft{background:var(--soft-fill);color:var(--text);border-color:transparent}.btn.kind-soft:hover{background:var(--soft-fill-strong)}.btn.danger{color:var(--err)}.btn.kind-solid.danger{background:var(--err);color:#fff}.btn.kind-soft.danger{background:var(--err-bg);color:var(--err)}.btn:disabled{opacity:.55;cursor:default}.row-stack{display:flex;flex-direction:column;gap:16px}.connections-stack .page-header{margin-bottom:8px}.row-hero{display:grid;grid-template-columns:1.55fr 1fr;gap:14px}.row-services{display:grid;grid-template-columns:1fr 1.1fr;gap:14px}.balance-head{display:flex;justify-content:space-between;align-items:flex-start}.balance-delta{display:inline-flex;align-items:center;gap:4px;color:var(--ok);font-size:12px;font-weight:600}.balance-row{display:flex;align-items:flex-end;justify-content:space-between;margin-top:10px;gap:14px}.balance-value{font-size:38px;font-weight:700;letter-spacing:-.025em;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}.chain-list{margin-top:16px;display:flex;flex-direction:column;border:.5px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface-alt)}.chain-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:.5px solid var(--line)}.chain-row:last-child{border-bottom:none}.pending-row{border-top:1px dashed var(--line-strong)}.pending-glyph{background:color-mix(in srgb,var(--accent) 14%,var(--surface));color:var(--accent)}.pending-note{font-size:10.5px;color:var(--text-subtle);margin-top:1px}.pending-row .chain-balance{color:var(--accent)}.chain-glyph{width:24px;height:24px;border-radius:6px;background:var(--surface);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:inset 0 0 0 .5px var(--line)}.chain-info{flex:1;min-width:0}.chain-name{font-size:12.5px;font-weight:600;color:var(--text)}.chain-addr{all:unset;cursor:pointer;margin-top:1px;font-size:10.5px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace;display:inline-flex;align-items:center;gap:4px}.chain-addr.copied{color:var(--ok)}.chain-balance{font-size:14px;font-weight:700;color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace}.plugin-line{margin-top:14px;font-size:13.5px;color:var(--text);line-height:1.55}.plugin-line .muted{color:var(--text-muted)}.plugin-meta{margin-top:8px;font-size:11.5px;color:var(--text-subtle);display:flex;align-items:center;gap:6px}.plugin-actions{margin-top:14px;display:flex;gap:8px}.service-list{margin-top:14px;display:flex;flex-direction:column}.service-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:.5px dashed var(--line)}.service-row:last-child{border-bottom:none}.service-head{display:flex;align-items:center;gap:8px}.service-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:var(--text-subtle)}.service-dot.running{background:var(--ok);box-shadow:0 0 0 3px var(--ok-bg)}.service-name{font-size:13.5px;font-weight:600;color:var(--text)}.service-sub{font-size:12px;color:var(--text-muted);margin-top:3px;margin-left:15px}.service-actions{display:flex;align-items:center;gap:8px}.log-card-head{padding:20px 20px 12px;display:flex;justify-content:space-between;align-items:flex-start}.card:not(.flush)>.log-card-head{padding:0 0 12px}.log-live{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--text-subtle)}.log-live-tag{display:inline-flex;align-items:center;gap:6px}.log-live-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);animation:cm-pulse 2s ease-in-out infinite}.log-expand{all:unset;cursor:pointer;width:24px;height:24px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--soft-fill)}.log-body{margin:0 20px 20px;background:var(--terminal-bg);border-radius:10px;padding:12px;max-height:224px;overflow-y:auto;overflow-x:hidden;font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace;font-size:11.5px;line-height:1.7;color:#e7e5df}.log-line{display:flex;gap:10px;padding:1px 0}.log-line .log-msg{min-width:0;flex:1;word-break:break-all;white-space:pre-wrap}.log-time{color:#ffffff61;flex-shrink:0}.log-level{width:42px;flex-shrink:0;font-weight:600}.log-level.INFO{color:#a8a59c}.log-level.WARN{color:#f0a955}.log-level.ERROR{color:#f06464}.log-level.DEBUG{color:#6e6c64}.log-msg{color:#e7e5df}.log-msg.ERROR{color:#fca5a5}.search-box{display:flex;align-items:center;gap:6px;padding:7px 10px;border:.5px solid var(--line);border-radius:9px;background:var(--surface);width:220px}.search-box input{all:unset;flex:1;font-size:13px;color:var(--text);min-width:0}.search-box input::placeholder{color:var(--text-subtle)}.icon-search{color:var(--text-subtle);display:inline-flex}.icon-clear{all:unset;cursor:pointer;color:var(--text-subtle);display:inline-flex}.category-chips{display:flex;gap:6px;overflow-x:auto;padding:2px 0}.chip{all:unset;cursor:pointer;white-space:nowrap;padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--text);background:#14120e0b;border:.5px solid var(--line);display:inline-flex;align-items:center;gap:6px;transition:background .12s}.cm-dark .chip{background:#ffffff0d}.chip.active{background:var(--accent);color:#fff;-webkit-text-fill-color:#fff;border-color:var(--accent)}.chip-count{font-size:10.5px;font-weight:700;opacity:.5}.chip.active .chip-count{opacity:.55}.platform-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.platform-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.platform-card{all:unset;cursor:pointer;background:var(--surface);border-radius:12px;padding:13px 14px;box-shadow:var(--card-shadow);border:.5px solid color-mix(in srgb,var(--line) 62%,transparent);display:flex;align-items:center;gap:12px;position:relative;transition:transform .18s ease,border-color .2s ease,box-shadow .24s ease}.platform-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--line-strong) 46%,transparent);box-shadow:var(--card-shadow),0 18px 40px -24px #f0b90b8c,0 8px 18px -16px #f0b90b47}.cm-dark .platform-card:hover{box-shadow:var(--card-shadow),0 18px 40px -24px #f0b90b6b,0 8px 22px -16px #f0b90b3d}.platform-glyph{width:36px;height:36px;flex-shrink:0;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:15px;letter-spacing:-.5px;box-shadow:inset 0 0 0 .5px #ffffff1f,inset 0 1px #ffffff2e;overflow:hidden;font-family:-apple-system,SF Pro Display,PingFang SC,sans-serif}.platform-glyph img,.platform-glyph svg{width:56%;height:56%;object-fit:contain;display:block}.platform-glyph svg{fill:#fff}.platform-info{flex:1;min-width:0}.platform-row1{display:flex;align-items:center;gap:6px}.platform-name{font-size:14px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-hot{font-size:10px;font-weight:700;color:var(--accent);padding:1px 5px;border-radius:4px;background:color-mix(in srgb,var(--accent) 14%,transparent)}.cm-dark .platform-hot{background:#ffffff0f}.platform-row2{font-size:11.5px;color:var(--text-muted);margin-top:2px;display:flex;align-items:center;gap:6px}.mode-tag{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:1px 5px;border-radius:4px}.mode-tag.public{color:var(--ok);background:var(--ok-bg)}.mode-tag.browser{color:var(--warn);background:var(--warn-bg)}.empty-state{grid-column:1 / -1;text-align:center;padding:60px 0;color:var(--text-muted);font-size:13px}.stats-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat-card{padding:16px;background:var(--surface);border:.5px solid var(--line);border-radius:14px;box-shadow:var(--card-shadow)}.stat-row{display:flex;align-items:flex-end;justify-content:space-between;margin-top:8px;gap:8px}.stat-value{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em;line-height:1}.stat-delta{margin-top:8px;font-size:11.5px;font-weight:500;color:var(--text-muted)}.stat-delta.tone-ok{color:var(--ok)}.row-orders-mid{display:grid;grid-template-columns:1.05fr 1.4fr;gap:14px}.chart-container{margin-top:18px}.bar-chart{position:relative;height:160px;display:flex;align-items:flex-end;gap:10px}.bar-grid{position:absolute;left:0;right:0;border-top:.5px dashed var(--line);pointer-events:none}.bar-col{flex:1;position:relative;display:flex;flex-direction:column;justify-content:flex-end;height:100%}.bar{border-radius:6px;background:color-mix(in srgb,var(--accent) 28%,transparent);transition:height .35s cubic-bezier(.2,.7,.2,1);position:relative}.cm-dark .bar{background:color-mix(in srgb,var(--accent) 22%,transparent)}.bar.is-last{background:var(--accent)}.bar-tip{position:absolute;top:-22px;left:50%;transform:translate(-50%);font-size:11px;font-weight:700;color:var(--text);white-space:nowrap}.bar-labels{display:flex;gap:10px;margin-top:8px}.bar-label{flex:1;text-align:center;font-size:11px;color:var(--text-subtle);font-weight:500}.bar-label.is-last{color:var(--text);font-weight:600}.escrow-list{margin-top:14px;display:flex;flex-direction:column}.escrow-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:.5px dashed var(--line)}.escrow-row:last-child{border-bottom:none}.escrow-info{flex:1;min-width:0}.escrow-skill{font-size:13.5px;font-weight:600;color:var(--text)}.escrow-meta{font-size:11.5px;color:var(--text-muted);margin-top:2px}.escrow-amount{text-align:right}.escrow-reward{font-size:14px;font-weight:700;color:var(--text)}.escrow-status{font-size:10.5px;color:var(--ok);font-weight:600;margin-top:2px}.orders-toolbar{padding:14px 20px;border-bottom:.5px solid var(--line);display:flex;align-items:center;gap:18px;justify-content:space-between}.tab-group{display:flex;gap:4px;background:#14120e0b;padding:3px;border-radius:9px}.cm-dark .tab-group{background:#ffffff0d}.tab{all:unset;cursor:pointer;padding:5px 12px;border-radius:6px;font-size:12.5px;font-weight:600;color:var(--text-muted);display:inline-flex;align-items:center;gap:6px}.tab.active{color:var(--text);background:var(--surface);box-shadow:0 1px 2px #0000000f}.tab-count{font-size:10.5px;font-weight:700;opacity:.5}.tz-stamp{font-size:11.5px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.orders-grid-head{display:grid;grid-template-columns:80px 1.5fr 2fr 1fr 90px 70px;padding:10px 20px;gap:12px;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--text-subtle);text-transform:uppercase;border-bottom:.5px dashed var(--line)}.orders-grid-head .right{text-align:right}.orders-grid-body{max-height:260px;overflow:auto}.orders-row{display:grid;grid-template-columns:80px 1.5fr 2fr 1fr 90px 70px;padding:12px 20px;gap:12px;font-size:13px;color:var(--text);align-items:center;border-bottom:.5px solid var(--line)}.orders-row:last-child{border-bottom:none}.orders-row .time,.orders-row .dur{font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--text-muted);font-size:12px}.orders-row .platform-cell{display:flex;align-items:center;gap:8px}.orders-row .amount{text-align:right;font-weight:600}.orders-row .amount.zero{color:var(--text-subtle)}.orders-row .right{text-align:right}.platform-glyph.size-sm{width:22px;height:22px;border-radius:6px;font-size:9.5px}.platform-glyph.size-lg{width:52px;height:52px;border-radius:14px;font-size:22px}.modal-backdrop{position:absolute;inset:0;z-index:50;background:#14120e6b;display:flex;align-items:center;justify-content:center;border-radius:16px;animation:cm-overlay-in .2s ease both}.cm-dark .modal-backdrop{background:#080809ad}.platform-modal{width:520px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both;overflow:hidden}.platform-modal-head{padding:22px 24px 18px;display:flex;gap:14px;align-items:flex-start}.platform-modal-info{flex:1;min-width:0}.platform-modal-cat{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--text-subtle);text-transform:uppercase}.platform-modal-title{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em;margin-top:4px}.platform-modal-meta{margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.platform-modal-skills{font-size:12px;color:var(--text-muted)}.modal-close-btn{all:unset;cursor:pointer;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-muted);background:var(--soft-fill)}.platform-modal-desc{padding:4px 24px 18px;font-size:13.5px;color:var(--text-muted);line-height:1.55}.platform-meta-grid{margin:0 24px 16px;padding:14px 16px;border-radius:12px;background:var(--surface-alt);border:.5px solid var(--line);display:grid;grid-template-columns:auto 1fr auto 1fr;row-gap:10px;column-gap:14px;font-size:12.5px}.platform-meta-grid .k{color:var(--text-muted)}.platform-meta-grid .v{color:var(--text);font-weight:500;text-align:right}.platform-meta-grid .v.strong{font-weight:600}.platform-meta-grid .v.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.platform-caps{padding:0 24px 6px}.platform-toggle{all:unset;display:block;flex-shrink:0;width:44px;height:25px;box-sizing:border-box;border-radius:999px;cursor:pointer;position:relative;background:#d2d5da;transition:background .1s ease}.cm-dark .platform-toggle{background:#4a4d53}.platform-toggle.on{background:var(--accent)}.platform-toggle-thumb{position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000047;transform:translate(0);transition:transform .11s cubic-bezier(.2,.8,.2,1);will-change:transform}.platform-toggle.on .platform-toggle-thumb{transform:translate(19px)}.platform-skill-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 2px;border-bottom:1px solid var(--line)}.platform-skill-row:last-child{border-bottom:none}.platform-skill-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.platform-skill-name{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:13px;font-weight:600;color:var(--text)}.platform-skill-desc{font-size:11.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-skill-status{flex-shrink:0;font-size:11.5px;font-weight:600;color:var(--text-muted)}.platform-skill-status.on{color:var(--accent)}.caps-label{font-size:11.5px;font-weight:700;letter-spacing:.08em;color:var(--text-subtle);text-transform:uppercase;margin-bottom:10px}.caps-list{display:flex;flex-wrap:wrap;gap:6px}.cap-tag{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:7px;background:var(--surface-alt);border:.5px solid var(--line);font-size:12px;color:var(--text)}.cap-icon{color:var(--accent);display:inline-flex}.platform-modal-footer{padding:14px 24px 20px;display:flex;justify-content:flex-end;gap:8px;border-top:.5px solid var(--line);margin-top:12px}.log-modal{width:min(1100px,100%);height:min(700px,100%);background:#0b0c0e;color:#e7e5df;border-radius:14px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);display:flex;flex-direction:column;animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both;overflow:hidden;font-family:ui-monospace,SF Mono,JetBrains Mono,Menlo,monospace}.cm-dark .log-modal{background:#0b0c0e}.log-modal-head{padding:12px 16px;border-bottom:.5px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:12px;flex-shrink:0;font-family:-apple-system,SF Pro Text,PingFang SC,system-ui,sans-serif}.log-modal-title-tag{display:flex;align-items:center;gap:8px}.log-modal-live{width:8px;height:8px;border-radius:50%;background:#3cc88a;animation:cm-pulse 2s ease-in-out infinite}.log-modal-live.paused{background:#a8a59c;animation:none}.log-modal-title{font-size:13.5px;font-weight:700;color:#f3f2ee}.log-modal-counts{font-size:11px;color:#ffffff80}.log-modal-spacer{flex:1}.log-modal-search{display:flex;align-items:center;gap:6px;padding:5px 9px;border:.5px solid rgba(255,255,255,.08);border-radius:7px;background:#ffffff0a;width:220px}.log-modal-search input{all:unset;flex:1;font-size:12px;color:#f3f2ee;min-width:0}.log-modal-search input::placeholder{color:#fff6}.log-modal-filters{display:flex;gap:4px}.log-modal-filter{all:unset;cursor:pointer;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;letter-spacing:.04em;background:#ffffff0a;color:#f3f2ee;display:inline-flex;align-items:center;gap:5px}.log-modal-filter.INFO{color:#a8a59c}.log-modal-filter.WARN{color:#f0a955}.log-modal-filter.ERROR{color:#f06464}.log-modal-filter.DEBUG{color:#6e6c64}.log-modal-filter.active{color:#0b0c0e;background:#f3f2ee}.log-modal-filter.active.INFO{background:#a8a59c}.log-modal-filter.active.WARN{background:#f0a955}.log-modal-filter.active.ERROR{background:#f06464}.log-modal-filter.active.DEBUG{background:#6e6c64}.log-modal-filter-count{font-size:9.5px;opacity:.7}.log-modal-actions{display:flex;gap:4px}.log-modal-iconbtn{all:unset;cursor:pointer;width:28px;height:28px;border-radius:7px;background:#ffffff0a;color:#e7e5df;display:inline-flex;align-items:center;justify-content:center}.log-modal-iconbtn:hover{background:#ffffff14}.log-modal-body{flex:1;overflow:auto;padding:12px 16px;font-size:12.5px;line-height:1.75}.log-modal-body .log-line{gap:12px;padding:2px 0}.log-modal-body .log-time{width:104px;color:#ffffff59}.log-modal-body .log-level{width:52px;font-weight:700}.log-modal-body .log-msg.WARN{color:#fcd5a5}.log-modal-empty{padding:40px 0;text-align:center;color:#fff6;font-family:-apple-system,system-ui,sans-serif}.log-modal-foot{padding:8px 16px;border-top:.5px solid rgba(255,255,255,.07);display:flex;justify-content:space-between;align-items:center;font-size:10.5px;color:#ffffff73;flex-shrink:0}.login-screen{flex:1;display:flex;align-items:center;justify-content:center;background:var(--bg);position:relative;overflow:hidden;background-image:radial-gradient(ellipse 80% 60% at 30% 0%,color-mix(in srgb,var(--accent) 18%,transparent) 0%,transparent 60%),radial-gradient(ellipse 60% 60% at 100% 100%,color-mix(in srgb,var(--accent) 14%,transparent) 0%,transparent 60%)}.login-grid{position:absolute;inset:0;opacity:.04;background-image:linear-gradient(var(--text) .5px,transparent .5px),linear-gradient(90deg,var(--text) .5px,transparent .5px);background-size:36px 36px;-webkit-mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%);mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%)}.cm-dark .login-grid{opacity:.05}.login-container{width:420px;position:relative;z-index:1}.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:32px;justify-content:center}.login-brand-name{font-size:22px;font-weight:700;color:var(--text);letter-spacing:-.02em}.login-brand-tag{font-size:12px;color:var(--text-muted);margin-top:2px}.login-card{background:var(--surface);border-radius:18px;border:.5px solid var(--line);box-shadow:var(--shadow);overflow:hidden}.login-pad{padding:30px 28px 26px}.login-title{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.01em}.login-sub{font-size:13px;color:var(--text-muted);margin-top:4px;line-height:1.55}.login-btn-google{all:unset;cursor:pointer;margin-top:22px;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-sizing:border-box;padding:12px 14px;background:var(--surface);color:var(--text);border:.5px solid var(--line-strong);border-radius:10px;font-size:13.5px;font-weight:600;box-shadow:0 1px 2px #0000000a}.login-divider{margin:18px 0;display:flex;align-items:center;gap:10px}.login-divider .line{flex:1;height:1px;background:var(--line)}.login-divider .label{font-size:10.5px;font-weight:600;color:var(--text-subtle);letter-spacing:.1em;text-transform:uppercase}.login-btn-email{all:unset;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;box-sizing:border-box;padding:12px 14px;background:transparent;color:var(--text);border:.5px solid var(--line);border-radius:10px;font-size:13.5px;font-weight:600}.login-terms{margin-top:20px;font-size:11px;color:var(--text-subtle);line-height:1.55}.login-error{margin-top:16px;padding:10px 12px;border-radius:9px;background:var(--err-bg);color:var(--err);font-size:12.5px;line-height:1.5}.login-back{all:unset;cursor:pointer;font-size:12px;color:var(--text-muted);margin-bottom:14px;display:inline-flex;align-items:center;gap:4px}.login-label{display:block;margin-top:18px;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--text)}.login-input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:9px;border:.5px solid var(--line);background:var(--surface-alt);color:var(--text);font-size:13.5px;font-family:inherit;outline:none}.login-input:focus{border-color:var(--accent)}.login-submit{all:unset;cursor:pointer;margin-top:24px;width:100%;box-sizing:border-box;padding:12px 14px;background:var(--accent);color:#fff;border-radius:10px;text-align:center;font-size:13.5px;font-weight:600;box-shadow:0 1px #ffffff2e inset}.login-code-row{display:flex;gap:8px;margin-top:20px;justify-content:space-between}.login-code-input{width:48px;height:56px;text-align:center;font-size:22px;font-weight:700;color:var(--text);font-family:ui-monospace,SF Mono,Menlo,monospace;background:var(--surface-alt);border:1px solid var(--line);border-radius:10px;outline:none;transition:border-color .12s,background .12s;caret-color:var(--accent)}.login-code-input:focus{border-color:var(--accent)}.login-code-input.error{border-color:var(--err);background:var(--err-bg);color:var(--err)}.login-code-status{margin-top:14px;min-height:18px;font-size:12px;display:flex;align-items:center;gap:6px}.login-spinner{width:12px;height:12px;display:inline-block;border-radius:50%;border:2px solid var(--line);border-top-color:var(--accent);animation:cm-spin .8s linear infinite}.login-code-status.error{color:var(--err);font-weight:500}.login-code-status.muted{color:var(--text-muted)}.login-code-footer{margin-top:16px;padding-top:14px;border-top:.5px dashed var(--line);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-muted)}.login-code-resend{all:unset;cursor:pointer;color:var(--accent);font-weight:600}.login-code-resend.disabled{color:var(--text-muted);cursor:default}.login-google-state{padding:44px 28px 32px;text-align:center}.google-avatar{position:relative;width:72px;height:72px;margin:0 auto 18px}.google-avatar-bg{position:absolute;inset:0;border-radius:50%;background:var(--soft-fill);transition:background .3s}.google-avatar-bg.success{background:var(--accent)}.google-avatar-ring{position:absolute;inset:-4px;border-radius:50%;border:2px solid transparent;border-top-color:var(--accent);animation:cm-spin 1s linear infinite}.google-avatar-icon{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.google-state-title{font-size:17px;font-weight:700;color:var(--text)}.google-state-sub{font-size:13px;color:var(--text-muted);margin-top:8px;line-height:1.55}.google-state-domain{margin-top:18px;font-size:11px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.google-continue-btn{all:unset;cursor:pointer;margin-top:22px;padding:10px 22px;border-radius:9px;background:var(--text);color:var(--bg);font-size:13px;font-weight:600}.login-footer{margin-top:18px;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text-subtle)}.login-footer-links{display:flex;gap:14px}.lang-toggle-segment{display:inline-flex;padding:2px;border-radius:7px;background:#14120e0a;border:.5px solid var(--line)}.cm-dark .lang-toggle-segment{background:#ffffff0d}.lang-toggle-option{all:unset;cursor:pointer;padding:2px 9px;border-radius:5px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-subtle)}.lang-toggle-option.active{color:var(--text);background:var(--surface);box-shadow:0 1px 2px #0000000f}.login-corner-traffic{position:absolute;top:14px;left:16px;z-index:10;-webkit-app-region:no-drag}.settings-modal{width:760px;height:540px;background:var(--surface);border-radius:16px;box-shadow:var(--shadow);border:.5px solid var(--line-strong);display:flex;overflow:hidden;animation:cm-modal-in .26s cubic-bezier(.2,.7,.2,1) both}.settings-sidebar{width:200px;background:var(--surface-alt);padding:14px 10px;border-right:.5px solid var(--line);display:flex;flex-direction:column}.settings-sidebar-title{padding:4px 10px 10px;font-size:13px;font-weight:700;color:var(--text)}.settings-nav{all:unset;cursor:pointer;padding:7px 10px;border-radius:7px;display:flex;align-items:center;gap:9px;font-size:12.5px;font-weight:500;color:var(--text-muted)}.settings-nav.active{font-weight:600;color:var(--text);background:var(--nav-active-fill)}.settings-nav-icon{color:var(--text-subtle);display:inline-flex}.settings-nav.active .settings-nav-icon{color:var(--accent)}.settings-logout{all:unset;cursor:pointer;padding:7px 10px;border-radius:7px;display:flex;align-items:center;gap:9px;font-size:12.5px;font-weight:600;color:var(--err)}.settings-content{flex:1;padding:18px 24px 24px;overflow:auto}.settings-content-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.settings-content-title{font-size:17px;font-weight:700;color:var(--text);letter-spacing:-.01em}.settings-profile{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--surface-alt);border:.5px solid var(--line)}.settings-profile .avatar{width:44px;height:44px;border-radius:10px;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;letter-spacing:-.02em;font-size:16px;text-transform:uppercase}.settings-profile .info{flex:1;min-width:0}.settings-profile .name{font-size:15px;font-weight:700;color:var(--text)}.settings-profile .addr{font-size:12px;color:var(--text-muted);font-family:ui-monospace,SF Mono,Menlo,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.set-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:.5px dashed var(--line);gap:18px}.set-row .label-wrap{min-width:0}.set-row .label{font-size:13.5px;font-weight:600;color:var(--text)}.set-row .sub{font-size:11.5px;color:var(--text-muted);margin-top:2px}.set-toggle{all:unset;cursor:pointer;position:relative;width:36px;height:22px;border-radius:999px;background:#14120e26;transition:background .15s}.cm-dark .set-toggle{background:#ffffff1f}.set-toggle.on{background:var(--ok)}.set-toggle:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:left .15s}.set-toggle.on:after{left:16px}.set-code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;background:var(--surface-alt);padding:4px 8px;border-radius:6px;color:var(--text)}.set-input,.set-select{padding:6px 10px;border-radius:7px;border:.5px solid var(--line);background:var(--surface);color:var(--text);font-size:13;font-family:inherit;outline:none}.set-input.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.about-block{text-align:center;padding:40px 0}.about-name{margin-top:14px;font-size:20px;font-weight:700;color:var(--text);letter-spacing:-.02em}.about-version{margin-top:4px;font-size:12px;color:var(--text-muted);font-family:ui-monospace,SF Mono,Menlo,monospace}.about-copy{margin-top:18px;font-size:12px;color:var(--text-subtle);line-height:1.6}.about-actions{margin-top:22px;display:flex;justify-content:center;gap:8px}.hidden{display:none!important}.muted{color:var(--text-muted)}.busy{cursor:wait}.density-compact .card{padding:16px}.density-compact .log-card-head{padding:16px 16px 12px}.density-compact .log-body{margin:0 16px 16px}body.is-tauri{background:transparent}.is-tauri .desktop{display:none}.is-tauri .stage{padding:0}.is-tauri #app{width:100vw;height:100vh;max-width:none;max-height:none;border-radius:0;box-shadow:none;transform:none!important}.is-tauri .traffic{visibility:hidden;pointer-events:none}.is-tauri .brand>*{pointer-events:none}.is-tauri .login-corner-traffic{display:none}.boot-screen{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:var(--bg);color:var(--text)}.boot-mark{width:64px;height:64px;display:grid;place-items:center;border-radius:18px;background:var(--surface);box-shadow:var(--card-shadow)}.boot-title{margin-top:8px;font-size:20px;font-weight:800}.boot-subtitle{color:var(--text-muted);font-size:13px}.boot-spinner{width:22px;height:22px;margin-top:8px;border-radius:50%;border:2px solid var(--line-strong);border-top-color:var(--accent);animation:cm-spin .8s linear infinite}.is-tauri .login-screen{padding-top:32px}.preflight-notice{border:.5px solid var(--warn);background:var(--warn-bg);display:flex;flex-direction:column;gap:14px}.preflight-notice.probing{border-color:var(--line-strong);background:var(--soft-fill)}.preflight-notice.probing .preflight-notice-icon{background:transparent}.preflight-notice-head{display:flex;align-items:flex-start;gap:11px}.preflight-notice-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--warn-bg);color:var(--warn);flex-shrink:0}.preflight-notice-text{display:flex;flex-direction:column;gap:2px;min-width:0}.preflight-notice-title{font-size:14px;font-weight:700;color:var(--text)}.preflight-notice-sub{font-size:12px;color:var(--text-muted)}.ext-offline-notice{border:.5px solid var(--warn);background:var(--warn-bg);display:flex;align-items:center;justify-content:space-between;gap:14px}.ext-offline-head{display:flex;align-items:flex-start;gap:11px;min-width:0}.ext-offline-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--warn-bg);color:var(--warn);flex-shrink:0}.ext-offline-text{display:flex;flex-direction:column;gap:2px;min-width:0}.ext-offline-title{font-size:14px;font-weight:700;color:var(--text)}.ext-offline-sub{font-size:12px;color:var(--text-muted);line-height:1.5}.ext-offline-actions{flex-shrink:0}.preflight-issue-list{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:.5px solid var(--line)}.preflight-issue{display:flex;align-items:flex-start;gap:10px}.preflight-issue-body{flex:1;min-width:0}.preflight-issue>.btn{flex-shrink:0;align-self:center}.preflight-issue-dot{width:8px;height:8px;border-radius:50%;margin-top:5px;flex-shrink:0}.preflight-issue-dot.tone-err{background:var(--err)}.preflight-issue-dot.tone-warn{background:var(--warn)}.preflight-issue-body{display:flex;flex-direction:column;gap:2px;min-width:0}.preflight-issue-name{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:650;color:var(--text)}.preflight-issue-count{font-size:11px;font-weight:600;color:var(--text-muted);background:var(--soft-fill);border-radius:5px;padding:1px 6px;white-space:nowrap}.preflight-issue-reason{font-size:12px;color:var(--text-muted)}.preflight-issue-hint{font-size:12px;color:var(--text-subtle)}.llm-upload-card{display:flex;flex-direction:column;gap:12px}.llm-provider-list{display:flex;flex-direction:column;margin-top:14px;padding-top:4px;border-top:.5px solid var(--line)}.llm-provider-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0}.llm-provider-row+.llm-provider-row{border-top:.5px solid var(--line)}.llm-provider-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 15%,transparent)}.llm-provider-dot.tone-ok{color:#5cc98a}.llm-provider-dot.tone-warn{color:var(--warn)}.llm-provider-dot.tone-off{color:var(--text-subtle)}.llm-provider-dot.is-live{animation:cm-status-breathe 1.8s ease-in-out infinite}.llm-provider-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.llm-provider-name{font-size:13.5px;font-weight:650;color:var(--text)}.llm-provider-model{font-size:11px;color:var(--text-subtle);font-family:ui-monospace,SF Mono,Menlo,monospace}.llm-provider-status{font-size:12px;color:var(--text-muted);white-space:nowrap;text-align:right}.llm-provider-side{display:flex;align-items:center;gap:10px;flex-shrink:0}.llm-provider-row.is-disabled .llm-provider-name{color:var(--text-muted)}.llm-provider-row.is-disabled .llm-provider-model{opacity:.6}.llm-provider-side .relay-switch{width:38px;height:22px;border-radius:11px}.llm-provider-side .relay-switch-knob{width:16px;height:16px}.llm-provider-side .relay-switch.on .relay-switch-knob{transform:translate(16px)}.update-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.update-notice-title{font-size:13.5px;font-weight:700;color:var(--text)}.update-notice-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.about-changelog{margin-top:14px;max-height:260px;overflow-y:auto;text-align:left;border-top:.5px solid var(--line);padding-top:12px}.cl-version{font-size:13px;font-weight:700;color:var(--text);margin:10px 0 4px}.cl-version:first-child{margin-top:0}.cl-section{font-size:11.5px;font-weight:650;color:var(--text-muted);margin:8px 0 3px}.cl-item{font-size:12px;color:var(--text-muted);line-height:1.55;padding-left:10px;position:relative}.cl-item:before{content:"·";position:absolute;left:2px}.relay-toggle-card{display:flex;align-items:center;justify-content:space-between;gap:16px}.relay-toggle-info{display:flex;flex-direction:column;gap:3px;min-width:0}.relay-toggle-title{font-size:15px;font-weight:700;color:var(--text)}.relay-toggle-sub{font-size:12.5px;color:var(--text-muted)}.relay-switch{width:46px;height:27px;border-radius:14px;border:none;cursor:pointer;padding:0;position:relative;flex-shrink:0;transition:background .16s ease}.relay-switch.off{background:var(--line-strong)}.relay-switch.on{background:var(--accent)}.relay-switch-knob{position:absolute;top:3px;left:3px;width:21px;height:21px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000004d;transition:transform .16s ease}.relay-switch.on .relay-switch-knob{transform:translate(19px)}.relay-setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-top:.5px solid var(--line)}.relay-setting-row:first-of-type{border-top:none}.relay-setting-label{display:flex;flex-direction:column;gap:2px;min-width:0}.relay-setting-label>div:first-child{font-size:13.5px;font-weight:600;color:var(--text)}.relay-setting-hint{font-size:12px;color:var(--text-muted)}.relay-number-input,.relay-time-input{padding:6px 10px;border-radius:8px;border:.5px solid var(--line-strong);background:var(--surface);color:var(--text);font-size:13px;font-variant-numeric:tabular-nums}.relay-number-input{width:64px;text-align:center}.relay-earnings-grid{display:flex;gap:12px;padding-top:10px;border-top:.5px solid var(--line)}.relay-earning-stat{flex:1;text-align:center}.relay-earning-value{font-size:20px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.relay-earning-label{font-size:11px;color:var(--text-muted);margin-top:3px}.relay-schedule-row{display:flex;align-items:center;gap:10px;padding:4px 0 10px}.relay-schedule-dash{color:var(--text-muted)}