@mindexec/cli 0.2.353 → 0.2.354
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.
- package/package.json +1 -1
- package/wwwroot/assets/{AuthPages-BfKcKt4q.js → AuthPages-CqMUnpl3.js} +1 -1
- package/wwwroot/assets/{CodePage-B2jfR-4_.js → CodePage-zMi_UJaE.js} +1 -1
- package/wwwroot/assets/{CompanyCorePage-Ce6czxtW.js → CompanyCorePage-V37js22g.js} +1 -1
- package/wwwroot/assets/{ExecutionModePage-DU5Sb0xN.js → ExecutionModePage-WoYwTq2j.js} +1 -1
- package/wwwroot/assets/MindCanvas-CAd5o-DG.css +1 -0
- package/wwwroot/assets/{MindCanvas-Bkim_C6S.js → MindCanvas-CvCmDE8i.js} +1 -1
- package/wwwroot/assets/{PlanMasterPage-DaAsHNfZ.js → PlanMasterPage-BNRDnDs3.js} +1 -1
- package/wwwroot/assets/{PricingPage-B05hi-Bn.js → PricingPage-BscC5UNq.js} +1 -1
- package/wwwroot/assets/{ToolPages-CrCY19Ki.js → ToolPages-2-8bifXT.js} +1 -1
- package/wwwroot/assets/{YouTubeSearchPage-hpw8680A.js → YouTubeSearchPage-DM1skiy0.js} +1 -1
- package/wwwroot/assets/canvas-runtime-DyQNXrXQ.js +44 -0
- package/wwwroot/assets/{index-IPREDbCv.js → index-BMSr0Udr.js} +2 -2
- package/wwwroot/assets/{storage-nB8ArxiV.js → storage-BF01PMeG.js} +1 -1
- package/wwwroot/index.html +1 -1
- package/wwwroot/assets/MindCanvas-BZ_GR74-.css +0 -1
- package/wwwroot/assets/canvas-runtime-mGIIaYcF.js +0 -44
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/supabaseAuthAdapter-C3z334Qw.js","assets/app-runtime-xD2Z3NdN.js","assets/MindCanvas-
|
|
2
|
-
var I=Object.defineProperty;var K=(e,t,a)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var E=(e,t,a)=>K(e,typeof t!="symbol"?t+"":t,a);import{r as i,j as r,R as $}from"./vendor-react-BXzpOyCS.js";import{R as v,i as z}from"./app-runtime-xD2Z3NdN.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const d of o)if(d.type==="childList")for(const u of d.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function a(o){const d={};return o.integrity&&(d.integrity=o.integrity),o.referrerPolicy&&(d.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?d.credentials="include":o.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function n(o){if(o.ep)return;o.ep=!0;const d=a(o);fetch(o.href,d)}})();const F="modulepreload",B=function(e){return"/"+e},A={},g=function(t,a,n){let o=Promise.resolve();if(a&&a.length>0){let u=function(m){return Promise.all(m.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),h=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));o=u(a.map(m=>{if(m=B(m),m in A)return;A[m]=!0;const c=m.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${f}`))return;const p=document.createElement("link");if(p.rel=c?"stylesheet":F,c||(p.as="script"),p.crossOrigin="",p.href=m,h&&p.setAttribute("nonce",h),document.head.appendChild(p),c)return new Promise((b,w)=>{p.addEventListener("load",b),p.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${m}`)))})}))}function d(u){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=u,window.dispatchEvent(s),!s.defaultPrevented)throw u}return o.then(u=>{for(const s of u||[])s.status==="rejected"&&d(s.reason);return t().catch(d)})},N="mindexec-react-auth-shell-v1",V="supabase-callback@mindexec.local";function W(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.userId=="string"&&typeof t.email=="string"&&t.provider==="Google"&&typeof t.signedInAt=="string")}function q(e){const t=e.toLowerCase();return t.includes("access_token=")||t.includes("refresh_token=")||t.includes("provider_token=")||t.includes("provider_refresh_token=")||t.includes("expires_in=")||t.includes("token_type=")||t.includes("type=recovery")||t.includes("type=invite")||t.includes("error=")||t.includes("error_description=")||t.includes("code=")}function G(e){const t=e.split("=",2)[0].toLowerCase();return t==="access_token"||t==="refresh_token"||t==="provider_token"||t==="provider_refresh_token"||t==="expires_in"||t==="expires_at"||t==="token_type"||t==="type"||t==="error"||t==="error_code"||t==="error_description"||t==="code"}function L(e){const t=e.trim().replace(/^[?#]/,"");return t?t.split("&").filter(Boolean).filter(n=>!G(n)).join("&"):""}function Y(e){const t=(e||"").trim();if(!t||!t.startsWith("/")||t.startsWith("//")||t.includes("\\"))return"";try{const a=new URL(t,window.location.origin);return a.origin!==window.location.origin?"":`${a.pathname}${a.search}${a.hash}`}catch{return""}}function J(e){const t=new URL(e,window.location.origin),a=`${t.search}&${t.hash}`,n=q(a);if(!n)return{hasAuthPayload:!1,cleanedPath:`${t.pathname}${t.search}${t.hash}`,shouldCreateLocalShell:!1,shouldRouteToMindCanvas:!1,hasError:!1,hasRecovery:!1,hasInvite:!1,hasCode:!1,hasToken:!1};const o=L(t.search),d=L(t.hash),u=/(?:^|[&#?])error=/i.test(a)||/(?:^|[&#?])error_description=/i.test(a),s=/(?:^|[&#?])type=recovery(?:&|$)/i.test(a),h=/(?:^|[&#?])type=invite(?:&|$)/i.test(a),m=/(?:^|[&#?])code=/i.test(a),c=/(?:^|[&#?])(?:access_token|refresh_token)=/i.test(a),f=Y(t.searchParams.get("next"));let p=`${t.pathname}${o?`?${o}`:""}${d?`#${d}`:""}`;const b=t.pathname==="/"||t.pathname==="",w=t.pathname==="/login",P=!u&&!s&&!h&&(m||c),l=P&&!f&&(b||w);if(f&&P)p=f;else if(l){const y=new URLSearchParams(o);y.delete("next");const R=y.toString();p=`/mindcanvas${R?`?${R}`:""}`}return{hasAuthPayload:n,cleanedPath:p,shouldCreateLocalShell:!u&&!s&&!h&&(m||c),shouldRouteToMindCanvas:l,hasError:u,hasRecovery:s,hasInvite:h,hasCode:m,hasToken:c}}function Q(e){return`local-google-${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||"user"}`}function $e(){try{const e=window.localStorage.getItem(N);if(!e)return null;const t=JSON.parse(e);return W(t)?t:null}catch{return null}}function X(e="builder@mindexec.local",t="manual-google-shell"){const a=e.trim().toLowerCase()||"builder@mindexec.local",n={userId:typeof crypto<"u"&&"randomUUID"in crypto?`local-google-${crypto.randomUUID()}`:Q(a),email:a,provider:"Google",signedInAt:new Date().toISOString(),source:t};return j(n)}function j(e){try{window.localStorage.setItem(N,JSON.stringify(e))}catch{}return v.emit(e.source==="supabase-provider-session"?"auth.supabase.sessionShell":"auth.google.localShell",{provider:e.provider,hasEmail:!!e.email,source:e.source}),e}const Z={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function ee(){return Z??{}}function te({onRouteReplaced:e}){const t=i.useRef(!1);return i.useEffect(()=>{if(t.current)return;t.current=!0,(async()=>{const n=window.location.href,o=J(n);if(!o.hasAuthPayload)return;const d=ee();let u={mode:"not-checked",canAttempt:!1},s=!1,h="",m=!1,c=null;if(!o.hasError&&!o.hasRecovery&&!o.hasInvite&&(o.hasCode||o.hasToken)){const{completeSupabaseAuthCallback:p,resolveSupabaseAuthAdapterState:b}=await g(async()=>{const{completeSupabaseAuthCallback:w,resolveSupabaseAuthAdapterState:P}=await import("./supabaseAuthAdapter-C3z334Qw.js").then(l=>l.c);return{completeSupabaseAuthCallback:w,resolveSupabaseAuthAdapterState:P}},__vite__mapDeps([0,1]));u=b(d),m=u.canAttempt,c=p}if(m&&c)try{const p=await c(d,n);p.session&&(j({...p.session,source:"supabase-provider-session"}),s=!0)}catch(p){h=p instanceof Error?p.message:String(p)}else o.shouldCreateLocalShell&&X(V,"supabase-callback-shell");v.emit(o.hasError||h?"auth.callback.error":"auth.callback.cleaned",{cleanedPath:o.cleanedPath,shouldCreateLocalShell:!m&&o.shouldCreateLocalShell,shouldRouteToMindCanvas:o.shouldRouteToMindCanvas,hasCode:o.hasCode,hasToken:o.hasToken,hasRecovery:o.hasRecovery,hasInvite:o.hasInvite,providerMode:u.mode,providerAttempted:m,providerSessionCreated:s,providerError:h});const f=`${window.location.pathname}${window.location.search}${window.location.hash}`;o.cleanedPath!==f&&(window.history.replaceState({authCallbackCleaned:!0},"",o.cleanedPath),e("auth-callback-bootstrap"))})()},[e]),null}class ae extends i.Component{constructor(){super(...arguments);E(this,"state",{error:null});E(this,"retry",()=>{this.setState({error:null}),v.emit("runtime.errorBoundary.reset",{resetKey:this.props.resetKey,reason:"manual-retry"})})}static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,n){const o=(a==null?void 0:a.message)||"Unknown runtime error.";v.emit("runtime.errorBoundary.caught",{resetKey:this.props.resetKey,message:o,stack:(a==null?void 0:a.stack)||"",componentStack:n.componentStack}),console.error("[LoggingErrorBoundary] Unhandled React error.",a,n)}componentDidUpdate(a){a.resetKey!==this.props.resetKey&&this.state.error&&(this.setState({error:null}),v.emit("runtime.errorBoundary.reset",{from:a.resetKey,to:this.props.resetKey,reason:"route-change"}))}render(){const{error:a}=this.state;return a?r.jsx("div",{className:"page runtime-error-page","data-testid":"runtime-error-boundary","data-error-boundary-reset-key":this.props.resetKey,children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Runtime Guard"}),r.jsx("h1",{children:"Something broke inside this React surface."}),r.jsx("p",{children:"The error was captured locally so the whole app shell can stay recoverable."}),r.jsxs("div",{className:"runtime-error-message","data-testid":"runtime-error-boundary-message",children:[r.jsx("span",{className:"runtime-error-symbol","aria-hidden":"true",children:"!"}),r.jsx("span",{children:a.message||"Unknown runtime error."})]}),r.jsxs("div",{className:"action-row",children:[r.jsx("button",{className:"btn btn-primary",type:"button",onClick:this.retry,"data-testid":"runtime-error-boundary-retry",children:"Retry"}),this.props.onNavigateHome&&r.jsx("button",{className:"btn btn-secondary",type:"button",onClick:this.props.onNavigateHome,"data-testid":"runtime-error-boundary-home",children:"MindCanvas"})]})]})}):this.props.children}}const oe="main",re="h1",C="data-route-focus-target",ne=30;function se({route:e,rootSelector:t=oe,selector:a=re}){return i.useEffect(()=>{let n=!1,o=0;const d=u=>{if(n)return;const s=document.querySelector(t),h=(s==null?void 0:s.querySelector(a))??document.querySelector(a);for(const m of document.querySelectorAll(`[${C}="true"]`))m.removeAttribute(C);if(!h){if(u<ne){o=window.requestAnimationFrame(()=>d(u+1));return}v.emit("route.focusOnNavigate.skipped",{route:e,selector:a,reason:"missing-target",attempts:u});return}h.hasAttribute("tabindex")||h.setAttribute("tabindex","-1"),h.setAttribute(C,"true"),h.focus({preventScroll:!1}),v.emit("route.focusOnNavigate.applied",{route:e,selector:a,tagName:h.tagName.toLowerCase(),text:(h.textContent||"").trim().slice(0,90),attempts:u})};return o=window.requestAnimationFrame(()=>d(1)),()=>{n=!0,window.cancelAnimationFrame(o)}},[e,t,a]),null}const ie=[{key:"markdown-viewer",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",heroEyebrow:"Free online markdown viewer",heroTitle:"Preview Markdown instantly in your browser",heroSubtitle:"Paste or open a markdown file, review the rendered result, and move bigger writing work into MindCanvas when it needs structure.",privacyNote:"Runs locally in your browser. No upload required."},{key:"bulk-markdown-viewer",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",heroEyebrow:"Bulk markdown preview",heroTitle:"Review multiple markdown snippets at once",heroSubtitle:"Paste a stack of markdown entries and scan them locally before turning the useful pieces into a MindCanvas board.",privacyNote:"Local browser-only preview. No account and no upload step."},{key:"readme-previewer",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",heroEyebrow:"README previewer",heroTitle:"Preview README markdown before you publish",heroSubtitle:"Check headings, tables, links, and launch notes quickly, then keep bigger documentation work organized in MindCanvas.",privacyNote:"Local preview for README text. No repository access required."},{key:"markdown-to-html",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",heroEyebrow:"Markdown to HTML",heroTitle:"Turn markdown into clean HTML preview",heroSubtitle:"Render markdown locally, copy the HTML shape, and move reusable publishing notes into MindCanvas.",privacyNote:"Conversion runs in-browser and keeps your text local."},{key:"markdown-outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",heroEyebrow:"Markdown outline generator",heroTitle:"Extract a document outline from markdown",heroSubtitle:"Scan headings, section depth, and missing structure before your document becomes a larger project.",privacyNote:"Outline extraction runs locally in this browser."},{key:"markdown-table-formatter",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",heroEyebrow:"Markdown table formatter",heroTitle:"Clean up markdown tables locally",heroSubtitle:"Paste a rough markdown table and get a cleaner version for docs, READMEs, and launch notes.",privacyNote:"Table formatting happens locally with no upload."},{key:"markdown-link-checker",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",heroEyebrow:"Markdown link checker",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Find empty, localhost, JavaScript, and suspicious links locally before a README or docs page goes live.",privacyNote:"Link checks run locally against the pasted markdown."},{key:"browser-notepad",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",heroEyebrow:"Browser notepad",heroTitle:"Write quick notes without a sign-in",heroSubtitle:"Capture rough thoughts locally, then move the notes worth keeping into MindCanvas.",privacyNote:"Notes are stored locally in this browser unless you copy them elsewhere."},{key:"clipboard-board",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",heroEyebrow:"Local clipboard board",heroTitle:"Collect snippets into a small local board",heroSubtitle:"Paste short ideas, snippets, and fragments into one local surface before promoting the useful set to MindCanvas.",privacyNote:"Clipboard notes stay local to this browser session."}];function _(e){const t=e.toLowerCase().replace(/^www\./,"");return ie.find(a=>a.hostnames.some(n=>n.toLowerCase()===t))}const le={enabled:!1,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:"",heroEyebrow:"Free local tool",heroTitle:"",heroSubtitle:"",primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexecution.pages.dev/mindcanvas",secondaryCtaText:"",secondaryCtaHref:"",publicUrl:"",privacyNote:"Runs locally in your browser. No login. No database storage."},ce={enableAgentWorkspace:!0,enableCodeWorkspace:!0,enablePlanWorkspace:!0,enableCompanyCore:!0,enableExecutionTest:!0,enableTemplateStudio:!0,enableProjectPopup:!0,enablePromptDebugger:!0,enablePointBadge:!0,enableResetData:!0},k={variantKey:"platform",slug:"mindexec",brandName:"MindExec",productName:"MindCanvas",appTitle:"MindExec",workspaceNounSingular:"canvas",workspaceNounPlural:"canvases",signInTitle:"Welcome Back",signUpTitle:"Create Account",signInSubtitle:"Sign in to access your MindCanvas workspace.",signUpSubtitle:"Sign up to start organizing your ideas on a visual canvas.",primaryCheckoutProvider:"dodo",runtimeHost:"",canonicalHost:"mindexecution.pages.dev",features:ce,marketingTool:le};function D(e){const t=S(e),a=_(t);return a?pe(t,a):{...k,runtimeHost:t,canonicalHost:k.canonicalHost,features:{...k.features},marketingTool:{...k.marketingTool}}}function de(e){return e.marketingTool.enabled?M(e.marketingTool.homeRoute):"/"}function U(e){return e.marketingTool.enabled&&e.marketingTool.toolKey?`/tools/${e.marketingTool.toolKey}`:de(e)}function ue(e,t){const a=S(e.canonicalHost||e.runtimeHost);return a?`https://${a}${M(t)}`:""}function O(e,t){if(e.marketingTool.enabled&&!e.marketingTool.allowMindCanvasRoute&&(t==="/mindcanvas"||t==="/mindmap"))return!1;switch(t){case"/agent":return e.features.enableAgentWorkspace;case"/code":return e.features.enableCodeWorkspace;case"/planmaster":case"/planagent":return e.features.enablePlanWorkspace;case"/company-core":return e.features.enableCompanyCore;case"/execution-mode":return e.features.enableExecutionTest;default:return!0}}function me(e,t){const a=O(e,t),n=U(e),o=a?t:n;return{route:t,enabled:a,fallbackRoute:n,canonicalUrl:ue(e,o),title:he(e,o),description:ge(e,o)}}function S(e){const t=String(e??"").trim();if(!t)return"";try{return new URL(t).hostname.trim().toLowerCase().replace(/^www\./,"")}catch{return t.trim().replace(/^https?:\/\//i,"").replace(/^www\./,"").replace(/\/+$/,"").toLowerCase()}}function M(e){if(!e||!String(e).trim())return"/";let t=String(e).trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,"")),t||"/"}function pe(e,t){const a=S(t.liveUrl)||e;return{...k,variantKey:"mini-tool",slug:t.key,brandName:t.title,productName:t.title,appTitle:`${t.title} - Free local browser tool`,runtimeHost:e,canonicalHost:a,features:{...k.features,enableAgentWorkspace:!1,enableCodeWorkspace:!1,enablePlanWorkspace:!1,enableCompanyCore:!1,enableExecutionTest:!1,enableTemplateStudio:!1,enableProjectPopup:!1,enablePromptDebugger:!1,enablePointBadge:!1,enableResetData:!1},marketingTool:{...k.marketingTool,enabled:!0,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:t.key,heroEyebrow:t.heroEyebrow,heroTitle:t.heroTitle,heroSubtitle:t.heroSubtitle,primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexecution.pages.dev/mindcanvas",secondaryCtaText:"More free tools",secondaryCtaHref:"https://mindexecution.pages.dev/tools",publicUrl:t.liveUrl,privacyNote:t.privacyNote}}}function he(e,t){if(e.marketingTool.enabled&&t.startsWith("/tools/"))return e.appTitle;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas | MindExec";case"/planmaster":case"/planagent":return"PlanMaster | MindExec";case"/pricing":return"MindExec Pricing";case"/login":return e.signInTitle;case"/forgot-password":return"Reset your MindExec password";case"/reset-password":return"Set a new MindExec password";case"/tools":return"Free Browser Tools | MindExec";case"/youtube":return"YouTube Capture | MindExec";case"/code":return"CodeMaster | MindExec";case"/agent":return"Agent Workspace | MindExec";case"/execution-mode":return"Execution Mode | MindExec";case"/company-core":return"Company Core | MindExec";case"/admin/dashboard":return"Admin Dashboard | MindExec";case"/not-found":return"Content not found | MindExec";case"/":default:return e.appTitle}}function ge(e,t){if(e.marketingTool.enabled)return e.marketingTool.heroSubtitle||e.marketingTool.privacyNote;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas keeps notes, assets, AI tasks, and execution evidence together on a local-first visual board.";case"/planmaster":case"/planagent":return"PlanMaster turns goals into practical plans, stages, and execution checklists.";case"/pricing":return"MindExec pricing for free local tools and paid MindCanvas project workflows.";case"/tools":return"Free local browser tools that feed larger MindExec and MindCanvas workflows.";case"/code":case"/agent":return"CodeMaster previews code workflows and adapter-gated agent execution for local projects.";case"/execution-mode":return"Execution Mode tests deterministic browser-local Concept IR before live adapters are connected.";case"/company-core":return"Company Core organizes SaaS blueprint, growth, approval, and publishing decisions.";default:return"MindExec is an AI execution canvas for solo builders, researchers, developers, and creators."}}const fe=i.lazy(()=>g(async()=>{const{MindCanvas:e}=await import("./MindCanvas-Bkim_C6S.js");return{MindCanvas:e}},__vite__mapDeps([2,3,4,5,1,6,7,8,0,9,10,11])).then(({MindCanvas:e})=>({default:e}))),ve=i.lazy(()=>g(async()=>{const{PlanMasterPage:e}=await import("./PlanMasterPage-DaAsHNfZ.js");return{PlanMasterPage:e}},__vite__mapDeps([12,3,4,5,1,6,7,13])).then(({PlanMasterPage:e})=>({default:e}))),be=i.lazy(()=>g(async()=>{const{PricingPage:e}=await import("./PricingPage-B05hi-Bn.js");return{PricingPage:e}},__vite__mapDeps([14,3,15,1,6,16,17,0,18])).then(({PricingPage:e})=>({default:e}))),ye=i.lazy(()=>g(async()=>{const{LoginPage:e}=await import("./AuthPages-BfKcKt4q.js");return{LoginPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({LoginPage:e})=>({default:e}))),we=i.lazy(()=>g(async()=>{const{ForgotPasswordPage:e}=await import("./AuthPages-BfKcKt4q.js");return{ForgotPasswordPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({ForgotPasswordPage:e})=>({default:e}))),ke=i.lazy(()=>g(async()=>{const{ResetPasswordPage:e}=await import("./AuthPages-BfKcKt4q.js");return{ResetPasswordPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({ResetPasswordPage:e})=>({default:e}))),Pe=i.lazy(()=>g(async()=>{const{ToolsDirectoryPage:e}=await import("./ToolPages-CrCY19Ki.js");return{ToolsDirectoryPage:e}},__vite__mapDeps([21,3,22,5,1,6,9,23])).then(({ToolsDirectoryPage:e})=>({default:e}))),xe=i.lazy(()=>g(async()=>{const{MarketingToolPage:e}=await import("./ToolPages-CrCY19Ki.js");return{MarketingToolPage:e}},__vite__mapDeps([21,3,22,5,1,6,9,23])).then(({MarketingToolPage:e})=>({default:e}))),Ee=i.lazy(()=>g(async()=>{const{YouTubeSearchPage:e}=await import("./YouTubeSearchPage-hpw8680A.js");return{YouTubeSearchPage:e}},__vite__mapDeps([24,3,5,1,6,9,25])).then(({YouTubeSearchPage:e})=>({default:e}))),Ce=i.lazy(()=>g(async()=>{const{CompanyCorePage:e}=await import("./CompanyCorePage-Ce6czxtW.js");return{CompanyCorePage:e}},__vite__mapDeps([26,3,5,1,6,27])).then(({CompanyCorePage:e})=>({default:e}))),Te=i.lazy(()=>g(async()=>{const{AdminDashboardPage:e}=await import("./AdminDashboardPage-pAvr0347.js");return{AdminDashboardPage:e}},__vite__mapDeps([28,3,0,1,6,29])).then(({AdminDashboardPage:e})=>({default:e}))),_e=i.lazy(()=>g(async()=>{const{CodePage:e}=await import("./CodePage-B2jfR-4_.js");return{CodePage:e}},__vite__mapDeps([30,3,5,1,6,10,7,31,32])).then(({CodePage:e})=>({default:e}))),Se=i.lazy(()=>g(async()=>{const{ExecutionModePage:e}=await import("./ExecutionModePage-DU5Sb0xN.js");return{ExecutionModePage:e}},__vite__mapDeps([33,3,5,1,6,10,7,34])).then(({ExecutionModePage:e})=>({default:e}))),Me=i.lazy(()=>g(async()=>{const{MarketingHome:e}=await import("./MarketingHome-Cg_3ZuaT.js");return{MarketingHome:e}},__vite__mapDeps([35,3,15,1,6,16,22,36])).then(({MarketingHome:e})=>({default:e}))),Re=i.lazy(()=>g(async()=>{const{AppSidebar:e}=await import("./AppSidebar-CBDe_h8f.js");return{AppSidebar:e}},__vite__mapDeps([37,3,6])).then(({AppSidebar:e})=>({default:e}))),Ae=new Set(["/","/mindcanvas","/planmaster","/tools","/youtube","/code","/pricing","/company-core","/login"]);function Le(e,t=window.location.hostname){const a=_(t);if(a&&(e==="/"||e==="/tools"))return`/tools/${a.key}`;if(e==="/agent")return"/agent";if(e==="/forgot-password")return"/forgot-password";if(e==="/reset-password")return"/reset-password";let n="/not-found";return e==="/"?n="/":e==="/mindmap"?n="/mindmap":e==="/planagent"?n="/planagent":e==="/execution-mode"?n="/execution-mode":e==="/not-found"?n="/not-found":e.startsWith("/tools/")&&(n=e),Ae.has(e)?n=e:e==="/admin/dashboard"&&(n="/admin/dashboard"),n}function Ne(e,t=window.location.hostname){const a=D(t),n=Le(e,t);return O(a,n)?n:U(a)}function H(e,t=window.location.hostname){const a=Ne(e,t);return{route:a,stalePath:a==="/not-found"&&e!=="/not-found"?e:""}}function T(e){const t=window.location.pathname,{route:a,stalePath:n}=H(t,window.location.hostname);return a==="/not-found"&&t!=="/not-found"?(window.history.replaceState({stalePath:t},"","/not-found"),v.emit("route.notFound.normalize",{source:e,from:n||t,to:"/not-found"})):M(t)!==a&&!(t==="/"&&a.startsWith("/tools/"))&&!(t==="/tools"&&a.startsWith("/tools/"))&&(window.history.replaceState({stalePath:t},"",a),v.emit("productProfile.route.fallback",{source:e,from:t,to:a})),a}function x(e,t,a){if(a===void 0){delete e.dataset[t];return}e.dataset[t]=a}function je(){const e=i.useMemo(()=>D(window.location.hostname),[]),t=i.useMemo(()=>_(window.location.hostname),[]),[a,n]=i.useState(()=>H(window.location.pathname,window.location.hostname).route),o=a==="/mindcanvas"||a==="/mindmap",[d,u]=i.useState(()=>o),s=i.useMemo(()=>me(e,a),[e,a]),[h,m]=i.useState([]);i.useEffect(()=>{n(T("initial"));const l=()=>n(T("popstate"));return window.addEventListener("popstate",l),()=>window.removeEventListener("popstate",l)},[]);const c=i.useCallback(l=>{window.history.pushState({},"",l),n(l)},[]),f=i.useCallback(l=>{n(T(l))},[]);i.useEffect(()=>{!o||d||(u(!0),v.emit("route.keepAlive.mindcanvas",{route:a,mounted:!0,source:"route-activate"}))},[o,d,a]);const p=a==="/planmaster"||a==="/planagent",b=a.startsWith("/tools/")?a.slice(7):null,w=e.marketingTool.enabled&&e.marketingTool.hideAppChrome,P=d||o;return i.useEffect(()=>{const l=document.documentElement,y={productProfile:l.dataset.productProfile,productVariant:l.dataset.productVariant,canonicalHost:l.dataset.canonicalHost,routeCanonical:l.dataset.routeCanonical,routeEnabled:l.dataset.routeEnabled,marketingToolKey:l.dataset.marketingToolKey};return l.dataset.productProfile=e.slug,l.dataset.productVariant=e.variantKey,l.dataset.canonicalHost=e.canonicalHost,l.dataset.routeCanonical=s.canonicalUrl,l.dataset.routeEnabled=s.enabled?"true":"false",e.marketingTool.toolKey?l.dataset.marketingToolKey=e.marketingTool.toolKey:delete l.dataset.marketingToolKey,v.emit("productProfile.route.applied",{route:a,variantKey:e.variantKey,slug:e.slug,canonicalHost:e.canonicalHost,canonicalUrl:s.canonicalUrl,routeEnabled:s.enabled,fallbackRoute:s.fallbackRoute,marketingToolKey:e.marketingTool.toolKey}),()=>{x(l,"productProfile",y.productProfile),x(l,"productVariant",y.productVariant),x(l,"canonicalHost",y.canonicalHost),x(l,"routeCanonical",y.routeCanonical),x(l,"routeEnabled",y.routeEnabled),x(l,"marketingToolKey",y.marketingToolKey)}},[e.canonicalHost,e.marketingTool.toolKey,e.slug,e.variantKey,a,s.canonicalUrl,s.enabled,s.fallbackRoute]),r.jsxs("div",{className:`${o?"app app--canvas":"app"} ${w?"app--mini-tool":""}`,"data-product-profile":e.slug,"data-product-variant":e.variantKey,"data-canonical-host":e.canonicalHost,"data-route-enabled":s.enabled?"true":"false","data-route-canonical":s.canonicalUrl,"data-marketing-tool-key":e.marketingTool.toolKey||void 0,children:[!w&&r.jsx(i.Suspense,{fallback:r.jsx(Ue,{}),children:r.jsx(Re,{route:a,navigate:c,canvasActions:o?h:[]})}),r.jsxs("main",{className:"app-main",children:[r.jsx(te,{onRouteReplaced:f}),r.jsx(se,{route:a}),r.jsx(ae,{resetKey:a,onNavigateHome:()=>c("/mindcanvas"),children:r.jsxs(i.Suspense,{fallback:r.jsx(De,{route:a}),children:[a==="/"&&r.jsx(Me,{navigate:c}),P&&r.jsx("section",{className:"route-keepalive route-keepalive--mindcanvas","data-testid":"mindcanvas-keepalive-host","data-route-keepalive":"mindcanvas","data-route-active":o?"true":"false",hidden:!o,"aria-hidden":o?void 0:"true",children:r.jsx(fe,{navigate:c,onSidebarActionsChange:m})}),p&&r.jsx(ve,{navigate:c}),a==="/pricing"&&r.jsx(be,{navigate:c}),a==="/login"&&r.jsx(ye,{navigate:c}),a==="/forgot-password"&&r.jsx(we,{navigate:c}),a==="/reset-password"&&r.jsx(ke,{navigate:c}),a==="/tools"&&r.jsx(Pe,{navigate:c}),b&&r.jsx(xe,{toolKey:b,navigate:c,miniHost:(t==null?void 0:t.key)===b}),a==="/youtube"&&r.jsx(Ee,{navigate:c}),(a==="/code"||a==="/agent")&&r.jsx(_e,{}),a==="/execution-mode"&&r.jsx(Se,{}),a==="/not-found"&&r.jsx(Oe,{navigate:c}),a==="/company-core"&&r.jsx(Ce,{}),a==="/admin/dashboard"&&r.jsx(Te,{})]})})]})]})}function De({route:e}){return i.useEffect(()=>{v.emit("route.lazyFallback.rendered",{route:e})},[e]),r.jsxs("div",{className:"route-lazy-fallback","data-testid":"route-lazy-fallback","data-route":e,children:[r.jsx("span",{className:"route-lazy-spinner","aria-hidden":"true"}),r.jsx("span",{children:"Loading MindExec surface..."})]})}function Ue(){return r.jsxs("aside",{className:"app-sidebar app-sidebar--loading","aria-label":"MindExec navigation loading",children:[r.jsx("div",{className:"sidebar-brand sidebar-placeholder"}),r.jsx("div",{className:"sidebar-divider"}),r.jsx("nav",{className:"sidebar-nav",children:Array.from({length:8},(e,t)=>r.jsx("div",{className:"sidebar-icon sidebar-placeholder"},t))}),r.jsx("div",{className:"sidebar-spacer"}),r.jsx("div",{className:"sidebar-icon sidebar-placeholder"})]})}function Oe({navigate:e}){return r.jsx("div",{className:"page not-found-page",children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Not Found"}),r.jsx("h1",{children:"Content not found."}),r.jsx("p",{children:"The route exists as a React shell so stale Blazor links land cleanly."}),r.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/"),children:"Go home"})]})})}z();$.createRoot(document.getElementById("root")).render(r.jsx(je,{}));export{N as A,X as c,$e as g};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/supabaseAuthAdapter-C3z334Qw.js","assets/app-runtime-xD2Z3NdN.js","assets/MindCanvas-CvCmDE8i.js","assets/vendor-react-BXzpOyCS.js","assets/storage-BF01PMeG.js","assets/canvas-runtime-DyQNXrXQ.js","assets/vendor-icons-Ckw7YAP6.js","assets/runtimeSettingsPersistenceProjection-BoNWmYjU.js","assets/vendor-msgpack-BE8aAsr3.js","assets/toolHandoff-D5e5f7t5.js","assets/executionModeSettings-NJqurj-o.js","assets/MindCanvas-CAd5o-DG.css","assets/PlanMasterPage-BNRDnDs3.js","assets/PlanMasterPage-CJ36rep-.css","assets/PricingPage-BscC5UNq.js","assets/LaunchLeadCapture-C3SfsELA.js","assets/LaunchLeadCapture-CiRI1shz.css","assets/pricingCheckoutShell-O-DnwmbU.js","assets/PricingPage-Cg_0i_ZR.css","assets/AuthPages-CqMUnpl3.js","assets/AuthPages-DFGWKWuB.css","assets/ToolPages-2-8bifXT.js","assets/marketingTools-DN_rnHeB.js","assets/ToolPages-DIB187pZ.css","assets/YouTubeSearchPage-DM1skiy0.js","assets/YouTubeSearchPage-IPPa_BIH.css","assets/CompanyCorePage-V37js22g.js","assets/CompanyCorePage-ChBnq1ve.css","assets/AdminDashboardPage-pAvr0347.js","assets/AdminDashboardPage-B2vz2Px9.css","assets/CodePage-zMi_UJaE.js","assets/code-agent-runtime-B5PPZd1t.js","assets/CodePage-Bncc352E.css","assets/ExecutionModePage-WoYwTq2j.js","assets/ExecutionModePage-TLuld9l3.css","assets/MarketingHome-Cg_3ZuaT.js","assets/MarketingHome-DPzaYzA_.css","assets/AppSidebar-CBDe_h8f.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
var I=Object.defineProperty;var K=(e,t,a)=>t in e?I(e,t,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[t]=a;var E=(e,t,a)=>K(e,typeof t!="symbol"?t+"":t,a);import{r as i,j as r,R as $}from"./vendor-react-BXzpOyCS.js";import{R as v,i as z}from"./app-runtime-xD2Z3NdN.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const d of o)if(d.type==="childList")for(const u of d.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&n(u)}).observe(document,{childList:!0,subtree:!0});function a(o){const d={};return o.integrity&&(d.integrity=o.integrity),o.referrerPolicy&&(d.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?d.credentials="include":o.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function n(o){if(o.ep)return;o.ep=!0;const d=a(o);fetch(o.href,d)}})();const F="modulepreload",B=function(e){return"/"+e},A={},g=function(t,a,n){let o=Promise.resolve();if(a&&a.length>0){let u=function(m){return Promise.all(m.map(c=>Promise.resolve(c).then(f=>({status:"fulfilled",value:f}),f=>({status:"rejected",reason:f}))))};document.getElementsByTagName("link");const s=document.querySelector("meta[property=csp-nonce]"),h=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));o=u(a.map(m=>{if(m=B(m),m in A)return;A[m]=!0;const c=m.endsWith(".css"),f=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${m}"]${f}`))return;const p=document.createElement("link");if(p.rel=c?"stylesheet":F,c||(p.as="script"),p.crossOrigin="",p.href=m,h&&p.setAttribute("nonce",h),document.head.appendChild(p),c)return new Promise((b,w)=>{p.addEventListener("load",b),p.addEventListener("error",()=>w(new Error(`Unable to preload CSS for ${m}`)))})}))}function d(u){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=u,window.dispatchEvent(s),!s.defaultPrevented)throw u}return o.then(u=>{for(const s of u||[])s.status==="rejected"&&d(s.reason);return t().catch(d)})},N="mindexec-react-auth-shell-v1",V="supabase-callback@mindexec.local";function W(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.userId=="string"&&typeof t.email=="string"&&t.provider==="Google"&&typeof t.signedInAt=="string")}function q(e){const t=e.toLowerCase();return t.includes("access_token=")||t.includes("refresh_token=")||t.includes("provider_token=")||t.includes("provider_refresh_token=")||t.includes("expires_in=")||t.includes("token_type=")||t.includes("type=recovery")||t.includes("type=invite")||t.includes("error=")||t.includes("error_description=")||t.includes("code=")}function G(e){const t=e.split("=",2)[0].toLowerCase();return t==="access_token"||t==="refresh_token"||t==="provider_token"||t==="provider_refresh_token"||t==="expires_in"||t==="expires_at"||t==="token_type"||t==="type"||t==="error"||t==="error_code"||t==="error_description"||t==="code"}function L(e){const t=e.trim().replace(/^[?#]/,"");return t?t.split("&").filter(Boolean).filter(n=>!G(n)).join("&"):""}function Y(e){const t=(e||"").trim();if(!t||!t.startsWith("/")||t.startsWith("//")||t.includes("\\"))return"";try{const a=new URL(t,window.location.origin);return a.origin!==window.location.origin?"":`${a.pathname}${a.search}${a.hash}`}catch{return""}}function J(e){const t=new URL(e,window.location.origin),a=`${t.search}&${t.hash}`,n=q(a);if(!n)return{hasAuthPayload:!1,cleanedPath:`${t.pathname}${t.search}${t.hash}`,shouldCreateLocalShell:!1,shouldRouteToMindCanvas:!1,hasError:!1,hasRecovery:!1,hasInvite:!1,hasCode:!1,hasToken:!1};const o=L(t.search),d=L(t.hash),u=/(?:^|[&#?])error=/i.test(a)||/(?:^|[&#?])error_description=/i.test(a),s=/(?:^|[&#?])type=recovery(?:&|$)/i.test(a),h=/(?:^|[&#?])type=invite(?:&|$)/i.test(a),m=/(?:^|[&#?])code=/i.test(a),c=/(?:^|[&#?])(?:access_token|refresh_token)=/i.test(a),f=Y(t.searchParams.get("next"));let p=`${t.pathname}${o?`?${o}`:""}${d?`#${d}`:""}`;const b=t.pathname==="/"||t.pathname==="",w=t.pathname==="/login",P=!u&&!s&&!h&&(m||c),l=P&&!f&&(b||w);if(f&&P)p=f;else if(l){const y=new URLSearchParams(o);y.delete("next");const R=y.toString();p=`/mindcanvas${R?`?${R}`:""}`}return{hasAuthPayload:n,cleanedPath:p,shouldCreateLocalShell:!u&&!s&&!h&&(m||c),shouldRouteToMindCanvas:l,hasError:u,hasRecovery:s,hasInvite:h,hasCode:m,hasToken:c}}function Q(e){return`local-google-${e.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-")||"user"}`}function $e(){try{const e=window.localStorage.getItem(N);if(!e)return null;const t=JSON.parse(e);return W(t)?t:null}catch{return null}}function X(e="builder@mindexec.local",t="manual-google-shell"){const a=e.trim().toLowerCase()||"builder@mindexec.local",n={userId:typeof crypto<"u"&&"randomUUID"in crypto?`local-google-${crypto.randomUUID()}`:Q(a),email:a,provider:"Google",signedInAt:new Date().toISOString(),source:t};return j(n)}function j(e){try{window.localStorage.setItem(N,JSON.stringify(e))}catch{}return v.emit(e.source==="supabase-provider-session"?"auth.supabase.sessionShell":"auth.google.localShell",{provider:e.provider,hasEmail:!!e.email,source:e.source}),e}const Z={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};function ee(){return Z??{}}function te({onRouteReplaced:e}){const t=i.useRef(!1);return i.useEffect(()=>{if(t.current)return;t.current=!0,(async()=>{const n=window.location.href,o=J(n);if(!o.hasAuthPayload)return;const d=ee();let u={mode:"not-checked",canAttempt:!1},s=!1,h="",m=!1,c=null;if(!o.hasError&&!o.hasRecovery&&!o.hasInvite&&(o.hasCode||o.hasToken)){const{completeSupabaseAuthCallback:p,resolveSupabaseAuthAdapterState:b}=await g(async()=>{const{completeSupabaseAuthCallback:w,resolveSupabaseAuthAdapterState:P}=await import("./supabaseAuthAdapter-C3z334Qw.js").then(l=>l.c);return{completeSupabaseAuthCallback:w,resolveSupabaseAuthAdapterState:P}},__vite__mapDeps([0,1]));u=b(d),m=u.canAttempt,c=p}if(m&&c)try{const p=await c(d,n);p.session&&(j({...p.session,source:"supabase-provider-session"}),s=!0)}catch(p){h=p instanceof Error?p.message:String(p)}else o.shouldCreateLocalShell&&X(V,"supabase-callback-shell");v.emit(o.hasError||h?"auth.callback.error":"auth.callback.cleaned",{cleanedPath:o.cleanedPath,shouldCreateLocalShell:!m&&o.shouldCreateLocalShell,shouldRouteToMindCanvas:o.shouldRouteToMindCanvas,hasCode:o.hasCode,hasToken:o.hasToken,hasRecovery:o.hasRecovery,hasInvite:o.hasInvite,providerMode:u.mode,providerAttempted:m,providerSessionCreated:s,providerError:h});const f=`${window.location.pathname}${window.location.search}${window.location.hash}`;o.cleanedPath!==f&&(window.history.replaceState({authCallbackCleaned:!0},"",o.cleanedPath),e("auth-callback-bootstrap"))})()},[e]),null}class ae extends i.Component{constructor(){super(...arguments);E(this,"state",{error:null});E(this,"retry",()=>{this.setState({error:null}),v.emit("runtime.errorBoundary.reset",{resetKey:this.props.resetKey,reason:"manual-retry"})})}static getDerivedStateFromError(a){return{error:a}}componentDidCatch(a,n){const o=(a==null?void 0:a.message)||"Unknown runtime error.";v.emit("runtime.errorBoundary.caught",{resetKey:this.props.resetKey,message:o,stack:(a==null?void 0:a.stack)||"",componentStack:n.componentStack}),console.error("[LoggingErrorBoundary] Unhandled React error.",a,n)}componentDidUpdate(a){a.resetKey!==this.props.resetKey&&this.state.error&&(this.setState({error:null}),v.emit("runtime.errorBoundary.reset",{from:a.resetKey,to:this.props.resetKey,reason:"route-change"}))}render(){const{error:a}=this.state;return a?r.jsx("div",{className:"page runtime-error-page","data-testid":"runtime-error-boundary","data-error-boundary-reset-key":this.props.resetKey,children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Runtime Guard"}),r.jsx("h1",{children:"Something broke inside this React surface."}),r.jsx("p",{children:"The error was captured locally so the whole app shell can stay recoverable."}),r.jsxs("div",{className:"runtime-error-message","data-testid":"runtime-error-boundary-message",children:[r.jsx("span",{className:"runtime-error-symbol","aria-hidden":"true",children:"!"}),r.jsx("span",{children:a.message||"Unknown runtime error."})]}),r.jsxs("div",{className:"action-row",children:[r.jsx("button",{className:"btn btn-primary",type:"button",onClick:this.retry,"data-testid":"runtime-error-boundary-retry",children:"Retry"}),this.props.onNavigateHome&&r.jsx("button",{className:"btn btn-secondary",type:"button",onClick:this.props.onNavigateHome,"data-testid":"runtime-error-boundary-home",children:"MindCanvas"})]})]})}):this.props.children}}const oe="main",re="h1",C="data-route-focus-target",ne=30;function se({route:e,rootSelector:t=oe,selector:a=re}){return i.useEffect(()=>{let n=!1,o=0;const d=u=>{if(n)return;const s=document.querySelector(t),h=(s==null?void 0:s.querySelector(a))??document.querySelector(a);for(const m of document.querySelectorAll(`[${C}="true"]`))m.removeAttribute(C);if(!h){if(u<ne){o=window.requestAnimationFrame(()=>d(u+1));return}v.emit("route.focusOnNavigate.skipped",{route:e,selector:a,reason:"missing-target",attempts:u});return}h.hasAttribute("tabindex")||h.setAttribute("tabindex","-1"),h.setAttribute(C,"true"),h.focus({preventScroll:!1}),v.emit("route.focusOnNavigate.applied",{route:e,selector:a,tagName:h.tagName.toLowerCase(),text:(h.textContent||"").trim().slice(0,90),attempts:u})};return o=window.requestAnimationFrame(()=>d(1)),()=>{n=!0,window.cancelAnimationFrame(o)}},[e,t,a]),null}const ie=[{key:"markdown-viewer",liveUrl:"https://mdview-die.pages.dev",hostnames:["mdview.pages.dev","mdview-die.pages.dev","mdview.mindexec.io","markdown-viewer.pages.dev","markdown-viewer.mindexec.io"],title:"Free Online Markdown Viewer",heroEyebrow:"Free online markdown viewer",heroTitle:"Preview Markdown instantly in your browser",heroSubtitle:"Paste or open a markdown file, review the rendered result, and move bigger writing work into MindCanvas when it needs structure.",privacyNote:"Runs locally in your browser. No upload required."},{key:"bulk-markdown-viewer",liveUrl:"https://bulkmd.pages.dev",hostnames:["bulkmd.pages.dev","bulkmd.mindexec.io","bulk-markdown-viewer.pages.dev","bulk-markdown-viewer.mindexec.io"],title:"Bulk Markdown Viewer",heroEyebrow:"Bulk markdown preview",heroTitle:"Review multiple markdown snippets at once",heroSubtitle:"Paste a stack of markdown entries and scan them locally before turning the useful pieces into a MindCanvas board.",privacyNote:"Local browser-only preview. No account and no upload step."},{key:"readme-previewer",liveUrl:"https://readme-1o4.pages.dev",hostnames:["readme.pages.dev","readme-1o4.pages.dev","readme-previewer.pages.dev","readme.mindexec.io","readme-previewer.mindexec.io"],title:"README Previewer",heroEyebrow:"README previewer",heroTitle:"Preview README markdown before you publish",heroSubtitle:"Check headings, tables, links, and launch notes quickly, then keep bigger documentation work organized in MindCanvas.",privacyNote:"Local preview for README text. No repository access required."},{key:"markdown-to-html",liveUrl:"https://md2html-4r7.pages.dev",hostnames:["md2html.pages.dev","md2html-4r7.pages.dev","md2html.mindexec.io","markdown-to-html.pages.dev","markdown-to-html.mindexec.io"],title:"Markdown to HTML Preview",heroEyebrow:"Markdown to HTML",heroTitle:"Turn markdown into clean HTML preview",heroSubtitle:"Render markdown locally, copy the HTML shape, and move reusable publishing notes into MindCanvas.",privacyNote:"Conversion runs in-browser and keeps your text local."},{key:"markdown-outline",liveUrl:"https://mdoutln.pages.dev",hostnames:["mdoutln.pages.dev","mdoutln.mindexec.io","markdown-outline.pages.dev","markdown-outline.mindexec.io"],title:"Markdown Outline Generator",heroEyebrow:"Markdown outline generator",heroTitle:"Extract a document outline from markdown",heroSubtitle:"Scan headings, section depth, and missing structure before your document becomes a larger project.",privacyNote:"Outline extraction runs locally in this browser."},{key:"markdown-table-formatter",liveUrl:"https://mdtable-3ik.pages.dev",hostnames:["mdtable.pages.dev","mdtable-3ik.pages.dev","mdtable.mindexec.io","markdown-table-formatter.pages.dev","markdown-table-formatter.mindexec.io"],title:"Markdown Table Formatter",heroEyebrow:"Markdown table formatter",heroTitle:"Clean up markdown tables locally",heroSubtitle:"Paste a rough markdown table and get a cleaner version for docs, READMEs, and launch notes.",privacyNote:"Table formatting happens locally with no upload."},{key:"markdown-link-checker",liveUrl:"https://markdown-link-checker.pages.dev",hostnames:["mdcheck.pages.dev","markdown-link-checker.pages.dev","mdcheck.mindexec.io","markdown-link-checker.mindexec.io"],title:"Markdown Link Checker",heroEyebrow:"Markdown link checker",heroTitle:"Catch risky markdown links before publishing",heroSubtitle:"Find empty, localhost, JavaScript, and suspicious links locally before a README or docs page goes live.",privacyNote:"Link checks run locally against the pasted markdown."},{key:"browser-notepad",liveUrl:"https://quickpad.pages.dev",hostnames:["quickpad.pages.dev","quickpad.mindexec.io","browser-notepad.pages.dev","browser-notepad.mindexec.io"],title:"Browser Notepad",heroEyebrow:"Browser notepad",heroTitle:"Write quick notes without a sign-in",heroSubtitle:"Capture rough thoughts locally, then move the notes worth keeping into MindCanvas.",privacyNote:"Notes are stored locally in this browser unless you copy them elsewhere."},{key:"clipboard-board",liveUrl:"https://clipbrd.pages.dev",hostnames:["clipbrd.pages.dev","clipbrd.mindexec.io","clipboard-board.pages.dev","clipboard-board.mindexec.io"],title:"Local Clipboard Board",heroEyebrow:"Local clipboard board",heroTitle:"Collect snippets into a small local board",heroSubtitle:"Paste short ideas, snippets, and fragments into one local surface before promoting the useful set to MindCanvas.",privacyNote:"Clipboard notes stay local to this browser session."}];function _(e){const t=e.toLowerCase().replace(/^www\./,"");return ie.find(a=>a.hostnames.some(n=>n.toLowerCase()===t))}const le={enabled:!1,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:"",heroEyebrow:"Free local tool",heroTitle:"",heroSubtitle:"",primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexecution.pages.dev/mindcanvas",secondaryCtaText:"",secondaryCtaHref:"",publicUrl:"",privacyNote:"Runs locally in your browser. No login. No database storage."},ce={enableAgentWorkspace:!0,enableCodeWorkspace:!0,enablePlanWorkspace:!0,enableCompanyCore:!0,enableExecutionTest:!0,enableTemplateStudio:!0,enableProjectPopup:!0,enablePromptDebugger:!0,enablePointBadge:!0,enableResetData:!0},k={variantKey:"platform",slug:"mindexec",brandName:"MindExec",productName:"MindCanvas",appTitle:"MindExec",workspaceNounSingular:"canvas",workspaceNounPlural:"canvases",signInTitle:"Welcome Back",signUpTitle:"Create Account",signInSubtitle:"Sign in to access your MindCanvas workspace.",signUpSubtitle:"Sign up to start organizing your ideas on a visual canvas.",primaryCheckoutProvider:"dodo",runtimeHost:"",canonicalHost:"mindexecution.pages.dev",features:ce,marketingTool:le};function D(e){const t=S(e),a=_(t);return a?pe(t,a):{...k,runtimeHost:t,canonicalHost:k.canonicalHost,features:{...k.features},marketingTool:{...k.marketingTool}}}function de(e){return e.marketingTool.enabled?M(e.marketingTool.homeRoute):"/"}function U(e){return e.marketingTool.enabled&&e.marketingTool.toolKey?`/tools/${e.marketingTool.toolKey}`:de(e)}function ue(e,t){const a=S(e.canonicalHost||e.runtimeHost);return a?`https://${a}${M(t)}`:""}function O(e,t){if(e.marketingTool.enabled&&!e.marketingTool.allowMindCanvasRoute&&(t==="/mindcanvas"||t==="/mindmap"))return!1;switch(t){case"/agent":return e.features.enableAgentWorkspace;case"/code":return e.features.enableCodeWorkspace;case"/planmaster":case"/planagent":return e.features.enablePlanWorkspace;case"/company-core":return e.features.enableCompanyCore;case"/execution-mode":return e.features.enableExecutionTest;default:return!0}}function me(e,t){const a=O(e,t),n=U(e),o=a?t:n;return{route:t,enabled:a,fallbackRoute:n,canonicalUrl:ue(e,o),title:he(e,o),description:ge(e,o)}}function S(e){const t=String(e??"").trim();if(!t)return"";try{return new URL(t).hostname.trim().toLowerCase().replace(/^www\./,"")}catch{return t.trim().replace(/^https?:\/\//i,"").replace(/^www\./,"").replace(/\/+$/,"").toLowerCase()}}function M(e){if(!e||!String(e).trim())return"/";let t=String(e).trim();return t.startsWith("/")||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,"")),t||"/"}function pe(e,t){const a=S(t.liveUrl)||e;return{...k,variantKey:"mini-tool",slug:t.key,brandName:t.title,productName:t.title,appTitle:`${t.title} - Free local browser tool`,runtimeHost:e,canonicalHost:a,features:{...k.features,enableAgentWorkspace:!1,enableCodeWorkspace:!1,enablePlanWorkspace:!1,enableCompanyCore:!1,enableExecutionTest:!1,enableTemplateStudio:!1,enableProjectPopup:!1,enablePromptDebugger:!1,enablePointBadge:!1,enableResetData:!1},marketingTool:{...k.marketingTool,enabled:!0,hideAppChrome:!0,allowMindCanvasRoute:!1,homeRoute:"/",toolKey:t.key,heroEyebrow:t.heroEyebrow,heroTitle:t.heroTitle,heroSubtitle:t.heroSubtitle,primaryCtaText:"Open MindCanvas",primaryCtaHref:"https://mindexecution.pages.dev/mindcanvas",secondaryCtaText:"More free tools",secondaryCtaHref:"https://mindexecution.pages.dev/tools",publicUrl:t.liveUrl,privacyNote:t.privacyNote}}}function he(e,t){if(e.marketingTool.enabled&&t.startsWith("/tools/"))return e.appTitle;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas | MindExec";case"/planmaster":case"/planagent":return"PlanMaster | MindExec";case"/pricing":return"MindExec Pricing";case"/login":return e.signInTitle;case"/forgot-password":return"Reset your MindExec password";case"/reset-password":return"Set a new MindExec password";case"/tools":return"Free Browser Tools | MindExec";case"/youtube":return"YouTube Capture | MindExec";case"/code":return"CodeMaster | MindExec";case"/agent":return"Agent Workspace | MindExec";case"/execution-mode":return"Execution Mode | MindExec";case"/company-core":return"Company Core | MindExec";case"/admin/dashboard":return"Admin Dashboard | MindExec";case"/not-found":return"Content not found | MindExec";case"/":default:return e.appTitle}}function ge(e,t){if(e.marketingTool.enabled)return e.marketingTool.heroSubtitle||e.marketingTool.privacyNote;switch(t){case"/mindcanvas":case"/mindmap":return"MindCanvas keeps notes, assets, AI tasks, and execution evidence together on a local-first visual board.";case"/planmaster":case"/planagent":return"PlanMaster turns goals into practical plans, stages, and execution checklists.";case"/pricing":return"MindExec pricing for free local tools and paid MindCanvas project workflows.";case"/tools":return"Free local browser tools that feed larger MindExec and MindCanvas workflows.";case"/code":case"/agent":return"CodeMaster previews code workflows and adapter-gated agent execution for local projects.";case"/execution-mode":return"Execution Mode tests deterministic browser-local Concept IR before live adapters are connected.";case"/company-core":return"Company Core organizes SaaS blueprint, growth, approval, and publishing decisions.";default:return"MindExec is an AI execution canvas for solo builders, researchers, developers, and creators."}}const fe=i.lazy(()=>g(async()=>{const{MindCanvas:e}=await import("./MindCanvas-CvCmDE8i.js");return{MindCanvas:e}},__vite__mapDeps([2,3,4,5,1,6,7,8,0,9,10,11])).then(({MindCanvas:e})=>({default:e}))),ve=i.lazy(()=>g(async()=>{const{PlanMasterPage:e}=await import("./PlanMasterPage-BNRDnDs3.js");return{PlanMasterPage:e}},__vite__mapDeps([12,3,4,5,1,6,7,13])).then(({PlanMasterPage:e})=>({default:e}))),be=i.lazy(()=>g(async()=>{const{PricingPage:e}=await import("./PricingPage-BscC5UNq.js");return{PricingPage:e}},__vite__mapDeps([14,3,15,1,6,16,17,0,18])).then(({PricingPage:e})=>({default:e}))),ye=i.lazy(()=>g(async()=>{const{LoginPage:e}=await import("./AuthPages-CqMUnpl3.js");return{LoginPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({LoginPage:e})=>({default:e}))),we=i.lazy(()=>g(async()=>{const{ForgotPasswordPage:e}=await import("./AuthPages-CqMUnpl3.js");return{ForgotPasswordPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({ForgotPasswordPage:e})=>({default:e}))),ke=i.lazy(()=>g(async()=>{const{ResetPasswordPage:e}=await import("./AuthPages-CqMUnpl3.js");return{ResetPasswordPage:e}},__vite__mapDeps([19,3,17,1,0,6,20])).then(({ResetPasswordPage:e})=>({default:e}))),Pe=i.lazy(()=>g(async()=>{const{ToolsDirectoryPage:e}=await import("./ToolPages-2-8bifXT.js");return{ToolsDirectoryPage:e}},__vite__mapDeps([21,3,22,5,1,6,9,23])).then(({ToolsDirectoryPage:e})=>({default:e}))),xe=i.lazy(()=>g(async()=>{const{MarketingToolPage:e}=await import("./ToolPages-2-8bifXT.js");return{MarketingToolPage:e}},__vite__mapDeps([21,3,22,5,1,6,9,23])).then(({MarketingToolPage:e})=>({default:e}))),Ee=i.lazy(()=>g(async()=>{const{YouTubeSearchPage:e}=await import("./YouTubeSearchPage-DM1skiy0.js");return{YouTubeSearchPage:e}},__vite__mapDeps([24,3,5,1,6,9,25])).then(({YouTubeSearchPage:e})=>({default:e}))),Ce=i.lazy(()=>g(async()=>{const{CompanyCorePage:e}=await import("./CompanyCorePage-V37js22g.js");return{CompanyCorePage:e}},__vite__mapDeps([26,3,5,1,6,27])).then(({CompanyCorePage:e})=>({default:e}))),Te=i.lazy(()=>g(async()=>{const{AdminDashboardPage:e}=await import("./AdminDashboardPage-pAvr0347.js");return{AdminDashboardPage:e}},__vite__mapDeps([28,3,0,1,6,29])).then(({AdminDashboardPage:e})=>({default:e}))),_e=i.lazy(()=>g(async()=>{const{CodePage:e}=await import("./CodePage-zMi_UJaE.js");return{CodePage:e}},__vite__mapDeps([30,3,5,1,6,10,7,31,32])).then(({CodePage:e})=>({default:e}))),Se=i.lazy(()=>g(async()=>{const{ExecutionModePage:e}=await import("./ExecutionModePage-WoYwTq2j.js");return{ExecutionModePage:e}},__vite__mapDeps([33,3,5,1,6,10,7,34])).then(({ExecutionModePage:e})=>({default:e}))),Me=i.lazy(()=>g(async()=>{const{MarketingHome:e}=await import("./MarketingHome-Cg_3ZuaT.js");return{MarketingHome:e}},__vite__mapDeps([35,3,15,1,6,16,22,36])).then(({MarketingHome:e})=>({default:e}))),Re=i.lazy(()=>g(async()=>{const{AppSidebar:e}=await import("./AppSidebar-CBDe_h8f.js");return{AppSidebar:e}},__vite__mapDeps([37,3,6])).then(({AppSidebar:e})=>({default:e}))),Ae=new Set(["/","/mindcanvas","/planmaster","/tools","/youtube","/code","/pricing","/company-core","/login"]);function Le(e,t=window.location.hostname){const a=_(t);if(a&&(e==="/"||e==="/tools"))return`/tools/${a.key}`;if(e==="/agent")return"/agent";if(e==="/forgot-password")return"/forgot-password";if(e==="/reset-password")return"/reset-password";let n="/not-found";return e==="/"?n="/":e==="/mindmap"?n="/mindmap":e==="/planagent"?n="/planagent":e==="/execution-mode"?n="/execution-mode":e==="/not-found"?n="/not-found":e.startsWith("/tools/")&&(n=e),Ae.has(e)?n=e:e==="/admin/dashboard"&&(n="/admin/dashboard"),n}function Ne(e,t=window.location.hostname){const a=D(t),n=Le(e,t);return O(a,n)?n:U(a)}function H(e,t=window.location.hostname){const a=Ne(e,t);return{route:a,stalePath:a==="/not-found"&&e!=="/not-found"?e:""}}function T(e){const t=window.location.pathname,{route:a,stalePath:n}=H(t,window.location.hostname);return a==="/not-found"&&t!=="/not-found"?(window.history.replaceState({stalePath:t},"","/not-found"),v.emit("route.notFound.normalize",{source:e,from:n||t,to:"/not-found"})):M(t)!==a&&!(t==="/"&&a.startsWith("/tools/"))&&!(t==="/tools"&&a.startsWith("/tools/"))&&(window.history.replaceState({stalePath:t},"",a),v.emit("productProfile.route.fallback",{source:e,from:t,to:a})),a}function x(e,t,a){if(a===void 0){delete e.dataset[t];return}e.dataset[t]=a}function je(){const e=i.useMemo(()=>D(window.location.hostname),[]),t=i.useMemo(()=>_(window.location.hostname),[]),[a,n]=i.useState(()=>H(window.location.pathname,window.location.hostname).route),o=a==="/mindcanvas"||a==="/mindmap",[d,u]=i.useState(()=>o),s=i.useMemo(()=>me(e,a),[e,a]),[h,m]=i.useState([]);i.useEffect(()=>{n(T("initial"));const l=()=>n(T("popstate"));return window.addEventListener("popstate",l),()=>window.removeEventListener("popstate",l)},[]);const c=i.useCallback(l=>{window.history.pushState({},"",l),n(l)},[]),f=i.useCallback(l=>{n(T(l))},[]);i.useEffect(()=>{!o||d||(u(!0),v.emit("route.keepAlive.mindcanvas",{route:a,mounted:!0,source:"route-activate"}))},[o,d,a]);const p=a==="/planmaster"||a==="/planagent",b=a.startsWith("/tools/")?a.slice(7):null,w=e.marketingTool.enabled&&e.marketingTool.hideAppChrome,P=d||o;return i.useEffect(()=>{const l=document.documentElement,y={productProfile:l.dataset.productProfile,productVariant:l.dataset.productVariant,canonicalHost:l.dataset.canonicalHost,routeCanonical:l.dataset.routeCanonical,routeEnabled:l.dataset.routeEnabled,marketingToolKey:l.dataset.marketingToolKey};return l.dataset.productProfile=e.slug,l.dataset.productVariant=e.variantKey,l.dataset.canonicalHost=e.canonicalHost,l.dataset.routeCanonical=s.canonicalUrl,l.dataset.routeEnabled=s.enabled?"true":"false",e.marketingTool.toolKey?l.dataset.marketingToolKey=e.marketingTool.toolKey:delete l.dataset.marketingToolKey,v.emit("productProfile.route.applied",{route:a,variantKey:e.variantKey,slug:e.slug,canonicalHost:e.canonicalHost,canonicalUrl:s.canonicalUrl,routeEnabled:s.enabled,fallbackRoute:s.fallbackRoute,marketingToolKey:e.marketingTool.toolKey}),()=>{x(l,"productProfile",y.productProfile),x(l,"productVariant",y.productVariant),x(l,"canonicalHost",y.canonicalHost),x(l,"routeCanonical",y.routeCanonical),x(l,"routeEnabled",y.routeEnabled),x(l,"marketingToolKey",y.marketingToolKey)}},[e.canonicalHost,e.marketingTool.toolKey,e.slug,e.variantKey,a,s.canonicalUrl,s.enabled,s.fallbackRoute]),r.jsxs("div",{className:`${o?"app app--canvas":"app"} ${w?"app--mini-tool":""}`,"data-product-profile":e.slug,"data-product-variant":e.variantKey,"data-canonical-host":e.canonicalHost,"data-route-enabled":s.enabled?"true":"false","data-route-canonical":s.canonicalUrl,"data-marketing-tool-key":e.marketingTool.toolKey||void 0,children:[!w&&r.jsx(i.Suspense,{fallback:r.jsx(Ue,{}),children:r.jsx(Re,{route:a,navigate:c,canvasActions:o?h:[]})}),r.jsxs("main",{className:"app-main",children:[r.jsx(te,{onRouteReplaced:f}),r.jsx(se,{route:a}),r.jsx(ae,{resetKey:a,onNavigateHome:()=>c("/mindcanvas"),children:r.jsxs(i.Suspense,{fallback:r.jsx(De,{route:a}),children:[a==="/"&&r.jsx(Me,{navigate:c}),P&&r.jsx("section",{className:"route-keepalive route-keepalive--mindcanvas","data-testid":"mindcanvas-keepalive-host","data-route-keepalive":"mindcanvas","data-route-active":o?"true":"false",hidden:!o,"aria-hidden":o?void 0:"true",children:r.jsx(fe,{navigate:c,onSidebarActionsChange:m})}),p&&r.jsx(ve,{navigate:c}),a==="/pricing"&&r.jsx(be,{navigate:c}),a==="/login"&&r.jsx(ye,{navigate:c}),a==="/forgot-password"&&r.jsx(we,{navigate:c}),a==="/reset-password"&&r.jsx(ke,{navigate:c}),a==="/tools"&&r.jsx(Pe,{navigate:c}),b&&r.jsx(xe,{toolKey:b,navigate:c,miniHost:(t==null?void 0:t.key)===b}),a==="/youtube"&&r.jsx(Ee,{navigate:c}),(a==="/code"||a==="/agent")&&r.jsx(_e,{}),a==="/execution-mode"&&r.jsx(Se,{}),a==="/not-found"&&r.jsx(Oe,{navigate:c}),a==="/company-core"&&r.jsx(Ce,{}),a==="/admin/dashboard"&&r.jsx(Te,{})]})})]})]})}function De({route:e}){return i.useEffect(()=>{v.emit("route.lazyFallback.rendered",{route:e})},[e]),r.jsxs("div",{className:"route-lazy-fallback","data-testid":"route-lazy-fallback","data-route":e,children:[r.jsx("span",{className:"route-lazy-spinner","aria-hidden":"true"}),r.jsx("span",{children:"Loading MindExec surface..."})]})}function Ue(){return r.jsxs("aside",{className:"app-sidebar app-sidebar--loading","aria-label":"MindExec navigation loading",children:[r.jsx("div",{className:"sidebar-brand sidebar-placeholder"}),r.jsx("div",{className:"sidebar-divider"}),r.jsx("nav",{className:"sidebar-nav",children:Array.from({length:8},(e,t)=>r.jsx("div",{className:"sidebar-icon sidebar-placeholder"},t))}),r.jsx("div",{className:"sidebar-spacer"}),r.jsx("div",{className:"sidebar-icon sidebar-placeholder"})]})}function Oe({navigate:e}){return r.jsx("div",{className:"page not-found-page",children:r.jsxs("section",{className:"execution-panel",children:[r.jsx("div",{className:"eyebrow",children:"Not Found"}),r.jsx("h1",{children:"Content not found."}),r.jsx("p",{children:"The route exists as a React shell so stale Blazor links land cleanly."}),r.jsx("button",{className:"btn btn-primary",type:"button",onClick:()=>e("/"),children:"Go home"})]})})}z();$.createRoot(document.getElementById("root")).render(r.jsx(je,{}));export{N as A,X as c,$e as g};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ac as b,ad as B,ae as x,af as R,ag as D}from"./canvas-runtime-
|
|
1
|
+
import{ac as b,ad as B,ae as x,af as R,ag as D}from"./canvas-runtime-DyQNXrXQ.js";import{R as n}from"./app-runtime-xD2Z3NdN.js";import{l as T,b as f,c as O,d as _}from"./runtimeSettingsPersistenceProjection-BoNWmYjU.js";const L={id:"mindcanvas-main",name:"Global Launch Workspace",updatedAt:new Date().toISOString(),settings:{wheelMode:!1,cursorDirection:"right",inputMode:"Text",model:D,effort:"Normal",appLanguage:"auto",gridSnap:!0,gridType:"dot",cursorMode:"center",cameraTraceMode:"none",imageLoadSize:"default",aiNodeDefaultWidth:340,aiNodeDefaultHeight:196,showFullAiResponse:!1,minimapEnabled:!1,aiProvider:"OpenAI Codex",ollamaEndpoint:"http://localhost:11434",imageRouterEnabled:!1,imageRouterImageModel:R,imageRouterVideoModel:x,imageRouterImageAspectPresetId:B,imageRouterVideoAspectPresetId:b,codeMasterInsightBundlesEnabled:!0,codeMasterInsightBundleTimeoutMs:18e3,codeMasterInsightBundleRetryCount:2,codeMasterInsightBundleRetryCountDeep:3,executionMode:"Concept",directInstructionQueueMode:"Append"},nodes:[{id:"node-agent-command",kind:"ai-task",title:"AI Task",body:"Turn a rough global SaaS idea into a launchable work plan. Keep the result practical: offer, channel, first landing page, and 7-day execution steps.",result:"Drafted execution plan: validate one English-first offer, publish a narrow landing page, collect 20 founder leads, and turn repeated questions into MindCanvas templates.",status:"done",role:"Business operator",tags:["AI Task","Result"],x:180,y:170,width:330,height:196},{id:"node-context",kind:"note",title:"Context",body:"Target: global solo builders who need one place for notes, evidence, AI runs, assets, and task graphs. Price in USD. Avoid Korea-only positioning.",tags:["Context"],x:-270,y:90,width:320,height:180},{id:"node-pricing",kind:"memo",title:"Pricing memory",body:"Free local tools -> MindCanvas Pro $12/mo. The paid step appears after the work becomes worth keeping.",tags:["Pricing"],x:585,y:110,width:300,height:158},{id:"node-output",kind:"code",title:"Reusable output",body:"Ship React canvas first. Keep LocalBridge and cloud hooks adapter-based so the UI does not wait on Blazor or C# services.",tags:["React","Runtime"],x:190,y:455,width:370,height:166}],edges:[{id:"edge-context-task",from:"node-context",to:"node-agent-command",kind:"context"},{id:"edge-task-output",from:"node-agent-command",to:"node-output",kind:"result"}]},u="mindexec-react-board-v1",s="mindexec-react-current-board-v2",p="mindexec-react-board-index-v2",M="mindexec-react-board-v2:";function i(e){return`${M}${e}`}function l(e){if(!e)return null;try{return JSON.parse(e)}catch{return null}}function g(e){const t=e;return!!(t&&typeof t=="object"&&typeof t.id=="string"&&Array.isArray(t.nodes)&&Array.isArray(t.edges)&&t.settings)}function v(e){var t,r;return{id:e.id,name:e.name||"Untitled",updatedAt:e.updatedAt||new Date().toISOString(),nodeCount:e.nodes.length,edgeCount:e.edges.length,sourceKind:(t=e.source)==null?void 0:t.kind,sourceBoardId:(r=e.source)==null?void 0:r.boardId}}function c(){const e=l(localStorage.getItem(p));return Array.isArray(e)?y(e.filter(t=>t&&typeof t.id=="string").sort(m)):[]}function S(e){const t=y(e);localStorage.setItem(p,JSON.stringify(t)),_(t.map(r=>({BoardId:r.id,Title:r.name||"Untitled"})))}function h(e){const t=c(),r=t.find(d=>d.id===e.id),a=[{...v(e),order:(r==null?void 0:r.order)??t.length},...t.filter(d=>d.id!==e.id)].sort(m);S(a)}function I(e,t){return typeof e.order=="number"&&Number.isFinite(e.order)?e.order:t}function m(e,t){const r=I(e,Number.MAX_SAFE_INTEGER)-I(t,Number.MAX_SAFE_INTEGER);return r!==0?r:String(t.updatedAt||"").localeCompare(String(e.updatedAt||""))}function y(e){const t=new Set;return e.filter(r=>!(r!=null&&r.id)||t.has(r.id)?!1:(t.add(r.id),!0)).sort(m).map((r,o)=>({...r,order:o}))}function E(e){localStorage.setItem(i(e.id),JSON.stringify(e)),h(e),localStorage.setItem(s,e.id),f(e.id),localStorage.setItem(u,JSON.stringify(e))}function A(){const e=l(localStorage.getItem(u));return g(e)?(E(e),e):null}function N(e){try{const t=localStorage.getItem(s)||T();if(t){const o=l(localStorage.getItem(i(t)));if(g(o))return localStorage.setItem(s,o.id),f(o.id),n.emit("board.restore",{source:"localStorage",boardId:o.id,nodes:o.nodes.length,edges:o.edges.length}),o}const r=A();return r?(n.emit("board.restore",{source:"legacyLocalStorage",boardId:r.id,nodes:r.nodes.length,edges:r.edges.length}),r):(n.emit("board.restore",{source:"fixture"}),e)}catch(t){return n.emit("board.restore",{source:"fixture",error:String(t)}),e}}function P(e){const t={...e,updatedAt:new Date().toISOString()};try{return E(t),n.emit("board.persist",{boardId:e.id,nodes:e.nodes.length,edges:e.edges.length}),!0}catch(r){return n.emit("board.persist.failed",{boardId:e.id,message:r instanceof Error?r.message:String(r)}),!1}}function F(){try{const e=c();return e.length>0?e:(A(),c())}catch{return[]}}function U(e){try{const t=l(localStorage.getItem(i(e)));return g(t)?(localStorage.setItem(s,t.id),f(t.id),n.emit("board.restore",{source:"localStorage",boardId:t.id,nodes:t.nodes.length,edges:t.edges.length}),t):null}catch(t){return n.emit("board.restore",{source:"localStorage",boardId:e,error:String(t)}),null}}function K(e,t){const r=t.trim().slice(0,90)||"Untitled Workspace";try{const o=l(localStorage.getItem(i(e)));if(!g(o))return!1;const a={...o,name:r,updatedAt:new Date().toISOString()};return localStorage.setItem(i(e),JSON.stringify(a)),h(a),localStorage.getItem(s)===e&&localStorage.setItem(u,JSON.stringify(a)),n.emit("board.rename",{boardId:e,source:"stored"}),!0}catch(o){return n.emit("board.rename.failed",{boardId:e,message:o instanceof Error?o.message:String(o)}),!1}}function G(e){try{const t=c(),r=new Map(e.map((a,d)=>[a,d])),o=t.map((a,d)=>({...a,order:r.has(a.id)?r.get(a.id):e.length+d})).sort(m).map((a,d)=>({...a,order:d}));return S(o),n.emit("board.tabs.reorder",{orderedIds:o.map(a=>a.id)}),o}catch(t){return n.emit("board.tabs.reorder.failed",{message:t instanceof Error?t.message:String(t)}),c()}}function J(e){try{localStorage.removeItem(i(e)),S(c().filter(t=>t.id!==e)),localStorage.getItem(s)===e&&localStorage.removeItem(s),n.emit("board.local.delete",{boardId:e})}catch(t){n.emit("board.local.delete.failed",{boardId:e,message:t instanceof Error?t.message:String(t)})}}function X(){const e=c().map(t=>t.id);for(const t of e)localStorage.removeItem(i(t));localStorage.removeItem(p),localStorage.removeItem(s),localStorage.removeItem(u),O()}export{F as a,U as b,K as c,J as d,X as e,L as i,N as l,G as r,P as s};
|
package/wwwroot/index.html
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
12
12
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
13
13
|
<title>MindExec React</title>
|
|
14
|
-
<script type="module" crossorigin src="/assets/index-
|
|
14
|
+
<script type="module" crossorigin src="/assets/index-BMSr0Udr.js"></script>
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react-BXzpOyCS.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/assets/app-runtime-xD2Z3NdN.js">
|
|
17
17
|
<link rel="stylesheet" crossorigin href="/assets/index-DFCCVWKg.css">
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.mindcanvas{position:relative;width:100%;height:100vh;overflow:hidden;color:var(--ink);background:linear-gradient(135deg,#f7f8fa,#e8ecf1,#dde3eb);-webkit-user-select:none;user-select:none}.mindcanvas--read-mode .canvas-toolbar,.mindcanvas--read-mode .runtime-status-cluster,.mindcanvas--read-mode .global-input-shell{opacity:0;pointer-events:none}.canvas-plane{--grid-x: 540px;--grid-y: 210px;--grid-small: 24px;--grid-large: 144px;position:absolute;top:0;right:0;bottom:0;left:0;cursor:grab;overflow:hidden;background-image:radial-gradient(circle,rgba(100,116,139,.24) 1px,transparent 1px),radial-gradient(circle,rgba(100,116,139,.32) 1.6px,transparent 1.6px);background-position:var(--grid-x) var(--grid-y),var(--grid-x) var(--grid-y);background-size:var(--grid-small) var(--grid-small),var(--grid-large) var(--grid-large)}.canvas-plane--grid-line{background-image:linear-gradient(rgba(100,116,139,.16) 1px,transparent 1px),linear-gradient(90deg,rgba(100,116,139,.16) 1px,transparent 1px),linear-gradient(rgba(71,85,105,.18) 1px,transparent 1px),linear-gradient(90deg,rgba(71,85,105,.18) 1px,transparent 1px);background-position:var(--grid-x) var(--grid-y),var(--grid-x) var(--grid-y),var(--grid-x) var(--grid-y),var(--grid-x) var(--grid-y);background-size:var(--grid-small) var(--grid-small),var(--grid-small) var(--grid-small),var(--grid-large) var(--grid-large),var(--grid-large) var(--grid-large)}.canvas-plane--grid-particles{background-image:radial-gradient(circle at 25% 35%,rgba(37,99,235,.32) 0 1.2px,transparent 1.5px),radial-gradient(circle at 72% 58%,rgba(20,184,166,.26) 0 1.1px,transparent 1.5px),radial-gradient(circle at 48% 78%,rgba(245,158,11,.22) 0 1px,transparent 1.4px),radial-gradient(circle,rgba(100,116,139,.18) 1px,transparent 1px);background-position:var(--grid-x) var(--grid-y),calc(var(--grid-x) + 16px) calc(var(--grid-y) + 10px),calc(var(--grid-x) + 34px) calc(var(--grid-y) + 28px),var(--grid-x) var(--grid-y);background-size:calc(var(--grid-small) * 3) calc(var(--grid-small) * 3),calc(var(--grid-small) * 4) calc(var(--grid-small) * 4),calc(var(--grid-small) * 5) calc(var(--grid-small) * 5),var(--grid-large) var(--grid-large)}.canvas-plane--grid-spirit{background-image:radial-gradient(ellipse at var(--grid-x) var(--grid-y),rgba(59,130,246,.16),transparent 42%),repeating-linear-gradient(37deg,rgba(20,184,166,.13) 0 1px,transparent 1px 38px),repeating-linear-gradient(143deg,rgba(244,114,182,.1) 0 1px,transparent 1px 56px),radial-gradient(circle,rgba(71,85,105,.18) 1px,transparent 1px);background-position:0 0,var(--grid-x) var(--grid-y),calc(var(--grid-x) * -.5) calc(var(--grid-y) * -.5),var(--grid-x) var(--grid-y);background-size:100% 100%,calc(var(--grid-large) * 1.4) calc(var(--grid-large) * 1.4),calc(var(--grid-large) * 1.8) calc(var(--grid-large) * 1.8),var(--grid-large) var(--grid-large)}body.is-panning .canvas-plane{cursor:grabbing}body.is-selecting .canvas-plane{cursor:crosshair}.canvas-selection-box{position:absolute;z-index:18;pointer-events:none;border:1px solid rgba(37,99,235,.82);border-radius:5px;background:#3b82f61f;box-shadow:inset 0 0 0 1px #ffffffb8,0 0 0 1px #2563eb1f}.canvas-multi-selection-bounds{position:absolute;z-index:19;pointer-events:none;border:1px dashed rgba(37,99,235,.86);border-radius:7px;background:#2563eb0a;box-shadow:0 0 0 2px #2563eb14}.multi-selection-toolbar{position:absolute;z-index:245;display:inline-flex;align-items:center;gap:4px;min-height:38px;padding:4px 6px;border-radius:8px;transform:translate(-50%);pointer-events:auto}.multi-selection-toolbar__count{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;border-radius:7px;color:#1d4ed8;background:#dbeafee6;font-size:12px;font-weight:900}.multi-selection-toolbar button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#475569;background:transparent;cursor:pointer}.multi-selection-toolbar button:hover{color:#0f172a;background:#e2e8f0d1}.multi-selection-toolbar button.is-danger{color:#be123c}.multi-selection-toolbar button.is-danger:hover{color:#9f1239;background:#ffe4e6db}.multi-selection-toolbar__separator{width:1px;height:22px;margin-inline:2px;background:#cbd5e1db}.canvas-world{position:absolute;left:0;top:0;width:1px;height:1px;transform-origin:0 0;will-change:transform;contain:layout style}.edge-layer{position:absolute;left:-1200px;top:-900px;overflow:visible;pointer-events:none}.edge-path{fill:none;stroke-width:3;stroke-linecap:round;pointer-events:stroke;cursor:pointer;opacity:.88}.edge-path--result{stroke:#f97316e6}.edge-path--context{stroke:#2563ebb3;stroke-dasharray:8 8}.canvas-node{position:absolute;display:flex;flex-direction:column;overflow:visible;border:1px solid rgba(226,232,240,.92);border-radius:8px;background:#fffffff0;box-shadow:0 0 6px #0f172a2e,0 16px 38px #0f172a21;cursor:grab;-webkit-user-select:none;user-select:none;contain:layout style}.canvas-node.is-selected{border-color:#2563ebc2;box-shadow:0 0 0 2px #2563eb2e,0 0 20px #3b82f647,0 18px 42px #0f172a29}.canvas-node.is-pulsing{animation:pulseNode .9s ease}.node-resize-handle{position:absolute;right:-6px;bottom:-6px;z-index:5;width:18px;height:18px;border:1px solid rgba(37,99,235,.38);border-radius:6px;background:linear-gradient(135deg,transparent 0 42%,rgba(37,99,235,.7) 42% 50%,transparent 50% 100%),linear-gradient(135deg,transparent 0 62%,rgba(37,99,235,.5) 62% 70%,transparent 70% 100%),#fffffff5;box-shadow:0 6px 18px #0f172a2e;cursor:nwse-resize;opacity:0;transition:opacity .14s ease,transform .14s ease,border-color .14s ease}.canvas-node:hover .node-resize-handle,.canvas-node.is-selected .node-resize-handle{opacity:1}.node-resize-handle:hover{border-color:#2563ebb3;transform:scale(1.08)}.canvas-node--remote-surface>.node-resize-handle,.canvas-node[data-remote-surface-scroll-owner=remote-page-rail]>.node-resize-handle{right:4px;bottom:4px;width:14px;height:14px;border-radius:5px;opacity:.72;box-shadow:0 2px 8px #0f172a1f}.canvas-node--remote-surface:hover>.node-resize-handle,.canvas-node--remote-surface.is-selected>.node-resize-handle,.canvas-node[data-remote-surface-scroll-owner=remote-page-rail]:hover>.node-resize-handle,.canvas-node[data-remote-surface-scroll-owner=remote-page-rail].is-selected>.node-resize-handle{opacity:1}body.is-resizing-node,body.is-resizing-node *{cursor:nwse-resize!important;-webkit-user-select:none!important;user-select:none!important}@keyframes pulseNode{0%,to{box-shadow:0 0 0 2px #2563eb2e,0 18px 42px #0f172a29}50%{box-shadow:0 0 0 6px #2563eb2e,0 0 46px #2563eb6b,0 18px 42px #0f172a29}}.canvas-node--ai-task{border-color:#f973166b;background:linear-gradient(180deg,#fff7edf5,#fffffff0)}.canvas-node--code{background:linear-gradient(180deg,#f8fafc,#eef2ff)}.canvas-node--text{border-color:#64748b3d;background:linear-gradient(180deg,#fff,#f8fafc)}.canvas-node--text .node-kind{color:#475569;background:#f1f5f9}.canvas-node--mask{border-color:#0ea5e95c;background:linear-gradient(180deg,#f8fafc,#ecfeff)}.canvas-node--mask .node-kind{color:#0e7490;background:#cffafe}.canvas-node--markdown{border-color:#0ea5e947;background:linear-gradient(180deg,#f8fafc,#f0f9ff)}.canvas-node--markdown .node-kind{color:#0369a1;background:#e0f2fe}.canvas-node--memo{--memo-bg: #fff2eb;--memo-border: rgba(255, 128, 82, .42);--memo-ink: #7c2d12;--memo-ring: rgba(255, 128, 82, .22);--memo-accent: #ff8052;border-color:var(--memo-border);color:var(--memo-ink);background:linear-gradient(180deg,var(--memo-bg),rgba(255,255,255,.92)),#fff}.canvas-node--memo .node-kind{color:var(--memo-ink);background:var(--memo-ring)}.canvas-node--memo .node-header input{color:var(--memo-ink)}.canvas-node--memo .node-tags span{color:var(--memo-ink);background:var(--memo-ring)}.canvas-node--agent-command{--memo-bg: #f8fafc;--memo-border: rgba(99, 102, 241, .38);--memo-ink: #312e81;--memo-ring: rgba(99, 102, 241, .16);--memo-accent: #6366f1;border-color:var(--memo-border);background:linear-gradient(180deg,#eef2fff5,#fffffff0),#fff}.canvas-node--agent-command .node-kind{color:#4338ca;background:#e0e7ff}.node-agent-command-state{display:flex;align-items:center;gap:6px;margin:0 12px 8px;padding:6px 8px;border:1px solid rgba(99,102,241,.18);border-radius:8px;color:#312e81;background:#eef2ffc2;font-size:11px;font-weight:760}.node-agent-command-state span{min-width:0;padding:2px 6px;border-radius:999px;color:#4338ca;background:#ffffffc7;white-space:nowrap}.node-agent-command-actions{display:flex;gap:8px;margin:-2px 12px 8px}.node-agent-command-actions button{height:26px;padding:0 10px;border:1px solid rgba(99,102,241,.26);border-radius:7px;color:#3730a3;background:#ffffffe0;font-size:11px;font-weight:820;cursor:pointer}.node-agent-command-actions button:hover{color:#fff;background:#4f46e5}.node-agent-command-actions button:disabled{opacity:.55;cursor:not-allowed}.canvas-node--code-note{--memo-bg: #f0f9ff;--memo-border: rgba(14, 165, 233, .36);--memo-ink: #075985;--memo-ring: rgba(14, 165, 233, .16);--memo-accent: #0ea5e9;border-color:var(--memo-border);background:linear-gradient(180deg,#f0f9fff5,#fffffff0),#fff}.canvas-node--code-note .node-kind{color:#0369a1;background:#e0f2fe}.node-code-note-state{display:flex;align-items:center;gap:6px;margin:0 12px 8px;padding:6px 8px;border:1px solid rgba(14,165,233,.2);border-radius:8px;color:#075985;background:#e0f2feb8;font-size:11px;font-weight:760}.node-code-note-state span{min-width:0;padding:2px 6px;border-radius:999px;color:#0369a1;background:#ffffffc7;white-space:nowrap}.node-code-note-actions{display:flex;flex-wrap:wrap;gap:8px;margin:-2px 12px 8px}.node-code-note-actions button{height:26px;padding:0 10px;border:1px solid rgba(14,165,233,.28);border-radius:7px;color:#075985;background:#ffffffe0;font-size:11px;font-weight:820;white-space:nowrap;cursor:pointer}.node-code-note-actions button:hover{color:#fff;background:#0284c7}.canvas-node--pdf{border-color:#ef444447;background:linear-gradient(180deg,#fff7f7,#fff)}.canvas-node--file{border-color:#2563eb47;background:linear-gradient(180deg,#eff6ff,#fff)}.canvas-node--directory{border-color:#f59e0b6b;background:linear-gradient(180deg,#fffbeb,#fff)}.canvas-node--template-launcher{border-color:#2563eb52;background:linear-gradient(180deg,#f8fbff,#f7fdf9)}.canvas-node--remote-monitor,.canvas-node--remote-control,.canvas-node--remote-monitor-surface,.canvas-node--remote-control-surface{overflow:hidden;overflow-x:hidden;overflow-y:hidden;overflow:clip;overflow-x:clip;overflow-y:clip;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;border-color:#64748b73;background:#f8fbff}.canvas-node:has(>.node-remote-monitor),.canvas-node:has(>.node-remote-control){overflow:hidden;overflow-x:hidden;overflow-y:hidden;overflow:clip;overflow-x:clip;overflow-y:clip;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none;border-color:#64748b73;background:#f8fbff}.canvas-node--remote-surface,.canvas-node[data-remote-surface-chrome=self-contained]{display:grid;grid-template-rows:minmax(0,1fr);gap:0;align-items:stretch;padding:0;overflow:visible;overflow-x:visible;overflow-y:visible;scrollbar-width:none;-ms-overflow-style:none}.canvas-node--remote-surface>.node-remote-monitor,.canvas-node--remote-surface>.node-remote-control,.canvas-node[data-remote-surface-chrome=self-contained]>.node-remote-monitor,.canvas-node[data-remote-surface-chrome=self-contained]>.node-remote-control{width:100%;height:100%;min-height:0}.canvas-node--remote-monitor::-webkit-scrollbar,.canvas-node--remote-control::-webkit-scrollbar,.canvas-node--remote-monitor-surface::-webkit-scrollbar,.canvas-node--remote-control-surface::-webkit-scrollbar,.canvas-node--remote-surface::-webkit-scrollbar,.canvas-node:has(>.node-remote-monitor)::-webkit-scrollbar,.canvas-node:has(>.node-remote-control)::-webkit-scrollbar{display:none;width:0;height:0}.canvas-node[data-remote-surface-chrome=self-contained]>.node-header,.canvas-node[data-remote-surface-title-owner=inner-remote-view]>.node-header,.canvas-node[data-remote-surface-chrome=self-contained]>.node-tags,.canvas-node[data-remote-surface-title-owner=inner-remote-view]>.node-tags,.canvas-node[data-remote-surface-chrome=self-contained]>.node-external-rail,.canvas-node[data-remote-surface-chrome=self-contained]>.node-external-action-rail,.canvas-node[data-remote-surface-title-owner=inner-remote-view]>.node-external-rail,.canvas-node[data-remote-surface-title-owner=inner-remote-view]>.node-external-action-rail,.canvas-node:has(>.node-remote-monitor)>.node-header,.canvas-node:has(>.node-remote-monitor)>.node-tags,.canvas-node:has(>.node-remote-monitor)>.node-external-rail,.canvas-node:has(>.node-remote-monitor)>.node-external-action-rail,.canvas-node:has(>.node-remote-control)>.node-header,.canvas-node:has(>.node-remote-control)>.node-tags,.canvas-node:has(>.node-remote-control)>.node-external-rail,.canvas-node:has(>.node-remote-control)>.node-external-action-rail{display:none}.canvas-node--remote-monitor-surface>.node-header,.canvas-node--remote-monitor-surface>.node-tags,.canvas-node--remote-monitor-surface>.node-external-rail,.canvas-node--remote-monitor-surface>.node-external-action-rail,.canvas-node--remote-control-surface>.node-header,.canvas-node--remote-control-surface>.node-tags,.canvas-node--remote-control-surface>.node-external-rail,.canvas-node--remote-control-surface>.node-external-action-rail{display:none}.node-header{display:flex;align-items:center;gap:8px;padding:12px 12px 8px}.node-kind{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:999px;color:#475569;background:#f1f5f9eb}.canvas-node--ai-task .node-kind{color:#c2410c;background:#fff7ed}.canvas-node--pdf .node-kind{color:#dc2626;background:#fee2e2}.canvas-node--file .node-kind{color:#1d4ed8;background:#dbeafe}.canvas-node--directory .node-kind{color:#b45309;background:#fef3c7}.canvas-node--template-launcher .node-kind{color:#1d4ed8;background:#dbeafe}.canvas-node--remote-monitor .node-kind,.canvas-node--remote-control .node-kind{color:#2563eb;background:#eff6ff}.node-header input{min-width:0;flex:1;padding:4px 0;border:0;color:#111827;background:transparent;font-size:14px;font-weight:840;outline:none}.node-actions{display:flex;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end;gap:4px;max-width:160px}.node-actions button{position:relative;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:#64748b;background:transparent;cursor:pointer}.node-actions button:hover{background:#e2e8f0d1;color:#0f172a}.node-actions button.is-active-ai{color:#7c3aed;background:#f5f3ff}.node-actions button.is-inactive-ai:after{content:"";position:absolute;width:17px;height:2px;border-radius:999px;background:#ef4444;transform:rotate(-42deg)}.node-actions button.is-company-action{color:#0f766e;background:#ccfbf1}.node-actions button.is-memo-color-action{color:var(--memo-ink, #7c2d12);background:var(--memo-ring, rgba(255, 128, 82, .22))}.node-actions button[aria-pressed=true]{color:#1d4ed8;background:#dbeafe}.node-actions button.is-memo-color-action[aria-pressed=true]{color:var(--memo-ink, #7c2d12);background:var(--memo-ring, rgba(255, 128, 82, .22))}.node-external-rail{position:absolute;top:calc(100% + 8px);left:50%;z-index:14;width:max-content;min-width:min(100%,190px);max-width:min(460px,calc(100vw - 48px));display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;gap:4px;pointer-events:none;cursor:default;opacity:.72;transform:translate(-50%,-2px);transform-origin:top center;filter:drop-shadow(0 12px 24px rgba(15,23,42,.14));transition:opacity .14s ease,transform .14s ease}.node-external-action-rail{position:absolute;bottom:calc(100% + 8px);left:50%;z-index:15;width:max-content;min-width:min(100%,190px);max-width:min(460px,calc(100vw - 48px));display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:4px;pointer-events:none;cursor:default;opacity:0;transform:translate(-50%,4px);transform-origin:bottom center;filter:drop-shadow(0 12px 24px rgba(15,23,42,.14));transition:opacity .14s ease,transform .14s ease}.canvas-node:hover .node-external-rail,.canvas-node.is-selected .node-external-rail,.canvas-node:hover .node-external-action-rail,.canvas-node.is-selected .node-external-action-rail{opacity:1;pointer-events:auto;transform:translate(-50%)}.node-external-rail__meta,.node-external-rail__actions,.node-external-rail__pins,.node-surface-badges,.node-surface-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:4px;min-width:0}.node-external-rail__meta{flex:0 1 auto;max-width:100%}.node-external-rail__actions{flex:0 1 auto;max-width:min(420px,calc(100vw - 48px));max-height:0;overflow:hidden;opacity:0;pointer-events:none;transform:translateY(-3px);transition:max-height .16s ease,opacity .14s ease,transform .14s ease}.canvas-node:hover .node-external-rail__actions,.canvas-node.is-selected .node-external-rail__actions{max-height:112px;opacity:1;pointer-events:auto;transform:translateY(0)}.node-external-rail__pins{flex:0 0 auto;max-width:100%}.node-external-action-rail .node-actions,.node-external-action-rail .node-agent-command-actions,.node-external-action-rail .node-code-note-actions,.node-external-action-rail .node-company-quick-actions,.node-external-action-rail .node-embed-actions,.node-external-action-rail .node-video-actions,.node-external-action-rail .node-asset-actions{display:flex;flex:0 1 auto;flex-wrap:wrap;align-items:center;gap:4px;max-width:min(100%,420px);margin:0;padding:3px;border:1px solid rgba(203,213,225,.78);border-radius:8px;background:#fffffff0;box-shadow:inset 0 1px #ffffffbd}.node-external-action-rail .node-actions button{width:24px;height:24px;background:#fff}.node-external-action-rail .node-surface-actions{max-width:min(100%,420px)}.node-external-action-rail .node-result-row{position:static;z-index:auto;display:flex;gap:4px;padding:0;pointer-events:auto}.node-external-action-rail .node-pin,.node-external-action-rail .node-context-source{min-height:24px;padding:0 8px;border-color:#cbd5e1d1;background:#fffffff0;box-shadow:0 1px #ffffffbd}.node-external-action-rail .node-context-source{position:static;width:auto;height:24px;justify-content:center;transform:none}.node-external-action-rail .node-context-source span{display:inline}.node-external-rail .node-tags{display:flex;flex-wrap:wrap;gap:4px;padding:0}.node-surface-badges{max-width:100%}.node-external-rail .node-tags span,.node-external-rail .node-mask-badge,.node-external-rail .node-image-stack-badge,.node-external-rail .node-embed-badge,.node-external-rail .node-video-badge,.node-external-rail .node-agent-command-state,.node-external-rail .node-code-note-state,.node-external-rail .node-company-state{min-height:20px;margin:0;padding:2px 7px;border-radius:999px;font-size:10px;line-height:1.2;box-shadow:0 1px #ffffffbd}.node-external-rail .node-agent-command-state,.node-external-rail .node-code-note-state,.node-external-rail .node-company-state{display:inline-flex;flex:0 1 auto;max-width:min(100%,260px);gap:5px;overflow:hidden;white-space:nowrap}.node-external-rail .node-agent-command-state span,.node-external-rail .node-code-note-state span{padding:1px 5px;font-size:10px}.node-external-rail .node-company-state strong{max-width:150px}.node-external-rail .node-company-state span{margin-left:0}.node-external-rail .node-mask-badge,.node-external-rail .node-image-stack-badge,.node-external-rail .node-embed-badge,.node-external-rail .node-video-badge{position:static;top:auto;right:auto;left:auto;max-width:min(180px,100%);height:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-external-action-rail .node-agent-command-actions button,.node-external-action-rail .node-code-note-actions button,.node-external-action-rail .node-company-quick-actions button,.node-external-action-rail .node-embed-actions button,.node-external-action-rail .node-video-actions button,.node-external-action-rail .node-asset-actions button{margin:0}.node-memo-palette{position:absolute;bottom:calc(100% + 44px);right:12px;z-index:24;display:grid;grid-template-columns:repeat(6,20px);gap:6px;padding:8px;border:1px solid rgba(148,163,184,.28);border-radius:8px;background:#fffffff5;box-shadow:0 0 0 1px #0f172a0a,0 14px 34px #0f172a33;cursor:default}.node-memo-palette button{width:20px;height:20px;padding:0;border:2px solid rgba(255,255,255,.96);border-radius:999px;background:var(--memo-swatch);box-shadow:0 0 0 1px #0f172a29;cursor:pointer}.node-memo-palette button:hover,.node-memo-palette button.is-active{box-shadow:0 0 0 2px var(--memo-swatch),0 0 0 6px var(--memo-swatch-ring)}.node-template-card{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:10px;min-height:0;padding:4px 12px 12px}.node-template-card__summary{display:grid;gap:4px;padding:10px 11px;border:1px solid rgba(203,213,225,.74);border-radius:8px;background:#ffffffc7}.node-template-card__summary strong,.node-template-card__summary span,.node-template-card__options strong,.node-template-card__options span{min-width:0;overflow:hidden;text-overflow:ellipsis}.node-template-card__summary strong{color:#0f172a;font-size:13px;line-height:1.35}.node-template-card__summary span{color:#64748b;font-size:11px;line-height:1.4}.node-template-card__options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.node-template-card__options button{min-width:0;min-height:58px;display:grid;gap:3px;padding:8px 9px;border:1px solid rgba(203,213,225,.84);border-radius:8px;color:#334155;background:#fff;cursor:pointer;text-align:left}.node-template-card__options button.is-active{border-color:#2563eb80;background:#eff6ff}.node-template-card__options strong{color:#0f172a;font-size:12px;white-space:nowrap}.node-template-card__options span{color:#64748b;font-size:10.5px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.node-template-card__inputs{display:grid;gap:8px;min-height:0;overflow:auto;padding-right:3px}.node-template-card__field{display:grid;gap:6px;padding:9px;border:1px solid rgba(226,232,240,.9);border-radius:8px;background:#ffffffd6}.node-template-card__field span{display:grid;gap:3px}.node-template-card__field strong{color:#0f172a;font-size:12px}.node-template-card__field small,.node-template-card__empty,.node-template-card__missing{color:#64748b;font-size:11px;line-height:1.42}.node-template-card__field input,.node-template-card__field select,.node-template-card__field textarea{width:100%;min-width:0;border:1px solid rgba(203,213,225,.9);border-radius:7px;color:#0f172a;background:#f8fafc;font-size:12px;outline:none}.node-template-card__field input,.node-template-card__field select{height:32px;padding:0 9px}.node-template-card__field textarea{min-height:72px;resize:vertical;padding:8px 9px;line-height:1.45}.node-template-card__validation{padding:8px 9px;border:1px solid rgba(245,158,11,.34);border-radius:7px;color:#92400e;background:#fffbeb;font-size:11px;font-weight:760}.node-template-card__generate{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;color:#fff;background:#0f172a;font-size:12px;font-weight:840;cursor:pointer}.node-template-card__generate:disabled{cursor:default;opacity:.45}.node-company-launcher{position:fixed;z-index:3200;width:min(332px,calc(100vw - 32px));display:grid;gap:10px;padding:14px;border:1px solid rgba(20,184,166,.28);border-radius:8px;color:#0f172a;background:#fffffffa;box-shadow:0 0 0 1px #0f172a0a,0 20px 48px #0f172a38;cursor:default;-webkit-user-select:none;user-select:none}.node-company-launcher__eyebrow{color:#0f766e;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.node-company-launcher h4,.node-company-launcher p{margin:0}.node-company-launcher h4{font-size:14px;line-height:1.25}.node-company-launcher p{color:#475569;font-size:12px;line-height:1.55}.node-company-mode-list{display:grid;gap:7px;max-height:170px;overflow:auto}.node-company-mode-list button{min-height:56px;display:grid;gap:3px;padding:9px 10px;border:1px solid rgba(203,213,225,.84);border-radius:8px;color:#334155;background:#f8fafc;text-align:left;cursor:pointer}.node-company-mode-list button:hover,.node-company-mode-list button.is-selected{border-color:#14b8a680;background:#ecfeff}.node-company-mode-list strong,.node-company-mode-list span{display:block}.node-company-mode-list strong{color:#0f172a;font-size:12px}.node-company-mode-list span{color:#64748b;font-size:11px;line-height:1.4}.node-company-subagents{display:flex;align-items:flex-start;gap:8px;width:100%;padding:9px 10px;border:1px solid rgba(203,213,225,.84);border-radius:8px;background:#f8fafc;color:#334155;font-size:12px;font-weight:760;line-height:1.4;text-align:left;cursor:pointer}.node-company-subagents[aria-pressed=true]{border-color:#14b8a66b;background:#f0fdfa}.node-company-toggle-indicator{min-width:34px;min-height:22px;display:inline-flex;align-items:center;justify-content:center;margin-top:-1px;border-radius:999px;color:#475569;background:#e2e8f0;font-size:10px;font-weight:900}.node-company-subagents[aria-pressed=true] .node-company-toggle-indicator{color:#0f766e;background:#ccfbf1}.node-company-subagents>span:last-child{min-width:0;display:inline-flex;align-items:flex-start;gap:6px;flex:1 1 auto}.node-company-subagents svg{margin-top:1px;flex:0 0 auto;color:#0f766e}.node-company-launcher__actions{display:flex;justify-content:flex-end;gap:8px}.node-company-launcher__actions .btn{min-height:34px;padding:0 12px;border-radius:8px;font-size:12px}.node-tags{display:flex;flex-wrap:wrap;gap:6px;padding:0 12px 8px}.node-tags span{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:999px;color:#475569;background:#f1f5f9;font-size:10px;font-weight:780}.node-status--running{color:#075985!important;background:#e0f2fe!important}.node-status--paused{color:#92400e!important;background:#fef3c7!important}.node-status--done{color:#047857!important;background:#d1fae5!important}.node-status--blocked{color:#be123c!important;background:#ffe4e6!important}.node-company-state{display:flex;align-items:center;gap:6px;min-height:28px;margin:0 12px 8px;padding:5px 8px;border:1px solid rgba(20,184,166,.22);border-radius:8px;color:#0f766e;background:#f0fdfa;font-size:11px;line-height:1.2}.node-company-state strong{min-width:0;overflow:hidden;color:#0f172a;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.node-company-state span{margin-left:auto;color:#0f766e;font-weight:850;white-space:nowrap}.node-company-quick-actions{display:flex;align-items:center;gap:4px;min-height:28px;margin:-3px 12px 8px;padding:3px;border:1px solid rgba(15,118,110,.14);border-radius:8px;background:#f0fdfab8}.node-company-quick-actions button{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:#0f766e;background:#fff;box-shadow:inset 0 0 0 1px #0f766e1f;cursor:pointer}.node-company-quick-actions button:hover:not(:disabled){color:#0f172a;background:#ccfbf1}.node-company-quick-actions button:disabled{color:#94a3b8;background:#f8fafc;cursor:default;opacity:.72}.node-company-quick-actions [data-testid=node-company-remove]{margin-left:auto;color:#be123c}.node-company-quick-actions [data-testid=node-company-remove]:hover:not(:disabled){color:#7f1d1d;background:#ffe4e6}.node-chunked-text-state{flex:0 1 auto;min-height:20px;max-width:min(100%,220px);display:inline-flex;align-items:center;gap:5px;margin:0;padding:2px 7px;border:1px solid rgba(37,99,235,.18);border-radius:999px;color:#1d4ed8;background:#eff6fff5;box-shadow:0 1px #ffffffbd;font-size:10px;line-height:1.2}.node-chunked-text-state strong{min-width:0;max-width:92px;overflow:hidden;color:#0f172a;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.node-chunked-text-state span{margin-left:0;color:#1d4ed8;font-weight:850;white-space:nowrap}.canvas-node textarea{flex:1 1 auto;min-height:0;margin:0 12px 12px;padding:12px;border:1px solid rgba(226,232,240,.75);border-radius:6px;color:#1f2937;background:#ffffffb8;box-shadow:inset 0 1px #ffffffc7;font-size:12px;line-height:1.55;resize:none;outline:none;-webkit-user-select:text;user-select:text;pointer-events:auto}.node-markdown-card{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:minmax(70px,.72fr) minmax(78px,1fr);gap:8px;margin:0 12px 12px}.node-markdown-preview{min-height:0;overflow:auto;padding:10px;border:1px solid rgba(14,165,233,.2);border-radius:6px;color:#0f172a;background:#ffffffb8;box-shadow:inset 0 1px #ffffffc7;font-size:11px;line-height:1.42;overscroll-behavior:contain;pointer-events:auto;scrollbar-gutter:stable}.node-markdown-preview>*{margin:0 0 5px}.node-markdown-preview>:last-child{margin-bottom:0}.node-md-empty{color:#64748b;font-style:italic}.node-md-heading{display:block;overflow:hidden;color:#075985;font-weight:880;text-overflow:ellipsis;white-space:nowrap}.node-md-heading--1,.node-md-heading--2{font-size:13px}.node-md-quote{padding-left:8px;border-left:2px solid rgba(14,165,233,.42);color:#475569}.node-md-list-item{display:flex;gap:6px}.node-md-list-item span{color:#0284c7;font-weight:900}.node-md-list-item p{min-width:0}.node-md-code,.node-md-table-row{display:block;overflow:hidden;padding:3px 5px;border-radius:4px;color:#334155;background:#e2e8f0b8;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.node-markdown-card textarea{margin:0}.node-csv-card{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:minmax(130px,1fr) minmax(74px,.42fr);gap:8px;margin:0 12px 12px}.csv-table-scroll{position:relative;min-height:0;overflow:auto;border:1px solid rgba(34,197,94,.22);border-radius:6px;color:#0f172a;background:#ffffffc7;box-shadow:inset 0 1px #ffffffd1;overscroll-behavior:contain;pointer-events:auto;scrollbar-gutter:stable both-edges}.csv-table{min-width:100%;border-collapse:separate;border-spacing:0;font-size:10.5px;line-height:1.35}.csv-table th{position:sticky;top:0;z-index:1;padding:0;border-bottom:1px solid rgba(148,163,184,.34);background:#f0fdf4f5}.csv-table-header-button{display:flex;width:100%;min-width:84px;align-items:center;justify-content:space-between;gap:8px;padding:7px 8px;border:0;color:#166534;background:transparent;font:inherit;font-weight:850;text-align:left;cursor:pointer}.csv-table-header-button small{color:#16a34a;font-size:9px;font-weight:900}.csv-table-header-button.is-active{color:#0f172a;background:#dcfce7db}.csv-table td{max-width:220px;padding:6px 8px;border-right:1px solid rgba(226,232,240,.78);border-bottom:1px solid rgba(226,232,240,.78);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.csv-table tr:nth-child(2n) td{background:#f8fafcc7}.csv-table-status{position:sticky;left:0;bottom:0;display:flex;gap:8px;padding:6px 8px;border-top:1px solid rgba(187,247,208,.72);color:#166534;background:#f0fdf4f0;font-size:10px;font-weight:820}.node-csv-card textarea{margin:0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;overflow:auto;white-space:pre}.canvas-node--memo textarea{border-color:var(--memo-border);color:var(--memo-ink);background:#ffffff94}.canvas-node.is-ai-disabled textarea{background:#f8fafca3}.canvas-node.is-nowrap textarea{overflow:auto;white-space:pre}.canvas-node.is-collapsed textarea{overflow:hidden}.canvas-node.is-company-candidate{border-color:#0f766e75;box-shadow:0 0 0 3px #0f766e14,0 18px 42px #0f172a24}.company-focus-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3300;display:flex;align-items:stretch;justify-content:stretch;padding:18px;background:#0f172aad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.company-focus-dialog{width:100%;min-width:0;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border:1px solid rgba(203,213,225,.9);border-radius:12px;color:#0f172a;background:#f8fafc;box-shadow:0 28px 80px #0f172a57}.company-focus-head{min-width:0;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 16px;border-bottom:1px solid rgba(226,232,240,.95);background:#fff}.company-focus-head>button,.company-focus-head__actions button,.company-focus-primary,.company-focus-approval button,.company-focus-preview button{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:850}.company-focus-head>button{width:38px;color:#475569;background:#f1f5f9}.company-focus-head>div:nth-child(2){min-width:0;display:grid;gap:3px}.company-focus-head span{min-width:0}.company-focus-head>div:nth-child(2) span{color:#0f766e;font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.company-focus-head strong{min-width:0;overflow:hidden;color:#0f172a;font-size:18px;text-overflow:ellipsis;white-space:nowrap}.company-focus-head small{min-width:0;overflow:hidden;color:#64748b;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.company-focus-head__actions{min-width:0;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}.company-focus-head__actions>span{min-height:30px;display:inline-flex;align-items:center;gap:5px;padding:0 10px;border-radius:999px;color:#334155;background:#f1f5f9;font-size:11px;font-weight:850}.company-focus-head__actions button{padding:0 10px;color:#334155;background:#f8fafc;box-shadow:inset 0 0 0 1px #cbd5e1d6}.company-focus-head__actions button.is-danger{color:#be123c;background:#fff1f2;box-shadow:inset 0 0 0 1px #fda4afb8}.company-focus-main{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,360px)}.company-focus-main>main,.company-focus-side{min-height:0;overflow:auto;padding:16px}.company-focus-side{display:grid;align-content:start;gap:14px;border-left:1px solid rgba(226,232,240,.95);background:#fff}.company-focus-side section,.company-focus-graph{border:1px solid rgba(226,232,240,.92);border-radius:10px;background:#fff}.company-focus-side section{display:grid;gap:10px;padding:12px}.company-focus-side p{margin:0;color:#64748b;font-size:12px;line-height:1.55}.company-focus-side textarea{width:100%;min-height:104px;resize:vertical;border:1px solid rgba(203,213,225,.9);border-radius:8px;padding:10px;color:#0f172a;background:#f8fafc;font-size:13px;line-height:1.5;outline:none}.company-focus-side textarea:focus{border-color:#14b8a694;box-shadow:0 0 0 3px #14b8a61f}.company-focus-primary,.company-focus-preview button{color:#fff;background:#0f172a}.company-focus-primary:disabled{opacity:.48;cursor:default}.company-focus-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.company-focus-metric{display:grid;gap:5px;min-height:86px;align-content:center;padding:12px;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 1px #e2e8f0eb}.company-focus-metric span{color:#64748b;font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.company-focus-metric strong{color:#0f172a;font-size:26px;font-weight:920}.company-focus-metric--blue{background:#eff6ff}.company-focus-metric--amber{background:#fffbeb}.company-focus-metric--teal{background:#f0fdfa}.company-focus-section-head{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.company-focus-section-head div{min-width:0;display:inline-flex;align-items:center;gap:7px}.company-focus-section-head strong{color:#334155;font-size:12px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.company-focus-section-head span{color:#64748b;font-size:11px;font-weight:850}.company-focus-graph{display:grid;gap:12px;padding:14px}.company-focus-lanes{min-width:0;display:grid;grid-template-columns:repeat(4,minmax(230px,1fr));gap:12px;overflow-x:auto;padding-bottom:4px}.company-focus-lane{min-width:230px;display:grid;align-content:start;gap:10px;border:1px solid rgba(226,232,240,.92);border-radius:10px;padding:10px;background:#f8fafc}.company-focus-lane header{display:flex;align-items:center;justify-content:space-between;gap:10px}.company-focus-lane header strong{color:#0f172a;font-size:13px}.company-focus-lane header span{color:#64748b;font-size:11px;font-weight:820}.company-focus-node-list{display:grid;gap:9px}.company-focus-node{display:grid;gap:8px;padding:10px;border:1px solid rgba(226,232,240,.92);border-radius:9px;background:#fff}.company-focus-node.is-empty{border-style:dashed;background:#ffffff9e}.company-focus-node div:first-child{display:flex;align-items:center;justify-content:space-between;gap:8px}.company-focus-node span,.company-focus-approval span,.company-focus-artifacts span,.company-focus-preview span{color:#64748b;font-size:10px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.company-focus-node b{color:#0f766e;font-size:10px}.company-focus-node strong,.company-focus-approval strong,.company-focus-artifacts strong,.company-focus-preview strong{color:#0f172a;font-size:13px;line-height:1.3}.company-focus-node p{margin:0;color:#64748b;font-size:12px;line-height:1.45}.company-focus-node small{color:#475569;font-size:11px;line-height:1.4}.company-focus-progress{height:6px;overflow:hidden;border-radius:999px;background:#e2e8f0}.company-focus-progress i{display:block;height:100%;border-radius:inherit;background:#14b8a6}.company-focus-approval{display:grid;gap:7px;padding:10px;border:1px solid rgba(245,158,11,.28);border-radius:9px;background:#fffbeb}.company-focus-approval--approved{border-color:#14b8a647;background:#f0fdfa}.company-focus-approval--rejected{border-color:#f43f5e47;background:#fff1f2}.company-focus-approval div{display:flex;flex-wrap:wrap;gap:7px}.company-focus-approval button{padding:0 10px;color:#334155;background:#fff;box-shadow:inset 0 0 0 1px #cbd5e1d1}.company-focus-artifacts{display:grid;gap:7px;max-height:170px;overflow:auto}.company-focus-artifacts button{display:grid;gap:3px;min-height:54px;padding:9px 10px;border:1px solid rgba(226,232,240,.92);border-radius:8px;background:#f8fafc;text-align:left;cursor:pointer}.company-focus-artifacts button.is-selected{border-color:#14b8a680;background:#ecfeff}.company-focus-preview{display:grid;gap:8px;padding:10px;border:1px solid rgba(20,184,166,.24);border-radius:9px;background:#f0fdfa}.company-focus-preview pre{max-height:180px;overflow:auto;margin:0;padding:10px;border-radius:8px;color:#334155;background:#fff;font-size:11px;line-height:1.5;white-space:pre-wrap}.node-image-wrap{position:relative;flex:1;min-height:0;margin:0 12px 12px;overflow:hidden;border-radius:7px;border:1px solid rgba(226,232,240,.9)}.secure-image{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;background:#f8fafc}.secure-image img{width:100%;height:100%;display:block;object-fit:cover}.secure-image--loading img{opacity:0}.secure-image__loading,.secure-image__fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.secure-image__loading{background:linear-gradient(90deg,#f8fafcb8,#e2e8f06b,#f8fafcb8)}.secure-image__loading span{width:18px;height:18px;border:2px solid rgba(37,99,235,.18);border-top-color:#2563eb;border-radius:999px;animation:spinIcon .9s linear infinite}.secure-image__fallback{color:#64748b;background:linear-gradient(45deg,rgba(226,232,240,.62) 25%,transparent 25%),linear-gradient(-45deg,rgba(226,232,240,.62) 25%,transparent 25%),#f8fafc;background-size:18px 18px}.node-image-wrap--mask{border-color:#0891b25c;background:linear-gradient(45deg,rgba(207,250,254,.44) 25%,transparent 25%),linear-gradient(-45deg,rgba(207,250,254,.44) 25%,transparent 25%),#f8fafc;background-size:18px 18px}.node-mask-badge{display:inline-flex;align-items:center;height:20px;padding:0 8px;border:1px solid rgba(8,145,178,.3);border-radius:999px;color:#0e7490;background:#f0fdfaeb;font-size:10px;font-weight:900;text-transform:uppercase}.node-image-wrap--stack{display:grid}.node-image-wrap--stack>.secure-image{grid-area:1 / 1}.node-image-stack-badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid rgba(37,99,235,.24);border-radius:999px;color:#1d4ed8;background:#ffffffeb;box-shadow:0 6px 16px #0f172a1f;font-size:11px;font-weight:800;line-height:1}.node-image-stack-rail{display:flex;gap:6px;max-width:min(220px,100%);overflow-x:auto;padding:3px;border:1px solid rgba(226,232,240,.86);border-radius:8px;background:#ffffffe6;box-shadow:0 8px 22px #0f172a1f}.node-image-stack-rail button{flex:0 0 30px;width:30px;height:24px;overflow:hidden;padding:0;border:2px solid transparent;border-radius:6px;background:#f8fafc;cursor:pointer}.node-image-stack-rail button.is-active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb24}.node-image-stack-rail button .secure-image{width:100%;height:100%}.node-embed-card{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:minmax(78px,1fr) minmax(44px,.48fr) auto;gap:7px;margin:0 12px 12px;overflow:hidden}.node-embed-preview{position:relative;width:100%;min-height:0;overflow:hidden;border:1px solid rgba(226,232,240,.94);border-radius:7px;background:linear-gradient(135deg,#f8fafcfa,#eff6ffe6),#f8fafc}.node-embed-preview img{display:block;width:100%;height:100%;object-fit:cover}.node-embed-placeholder{width:100%;height:100%;min-height:74px;display:grid;place-items:center;align-content:center;gap:5px;color:#475569}.node-embed-placeholder svg{color:#2563eb}.node-embed-placeholder strong,.node-embed-placeholder span{max-width:calc(100% - 24px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-embed-placeholder strong{color:#0f172a;font-size:12px;font-weight:880}.node-embed-placeholder span{color:#64748b;font-size:10px;font-weight:780}.node-embed-badge{max-width:calc(100% - 14px);overflow:hidden;padding:3px 7px;border:1px solid rgba(191,219,254,.9);border-radius:999px;color:#1d4ed8;background:#eff6ffeb;text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:880;text-transform:uppercase}.node-embed-actions{display:flex;gap:4px;min-height:0}.node-embed-actions button{flex:0 0 auto;min-width:0;min-height:24px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 8px;border:1px solid rgba(203,213,225,.88);border-radius:7px;color:#334155;background:#f8fafc;cursor:pointer;font-size:11px;font-weight:820}.node-embed-actions button:hover{color:#0f172a;border-color:#2563eb38;background:#eff6ff}.node-embed-card textarea{margin:0}.node-embed-source{min-width:0;overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:760}.node-video-card{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:minmax(74px,1fr) minmax(44px,.52fr) auto;gap:7px;margin:0 12px 12px;overflow:hidden}.node-video-player,.node-video-placeholder{width:100%;height:100%;min-height:0;overflow:hidden;border:1px solid rgba(226,232,240,.94);border-radius:7px;background:#0f172a}.node-video-player{display:block;object-fit:contain}.node-video-placeholder{display:grid;place-items:center;align-content:center;gap:5px;color:#475569;background:linear-gradient(135deg,#f8fafcf5,#f1f5f9f5),#f8fafc}.node-video-placeholder svg{color:#2563eb}.node-video-placeholder strong{max-width:calc(100% - 24px);overflow:hidden;color:#0f172a;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:880}.node-video-placeholder span{max-width:calc(100% - 24px);overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:780}.node-video-actions{display:flex;gap:4px;min-height:0}.node-video-actions button{flex:0 0 auto;min-width:0;min-height:24px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 8px;border:1px solid rgba(203,213,225,.88);border-radius:7px;color:#334155;background:#f8fafc;cursor:pointer;font-size:11px;font-weight:820}.node-video-actions button:hover{color:#0f172a;border-color:#2563eb38;background:#eff6ff}.node-video-card textarea{margin:0}.node-video-source{min-width:0;overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:760}.node-remote-monitor{position:relative;flex:1;height:100%;min-height:0;display:block;margin:0;padding:0;border:0;border-radius:8px;background:transparent;overflow:visible;scrollbar-width:none;-ms-overflow-style:none}.node-remote-monitor::-webkit-scrollbar{display:none;width:0;height:0}.node-remote-monitor__surface{height:100%;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);gap:9px;padding:10px;border:1px solid #e6edf6;border-radius:8px;background:#f8fbff;overflow:hidden;overflow:clip;scrollbar-width:none;-ms-overflow-style:none}.node-remote-monitor__surface::-webkit-scrollbar{display:none;width:0;height:0}.node-remote-monitor__head{min-width:0;min-height:38px;display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:0 2px 6px;border-bottom:1px solid rgba(226,232,240,.95)}.node-remote-monitor__titlemark{min-width:0;display:flex;align-items:center;gap:9px}.node-remote-monitor__titlemark>span{width:32px;height:32px;display:grid;place-items:center;border:1px solid rgba(147,197,253,.64);border-radius:7px;color:#2563eb;background:#eff6fff2;box-shadow:inset 0 0 0 1px #fffc}.node-remote-monitor__titlemark>div{min-width:0;display:grid;gap:1px}.node-remote-monitor__titlemark small{overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:8px;font-weight:950;letter-spacing:.08em}.node-remote-monitor__titlemark strong{overflow:hidden;color:#0f172a;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:950;line-height:1.1}.node-remote-monitor__head-actions{min-width:0;display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:8px}.node-remote-monitor__head-actions i{width:7px;height:7px;border-radius:999px;background:#2563eb;box-shadow:0 0 0 3px #2563eb17}.node-remote-monitor__head-status{min-height:26px;display:inline-flex;align-items:center;gap:5px;padding:0 8px;border:1px solid #dbe4ef;border-radius:7px;color:#64748b;background:#f8fafc;font-size:9px;font-weight:950}.node-remote-monitor__head-status strong{color:#263241;letter-spacing:0}.node-remote-monitor__route-status.is-online{border-color:#14b8a659;color:#0f766e;background:#f0fdfa}.node-remote-monitor__route-status.is-online strong{color:#0f766e}.node-remote-monitor__route-status.is-warn{border-color:#f59e0b61;color:#92400e;background:#fffbeb}.node-remote-monitor__route-status.is-warn strong{color:#92400e}.node-remote-monitor__route-status.is-default{border-color:#dbe4ef;color:#64748b;background:#f8fafc}.node-remote-monitor__head-actions button{min-height:26px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 10px;border:1px solid rgba(147,197,253,.75);border-radius:7px;color:#2563eb;background:#fff;box-shadow:0 1px 2px #2563eb1f;cursor:pointer;font-size:10px;font-weight:950}.node-remote-monitor__head-actions button:disabled{color:#94a3b8;background:#f8fafc;cursor:not-allowed}.node-remote-monitor__head-actions button.is-active{border-color:#14b8a670;color:#0f766e;background:#f0fdfa;box-shadow:0 1px 2px #14b8a624}.node-remote-monitor__wall-shell{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 18px;gap:6px;overflow:hidden;overflow:clip}.node-remote-monitor__wall{min-height:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));grid-auto-rows:minmax(0,1fr);align-content:start;gap:6px;overflow:hidden;overflow-x:hidden;overflow-y:hidden;overflow:clip;overflow-x:clip;overflow-y:clip;overscroll-behavior:contain;scrollbar-width:none;scrollbar-gutter:auto;-ms-overflow-style:none}.node-remote-monitor__wall::-webkit-scrollbar{display:none;width:0;height:0}.node-remote-monitor__wall::-webkit-scrollbar-thumb{border-radius:999px;background:#cbd5e1}.node-remote-monitor__wall span{position:relative;min-width:0;min-height:0;overflow:hidden;border:2px solid #e7edf5;background:linear-gradient(135deg,#f8fafcf2,#fffffff5),#fff;cursor:pointer}.node-remote-monitor__wall span.is-online{border-color:#dbeafe;background:linear-gradient(135deg,#eff6fff5,#fffffffa),#fff}.node-remote-monitor__wall span.is-selected{border-color:#93c5fd;box-shadow:inset 0 0 0 1px #3b82f647}.node-remote-monitor__wall span.is-input-active{border-color:#2dd4bf;box-shadow:inset 0 0 0 1px #2dd4bf66,0 0 0 1px #2dd4bf29;cursor:crosshair}.node-remote-monitor__wall span:focus-visible{outline:2px solid rgba(37,99,235,.55);outline-offset:-2px}.node-remote-monitor__wall canvas{width:100%;height:100%;display:block}.node-remote-monitor__wall em{position:absolute;top:5px;right:5px;display:inline-flex;align-items:center;gap:3px;padding:2px 5px;border:1px solid rgba(13,148,136,.3);border-radius:999px;color:#0f766e;background:#f0fdfaf0;font-size:8px;font-style:normal;font-weight:900;text-transform:uppercase}.node-remote-monitor__taskbar{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;gap:6px}.node-remote-monitor__taskbar input{min-width:0;height:26px;padding:0 9px;border:1px solid #dbe4ef;border-radius:7px;color:#263241;background:#fff;font-size:11px;font-weight:760}.node-remote-monitor__taskbar input::placeholder{color:#94a3b8}.node-remote-monitor__taskbar button{min-width:0;height:26px;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:0 8px;border:1px solid #dbe4ef;border-radius:7px;color:#2563eb;background:#eff6ff;cursor:pointer;font-size:10px;font-weight:900}.node-remote-monitor__taskbar button:disabled{color:#94a3b8;background:#f8fafc;cursor:not-allowed}.node-remote-monitor__wall small{position:absolute;left:6px;right:6px;bottom:5px;overflow:hidden;color:#475569;text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:900;text-shadow:0 1px 0 rgba(255,255,255,.8)}.node-remote-monitor__pager{min-height:0;display:grid;grid-template-rows:20px minmax(0,1fr) 20px;gap:5px;align-items:stretch}.node-remote-monitor__pager button{width:18px;height:20px;display:grid;place-items:center;padding:0;border:1px solid #dbe4ef;border-radius:6px;color:#64748b;background:#fff;cursor:pointer}.node-remote-monitor__pager button:disabled{color:#cbd5e1;background:#f8fafc;cursor:not-allowed}.node-remote-monitor__pager-track{position:relative;display:block;min-height:0;border-radius:999px;background:linear-gradient(180deg,#edf3fb,#f8fafc);overflow:hidden}.node-remote-monitor__pager-track strong{position:absolute;left:3px;right:3px;top:var(--remote-node-page-top, 0%);height:var(--remote-node-page-height, 100%);min-height:16px;border-radius:999px;background:linear-gradient(180deg,#cbd5e1,#94a3b8)}.node-remote-monitor__footer{min-width:0;display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:6px}.node-remote-monitor__footer-scale,.node-remote-monitor__footer-group,.node-remote-monitor__footer-filter,.node-remote-monitor__footer-status{min-width:0;display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px}.node-remote-monitor__footer-scale{flex:none}.node-remote-monitor__footer-group{flex:none;min-height:22px;padding:0 7px;border:1px solid #e0e6ef;border-radius:999px;color:#5f6b7a;background:#fff;font-size:9px;font-weight:950}.node-remote-monitor__footer-filter{flex:0 1 286px;min-height:22px;padding:0 7px;border:1px solid #e0e6ef;border-radius:999px;color:#5f6b7a;background:#fff;font-size:9px;font-weight:950}.node-remote-monitor__footer-filter input{width:74px;min-width:46px;height:18px;border:0;outline:none;color:#263241;background:transparent;font:inherit;font-size:10px;font-weight:850}.node-remote-monitor__footer-filter input::placeholder{color:#94a3b8}.node-remote-monitor__footer-group select,.node-remote-monitor__footer-filter select{max-width:86px;border:0;outline:none;color:#263241;background:transparent;cursor:pointer;font:inherit;font-size:10px}.node-remote-monitor__footer-filter select{max-width:68px}.node-remote-monitor__footer-status{flex:1 1 320px;justify-content:center}.node-remote-monitor__footer-scale button{width:22px;min-width:22px;justify-content:center;padding:0}.node-remote-monitor__footer span{min-height:22px;display:inline-flex;align-items:center;gap:4px;padding:0 8px;border:1px solid #e0e6ef;border-radius:999px;color:#5f6b7a;background:#fff;font-size:10px;font-weight:900}.node-remote-monitor__footer strong{color:#263241;letter-spacing:0}.node-remote-monitor__footer i{width:6px;height:6px;border-radius:50%;background:#2dd4bf}.node-remote-monitor__footer button{min-height:22px;display:inline-flex;align-items:center;gap:4px;padding:0 8px;border:1px solid #dbe4ef;border-radius:999px;color:#2563eb;background:#eff6ff;cursor:pointer;font-size:10px;font-weight:900}.node-remote-monitor__footer button:disabled{color:#94a3b8;background:#f8fafc;cursor:not-allowed}.node-remote-monitor__message{min-width:0;margin:0;overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:760;text-align:center}.node-remote-monitor__external-rail{position:absolute;top:calc(100% + 8px);left:50%;z-index:24;width:min(max(100%,720px),calc(100vw - 48px));max-width:calc(100vw - 48px);display:grid;grid-template-columns:minmax(0,1fr);gap:5px;padding:6px;border:1px solid rgba(203,213,225,.82);border-radius:8px;background:#fffffff2;box-shadow:0 0 0 1px #ffffffbd inset,0 14px 28px #0f172a24;cursor:default;pointer-events:auto;transform:translate(-50%)}.node-remote-monitor__external-rail .node-remote-monitor__head-actions,.node-remote-monitor__external-rail .node-remote-monitor__taskbar,.node-remote-monitor__external-rail .node-remote-monitor__footer{width:100%}.node-remote-monitor__external-rail .node-remote-monitor__head-actions{padding-bottom:2px}.node-remote-monitor__external-rail .node-remote-monitor__footer{padding-top:1px}.node-remote-monitor__external-rail .node-remote-monitor__message{max-width:100%}.node-remote-control{flex:1 1 auto;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:8px;margin:0 12px 12px}.node-remote-control__bar{min-height:30px;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:7px}.node-remote-control__bar strong{min-width:0;overflow:hidden;color:#0f172a;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:900}.node-remote-control__bar span{color:#64748b;font-size:10px;font-weight:850;text-transform:uppercase}.node-remote-control__bar button{min-height:28px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 8px;border-radius:7px;color:#334155;background:#f1f5f9;cursor:pointer;font-size:10px;font-weight:850}.node-remote-control__bar button:disabled{color:#94a3b8;cursor:not-allowed}.node-remote-control__screen{position:relative;min-height:0;overflow:hidden;border:1px solid rgba(148,163,184,.34);border-radius:7px;background:#020617;outline:none}.node-remote-control__screen.is-input-active{border-color:#2563ebb8;box-shadow:0 0 0 3px #2563eb29;cursor:crosshair}.node-remote-control__screen canvas{width:100%;height:100%;display:block}.node-remote-control__screen em{position:absolute;right:8px;top:8px;display:inline-flex;align-items:center;gap:4px;padding:3px 6px;border-radius:999px;color:#1d4ed8;background:#dbeafef0;font-size:10px;font-style:normal;font-weight:900}.node-remote-control__taskbar{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.node-remote-control__taskbar input{min-width:0;height:28px;padding:0 9px;border:1px solid rgba(203,213,225,.9);border-radius:7px;color:#0f172a;background:#fff;font-size:10px;font-weight:780;outline:none}.node-remote-control__taskbar input:focus{border-color:#2563ebad;box-shadow:0 0 0 3px #2563eb1f}.node-remote-control__taskbar input::placeholder{color:#94a3b8}.node-remote-control__taskbar button{height:28px;display:inline-flex;align-items:center;justify-content:center;gap:5px;padding:0 9px;border-radius:7px;color:#1d4ed8;background:#dbeafe;cursor:pointer;font-size:10px;font-weight:900}.node-remote-control__taskbar button:disabled{color:#94a3b8;background:#f1f5f9;cursor:not-allowed}.node-remote-control__footer{display:flex;flex-wrap:wrap;gap:6px}.node-remote-control__footer span{min-width:0;display:inline-flex;align-items:center;gap:4px;min-height:21px;padding:0 7px;border-radius:999px;color:#64748b;background:#f1f5f9;font-size:9px;font-weight:850}.node-remote-control__footer strong{max-width:128px;overflow:hidden;color:#0f172a;text-overflow:ellipsis;white-space:nowrap}.node-remote-control__message{min-width:0;margin:-2px 0 0;overflow:hidden;color:#64748b;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:760}.node-asset-card{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:42px minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:10px;margin:0 12px 12px;padding:12px;border:1px solid rgba(226,232,240,.86);border-radius:7px;background:#ffffffc7}.node-asset-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:9px;color:#475569;background:#f1f5f9}.node-asset-card--pdf .node-asset-icon{color:#dc2626;background:#fee2e2}.node-asset-card--file .node-asset-icon{color:#1d4ed8;background:#dbeafe}.node-asset-card--directory .node-asset-icon{color:#b45309;background:#fef3c7}.node-asset-copy{min-width:0;display:grid;align-content:center;gap:4px}.node-asset-copy strong,.node-asset-copy span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-asset-copy strong{color:#0f172a;font-size:13px}.node-asset-copy span{color:#64748b;font-size:11px;font-weight:760}.node-asset-meta{min-width:0;display:grid;grid-template-columns:48px minmax(0,1fr);gap:3px 6px;margin:3px 0 0;color:#64748b;font-size:10px;line-height:1.3}.node-asset-meta dt{color:#92400e;font-weight:850}.node-asset-meta dd{min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-asset-actions{display:flex;gap:4px}.node-asset-actions button{min-height:24px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;border-radius:7px;color:#334155;background:#f1f5f9;cursor:pointer;font-size:11px;font-weight:820}.node-asset-actions button:hover{color:#0f172a;background:#e2e8f0}.node-result-row{position:relative;z-index:2;flex:0 0 auto;display:flex;justify-content:space-between;gap:8px;padding:0 12px 12px;pointer-events:auto}.node-pin,.node-context-source{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:0 8px;border-radius:999px;color:#475569;background:#fff;border:1px solid rgba(203,213,225,.92);cursor:pointer;font-size:10px;font-weight:850}.node-pin--context{color:#1d4ed8;border-color:#3b82f647}.node-pin--result{color:#c2410c;border-color:#f9731652}.node-pin.has-result{box-shadow:0 0 14px #f9731638}.node-pin.can-receive,.node-context-source.can-receive{border-color:#2563eb;background:#eff6ff}.node-context-source{position:absolute;top:50%;right:-14px;width:28px;height:28px;justify-content:center;padding:0;transform:translateY(-50%)}.node-action-toast{position:fixed;top:82px;left:74px;z-index:240;min-height:36px;display:inline-flex;align-items:center;max-width:min(420px,calc(100vw - 96px));padding:0 12px;border:1px solid rgba(15,118,110,.22);border-radius:9px;color:#0f766e;background:#f0fdfaf0;font-size:13px;font-weight:820}.top-tabbar{position:fixed;left:56px;right:0;top:0;z-index:110;display:flex;height:36px;align-items:stretch;width:auto;max-width:none;overflow-x:auto;overflow-y:hidden;pointer-events:auto;border-bottom:1px solid rgba(203,213,225,.78);background:linear-gradient(90deg,#f8fafcf5,#f1f5f9e6);box-shadow:0 8px 24px #0f172a0a;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.top-tabbar::-webkit-scrollbar{height:0}.tab-shell{flex:0 0 auto;display:inline-flex;align-items:stretch;max-width:250px;border-right:1px solid rgba(203,213,225,.72);background:#ffffffd1}.tab-shell.is-active{background:#eff6fff2}.tab-shell.is-dragging{opacity:.62}.tab-shell.is-drag-over{box-shadow:inset 3px 0 #2563eb;background:#dbeafef5}.tab-button{max-width:220px;min-width:80px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;color:#2563eb;background:transparent;cursor:pointer;font-size:12px;font-weight:780}.tab-button--current{justify-content:flex-start;padding:0 12px}.tab-button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-button--plain{flex:0 0 auto;min-width:42px;border-right:1px solid rgba(203,213,225,.72);color:#64748b;background:#ffffffd1}.tab-close{flex:0 0 28px;width:28px;border:0;color:#94a3b8;background:transparent;cursor:pointer}.tab-close:hover{color:#ef4444;background:#fee2e2d1}.local-board-backdrop{position:fixed;top:36px;right:0;bottom:0;left:56px;z-index:180;background:#0f172a0a;cursor:default}.local-board-panel{position:fixed;top:108px;left:68px;z-index:190;width:min(360px,calc(100vw - 88px));max-height:min(500px,calc(100vh - 132px));display:grid;gap:10px;overflow:auto;padding:12px;border-radius:10px}.project-gallery-backdrop{top:36px;right:0;bottom:0;left:56px;z-index:180;background:#0f172a0b}.project-gallery-shell{position:fixed;top:36px;right:16px;bottom:16px;left:68px;z-index:190;display:flex;align-items:center;justify-content:center;padding-bottom:clamp(48px,8vh,104px);pointer-events:none}.project-gallery-positioner{width:100%;max-width:min(2720px,calc(100vw - 112px));transform:translateY(5vh);pointer-events:auto}.project-gallery-panel{position:relative;top:auto;left:auto;width:min(92vw,2720px);max-width:calc(100vw - 112px);height:min(clamp(640px,min(72vh,calc(100vh - 250px)),1280px),calc(100vh - 96px));max-height:none;grid-template-rows:auto minmax(0,1fr);gap:12px;overflow:hidden;padding:14px;border-radius:8px;border:1px solid rgba(203,213,225,.92);box-shadow:0 20px 60px #0f172a24}.local-board-panel.project-gallery-panel{left:auto;right:auto;max-height:none;overflow:hidden}.project-gallery-panel__head{min-height:62px;padding-bottom:10px;border-bottom:1px solid rgba(226,232,240,.88)}.project-gallery-title{display:grid;gap:3px;min-width:0}.project-gallery-title__eyebrow{display:inline-flex;align-items:center;gap:7px}.project-gallery-title p{margin:0;color:#64748b;font-size:12px;font-weight:720}.project-gallery-body{min-height:0;display:grid;grid-template-columns:clamp(220px,12vw,320px) minmax(0,1fr);gap:12px}.project-gallery-folder-rail,.project-gallery-board-area{min-height:0;display:grid;gap:10px}.project-gallery-folder-rail{align-content:start;padding:10px;border:1px solid rgba(226,232,240,.92);border-radius:8px;background:#f8fafcb8}.project-gallery-board-area{overflow:hidden}.project-gallery-current-name{display:grid;gap:6px}.project-gallery-current-name span,.project-gallery-rail-card span{color:#64748b;font-size:11px;font-weight:850;text-transform:uppercase}.project-gallery-rail-card{display:grid;gap:4px;padding:10px;border:1px solid rgba(203,213,225,.82);border-radius:8px;background:#fff}.project-gallery-rail-card strong{color:#0f172a;font-size:13px;font-weight:900}.project-gallery-rail-card small{color:#64748b;font-size:11px;font-weight:740}.project-gallery-workspace-summary small{max-height:44px;overflow:hidden;word-break:break-all}.project-gallery-startup-toggle{min-height:36px;display:inline-flex;align-items:center;gap:9px;padding:0 10px;border:1px solid rgba(203,213,225,.82);border-radius:8px;color:#334155;background:#fff;cursor:pointer;font-size:12px;font-weight:850}.project-gallery-startup-toggle input{width:14px;height:14px;accent-color:#2563eb}.project-gallery-board-section{min-height:0;overflow:hidden}.project-gallery-board-grid{min-height:0;max-height:none;grid-template-columns:repeat(auto-fill,minmax(clamp(210px,10vw,280px),1fr));align-content:start;gap:8px;overflow:auto;padding:1px 4px 4px 1px}.project-gallery-board-card{min-width:0;min-height:78px;border:1px solid rgba(226,232,240,.86);background:#fff}.project-gallery-board-card.is-active{border-color:#2563eb61;background:#eff6ff}.project-gallery-board-card .local-board-row__main{min-height:76px;align-items:flex-start;padding:12px}.project-gallery-board-card .local-board-row__action{height:76px}.project-gallery-open-tab-badge{width:fit-content;padding:3px 6px;border-radius:999px;color:#1d4ed8!important;background:#dbeafeeb;font-size:10px!important;font-weight:900!important}.project-gallery-bridge-section{min-height:0;overflow:hidden;padding-top:2px}.project-gallery-workspace-panel{display:grid;gap:8px;padding:10px;border:1px solid rgba(203,213,225,.86);border-radius:8px;background:#f8fafcd6}.project-gallery-workspace-panel__main{display:flex;align-items:flex-start;gap:9px;min-width:0}.project-gallery-workspace-panel__main svg{flex:0 0 auto;margin-top:2px;color:#2563eb}.project-gallery-workspace-panel__main span{min-width:0;display:grid;gap:2px}.project-gallery-workspace-panel__main strong{color:#0f172a;font-size:12px;font-weight:900}.project-gallery-workspace-panel__main small{color:#64748b;font-size:11px;font-weight:720;line-height:1.35;word-break:break-all}.project-gallery-workspace-panel__actions,.project-gallery-workspace-history{display:flex;flex-wrap:wrap;gap:6px}.project-gallery-workspace-panel__actions button,.project-gallery-workspace-history button{min-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;border-radius:7px;border:1px solid rgba(203,213,225,.88);color:#334155;background:#fff;font-size:11px;font-weight:850;cursor:pointer}.project-gallery-workspace-panel__actions button:disabled,.project-gallery-workspace-history button:disabled{cursor:not-allowed;opacity:.55}.project-gallery-workspace-history button{max-width:100%;justify-content:flex-start;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-gallery-bridge-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));max-height:148px}.local-board-section{display:grid;gap:8px;min-height:0}.local-board-section__title{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.local-board-section__title span{color:#334155;font-size:12px;font-weight:900}.local-board-section__title small{color:#64748b;font-size:11px;font-weight:760}.local-board-section__title button{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#475569;background:#f1f5f9;cursor:pointer}.local-board-panel__head,.local-board-state,.local-board-row{display:flex;align-items:center;gap:10px;min-width:0}.local-board-panel__head{justify-content:space-between}.local-board-panel__actions{display:flex;gap:6px}.local-board-panel__head div{display:grid;gap:2px;min-width:0}.local-board-panel__head span{color:#64748b;font-size:11px;font-weight:850;letter-spacing:.06em;text-transform:uppercase}.local-board-panel__head strong{color:#0f172a;font-size:17px}.board-name-input{width:100%;min-width:0;height:32px;padding:0 8px;border:1px solid rgba(203,213,225,.86);border-radius:7px;color:#0f172a;background:#ffffffe6;font-size:14px;font-weight:850;outline:none}.board-name-input:focus{border-color:#2563eb85;box-shadow:0 0 0 3px #2563eb1f}.local-board-panel__actions button,.local-board-state button{min-width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#475569;background:#f1f5f9;cursor:pointer}.local-board-panel__actions button:disabled{opacity:.55;cursor:default}.project-storage-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:4px;border:1px solid rgba(226,232,240,.9);border-radius:9px;background:#f8fafc}.project-storage-tabs button{min-width:0;min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:7px;color:#64748b;background:transparent;cursor:pointer;font-size:12px;font-weight:850}.project-storage-tabs button.is-active{color:#0f172a;background:#fff;box-shadow:0 8px 20px #0f172a14}.project-cloud-shell{min-height:0;display:grid;gap:10px;padding:14px;border:1px solid rgba(191,219,254,.92);border-radius:10px;color:#334155;background:linear-gradient(180deg,#eff6ff,#fff 76%)}.project-cloud-shell__icon{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;color:#1d4ed8;background:#ffffffdb;box-shadow:inset 0 0 0 1px #93c5fd6b}.project-cloud-shell strong{color:#0f172a;font-size:14px;font-weight:900}.project-cloud-shell p{margin:0;color:#475569;font-size:12px;line-height:1.55}.project-cloud-shell__current{display:grid;gap:3px;padding:10px;border:1px solid rgba(203,213,225,.82);border-radius:8px;background:#ffffffdb}.project-cloud-shell__current span{color:#1d4ed8;font-size:11px;font-weight:900;text-transform:uppercase}.project-cloud-shell__current small{min-width:0;overflow:hidden;color:#64748b;font-size:11px;font-weight:760;text-overflow:ellipsis;white-space:nowrap}.project-cloud-shell button{min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;color:#fff;background:#0f172a;cursor:pointer;font-size:12px;font-weight:880}.project-cloud-shell button:disabled{color:#64748b;background:#dbeafe;cursor:default}.local-board-state{min-height:36px;padding:0 10px;border:1px solid rgba(203,213,225,.72);border-radius:8px;color:#475569;background:#f8fafc;font-size:12px;font-weight:820}.local-board-state--connected{color:#047857;border-color:#10b98147;background:#ecfdf5}.local-board-state--blocked{color:#1d4ed8;border-color:#3b82f640;background:#eff6ff}.local-board-state--unavailable{color:#b45309;border-color:#f59e0b4d;background:#fffbeb}.local-board-state button{width:auto;min-width:62px;margin-left:auto;padding:0 10px;color:#fff;background:#0f172a;font-size:11px;font-weight:850}.local-board-message{margin:0;color:#64748b;font-size:12px;line-height:1.5}.local-board-export{width:100%;min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;color:#fff;background:#0f172a;cursor:pointer;font-size:12px;font-weight:880}.local-board-export:disabled{cursor:default;opacity:.52}.local-board-list{display:grid;gap:6px;overflow:auto;padding-right:2px}.local-board-list--stored{max-height:248px}.local-board-row{width:100%;min-height:48px;padding:8px 10px;border-radius:8px;color:#334155;background:#f8fafcd1;cursor:pointer;text-align:left}.local-board-row:hover:not(:disabled){background:#eef6ff}.local-board-row.is-active{border:1px solid rgba(37,99,235,.26);background:#eff6ff}.local-board-row:disabled{cursor:default;opacity:.72}.local-board-row--compound{display:flex;align-items:stretch;padding:0;overflow:hidden}.local-board-row--compound.is-editing{padding:6px}.local-board-row__main{min-width:0;min-height:46px;flex:1;display:inline-flex;align-items:center;gap:10px;padding:8px 10px;color:inherit;text-align:left;cursor:pointer}.local-board-row__action{width:36px;height:46px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;color:#64748b;cursor:pointer}.local-board-row__action:disabled{opacity:.35;cursor:default}.local-board-row__action:hover:not(:disabled){color:#0f172a;background:#e2e8f0c7}.stored-board-rename{min-width:0;width:100%;display:grid;grid-template-columns:minmax(0,1fr) 30px 30px;align-items:center;gap:6px}.stored-board-rename input{min-width:0;height:34px;padding:0 10px;border:1px solid rgba(37,99,235,.36);border-radius:7px;outline:none;color:#0f172a;background:#fff;font-size:13px;font-weight:780}.stored-board-rename input:focus{border-color:#2563ebb3;box-shadow:0 0 0 3px #2563eb1f}.stored-board-rename button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#475569;background:#e2e8f0;cursor:pointer}.stored-board-rename button:hover{color:#0f172a;background:#cbd5e1}.local-board-row>svg,.local-board-row__main>svg{flex:0 0 auto;color:#2563eb}.local-board-row span{min-width:0;display:grid;gap:3px;flex:1}.local-board-row strong,.local-board-row small{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.local-board-row strong{color:#0f172a;font-size:13px}.local-board-row small{color:#64748b;font-size:11px;font-weight:760}.runtime-status-cluster{position:fixed;left:72px;bottom:156px;z-index:155;width:min(430px,calc(100vw - 126px));display:grid;gap:8px;pointer-events:none}.runtime-status-row{display:flex;flex-wrap:wrap;gap:8px;pointer-events:auto}.runtime-status-pill{min-width:0;min-height:34px;display:inline-flex;align-items:center;gap:7px;padding:0 7px 0 10px;border:1px solid rgba(203,213,225,.76);border-radius:8px;color:#475569;background:#ffffffeb;box-shadow:var(--soft-shadow);-webkit-backdrop-filter:blur(18px) saturate(1.1);backdrop-filter:blur(18px) saturate(1.1);font-size:12px;font-weight:840}.runtime-status-pill>span:last-of-type{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runtime-status-pill__icon{flex:0 0 auto;display:inline-flex;color:currentColor}.runtime-status-pill--connected,.runtime-status-pill--sync-ready{color:#047857;border-color:#10b9814d;background:#ecfdf5f0}.runtime-status-pill--checking,.runtime-status-pill--sync-syncing{color:#b45309;border-color:#f59e0b57;background:#fffbebf0}.runtime-status-pill--blocked{color:#1d4ed8;border-color:#3b82f647;background:#eff6fff0}.runtime-status-pill--unavailable,.runtime-status-pill--sync-error{color:#b91c1c;border-color:#f8717157;background:#fef2f2f0}.runtime-status-pill--idle,.runtime-status-pill--sync-offline{color:#64748b;background:#f8fafcf0}.runtime-status-pill__button,.runtime-status-pill__action,.runtime-local-warning button{flex:0 0 auto;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;cursor:pointer}.runtime-status-pill__button{width:26px;color:currentColor;background:#ffffffa8}.runtime-status-pill__button:disabled{cursor:default;opacity:.52}.runtime-status-pill__action{min-width:54px;padding:0 9px;color:#fff;background:#0f172a;font-size:11px;font-weight:860}.runtime-local-warning{min-height:58px;display:grid;grid-template-columns:30px minmax(0,1fr) 28px;align-items:center;gap:9px;padding:9px;border:1px solid rgba(245,158,11,.36);border-radius:8px;color:#92400e;background:#fffbebf5;box-shadow:var(--soft-shadow);pointer-events:none}.runtime-local-warning__icon{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;color:#b45309;background:#fef3c7}.runtime-local-warning__copy{min-width:0;display:grid;gap:2px}.runtime-local-warning__copy strong{color:#78350f;font-size:12px;font-weight:900}.runtime-local-warning__copy span{min-width:0;overflow:hidden;color:#92400e;font-size:11px;line-height:1.35;text-overflow:ellipsis}.runtime-local-warning button{width:28px;color:#92400e;background:#fef3c7d6;pointer-events:auto}.floating-panel,.canvas-toolbar,.global-input-shell,.bottom-controls button{border:1px solid rgba(203,213,225,.72);background:linear-gradient(180deg,#ffffffc7,#f1f5f994);box-shadow:0 14px 28px #0f172a14,inset 0 1px #ffffffb8;-webkit-backdrop-filter:blur(18px) saturate(1.12);backdrop-filter:blur(18px) saturate(1.12)}.canvas-toolbar{position:fixed;top:48px;left:calc(50% + 28px);z-index:140;display:flex;align-items:center;gap:6px;min-height:48px;padding:6px;border-radius:7px;transform:translate(-50%);pointer-events:auto;scrollbar-width:none}.canvas-toolbar::-webkit-scrollbar{display:none}.canvas-toolbar button,.bottom-controls button{width:36px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:#64748b;background:transparent;cursor:pointer}.canvas-toolbar button:hover:not(:disabled),.bottom-controls button:hover{color:#0f172a;background:#e2e8f0bf}.canvas-toolbar button:disabled{cursor:default;opacity:.38}.toolbar-separator{width:1px;height:28px;margin-inline:4px;background:#cbd5e1cc}.search-panel{position:fixed;top:108px;right:32px;z-index:150;width:min(330px,calc(100vw - 120px));display:grid;gap:6px;min-height:46px;padding:8px 10px;border-radius:7px}.search-input-row{display:flex;align-items:center;gap:8px;min-width:0}.search-panel input{min-width:0;flex:1;border:0;outline:none;color:#334155;background:transparent;font-size:13px}.search-panel button{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;color:#475569;background:transparent}.search-panel button:hover:not(:disabled){color:#0f172a;background:#eef4ff}.search-panel button:disabled{cursor:default;opacity:.35}.search-count{flex:0 0 auto;max-width:74px;overflow:hidden;color:#64748b;font-size:11px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.search-current{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding-left:24px;color:#64748b;font-size:11px;font-weight:800}.search-current button{width:auto;max-width:208px;height:24px;padding:0 8px;overflow:hidden;color:#1d4ed8;text-overflow:ellipsis;white-space:nowrap}.search-results{position:absolute;top:calc(100% + 8px);right:0;width:360px;max-width:calc(100vw - 120px);display:grid;gap:6px;padding:8px;border:1px solid rgba(203,213,225,.82);border-radius:9px;background:#fffffff5;box-shadow:var(--shadow)}.search-results button{display:grid;gap:3px;width:100%;height:auto;padding:10px;border-radius:7px;color:#334155;background:transparent;cursor:pointer;text-align:left}.search-results button:hover{background:#f1f5f9}.search-results button.is-active{color:#0f172a;background:#eaf1ff;box-shadow:inset 3px 0 #3b82f6}.search-results span{overflow:hidden;color:#64748b;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.connection-toast{position:fixed;left:72px;bottom:86px;z-index:170;display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:8px;color:#334155;font-size:12px;font-weight:750}.connection-toast button{padding:4px 8px;border-radius:6px;color:#1d4ed8;background:#eff6ff;cursor:pointer}.result-popover{position:fixed;right:30px;top:112px;z-index:180;width:min(520px,calc(100vw - 110px));max-height:min(560px,calc(100vh - 170px));overflow:hidden;border-radius:10px}.result-popover__header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid rgba(203,213,225,.7)}.result-popover__header button{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;color:#64748b;background:#f1f5f9;cursor:pointer}.result-popover__actions{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid rgba(203,213,225,.62);background:#f8fafcb8}.result-popover__actions button{min-width:0;height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 10px;border-radius:7px;color:#334155;background:#ffffffd1;cursor:pointer;font-size:12px;font-weight:850;white-space:nowrap}.result-popover__actions button:hover{color:#1d4ed8;background:#eff6ff}.result-popover__body{max-height:min(456px,calc(100vh - 276px));margin:0;overflow:auto;padding:14px;color:#1f2937;background:#ffffffb8;font:15px/1.62 Inter,Noto Sans KR,ui-sans-serif,system-ui;white-space:pre-wrap}.pdf-viewer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:265;display:flex;align-items:center;justify-content:center;padding:22px 22px 22px 78px;background:#0f172a38}.pdf-viewer-dialog{width:min(980px,calc(100vw - 120px));height:min(780px,calc(100vh - 48px));display:grid;grid-template-rows:56px minmax(0,1fr);overflow:hidden;border:1px solid rgba(203,213,225,.92);border-radius:12px;background:#fff;box-shadow:0 30px 90px #0f172a47}.pdf-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px 0 16px;border-bottom:1px solid rgba(226,232,240,.9);background:#f8fafceb}.pdf-viewer-head div:first-child{min-width:0;display:grid;gap:2px}.pdf-viewer-head span{color:#64748b;font-size:11px;font-weight:860;letter-spacing:.06em;text-transform:uppercase}.pdf-viewer-head strong{min-width:0;overflow:hidden;color:#0f172a;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.pdf-viewer-actions{display:flex;gap:8px;flex:0 0 auto}.pdf-viewer-actions button{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:#64748b;background:#e2e8f0;cursor:pointer}.pdf-viewer-actions button:hover{color:#0f172a;background:#cbd5e1}.pdf-viewer-frame{width:100%;height:100%;border:0;background:#f8fafc}.directory-settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:264;display:flex;align-items:center;justify-content:center;padding:24px 24px 24px 80px;background:#0f172a2e}.directory-settings-dialog{width:min(520px,calc(100vw - 112px));max-height:min(440px,calc(100vh - 48px));display:grid;grid-template-rows:62px minmax(0,1fr) 58px;overflow:hidden;border:1px solid rgba(203,213,225,.92);border-radius:12px;background:#fff;box-shadow:0 22px 60px #0f172a33}.directory-settings-head,.directory-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 18px;border-bottom:1px solid rgba(226,232,240,.9)}.directory-settings-head div{min-width:0;display:grid;gap:4px}.directory-settings-head span{display:inline-flex;align-items:center;gap:7px;color:#92400e;font-size:11px;font-weight:900;text-transform:uppercase}.directory-settings-head strong{min-width:0;overflow:hidden;color:#0f172a;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.directory-settings-head button,.directory-settings-footer button{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid rgba(203,213,225,.92);border-radius:8px;background:#f8fafc;color:#475569;font-weight:820}.directory-settings-body{min-height:0;display:grid;align-content:start;gap:14px;overflow:auto;padding:18px}.directory-setting-row{min-width:0;display:grid;gap:7px}.directory-setting-row span{display:inline-flex;align-items:center;gap:7px;color:#334155;font-size:12px;font-weight:860}.directory-setting-row input{width:100%;min-width:0;height:38px;border:1px solid #cbd5e1;border-radius:8px;padding:0 11px;color:#0f172a;background:#fff;font-size:13px;font-weight:720;outline:0}.directory-setting-row input:focus{border-color:#d97706;box-shadow:0 0 0 3px #d9770624}.directory-settings-footer{justify-content:flex-end;border-top:1px solid rgba(226,232,240,.9);border-bottom:0;background:#f8fafc}.directory-settings-footer button{min-width:86px}.directory-settings-footer button.is-primary{border-color:#0f172a;color:#fff;background:#0f172a}.template-launcher-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:250;display:flex;align-items:flex-start;justify-content:center;padding:108px 24px 120px 78px;background:#0f172a12}.template-launcher-panel{width:min(760px,calc(100vw - 118px));max-height:min(720px,calc(100vh - 152px));display:grid;grid-template-rows:auto auto auto minmax(0,auto) auto auto;overflow:hidden;border-radius:12px;background:#fffffffa}.template-launcher-head,.template-launcher-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid rgba(226,232,240,.88)}.template-launcher-head div{min-width:0;display:grid;gap:3px}.template-launcher-head span{color:#64748b;font-size:11px;font-weight:880;letter-spacing:.06em;text-transform:uppercase}.template-launcher-head strong{overflow:hidden;color:#0f172a;font-size:18px;text-overflow:ellipsis;white-space:nowrap}.template-launcher-head button,.template-launcher-secondary,.template-launcher-primary{min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:8px;cursor:pointer;font-size:12px;font-weight:840}.template-launcher-head button{width:34px;color:#64748b;background:#f1f5f9}.template-launcher-tabs{display:flex;gap:6px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid rgba(226,232,240,.82);background:#f8fafcd1;scrollbar-width:none}.template-launcher-tabs::-webkit-scrollbar{display:none}.template-launcher-tabs button{min-width:0;min-height:34px;display:inline-flex;align-items:center;gap:7px;padding:0 10px;border-radius:8px;color:#64748b;background:transparent;cursor:pointer;font-size:12px;font-weight:800}.template-launcher-tabs button.is-active{color:#0f172a;background:#fff;box-shadow:inset 0 0 0 1px #cbd5e1d1}.template-launcher-tabs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.template-launcher-description,.template-launcher-prompt{margin:0;color:#475569;font-size:13px;line-height:1.55}.template-launcher-description{padding:12px 16px 0}.template-launcher-option-block,.template-launcher-form{display:grid;gap:10px;padding:12px 16px 0}.template-launcher-chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}.template-launcher-chips button{min-width:0;min-height:74px;display:grid;gap:4px;align-content:start;padding:10px;border:1px solid rgba(226,232,240,.9);border-radius:8px;color:#334155;background:#fff;cursor:pointer;text-align:left}.template-launcher-chips button.is-active{border-color:#2563eb70;background:#eff6ff}.template-launcher-chips strong,.template-launcher-chips span{min-width:0;overflow:hidden;text-overflow:ellipsis}.template-launcher-chips strong{color:#0f172a;font-size:13px;white-space:nowrap}.template-launcher-chips span{color:#64748b;font-size:11px;line-height:1.4}.template-launcher-form{overflow:auto;padding-bottom:10px}.template-launcher-field{display:grid;grid-template-columns:minmax(0,.92fr) minmax(220px,1.08fr);gap:12px;align-items:start;padding:11px 12px;border:1px solid rgba(226,232,240,.9);border-radius:9px;background:#fff}.template-launcher-field span{min-width:0;display:grid;gap:4px}.template-launcher-field strong{color:#0f172a;font-size:13px}.template-launcher-field small{color:#64748b;font-size:11px;line-height:1.4}.template-launcher-field input,.template-launcher-field select,.template-launcher-field textarea{width:100%;min-width:0;border:1px solid rgba(203,213,225,.9);border-radius:8px;color:#0f172a;background:#f8fafc;font-size:13px;outline:none}.template-launcher-field input,.template-launcher-field select{height:36px;padding:0 10px}.template-launcher-field textarea{min-height:86px;max-height:180px;resize:vertical;padding:9px 10px;line-height:1.5}.template-launcher-field input:focus,.template-launcher-field select:focus,.template-launcher-field textarea:focus{border-color:#2563eb85;box-shadow:0 0 0 3px #2563eb1f}.template-launcher-validation{margin:8px 16px 0;padding:9px 10px;border:1px solid rgba(245,158,11,.36);border-radius:8px;color:#92400e;background:#fffbeb;font-size:12px;font-weight:760;line-height:1.45}.template-launcher-footer{border-top:1px solid rgba(226,232,240,.88);border-bottom:0;background:#f8fafcbd}.template-launcher-secondary{min-width:82px;padding:0 12px;color:#475569;background:#e2e8f0}.template-launcher-primary{min-width:126px;padding:0 14px;color:#fff;background:#0f172a}.template-launcher-primary:disabled{cursor:default;opacity:.45}.template-studio-chooser-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:252;background:#0f172a0a}.template-studio-chooser{position:fixed;top:88px;right:24px;width:min(420px,calc(100vw - 96px));display:grid;gap:12px;padding:14px;border-radius:10px}.template-studio-chooser__head{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px}.template-studio-chooser__head div{min-width:0;display:grid;gap:2px}.template-studio-chooser__head span{color:#2563eb;font-size:11px;font-weight:900}.template-studio-chooser__head strong{overflow:hidden;color:#0f172a;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.template-studio-chooser__head button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:#64748b;background:#f1f5f9;cursor:pointer}.template-studio-chooser__description{margin:0;color:#64748b;font-size:12px;line-height:1.45}.template-studio-chooser__actions{display:grid;gap:8px}.template-studio-chooser__action{min-width:0;min-height:72px;display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;padding:10px;border:1px solid rgba(226,232,240,.9);border-radius:9px;color:#334155;background:#fff;cursor:pointer;text-align:left}.template-studio-chooser__action:hover{border-color:#2563eb70;background:#eff6ff}.template-studio-chooser__icon{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;color:#2563eb;background:#eff6ff}.template-studio-chooser__action span:last-child{min-width:0;display:grid;gap:3px}.template-studio-chooser__action strong{color:#0f172a;font-size:13px}.template-studio-chooser__action small{color:#64748b;font-size:11px;line-height:1.35}.template-studio-toolbar-stack{position:fixed;left:72px;top:88px;z-index:166;display:grid;gap:8px;pointer-events:none}.template-studio-toolbar{width:max-content;max-width:min(820px,calc(100vw - 460px));display:flex;align-items:center;gap:6px;padding:6px;border-radius:9px;pointer-events:auto}.template-studio-toolbar__badge,.template-studio-toolbar__meta{min-height:30px;display:inline-flex;align-items:center;gap:7px;padding:0 10px;border-radius:8px;color:#0f172a;background:#eff6ff;font-size:12px;font-weight:860;white-space:nowrap}.template-studio-toolbar__badge svg{color:#2563eb}.template-studio-toolbar__meta{max-width:240px;color:#64748b;background:#f8fafc;overflow:hidden;text-overflow:ellipsis}.template-studio-toolbar__meta--selected{max-width:280px}.template-studio-toolbar button{min-width:31px;height:30px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;border-radius:7px;color:#64748b;background:transparent;cursor:pointer;font-size:11px;font-weight:880}.template-studio-toolbar button:hover,.template-studio-toolbar button.is-active{color:#0f172a;background:#e2e8f0d6}.template-studio-toolbar--roles,.template-studio-toolbar--selected{background:#f8fafcf5}.template-studio-toolbar--roles button,.template-studio-toolbar--selected button{min-width:54px}.template-studio-panel{position:fixed;top:88px;right:24px;bottom:28px;z-index:166;width:min(370px,calc(100vw - 96px));display:grid;grid-template-rows:54px minmax(0,1fr);overflow:hidden;border-radius:10px}.template-studio-panel__head{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px 0 16px;border-bottom:1px solid rgba(226,232,240,.88);background:#f8fafcd6}.template-studio-panel__head div{min-width:0;display:grid;gap:2px}.template-studio-panel__head span,.template-studio-panel__section-head small{color:#64748b;font-size:11px;font-weight:820}.template-studio-panel__head strong{overflow:hidden;color:#0f172a;font-size:14px;font-weight:880;text-overflow:ellipsis;white-space:nowrap}.template-studio-panel__head button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;color:#64748b;background:#f1f5f9;cursor:pointer}.template-studio-panel__body{min-height:0;overflow:auto;padding:12px}.template-studio-panel__section{display:grid;gap:10px;padding:12px;border-bottom:1px solid rgba(226,232,240,.86)}.template-studio-panel__section:last-child{border-bottom:0}.template-studio-panel__field{display:grid;gap:6px}.template-studio-panel__field span,.template-studio-panel__checkbox span,.template-studio-panel__section-head span{color:#475569;font-size:11px;font-weight:860}.template-studio-panel__field input,.template-studio-panel__field select,.template-studio-panel__field textarea{width:100%;min-width:0;border:1px solid rgba(203,213,225,.9);border-radius:8px;color:#0f172a;background:#fff;font-size:12px;font-weight:740}.template-studio-panel__field input,.template-studio-panel__field select{height:34px;padding:0 9px}.template-studio-panel__field textarea{min-height:72px;resize:vertical;padding:9px;line-height:1.45}.template-studio-panel__checkbox{min-height:30px;display:inline-flex;align-items:center;gap:9px}.template-studio-panel__checkbox input{width:16px;height:16px;accent-color:#0f172a}.template-studio-panel__node-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 9px;border:1px solid rgba(226,232,240,.9);border-radius:8px;background:#f8fafc}.template-studio-panel__node-summary strong{overflow:hidden;color:#0f172a;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.template-studio-panel__node-summary span{flex:0 0 auto;padding:2px 7px;border-radius:999px;color:#1d4ed8;background:#eff6ff;font-size:10px;font-weight:900}.template-studio-panel__hint{margin:0;color:#64748b;font-size:12px;line-height:1.45}.template-studio-panel__section-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.template-studio-panel__issues{display:grid;gap:6px}.template-studio-panel__issue{display:grid;gap:2px;padding:8px;border:1px solid rgba(245,158,11,.35);border-radius:8px;color:#92400e;background:#fffbeb}.template-studio-panel__issue strong{font-size:11px}.template-studio-panel__issue span{font-size:11px;line-height:1.35}.template-studio-panel__manifest{max-height:260px;overflow:auto;margin:0;padding:10px;border:1px solid rgba(203,213,225,.85);border-radius:8px;color:#0f172a;background:#f8fafc;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.45;white-space:pre-wrap}.ai-settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:260;display:flex;align-items:flex-end;justify-content:center;padding:0 18px 140px 74px;background:transparent}.ai-settings-dialog{width:min(768px,calc(100vw - 104px));height:min(520px,calc(100vh - 168px));max-height:calc(100vh - 36px);min-height:0;display:grid;grid-template-columns:176px minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden;border:1px solid rgba(229,231,235,.98);border-radius:12px;background:#fff;box-shadow:0 22px 58px #0f172a2e}.ai-settings-tabs{min-height:0;display:flex;flex-direction:column;padding:8px 0;border-right:1px solid rgba(243,244,246,.98);background:#f9fafbbd}.ai-settings-tabs button{min-height:36px;display:inline-flex;align-items:center;gap:10px;padding:0 16px;border-left:2px solid transparent;color:#6b7280;background:transparent;cursor:pointer;font-size:13px;font-weight:500;text-align:left}.ai-settings-tabs button.is-active{border-left-color:#111827;color:#111827;background:#fff;font-weight:650}.ai-settings-main{min-width:0;min-height:0;height:100%;display:grid;grid-template-rows:48px minmax(0,1fr) 56px;background:#fff}.ai-settings-head,.ai-settings-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 24px;border-bottom:1px solid rgba(243,244,246,.98)}.ai-settings-head strong{min-width:0;overflow:hidden;color:#111827;font-size:15px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.ai-settings-head span,.ai-settings-footer span{overflow:hidden;color:#64748b;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.ai-settings-head button,.ai-settings-footer button{min-width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;color:#9ca3af;background:transparent;cursor:pointer}.ai-settings-head button:hover{color:#4b5563;background:#f3f4f6}.ai-settings-footer{justify-content:flex-end;border-top:1px solid rgba(243,244,246,.98);border-bottom:0;background:#f9fafbb8}.ai-settings-footer button{min-width:64px;height:34px;padding:0 16px;border-radius:8px;color:#fff;background:#111827;font-size:13px;font-weight:650}.ai-settings-footer button:hover{background:#1f2937}.ai-settings-body{min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:20px 24px;scrollbar-color:rgba(148,163,184,.72) transparent;scrollbar-width:thin}.ai-settings-body::-webkit-scrollbar{width:9px}.ai-settings-body::-webkit-scrollbar-thumb{border:2px solid #fff;border-radius:999px;background:#94a3b894}.ai-settings-body:focus-visible{outline:2px solid rgba(37,99,235,.28);outline-offset:-2px}.settings-grid{display:grid;grid-template-columns:1fr;gap:2px}.settings-grid--compact{grid-template-columns:1fr}.settings-stack{display:grid;gap:16px}.settings-media-section{display:grid;gap:10px;padding:12px;border:1px solid rgba(226,232,240,.92);border-radius:8px;background:#f9fafb}.settings-media-section>header{display:flex;align-items:center;gap:10px}.settings-media-section>header span:last-child{min-width:0;display:grid;gap:2px}.settings-media-section>header strong{color:#0f172a;font-size:13px}.settings-media-section>header small{min-width:0;overflow:hidden;color:#64748b;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.settings-media-section__icon{width:32px;height:32px;display:grid;place-items:center;flex:0 0 auto;border-radius:8px;color:#0f172a;background:#e2e8f0}.setting-row{min-height:38px;display:grid;grid-template-columns:minmax(0,1fr) minmax(96px,160px);align-items:center;gap:16px;padding:3px 0;border:0;border-radius:0;background:transparent}.setting-row span{min-width:0;display:grid;gap:1px}.setting-row__select-wrap{min-width:0;display:flex;align-items:center;gap:7px}.setting-row__select-wrap .aspect-select__swatch{flex:0 0 auto}.setting-row strong{color:#111827;font-size:13px;font-weight:500;line-height:1.25}.setting-row small{color:#9ca3af;font-size:11px;line-height:1.25}.setting-row select,.setting-row input[type=text],.setting-row input[type=number]{width:100%;min-width:0;height:30px;border:1px solid rgba(229,231,235,.98);border-radius:6px;padding:0 10px;color:#111827;background:#fff;font-size:13px;font-weight:500;outline:none}.setting-row select:focus,.setting-row input[type=text]:focus,.setting-row input[type=number]:focus{border-color:#9ca3af}.setting-row input[type=number]{width:96px;justify-self:end;text-align:right}.setting-row input[type=text]{width:256px;max-width:100%;justify-self:end}.setting-row--toggle{grid-template-columns:minmax(0,1fr) 36px}.setting-row input[type=checkbox]{position:relative;width:36px;height:20px;justify-self:end;border:0;border-radius:999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#e5e7eb;cursor:pointer;outline:none;transition:background .14s ease}.setting-row input[type=checkbox]:after{position:absolute;top:2px;left:2px;width:16px;height:16px;border:1px solid rgba(209,213,219,.95);border-radius:50%;background:#fff;box-shadow:0 1px 2px #0f172a29;content:"";transition:transform .14s ease}.setting-row input[type=checkbox]:checked{background:#3b82f6}.setting-row input[type=checkbox]:checked:after{transform:translate(16px);border-color:#fff}.setting-row input[type=checkbox]:focus-visible{box-shadow:0 0 0 3px #3b82f62e}.settings-radio-group{display:grid;grid-template-columns:1fr;gap:2px}.settings-radio-group label{min-height:26px;display:flex;align-items:center;gap:8px;padding:2px 0;border:0;border-radius:0;background:transparent;cursor:pointer}.settings-radio-group label.is-selected{color:#111827;background:transparent}.settings-radio-group input{width:16px;height:16px;accent-color:#111827}.settings-radio-group span{min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.settings-radio-group strong{color:#374151;font-size:13px;font-weight:500}.settings-radio-group small,.settings-note,.settings-about span,.settings-about small{color:#64748b;font-size:12px;line-height:1.45}.settings-note{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border:1px solid rgba(226,232,240,.92);border-radius:8px;background:#f8fafc}.settings-note svg{flex:0 0 auto;color:#94a3b8}.settings-provider-card{display:grid;gap:14px;padding:12px;border:1px solid rgba(229,231,235,.98);border-radius:8px;background:#f9fafb}.settings-provider-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.settings-provider-card header div,.settings-provider-card__section{min-width:0;display:grid;gap:7px}.settings-provider-card strong{color:#374151;font-size:13px;font-weight:500}.settings-provider-card span,.settings-provider-card p,.settings-provider-card li{margin:0;color:#475569;font-size:12px;line-height:1.45}.settings-provider-card ol{margin:0;padding-left:18px}.settings-provider-card code{padding:1px 5px;border-radius:5px;background:#e2e8f0eb;color:#0f172a;font-size:11px}.settings-provider-card__notice,.settings-provider-card__note{padding:9px 10px;border:1px solid rgba(251,191,36,.42);border-radius:7px;background:#fffbeb;color:#92400e;font-size:12px;line-height:1.45}.settings-provider-card__command-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.settings-provider-card__command-head button{min-height:30px;padding:0 10px;border:1px solid rgba(203,213,225,.95);border-radius:7px;background:#fff;color:#334155;font-size:12px;font-weight:700;cursor:pointer}.settings-provider-card__command-head button:hover{border-color:#2563eb59;color:#1d4ed8}.settings-provider-card__command{width:100%;min-height:86px;resize:vertical;padding:9px 10px;border:1px solid rgba(203,213,225,.92);border-radius:7px;background:#fff;color:#0f172a;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:11px;line-height:1.5}.settings-provider-card__section--image{padding-top:10px;border-top:1px solid rgba(226,232,240,.9)}.settings-about{min-height:300px;display:grid;place-items:center;align-content:center;gap:10px;text-align:center}.settings-about svg{width:56px;height:56px;padding:14px;border-radius:12px;color:#fff;background:#111827}.settings-about strong{color:#0f172a;font-size:18px}.prompt-debug-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:270;display:flex;align-items:flex-start;justify-content:flex-end;padding:74px 24px 24px 74px;background:#0f172a0f}.prompt-debug-dialog{width:min(680px,calc(100vw - 104px));max-height:min(720px,calc(100vh - 104px));display:grid;grid-template-rows:58px minmax(0,1fr);overflow:hidden;border:1px solid rgba(203,213,225,.92);border-radius:12px;color:#0f172a;background:#fffffffa;box-shadow:0 28px 80px #0f172a3d}.prompt-debug-header,.prompt-debug-header>div,.prompt-debug-header__actions,.prompt-debug-tabs,.prompt-debug-section-title,.prompt-debug-actions{display:flex;align-items:center}.prompt-debug-header{justify-content:space-between;gap:12px;padding:0 16px;border-bottom:1px solid rgba(226,232,240,.9);background:#f8fafcd1}.prompt-debug-header>div:first-child{min-width:0;gap:8px;color:#0f172a;font-weight:900}.prompt-debug-header>div:first-child svg{color:#d97706}.prompt-debug-header__actions{flex-wrap:wrap;justify-content:flex-end;gap:6px}.prompt-debug-header__actions button,.prompt-debug-actions button{min-height:32px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:0 9px;border-radius:8px;color:#475569;background:#f1f5f9;cursor:pointer;font-size:12px;font-weight:820}.prompt-debug-header__actions button:hover,.prompt-debug-actions button:hover{color:#0f172a;background:#e2e8f0}.prompt-debug-content{min-height:0;display:grid;grid-template-rows:44px minmax(0,1fr)}.prompt-debug-tabs{gap:6px;overflow-x:auto;padding:8px 12px;border-bottom:1px solid rgba(226,232,240,.9);scrollbar-width:none}.prompt-debug-tabs::-webkit-scrollbar{display:none}.prompt-debug-tabs button{min-height:28px;display:inline-flex;align-items:center;flex:0 0 auto;gap:6px;padding:0 9px;border-radius:999px;color:#64748b;background:#f1f5f9;cursor:pointer;font-size:12px;font-weight:820}.prompt-debug-tabs button.is-active{color:#fff;background:#0f172a}.prompt-debug-main{min-height:0;overflow:auto;padding:14px}.prompt-debug-section-title{gap:8px;margin-bottom:12px}.prompt-debug-section-title strong{color:#0f172a;font-size:14px}.prompt-debug-section-title span{margin-left:auto;color:#64748b;font-size:12px;font-weight:740}.prompt-debug-metric-grid,.prompt-debug-dev-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.prompt-debug-metric-grid--small{grid-template-columns:repeat(3,minmax(0,1fr))}.prompt-debug-card,.prompt-debug-toggle,.prompt-debug-readout,.prompt-debug-dev-grid button,.prompt-debug-point-quote,.prompt-debug-note{border:1px solid rgba(226,232,240,.9);border-radius:9px;background:#fff}.prompt-debug-card{display:grid;gap:5px;min-height:92px;padding:12px}.prompt-debug-card span,.prompt-debug-card small,.prompt-debug-toggle small,.prompt-debug-readout span,.prompt-debug-point-quote span,.prompt-debug-point-quote small,.prompt-debug-note,.prompt-debug-dev-grid small{color:#64748b;font-size:12px;line-height:1.42}.prompt-debug-card strong{overflow:hidden;color:#0f172a;font-size:22px;font-weight:900;line-height:1.1;text-overflow:ellipsis;white-space:nowrap}.prompt-debug-point-quote{display:grid;grid-template-columns:minmax(0,.7fr) minmax(96px,auto) minmax(0,1fr);align-items:center;gap:10px;padding:12px;background:#f8fafc}.prompt-debug-point-quote strong{color:#0f172a;font-size:16px;font-weight:900;text-align:center}.prompt-debug-point-quote small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prompt-debug-stack{display:grid;gap:10px}.prompt-debug-actions{flex-wrap:wrap;gap:8px}.prompt-debug-toggle,.prompt-debug-readout{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:12px;min-height:68px;padding:10px 12px}.prompt-debug-toggle span,.prompt-debug-readout{min-width:0}.prompt-debug-toggle strong,.prompt-debug-readout strong,.prompt-debug-dev-grid strong{color:#0f172a;font-size:13px}.prompt-debug-toggle input{width:42px;height:22px;justify-self:end;accent-color:#0f172a}.prompt-debug-readout{grid-template-columns:minmax(112px,.35fr) minmax(0,1fr)}.prompt-debug-readout strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prompt-debug-stack textarea{width:100%;min-height:300px;resize:vertical;border:1px solid rgba(203,213,225,.9);border-radius:9px;padding:12px;color:#1e293b;background:#f8fafc;font-family:Consolas,Monaco,Andale Mono,monospace;font-size:12px;line-height:1.55;outline:none}.prompt-debug-note{padding:12px;background:#fff7ed;border-color:#fed7aae6}.prompt-debug-dev-grid button{min-height:96px;display:flex;align-items:flex-start;gap:10px;padding:12px;color:#334155;text-align:left;cursor:pointer}.prompt-debug-dev-grid button:hover{border-color:#2563eb57;background:#eff6ff}.prompt-debug-dev-grid svg{flex:0 0 auto;color:#2563eb}.prompt-debug-dev-grid span{min-width:0;display:grid;gap:4px}.global-input-shell{position:fixed;left:calc(50% + 28px);bottom:28px;z-index:160;width:min(700px,calc(100vw - 160px));min-height:96px;display:grid;grid-template-rows:minmax(34px,auto) 42px;gap:4px;padding:12px;border-radius:22px;transform:translate(-50%);pointer-events:none}.global-input-shell textarea{width:100%;min-height:34px;max-height:88px;resize:none;border:0;outline:none;color:#334155;background:transparent;font-size:16px;line-height:1.5;pointer-events:auto}.global-input-shell textarea::placeholder{color:#94a3b8}.input-controls{display:flex;align-items:center;gap:8px;min-width:0;scrollbar-width:none;pointer-events:auto}.input-controls::-webkit-scrollbar{display:none}.input-controls button{min-width:42px;height:34px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:999px;color:#64748b;background:#e2e8f0ad;cursor:pointer;font-size:12px;font-weight:850;white-space:nowrap}.input-controls .input-settings-button{width:36px;min-width:36px;padding:0;color:#2563eb;background:#eff6ff}.input-controls button.is-active{color:#fff;background:#020617}.input-controls button:disabled{cursor:default;opacity:.46}.input-controls .select-button{min-width:164px;justify-content:space-between;border:1px solid rgba(203,213,225,.9);color:#475569;background:#fff}.input-select-wrap{min-width:152px;max-width:214px;height:34px;display:inline-flex;align-items:center;gap:7px;padding:0 10px 0 11px;border:1px solid rgba(203,213,225,.9);border-radius:999px;color:#475569;background:#fff;overflow:hidden}.input-select-wrap select{min-width:0;flex:1;border:0;outline:none;color:inherit;background:transparent;font:inherit;font-size:12px;font-weight:850;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.input-select-wrap svg{flex:0 0 auto;color:#94a3b8;pointer-events:none}.input-select-provider{flex:0 0 auto;max-width:76px;padding:2px 7px;border-radius:999px;color:#1d4ed8;background:#eff6ff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:900;letter-spacing:0}.input-select-wrap--aspect{min-width:104px;max-width:132px}.aspect-select__swatch{flex:0 0 auto;width:20px;height:16px;display:inline-block;border:2px solid #60a5fa;border-radius:5px;background:linear-gradient(135deg,#eff6fff2,#dbeafee6)}.aspect-swatch--square{width:16px;height:16px}.aspect-swatch--wide{width:21px;height:16px}.aspect-swatch--portrait{width:14px;height:18px}.aspect-swatch--cinema{width:24px;height:14px}.aspect-swatch--vertical{width:12px;height:20px}.aspect-swatch--auto{width:18px;height:18px;border-style:dashed}.input-controls .send-button{width:38px;min-width:38px;padding:0;color:#fff;background:#6b7280}.input-controls .send-button:disabled{color:#64748b;background:#e2e8f0}.global-submit-count{min-width:28px;height:24px;display:inline-grid;place-items:center;border-radius:999px;border:1px solid rgba(59,130,246,.18);color:#1d4ed8;background:#eff6ff;font-size:11px;font-weight:800}.global-input-shell[data-submit-state=idle] .global-submit-count{display:none}.canvas-view-control-stack{position:fixed;left:72px;bottom:338px;z-index:156;display:grid;gap:8px;pointer-events:none}.canvas-view-panel,.canvas-bookmark-strip{pointer-events:auto;display:flex;align-items:center;gap:5px;width:max-content;max-width:min(520px,calc(100vw - 144px));padding:6px;border-radius:9px}.canvas-bookmark-strip{overflow-x:auto;scrollbar-width:none}.canvas-bookmark-strip::-webkit-scrollbar{display:none}.canvas-view-panel button,.canvas-bookmark-strip button{width:31px;height:29px;display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;border-radius:7px;color:#64748b;background:transparent;cursor:pointer}.canvas-view-panel button:hover,.canvas-bookmark-strip button:hover{color:#0f172a;background:#e2e8f0c7}.canvas-view-panel button.is-active,.canvas-bookmark-strip button.is-saved{color:#1d4ed8;background:#eff6ff}.canvas-bookmark-slot span{font-size:12px;font-weight:880;line-height:1}.canvas-bookmark-slot:not(.is-saved) span{opacity:.58}.canvas-view-panel__separator{width:1px;height:22px;margin-inline:2px;background:#cbd5e1cc}.bottom-controls{position:fixed;right:20px;bottom:22px;z-index:170;display:flex;gap:10px}.bottom-controls button{width:46px;height:46px;border-radius:12px}.bottom-controls button.is-active{color:#1d4ed8;background:#eff6ff}.canvas-minimap{position:fixed;right:20px;bottom:86px;z-index:155;width:208px;display:grid;gap:7px;padding:9px;border-radius:10px;pointer-events:auto}.canvas-minimap__head{display:flex;align-items:center;justify-content:space-between;gap:8px}.canvas-minimap__head span{color:#334155;font-size:11px;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.canvas-minimap__head small{color:#64748b;font-size:11px;font-weight:780}.canvas-minimap__stage{position:relative;width:188px;height:126px;overflow:hidden;border:1px solid rgba(148,163,184,.28);border-radius:7px;background:linear-gradient(rgba(148,163,184,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.14) 1px,transparent 1px),#f8fafceb;background-size:20px 20px;cursor:crosshair}.canvas-minimap__node,.canvas-minimap__viewport{position:absolute;border-radius:2px;pointer-events:none}.canvas-minimap__node{min-width:2px;min-height:2px;background:#2563eb7a}.canvas-minimap__node--ai-task{background:#f9731694}.canvas-minimap__node--image,.canvas-minimap__node--video{background:#0f766e8a}.canvas-minimap__node--pdf,.canvas-minimap__node--file,.canvas-minimap__node--directory{background:#64748b8a}.canvas-minimap__node.is-selected{box-shadow:0 0 0 2px #0f172aa3}.canvas-minimap__viewport{border:2px solid rgba(15,23,42,.64);background:#ffffff2e;box-shadow:0 0 0 999px #0f172a0d}.canvas-status{position:fixed;left:72px;bottom:12px;z-index:150;color:#475569cc;font-size:11px;font-weight:780;pointer-events:none}@media(max-width:1440px)and (min-width:961px){.search-panel{top:108px}}@media(max-width:960px){.company-focus-backdrop{padding:12px}.company-focus-head{grid-template-columns:38px minmax(0,1fr)}.company-focus-head__actions{grid-column:1 / -1;justify-content:flex-start}.company-focus-main{grid-template-columns:1fr}.company-focus-side{border-left:0;border-top:1px solid rgba(226,232,240,.95)}.company-focus-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.company-focus-lanes{grid-template-columns:repeat(4,minmax(220px,1fr))}.canvas-toolbar{left:64px;right:14px;transform:none;overflow-x:auto;justify-content:flex-start}.search-panel{top:104px;left:68px;right:14px;width:auto}.local-board-panel{top:160px;max-height:min(460px,calc(100vh - 184px))}.project-gallery-shell{top:44px;right:14px;bottom:14px;left:68px;padding-bottom:72px}.project-gallery-positioner{max-width:none;transform:translateY(2vh)}.project-gallery-panel{top:auto;width:100%;max-width:none;height:min(680px,calc(100vh - 96px));max-height:none}.project-gallery-body{grid-template-columns:1fr}.project-gallery-folder-rail{grid-template-columns:minmax(0,1fr) minmax(180px,.8fr)}.project-gallery-startup-toggle,.project-gallery-rail-card{align-self:stretch}.template-launcher-backdrop{align-items:center;padding:18px 14px 18px 68px}.pdf-viewer-backdrop,.directory-settings-backdrop{padding:18px 14px 18px 68px}.directory-settings-dialog{width:100%;max-height:min(440px,calc(100vh - 36px))}.pdf-viewer-dialog{width:100%;height:min(760px,calc(100vh - 36px))}.template-launcher-panel{width:100%;max-height:calc(100vh - 36px)}.global-input-shell{left:68px;right:14px;width:auto;transform:none}.runtime-status-cluster{left:68px;bottom:150px;width:min(410px,calc(100vw - 142px))}.canvas-view-control-stack{left:68px;bottom:314px}.canvas-view-panel,.canvas-bookmark-strip{max-width:min(440px,calc(100vw - 150px))}.ai-settings-backdrop{align-items:center;padding:18px 14px 18px 68px}.ai-settings-dialog{width:100%;height:min(720px,calc(100vh - 36px));max-height:calc(100vh - 36px);grid-template-columns:136px minmax(0,1fr)}.prompt-debug-backdrop{align-items:flex-start;justify-content:center;padding:18px 14px 18px 68px}.prompt-debug-dialog{width:100%;max-height:calc(100vh - 36px)}.prompt-debug-metric-grid,.prompt-debug-dev-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-grid,.settings-radio-group{grid-template-columns:1fr}.input-controls{overflow-x:auto}.bottom-controls{right:14px;bottom:142px;flex-direction:column}.canvas-minimap{right:70px;bottom:142px}}@media(max-width:640px){.top-tabbar{left:48px}.company-focus-backdrop{padding:8px}.company-focus-dialog{border-radius:10px}.company-focus-head{gap:9px;padding:10px}.company-focus-head__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.company-focus-head__actions>span,.company-focus-head__actions button{width:100%}.company-focus-main>main,.company-focus-side{padding:10px}.company-focus-metrics{grid-template-columns:1fr}.company-focus-lanes{grid-template-columns:repeat(4,minmax(200px,1fr))}.local-board-backdrop{left:48px}.local-board-panel{left:68px;right:70px;width:auto;max-height:330px;overflow:auto}.project-gallery-shell{top:48px;right:10px;bottom:10px;left:58px;padding-bottom:54px}.project-gallery-panel{left:auto;right:auto;width:100%;max-width:none;height:min(620px,calc(100vh - 82px));max-height:none;overflow:hidden}.local-board-panel.project-gallery-panel{left:auto;right:auto;width:100%;max-width:none;max-height:none;overflow:hidden}.project-gallery-panel__head{align-items:flex-start}.project-gallery-title p{display:none}.project-gallery-folder-rail,.project-gallery-board-grid,.project-gallery-bridge-list{grid-template-columns:1fr}.global-input-shell{min-height:118px;bottom:12px}.runtime-status-cluster{left:58px;bottom:148px;width:min(360px,calc(100vw - 122px))}.canvas-view-control-stack{top:214px;right:14px;bottom:auto;left:58px}.canvas-view-panel,.canvas-bookmark-strip{max-width:calc(100vw - 72px)}.runtime-status-pill{max-width:100%;min-height:32px;font-size:11px}.runtime-local-warning{grid-template-columns:28px minmax(0,1fr) 28px;min-height:52px}.canvas-minimap{top:160px;right:14px;bottom:auto}.template-launcher-backdrop,.pdf-viewer-backdrop,.directory-settings-backdrop{padding-left:54px}.directory-settings-dialog{width:calc(100vw - 68px)}.directory-settings-head,.directory-settings-body,.directory-settings-footer{padding-inline:12px}.pdf-viewer-dialog{width:calc(100vw - 68px)}.template-launcher-panel{width:calc(100vw - 68px);grid-template-rows:auto auto auto auto minmax(0,auto) auto}.template-launcher-head,.template-launcher-footer{padding-inline:12px}.template-launcher-chips,.template-launcher-field{grid-template-columns:1fr}.template-launcher-secondary,.template-launcher-primary{flex:1}.ai-settings-backdrop,.prompt-debug-backdrop{padding-left:54px}.prompt-debug-dialog{grid-template-rows:auto minmax(0,1fr)}.prompt-debug-header,.prompt-debug-header__actions{align-items:stretch}.prompt-debug-header{flex-direction:column;padding-block:10px}.prompt-debug-header__actions button{flex:1 1 auto}.prompt-debug-metric-grid,.prompt-debug-metric-grid--small,.prompt-debug-dev-grid,.prompt-debug-readout,.prompt-debug-toggle{grid-template-columns:1fr}.ai-settings-dialog{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.ai-settings-tabs{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid rgba(226,232,240,.92);padding:0}.ai-settings-tabs button{flex:0 0 auto;min-height:42px;border-left:0;border-bottom:2px solid transparent}.ai-settings-tabs button.is-active{border-bottom-color:#0f172a}.ai-settings-head,.ai-settings-footer{padding-inline:12px}.setting-row{grid-template-columns:1fr;gap:8px}}@media(max-width:480px){.runtime-status-cluster{width:calc(100vw - 136px)}.runtime-local-warning__copy span{display:none}}
|