@duckcodeailabs/dql-cli 1.12.9 → 1.12.11
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/dist/assets/dql-notebook/assets/{AgentAnswerCard-DbI0CAsX.js → AgentAnswerCard-CpL2kDCV.js} +1 -1
- package/dist/assets/dql-notebook/assets/{AgentLogPage-BbMhuJps.js → AgentLogPage-hzHqpD3-.js} +1 -1
- package/dist/assets/dql-notebook/assets/{AiBuildDialog-DNgkam6H.js → AiBuildDialog-BQRWoxp9.js} +1 -1
- package/dist/assets/dql-notebook/assets/AiBuildResult-D9t_4sQl.js +33 -0
- package/dist/assets/dql-notebook/assets/{AiSidePanel-D-EhCOEd.js → AiSidePanel-BCQB9rVF.js} +1 -1
- package/dist/assets/dql-notebook/assets/{AnalyticsHome-BTjkolBn.js → AnalyticsHome-Ba4Ve_Gd.js} +1 -1
- package/dist/assets/dql-notebook/assets/AppsView-CdAT9BOq.js +4466 -0
- package/dist/assets/dql-notebook/assets/{BlockStudio-DTFHMR3y.js → BlockStudio-Brg4fwn5.js} +13 -13
- package/dist/assets/dql-notebook/assets/{BusinessArtifactView-DGiHB7OS.js → BusinessArtifactView-CnTbFVGT.js} +1 -1
- package/dist/assets/dql-notebook/assets/DbtFirstModelingPage-CQe2FUZq.js +22 -0
- package/dist/assets/dql-notebook/assets/{GitPage-BWzPKyws.js → GitPage-DHyDBChc.js} +1 -1
- package/dist/assets/dql-notebook/assets/{GlobalAiRail-CGvBUci2.js → GlobalAiRail-Cys4n_rq.js} +1 -1
- package/dist/assets/dql-notebook/assets/GovernedContextPage-DyKoDSZ2.js +7 -0
- package/dist/assets/dql-notebook/assets/{HelpDocsPage-C7IX_7xh.js → HelpDocsPage-CL0vbSER.js} +3 -3
- package/dist/assets/dql-notebook/assets/{HomePage-e0CObjOb.js → HomePage-DzAucwBW.js} +9 -4
- package/dist/assets/dql-notebook/assets/{LineageDAG-DV6T_0ha.js → LineageDAG-QHqd_AM5.js} +1 -1
- package/dist/assets/dql-notebook/assets/{LineageDetailView-ZVJiCqua.js → LineageDetailView-DdVH-nz6.js} +1 -1
- package/dist/assets/dql-notebook/assets/{LineageDrawer-DQdzGIoL.js → LineageDrawer-BvrVZNKY.js} +1 -1
- package/dist/assets/dql-notebook/assets/LineagePathBreadcrumb-CSut-zvm.js +14 -0
- package/dist/assets/dql-notebook/assets/{MiniLineageGraph-BlJYiAY0.js → MiniLineageGraph-zg_1wW3M.js} +1 -1
- package/dist/assets/dql-notebook/assets/NewBlockModal-9cDletl-.js +1 -0
- package/dist/assets/dql-notebook/assets/NewNotebookModal-V6de8L4d.js +46 -0
- package/dist/assets/dql-notebook/assets/NotebookEditor-EZ0pfWVs.js +200 -0
- package/dist/assets/dql-notebook/assets/{ReadinessPage-m8jlEKzQ.js → ReadinessPage-BaGvjyfd.js} +1 -1
- package/dist/assets/dql-notebook/assets/{SetupOnboarding-ClldPV4C.js → SetupOnboarding-Bg-MjbC9.js} +2 -2
- package/dist/assets/dql-notebook/assets/{TrustBadge-C0FyL1ZO.js → TrustBadge-DGuHB8kP.js} +1 -1
- package/dist/assets/dql-notebook/assets/UnifiedAgentRunPanel-BlWAVEwO.js +83 -0
- package/dist/assets/dql-notebook/assets/{answer-to-notebook-CgVDBH0o.js → answer-to-notebook-BDzY4MuQ.js} +1 -1
- package/dist/assets/dql-notebook/assets/{arrow-left-XTRkwgdW.js → arrow-left-IjlnAihE.js} +1 -1
- package/dist/assets/dql-notebook/assets/{arrow-right-BUYb7B8y.js → arrow-right-BI4cXgOY.js} +2 -2
- package/dist/assets/dql-notebook/assets/{book-open-text-CQHKAXcN.js → book-open-text-i6xhxu_I.js} +1 -1
- package/dist/assets/dql-notebook/assets/{bot-D9ODKCwi.js → bot-C6DE7Q6m.js} +1 -1
- package/dist/assets/dql-notebook/assets/{chevron-up-BR57nCns.js → chevron-up-DSEILnDs.js} +2 -2
- package/dist/assets/dql-notebook/assets/{circle-x-B3MKf4hs.js → circle-x-BoAorVSm.js} +1 -1
- package/dist/assets/dql-notebook/assets/{codemirror-1_I9gm6Z.js → codemirror-DXt7RW72.js} +1 -1
- package/dist/assets/dql-notebook/assets/{dagre.esm-BWViOEog.js → dagre.esm-CycymVj6.js} +1 -1
- package/dist/assets/dql-notebook/assets/{external-link-D2rxGhQ_.js → external-link-ZwE5iHsX.js} +1 -1
- package/dist/assets/dql-notebook/assets/{grip-vertical-Bzs7bIWP.js → grip-vertical-Dnp2st8l.js} +1 -1
- package/dist/assets/dql-notebook/assets/index-BTuliKhK.js +634 -0
- package/dist/assets/dql-notebook/assets/{link-2-D6nW0_qQ.js → link-2-CTKe6Snr.js} +2 -2
- package/dist/assets/dql-notebook/assets/{list-tree-MH5kYamM.js → list-tree-Ced8e_S1.js} +1 -1
- package/dist/assets/dql-notebook/assets/{maximize-2-C3bEmsdA.js → maximize-2-Cojc6867.js} +1 -1
- package/dist/assets/dql-notebook/assets/{minimize-2-cji4jKmJ.js → minimize-2-CBIAE0XH.js} +1 -1
- package/dist/assets/dql-notebook/assets/{panel-right-open-T-_o8FS9.js → panel-right-open-po3bWSeL.js} +2 -2
- package/dist/assets/dql-notebook/assets/{pencil-BzJ_vZuL.js → pencil-Cb45c6WU.js} +2 -2
- package/dist/assets/dql-notebook/assets/{rotate-ccw-CqSfrg2J.js → rotate-ccw-B9v1LTJ0.js} +2 -2
- package/dist/assets/dql-notebook/assets/{semantic-fields-BXNCrm72.js → semantic-fields-B6ii0an0.js} +1 -1
- package/dist/assets/dql-notebook/assets/{star-C22MG8pV.js → star-CO4tfaDq.js} +2 -2
- package/dist/assets/dql-notebook/assets/{triangle-alert-BtoT0VL-.js → triangle-alert-BSdIu2El.js} +1 -1
- package/dist/assets/dql-notebook/assets/{usePersistedAgentThreadId-BL9P0gFB.js → usePersistedAgentThreadId-CkVFrrjk.js} +2 -2
- package/dist/assets/dql-notebook/assets/{user-round-CpifcAyh.js → user-round-BfrV8U-W.js} +3 -3
- package/dist/assets/dql-notebook/assets/{wand-sparkles-BiOywrQh.js → wand-sparkles-BgTxZNBc.js} +1 -1
- package/dist/assets/dql-notebook/assets/{workflow-DDvVMZ2B.js → workflow--2ycp0yy.js} +2 -2
- package/dist/assets/dql-notebook/assets/{wrench-CoKg2kyO.js → wrench-LMCrpa9_.js} +1 -1
- package/dist/assets/dql-notebook/assets/{x-CCmr0LQ8.js → x-CeNgQwGm.js} +2 -2
- package/dist/assets/dql-notebook/index.html +1 -1
- package/dist/local-runtime.d.ts +90 -2
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +1005 -152
- package/dist/local-runtime.js.map +1 -1
- package/dist/package.json +10 -10
- package/package.json +10 -10
- package/dist/assets/dql-notebook/assets/AiBuildResult-BuTao779.js +0 -33
- package/dist/assets/dql-notebook/assets/AppsView-B3jlWoNm.js +0 -4466
- package/dist/assets/dql-notebook/assets/DbtFirstModelingPage-D-fv_dS2.js +0 -22
- package/dist/assets/dql-notebook/assets/GovernedContextPage-CxkrtqyP.js +0 -7
- package/dist/assets/dql-notebook/assets/LineagePathBreadcrumb-6gFsnWlN.js +0 -14
- package/dist/assets/dql-notebook/assets/NewBlockModal-DaxBAFLu.js +0 -1
- package/dist/assets/dql-notebook/assets/NewNotebookModal-B7GPLsYc.js +0 -46
- package/dist/assets/dql-notebook/assets/NotebookEditor-RuxFQnQC.js +0 -202
- package/dist/assets/dql-notebook/assets/UnifiedAgentRunPanel-Bd1qmRFx.js +0 -83
- package/dist/assets/dql-notebook/assets/index-CDpukm0G.js +0 -644
|
@@ -0,0 +1,4466 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/UnifiedAgentRunPanel-BlWAVEwO.js","assets/index-BTuliKhK.js","assets/react-CRB3T2We.js","assets/index-DKu4CZt3.css","assets/AgentAnswerCard-CpL2kDCV.js","assets/usePersistedAgentThreadId-CkVFrrjk.js","assets/TrustBadge-DGuHB8kP.js","assets/AiBuildResult-D9t_4sQl.js","assets/user-round-BfrV8U-W.js","assets/triangle-alert-BSdIu2El.js","assets/rotate-ccw-B9v1LTJ0.js","assets/x-CeNgQwGm.js","assets/pencil-Cb45c6WU.js","assets/list-tree-Ced8e_S1.js","assets/wrench-LMCrpa9_.js","assets/arrow-right-BI4cXgOY.js","assets/chevron-up-DSEILnDs.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{c as We,u as Nt,t as Ae,r as d,a as J,j as t,G as Er,P as zt,S as Be,n as ba,l as va,ao as ya,aH as Ut,h as Fe,T as qa,M as wa,aI as Ge,ay as ja,aj as Le,aJ as ka,g as lt,B as er,d as _r,aK as Mr,aE as Sa,F as tr}from"./index-BTuliKhK.js";import{A as Or,a as Kt,b as za}from"./AiSidePanel-BCQB9rVF.js";import{u as Fr,C as Ca,c as Aa,i as Na,T as Ia,b as Ta,e as $a,S as Pa,A as Ra}from"./usePersistedAgentThreadId-CkVFrrjk.js";import{c as Ba,r as Wr}from"./semantic-fields-B6ii0an0.js";import{W as Vr}from"./wand-sparkles-BgTxZNBc.js";import{B as It}from"./bot-C6DE7Q6m.js";import{G as La}from"./grip-vertical-Dnp2st8l.js";import{T as He}from"./triangle-alert-BSdIu2El.js";import{M as Ea}from"./maximize-2-Cojc6867.js";import{A as Hr}from"./arrow-left-IjlnAihE.js";import{W as Me}from"./workflow--2ycp0yy.js";import{P as Kr}from"./pencil-Cb45c6WU.js";import{S as _a}from"./star-CO4tfaDq.js";import{B as Qr}from"./book-open-text-i6xhxu_I.js";import"./react-CRB3T2We.js";import"./minimize-2-CBIAE0XH.js";import"./x-CeNgQwGm.js";/**
|
|
3
|
+
* @license lucide-react v0.563.0 - ISC
|
|
4
|
+
*
|
|
5
|
+
* This source code is licensed under the ISC license.
|
|
6
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
7
|
+
*/const Ma=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"M8 14h.01",key:"6423bh"}],["path",{d:"M12 14h.01",key:"1etili"}],["path",{d:"M16 14h.01",key:"1gbofw"}],["path",{d:"M8 18h.01",key:"lrp35t"}],["path",{d:"M12 18h.01",key:"mhygvu"}],["path",{d:"M16 18h.01",key:"kzsmim"}]],Oa=We("calendar-days",Ma);/**
|
|
8
|
+
* @license lucide-react v0.563.0 - ISC
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the ISC license.
|
|
11
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/const Fa=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],Gr=We("chart-column",Fa);/**
|
|
13
|
+
* @license lucide-react v0.563.0 - ISC
|
|
14
|
+
*
|
|
15
|
+
* This source code is licensed under the ISC license.
|
|
16
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
17
|
+
*/const Wa=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"m19 9-5 5-4-4-3 3",key:"2osh9i"}]],rr=We("chart-line",Wa);/**
|
|
18
|
+
* @license lucide-react v0.563.0 - ISC
|
|
19
|
+
*
|
|
20
|
+
* This source code is licensed under the ISC license.
|
|
21
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
22
|
+
*/const Va=[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",key:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]],Ha=We("chart-pie",Va);/**
|
|
23
|
+
* @license lucide-react v0.563.0 - ISC
|
|
24
|
+
*
|
|
25
|
+
* This source code is licensed under the ISC license.
|
|
26
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
27
|
+
*/const Ka=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],Qa=We("map-pin",Ka);/**
|
|
28
|
+
* @license lucide-react v0.563.0 - ISC
|
|
29
|
+
*
|
|
30
|
+
* This source code is licensed under the ISC license.
|
|
31
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
32
|
+
*/const Ga=[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]],Ya=We("share-2",Ga);/**
|
|
33
|
+
* @license lucide-react v0.563.0 - ISC
|
|
34
|
+
*
|
|
35
|
+
* This source code is licensed under the ISC license.
|
|
36
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
37
|
+
*/const Xa=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],Ja=We("sliders-horizontal",Xa);/**
|
|
38
|
+
* @license lucide-react v0.563.0 - ISC
|
|
39
|
+
*
|
|
40
|
+
* This source code is licensed under the ISC license.
|
|
41
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
42
|
+
*/const Za=[["path",{d:"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18",key:"gugj83"}]],Da=We("table-2",Za),Ua=d.lazy(()=>Ut(()=>import("./UnifiedAgentRunPanel-BlWAVEwO.js").then(e=>e.c),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(e=>({default:e.UnifiedAgentRunPanel}))),ei="clamp(320px, calc(100vh - 220px), 760px)",ar=[{value:"table",label:"Table"},...Ca];function ti(e,r){if(!Array.isArray(e)||e.length===0)return;const a=Array.isArray(r)&&r.length>0?r.slice(0,8):Object.keys(e[0]??{}).slice(0,8);return e.slice(0,5).map(i=>Object.fromEntries(a.map(n=>[n,i[n]])))}const Yr=[{id:"auto",label:"Auto fit",description:"Choose a practical size from the tile content"},{id:"compact",label:"Compact",description:"Small KPI or short summary"},{id:"standard",label:"Standard",description:"Default chart or table card"},{id:"wide",label:"Wide",description:"Full-row trend or comparison"},{id:"tall",label:"Tall",description:"More vertical room for tables and dense charts"},{id:"full",label:"Full page",description:"Large focused view across the page"}];function ri({appId:e,dashboard:r,variables:a,editable:i=!1,embeddedHeader:n=!1,onDashboardChanged:l,selectedBlockId:s,onBlockFocus:o,onAskBlock:p,onOpenLineageNode:u,copilotOpen:f,onCopilotChange:x,onRunChange:c}){var mt;const{state:N}=Nt(),C=Ae[N.themeMode],[q,h]=d.useState(null),[T,A]=d.useState(null),G=d.useRef(null),[P,k]=d.useState(!1),[R,E]=d.useState(null),[$,K]=d.useState(!1),ee=Fr(`app:${e}:${r.id}`),[Z,B]=d.useState(!1),[H,_]=d.useState([]),[pe,I]=d.useState(""),[de,je]=d.useState(!1),[F,le]=d.useState(null),[Q,xe]=d.useState(!1),[D,W]=d.useState(!1),[ce,se]=d.useState(!1),[ve,fe]=d.useState(null),[me,ie]=d.useState(""),[m,L]=d.useState(null),Y=d.useRef(null),[X,ge]=d.useState(!1),v=r.layout.cols,U=r.layout.rowHeight,ye=d.useMemo(()=>JSON.stringify(a??{}),[a]),te=d.useMemo(()=>JSON.parse(ye),[ye]),be=d.useMemo(()=>{const b=new Map;for(const j of(q==null?void 0:q.tiles)??[])b.set(j.tileId,j);return b},[q]),ne=d.useMemo(()=>i?r.layout.items:r.layout.items.filter(b=>!Ai(b)),[r.layout.items,i]),ae=d.useMemo(()=>i?ne:Ni(ne,be,v),[ne,v,i,be]),ke=r.layout.items.length-ne.length,V=ne.length-ae.length,re=d.useMemo(()=>!i&&!r.story&&r.sections&&r.sections.length>0?[...r.sections].sort((b,j)=>b.order-j.order):null,[r.sections,r.story,i]),S=d.useMemo(()=>re?r.layout.items:null,[r.layout.items,re]),O=d.useMemo(()=>i||re?null:Li(ae,be,te),[i,te,re,be,ae]);d.useEffect(()=>{let b=!1;return k(!0),E(null),J.runDashboard(e,r.id,te).then(j=>{b||(h(j),A((j==null?void 0:j.story)??null),G.current=(j==null?void 0:j.runId)??null,c==null||c(j),j||E("Dashboard run failed."),j!=null&&j.runId&&J.getDashboardStory(e,r.id,j.runId).then(w=>{b||!w||G.current!==w.runId||w.snapshotId!==j.snapshotId||w.filterFingerprint!==j.filterFingerprint||w.resultFingerprint!==j.resultFingerprint||w.personaFingerprint!==j.personaFingerprint||A(w.story)}))}).catch(j=>{b||(E(j instanceof Error?j.message:String(j)),c==null||c(null))}).finally(()=>{b||k(!1)}),()=>{b=!0}},[e,r.id,r.layout.items.length,c,te,(mt=N.activePersona)==null?void 0:mt.userId]),d.useEffect(()=>{const b=j=>{const w=j.detail;(w==null?void 0:w.appId)!==e||w.dashboardId!==r.id||(J.getDashboard(e,r.id).then(M=>{M!=null&&M.dashboard&&(l==null||l(M.dashboard))}),J.runDashboard(e,r.id,te).then(M=>{M&&(h(M),A(M.story),G.current=M.runId,c==null||c(M))}))};return window.addEventListener("dql-app-dashboard-updated",b),()=>window.removeEventListener("dql-app-dashboard-updated",b)},[e,r.id,l,c,te]),d.useEffect(()=>{const b=()=>ge(window.innerWidth<760);return b(),window.addEventListener("resize",b),()=>window.removeEventListener("resize",b)},[]);const Ve=d.useMemo(()=>{const b=r.layout.items.map(j=>{var ue,Se,$e,g,y;const w=be.get(j.i),M=j.block?"blockId"in j.block?j.block.blockId:j.block.ref:j.semantic?`semantic:${j.semantic.id}`:j.aiPin?`aiPin:${j.aiPin.id}`:"text";return{title:j.title,blockRef:M,viz:j.viz.type,certificationStatus:w==null?void 0:w.certificationStatus,status:w==null?void 0:w.status,rowCount:(ue=w==null?void 0:w.result)==null?void 0:ue.rowCount,columns:($e=(Se=w==null?void 0:w.result)==null?void 0:Se.columns)==null?void 0:$e.slice(0,8),sampleRows:ti((g=w==null?void 0:w.result)==null?void 0:g.rows,(y=w==null?void 0:w.result)==null?void 0:y.columns)}});return JSON.stringify({scope:"dashboard",appId:e,dashboardId:r.id,title:r.metadata.title,description:r.metadata.description,domain:r.metadata.domain,filters:r.filters,variables:te,run:q?{runId:q.runId,snapshotId:q.snapshotId,filterFingerprint:q.filterFingerprint,resultFingerprint:q.resultFingerprint,personaFingerprint:q.personaFingerprint,story:q.story,facts:q.facts}:null,tiles:b},null,2)},[e,r,q,te,be]),qe=d.useCallback(async b=>{xe(!0);const j={...r,layout:{...r.layout,items:b}},w=await J.patchDashboardLayout(e,r.id,j.layout);xe(!1),w.ok?l==null||l(w.dashboard):E(w.error)},[e,r,l]),ut=d.useCallback(async()=>{B(!0);const b=await J.getAppEditorCatalog(e);_((b==null?void 0:b.blocks)??[])},[e]),xt=d.useCallback(async b=>{const j=ct(b.chartType),w=await J.recommendDashboardTile(e,r.id,{blockRef:b.name,appAudience:r.metadata.audience,prompt:`${r.metadata.title} ${b.name} ${b.description}`,defaultVisualization:j}),M=or(j,v),ue={i:Mt(r,b.name),..._t(r,M),block:{blockId:b.name},viz:{type:j},...w.ok?{display:w.display,filterBindings:"filterBindings"in w?w.filterBindings:void 0,parameterBindings:"parameterBindings"in w?w.parameterBindings:void 0,sourceEvidence:"sourceEvidence"in w?w.sourceEvidence:void 0,trustState:"trustState"in w?w.trustState:w.display.trustState,reviewStatus:"reviewStatus"in w?w.reviewStatus:w.display.reviewStatus}:{},title:b.name};await qe([...r.layout.items,ue]),B(!1)},[e,v,r,qe]),rt=d.useCallback(async()=>{fe("text"),ie("")},[]),_e=d.useCallback(async()=>{fe("heading"),ie("")},[]),Ye=d.useCallback(async()=>{var j;const b=me.trim();if(!(!b||!ve)){if(ve==="heading")await qe([...r.layout.items,{i:Mt(r,"section"),..._t(r,Ne("wide",v,"heading")),text:{markdown:b},viz:{type:"heading"},display:br("heading",b),title:b}]);else{const w=((j=b.split(/\r?\n/)[0])==null?void 0:j.slice(0,60))||"Summary";await qe([...r.layout.items,{i:Mt(r,"text"),..._t(r,Ne("standard",v,"text")),text:{markdown:b},viz:{type:"text"},display:br("text",w),title:w}])}fe(null),ie("")}},[v,r,qe,ve,me]),ft=d.useCallback(async(b,j)=>{const w=j===null?r.layout.items.filter(M=>M.i!==b):r.layout.items.map(M=>M.i===b?{...M,...j}:M);await qe(kt(w,v))},[v,r.layout.items,qe]),Xe=d.useCallback(async(b,j)=>{const w=Y.current,M=r.layout.items.find(bt=>bt.i===b);if(!w||!M)return;const ue=w.getBoundingClientRect(),Se=12,g=(ue.width-Se*(v-1))/v+Se,y=U+Se,z=Math.round((j.clientX-ue.left)/g),oe=Math.round((j.clientY-ue.top)/y),Re={...M,x:Ct(z,0,Math.max(0,v-M.w)),y:Math.max(0,oe)};L(null);const Ze=zn(r.layout.items,Re,v);await qe(kt(Ze,v))},[v,r.layout.items,U,qe]),Tt=d.useCallback((b,j)=>{const w=Y.current,M=r.layout.items.find(z=>z.i===b);if(!w||!M)return;const ue=w.getBoundingClientRect(),Se=12,$e=(ue.width-Se*(v-1))/v,g=Math.round((j.clientX-ue.left)/($e+Se)),y=Math.round((j.clientY-ue.top)/(U+Se));L({tileId:b,x:Ct(g,0,Math.max(0,v-M.w)),y:Math.max(0,y),w:M.w,h:M.h})},[v,r.layout.items,U]),$t=d.useCallback(()=>L(null),[]),Pt=d.useCallback(async()=>{const b=r.layout.items;if(b.length===0)return;const j=[...b].map((w,M)=>({item:w,index:M})).sort((w,M)=>{const ue=Jt(w.item)-Jt(M.item);return ue!==0?ue:w.index-M.index}).map(({item:w})=>{const M=pr(w,v);return{...w,w:M.w,h:M.h}});await qe(kt(j,v))},[v,r.layout.items,qe]),gt=d.useCallback(async()=>{if(je(b=>!b),!F){const b=await J.fetchScopedLineage({domain:r.metadata.domain,appId:e,dashboardId:r.id});le(b)}},[e,r.id,r.metadata.domain,F]),ht=d.useCallback(()=>{if(u){u(`dashboard:${e}/${r.id}`);return}gt()},[e,r.id,gt,u]),Je=x?!!f:$,at=d.useCallback(()=>{if(W(!1),x){x(!0);return}K(!0)},[x]),Rt=d.useCallback(()=>{if(W(!1),x){x(!f);return}K(b=>!b)},[f,x]);return t.jsxs("div",{style:{display:"block",minHeight:0},children:[t.jsxs("div",{style:{flex:1,minWidth:0},children:[(!n||i)&&t.jsxs("div",{style:Xi,children:[t.jsx("div",{style:{flex:1,minWidth:0},children:n?null:t.jsxs(t.Fragment,{children:[t.jsx("h2",{style:{margin:0,fontSize:20,lineHeight:1.18,fontWeight:780},children:r.metadata.title}),r.metadata.description?t.jsx("div",{style:{fontSize:13,opacity:.72,marginTop:4,maxWidth:680,lineHeight:1.4},children:r.metadata.description}):null]})}),i&&r.layout.items.length>0&&t.jsx(gr,{open:D,onToggle:()=>W(b=>!b),buttonStyle:Yi,onCertifiedBlock:()=>{W(!1),ut()},onText:()=>{W(!1),rt()},onHeading:()=>{W(!1),_e()},onAi:at}),i&&r.layout.items.length>1&&t.jsx("button",{type:"button",onClick:()=>void Pt(),disabled:Q,style:Gi(!1),title:"Auto-arrange every tile into a clean, gap-free grid",children:t.jsx(Vr,{size:15,strokeWidth:2})}),!n&&t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",onClick:Rt,style:et(Je),children:[t.jsx(It,{size:14,strokeWidth:2}),Je?"Hide copilot":"AI Copilot"]}),t.jsxs("button",{type:"button",onClick:ht,style:et(!1),title:"Open focused dashboard lineage",children:[t.jsx(Er,{size:14,strokeWidth:2}),"Lineage"]})]})]}),i&&t.jsx("div",{style:Ji,children:"Drag tiles, select a block for Copilot context, or use the tile controls for sizing and chart settings."}),!i&&T?t.jsx(si,{story:T,onResearch:at,onEvidence:ht}):O?t.jsx(li,{story:O}):null,ae.length===0?t.jsxs("div",{style:{border:"1px dashed var(--border-color, rgba(0,0,0,0.15))",borderRadius:8,padding:36,textAlign:"center",fontSize:13,minHeight:260,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},children:[t.jsx("div",{style:{fontSize:16,fontWeight:700,marginBottom:6},children:ke>0||V>0?"No stakeholder-ready tiles yet":"Build this dashboard page"}),t.jsx("div",{style:{maxWidth:520,opacity:.68,lineHeight:1.45},children:ke>0?"Generated analysis and trust placeholders are hidden from the stakeholder view. Open Customize or Analysis to review them, then add certified blocks or pinned insights.":V>0?"Static duplicate tiles are hidden from the stakeholder view because a filter-aware certified tile can answer the same question.":"Add certified domain blocks, narrative text, or use the scoped AI drawer and pin an answer into this layout."}),t.jsx("div",{style:{marginTop:18,display:"flex",gap:8,flexWrap:"wrap",justifyContent:"center"},children:t.jsx(gr,{open:D,onToggle:()=>W(b=>!b),buttonLabel:"Add tile",buttonStyle:sa,onCertifiedBlock:()=>{W(!1),ut()},onText:()=>{W(!1),rt()},onHeading:()=>{W(!1),_e()},onAi:at})})]}):re?t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:22},children:re.map(b=>{var g,y;const j=(g=re.find(z=>z.kind==="appendix"))==null?void 0:g.id,w=((y=re.find(z=>z.kind==="insight"))==null?void 0:y.id)??re[0].id,M=z=>z.sectionId&&re.some(oe=>oe.id===z.sectionId)?z.sectionId:(z.trustState==="review_required"||z.reviewStatus==="review_required")&&j?j:w,ue=(S??ae).filter(z=>M(z)===b.id);if(ue.length===0)return null;const Se=Math.min(...ue.map(z=>z.y)),$e=b.kind==="appendix";return t.jsxs("section",{"aria-label":b.title,children:[b.kind!=="exec_summary"?t.jsxs("div",{style:{marginBottom:10},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8},children:[t.jsx("h3",{style:{margin:0,fontSize:15,fontWeight:800,color:"var(--dql-app-text, #0f172a)"},children:b.title}),$e?t.jsx("span",{style:{display:"inline-flex",alignItems:"center",gap:4,border:"1px solid rgba(217,119,6,0.4)",color:"#b45309",background:"rgba(217,119,6,0.08)",borderRadius:999,padding:"1px 8px",fontSize:10,fontWeight:800},children:"needs review"}):null]}),b.narrative?t.jsx("p",{style:{margin:"4px 0 0",fontSize:12.5,lineHeight:1.5,color:"var(--dql-app-text-muted, #64748b)",maxWidth:860},children:b.narrative}):null]}):null,t.jsx("div",{style:{display:"grid",gridTemplateColumns:X?"minmax(0, 1fr)":`repeat(${v}, 1fr)`,gridAutoRows:X?"auto":`${U}px`,gap:12,...$e?{opacity:.96}:{}},children:ue.map(z=>t.jsx(ur,{item:{...z,y:z.y-Se},tile:be.get(z.i),loading:P,error:R,themeMode:N.themeMode,editable:!1,narrow:X,cols:v,selected:!!(Ie(z)&&Ie(z)===s),onFocusBlock:o,onAskBlock:p,onMove:()=>{},onDragMove:()=>{},onDragEnd:()=>{},onPatch:oe=>void ft(z.i,oe)},z.i))})]},b.id)})}):t.jsxs("div",{ref:Y,style:{display:"grid",gridTemplateColumns:X?"minmax(0, 1fr)":`repeat(${v}, 1fr)`,gridAutoRows:X?"auto":`${U}px`,gap:12},children:[m&&!X&&t.jsx("div",{"aria-hidden":"true",style:{gridColumn:`${m.x+1} / span ${m.w}`,gridRow:`${m.y+1} / span ${m.h}`,border:"2px dashed var(--dql-app-accent, var(--accent, #4f46e5))",background:"var(--dql-app-accent-soft, rgba(79,70,229,0.10))",borderRadius:10,pointerEvents:"none",zIndex:10}}),ae.map(b=>t.jsx(ur,{item:b,tile:be.get(b.i),loading:P,error:R,themeMode:N.themeMode,editable:i,narrow:X,cols:v,selected:!!(Ie(b)&&Ie(b)===s),onFocusBlock:o,onAskBlock:p,onMove:j=>void Xe(b.i,j),onDragMove:j=>Tt(b.i,j),onDragEnd:$t,onPatch:j=>void ft(b.i,j)},b.i))]}),!i&&q?t.jsx(oi,{run:q,variables:te}):null]}),de&&!u&&t.jsx("aside",{style:{width:340,minWidth:300,maxWidth:"34vw",border:"1px solid var(--border-color, rgba(0,0,0,0.08))",borderRadius:8,overflow:"auto",alignSelf:"flex-start",height:ei,position:"sticky",top:12,padding:12},children:t.jsx(Si,{lineage:F})}),$&&!x&&t.jsx(Or,{t:C,title:"Dashboard AI",subtitle:"Scoped to this App dashboard first",expanded:ce,onToggleExpanded:()=>se(b=>!b),onClose:()=>{K(!1),se(!1)},floating:!0,ariaLabel:"Dashboard AI",style:Zi(ce),children:t.jsx(d.Suspense,{fallback:t.jsx("div",{style:{padding:16,fontSize:12,color:C.textSecondary},children:"Loading Dashboard AI…"}),children:t.jsx(Ua,{themeMode:N.themeMode,title:"Dashboard AI",scopeHint:"Scoped to this App dashboard first",audience:"stakeholder",workspaceContext:{appId:e,dashboardId:r.id,dashboardContext:Ve},initialMode:"auto",threadId:ee.threadId,onThreadIdChange:ee.onThreadIdChange},`${e}:${r.id}`)})}),Z&&t.jsx(ki,{blocks:H,search:pe,onSearch:I,onClose:()=>B(!1),onAdd:b=>void xt(b)}),ve&&t.jsx(ji,{kind:ve,value:me,onChange:ie,onClose:()=>{fe(null),ie("")},onSave:()=>void Ye()})]})}function ur({item:e,tile:r,loading:a,error:i,themeMode:n,editable:l,narrow:s,cols:o,selected:p,onFocusBlock:u,onAskBlock:f,onMove:x,onDragMove:c,onDragEnd:N,onPatch:C}){var xe;const q=d.useRef(null),[h,T]=d.useState(null),[A,G]=d.useState(!1),P=Ie(e),k=!!(!l&&P&&f),R=P?`block:${P}`:e.semantic?`semantic:${e.semantic.id}`:e.aiPin?`aiPin:${e.aiPin.id}`:"text",E=ct(String(e.viz.type??"table")),$=Ee(e),K=$==null?void 0:$.component,ee=($==null?void 0:$.insightTitle)||e.title||R,Z=(r==null?void 0:r.tileType)==="aiPin"?((xe=r.aiPin)==null?void 0:xe.certification)==="certified"?"certified":"review_required":void 0,B=($==null?void 0:$.trustState)??Z??((r==null?void 0:r.certificationStatus)==="certified"?"certified":void 0),H=!!$,_=e.h<=2&&(E==="single_value"||E==="kpi"||E==="gauge"),[pe,I]=d.useState(!1),de=l&&(pe||p||A),je=Fi(e,$),F=!!(k&&(pe||p)),le=D=>{const W=Qt(D),ce=e.viz.options??{},se=Ee(e);C({viz:{...e.viz,type:W,options:{...ce,chart:D,...se?{dqlGenUi:{...se,defaultVisualization:W}}:{}}},display:Jr(e,W,se)})},Q=D=>{if(s)return;const W=q.current;if(!W)return;D.preventDefault(),D.stopPropagation();const ce=W.getBoundingClientRect(),se={x:D.clientX-ce.left,y:D.clientY-ce.top},ve={x:D.clientX,y:D.clientY},fe=ie=>{T({x:ie.clientX-ve.x,y:ie.clientY-ve.y}),c==null||c({clientX:ie.clientX-se.x,clientY:ie.clientY-se.y})},me=ie=>{window.removeEventListener("pointermove",fe),window.removeEventListener("pointerup",me),T(null),N==null||N(),x({clientX:ie.clientX-se.x,clientY:ie.clientY-se.y})};window.addEventListener("pointermove",fe),window.addEventListener("pointerup",me,{once:!0})};return t.jsxs("div",{ref:q,onMouseEnter:()=>I(!0),onMouseLeave:()=>I(!1),onClick:()=>{P&&(u==null||u(P))},style:{gridColumn:s?"1 / -1":`${e.x+1} / span ${e.w}`,gridRow:s?"auto":`${e.y+1} / span ${e.h}`,transform:h?`translate(${h.x}px, ${h.y}px) scale(1.02)`:void 0,opacity:h?.92:1,zIndex:h?30:void 0,position:"relative",background:H?Wi(K):"var(--dql-app-surface, var(--surface, rgba(0,0,0,0.02)))",border:p||h?"1.5px solid var(--dql-app-accent, var(--accent, #4f46e5))":H?"1px solid var(--dql-app-line-2, var(--border-color, rgba(15,23,42,0.10)))":"1px solid var(--dql-app-line, var(--border-color, rgba(0,0,0,0.08)))",borderRadius:8,padding:_?12:14,paddingBottom:F?_?42:46:_?12:14,display:"flex",flexDirection:"column",gap:_?4:H?10:6,minHeight:s?jn(e,$):0,overflow:"visible",boxShadow:h?"0 16px 40px rgba(0,0,0,0.22)":p?"0 0 0 3px var(--dql-app-accent-soft, rgba(79,70,229,0.12))":void 0,cursor:h?"grabbing":P?"pointer":void 0,transition:h?void 0:"box-shadow 120ms ease, transform 120ms ease"},children:[F?t.jsxs("button",{type:"button",style:ui,onClick:D=>{D.stopPropagation(),P&&(u==null||u(P)),P&&(f==null||f(P,xi(e.title??P)))},title:"Open app Copilot for this tile",children:[t.jsx(Be,{size:11,strokeWidth:2})," Ask AI"]}):null,l&&!s?t.jsx("div",{style:{position:"absolute",top:10,left:10,zIndex:3,opacity:de?1:0,pointerEvents:de?"auto":"none",transition:"opacity 120ms ease"},children:t.jsx("button",{type:"button",title:"Drag to move tile",onPointerDown:Q,style:vn,children:t.jsx(La,{size:14,strokeWidth:2.2})})}):null,l?t.jsxs("div",{style:{position:"absolute",top:10,right:10,zIndex:4,display:"flex",alignItems:"center",gap:4,opacity:de?1:0,pointerEvents:de?"auto":"none",transition:"opacity 120ms ease"},children:[_?null:t.jsx("span",{style:{fontSize:10,padding:"2px 8px",borderRadius:999,background:"var(--surface-hover, rgba(0,0,0,0.06))",opacity:.85},children:e.viz.type}),t.jsx(gi,{item:e,cols:o,settingsOpen:A,onToggleSettings:()=>G(D=>!D),onPatch:C})]}):null,H?t.jsx("div",{style:{minHeight:_?26:42,paddingLeft:de?30:0,paddingRight:de?_?82:134:0,transition:"padding 120ms ease",display:"grid",gap:7},children:t.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:8,minWidth:0},children:[t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:_?12:13,fontWeight:780,lineHeight:1.25,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:ee}),t.jsxs("div",{style:ln,children:[B?t.jsx(pt,{trust:B}):null,$?t.jsx("span",{style:Te,children:Ur($)}):null,$!=null&&$.layoutIntent?t.jsx("span",{style:Te,children:Ce(String($.layoutIntent))}):null]})]}),l&&je.length>1?t.jsx(ni,{value:De(e.viz.type),options:je,onChange:le}):null]})}):t.jsxs("div",{style:{minHeight:_?22:26,paddingLeft:de?30:0,paddingRight:de?_?82:134:0,transition:"padding 120ms ease"},children:[t.jsx("div",{style:{fontSize:_?12:13,fontWeight:720,lineHeight:1.25,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.title??R}),Z?t.jsxs("div",{style:{marginTop:5,display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},children:[t.jsx(pt,{trust:Z}),t.jsx("span",{style:Te,children:"AI generated"})]}):_?null:t.jsx("div",{style:{marginTop:5,fontSize:10.5,opacity:.58,fontFamily:"var(--font-mono, monospace)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:R})]}),l&&A?t.jsx(mi,{item:e,tile:r,cols:o,onPatch:C}):null,t.jsx("div",{style:{flex:1,minHeight:0,overflow:"hidden",display:"flex",alignItems:"center",justifyContent:"center",marginTop:_?0:2,fontSize:12,opacity:(r==null?void 0:r.status)==="ok"?1:.7,fontStyle:(r==null?void 0:r.status)==="ok"?"normal":"italic"},children:t.jsx(fi,{item:e,tile:r,loading:a,error:i,themeMode:n,genUi:$})}),l?null:t.jsx(ai,{tile:r,themeMode:n})]})}function ai({tile:e,themeMode:r}){const a=Ae[r],i=d.useMemo(()=>ii(e),[e]);return i?t.jsxs("div",{style:{padding:"4px 10px 8px",fontSize:11.5,color:a.textMuted,lineHeight:1.4,display:"flex",gap:5,alignItems:"baseline"},children:[t.jsx("span",{style:{color:a.accent},children:"•"}),t.jsx("span",{children:i})]}):null}function ii(e){var f,x;const r=(f=e==null?void 0:e.result)==null?void 0:f.rows,a=(x=e==null?void 0:e.result)==null?void 0:x.columns;if(!Array.isArray(r)||r.length===0||!Array.isArray(a)||a.length===0)return null;const i=r[0],n=c=>{if(typeof c=="number"&&Number.isFinite(c))return c;if(typeof c=="string"){const N=Number(c.replace(/[$,%\s]/g,""));return Number.isFinite(N)&&c.trim()?N:void 0}},l=a.find(c=>n(i==null?void 0:i[c])!==void 0),s=a.find(c=>c!==l&&typeof(i==null?void 0:i[c])=="string");if(!l)return null;if(r.length===1){const c=n(r[0][l]);return c!==void 0?`${l}: ${Bt(c)}.`:null}const o=r.map(c=>({label:s?String(c[s]??"—"):"top",value:n(c[l])??0})).sort((c,N)=>N.value-c.value),p=o.reduce((c,N)=>c+N.value,0),u=o[0];return u?p>0?`${u.label} leads ${l} at ${Bt(u.value)} (${Math.round(u.value/p*100)}%).`:`${u.label} leads ${l} at ${Bt(u.value)}.`:null}function Bt(e){const r=Math.abs(e);return r>=1e6?`${(e/1e6).toFixed(1)}M`:r>=1e3?`${(e/1e3).toFixed(1)}K`:Number.isInteger(e)?String(e):e.toFixed(2)}function ni({value:e,options:r,onChange:a}){return t.jsx("div",{style:on,"aria-label":"Visualization",children:r.map(i=>t.jsx("button",{type:"button",title:i.label,onClick:n=>{n.stopPropagation(),a(i.value)},style:pn(e===i.value),children:Vi(i.value)},i.value))})}function pt({trust:e}){const r=e==="certified",a=r?"Certified":e==="review_required"?"Review required":"Draft ready";return t.jsxs("span",{style:sn(r),children:[r?t.jsx(Fe,{size:10,strokeWidth:2.4}):t.jsx(He,{size:10,strokeWidth:2.4}),a]})}function li({story:e}){return t.jsxs("section",{style:ea,"aria-label":"Current dashboard story",children:[t.jsxs("div",{style:ta,children:[t.jsx("div",{style:ra,children:t.jsx(Be,{size:15,strokeWidth:2.2})}),t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:aa,children:"Story from current results"}),t.jsx("h3",{style:ia,children:e.title})]}),e.trust?t.jsx(pt,{trust:e.trust}):null]}),t.jsx("p",{style:na,children:e.summary}),t.jsxs("div",{style:sr,children:[t.jsx("span",{style:la,children:e.sourceTitle}),e.filters.map(r=>t.jsxs("span",{style:tt,children:[r.label,": ",r.value]},`${r.label}:${r.value}`)),e.chips.map(r=>t.jsx("span",{style:tt,children:r},r))]})]})}function si({story:e,onEvidence:r,onResearch:a}){return t.jsxs("section",{style:{...ea,padding:"20px 22px",marginBottom:16},"aria-label":"Business Story",children:[t.jsxs("div",{style:ta,children:[t.jsx("div",{style:ra,children:t.jsx(Be,{size:15,strokeWidth:2.2})}),t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:aa,children:"Business Story · current filters"}),t.jsx("h2",{style:{...ia,fontSize:19},children:e.headline})]}),t.jsx(pt,{trust:e.trustState})]}),t.jsxs("div",{style:{display:"grid",gap:10,marginTop:12,maxWidth:920},children:[e.paragraphs.slice(0,2).map((i,n)=>t.jsx("p",{style:{...na,margin:0,fontSize:14,lineHeight:1.65},children:xr(i)},n)),e.implication?t.jsxs("p",{style:{margin:0,fontSize:13,lineHeight:1.55,fontWeight:650},children:["What this means: ",xr(e.implication)]}):null]}),t.jsxs("div",{style:{...sr,marginTop:14},children:[t.jsx("span",{style:la,children:e.generatedBy==="ai"?"AI wording · verified facts":"Verified result summary"}),t.jsxs("span",{style:tt,children:[e.evidenceRefs.length," evidence source",e.evidenceRefs.length===1?"":"s"]}),e.caveat?t.jsx("span",{style:tt,children:e.caveat}):null,t.jsx("span",{style:{flex:1}}),t.jsx("button",{type:"button",onClick:r,style:Cr,children:"View evidence"}),t.jsx("button",{type:"button",onClick:a,style:Cr,children:"Research deeper"})]})]})}function oi({run:e,variables:r}){const a=e.tiles.filter(n=>n.status!=="ok"),i=Object.entries(r).filter(([,n])=>n!=null&&n!=="");return t.jsxs("details",{style:pi,"aria-label":"Evidence and review appendix",children:[t.jsxs("summary",{style:di,children:["Evidence & review appendix",t.jsxs("span",{style:{opacity:.62,fontWeight:600},children:[e.story.evidenceRefs.length," sources · ",a.length?`${a.length} issue${a.length===1?"":"s"}`:"all visible sources ran"]})]}),t.jsxs("div",{style:{display:"grid",gap:12,padding:"0 16px 16px"},children:[t.jsxs("div",{style:ci,children:[t.jsxs("div",{children:[t.jsx("strong",{children:"Run"}),t.jsx("br",{}),t.jsx("span",{children:e.runId})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"Snapshot"}),t.jsx("br",{}),t.jsx("span",{children:e.snapshotId})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"Trust"}),t.jsx("br",{}),t.jsx("span",{children:e.story.trustState})]}),t.jsxs("div",{children:[t.jsx("strong",{children:"Filters"}),t.jsx("br",{}),t.jsx("span",{children:i.length?i.map(([n,l])=>`${n}: ${String(l)}`).join(" · "):"Current unfiltered scope"})]})]}),t.jsxs("div",{children:[t.jsx("strong",{style:{fontSize:12},children:"Evidence used by the story"}),t.jsx("div",{style:{...sr,marginTop:7},children:e.story.evidenceRefs.map(n=>t.jsx("span",{style:tt,children:n},n))})]}),a.length?t.jsxs("div",{children:[t.jsx("strong",{style:{fontSize:12},children:"Items requiring review"}),t.jsx("ul",{style:{margin:"7px 0 0",paddingLeft:18,fontSize:12,lineHeight:1.55},children:a.map(n=>t.jsxs("li",{children:[n.title??n.tileId,": ",n.error??n.status]},n.tileId))})]}):null]})]})}function xr(e){return e.split(/(\*\*[^*]+\*\*)/g).filter(Boolean).map((r,a)=>r.startsWith("**")&&r.endsWith("**")?t.jsx("strong",{children:r.slice(2,-2)},a):r)}const pi={marginTop:16,border:"1px solid var(--dql-app-line, var(--border-color, rgba(15,23,42,0.10)))",borderRadius:8,background:"var(--dql-app-surface, var(--surface, rgba(0,0,0,0.02)))",color:"var(--dql-app-text, var(--text-primary, #0f172a))"},di={cursor:"pointer",padding:"12px 16px",fontSize:12.5,fontWeight:760,display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},ci={display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(170px, 1fr))",gap:10,fontSize:11.5,lineHeight:1.45,color:"var(--dql-app-text-muted, var(--text-secondary, #64748b))"},ui={position:"absolute",bottom:10,right:10,zIndex:5,display:"inline-flex",alignItems:"center",gap:4,padding:"3px 8px",borderRadius:999,fontSize:10.5,fontWeight:700,color:"var(--dql-app-accent, var(--accent, #4f46e5))",background:"var(--dql-app-accent-soft, rgba(79,70,229,0.12))",border:"1px solid var(--dql-app-accent, rgba(79,70,229,0.4))",cursor:"pointer",lineHeight:1.2,fontFamily:"inherit"};function xi(e){return`/ask Explain ${e} for a stakeholder. Start with the business meaning, current result, active filters, caveats, and recommended next action.`}function fi({item:e,tile:r,loading:a,error:i,themeMode:n,genUi:l}){var p,u,f,x;if(a&&!r)return t.jsx("span",{children:"Loading data..."});if((r==null?void 0:r.tileType)==="text")return l?t.jsx(bi,{title:e.title??l.insightTitle??"Generated section",markdown:((p=r.text)==null?void 0:p.markdown)??"",genUi:l,themeMode:n}):t.jsx(yi,{markdown:((u=r.text)==null?void 0:u.markdown)??"",variant:((f=r.viz)==null?void 0:f.type)==="heading"?"heading":"text",themeMode:n});if((r==null?void 0:r.tileType)==="aiPin"&&r.aiPin)return t.jsx(qi,{pin:r.aiPin,result:r.result,themeMode:n});if(i&&!r)return t.jsx("span",{children:i});if(!r)return t.jsx("span",{children:"No run result."});if(r.status==="unauthorized")return t.jsx("span",{children:"Not authorized."});if(r.status==="unresolved")return t.jsx("span",{children:r.error??"Block reference unresolved."});if(r.status==="error")return t.jsx("span",{children:r.error??"Tile failed."});if(!r.result)return t.jsx("span",{children:"No result."});const s=Xr(e,r.chartConfig);return String(s.chart??((x=r.viz)==null?void 0:x.type)??"").toLowerCase()==="table"||e.viz.type==="table"||e.viz.type==="pivot"?(l==null?void 0:l.component)==="EvidenceTable"||(l==null?void 0:l.component)==="PivotTable"?t.jsx(vi,{result:r.result,genUi:l,themeMode:n}):t.jsx("div",{style:{width:"100%",alignSelf:"stretch"},children:t.jsx(Ia,{result:r.result,themeMode:n})}):t.jsx("div",{style:{width:"100%",alignSelf:"stretch"},children:t.jsx(Ta,{result:r.result,themeMode:n,chartConfig:s})})}function gi({item:e,cols:r,settingsOpen:a,onToggleSettings:i,onPatch:n}){const[l,s]=d.useState(!1),o=p=>{s(!1),n(pa(e,r,p))};return t.jsxs("div",{style:{display:"flex",gap:4,alignItems:"center",flexWrap:"wrap",justifyContent:"flex-end"},children:[t.jsxs("div",{style:{position:"relative"},children:[t.jsx("button",{type:"button",title:"Choose tile size",onClick:()=>s(p=>!p),style:Et,children:t.jsx(Ea,{size:13,strokeWidth:2})}),l?t.jsx(hi,{onPick:o,onClose:()=>s(!1)}):null]}),t.jsx("button",{type:"button",title:"Chart and field settings",onClick:i,style:Et,children:t.jsx(Ja,{size:13,strokeWidth:2,color:a?"var(--accent, #4f46e5)":void 0})}),t.jsx("button",{type:"button",title:"Remove tile",onClick:()=>n(null),style:Et,children:t.jsx(qa,{size:13,strokeWidth:2})})]})}function hi({onPick:e,onClose:r}){return t.jsx("div",{style:yn,onMouseLeave:r,children:Yr.map(a=>t.jsxs("button",{type:"button",onClick:()=>e(a.id),style:qn,children:[t.jsx("span",{style:{fontSize:12,fontWeight:750},children:a.label}),t.jsx("span",{style:{fontSize:11,opacity:.66},children:a.description})]},a.id))})}function mi({item:e,tile:r,cols:a,onPatch:i}){var P;const n=r==null?void 0:r.result,l=Xr(e,r==null?void 0:r.chartConfig),s=De(l.chart),o=Ee(e),[p,u]=d.useState(!1),[f,x]=d.useState(null),[c,N]=d.useState(null),C=d.useMemo(()=>Ba(n),[n]),q=d.useMemo(()=>{const k=new Map;if(!n)return k;const R=new Set(C.metrics),E=new Set(C.dimensions);for(const $ of n.columns)R.has($)?k.set($,"measure"):E.has($)?k.set($,"dimension"):k.set($,Aa(Na($,n.rows)));return k},[n,C]),h=(n==null?void 0:n.columns.filter(k=>q.get(k)==="measure"))??[],T=(n==null?void 0:n.columns.filter(k=>q.get(k)!=="measure"))??[],A=k=>{const R=mr({...l,...k}),E=Qt(R.chart),$=Ee(e),K={...R};$&&(K.dqlGenUi={...$,defaultVisualization:E}),i({title:R.title||e.title,viz:{...e.viz,type:E,options:K},display:Jr(e,E,$)})},G=async()=>{u(!0),N(null),x(null);const k=Ie(e)??e.title,R=await J.recommendVisualization({...k?{blockRef:k}:{},resultSchema:n?{columns:n.columns}:void 0,rowSample:n==null?void 0:n.rows.slice(0,5),prompt:[e.title,o==null?void 0:o.rationale].filter(Boolean).join(" "),allowedVisualizations:o==null?void 0:o.allowedVisualizations});if(u(!1),!R.ok){N(R.error);return}const E=De(R.display.defaultVisualization),$=Qt(E),K=R.display.fieldHints??{},ee=mr({...l,chart:E,title:l.title??e.title,x:K.x??K.label??l.x,y:K.y??K.value??l.y,color:K.color??l.color});i({title:ee.title||e.title,viz:{...e.viz,type:$,options:{...ee}},display:R.display});const Z=R.evidence.map(H=>H.source).slice(0,3).join(", "),B=R.warnings[0];x(B?`${R.display.component}: ${B}`:`${R.display.component}${Z?` from ${Z}`:""}`)};return t.jsxs("div",{style:Ui,children:[t.jsxs("div",{style:{display:"grid",gap:6},children:[t.jsx("div",{style:{fontSize:10,fontWeight:800,textTransform:"uppercase",opacity:.58},children:"Tile size"}),t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:Yr.map(k=>t.jsx("button",{type:"button",title:k.description,onClick:()=>i(pa(e,a,k.id)),style:wn(kn(e,a,k.id)),children:k.label},k.id))})]}),t.jsxs("div",{style:tn,children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:8,justifyContent:"space-between"},children:[t.jsxs("div",{style:{minWidth:0},children:[t.jsx("div",{style:{fontSize:10,fontWeight:800,textTransform:"uppercase",opacity:.58},children:"Display contract"}),t.jsx("div",{style:{marginTop:3,fontSize:11,lineHeight:1.35,opacity:.76},children:(o==null?void 0:o.rationale)??((P=e.display)==null?void 0:P.rationale)??"Choose a governed visualization for this app tile."})]}),t.jsxs("button",{type:"button",onClick:()=>void G(),disabled:p,style:rn(p),title:"Recommend visualization from block hints and result fields",children:[t.jsx(Vr,{size:12,strokeWidth:2.2}),p?"Thinking":"AI recommend"]})]}),t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:5},children:[o!=null&&o.component?t.jsx("span",{style:Te,children:Ur(o)}):null,o!=null&&o.defaultVisualization?t.jsx("span",{style:Te,children:Ce(String(o.defaultVisualization))}):null,o!=null&&o.reviewStatus?t.jsx("span",{style:Te,children:Ce(String(o.reviewStatus))}):null]}),f?t.jsx("div",{style:oa,children:f}):null,c?t.jsx("div",{style:an,children:c}):null]}),t.jsxs("div",{style:en,children:[t.jsxs("label",{style:Yt,children:["Title",t.jsx("input",{value:l.title??e.title??"",onChange:k=>A({title:k.target.value||void 0}),style:Xt})]}),t.jsxs("label",{style:Yt,children:["Chart",t.jsx("select",{value:s,onChange:k=>A({chart:k.target.value}),style:Xt,children:ar.map(k=>t.jsx("option",{value:k.value,children:k.label},k.value))})]}),t.jsx(vt,{label:"X",value:l.x,columns:(n==null?void 0:n.columns)??[],onChange:k=>A({x:k})}),t.jsx(vt,{label:"Y",value:l.y,columns:(n==null?void 0:n.columns)??[],onChange:k=>A({y:k})}),t.jsx(vt,{label:"Color",value:l.color,columns:(n==null?void 0:n.columns)??[],onChange:k=>A({color:k})}),t.jsx(vt,{label:"Facet",value:l.facet,columns:(n==null?void 0:n.columns)??[],onChange:k=>A({facet:k})})]}),n?t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[t.jsx(fr,{title:"Measures",columns:h,onPick:k=>A({y:k})}),t.jsx(fr,{title:"Dimensions",columns:T,onPick:k=>A({x:k})})]}):t.jsx("div",{style:{fontSize:11,opacity:.64},children:"Run results are needed before field slots can be inferred."})]})}function vt({label:e,value:r,columns:a,onChange:i}){return t.jsxs("label",{style:Yt,children:[e,t.jsxs("select",{value:r??"",onChange:n=>i(n.target.value||void 0),style:Xt,children:[t.jsx("option",{value:"",children:"Auto"}),a.map(n=>t.jsx("option",{value:n,children:n},n))]})]})}function fr({title:e,columns:r,onPick:a}){return t.jsxs("div",{style:{display:"grid",gap:4,minWidth:0},children:[t.jsx("div",{style:{fontSize:10,fontWeight:800,textTransform:"uppercase",opacity:.58},children:e}),t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:r.length===0?t.jsx("span",{style:{fontSize:11,opacity:.55},children:"None"}):r.slice(0,10).map(i=>t.jsx("button",{type:"button",onClick:()=>a(i),style:nn,children:i},i))})]})}function gr({open:e,onToggle:r,onCertifiedBlock:a,onText:i,onHeading:n,onAi:l,buttonLabel:s,buttonStyle:o}){return t.jsxs("div",{style:{position:"relative",display:"inline-flex"},children:[t.jsxs("button",{type:"button",onClick:r,title:"Add tile",style:o??et(e),children:[t.jsx(zt,{size:15,strokeWidth:2.2}),s?t.jsx("span",{children:s}):null]}),e&&t.jsxs("div",{style:{position:"absolute",top:"calc(100% + 6px)",right:0,zIndex:30,width:260,border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:8,background:"var(--color-bg, #fff)",boxShadow:"0 14px 38px rgba(0,0,0,0.16)",padding:6,display:"grid",gap:4,textAlign:"left"},children:[t.jsx(yt,{title:"Certified block",description:"Chart, table, or KPI from this App domain",onClick:a}),t.jsx(yt,{title:"Text / summary",description:"Narrative, notes, caveats, or CXO context",onClick:i}),t.jsx(yt,{title:"Section heading",description:"Separate an App page into readable groups",onClick:n}),t.jsx(yt,{title:"Copilot insight",description:"Open scoped AI, then pin the reviewed answer to this App",onClick:l})]})]})}function yt({title:e,description:r,onClick:a}){return t.jsxs("button",{type:"button",onClick:a,style:Di,children:[t.jsx("span",{style:{fontSize:12,fontWeight:700},children:e}),t.jsx("span",{style:{fontSize:11,opacity:.66},children:r})]})}function bi({title:e,markdown:r,genUi:a,themeMode:i}){var p;const n=Ae[i],l=Hi(r,e),s=a.component==="TrustCallout",o=a.component==="ResearchActions";return t.jsxs("div",{style:dn(s),children:[t.jsxs("div",{style:{display:"flex",gap:8,alignItems:"flex-start"},children:[t.jsx("span",{style:cn(s),children:s?t.jsx(He,{size:15}):o?t.jsx(Be,{size:15}):t.jsx(Fe,{size:15})}),t.jsxs("div",{style:{flex:1,minWidth:0},children:[t.jsx("div",{style:{fontSize:13,fontWeight:780,lineHeight:1.25},children:a.insightTitle??e}),t.jsx("div",{style:{marginTop:6,fontSize:13,lineHeight:1.45,color:n.textSecondary},children:l})]})]}),t.jsxs("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:[a.trustState?t.jsx(pt,{trust:a.trustState}):null,a.reviewStatus?t.jsx("span",{style:Te,children:Ce(a.reviewStatus)}):null]}),(p=a.followUpActions)!=null&&p.length?t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6},children:a.followUpActions.slice(0,3).map(u=>t.jsx("span",{style:un,children:Ce(u)},u))}):null]})}function vi({result:e,genUi:r,themeMode:a}){var x;const i=Ae[a],n=e.rows??[],l=e.columns??[],s=Ki(l,n,(x=r.fieldHints)==null?void 0:x.label),o=l.find(c=>/\b(status|quality|trust|certification|review)\b/i.test(c)),p=l.filter(c=>c!==s&&c!==o).filter(c=>Lt(c)<90||Ue(c,n)).sort((c,N)=>Lt(c)-Lt(N)).slice(0,2),u=l.filter(c=>c!==s&&c!==o&&!p.includes(c)).slice(0,2),f=e.rowCount??n.length;return t.jsxs("div",{style:xn,children:[t.jsxs("div",{style:{fontSize:11.5,color:i.textSecondary},children:[f," ",f===1?"row":"rows"," across ",l.length," ",l.length===1?"field":"fields"]}),t.jsx("div",{style:fn,children:n.slice(0,4).map((c,N)=>{const C=s?Pe(c[s]):`Row ${N+1}`,q=o?Pe(c[o]):null;return t.jsxs("div",{style:gn,children:[t.jsxs("div",{style:{minWidth:0},children:[t.jsx("div",{style:{fontSize:12.5,fontWeight:760,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:C}),u.length?t.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:5,marginTop:4},children:u.map(h=>t.jsxs("span",{style:hn,children:[Ce(h),": ",Pe(c[h])]},h))}):null]}),t.jsxs("div",{style:{display:"flex",gap:5,flexWrap:"wrap",justifyContent:"flex-start",minWidth:0},children:[p.map(h=>t.jsxs("span",{style:mn,children:[t.jsx("span",{style:{opacity:.62},children:Ce(h)}),t.jsx("strong",{children:Pe(c[h])})]},h)),q?t.jsx("span",{style:bn,children:q}):null]})]},N)})}),n.length>4?t.jsx("div",{style:{fontSize:11,color:i.textSecondary},children:"Showing first 4 rows in generated view. Switch tile settings for full table controls."}):null]})}function yi({markdown:e,variant:r="text",themeMode:a}){const i=Ae[a];return t.jsx("div",{style:{width:"100%",alignSelf:"stretch",overflow:"auto",whiteSpace:"normal",lineHeight:1.45,fontStyle:"normal",opacity:1,fontSize:r==="heading"?18:void 0,fontWeight:r==="heading"?800:void 0,display:r==="heading"?"flex":void 0,alignItems:r==="heading"?"center":void 0},children:Wr(e,i)})}function qi({pin:e,result:r,themeMode:a}){var p;const[i,n]=d.useState(null),l=Ae[a]??Ae.light,s=async()=>{n("Refreshing...");const u=await J.refreshAiPin(e.appId,e.id);n(u.ok?"Refreshed.":u.error??"Refresh failed."),window.dispatchEvent(new CustomEvent("dql-app-dashboard-updated",{detail:{appId:e.appId,dashboardId:e.dashboardId}}))},o=async()=>{n("Creating draft...");const u=await J.promoteAiPin(e.appId,e.id);n(u.ok?`Draft created: ${u.blockPath}`:u.error??"Promotion failed."),window.dispatchEvent(new CustomEvent("dql-app-dashboard-updated",{detail:{appId:e.appId,dashboardId:e.dashboardId}}))};return t.jsxs("div",{style:{width:"100%",alignSelf:"stretch",overflow:"auto",fontStyle:"normal",lineHeight:1.5,display:"grid",gap:10},children:[t.jsxs("div",{style:{display:"flex",gap:6,alignItems:"center",flexWrap:"wrap"},children:[t.jsx("span",{style:{fontSize:10.5,fontWeight:800,color:e.certification==="certified"?"#15803d":"#b45309",background:e.certification==="certified"?"rgba(22,163,74,0.1)":"rgba(245,158,11,0.12)",border:`1px solid ${e.certification==="certified"?"rgba(22,163,74,0.22)":"rgba(245,158,11,0.24)"}`,borderRadius:999,padding:"3px 7px"},children:e.certification==="certified"?"Certified":"Review required"}),t.jsx("span",{style:{fontSize:10.5,color:"var(--color-text-muted, rgba(0,0,0,0.58))"},children:"Pinned report insight"})]}),t.jsx("div",{style:{minWidth:0},children:Wr(e.answer,l)}),(p=r==null?void 0:r.rows)!=null&&p.length?t.jsx(wi,{result:r}):null,t.jsxs("div",{style:{display:"flex",gap:6,marginTop:8,flexWrap:"wrap"},children:[e.sql&&t.jsx("button",{type:"button",onClick:()=>void s(),style:Nr,children:"Refresh"}),e.sql&&e.reviewStatus==="needs_review"&&t.jsx("button",{type:"button",onClick:()=>void o(),style:Nr,children:"Promote"}),e.refreshCadence==="daily"&&t.jsx("span",{style:{fontSize:11,opacity:.62},children:"daily"})]}),i&&t.jsx("div",{style:{marginTop:6,fontSize:11,opacity:.72},children:i}),e.lastRefreshError&&t.jsx("div",{style:{marginTop:8,color:"#f85149"},children:e.lastRefreshError})]})}function wi({result:e}){var i,n;const r=((i=e.columns)!=null&&i.length?e.columns:Object.keys(((n=e.rows)==null?void 0:n[0])??{})).slice(0,4),a=(e.rows??[]).slice(0,3);return!r.length||!a.length?null:t.jsxs("div",{style:{display:"grid",gap:6},children:[t.jsx("div",{style:{color:"var(--color-text-muted, rgba(0,0,0,0.58))",fontSize:11,fontWeight:750},children:"Supporting rows"}),t.jsx("div",{style:{overflow:"auto",border:"1px solid var(--border-color, rgba(0,0,0,0.08))",borderRadius:6},children:t.jsxs("table",{style:{width:"100%",borderCollapse:"collapse",fontSize:11},children:[t.jsx("thead",{children:t.jsx("tr",{children:r.map(l=>t.jsx("th",{style:{textAlign:"left",padding:"5px 7px",borderBottom:"1px solid var(--border-color, rgba(0,0,0,0.08))",color:"var(--color-text-muted, rgba(0,0,0,0.58))"},children:Ce(l)},l))})}),t.jsx("tbody",{children:a.map((l,s)=>t.jsx("tr",{children:r.map(o=>t.jsx("td",{style:{padding:"5px 7px",borderBottom:s===a.length-1?"none":"1px solid var(--border-color, rgba(0,0,0,0.06))"},children:Pe(l[o])},o))},s))})]})})]})}function ji({kind:e,value:r,onChange:a,onClose:i,onSave:n}){const l=e==="heading";return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:90,background:"rgba(0,0,0,0.36)",display:"flex",alignItems:"center",justifyContent:"center",padding:24},children:t.jsxs("div",{style:{width:"min(520px, 92vw)",display:"grid",gap:12,background:"var(--color-bg, #fff)",color:"inherit",borderRadius:8,boxShadow:"0 18px 60px rgba(0,0,0,0.35)",padding:16},children:[t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:16,fontWeight:800},children:l?"Add heading":"Add text tile"}),t.jsx("div",{style:{fontSize:12,opacity:.65,marginTop:4},children:l?"Create a section heading on this dashboard page.":"Create a narrative text tile on this dashboard page."})]}),l?t.jsx("input",{value:r,onChange:s=>a(s.target.value),onKeyDown:s=>{s.key==="Enter"&&n(),s.key==="Escape"&&i()},placeholder:"Executive summary",autoFocus:!0,style:Ar}):t.jsx("textarea",{value:r,onChange:s=>a(s.target.value),onKeyDown:s=>{s.key==="Escape"&&i(),s.key==="Enter"&&(s.metaKey||s.ctrlKey)&&n()},placeholder:"Add context, assumptions, or decisions...",rows:6,autoFocus:!0,style:{...Ar,resize:"vertical",lineHeight:1.45}}),t.jsxs("div",{style:{display:"flex",justifyContent:"flex-end",gap:8},children:[t.jsx("button",{type:"button",onClick:i,style:et(!1),children:"Cancel"}),t.jsx("button",{type:"button",onClick:n,disabled:!r.trim(),style:{...sa,opacity:r.trim()?1:.65},children:"Add"})]})]})})}function ki({blocks:e,search:r,onSearch:a,onClose:i,onAdd:n}){const l=e.filter(s=>{const o=r.trim().toLowerCase();return o?[s.name,s.description,s.domain,...s.tags??[]].join(" ").toLowerCase().includes(o):!0});return t.jsx("div",{style:{position:"fixed",inset:0,zIndex:90,background:"rgba(0,0,0,0.36)",display:"flex",alignItems:"center",justifyContent:"center",padding:24},children:t.jsxs("div",{style:{width:"min(860px, 94vw)",maxHeight:"86vh",display:"flex",flexDirection:"column",background:"var(--color-bg, #fff)",color:"inherit",borderRadius:8,overflow:"hidden",boxShadow:"0 18px 60px rgba(0,0,0,0.35)"},children:[t.jsxs("div",{style:{padding:14,borderBottom:"1px solid var(--border-color, rgba(0,0,0,0.1))",display:"flex",gap:10,alignItems:"center"},children:[t.jsx("div",{style:{fontSize:15,fontWeight:700,flex:1},children:"Add Certified Block"}),t.jsx("button",{type:"button",onClick:i,style:et(!1),children:"Close"})]}),t.jsx("div",{style:{padding:14,borderBottom:"1px solid var(--border-color, rgba(0,0,0,0.08))"},children:t.jsx("input",{value:r,onChange:s=>a(s.target.value),placeholder:"Search domain blocks...",style:{width:"100%",boxSizing:"border-box",border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:6,padding:"8px 10px",background:"var(--surface, transparent)",color:"inherit"}})}),t.jsx("div",{style:{overflow:"auto",padding:12,display:"grid",gap:8},children:l.length===0?t.jsx("div",{style:{padding:18,fontSize:12,opacity:.66},children:"No certified blocks match this App scope."}):l.map(s=>t.jsxs("button",{type:"button",onClick:()=>n(s),style:{textAlign:"left",border:"1px solid var(--border-color, rgba(0,0,0,0.1))",borderRadius:7,background:"transparent",color:"inherit",padding:10,cursor:"pointer"},children:[t.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center",marginBottom:4},children:[t.jsx("span",{style:{fontSize:13,fontWeight:700},children:s.name}),t.jsx("span",{style:{fontSize:10,padding:"2px 6px",borderRadius:999,background:"rgba(63,185,80,0.14)",color:"#2ea043"},children:s.status}),t.jsx("span",{style:{fontSize:10,opacity:.68},children:s.domain}),t.jsx("span",{style:{fontSize:10,opacity:.68},children:s.chartType??"table"})]}),t.jsx("div",{style:{fontSize:12,opacity:.72},children:s.description||s.path})]},s.id))})]})})}function Si({lineage:e}){var n,l;const r=((n=e==null?void 0:e.graph)==null?void 0:n.nodes)??[],a=((l=e==null?void 0:e.graph)==null?void 0:l.edges)??[],i=(e==null?void 0:e.breadcrumbs)??[];return t.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:12},children:[t.jsxs("div",{children:[t.jsx("div",{style:{fontSize:12,fontWeight:800,textTransform:"uppercase",opacity:.62,marginBottom:6},children:"App Lineage"}),t.jsx("div",{style:{fontSize:12,opacity:.72},children:"Terms and business views connect the App back to DQL blocks, dbt models, and source tables."})]}),i.length>0&&t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:i.map((s,o)=>t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"64px 1fr",gap:8,fontSize:12},children:[t.jsx("span",{style:{fontFamily:"monospace",opacity:.6},children:s.type}),t.jsx("span",{children:s.name})]},`${s.id}-${o}`))}),t.jsxs("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8},children:[t.jsx(hr,{label:"Nodes",value:r.length}),t.jsx(hr,{label:"Edges",value:a.length})]}),t.jsx("div",{style:{display:"flex",flexDirection:"column",gap:6},children:r.slice(0,18).map(s=>t.jsxs("div",{style:{border:"1px solid var(--border-color, rgba(0,0,0,0.08))",borderRadius:6,padding:8},children:[t.jsxs("div",{style:{display:"flex",alignItems:"center",gap:6,minWidth:0},children:[t.jsx("span",{style:{color:"#0d1117",background:va[s.type]??"#8b949e",borderRadius:3,padding:"1px 4px",fontSize:9,fontWeight:800,flexShrink:0},children:ba[s.type]??s.type.slice(0,4).toUpperCase()}),t.jsx("div",{style:{fontSize:12,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:s.name})]}),t.jsxs("div",{style:{fontSize:11,opacity:.62,fontFamily:"monospace",marginTop:4},children:[ya[s.type]??s.type," · ",s.id]})]},s.id))})]})}function hr({label:e,value:r}){return t.jsxs("div",{style:{border:"1px solid var(--border-color, rgba(0,0,0,0.08))",borderRadius:6,padding:8},children:[t.jsx("div",{style:{fontSize:11,opacity:.62},children:e}),t.jsx("div",{style:{fontSize:18,fontWeight:800},children:r})]})}function Ie(e){return e.block?"blockId"in e.block?e.block.blockId??null:e.block.ref??null:null}function Xr(e,r){const a=e.viz.options??{};return{...r??{},...a,chart:De(String(a.chart??(r==null?void 0:r.chart)??e.viz.type)),title:a.title??(r==null?void 0:r.title)??e.title,colorPalette:a.colorPalette??(r==null?void 0:r.colorPalette)??"corporate"}}function De(e){const r=String(e??"table").toLowerCase().replace(/_/g,"-");return r==="single-value"?"kpi":ar.some(a=>a.value===r)?r:"table"}function Qt(e){const r=De(e);return r==="table"?"table":r.replace(/-/g,"_")}function mr(e){const r={};for(const[a,i]of Object.entries(e))i===void 0||i===""||(r[a]=i);return r.chart||(r.chart="table"),r}function Ee(e){var a;if(wt(e.display)){const i=e.display,n=typeof i.component=="string"?i.component:void 0;return{version:1,component:n,role:Zr(n),layoutIntent:typeof i.layoutIntent=="string"?i.layoutIntent:void 0,defaultVisualization:typeof i.defaultVisualization=="string"?i.defaultVisualization:void 0,allowedVisualizations:Array.isArray(i.allowedVisualizations)?i.allowedVisualizations.filter(l=>typeof l=="string"):void 0,fieldHints:wt(i.fieldHints)?Object.fromEntries(Object.entries(i.fieldHints).filter(l=>typeof l[1]=="string")):void 0,insightTitle:e.title,trustState:typeof i.trustState=="string"?i.trustState:void 0,reviewStatus:typeof i.reviewStatus=="string"?i.reviewStatus:void 0,rationale:typeof i.rationale=="string"?i.rationale:void 0}}const r=(a=e.viz.options)==null?void 0:a.dqlGenUi;return wt(r)?{version:typeof r.version=="number"?r.version:void 0,component:typeof r.component=="string"?r.component:void 0,role:typeof r.role=="string"?r.role:void 0,layoutIntent:typeof r.layoutIntent=="string"?r.layoutIntent:void 0,defaultVisualization:typeof r.defaultVisualization=="string"?r.defaultVisualization:void 0,allowedVisualizations:Array.isArray(r.allowedVisualizations)?r.allowedVisualizations.filter(i=>typeof i=="string"):void 0,fieldHints:wt(r.fieldHints)?Object.fromEntries(Object.entries(r.fieldHints).filter(i=>typeof i[1]=="string")):void 0,insightTitle:typeof r.insightTitle=="string"?r.insightTitle:void 0,trustState:typeof r.trustState=="string"?r.trustState:void 0,reviewStatus:typeof r.reviewStatus=="string"?r.reviewStatus:void 0,sourceNodeId:typeof r.sourceNodeId=="string"?r.sourceNodeId:void 0,followUpActions:Array.isArray(r.followUpActions)?r.followUpActions.filter(i=>typeof i=="string"):void 0,rationale:typeof r.rationale=="string"?r.rationale:void 0}:null}function br(e,r){return{mode:"manual",component:e==="heading"?"NarrativePanel":"BusinessBrief",defaultVisualization:e,allowedVisualizations:[e],layoutIntent:e==="heading"?"wide":"standard",rationale:r?`Manual narrative tile for "${r}" on this app surface.`:"Manual narrative tile for this app surface.",trustState:"review_required",reviewStatus:"review_required"}}function Jr(e,r,a){var l,s,o,p,u,f,x,c,N;const i=zi([r,...((l=e.display)==null?void 0:l.allowedVisualizations)??[],...(a==null?void 0:a.allowedVisualizations)??[]]),n=((s=e.display)==null?void 0:s.component)??Ci(r);return{mode:((o=e.display)==null?void 0:o.mode)??(a?"ai_generated":e.block?"block_hint":"manual"),component:n,defaultVisualization:r,allowedVisualizations:i.length?i:[r],...(p=e.display)!=null&&p.fieldHints||a!=null&&a.fieldHints?{fieldHints:((u=e.display)==null?void 0:u.fieldHints)??(a==null?void 0:a.fieldHints)}:{},layoutIntent:Mi(((f=e.display)==null?void 0:f.layoutIntent)??(a==null?void 0:a.layoutIntent)),rationale:((x=e.display)==null?void 0:x.rationale)??(a==null?void 0:a.rationale)??"Visualization selected for this consumer surface.",trustState:lr(((c=e.display)==null?void 0:c.trustState)??(a==null?void 0:a.trustState)),reviewStatus:Oi(((N=e.display)==null?void 0:N.reviewStatus)??(a==null?void 0:a.reviewStatus))}}function zi(e){return Array.from(new Set(e.filter(r=>typeof r=="string"&&r.trim()).map(r=>r.trim())))}function Ci(e){return e==="single_value"||e==="kpi"||e==="gauge"?"KpiMetric":e==="line"||e==="area"?"TrendPanel":e==="bar"||e==="grouped_bar"||e==="stacked_bar"||e==="donut"||e==="pie"?"RankingPanel":e==="pivot"?"PivotTable":e==="text"||e==="heading"?"NarrativePanel":"EvidenceTable"}function Zr(e){return e==="BusinessBrief"?"business_summary":e==="KpiMetric"?"kpi":e==="TrendPanel"?"trend":e==="RankingPanel"?"breakdown":e==="TrustCallout"?"trust":e==="ResearchActions"?"research":e==="NarrativePanel"?"narrative":e?"evidence":void 0}function Ai(e){var s,o,p,u;if(Ie(e)||e.aiPin)return!1;const r=Ee(e),a=(r==null?void 0:r.component)??((s=e.display)==null?void 0:s.component),i=(r==null?void 0:r.role)??Zr(a),n=lr(String((r==null?void 0:r.trustState)??((o=e.display)==null?void 0:o.trustState)??"review_required"));if(a==="TrustCallout"||a==="ResearchActions"||i==="trust"||i==="research")return!0;if(a!=="NarrativePanel"&&a!=="BusinessBrief"||n==="certified")return!1;const l=[e.title,(p=e.text)==null?void 0:p.markdown,(u=e.display)==null?void 0:u.rationale,r==null?void 0:r.rationale,r==null?void 0:r.insightTitle].filter(Boolean).join(" ").toLowerCase();return/\b(draft ready|review-required|review required|missing evidence|missing proof|trust gap|research drilldown|promote to a certified block|generated review placeholder|generated section)\b/.test(l)}function Ni(e,r,a){const n=[...e.filter(l=>!Ii(l,r.get(l.i))&&!Pi(l,e,r)&&!Ti(l,e,r))].sort((l,s)=>{const o=yr(s,r.get(s.i),a)-yr(l,r.get(l.i),a);return o!==0?o:Ke(l,a)-Ke(s,a)});return kt(n,a)}function Ii(e,r){var n,l;if(!e.aiPin)return!1;const a=(n=r==null?void 0:r.aiPin)==null?void 0:n.certification,i=(l=r==null?void 0:r.aiPin)==null?void 0:l.reviewStatus;return a!=="certified"&&i!=="certified"}function Ti(e,r,a){if(!e.aiPin)return!1;const i=vr(e,a.get(e.i));if(!i)return!1;const n=r.findIndex(l=>l.i===e.i);return r.some((l,s)=>l.i===e.i||s>=n||!l.aiPin?!1:vr(l,a.get(l.i))===i)}function vr(e,r){const a=r==null?void 0:r.aiPin,i=a!=null&&a.analysisPlan&&typeof a.analysisPlan=="object"?a.analysisPlan:null,n=qt(a==null?void 0:a.question)||qt(e.title),l=qt(i==null?void 0:i.sourceBlockId),s=qt(i==null?void 0:i.sourceTileId),o=a!=null&&a.result?$i(a.result):"";return!n&&!l&&!s?"":[n,l,s,o].filter(Boolean).join("|")}function qt(e){return String(e??"").toLowerCase().replace(/[^a-z0-9]+/g," ").replace(/\s+/g," ").trim()}function $i(e){if(!e||typeof e!="object")return"";const r=e,a=Array.isArray(r.columns)?r.columns.map(n=>String(n).toLowerCase()).join(","):"",i=Array.isArray(r.rows)?r.rows.slice(0,8).map(n=>Gt(n)).join(";"):"";return a||i?`${a}:${i}`:""}function Gt(e){if(e==null)return"";if(typeof e!="object")return String(e);if(Array.isArray(e))return`[${e.map(Gt).join(",")}]`;const r=e;return`{${Object.keys(r).sort().map(a=>`${a}:${Gt(r[a])}`).join(",")}}`}function yr(e,r,a){var n,l,s,o,p;let i=0;return(n=e.parameterBindings)!=null&&n.length&&(i+=5e3),(s=(l=r==null?void 0:r.filters)==null?void 0:l.applied)!=null&&s.length&&(i+=4e3),(r==null?void 0:r.certificationStatus)==="certified"&&(i+=1800),Ie(e)&&(i+=900),(r==null?void 0:r.status)==="ok"&&((p=(o=r.result)==null?void 0:o.rows)!=null&&p.length)&&(i+=500),i-=Jt(e)*80,i-=Ke(e,a)/1e3,i}function Pi(e,r,a){var l;if((l=e.parameterBindings)!=null&&l.length||e.aiPin||!Ie(e))return!1;const i=a.get(e.i),n=i!=null&&i.result?qr(i.result):null;return n?r.some(s=>{if(s.i===e.i||!Ri(s,a.get(s.i)))return!1;const o=a.get(s.i),p=o!=null&&o.result?qr(o.result):null;return!!(p&&Bi(n,p))}):!1}function Ri(e,r){var a,i,n;return!!((a=e.parameterBindings)!=null&&a.length||(n=(i=r==null?void 0:r.filters)==null?void 0:i.applied)!=null&&n.length)}function qr(e){var s;const r=e.rows??[];if(!r.length)return null;const a=(s=e.columns)!=null&&s.length?e.columns:Object.keys(r[0]??{});if(!a.length)return null;const i=ir(a,r),n=nr(a,r),l=r[0];return{columns:a.map(o=>o.toLowerCase()).sort().join("|"),label:i?wr(l[i]):"",metric:(n==null?void 0:n.toLowerCase())??"",metricValue:n?wr(l[n]):""}}function Bi(e,r){return e.columns===r.columns&&e.label===r.label&&e.metric===r.metric&&e.metricValue===r.metricValue}function wr(e){return e==null?"":typeof e=="number"?Number.isFinite(e)?String(e):"":String(e).trim().toLowerCase().replace(/\s+/g," ")}function Li(e,r,a){var $,K,ee,Z;const i=e.map((B,H)=>({item:B,tile:r.get(B.i),index:H})).filter(B=>{var H,_;return((H=B.tile)==null?void 0:H.status)==="ok"&&!!B.tile.result&&Array.isArray((_=B.tile.result)==null?void 0:_.rows)&&B.tile.result.rows.length>0}).sort((B,H)=>{const _=jr(B.item,B.tile,B.index);return jr(H.item,H.tile,H.index)-_})[0];if(!(i!=null&&i.tile.result))return null;const n=i.tile.result,l=n.rows,s=n.columns??Object.keys(l[0]??{});if(!s.length)return null;const o=Ee(i.item),p=ir(s,l,($=o==null?void 0:o.fieldHints)==null?void 0:$.label),u=nr(s,l,((K=o==null?void 0:o.fieldHints)==null?void 0:K.value)??((ee=o==null?void 0:o.fieldHints)==null?void 0:ee.y)),f=l[0],x=l[1],c=p?Pe(f[p]):"The leading result",N=x&&p?Pe(x[p]):null,C=u?zr(f[u]):null,q=u&&x?zr(x[u]):null,h=u?Ei(u):null,T=_i(a),A=T.length?"under the selected app filters":"in the current dashboard view",G=i.item.title??i.tile.title??Ie(i.item)??"Dashboard result",P=n.rowCount??l.length,k=i.tile.certificationStatus==="certified"?"certified":lr(String(((Z=i.item.display)==null?void 0:Z.trustState)??(o==null?void 0:o.trustState)??"review_required")),R=h?`${Ce(h)} snapshot`:"Dashboard snapshot";let E;if(h&&C!==null){const B=`${c} leads ${h} with ${Pe(C)}`;if(N&&q!==null&&Number.isFinite(C-q)){const H=Math.abs(C-q);E=`${B}, ahead of ${N} by ${Pe(H)} ${A}.`}else E=`${B} ${A}.`}else E=`${G} returned ${P} ${P===1?"row":"rows"} ${A}.`;return{title:R,summary:E,sourceTitle:G,trust:k,filters:T,chips:[`${P} ${P===1?"row":"rows"}`,s.length?`${s.length} fields`:""].filter(Boolean)}}function jr(e,r,a){var o,p,u,f;const i=Ee(e),n=(i==null?void 0:i.component)??((o=e.display)==null?void 0:o.component),l=r.result;let s=1e3-a;return r.certificationStatus==="certified"&&(s+=500),Ie(e)&&(s+=180),(u=(p=r.filters)==null?void 0:p.applied)!=null&&u.length&&(s+=260),(f=e.parameterBindings)!=null&&f.length&&(s+=220),(n==="RankingPanel"||n==="EvidenceTable"||n==="KpiMetric")&&(s+=120),(e.viz.type==="table"||e.viz.type==="bar"||e.viz.type==="kpi")&&(s+=70),l&&nr(l.columns,l.rows)&&(s+=80),l&&ir(l.columns,l.rows)&&(s+=50),s}function ir(e,r,a){const i=Dr(e,a);return i||(e.find(n=>/\b(player|customer|account|team|segment|category|name|label|title|entity)\b/i.test(n))??e.find(n=>!Ue(n,r)&&!/\b(date|time|year|month|id)\b/i.test(n))??e.find(n=>!Ue(n,r)))}function nr(e,r,a){const i=Dr(e,a);return i&&Ue(i,r)?i:e.filter(n=>Ue(n,r)).sort((n,l)=>kr(n)-kr(l))[0]}function Dr(e,r){const a=r==null?void 0:r.toLowerCase().trim();if(a)return e.find(i=>{const n=i.toLowerCase();return n===a||n.includes(a)||a.includes(n)})}function kr(e){const r=e.toLowerCase();return/(total|revenue|amount|points|score|value|sales|arr|mrr)/.test(r)?1:/(count|orders|games|customers|rows|volume)/.test(r)?2:/(rate|pct|percent|ratio|margin|average|avg)/.test(r)?3:/(rank|position|index)/.test(r)?20:/(date|year|month|day|week|id)/.test(r)?90:30}function Ei(e){return Ce(e).toLowerCase()}function _i(e){return Object.entries(e).filter(([r,a])=>/^(smartView|persona|dashboardId|appId)$/i.test(r)||r.startsWith("__")||a==null||a===""||Array.isArray(a)&&a.length===0?!1:typeof a!="object"||Array.isArray(a)).slice(0,6).map(([r,a])=>({label:Ce(r),value:Array.isArray(a)?a.map(i=>Sr(r,i)).join(", "):Sr(r,a)}))}function Sr(e,r){const a=typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):NaN;return/(season|year)/i.test(e)&&Number.isInteger(a)&&a>=1900&&a<=2200?String(a):Pe(r)}function zr(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()!==""){const r=Number(e);return Number.isFinite(r)?r:null}return null}function Mi(e){return e==="compact"||e==="standard"||e==="wide"||e==="tall"||e==="full"||e==="auto"?e:"auto"}function lr(e){return e==="certified"||e==="draft_ready"||e==="review_required"?e:"review_required"}function Oi(e){return e==="certified"||e==="draft_ready"||e==="review_required"?e:"review_required"}function wt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Fi(e,r){const a=new Set([String(e.viz.type??"table"),...(r==null?void 0:r.allowedVisualizations)??[]]),i=Array.from(a).map(n=>De(n)).filter((n,l,s)=>s.indexOf(n)===l);return i.map(n=>ar.find(l=>l.value===n)??{value:n,label:Ce(n)}).filter(n=>n.value!=="table"||i.length===1||e.block)}function Wi(e){return e==="TrustCallout"?"linear-gradient(180deg, rgba(255,255,255,0.92), rgba(255,251,235,0.72))":e==="RankingPanel"||e==="TrendPanel"||e==="PivotTable"?"linear-gradient(180deg, rgba(255,255,255,0.96), rgba(248,250,252,0.86))":e==="BusinessBrief"?"var(--dql-app-surface, rgba(255,255,255,0.90))":"var(--dql-app-surface, var(--surface, rgba(255,255,255,0.84)))"}function Vi(e){return e==="line"||e==="area"?t.jsx(rr,{size:13,strokeWidth:2.2}):e==="pie"||e==="donut"?t.jsx(Ha,{size:13,strokeWidth:2.2}):e==="table"?t.jsx(Da,{size:13,strokeWidth:2.2}):t.jsx(Gr,{size:13,strokeWidth:2.2})}function Ce(e){return e.replace(/[_-]+/g," ").replace(/\b\w/g,r=>r.toUpperCase())}function Ur(e){switch(e.component){case"BusinessBrief":return"Business summary";case"KpiMetric":return"KPI";case"TrendPanel":return"Trend";case"RankingPanel":return"Ranking";case"EvidenceTable":return"Evidence";case"PivotTable":return"Pivot";case"TrustCallout":return"Trust";case"ResearchActions":return"Analysis";case"NarrativePanel":return"Narrative";default:return e.role?Ce(e.role):"Generated"}}function Hi(e,r){const a=new RegExp(`^###\\s*${Qi(r)}\\s*`,"i");return e.replace(a,"").replace(/\*\*Trust:\*\*.*$/gim,"").replace(/\*\*Review status:\*\*.*$/gim,"").replace(/\*\*Next actions:\*\*[\s\S]*$/im,"").replace(/\*\*Review tasks:\*\*[\s\S]*$/im,"").trim().split(/\n{2,}/).map(l=>l.trim()).find(Boolean)||"Generated app section pending analyst review."}function Ki(e,r,a){if(e.length===0)return;const i=a==null?void 0:a.toLowerCase();if(i){const n=e.find(l=>{const s=l.toLowerCase();return s===i||s.includes(i)||i.includes(s)});if(n)return n}return e.find(n=>/\b(name|label|title|dataset|table|block|player|customer|account)\b/i.test(n))??e.find(n=>!Ue(n,r))??e[0]}function Lt(e){const r=e.toLowerCase();return/(total|count|records|rows|volume)/.test(r)?1:/(rate|percent|pct|score|quality|freshness)/.test(r)?2:/(amount|revenue|arr|value)/.test(r)?3:/(date|time|season)/.test(r)?6:/(^|_)id($|_)/.test(r)?20:100}function Ue(e,r){const a=r.slice(0,8).map(i=>i[e]).filter(i=>i!=null&&i!=="");return a.length===0?!1:a.every(i=>typeof i=="number"||typeof i=="string"&&i.trim()!==""&&Number.isFinite(Number(i)))}function Pe(e){if(e==null||e==="")return"N/A";if(typeof e=="number")return Number.isFinite(e)?new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(e):String(e);if(typeof e=="boolean")return e?"Yes":"No";const r=String(e),a=Number(r);return r.trim()!==""&&Number.isFinite(a)&&/^-?\d+(\.\d+)?$/.test(r.trim())?new Intl.NumberFormat("en-US",{maximumFractionDigits:2}).format(a):r.replace(/_/g," ")}function Qi(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function et(e){return{border:"1px solid var(--dql-app-line, var(--border-color, rgba(0,0,0,0.12)))",borderRadius:8,background:e?"var(--dql-app-accent-soft, var(--surface-hover, rgba(0,0,0,0.06)))":"var(--dql-app-surface, var(--surface, rgba(0,0,0,0.02)))",color:"inherit",padding:"7px 10px",cursor:"pointer",fontSize:12,fontWeight:720,display:"inline-flex",alignItems:"center",gap:6,minHeight:32}}function Gi(e){return{...et(e),width:34,height:34,padding:0,justifyContent:"center"}}const Yi={width:34,height:34,border:"1px solid var(--dql-app-accent, #4f46e5)",borderRadius:8,background:"var(--dql-app-accent-soft, rgba(79,70,229,0.12))",color:"var(--dql-app-accent, #4f46e5)",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center"},Xi={display:"flex",alignItems:"center",gap:6,marginBottom:10},Ji={marginBottom:12,color:"var(--dql-app-muted, var(--color-text-secondary, rgba(0,0,0,0.64)))",fontSize:12,lineHeight:1.45},ea={border:"1px solid var(--dql-app-line-2, var(--border-color, rgba(15,23,42,0.10)))",borderRadius:10,background:"linear-gradient(180deg, rgba(255,255,255,0.96), rgba(248,250,252,0.88))",boxShadow:"0 8px 24px rgba(15,23,42,0.05)",padding:14,marginBottom:12,display:"grid",gap:9},ta={display:"flex",alignItems:"flex-start",gap:10,minWidth:0},ra={width:30,height:30,borderRadius:8,background:"var(--dql-app-accent-soft, rgba(79,70,229,0.10))",color:"var(--dql-app-accent, #4f46e5)",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},aa={fontSize:10.5,fontWeight:820,letterSpacing:0,textTransform:"uppercase",color:"var(--dql-app-muted, rgba(15,23,42,0.58))"},ia={margin:"2px 0 0",fontSize:15,lineHeight:1.25,fontWeight:820,color:"var(--dql-app-text, inherit)"},na={margin:0,fontSize:13.5,lineHeight:1.48,color:"var(--dql-app-muted, rgba(15,23,42,0.72))"},sr={display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"},tt={border:"1px solid var(--dql-app-line, var(--border-color, rgba(15,23,42,0.10)))",borderRadius:999,background:"var(--dql-app-surface, rgba(255,255,255,0.78))",color:"var(--dql-app-muted, rgba(15,23,42,0.68))",padding:"3px 8px",fontSize:11,fontWeight:720,lineHeight:1.2,maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},la={...tt,color:"var(--dql-app-accent, #4f46e5)",borderColor:"rgba(79,70,229,0.22)",background:"var(--dql-app-accent-soft, rgba(79,70,229,0.08))"},Cr={border:"1px solid var(--dql-app-line-2, var(--border-color, rgba(15,23,42,0.14)))",borderRadius:8,background:"var(--dql-app-surface, var(--surface, #fff))",color:"var(--dql-app-text, var(--text-primary, #0f172a))",padding:"6px 10px",fontSize:11.5,fontWeight:720,cursor:"pointer"};function Zi(e){return{position:"fixed",right:24,top:76,bottom:24,zIndex:70,width:e?`min(${Kt}px, calc(100vw - 96px))`:`min(${za}px, calc(100vw - 64px))`,minWidth:0}}const Ar={width:"100%",boxSizing:"border-box",border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:6,background:"var(--surface, transparent)",color:"inherit",fontSize:12,padding:"8px 10px"},sa={border:"1px solid var(--accent, #4f46e5)",borderRadius:6,background:"var(--accent, #4f46e5)",color:"var(--color-text-on-accent, #fff)",padding:"7px 11px",cursor:"pointer",fontSize:12,fontWeight:700},Di={border:"none",borderRadius:6,background:"transparent",color:"inherit",padding:"9px 10px",cursor:"pointer",textAlign:"left",display:"grid",gap:2},Ui={border:"1px solid var(--border-color, rgba(0,0,0,0.10))",borderRadius:6,padding:8,background:"var(--color-bg, rgba(255,255,255,0.72))",display:"grid",gap:8,fontStyle:"normal"},en={display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:6},Yt={display:"grid",gap:3,fontSize:10,fontWeight:700,opacity:.78},Xt={width:"100%",minWidth:0,boxSizing:"border-box",border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:5,background:"var(--surface, transparent)",color:"inherit",padding:"5px 6px",fontSize:11},tn={display:"grid",gap:6,border:"1px solid var(--border-color, rgba(0,0,0,0.08))",borderRadius:6,background:"var(--surface, rgba(248,250,252,0.62))",padding:8};function rn(e){return{border:"1px solid var(--accent, rgba(79,70,229,0.55))",background:e?"rgba(79,70,229,0.10)":"rgba(79,70,229,0.08)",color:"var(--accent, #4f46e5)",borderRadius:5,padding:"5px 7px",fontSize:11,fontWeight:750,display:"inline-flex",alignItems:"center",gap:5,cursor:e?"wait":"pointer",opacity:e?.72:1,whiteSpace:"nowrap"}}const oa={fontSize:11,lineHeight:1.35,color:"var(--dql-app-muted, rgba(15,23,42,0.68))"},an={...oa,color:"var(--error-color, #b91c1c)"},nn={border:"1px solid var(--border-color, rgba(0,0,0,0.10))",borderRadius:4,background:"var(--surface, rgba(0,0,0,0.02))",color:"inherit",padding:"2px 5px",fontSize:10,cursor:"pointer",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},ln={marginTop:7,display:"flex",flexWrap:"wrap",gap:5,alignItems:"center",minWidth:0},Te={display:"inline-flex",alignItems:"center",minHeight:18,borderRadius:999,border:"1px solid var(--border-color, rgba(15,23,42,0.10))",background:"rgba(148,163,184,0.10)",color:"var(--dql-app-muted, rgba(15,23,42,0.70))",padding:"2px 7px",fontSize:10,fontWeight:720,lineHeight:1.1};function sn(e){return{...Te,border:e?"1px solid rgba(22,163,74,0.26)":"1px solid rgba(217,119,6,0.28)",background:e?"rgba(22,163,74,0.10)":"rgba(245,158,11,0.12)",color:e?"#15803d":"#b45309",gap:4}}const on={display:"inline-flex",alignItems:"center",gap:2,padding:2,border:"1px solid var(--border-color, rgba(15,23,42,0.12))",borderRadius:6,background:"rgba(255,255,255,0.74)",flexShrink:0};function pn(e){return{width:24,height:24,border:"none",borderRadius:4,background:e?"var(--dql-app-accent, var(--accent, #4f46e5))":"transparent",color:e?"var(--color-text-on-accent, #fff)":"inherit",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",padding:0}}function dn(e){return{width:"100%",alignSelf:"stretch",overflow:"auto",display:"flex",flexDirection:"column",gap:10,fontStyle:"normal",opacity:1,lineHeight:1.45,borderRadius:6,padding:e?10:0,background:e?"rgba(245,158,11,0.08)":"transparent"}}function cn(e){return{width:30,height:30,borderRadius:7,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0,background:e?"rgba(245,158,11,0.14)":"rgba(79,70,229,0.10)",color:e?"#b45309":"var(--dql-app-accent, var(--accent, #4f46e5))"}}const un={...Te,background:"rgba(79,70,229,0.08)",color:"var(--dql-app-accent, var(--accent, #4f46e5))",border:"1px solid rgba(79,70,229,0.16)"},xn={width:"100%",alignSelf:"stretch",overflow:"auto",display:"flex",flexDirection:"column",gap:9,fontStyle:"normal",opacity:1,lineHeight:1.35},fn={display:"grid",gap:6},gn={display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:7,alignItems:"start",border:"1px solid var(--border-color, rgba(15,23,42,0.09))",borderRadius:7,background:"rgba(255,255,255,0.56)",padding:"7px 8px"},hn={...Te,minHeight:16,borderRadius:5,padding:"1px 5px",maxWidth:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},mn={display:"grid",gap:1,minWidth:82,textAlign:"left",fontSize:10.5},bn={...Te,minHeight:18,background:"rgba(22,163,74,0.09)",border:"1px solid rgba(22,163,74,0.18)",color:"#15803d"},Et={width:24,height:24,borderRadius:5,border:"1px solid var(--border-color, rgba(0,0,0,0.12))",background:"var(--surface, rgba(255,255,255,0.72))",color:"inherit",cursor:"pointer",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center"},vn={width:26,height:26,borderRadius:6,border:"1px solid var(--border-color, rgba(0,0,0,0.12))",background:"var(--surface, rgba(255,255,255,0.72))",color:"inherit",cursor:"grab",padding:0,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},yn={position:"absolute",top:"calc(100% + 6px)",right:0,zIndex:40,width:240,border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:8,background:"var(--color-bg, #fff)",boxShadow:"0 14px 38px rgba(0,0,0,0.16)",padding:6,display:"grid",gap:4},qn={border:"none",borderRadius:6,background:"transparent",color:"inherit",padding:"8px 9px",cursor:"pointer",textAlign:"left",display:"grid",gap:2};function wn(e){return{border:`1px solid ${e?"var(--accent, #4f46e5)":"var(--border-color, rgba(0,0,0,0.12))"}`,borderRadius:999,background:e?"var(--color-bg-active, rgba(79,70,229,0.12))":"var(--surface, rgba(0,0,0,0.02))",color:e?"var(--accent, #4f46e5)":"inherit",padding:"4px 8px",fontSize:11,fontWeight:e?750:600,cursor:"pointer"}}const Nr={border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:4,background:"var(--surface, rgba(0,0,0,0.02))",color:"inherit",padding:"3px 7px",cursor:"pointer",fontSize:11};function or(e,r){const a=ct(e);return a==="heading"?Ne("wide",r,"heading"):a==="text"?Ne("standard",r,"text"):Ne(a==="single_value"||a==="kpi"||a==="gauge"?"compact":a==="table"||a==="pivot"?"tall":a==="line"||a==="area"?"wide":"standard",r,a)}function pr(e,r){const a=Ee(e),i=Sn(a==null?void 0:a.layoutIntent);return i&&i!=="auto"?Ne(i,r,String(e.viz.type??"table")):or(ct(String(e.viz.type??"table")),r)}function jn(e,r){return e.viz.type==="heading"?90:(r==null?void 0:r.component)==="BusinessBrief"||(r==null?void 0:r.component)==="NarrativePanel"||e.viz.type==="text"?180:(r==null?void 0:r.component)==="TrustCallout"||(r==null?void 0:r.component)==="ResearchActions"?210:(r==null?void 0:r.component)==="EvidenceTable"||(r==null?void 0:r.component)==="PivotTable"?330:(r==null?void 0:r.component)==="KpiMetric"?150:Math.max(280,Math.min(420,e.h*76))}function Ne(e,r,a="table"){const i=Math.max(1,r),n=Math.max(1,Math.ceil(i/2)),l=Math.max(1,Math.ceil(i/3));return e==="auto"?or(a,i):e==="compact"?{w:l,h:2}:e==="wide"?{w:i,h:a==="heading"?1:4}:e==="tall"?{w:n,h:6}:e==="full"?{w:i,h:7}:{w:n,h:a==="text"?2:4}}function pa(e,r,a){const i=String(e.viz.type??"table"),n=a==="auto"?pr(e,r):Ne(a,r,i);return{w:n.w,h:n.h,x:Ct(e.x,0,Math.max(0,r-n.w))}}function kn(e,r,a){const i=a==="auto"?pr(e,r):Ne(a,r,String(e.viz.type??"table"));return e.w===i.w&&e.h===i.h}function Sn(e){return e==="auto"||e==="compact"||e==="standard"||e==="wide"||e==="tall"||e==="full"?e:null}function _t(e,r={w:6,h:3}){return{x:0,y:e.layout.items.reduce((i,n)=>Math.max(i,n.y+n.h),0),w:r.w,h:r.h}}function Mt(e,r){const a=r.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tile",i=new Set(e.layout.items.map(n=>n.i));if(!i.has(a))return a;for(let n=2;n<1e3;n++){const l=`${a}-${n}`;if(!i.has(l))return l}return`${a}-${Date.now()}`}function kt(e,r){const a=Math.max(1,r),i=[],n=(s,o,p,u)=>{for(let f=0;f<u;f++){const x=i[o+f];if(x){for(let c=0;c<p;c++)if(x[s+c])return!1}}return!0},l=(s,o,p,u)=>{for(let f=0;f<u;f++){const x=o+f;i[x]||(i[x]=new Array(a).fill(!1));for(let c=0;c<p;c++)i[x][s+c]=!0}};return e.map(s=>{const o=Ct(Math.round(s.w||1),1,a),p=Math.max(1,Math.round(s.h||1));let u=0,f=0;e:for(let x=0;;x++)for(let c=0;c+o<=a;c++)if(n(c,x,o,p)){u=c,f=x;break e}return l(u,f,o,p),{...s,x:u,y:f,w:o,h:p}})}function zn(e,r,a){const i=e.filter(s=>s.i!==r.i).sort((s,o)=>Ke(s,a)-Ke(o,a)),n=Ke(r,a),l=i.findIndex(s=>Ke(s,a)>n);return l===-1?[...i,r]:[...i.slice(0,l),r,...i.slice(l)]}function Ke(e,r){return e.y*r+e.x}function Jt(e){const r=Ee(e);if((r==null?void 0:r.role)==="business_summary")return 0;if((r==null?void 0:r.role)==="kpi")return 1;if((r==null?void 0:r.component)==="RankingPanel"||(r==null?void 0:r.component)==="TrendPanel")return 2;if((r==null?void 0:r.component)==="EvidenceTable"||(r==null?void 0:r.component)==="PivotTable")return 3;if((r==null?void 0:r.component)==="TrustCallout"||(r==null?void 0:r.component)==="ResearchActions")return 4;if((r==null?void 0:r.role)==="narrative")return 5;const a=ct(String(e.viz.type??"table"));return a==="heading"?0:a==="single_value"||a==="kpi"||a==="gauge"?1:a==="line"||a==="area"||a==="bar"||a==="pie"||a==="funnel"||a==="map"?2:a==="table"||a==="pivot"?3:a==="text"?4:2}function ct(e){const r=(e??"table").toLowerCase().replace(/-/g,"_");return r==="single_value"||r==="kpi"||r==="gauge"||r==="line"||r==="bar"||r==="area"||r==="pie"||r==="donut"||r==="grouped_bar"||r==="stacked_bar"||r==="scatter"||r==="heatmap"||r==="histogram"||r==="waterfall"||r==="pivot"||r==="map"||r==="funnel"||r==="sankey"||r==="heading"||r==="text"?r:"table"}function Ct(e,r,a){return Math.min(a,Math.max(r,e))}function Cn({app:e}){var o,p;const{state:r,dispatch:a}=Nt(),[i,n]=d.useState(!1),l=d.useRef(null);d.useEffect(()=>{if(!i)return;const u=f=>{var x;(x=l.current)!=null&&x.contains(f.target)||n(!1)};return document.addEventListener("mousedown",u),()=>document.removeEventListener("mousedown",u)},[i]);const s=r.activePersona?`${r.activePersona.displayName??r.activePersona.userId} [${r.activePersona.roles.join(", ")}]`:"View as: Owner";return!e||e.members.length===0?t.jsx("span",{style:{fontSize:12,opacity:.6},children:s}):t.jsxs("div",{ref:l,style:{position:"relative"},children:[t.jsxs("button",{onClick:()=>n(u=>!u),style:{padding:"6px 12px",fontSize:12,background:"var(--surface, rgba(0,0,0,0.04))",border:"1px solid var(--border-color, rgba(0,0,0,0.1))",borderRadius:6,cursor:"pointer",color:"inherit",display:"inline-flex",alignItems:"center",gap:6},"aria-haspopup":"menu","aria-expanded":i,children:[t.jsx("span",{style:{fontSize:11,opacity:.65},children:"View as:"}),t.jsx("span",{style:{fontWeight:600},children:((o=r.activePersona)==null?void 0:o.displayName)??((p=r.activePersona)==null?void 0:p.userId)??"Owner"}),r.activePersona&&t.jsxs("span",{style:{fontSize:11,opacity:.7},children:["[",r.activePersona.roles.join(", "),"]"]}),t.jsx("span",{style:{fontSize:10,opacity:.6},children:"▾"})]}),i&&t.jsxs("div",{role:"menu",style:{position:"absolute",top:"100%",right:0,marginTop:4,minWidth:240,background:"var(--surface-elevated, #fff)",border:"1px solid var(--border-color, rgba(0,0,0,0.12))",borderRadius:6,boxShadow:"0 4px 12px rgba(0,0,0,0.08)",zIndex:50},children:[t.jsxs("button",{role:"menuitem",onClick:async()=>{await J.clearPersona(),a({type:"SET_ACTIVE_PERSONA",persona:null}),n(!1)},style:Ir(r.activePersona===null),children:[t.jsx("div",{style:{fontWeight:500},children:"Owner (local)"}),t.jsx("div",{style:{fontSize:11,opacity:.65},children:"Default — no RLS narrowing"})]}),t.jsx("div",{style:{height:1,background:"var(--border-color, rgba(0,0,0,0.08))",margin:"4px 0"}}),e.members.map(u=>{var f;return t.jsxs("button",{role:"menuitem",onClick:async()=>{const x=await J.setPersona(u.userId,e.id);a({type:"SET_ACTIVE_PERSONA",persona:x}),n(!1)},style:Ir(((f=r.activePersona)==null?void 0:f.userId)===u.userId),children:[t.jsx("div",{style:{fontWeight:500},children:u.displayName??u.userId}),t.jsxs("div",{style:{fontSize:11,opacity:.65},children:["[",u.roles.join(", "),"]",u.attributes&&Object.keys(u.attributes).length>0?` · ${Object.entries(u.attributes).map(([x,c])=>`${x}=${c}`).join(", ")}`:""]})]},u.userId)})]})]})}function Ir(e){return{display:"block",width:"100%",textAlign:"left",padding:"8px 12px",background:e?"var(--surface-hover, rgba(0,0,0,0.06))":"transparent",border:"none",cursor:"pointer",color:"inherit",fontSize:13}}function Tr(e){if(!e)return[];const r=new Map;for(const i of e.filters??[])An(i)&&r.set(i.id,{...i});const a=i=>{var n,l;return((n=i.block)==null?void 0:n.blockId)??((l=i.block)==null?void 0:l.ref)};for(const i of e.layout.items??[]){const n=a(i);for(const l of i.filterBindings??[]){const s=l.mode??(l.binding?"predicate":void 0);if(!n||s!=="predicate"||!l.binding||l.unsupportedReason)continue;const o=r.get(l.filter);o&&(o.bindsTo||(o.bindsTo=l.binding),o.sourceBlockId||(o.sourceBlockId=n))}for(const l of i.parameterBindings??[]){const s=l.filter||l.field||l.param;s&&(r.has(s)||In(r,l)||r.set(s,Nn(l)))}}return Array.from(r.values())}function An(e){var r;return!(e.type==="select"&&!((r=e.options)!=null&&r.length)&&e.default===void 0)}function Nn(e){const r=e.filter||e.field||e.param;return{id:r,type:Tn(r,e.parameterType),default:e.default??da(r),bindsTo:e.param}}function In(e,r){return Array.from(e.values()).some(a=>r.filter&&a.id===r.filter||r.field&&a.bindsTo===r.field?!0:!!(r.param&&a.bindsTo===r.param))}function Tn(e,r){return r==="number"||r==="number[]"?"number":r==="boolean"?"boolean":r==="date"||r==="date[]"?"date":/(_at$|_date$|_time$|_ts$|date|time|day|week|month|quarter|period)/i.test(e)?"daterange":/(top[_-]?n|limit|count|number|year|season)/i.test(e)?"number":"string"}function da(e){const r=e.toLowerCase();return/(top[_-]?n|limit)/.test(r)?5:/(season|year).*start|start.*(season|year)/.test(r)?2016:/(season|year).*end|end.*(season|year)/.test(r)?2017:""}const $n=d.lazy(()=>Ut(()=>import("./UnifiedAgentRunPanel-BlWAVEwO.js").then(e=>e.c),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16])).then(e=>({default:e.UnifiedAgentRunPanel}))),Pn=d.lazy(()=>Ut(()=>import("./AgentAnswerCard-CpL2kDCV.js").then(e=>e.A),__vite__mapDeps([4,1,2,3,5,6,7,8,9,10])).then(e=>({default:e.StructuredAnswerText}))),Ot=new Map,ca="Build an analytics app from my certified DQL blocks and available warehouse tables.",ua=[{title:"Revenue story",domain:"Revenue",prompt:"Build a weekly revenue health app for the COO with risk flags."},{title:"Customer 360",domain:"Customer",prompt:"Customer 360: value, engagement, retention, orders, and service risk by segment."},{title:"Quality monitor",domain:"Platform",prompt:"Build a data quality monitor with freshness, failing tests, null rates, and model risk notes."},{title:"Experiment Readout",domain:"Product",prompt:"Create an experiment readout for product leadership with outcome, guardrails, and decision checklist."}],Rn=[{id:"match",title:"Find blocks",description:"Search certified blocks, terms, views, and lineage."},{id:"story",title:"Shape story",description:"Order the app around the business decision."},{id:"draft",title:"Draft gaps",description:"Keep missing sections visible as draft work instead of hiding them."}],Bn={all:"All",mine:"Mine",shared:"Shared",fav:"Favourites"};function Ln(e){return e==="obsidian"||e==="dark"||e==="midnight"?"obsidian":e==="white"||e==="arctic"?"white":"paper"}function is(){const{state:e,dispatch:r}=Nt(),a=d.useMemo(()=>Ln(e.themeMode),[e.themeMode]),[i,n]=d.useState(()=>e.activeAppId?"workspace":"library"),l=e.activeAppExperience,s=e.activeAppSection,o=g=>{r({type:"SET_APP_WORKSPACE_STATE",experience:g})},p=g=>{r({type:"SET_APP_WORKSPACE_STATE",section:g})},[u,f]=d.useState(""),[x,c]=d.useState("all"),[N,C]=d.useState(()=>new Set),[q,h]=d.useState(null),[T,A]=d.useState(null),[G,P]=d.useState(!1),[k,R]=d.useState("ai"),[E,$]=d.useState(ca),[K,ee]=d.useState("Business Analytics"),[Z,B]=d.useState(""),H=d.useMemo(()=>wa(e.authoredDomains),[e.authoredDomains]),[_,pe]=d.useState("analytics"),[I,de]=d.useState([]),[je,F]=d.useState(!1),[le,Q]=d.useState(()=>new Set),[xe,D]=d.useState(null),[W,ce]=d.useState(null),[se,ve]=d.useState(new Set),[fe,me]=d.useState(!1),[ie,m]=d.useState(null),[L,Y]=d.useState(!1),[X,ge]=d.useState(!1),[v,U]=d.useState(""),[ye,te]=d.useState(null),[be,ne]=d.useState({}),[ae,ke]=d.useState({}),[V,re]=d.useState(!1),[S,O]=d.useState(!1),Ve=d.useCallback(g=>{re(g),g||O(!1)},[]),[qe,ut]=d.useState(0),xt=d.useRef(0);d.useEffect(()=>{let g=!1;return r({type:"SET_APPS_LOADING",loading:!0}),J.listApps().then(y=>{g||(r({type:"SET_APPS",apps:y}),r({type:"SET_APPS_LOADING",loading:!1}))}),()=>{g=!0}},[r]),d.useEffect(()=>{J.getPersona().then(g=>r({type:"SET_ACTIVE_PERSONA",persona:g}))},[r]),d.useEffect(()=>{if(i!=="create")return;let g=!1;return F(!0),J.recommendAppBlocks({domain:Z||void 0,purpose:E,audience:"stakeholder",certifiedOnly:!0}).then(y=>{g||de(y)}).finally(()=>{g||F(!1)}),()=>{g=!0}},[i,k,Z,E]),d.useEffect(()=>{if(!e.activeAppId||i!=="workspace"){h(null),A(null);return}let g=!1;return P(!0),J.getApp(e.activeAppId).then(y=>{g||h(y)}),e.activeDashboardId?J.getDashboard(e.activeAppId,e.activeDashboardId).then(y=>{g||A(y)}).finally(()=>{g||P(!1)}):(A(null),P(!1)),()=>{g=!0}},[e.activeAppId,e.activeDashboardId,i]);const rt=d.useMemo(()=>JSON.stringify(Tr((T==null?void 0:T.dashboard)??null)),[T==null?void 0:T.dashboard]),_e=d.useMemo(()=>Tr((T==null?void 0:T.dashboard)??null),[T==null?void 0:T.dashboard,rt]);d.useEffect(()=>{const g=_e;ne(y=>{const z={};for(const oe of g)z[oe.id]=y[oe.id]??st(oe);return Pr(y,z)?y:z}),ke(y=>{const z={};for(const oe of g)z[oe.id]=y[oe.id]??st(oe);return Pr(y,z)?y:z})},[T==null?void 0:T.dashboard.id,rt,_e]);const Ye=async(g,y,z,oe)=>{r({type:"SET_APPS_LOADING",loading:!0});const Re=await J.listApps();r({type:"SET_APPS",apps:Re}),r({type:"SET_APPS_LOADING",loading:!1}),g&&r({type:"OPEN_APP",appId:g,dashboardId:y,...oe}),n(z)},ft=d.useMemo(()=>{const g=u.trim().toLowerCase();return e.apps.filter(y=>x==="mine"&&(y.storage??"shared")!=="mine"||x==="shared"&&(y.storage??"shared")!=="shared"||x==="fav"&&!N.has(y.id)?!1:g?[y.name,y.description??"",y.domain,y.audience??"",y.lifecycle??"",...y.tags??[],...y.owners??[],...y.dashboards.map(oe=>oe.title)].join(" ").toLowerCase().includes(g):!0)},[N,x,u,e.apps]),Xe=d.useMemo(()=>e.apps.find(g=>g.id===e.activeAppId)??null,[e.apps,e.activeAppId]),Tt=d.useCallback(g=>{h(y=>y&&{...y,investigations:g})},[]),$t=(g,y="view")=>{r({type:"OPEN_APP",appId:g.id,experience:y,section:"dashboards"}),n("workspace")},Pt=(g=E,y)=>{R("ai"),$(g),B(ka(y,e.authoredDomains)),Q(new Set),m(null),D(null),ce(null),n("create"),ut(z=>z+1)},gt=()=>{R("classic"),m(null),D(null),ce(null),n("create")},ht=g=>{Q(y=>{const z=new Set(y);return z.has(g)?z.delete(g):z.add(g),z})},Je=async g=>{var cr;const y=Array.isArray(g)?g.filter(ma=>typeof ma=="string"):[],z=E.trim();if(!z){m("Describe the app you want to build.");return}Y(!0),m(null);const oe=Array.from(k==="classic"?le:new Set([...Array.from(le),...y])),Re=await J.proposeAppAiBuild({prompt:z,domain:Z.trim()||void 0,owner:_.trim()||void 0,force:!1,selectedBlockIds:oe,plannerMode:"ai_assisted"});if(Y(!1),!Re.ok){m(Re.error),Re.session&&ce(Re.session);return}const Ze=Re.session;ce(Ze),D(null),ve(Ze.proposal?$a(Ze.proposal):new Set);const bt=(cr=Ze.plan)==null?void 0:cr.name;bt&&ee(bt)};d.useEffect(()=>{i!=="create"||k!=="ai"||qe===0||xt.current===qe||(xt.current=qe,Je())},[i,k,qe]);const at=g=>{Q(y=>{const z=new Set(y);return z.add(g),z}),Je([g])},Rt=g=>{ve(y=>{const z=new Set(y);return z.has(g)?z.delete(g):z.add(g),z})},mt=async()=>{var oe;if(!W||W.status!=="proposed")return;me(!0),m(null);const g=await J.commitAppAiBuild(W.id,{selectedTileIds:Array.from(se),expectedProposalHash:W.proposalHash});if(me(!1),!g.ok){m(g.error);return}const y=g.session;ce(y);const z={ok:!0,plan:y.plan,validation:y.validation,generated:{paths:y.generatedPaths},app:g.app,dashboardId:g.dashboardId};D(z),re(!0),await Ye(((oe=g.app)==null?void 0:oe.id)??z.plan.appId,g.dashboardId,"workspace",{experience:"view",section:"dashboards"})},b=async()=>{if(!K.trim()){m("Name the app before creating it.");return}if(!Z.trim()){m("Choose a domain before creating the app.");return}Y(!0),m(null);try{const g=await J.createApp({name:K.trim(),domain:Z.trim(),dashboardTitle:"Overview",purpose:E.trim(),audience:"stakeholder",visibility:"shared",lifecycle:"draft",tags:["app-builder",Z.trim().toLowerCase()],owners:[_.trim()||"owner@local"],selectedBlockIds:Array.from(le)});await Ye(g.app.id,g.dashboardId,"workspace",{experience:"build",section:"dashboards"})}catch(g){m(g instanceof Error?g.message:String(g))}finally{Y(!1)}},j=()=>{var y;const g=((y=xe==null?void 0:xe.app)==null?void 0:y.id)??(xe==null?void 0:xe.plan.appId);g&&(r({type:"OPEN_APP",appId:g,dashboardId:(xe==null?void 0:xe.dashboardId)??void 0,experience:"build",section:"dashboards"}),n("workspace"))},w=async()=>{if(!e.activeAppId)return;const g=v.trim();if(!g){te("Enter a dashboard page name.");return}te(null);const y=await J.createAppDashboard(e.activeAppId,{title:g});if(!y.ok){te(y.error);return}ge(!1),U(""),r({type:"OPEN_APP",appId:e.activeAppId,dashboardId:y.dashboard.id,experience:l,section:s}),await Ye(e.activeAppId,y.dashboard.id,"workspace")},M=d.useMemo(()=>({...ae}),[ae]),ue=d.useCallback((g,y)=>{ne(z=>({...z,[g.id]:rl(g,y)}))},[]),Se=d.useCallback(()=>{ke({...be})},[be]),$e=d.useCallback(()=>{const g=Object.fromEntries(_e.map(y=>[y.id,st(y)]));ne(g),ke(g)},[_e]);return t.jsxs("div",{className:`dql-apps-waterline dql-apps-theme-${a}`,children:[t.jsx("style",{children:Ol}),i==="library"?t.jsx(En,{apps:ft,allApps:e.apps,loading:e.appsLoading,search:u,filter:x,favorites:N,onSearch:f,onFilter:c,onToggleFavorite:g=>{C(y=>{const z=new Set(y);return z.has(g)?z.delete(g):z.add(g),z})},onStartAi:g=>Pt(g),onStartClassic:gt,onOpenApp:$t}):i==="create"?t.jsx(Mn,{mode:k,appName:K,prompt:E,domain:Z,domainOptions:H,owner:_,promptExamples:ua,catalog:I,catalogLoading:je,selectedBlocks:le,generated:xe,buildSession:W,proposalSelection:se,committing:fe,themeMode:e.themeMode,onToggleProposalTile:Rt,onCommitProposal:()=>void mt(),onAddBlock:at,saving:L,error:ie,onBack:()=>n("library"),onModeChange:g=>{R(g),g==="ai"&&Q(new Set)},onAppNameChange:ee,onPromptChange:$,onDomainChange:B,onOwnerChange:pe,onToggleBlock:ht,onBuild:()=>k==="ai"?void Je():void b(),onOpenGenerated:j}):t.jsx(On,{app:Xe,appDoc:q,dashboardDoc:T,loading:G,experience:l,section:s,explainOpen:V,explainExpanded:S,dashboardFilters:_e,dashboardFilterValues:be,themeMode:e.themeMode,variables:M,onBack:()=>n("library"),onExperienceChange:o,onSectionChange:p,onDashboardFilterChange:ue,onApplyDashboardFilters:Se,onResetDashboardFilters:$e,onExplainChange:Ve,onExplainExpandedChange:O,onAddPage:()=>ge(!0),onOpenDashboard:g=>r({type:"OPEN_DASHBOARD",dashboardId:g}),onDashboardChanged:g=>{A(y=>y&&{...y,dashboard:g}),Ye(e.activeAppId,g.id,"workspace")},onInvestigationsChanged:Tt,onOpenLineageNode:g=>{r({type:"OPEN_LINEAGE_DETAIL",nodeId:g,returnTo:e.activeAppId?{view:"apps",appId:e.activeAppId,dashboardId:e.activeDashboardId,label:Xe==null?void 0:Xe.name,experience:l,section:s}:null})}}),X&&t.jsx(Bl,{title:v,error:ye,onChange:U,onCancel:()=>{ge(!1),te(null)},onCreate:()=>void w()})]})}function En({apps:e,allApps:r,loading:a,search:i,filter:n,favorites:l,onSearch:s,onFilter:o,onToggleFavorite:p,onStartAi:u,onStartClassic:f,onOpenApp:x}){const c=El(r,l),[N,C]=d.useState(ca),q=()=>{const h=N.trim();h&&u(h)};return t.jsxs("main",{className:"dql-apps-wrap",children:[t.jsxs("section",{className:"dql-apps-createhead",children:[t.jsx("h1",{children:"Build an app"}),t.jsx("p",{children:"One request. DQL finds certified blocks, binds filters, and opens a stakeholder-ready app."})]}),t.jsxs("section",{className:"dql-apps-composer","aria-label":"Build an app with AI",children:[t.jsx("textarea",{value:N,onChange:h=>C(h.target.value),rows:2,"aria-label":"App build request",placeholder:"Build an EMEA revenue app for the CFO…",onKeyDown:h=>{h.key==="Enter"&&!h.shiftKey&&(h.preventDefault(),q())}}),t.jsxs("div",{className:"dql-apps-composer-row",children:[t.jsxs("span",{className:"dql-apps-composer-chip",children:[t.jsx(Fe,{size:11})," Certified blocks first"]}),t.jsx("i",{}),t.jsxs("button",{type:"button",className:"dql-apps-composer-blank",onClick:f,children:[t.jsx(Ge,{size:12})," Create blank"]}),t.jsx("button",{type:"button",className:"dql-apps-composer-send",onClick:q,disabled:!N.trim(),title:"Build",children:t.jsx(ja,{size:15,strokeWidth:2})})]})]}),t.jsxs("div",{className:"dql-apps-try",children:[t.jsx("span",{children:"Try:"}),ua.slice(0,3).map(h=>t.jsx("button",{type:"button",onClick:()=>C(h.prompt),children:h.title},h.title))]}),t.jsxs("div",{className:"dql-apps-sectionhead",children:[t.jsx("span",{children:"App library"}),t.jsx("i",{}),t.jsxs("b",{children:[r.length," app",r.length===1?"":"s"]})]}),t.jsxs("div",{className:"dql-apps-libbar",children:[t.jsx("div",{className:"dql-apps-filter-tabs",children:["all","mine","shared","fav"].map(h=>t.jsxs("button",{className:n===h?"on":"",onClick:()=>o(h),children:[Bn[h]," ",t.jsx("span",{children:c[h]})]},h))}),t.jsxs("label",{className:"dql-apps-search",children:[t.jsx(Le,{size:15,strokeWidth:2,"aria-hidden":"true"}),t.jsx("input",{value:i,onChange:h=>s(h.target.value),placeholder:"Search apps, domains, owners..."})]})]}),a&&r.length===0?t.jsx(we,{title:"Loading Apps...",detail:"Reading local app files from this DQL project."}):e.length===0?t.jsx(we,{title:"No Apps match this view.",detail:"Change the filter or start a new App above."}):t.jsx("div",{className:"dql-apps-grid",children:e.map(h=>t.jsx(_n,{app:h,favorite:l.has(h.id),onToggleFavorite:()=>p(h.id),onOpen:()=>x(h,"view"),onEdit:()=>x(h,"build")},h.id))})]})}function _n({app:e,favorite:r,onToggleFavorite:a,onOpen:i,onEdit:n}){var f,x;const l=e.certification==="certified"||e.lifecycle==="certified",s=((f=e.drafts)==null?void 0:f.length)??0,o=e.investigations??0,p=e.aiPins??0,u=l?"Certified app":s>0||o>0||p>0?"Review needed":"Draft app";return t.jsxs("article",{className:"dql-app-card",children:[t.jsxs("div",{className:"dql-app-card-body",onClick:i,role:"button",tabIndex:0,children:[t.jsxs("div",{className:"dql-app-card-top",children:[t.jsx("span",{className:"dql-app-eyebrow",children:e.domain||"Domain"}),t.jsx("button",{type:"button",className:`dql-app-star ${r?"on":""}`,onClick:c=>{c.stopPropagation(),a()},"aria-label":r?"Remove favourite":"Add favourite",children:t.jsx(_a,{size:14,strokeWidth:1.8})})]}),t.jsx(Oe,{tone:l?"certified":s>0?"draft":"agentic",children:l?"certified":s>0?"mixed":e.lifecycle??"draft"}),t.jsx("h3",{children:e.name}),t.jsx("p",{children:fa(e.description||`${e.name} consumption surface for ${e.domain}.`)}),t.jsxs("div",{className:"dql-app-card-mini",children:[t.jsx(Ht,{label:"Pages",value:String(e.dashboards.length)}),t.jsx(Ht,{label:"Books",value:String(((x=e.notebooks)==null?void 0:x.length)??0)}),t.jsx(Ht,{label:"Drafts",value:String(s)})]}),t.jsxs("div",{className:"dql-app-card-signals",children:[t.jsxs("span",{children:[t.jsx(Fe,{size:13})," ",u]}),t.jsxs("span",{children:[t.jsx(Le,{size:13})," ",o," analysis"]}),t.jsxs("span",{children:[t.jsx(Be,{size:13})," ",p," local insights"]})]})]}),t.jsxs("div",{className:"dql-app-card-depth",children:[t.jsx("span",{children:_l(e)}),t.jsxs("button",{type:"button",className:"dql-app-card-act",onClick:i,title:"View app",children:[t.jsx(Mr,{size:12})," View"]}),t.jsxs("button",{type:"button",className:"dql-app-card-act",onClick:n,title:"Edit app",children:[t.jsx(Kr,{size:12})," Edit"]})]})]})}function Mn({mode:e,appName:r,prompt:a,domain:i,domainOptions:n,owner:l,promptExamples:s,catalog:o,catalogLoading:p,selectedBlocks:u,generated:f,buildSession:x,proposalSelection:c,committing:N,themeMode:C,onToggleProposalTile:q,onCommitProposal:h,saving:T,error:A,onBack:G,onModeChange:P,onAppNameChange:k,onPromptChange:R,onDomainChange:E,onOwnerChange:$,onToggleBlock:K,onBuild:ee,onOpenGenerated:Z,onAddBlock:B}){var se,ve,fe,me,ie,m,L,Y,X,ge;const[H,_]=d.useState(!1),[pe,I]=d.useState(""),de=o.filter(v=>u.has(v.id)),je=i.trim()||"Auto domain",F=l.trim()||"Local owner",le=(x==null?void 0:x.status)==="proposed"?x.proposal:void 0,Q=(f==null?void 0:f.plan)??(x==null?void 0:x.plan)??Ll(r,a,i,l,de),D=(((se=Q.pages[0])==null?void 0:se.tiles)??[]).filter(Jn),W=(x==null?void 0:x.warnings)??[],ce=Zn(Q);if(e==="ai"){const v=(le==null?void 0:le.tiles)??[],U=v.filter(S=>S.certification==="certified").length,ye=v.filter(S=>S.certification==="reviewed_semantic").length,te=v.filter(S=>c.has(S.id)).length,be=new Set(v.map(S=>S.blockId).filter(Boolean)),ne=pe.trim().toLowerCase(),ae=o.filter(S=>!be.has(S.id)&&(!ne||S.name.toLowerCase().includes(ne)||(S.description??"").toLowerCase().includes(ne))),ke=((ve=Q.globalFilters)!=null&&ve.length?Q.globalFilters:((fe=Q.pages[0])==null?void 0:fe.filters)??[]).slice(0,4),V=S=>{const O=S.toLowerCase();return O.includes("kpi")||O.includes("metric")||O.includes("single")?"Σ":O.includes("table")?"▤":"▦"},re=S=>{const O=S.toLowerCase();return O.includes("kpi")||O.includes("single")?"KPI":O.includes("table")?"Table":O.includes("line")?"Line chart":O.includes("bar")?"Bar chart":S?S.charAt(0).toUpperCase()+S.slice(1):"Auto"};return t.jsx("div",{className:"dql-app-flow-scroll",children:t.jsxs("div",{className:"dql-app-flow",children:[t.jsxs("div",{className:"dql-app-flow-head",children:[t.jsx("h2",{children:"Build an app"}),t.jsx("p",{children:"One request. DQL finds certified blocks, binds filters, and opens a stakeholder-ready app."})]}),t.jsx("div",{className:"dql-app-flow-bubble",children:a}),T?t.jsxs("div",{className:"dql-app-buildstream",children:[t.jsx("span",{className:"dql-app-buildorb",children:t.jsx(Be,{size:14})}),t.jsxs("div",{className:"dql-app-buildbody",children:[t.jsx("span",{className:"dql-app-shimmer",children:"Finding certified blocks…"}),t.jsxs("div",{className:"dql-app-buildsteps",children:[t.jsxs("span",{style:{animationDelay:"0.2s"},children:[t.jsx(lt,{size:11,className:"ok"}),"Matched domain ",t.jsx("code",{children:je.toLowerCase()})]}),t.jsxs("span",{style:{animationDelay:"0.8s"},children:[t.jsx(lt,{size:11,className:"ok"}),"Scanning certified blocks and semantic metrics"]}),t.jsxs("span",{style:{animationDelay:"1.4s"},children:[t.jsx("i",{className:"dot"}),"Detecting app filters from block parameters…"]})]})]})]}):null,!T&&le?t.jsxs("div",{className:"dql-app-buildstream proposal",children:[t.jsx("span",{className:"dql-app-buildorb still",children:t.jsx(Be,{size:14})}),t.jsxs("div",{className:"dql-app-buildbody wide",children:[t.jsxs("div",{className:"dql-app-proposal-lede",children:["Found ",t.jsxs("strong",{children:[U," certified block",U===1?"":"s"]}),ye>0?` and ${ye} reviewed semantic view${ye===1?"":"s"}`:""," for your app. Uncheck any you don't need, or add more — everything ships governed."]}),t.jsxs("div",{className:"dql-app-proposal-card",children:[v.map(S=>{const O=c.has(S.id),Ve=S.certification==="certified",qe=S.certification==="reviewed_semantic";return t.jsxs("button",{type:"button",className:`dql-app-proposal-row ${O?"":"off"}`,onClick:()=>q(S.id),children:[t.jsx("span",{className:`dql-app-prop-check ${O?"on":""}`,children:O?t.jsx(lt,{size:10,strokeWidth:3.2}):null}),t.jsx("span",{className:`dql-app-prop-glyph ${Ve&&V(S.viz)==="▤"?"green":""}`,children:V(S.viz)}),t.jsxs("span",{className:"dql-app-prop-name",children:[t.jsx("b",{children:S.blockId??S.title}),t.jsx("small",{children:S.description??S.question??S.title})]}),t.jsx("span",{className:`dql-app-prop-badge ${Ve?"certified":"draft"}`,children:Ve?"Certified":qe?"Reviewed semantic":"Draft"}),t.jsx("span",{className:"dql-app-prop-viz",children:re(S.viz)})]},S.id)}),t.jsxs("button",{type:"button",className:"dql-app-addmore",onClick:()=>_(S=>!S),children:[t.jsx(zt,{size:13,strokeWidth:2.2})," Add more blocks"]}),H?t.jsxs("div",{className:"dql-app-addmore-panel",children:[t.jsxs("div",{className:"dql-app-addmore-search",children:[t.jsx(Le,{size:12}),t.jsx("input",{value:pe,onChange:S=>I(S.target.value),placeholder:`Search ${o.length} certified block${o.length===1?"":"s"}…`})]}),p?t.jsx("div",{className:"dql-app-addmore-hint",children:"Loading certified blocks…"}):null,ae.slice(0,6).map(S=>t.jsxs("button",{type:"button",className:"dql-app-addmore-row",onClick:()=>{I(""),B(S.id)},children:[t.jsx(zt,{size:12,strokeWidth:2.2}),t.jsx("span",{children:S.name}),t.jsxs("small",{children:[S.domain??"certified"," · ",S.status]})]},S.id)),!p&&ae.length===0?t.jsx("div",{className:"dql-app-addmore-hint",children:"No more matching certified blocks."}):null]}):null]}),ke.length>0?t.jsxs("div",{className:"dql-app-detected",children:[t.jsx("span",{className:"dql-app-detected-label",children:"Detected filters"}),ke.map(S=>t.jsxs("span",{className:"dql-app-detected-pill",children:[S.label," · ",t.jsx("strong",{children:At(S.default??"Any")})]},S.id))]}):null,le.gaps.length>0?t.jsx("div",{className:"dql-app-flow-gaps",children:le.gaps.slice(0,3).map(S=>t.jsxs("span",{children:[t.jsx(He,{size:12})," ",S.question]},S.id))}):null,t.jsxs("div",{className:"dql-app-flow-actions",children:[t.jsxs("button",{type:"button",className:"dql-app-flow-build",onClick:h,disabled:N||te===0,children:[t.jsx(Ge,{size:13}),N?"Building app…":`Build app with ${te} governed tile${te===1?"":"s"}`]}),t.jsx("button",{type:"button",className:"dql-app-flow-reset",onClick:G,children:"Start over"})]})]})]}):null,!T&&!le?t.jsxs("div",{className:"dql-app-flow-actions",children:[t.jsxs("button",{type:"button",className:"dql-app-flow-build",onClick:ee,children:[t.jsx(Be,{size:13})," Find certified blocks"]}),t.jsx("button",{type:"button",className:"dql-app-flow-reset",onClick:G,children:"Start over"})]}):null,A?t.jsx("div",{className:"dql-app-error",children:A}):null,W.length>0&&!T?t.jsx("div",{className:"dql-app-flow-gaps",children:W.slice(0,2).map((S,O)=>t.jsxs("span",{children:[t.jsx(He,{size:12})," ",S]},`${S}-${O}`))}):null]})})}return t.jsxs("div",{className:"dql-app-create-shell",children:[t.jsxs("div",{className:"dql-app-buildbar",children:[t.jsxs("button",{type:"button",className:"dql-app-back dql-app-back-label",onClick:G,children:[t.jsx(Hr,{size:14}),t.jsx("span",{children:"Apps"})]}),t.jsx("span",{className:"dql-app-name-input",children:t.jsx("input",{value:r,onChange:v=>k(v.target.value),spellCheck:!1})}),t.jsx(Oe,{tone:f?"agentic":"draft",children:f?"generated":"draft"}),t.jsxs("div",{className:"dql-app-mode-seg",children:[t.jsxs("button",{type:"button",onClick:()=>P("ai"),children:[t.jsx(Be,{size:15})," Build AI"]}),t.jsxs("button",{type:"button",className:"on",onClick:()=>P("classic"),children:[t.jsx(er,{size:15})," Classic"]})]}),t.jsxs("div",{className:"dql-app-build-actions",children:[t.jsxs("span",{className:"dql-app-persona",children:[t.jsx("b",{children:"CFO"})," CFO"]}),f?t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:Z,children:"Open app"}):null,t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-primary",onClick:ee,disabled:T,children:T?"Building...":"Create app"})]})]}),t.jsx("div",{className:"dql-app-create-workspace clean classic",children:t.jsxs("section",{className:"dql-app-ai-start",children:[t.jsxs("div",{className:"dql-app-ai-start-main",children:[t.jsxs("div",{className:"dql-app-ai-start-copy",children:[t.jsx("h1",{children:"Start with one AI input."}),t.jsx("p",{children:"DQL finds certified blocks, detects app filters, and opens the generated app in a clean stakeholder view."})]}),t.jsxs("div",{className:"dql-app-ai-start-card",children:[t.jsx("textarea",{value:a,onChange:v=>R(v.target.value),rows:5,"aria-label":"App request",placeholder:"Build an NBA player performance app for stakeholders..."}),t.jsx("button",{type:"button",className:"dql-app-ai-start-send",onClick:ee,disabled:T||!a.trim(),title:"Build app",children:T?t.jsx(Me,{size:19}):t.jsx(Pa,{size:19})})]}),t.jsxs("div",{className:"dql-app-suggestions dql-app-ai-start-examples","aria-label":"Prompt examples",children:[t.jsx("span",{children:"Examples"}),s.slice(0,4).map(v=>t.jsx("button",{type:"button",onClick:()=>{R(v.prompt);const U=n.find(ye=>ye.value.toLowerCase()===v.domain.toLowerCase()||ye.label.toLowerCase()===v.domain.toLowerCase());E((U==null?void 0:U.value)??"")},children:v.title},v.title))]}),t.jsxs("details",{className:"dql-app-ai-context dql-app-ai-start-advanced",children:[t.jsxs("summary",{children:[t.jsx("span",{children:"Advanced controls"}),t.jsxs("b",{children:[je," / ",F]}),t.jsx(_r,{size:14})]}),t.jsxs("div",{className:"dql-app-ai-context-grid",children:[t.jsxs("label",{children:["Domain",t.jsxs("select",{value:i,onChange:v=>E(v.target.value),children:[t.jsx("option",{value:"",children:"Global / cross-domain"}),n.map(v=>t.jsx("option",{value:v.value,children:v.label},v.value))]})]}),t.jsxs("label",{children:["Owner",t.jsx("input",{value:l,onChange:v=>$(v.target.value)})]}),t.jsxs("label",{children:["Build mode",t.jsxs("select",{value:e,onChange:v=>P(v.target.value),children:[t.jsx("option",{value:"ai",children:"AI first"}),t.jsx("option",{value:"classic",children:"Manual block selection"})]})]})]}),e==="classic"?t.jsx(Fn,{title:"Manual certified block selection",subtitle:`${u.size} selected`,catalog:o,loading:p,selectedBlocks:u,onToggleBlock:K}):null]}),le&&!f?t.jsx("div",{style:{border:`1px solid ${Ae[C].cellBorder}`,background:Ae[C].appBg,borderRadius:10,padding:14},children:t.jsx(Ra,{proposal:le,t:Ae[C],selected:c,onToggle:q,onCreate:h,busy:N,error:null})}):null,f?t.jsxs("div",{className:"dql-app-ai-result dql-app-ai-start-result",children:["Generated ",t.jsx("b",{children:f.plan.name})," with ",f.validation.certifiedTiles," certified app tile",f.validation.certifiedTiles===1?"":"s"," and ",ce," scoped report",ce===1?"":"s",".",x?t.jsxs("small",{children:["Session ",x.id]}):null]}):null,A?t.jsx("div",{className:"dql-app-error",children:A}):null]}),t.jsxs("aside",{className:"dql-app-ai-start-context",children:[t.jsxs("section",{className:"dql-app-ai-context-card",children:[t.jsx(Ft,{title:"Certified blocks found",meta:Q.coverage?`${Q.coverage.certifiedTiles} certified · ${Q.coverage.gaps} gap${Q.coverage.gaps===1?"":"s"}`:`${D.length||o.length} matches`}),t.jsxs("div",{className:"dql-app-ai-evidence-list",children:[(D.length?D:o.slice(0,4)).map((v,U)=>"name"in v?t.jsxs("div",{className:"dql-app-ai-evidence-row",children:[t.jsx("span",{children:t.jsx(Fe,{size:14})}),t.jsxs("div",{children:[t.jsx("b",{children:v.name}),t.jsx("small",{children:v.description})]}),t.jsx(Oe,{tone:v.status==="certified"?"certified":"draft",children:v.status})]},`catalog-${v.id}-${U}`):t.jsxs("div",{className:"dql-app-ai-evidence-row",children:[t.jsx("span",{children:t.jsx(Fe,{size:14})}),t.jsxs("div",{children:[t.jsx("b",{children:v.title}),t.jsx("small",{children:v.description??v.rationale??"Certified DQL block"})]}),t.jsx(Oe,{tone:"certified",children:"Certified"})]},`plan-${v.id}-${U}`)),!D.length&&!o.length?t.jsx(we,{title:"No matches yet.",detail:"Enter a prompt to retrieve certified blocks.",compact:!0}):null]})]}),t.jsxs("section",{className:"dql-app-ai-context-card",children:[t.jsx(Ft,{title:"Detected app filters",meta:"bound to block params"}),t.jsxs("div",{className:"dql-app-ai-filter-preview",children:[((me=Q.globalFilters)!=null&&me.length?Q.globalFilters:((ie=Q.pages[0])==null?void 0:ie.filters)??[]).slice(0,4).map(v=>t.jsxs("span",{children:[t.jsx("small",{children:v.label}),t.jsx("b",{children:At(v.default??"Any")})]},v.id)),(m=Q.globalFilters)!=null&&m.length||(Y=(L=Q.pages[0])==null?void 0:L.filters)!=null&&Y.length?null:t.jsxs(t.Fragment,{children:[t.jsxs("span",{children:[t.jsx("small",{children:"Domain"}),t.jsx("b",{children:je})]}),t.jsxs("span",{children:[t.jsx("small",{children:"Owner"}),t.jsx("b",{children:F})]}),t.jsxs("span",{children:[t.jsx("small",{children:"Top N"}),t.jsx("b",{children:"Any"})]})]})]})]}),t.jsxs("section",{className:"dql-app-ai-context-card",children:[t.jsx(Ft,{title:"Possible deeper analysis",meta:"Copilot asks for context first"}),t.jsxs("div",{className:"dql-app-ai-gap-list",children:[((X=Q.missingEvidence)!=null&&X.length?Q.missingEvidence:W).slice(0,4).map((v,U)=>t.jsxs("span",{children:[t.jsx(He,{size:13})," ",v]},`${v}-${U}`)),!((ge=Q.missingEvidence)!=null&&ge.length)&&!W.length?t.jsxs("span",{children:[t.jsx(He,{size:13})," Driver explanations, new grains, and reusable block proposals require typed context before DQL creates SQL."]}):null]})]})]})]})})]})}function On({app:e,appDoc:r,dashboardDoc:a,loading:i,experience:n,section:l,explainOpen:s,explainExpanded:o,dashboardFilters:p,dashboardFilterValues:u,themeMode:f,variables:x,onBack:c,onExperienceChange:N,onSectionChange:C,onDashboardFilterChange:q,onApplyDashboardFilters:h,onResetDashboardFilters:T,onExplainChange:A,onExplainExpandedChange:G,onAddPage:P,onOpenDashboard:k,onDashboardChanged:R,onInvestigationsChanged:E,onOpenLineageNode:$}){var ke;const{dispatch:K}=Nt(),ee=(a==null?void 0:a.dashboard.layout.items.filter(V=>!!V.block).length)??0,Z=((ke=r==null?void 0:r.drafts)==null?void 0:ke.length)??0,B=d.useMemo(()=>xa((a==null?void 0:a.dashboard)??null).map(V=>V.blockId),[a]),H=B.join("|"),[_,pe]=d.useState(B[0]??null),[I,de]=d.useState(null),[je,F]=d.useState(null),[le,Q]=d.useState(null),[xe,D]=d.useState(null),[W,ce]=d.useState("idle"),[se,ve]=d.useState(""),[fe,me]=d.useState("idle"),[ie,m]=d.useState(""),L=d.useCallback(V=>{de(V)},[]);d.useCallback(V=>{Q({...V,nonce:Date.now()}),C("research"),A(!0)},[A,C]);const Y=d.useCallback(V=>{D(V)},[]),X=d.useCallback(()=>{Q(null)},[]),ge=d.useCallback((V,re)=>{var S,O;if(pe(V),n==="view"){K({type:"OPEN_GLOBAL_AI",audience:"stakeholder",context:{title:"App copilot",scopeHint:jt(e==null?void 0:e.name)?`Follow up on ${jt(e==null?void 0:e.name)}`:"Follow up on this tile",selectedObject:{kind:"block",id:V,title:a==null?void 0:a.dashboard.metadata.title},workspaceContext:{appId:e==null?void 0:e.id,dashboardId:a==null?void 0:a.dashboard.id,blockId:V},suggestedQuestions:(O=(S=a==null?void 0:a.app)==null?void 0:S.copilot)==null?void 0:O.suggestedQuestions},autoRun:{text:re,mode:"auto"}});return}A(!0),F({text:re,nonce:Date.now()})},[K,n,e==null?void 0:e.id,e==null?void 0:e.name,a==null?void 0:a.dashboard.id,a==null?void 0:a.dashboard.metadata.title,A]);d.useEffect(()=>{n==="view"&&(l==="notebooks"||l==="ai"||l==="drafts"||l==="settings")&&C("dashboards")},[n,l,C]),d.useEffect(()=>{if(B.length===0){_!==null&&pe(null);return}(!_||!B.includes(_))&&pe(B[0])},[B,H,_]),d.useEffect(()=>{de(null),D(null)},[e==null?void 0:e.id,a==null?void 0:a.dashboard.id]);const v=!!(e&&a&&(l==="dashboards"||l==="research")),U=v&&s,ye=V=>{ce(V),V!=="ready"&&window.setTimeout(()=>ce("idle"),1800)},te=async()=>{var S;const V=ol(e,r,a);ve(V);let re=!1;try{typeof navigator<"u"&&((S=navigator.clipboard)!=null&&S.writeText)&&(await navigator.clipboard.writeText(V),re=!0)}catch{re=!1}if(!re){const O=document.createElement("textarea");O.value=V,O.style.position="fixed",O.style.left="-9999px",document.body.appendChild(O),O.focus(),O.select(),re=document.execCommand("copy"),document.body.removeChild(O)}ye(re?"copied":"ready")},be=()=>{const V=pl(e,r,a),re=new Blob([V],{type:"text/markdown;charset=utf-8"}),S=URL.createObjectURL(re),O=document.createElement("a");O.href=S,O.download=`${(e==null?void 0:e.id)??(r==null?void 0:r.app.id)??"dql-app"}-brief.md`,document.body.appendChild(O),O.click(),document.body.removeChild(O),URL.revokeObjectURL(S),ye("downloaded")},ne=async()=>{if(!(e!=null&&e.id))return;me("running"),m("");const V=await J.promoteApp(e.id,{lifecycle:"review"});if(!V.ok){me("error"),m(V.error);return}me("done"),m(`${V.paths.length} shared files updated${V.removedLocalTiles?`, ${V.removedLocalTiles} local AI tile removed`:""}.`),window.setTimeout(()=>me("idle"),2400)},ae=l==="dashboards"&&!!a;return t.jsxs("div",{className:"dql-app-workspace",children:[t.jsxs("div",{className:"dql-app-view-topbar",children:[t.jsxs("button",{type:"button",className:"dql-app-back dql-app-back-label",onClick:c,title:"Back to apps",children:[t.jsx(Hr,{size:14}),t.jsx("span",{children:"Apps"})]}),t.jsx("span",{className:"dql-app-crumb",children:t.jsx("b",{children:(e==null?void 0:e.id)??"app"})}),t.jsx(Oe,{tone:"certified",children:Z>0?`${ee} certified`:"All certified"}),Z>0?t.jsxs(Oe,{tone:"draft",children:[Z," draft"]}):null,t.jsx("span",{className:"dql-app-topbar-divider","aria-hidden":"true"}),t.jsxs("div",{className:"dql-app-modeseg",role:"group","aria-label":"App mode",children:[t.jsxs("button",{type:"button",className:n==="view"?"on":"",onClick:()=>N("view"),title:"Clean stakeholder view",children:[t.jsx(Mr,{size:12})," View"]}),t.jsxs("button",{type:"button",className:n==="build"?"on":"",onClick:()=>N("build"),title:"Rearrange tiles and edit this app",children:[t.jsx(Kr,{size:12})," Edit"]})]}),t.jsxs("div",{className:"dql-app-view-actions",children:[t.jsx(Cn,{app:(r==null?void 0:r.app)??null}),n==="build"?t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>void ne(),disabled:fe==="running",children:[t.jsx(Fe,{size:14})," ",fe==="running"?"Promoting":"Promote"]}):null,t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line dql-apps-btn-icon",title:W==="copied"?"Copied handoff":"Share local app handoff",onClick:()=>void te(),children:W==="copied"?t.jsx(lt,{size:15}):t.jsx(Ya,{size:15})}),t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line dql-apps-btn-icon",title:W==="downloaded"?"Brief saved":"Download app brief",onClick:be,children:W==="downloaded"?t.jsx(lt,{size:15}):t.jsx(Sa,{size:15})}),W==="ready"?t.jsxs("div",{className:"dql-app-share-popover",children:[t.jsx("b",{children:"Local handoff"}),t.jsx("textarea",{readOnly:!0,value:se,onFocus:V=>V.currentTarget.select()})]}):null,fe==="done"||fe==="error"?t.jsx("div",{className:`dql-app-promote-popover ${fe==="error"?"error":""}`,children:ie}):null]})]}),t.jsxs("main",{className:"dql-app-view-wrap",children:[t.jsxs("div",{className:"dql-app-title-row",children:[t.jsxs("div",{className:"dql-app-title-copy",children:[t.jsxs("div",{className:"dql-app-title-meta",children:[t.jsxs("span",{children:[t.jsx(Ge,{size:14})," ",(e==null?void 0:e.domain)??(a==null?void 0:a.dashboard.metadata.domain)??"DQL App"]}),ae?t.jsx("span",{className:"dql-app-title-context",children:jt(e==null?void 0:e.name)||"App"}):null,n==="build"?t.jsx(Oe,{tone:"draft",children:"Customizing"}):null]}),t.jsx("h1",{children:jt(ae?a==null?void 0:a.dashboard.metadata.title:e==null?void 0:e.name)||"App"}),t.jsx("p",{children:fa((ae?a==null?void 0:a.dashboard.metadata.description:e==null?void 0:e.description)??"Local DQL App")})]}),t.jsxs("div",{className:"dql-app-nav-row",children:[t.jsx(Wn,{appDoc:r,section:l,experience:n,onChange:C}),l==="dashboards"&&(r!=null&&r.dashboards.length)?t.jsx(Vn,{dashboards:r.dashboards,activeDashboardId:a==null?void 0:a.dashboard.id,isBuild:n==="build",onOpen:k,onAdd:P}):null,v?t.jsx("button",{type:"button",className:`dql-apps-btn dql-apps-btn-line dql-apps-btn-icon ${s?"on":""}`,title:s?"Hide AI copilot":"Show AI copilot",onClick:()=>A(!s),children:t.jsx(It,{size:15})}):null,ae?t.jsx(t.Fragment,{children:t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line dql-apps-btn-icon",title:"Open dashboard lineage",onClick:()=>{e&&a&&$(`dashboard:${e.id}/${a.dashboard.id}`)},children:t.jsx(Er,{size:15})})}):null]})]}),t.jsxs("div",{className:`dql-app-view-layout ${U?"":"no-explain"}`,children:[t.jsxs("div",{className:"dql-app-main-column",children:[l==="dashboards"&&a&&p.length>0?t.jsxs("section",{className:"dql-app-filter-row","aria-label":"Dashboard filters",children:[t.jsxs("div",{className:"dql-app-filter-row-copy",children:[t.jsx("b",{children:"Filters"}),t.jsx("span",{children:"Set the business scope, then apply once to refresh the full story."})]}),t.jsx(Dn,{filters:p,values:u,onChange:q}),t.jsxs("div",{className:"dql-app-filter-row-actions",children:[t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:T,children:"Reset"}),t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-primary",onClick:h,children:"Apply"})]})]}):null,i?t.jsx(we,{title:"Loading app...",detail:"Reading dashboard files and running local blocks."}):l==="dashboards"&&a&&e?t.jsx(ri,{appId:e.id,dashboard:a.dashboard,editable:n==="build",embeddedHeader:!0,variables:x,selectedBlockId:_,onBlockFocus:pe,onAskBlock:ge,onOpenLineageNode:$,copilotOpen:s,onCopilotChange:A,onDashboardChanged:R,onRunChange:L}):l==="notebooks"?t.jsx(Qn,{appDoc:r}):l==="research"?t.jsx(Kn,{appDoc:r,dashboardDoc:a,seed:le,themeMode:f,onSeedHandled:X,onDashboardChanged:R,onInvestigationsChanged:E,onActiveInvestigationChange:Y}):l==="ai"?t.jsx(Gn,{appDoc:r}):l==="drafts"?t.jsx(Yn,{appDoc:r}):l==="settings"?t.jsx(Xn,{appDoc:r}):t.jsx(we,{title:"No dashboard page selected.",detail:"Choose a dashboard page or add one in Build mode."})]}),U?t.jsx(Hn,{app:e,appDoc:r,dashboardDoc:a,dashboardRun:I,variables:x,selectedBlockId:_,askSeed:je,themeMode:f,expanded:o,onToggleExpanded:()=>G(!o),onClose:()=>A(!1)}):null]})]})]})}function Fn({title:e,subtitle:r,catalog:a,loading:i,selectedBlocks:n,onToggleBlock:l}){const[s,o]=d.useState(""),p=d.useMemo(()=>{const u=s.trim().toLowerCase();return u?a.filter(f=>[f.name,f.domain,f.status,f.description,f.owner??"",...f.tags??[]].join(" ").toLowerCase().includes(u)):a},[a,s]);return t.jsxs("div",{className:"dql-app-palette",children:[t.jsxs("div",{className:"dql-app-palette-title",children:[t.jsxs("span",{children:[t.jsx(er,{size:14})," ",e]}),t.jsx("b",{children:r})]}),t.jsxs("label",{className:"dql-app-palette-search",children:[t.jsx(Le,{size:14}),t.jsx("input",{value:s,onChange:u=>o(u.target.value),placeholder:"Search blocks, domains, tags"})]}),i?t.jsx(we,{title:"Loading blocks...",detail:"Finding certified blocks for this domain.",compact:!0}):null,!i&&p.length===0?t.jsx(we,{title:"No blocks found.",detail:"Try another domain or search term.",compact:!0}):null,p.slice(0,24).map((u,f)=>{const x=n.has(u.id);return t.jsxs("button",{type:"button",className:x?"selected":"",onClick:()=>l(u.id),children:[t.jsx("span",{className:"dql-app-palette-icon",children:t.jsx(rr,{size:14})}),t.jsxs("span",{children:[t.jsx("b",{children:u.name}),t.jsxs("small",{children:[u.domain," / ",u.chartType??"table"]})]}),t.jsx("i",{children:x?"using":u.status})]},`${u.id}-${f}`)}),p.length>24?t.jsxs("div",{className:"dql-app-palette-more",children:[p.length-24," more matches"]}):null]})}function Wn({appDoc:e,section:r,experience:a,onChange:i}){var s,o,p,u,f;const n=((s=e==null?void 0:e.investigations)==null?void 0:s.length)??0,l=a==="view"?[{id:"dashboards",label:"App",count:(e==null?void 0:e.dashboards.length)??0,icon:t.jsx(Ge,{size:14})}]:[{id:"dashboards",label:"App",count:(e==null?void 0:e.dashboards.length)??0,icon:t.jsx(Ge,{size:14})},{id:"research",label:"Analysis",count:n,icon:t.jsx(Le,{size:14})},{id:"notebooks",label:"Notebooks",count:((o=e==null?void 0:e.notebooks)==null?void 0:o.length)??((p=e==null?void 0:e.app.notebooks)==null?void 0:p.length)??0,icon:t.jsx(Qr,{size:14})},{id:"ai",label:"Pins",count:((u=e==null?void 0:e.aiPins)==null?void 0:u.length)??0,icon:t.jsx(It,{size:14})},{id:"drafts",label:"Drafts",count:((f=e==null?void 0:e.drafts)==null?void 0:f.length)??0,icon:t.jsx(tr,{size:14})},{id:"settings",label:"Settings",icon:t.jsx(Me,{size:14})}];return t.jsx("nav",{className:"dql-app-section-tabs","aria-label":"App sections",children:l.map(x=>t.jsxs("button",{className:r===x.id?"on":"","data-app-section":x.id,onClick:()=>i(x.id),title:x.label,"aria-label":`${x.label}${x.count!==void 0?` ${x.count}`:""}`,children:[t.jsx("i",{className:"dql-app-tab-icon",children:x.icon}),t.jsx("span",{className:"dql-app-tab-label",children:x.label}),x.count!==void 0?t.jsx("b",{children:x.count}):null]},x.id))})}function Vn({dashboards:e,activeDashboardId:r,isBuild:a,onOpen:i,onAdd:n}){const l=e.find(s=>s.id===r)??e[0];return t.jsxs("div",{className:"dql-app-page-picker","aria-label":"Dashboard page",children:[t.jsxs("span",{children:[t.jsx(rr,{size:14})," Page"]}),t.jsx("select",{value:(l==null?void 0:l.id)??"",onChange:s=>i(s.target.value),title:(l==null?void 0:l.title)??"Dashboard page",children:e.map(s=>t.jsxs("option",{value:s.id,children:[s.title," (",s.itemCount,")"]},s.id))}),a?t.jsx("button",{type:"button",onClick:n,title:"Add dashboard page",children:t.jsx(zt,{size:14})}):null]})}function Hn({app:e,appDoc:r,dashboardDoc:a,dashboardRun:i,variables:n,selectedBlockId:l,askSeed:s,themeMode:o,expanded:p,onToggleExpanded:u,onClose:f}){const x=Ae[o],c=(a==null?void 0:a.dashboard)??null,C=d.useMemo(()=>xa(c,i),[c,i]).find(ee=>ee.blockId===l)??null,q=C?i==null?void 0:i.tiles.find(ee=>ee.tileId===C.tileId||ee.blockId===C.blockId):null,h=(e==null?void 0:e.id)??(r==null?void 0:r.app.id)??"app",T=(c==null?void 0:c.id)??"dashboard",A=Fr(`app:${h}:${T}`),[G,P]=d.useState(!1),k=ze((e==null?void 0:e.name)??(r==null?void 0:r.app.name)??(c==null?void 0:c.metadata.title)??"App workspace"),R=ze((c==null?void 0:c.metadata.title)??"Dashboard"),E=C?`Focused on ${ze(C.title)} in ${R}`:`Scoped to ${R}`,$=C?{kind:"block",id:C.blockId,title:C.title}:c?{kind:"dashboard",id:c.id,title:c.metadata.title}:{kind:"app",id:h,title:k},K=d.useMemo(()=>{var ee,Z,B,H,_;return{surface:"apps",appId:h,appName:(e==null?void 0:e.name)??(r==null?void 0:r.app.name),appDomain:(e==null?void 0:e.domain)??(r==null?void 0:r.app.domain),appDescription:(e==null?void 0:e.description)??(r==null?void 0:r.app.description),dashboardId:c==null?void 0:c.id,dashboardTitle:c==null?void 0:c.metadata.title,dashboardDescription:c==null?void 0:c.metadata.description,dashboardFilters:n,selectedBlock:C?{blockId:C.blockId,tileId:C.tileId,title:C.title,visualization:C.viz,status:q==null?void 0:q.status,certificationStatus:q==null?void 0:q.certificationStatus,rowCount:(ee=q==null?void 0:q.result)==null?void 0:ee.rowCount,columns:(B=(Z=q==null?void 0:q.result)==null?void 0:Z.columns)==null?void 0:B.slice(0,12),sampleRows:sl((H=q==null?void 0:q.result)==null?void 0:H.rows,(_=q==null?void 0:q.result)==null?void 0:_.columns)}:void 0}},[e,r,h,c,C,q,n]);return t.jsx(Or,{t:x,title:"App AI",subtitle:k,expanded:p,onToggleExpanded:u,onClose:f,onNewChat:A.resetThreadId,running:G,ariaLabel:"App AI",className:"dql-app-explain-panel dql-app-assistant-panel",children:t.jsx(d.Suspense,{fallback:t.jsx("div",{style:{padding:16,fontSize:12,color:x.textSecondary},children:"Loading App AI…"}),children:t.jsx($n,{themeMode:o,title:"App AI",scopeHint:E,audience:"stakeholder",selectedObject:$,workspaceContext:K,initialMode:"auto",autoRun:s!=null&&s.text?{text:s.text,mode:"ask",nonce:s.nonce}:void 0,threadId:A.threadId,onThreadIdChange:A.onThreadIdChange,onRunningChange:P,answerFirstCards:!0,examplePrompts:[{label:"Explain this dashboard",prompt:"Explain the most important business story in this dashboard and what action it suggests."},{label:"Find the main driver",prompt:"What is the main driver behind the current result? Use the active app filters and governed evidence."},{label:"Check this result",prompt:"Validate the current result against its certified block, semantic definitions, and lineage."}]},`${h}:${T}`)})})}function Kn({appDoc:e,dashboardDoc:r,seed:a,themeMode:i,onSeedHandled:n,onDashboardChanged:l,onInvestigationsChanged:s,onActiveInvestigationChange:o}){var ie;const p=e==null?void 0:e.app.id,u=r==null?void 0:r.dashboard.id,f=Ae[i],[x,c]=d.useState(()=>(e==null?void 0:e.investigations)??[]),[N,C]=d.useState(null),[q,h]=d.useState(!1),[T,A]=d.useState(null),[G,P]=d.useState(null),[k,R]=d.useState("preview"),[E,$]=d.useState(""),[K,ee]=d.useState(!1),[Z,B]=d.useState(!1),[H,_]=d.useState(null);d.useEffect(()=>{if(!p){c([]),C(null);return}let m=!1;return h(!0),J.listAppInvestigations(p).then(L=>{if(m)return;P(null),c(L);const Y=Dt(L);C(X=>{var ge,v;return X??((ge=Y.find(U=>U.status==="ready"))==null?void 0:ge.id)??((v=Y[0])==null?void 0:v.id)??null})}).finally(()=>{m||h(!1)}),()=>{m=!0}},[p]),d.useEffect(()=>{s(x)},[x,s]),d.useEffect(()=>{if(!a||!p)return;let m=!1;const L={dashboardId:a.dashboardId??u,sourceTileId:a.sourceTileId,sourceBlockId:a.sourceBlockId,title:a.title,question:a.question,intent:a.intent,context:a.context,generatedSql:a.generatedSql,run:!0},Y=dt(a.title??a.question)||"requested follow-up",X=`${p}:${JSON.stringify(L)}`,ge=async()=>{A("create"),_(Y),P(null);let U=Ot.get(X);U||(U=J.createAppInvestigation(p,L),Ot.set(X,U),U.finally(()=>{window.setTimeout(()=>Ot.delete(X),5e3)}));const ye=await U;if(m)return;if(A(null),!ye.ok){P(ye.error),_(null),n();return}const te=ye.investigation,be=ne=>{c(ae=>nt(ae,ne)),C(ne.id),R("preview"),B(!1),ne.status!=="draft"&&ne.status!=="running"&&_(null)};if(be(te),te.status!=="draft"&&te.status!=="running"){n();return}A(te.id);for(let ne=0;ne<20;ne+=1){if(await new Promise(ke=>{window.setTimeout(ke,1e3)}),m)return;const ae=await J.getAppInvestigation(p,te.id);if(m)return;if(ae&&ae.status!=="draft"&&ae.status!=="running"){A(null),be(ae),n();return}}n(),A(null),_(null),P("Analysis is still running. Reopen it or refresh to load the latest proof.")},v=window.setTimeout(()=>void ge(),0);return()=>{m=!0,window.clearTimeout(v)}},[a==null?void 0:a.nonce,p,u,n]);const pe=d.useMemo(()=>Dt(x),[x]),I=pe.find(m=>m.id===N)??pe.find(m=>m.status==="ready")??pe[0]??null;d.useEffect(()=>(o(I),()=>o(null)),[I,o]);const de=pe.filter(m=>m.id!==(I==null?void 0:I.id)).filter(m=>K||m.status!=="error").slice(0,K?40:5),je=Math.max(0,pe.length-(I?1:0)-de.length),F=I?ul(I):null,le=F?wl(F):"",Q=T==="create"||!!H,xe=Q&&!!H,D=Q&&!I;d.useEffect(()=>{$((I==null?void 0:I.generatedSql)??"")},[I==null?void 0:I.id,I==null?void 0:I.generatedSql]);const W=async(m,L)=>{if(!p)return null;A(m.id),P(null);const Y=L==null?void 0:L.trim(),X=await J.runAppInvestigation(p,m.id,Y?{generatedSql:Y}:void 0);return A(null),X.ok?(c(ge=>nt(ge,X.investigation)),R("preview"),X.investigation):(P(X.error),null)},ce=async m=>{if(!p)return null;A(`rebuild:${m.id}`),P(null);const L=await J.runAppInvestigation(p,m.id,{repairMode:"rebuild_from_certified"});return A(null),L.ok?(c(Y=>nt(Y,L.investigation)),R(L.investigation.error?"sql":"preview"),L.investigation):(P(L.error),null)},se=async m=>{if(!p)return null;A(`pin:${m.id}`),P(null);const L=await J.pinAppInvestigation(p,m.id,{dashboardId:m.dashboardId??u,title:m.title});return A(null),L.ok?(c(Y=>nt(Y,L.investigation)),C(L.investigation.id),L.dashboard&&l(L.dashboard),L.investigation):(P(L.error),null)},ve=async m=>{if(!p)return;if(!m.generatedSql){P("Add reviewed SQL before creating a draft block.");return}const L=m.pinnedAiPinId?m:await se(m),Y=L==null?void 0:L.pinnedAiPinId;if(!Y)return;A(`promote:${m.id}`),P(null);const X=await J.promoteAiPin(p,Y);if(A(null),!X.ok){P(X.error??"Draft block could not be created.");return}const ge=await J.getAppInvestigation(p,m.id);ge&&c(v=>nt(v,ge))},fe=async m=>{const L=E.trim();let Y=m;if(L&&L!==(m.generatedSql??"").trim()){const X=await W(m,L);if(!X)return;Y=X}await ve(Y)},me=async m=>{const L=E.trim();let Y=m;if(L&&L!==(m.generatedSql??"").trim()){const X=await W(m,L);if(!X)return null;Y=X}return se(Y)};return e?t.jsxs("div",{className:`dql-app-research-shell ${Z||!I&&!D?"history-open":"history-collapsed"}`,children:[t.jsxs("section",{className:"dql-app-research-list",children:[t.jsxs("div",{className:"dql-app-research-head",children:[t.jsxs("span",{children:[t.jsx(Le,{size:14})," Analysis"]}),t.jsxs("div",{children:[t.jsx("b",{children:x.length}),I?t.jsx("button",{type:"button",onClick:()=>B(!1),title:"Close analysis history",children:"Close"}):null]})]}),q?t.jsx(we,{title:"Loading analysis...",detail:"Reading local app analysis.",compact:!0}):null,G?t.jsx("div",{className:"dql-app-error",children:G}):null,!q&&x.length===0?t.jsx(we,{title:"No analysis yet.",detail:"Start from Copilot so the analysis keeps the original question, filters, and selected result context.",compact:!0}):null,t.jsxs("div",{className:"dql-app-research-items",children:[I?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"dql-app-research-group-label",children:"Current analysis"}),t.jsx($r,{item:I,selected:!0,onClick:()=>{P(null),C(I.id),R("preview"),B(!1)}})]}):null,de.length?t.jsx("div",{className:"dql-app-research-group-label",children:"Recent history"}):null,de.map(m=>t.jsx($r,{item:m,selected:(I==null?void 0:I.id)===m.id,onClick:()=>{P(null),C(m.id),R("preview"),B(!1)}},m.id)),je>0?t.jsxs("button",{type:"button",className:"dql-app-research-history-toggle",onClick:()=>ee(m=>!m),children:[t.jsx("span",{children:K?"Hide older runs":`Show ${je} older run${je===1?"":"s"}`}),t.jsx("small",{children:K?"Keep the current analysis focused":"Includes failed and superseded analysis attempts"})]}):null]})]}),t.jsx("section",{className:"dql-app-research-detail",children:xe?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"dql-app-report-toolbar",children:[t.jsxs("div",{children:[t.jsx("span",{children:"New memo"}),t.jsx("b",{children:H})]}),x.length?t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>B(m=>!m),children:[t.jsx(Le,{size:13})," ",Z?"Hide history":`Analysis history (${x.length})`]}):null]}),G?t.jsx("div",{className:"dql-app-error",children:G}):null,t.jsxs("div",{className:"dql-app-research-creating active",children:[t.jsx(Me,{size:24}),t.jsx("span",{children:"Preparing business memo"}),t.jsx("h2",{children:"Writing business memo..."}),t.jsxs("p",{children:['DQL is opening a scoped memo for "',H,'". The previous memo stays in history while this answer is built from the typed context, active filters, certified block evidence, and preview proof.']}),t.jsxs("div",{className:"dql-app-research-creating-steps",children:[t.jsx("small",{children:"Reading current filters"}),t.jsx("small",{children:"Checking certified block context"}),t.jsx("small",{children:"Building narrative and proof appendix"})]})]})]}):I&&F?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"dql-app-report-toolbar",children:[t.jsxs("div",{children:[t.jsx("span",{children:"Current memo"}),t.jsx("b",{children:ha(I)})]}),t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>B(m=>!m),children:[t.jsx(Le,{size:13})," ",Z?"Hide history":`Memo history (${x.length})`]})]}),Q||T===I.id||I.status==="running"?t.jsxs("div",{className:`dql-app-research-status ${Q?"opening":""}`,children:[t.jsx(Me,{size:14}),t.jsxs("div",{children:[t.jsx("span",{children:Q?"Opening a new business memo...":"Refreshing the memo from certified evidence, active filters, and optional preview proof..."}),H?t.jsx("small",{children:H}):null]})]}):null,G?t.jsx("div",{className:"dql-app-error",children:G}):null,t.jsxs("article",{className:"dql-app-research-report",children:[t.jsxs("header",{className:"dql-app-report-hero",children:[t.jsxs("div",{className:"dql-app-report-status-row",children:[t.jsxs("span",{children:[t.jsx(Le,{size:13})," Business memo"]}),t.jsx(Oe,{tone:I.status==="error"?"draft":"agentic",children:I.reviewStatus})]}),t.jsx("h2",{children:F.title}),t.jsx("p",{children:F.scope}),t.jsx("div",{className:"dql-app-report-context-line",children:F.contextFacts.map(m=>t.jsxs("span",{children:[t.jsx("b",{children:m.label}),m.value]},m.label))}),t.jsxs("div",{className:"dql-app-report-actions",children:[t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>void me(I),disabled:T===`pin:${I.id}`,children:[t.jsx(Qa,{size:13})," ",I.pinnedAiPinId?"Pinned to app":"Pin insight"]}),t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-primary",onClick:()=>void fe(I),disabled:!(E.trim()||I.generatedSql)||T===`promote:${I.id}`,children:[t.jsx(tr,{size:13})," ",T===`promote:${I.id}`?"Drafting...":"Create draft block"]}),t.jsxs("details",{className:"dql-app-report-review-actions",children:[t.jsx("summary",{children:"Reviewer tools"}),t.jsxs("div",{children:[t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>void W(I,E),disabled:T===I.id,children:[t.jsx(Me,{size:13})," ",T===I.id?"Refreshing...":"Refresh memo"]}),(ie=F.previewIssue)!=null&&ie.canRebuild?t.jsxs("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:()=>void ce(I),disabled:T===`rebuild:${I.id}`,children:[t.jsx(Me,{size:13})," ",T===`rebuild:${I.id}`?"Rebuilding...":"Rebuild SQL"]}):null]})]})]}),F.previewIssue?t.jsxs("div",{className:"dql-app-report-warning",children:[t.jsx(He,{size:14}),t.jsx("span",{children:F.previewIssue.message})]}):null]}),t.jsx("section",{className:"dql-app-report-section dql-app-report-paper",children:F.sections.length?t.jsx(jl,{sections:F.sections}):t.jsx(Pn,{text:le,t:f,compact:!0})}),F.keyNumbers.length||F.drivers.length?t.jsxs("section",{className:`dql-app-report-section dql-app-report-evidence-story ${F.keyNumbers.length&&F.drivers.length?"":"single"}`,children:[F.keyNumbers.length?t.jsxs("div",{children:[t.jsx("h3",{children:F.intent==="segment_compare"?"Segment numbers":F.intent==="diagnose_change"?"Movement numbers":"Key numbers"}),t.jsx("div",{className:"dql-app-report-numbers",children:F.keyNumbers.map(m=>t.jsxs("div",{className:"dql-app-report-number",children:[t.jsx("span",{children:m.label}),t.jsx("b",{children:m.value}),t.jsx("small",{children:m.detail})]},m.label))})]}):null,F.drivers.length?t.jsxs("div",{children:[t.jsx("h3",{children:F.intent==="anomaly_investigation"?"Exception view":F.intent==="entity_drilldown"?"Entity view":"Driver view"}),t.jsx(Cl,{drivers:F.drivers})]}):null]}):null,t.jsxs("details",{className:"dql-app-report-section dql-app-report-appendix",children:[t.jsxs("summary",{children:[t.jsx("span",{children:"Technical appendix"}),t.jsx("small",{children:"SQL, preview rows, caveats, routing, and source context for analyst review"}),t.jsx(_r,{size:15})]}),t.jsxs("div",{className:"dql-app-research-evidence-head",children:[t.jsxs("div",{children:[t.jsx("h3",{children:"SQL and proof"}),t.jsx("p",{children:"Use this appendix only when you need to inspect routing, repair generated SQL, or validate source context before pinning this memo to the app."})]}),t.jsx("div",{className:"dql-app-research-tabs",children:["preview","sql","assumptions","context"].map(m=>t.jsx("button",{type:"button",className:k===m?"on":"",onClick:()=>R(m),children:m==="assumptions"?"Caveats":ze(m)},m))})]}),t.jsx(Il,{investigation:I,tab:k,sqlDraft:E,onSqlDraftChange:$})]})]})]}):t.jsxs(t.Fragment,{children:[G?t.jsx("div",{className:"dql-app-error",children:G}):null,D?t.jsxs("div",{className:"dql-app-research-creating",children:[t.jsx(Me,{size:22}),t.jsx("span",{children:"Preparing business memo"}),t.jsx("h2",{children:"Writing business memo..."}),t.jsx("p",{children:H?`DQL is opening a scoped memo for "${H}".`:"DQL is using the Copilot context, active filters, certified block evidence, and any available preview proof to create the main-canvas memo."})]}):t.jsx(we,{title:"Start analysis from Copilot.",detail:"Ask a follow-up, add context, then review the analysis here."})]})})]}):t.jsx(we,{title:"No App selected.",detail:"Choose an App before writing analysis."})}function $r({item:e,selected:r,onClick:a}){return t.jsxs("button",{type:"button",className:[r?"on":"",`status-${e.status}`].filter(Boolean).join(" "),onClick:a,children:[t.jsx("span",{children:ha(e)}),t.jsx("small",{children:$l(e)})]})}function Qn({appDoc:e}){const r=(e==null?void 0:e.notebooks)??(e==null?void 0:e.app.notebooks)??[];return r.length?t.jsx("div",{className:"dql-app-simple-list",children:r.map(a=>t.jsxs(Qe,{icon:t.jsx(Qr,{size:16}),children:[t.jsx("b",{children:a.title??a.path.split("/").pop()}),t.jsxs("span",{children:[a.role," / ",a.visibility," / ",a.path]})]},a.path))}):t.jsx(we,{title:"No notebooks attached.",detail:"Attach analysis notebooks in Build mode when this App needs supporting work."})}function Gn({appDoc:e}){const r=(e==null?void 0:e.aiPins)??[];return r.length?t.jsx("div",{className:"dql-app-simple-list",children:r.map(a=>t.jsxs(Qe,{icon:t.jsx(It,{size:16}),children:[t.jsx("b",{children:a.title}),t.jsxs("span",{children:[a.certification," / ",a.reviewStatus]})]},a.id))}):t.jsx(we,{title:"No pinned insights yet.",detail:"Use Copilot from a dashboard page, create analysis, then add useful reviewed insights to this App."})}function Yn({appDoc:e}){const r=(e==null?void 0:e.drafts)??[];return r.length?t.jsx("div",{className:"dql-app-simple-list",children:r.map(a=>t.jsxs(Qe,{icon:t.jsx(tr,{size:16}),children:[t.jsx("b",{children:a.name}),t.jsxs("span",{children:[a.reviewStatus??"needs review"," / ",a.path]})]},a.path))}):t.jsx(we,{title:"No drafts.",detail:"Generated and promoted draft blocks will appear here for review."})}function Xn({appDoc:e}){var r;return e?t.jsxs("div",{className:"dql-app-settings-grid",children:[t.jsxs(Qe,{icon:t.jsx(Fe,{size:16}),children:[t.jsx("b",{children:"Owners"}),t.jsx("span",{children:e.app.owners.join(", ")})]}),t.jsxs(Qe,{icon:t.jsx(Me,{size:16}),children:[t.jsx("b",{children:"Lifecycle"}),t.jsx("span",{children:e.app.lifecycle??"draft"})]}),t.jsxs(Qe,{icon:t.jsx(er,{size:16}),children:[t.jsx("b",{children:"Policies"}),t.jsxs("span",{children:[e.app.policies.length," local access policies"]})]}),t.jsxs(Qe,{icon:t.jsx(Ge,{size:16}),children:[t.jsx("b",{children:"Homepage"}),t.jsx("span",{children:((r=e.app.homepage)==null?void 0:r.type)??"dashboard"})]})]}):t.jsx(we,{title:"No App selected.",detail:"Choose an App to inspect its settings."})}function Ft({title:e,meta:r}){return t.jsxs("div",{className:"dql-app-panel-head",children:[t.jsx("span",{children:e}),r?t.jsx("b",{children:r}):null]})}function Jn(e){return e.kind==="certified_block"&&e.certification==="certified"}function Zn(e){var i;const r=Array.isArray(e.scopedReports)?e.scopedReports.length:0,a=Array.isArray((i=e.planning)==null?void 0:i.scopedReports)?e.planning.scopedReports.length:0;return r>0||a>0?Math.max(r,a):Array.isArray(e.missingEvidence)?e.missingEvidence.length:0}function Dn({filters:e,values:r,onChange:a}){return e.length===0?t.jsx("span",{className:"dql-app-filter-empty",children:"No filters"}):t.jsx(t.Fragment,{children:e.map(i=>t.jsx(Un,{filter:i,value:r[i.id]??st(i),onChange:n=>a(i,n)},i.id))})}function Un({filter:e,value:r,onChange:a}){var f;const i=ze(e.id),n=tl(e,r),l=e.sourceBlockId,s=e.bindsTo||e.id,o=(e.type==="string"||e.type==="select")&&!!l&&!((f=e.options)!=null&&f.length),[p,u]=d.useState(null);if(d.useEffect(()=>{if(!o||!l)return;let x=!1;return J.dashboardFilterOptions(l,s).then(c=>{!x&&c&&c.options.length>0&&!c.truncated&&u(c.options)}),()=>{x=!0}},[l,s,o]),p&&p.length>0)return t.jsx(Wt,{icon:it(e),label:i,value:n,onChange:a,options:[["",`All ${i.toLowerCase()}`],...p.map(x=>[x,x])]});if(e.type==="select")return t.jsx(Wt,{icon:it(e),label:i,value:n,onChange:a,options:el(e)});if(e.type==="boolean")return t.jsx(Wt,{icon:it(e),label:i,value:String(!!r),onChange:x=>a(x==="true"),options:[["true","Yes"],["false","No"]]});if(e.type==="daterange"){const x=r&&typeof r=="object"&&!Array.isArray(r)?r:{},c=typeof x.start=="string"?x.start:"",N=typeof x.end=="string"?x.end:"",C=(q,h)=>a(q&&h?{start:q,end:h}:void 0);return t.jsxs("label",{className:"dql-app-filter-select dql-app-filter-range",title:e.bindsTo?`${i} -> ${e.bindsTo}`:i,"aria-label":i,children:[t.jsx("span",{className:"dql-app-filter-icon",children:it(e)}),t.jsx("input",{type:"date",value:c,"aria-label":`${i} from`,onChange:q=>C(q.target.value,N)}),t.jsx("span",{className:"dql-app-filter-range-sep",children:"–"}),t.jsx("input",{type:"date",value:N,"aria-label":`${i} to`,onChange:q=>C(c,q.target.value)})]})}return t.jsxs("label",{className:"dql-app-filter-select",title:e.bindsTo?`${i} -> ${e.bindsTo}`:i,"aria-label":i,children:[t.jsx("span",{className:"dql-app-filter-icon",children:it(e)}),t.jsx("input",{type:e.type==="number"?"number":e.type==="date"?"date":"text",value:n,placeholder:i,onChange:x=>a(x.target.value)})]})}function it(e){return e.type==="date"||e.type==="daterange"||/season|year|date|time|period/i.test(e.id)?t.jsx(Oa,{size:13}):t.jsx(Gr,{size:13})}function el(e){var a;return((a=e.options)!=null&&a.length?e.options:[e.default].filter(i=>i!==void 0)).map(i=>[String(i),ze(String(i))])}function st(e){var r;return e.default!==void 0?e.default:e.type==="number"?da(e.id):e.type==="boolean"?!1:e.type==="select"?((r=e.options)==null?void 0:r[0])??"":""}function tl(e,r){return r==null?String(st(e)??""):e.type==="daterange"&&typeof r=="object"?JSON.stringify(r):String(r)}function rl(e,r){if(e.type==="number"){if(typeof r=="string"&&r.trim()==="")return"";const a=Number(r);return Number.isFinite(a)?a:r}if(e.type==="boolean")return r===!0||r==="true";if(e.type==="select"&&typeof e.default=="number"){const a=Number(r);return Number.isFinite(a)?a:r}return r}function Pr(e,r){const a=Object.keys(e),i=Object.keys(r);return a.length!==i.length?!1:a.every(n=>Object.is(e[n],r[n]))}function Wt({label:e,icon:r,value:a,options:i,onChange:n}){return t.jsxs("label",{className:"dql-app-filter-select",title:e,"aria-label":e,children:[r?t.jsx("span",{className:"dql-app-filter-icon",children:r}):t.jsx("span",{children:e}),t.jsx("select",{value:a,onChange:l=>n(l.target.value),children:i.map(([l,s])=>t.jsx("option",{value:l,children:s},l))})]})}function Vt(e){return e.block?"blockId"in e.block?e.block.blockId??null:e.block.ref??null:null}function xa(e,r){if(!e)return[];const a=new Map(((r==null?void 0:r.tiles)??[]).map(p=>[p.tileId,p])),i=new Map(((r==null?void 0:r.tiles)??[]).filter(p=>p.blockId).map(p=>[p.blockId,p])),n=new Set(e.layout.items.filter(p=>Vt(p)&&Rr(p)).map(p=>Zt(`${p.title??""} ${Vt(p)??""}`)).filter(Boolean)),l=e.layout.items.map((p,u)=>{const f=Vt(p);if(!f)return null;const x=Zt(`${p.title??""} ${f}`);if(x&&n.has(x)&&!Rr(p))return null;const c=a.get(p.i)??i.get(f);return{block:{blockId:f,title:p.title??f,viz:p.viz.type,tileId:p.i},duplicateKeys:al(p,c,f),score:ll(p,c,u)}}).filter(p=>!!p).sort((p,u)=>u.score-p.score),s=new Set,o=[];for(const p of l)if(!p.duplicateKeys.some(u=>s.has(u))){for(const u of p.duplicateKeys)s.add(u);o.push(p.block)}return o}function Rr(e){var r,a;return(r=e.parameterBindings)!=null&&r.length?!0:!!((a=e.filterBindings)!=null&&a.some(i=>!i.unsupportedReason&&(i.mode==="parameter"||i.mode==="predicate"||!!i.binding)))}function al(e,r,a){const i=[`block:${a}`],n=il(r==null?void 0:r.result);n&&i.push(`result:${n}`);const l=Zt(`${e.title??""} ${a}`);return l&&i.push(`topic:${l}`),i}function il(e){var i,n;if(!((i=e==null?void 0:e.columns)!=null&&i.length)||!((n=e.rows)!=null&&n.length))return"";const r=e.columns.slice(0,6).map(l=>l.toLowerCase()),a=e.rows.slice(0,3).map(l=>r.map(s=>nl(l[s]??l[e.columns.find(o=>o.toLowerCase()===s)??s])).join(","));return[...r,...a].join("|")}function nl(e){return e==null?"":typeof e=="number"?Number.isFinite(e)?String(Math.round(e*1e3)/1e3):"":String(e).toLowerCase().replace(/\s+/g," ").trim().slice(0,80)}function Zt(e){const r=e.toLowerCase().replace(/\b(codex|e2e|qa|draft|imported|pasted|raw|sql|block)\b/g," ").replace(/\b20\d{10,}\b/g," "),a=/\b(player|players|scorer|scorers|athlete)\b/.test(r)?"player":/\b(customer|account|user)\b/.test(r)?"customer":/\b(team|teams)\b/.test(r)?"team":"",i=/\b(top|bottom|rank|ranking|leader|leaderboard|scorer|scorers)\b/.test(r)?"ranking":/\b(availability|freshness|record|records|quality|coverage)\b/.test(r)?"availability":/\b(trend|weekly|monthly|daily|over time)\b/.test(r)?"trend":"",n=/\b(point|points|pts|score|scoring|scorer|scorers)\b/.test(r)?"points":/\b(field goal|fgm|fga|field-goal|field_goals?)\b/.test(r)?"field_goals":/\b(count|records|games played)\b/.test(r)?"count":/\b(availability|freshness|quality|coverage)\b/.test(r)?"quality":"";return!a||!i||!n?"":`${a}|${i}|${n}`}function ll(e,r,a){var n,l,s,o,p;let i=1e4-a;return(n=e.parameterBindings)!=null&&n.length&&(i+=5e4),(l=e.filterBindings)!=null&&l.length&&(i+=2e4),(r==null?void 0:r.status)==="ok"&&(i+=15e3),(o=(s=r==null?void 0:r.result)==null?void 0:s.rows)!=null&&o.length&&(i+=8e3),(r==null?void 0:r.certificationStatus)==="certified"&&(i+=5e3),String(e.trustState??((p=e.display)==null?void 0:p.trustState)??"").toLowerCase()==="certified"&&(i+=3e3),/codex\s+e2e|test|pasted/i.test(String(e.title??""))&&(i-=6e3),i}function sl(e,r){if(!Array.isArray(e)||e.length===0)return;const a=Array.isArray(r)&&r.length>0?r.slice(0,8):Object.keys(e[0]??{}).slice(0,8);return e.slice(0,5).map(i=>Object.fromEntries(a.map(n=>[n,i[n]])))}function jt(e){return String(e??"").replace(/\s+/g," ").replace(/[\s,;:.–—-]+$/,"").trim()}function ze(e){const r=String(e??"").replace(/[_-]+/g," ").replace(/\s+/g," ").trim();return r?r.split(" ").map(a=>{const i=a.toLowerCase();return i==="ai"?"AI":i==="cxo"?"CXO":i==="kpi"?"KPI":i==="vs"||i==="vs."?"vs.":`${a.charAt(0).toUpperCase()}${a.slice(1)}`}).join(" "):"Business"}function fa(e){return e.replace(/\bDraft gaps stay in Research until reviewed\.?/gi,"Follow-up analysis stays out of the stakeholder view until reviewed.").replace(/\bresearch path\b/gi,"analysis path").replace(/\bresearch suggestions\b/gi,"analysis suggestions").replace(/\bfollow-up research\b/gi,"follow-up analysis").replace(/\bevidence chips\b/gi,"proof chips").replace(/\bevidence, lineage\b/gi,"proof and lineage").replace(/\bevidence and lineage\b/gi,"proof and lineage").replace(/\bsource evidence\b/gi,"source proof").replace(/\bOpen Research\b/g,"Open Analysis").replace(/\bResearch\b/g,"Analysis")}function At(e){return e==null||e===""?"All":Array.isArray(e)?e.map(At).join(", "):typeof e=="boolean"?e?"On":"Off":typeof e=="number"?e.toLocaleString():typeof e=="object"?JSON.stringify(e):String(e)}function ga(e,r){if(Array.isArray(r))return r.map(i=>ga(e,i)).join(", ");const a=typeof r=="number"?r:typeof r=="string"&&r.trim()!==""?Number(r):NaN;return/(season|year)/i.test(e)&&Number.isInteger(a)&&a>=1900&&a<=2200?String(a):At(r)}function ol(e,r,a){var o;const i=(e==null?void 0:e.id)??(r==null?void 0:r.app.id)??"app",n=(e==null?void 0:e.name)??(r==null?void 0:r.app.name)??"DQL App",l=(a==null?void 0:a.dashboard.metadata.title)??((o=r==null?void 0:r.dashboards[0])==null?void 0:o.title)??"Overview",s=typeof window<"u"?window.location.origin:"local DQL";return[n,`App ID: ${i}`,`Dashboard: ${l}`,`Domain: ${(e==null?void 0:e.domain)??(r==null?void 0:r.app.domain)??(a==null?void 0:a.dashboard.metadata.domain)??"unknown"}`,`Open locally: ${s}`].join(`
|
|
43
|
+
`)}function pl(e,r,a){const i=r==null?void 0:r.app,n=(e==null?void 0:e.name)??(i==null?void 0:i.name)??"DQL App",l=(r==null?void 0:r.dashboards)??[],s=(r==null?void 0:r.notebooks)??(i==null?void 0:i.notebooks)??[],o=(r==null?void 0:r.drafts)??[],p=(r==null?void 0:r.aiPins)??[],u=a==null?void 0:a.dashboard,f=(u==null?void 0:u.layout.items.map(c=>c.block?c.block.blockId??c.block.ref??c.title??c.i:null).filter(c=>!!c))??[];return`${[`# ${n}`,"",(e==null?void 0:e.description)??(u==null?void 0:u.metadata.description)??(i==null?void 0:i.description)??"Local DQL App brief.","","## App Metadata","",`- App ID: ${(e==null?void 0:e.id)??(i==null?void 0:i.id)??"unknown"}`,`- Domain: ${(e==null?void 0:e.domain)??(i==null?void 0:i.domain)??(u==null?void 0:u.metadata.domain)??"unknown"}`,`- Lifecycle: ${(e==null?void 0:e.lifecycle)??(i==null?void 0:i.lifecycle)??(u==null?void 0:u.metadata.lifecycle)??"draft"}`,`- Audience: ${(e==null?void 0:e.audience)??(i==null?void 0:i.audience)??(u==null?void 0:u.metadata.audience)??"stakeholder"}`,`- Owners: ${((e==null?void 0:e.owners)??(i==null?void 0:i.owners)??[]).join(", ")||"owner@local"}`,"","## Pages","",...l.length?l.map(c=>`- ${c.title} (${c.itemCount} tiles)`):["- No dashboard pages found."],"","## Governed Blocks","",...f.length?f.map(c=>`- ${c}`):["- No block-backed tiles found."],"","## Supporting Assets","",`- Notebooks: ${s.length}`,`- Pinned insights: ${p.length}`,`- Drafts needing review: ${o.length}`,""].join(`
|
|
44
|
+
`)}
|
|
45
|
+
`}function Oe({children:e,tone:r="certified"}){return t.jsx("span",{className:`dql-app-seal ${r}`,children:e})}function Ht({label:e,value:r}){return t.jsxs("span",{children:[t.jsx("small",{children:e}),t.jsx("b",{children:r})]})}function Br({label:e,value:r}){return t.jsxs("div",{className:"dql-app-keyvalue-inline",children:[t.jsx("span",{children:e}),t.jsx("b",{children:r})]})}function dl(e,r){const a=dt(r)||"Review this app result.",i=typeof e=="string"?e.trim():"";if(!i)return a;const n=cl(i);if(n)return n;const l=i.replace(/\bCurrent app filters:\s*[\s\S]*$/i,"").replace(/\bCertified block to start from:\s*[\s\S]*$/i,"").replace(/\bSource result:\s*[\s\S]*$/i,"").replace(/\bUser intent:\s*[\s\S]*$/i,"");return dt(l)||a}function cl(e){const a=/(?:^|\n)\s*(Analysis goal|Analysis question|Report question|Research question|Proof question|Evidence question|Validation question|Reusable block goal|Business question|Question):\s*/i.exec(e);if(!a)return"";const i=(a.index??0)+a[0].length,n=e.slice(i),l=n.search(/(?:^|\n)\s*(Current app filters|Certified block to start from|Source result|User intent|Review status|Trust status):/i),s=l>=0?n.slice(0,l):n;return dt(s)}function dt(e){const r=e.replace(/^\/(ask|research|report|analy[sz]e|analysis|proof|evidence|validate|verify|add\s+block|create\s+block|draft\s+block|block)\b/i,"").replace(/\s+/g," ").trim();if(r.length<=280)return r;const a=r.slice(0,280).replace(/\s+\S*$/,"").trim();return a?`${a}...`:r.slice(0,280)}function ul(e){var E,$;const r=he(e.metrics),a=he(e.context),i=he(e.evidence),n=he(i.planner),l=xl(a,i,n),s=he(a.focusBlock),o=dr(e),p=he(o==null?void 0:o.result),u=Array.isArray(p.rows)?p.rows.length:0,f=dl(a.userProvidedContext,e.question),x=typeof a.actionMode=="string"?a.actionMode:void 0,c=String(r.context??s.title??e.sourceBlockId??"selected app result"),N=String(a.activeFilterSummary??Nl(he(a.activeFilters))),C=yl(e.intent,x),q=ml(e,f,x,c),h=bl(C,f,c,N),T=((E=e.summary)==null?void 0:E.trim())||`DQL wrote review-required analysis for ${c}: ${e.question}. The selected app result is available, but this analysis still needs human review before it becomes governed business logic.`,A=(($=e.recommendation)==null?void 0:$.trim())||"Use this as analyst-reviewed analysis first. Confirm the metric grain, filters, source tables, and caveats before adding it to the app or drafting a reusable DQL block.",G=[{label:String(r.currentLabel??"Current"),value:ot(r.currentValue),detail:String(r.currentDetail??"current selected result")},{label:String(r.baselineLabel??"Baseline"),value:ot(r.baselineValue),detail:String(r.baselineDetail??"comparison or prior value")},{label:String(r.deltaLabel??"Delta"),value:ot(r.delta),detail:String(r.deltaDetail??"change or gap to explain")},{label:"Preview",value:u?`${u} rows`:"not captured",detail:"bounded preview sample"}].filter(hl),P=ql(e),k=u>0||G.length>0||P.length>0||Object.keys(r).length>0,R=zl(e.reportSections).filter(K=>gl(K,e.error,k));return{title:q,intent:e.intent,actionMode:x,scope:h,summary:T,recommendation:A,routeDecision:l,sections:R,previewIssue:fl(e.error,typeof n.sqlErrorKind=="string"?n.sqlErrorKind:void 0,k),contextFacts:[{label:"Type",value:C},{label:"Source",value:c},{label:"Filters",value:N},{label:"Review",value:ze(e.reviewStatus)}],keyNumbers:G,drivers:P}}function xl(e,r,a){const i=he(e.originatingAnswer),n=he(e.routeDecision),l=he(i.decision),s=he(r.routeDecision),o=he(a.routeDecision),p=Object.keys(n).length?n:Object.keys(l).length?l:Object.keys(s).length?s:Object.keys(o).length?o:{},u=typeof p.reason=="string"?p.reason.trim():"",f=typeof p.nextAction=="string"?p.nextAction.trim():"";if(!u&&!f)return null;const x=typeof p.mode=="string"&&p.mode.trim()?ze(p.mode):"Analysis",c=typeof p.confidence=="number"&&Number.isFinite(p.confidence)?Math.round(Math.max(0,Math.min(1,p.confidence))*100):void 0;return{mode:x,reason:u,nextAction:f,confidence:c}}function fl(e,r,a=!1){const i=e==null?void 0:e.trim();return!i||a&&(r==="runtime_unavailable"||r==="unknown"||/\bAI provider did not return a governed answer\b/i.test(i))?null:r==="runtime_unavailable"?{message:"Preview could not run because the warehouse or execution runtime is unavailable. Resume or choose an active warehouse, then refresh the report. The SQL may not need to change.",canRebuild:!1}:r==="timeout"?{message:"Preview timed out. Narrow filters or simplify the SQL in the trace appendix, then refresh before promoting this report.",canRebuild:!1}:r==="safety"?{message:"DQL blocked this preview because the SQL is not safe read-only analytical SQL. Rebuild from the certified block or edit it as a SELECT/WITH query before refreshing.",canRebuild:!0}:{message:"SQL preview needs review. Edit the SQL in the trace appendix or rebuild it from the certified block context before promoting this report.",canRebuild:!0}}function gl(e,r,a){const i=String(e.id??"").toLowerCase();return!(e.kind==="review_boundary"||i==="review-boundary"||i==="preview-unavailable"&&a||i==="sql-repair-path"&&a&&/\bAI provider did not return a governed answer\b/i.test(r??""))}function hl(e){const r=e.value.trim().toLowerCase();return!!r&&r!=="n/a"&&r!=="not captured"&&r!=="not available"}function ml(e,r,a,i){const n=St(r)||St(e.title)||St(e.question),l=a==="block"?"Reusable logic":a==="evidence"?"Proof brief":"Analysis",s=ze(i);return`${l}: ${vl(n||s)}`}function bl(e,r,a,i){const n=St(r);return[n?`Question: ${n}`:"",`Source: ${a}`,i&&i!=="No app filters set"?`Filters: ${i}`:"",`Status: ${e} / review-required`].filter(Boolean).join(" · ")}function St(e){return dt(String(e??"")).replace(/^(analysis|report|research|proof|proof brief|reusable logic|reusable logic brief|change analysis|driver analysis|segment comparison|entity drilldown|anomaly review|validation result)\s*:\s*/i,"").replace(/^(analysis goal|analysis question|report question|research question|proof question|evidence question|validation question|reusable block goal|business question|question)\s*:\s*/i,"").trim()}function vl(e){const r=e.replace(/\s+/g," ").trim();return r.length<=96?r:`${r.slice(0,96).replace(/\s+\S*$/,"").trim()||r.slice(0,96)}...`}function yl(e,r){return r==="evidence"?"Proof Brief":r==="block"?"Reusable Logic Brief":e==="diagnose_change"?"Change Analysis":e==="segment_compare"?"Segment Comparison":e==="entity_drilldown"?"Entity Drilldown":e==="anomaly_investigation"?"Anomaly Review":e==="trust_gap_review"?"Proof Review":"Driver Analysis"}function ql(e){const r=(e.driverCards??[]).map(he).filter(l=>Object.keys(l).length>0);if(r.length)return r.slice(0,8).map((l,s)=>({title:String(l.title??`Driver ${s+1}`),value:String(l.contribution??l.value??l.metric??"Proof"),explanation:String(l.explanation??"Review this driver against the source rows and metric grain.")}));const a=dr(e),i=he(a==null?void 0:a.result);return(Array.isArray(i.rows)?i.rows.map(he).filter(l=>Object.keys(l).length>0):[]).slice(0,5).map((l,s)=>{const o=Object.keys(l),p=o.find(f=>/name|player|customer|account|segment|team/i.test(f))??o[0]??`row_${s+1}`,u=o.find(f=>/point|revenue|total|score|value|delta|count/i.test(f)&&f!==p)??o[1]??p;return{title:String(l[p]??`Preview row ${s+1}`),value:ot(l[u]),explanation:`This row is part of the bounded preview sample for ${ze(u)}.`}})}function wl(e){var C,q;if(e.sections.length>0)return e.sections.map(h=>{var A;const T=(A=h.bullets)!=null&&A.length?`
|
|
46
|
+
|
|
47
|
+
${h.bullets.map(G=>`- ${G}`).join(`
|
|
48
|
+
`)}`:"";return`## ${h.title}
|
|
49
|
+
${h.body}${T}`}).join(`
|
|
50
|
+
|
|
51
|
+
`);const r=e.keyNumbers.find(h=>h.value!=="not available"&&h.label!=="Preview"),a=e.keyNumbers.find(h=>/baseline|comparison|next/i.test(h.label)&&h.value!=="not available"),i=e.keyNumbers.find(h=>/delta|gap|change/i.test(h.label)&&h.value!=="not available"),n=e.drivers[0],l=e.drivers[1],s=(C=e.contextFacts.find(h=>h.label==="Source"))==null?void 0:C.value,o=(q=e.contextFacts.find(h=>h.label==="Filters"))==null?void 0:q.value,p=[r?`${r.label}: ${r.value} (${r.detail})`:"",a?`${a.label}: ${a.value} (${a.detail})`:"",i?`${i.label}: ${i.value} (${i.detail})`:""].filter(Boolean).join("; "),u=n?`${n.title} is the strongest visible driver in this bounded preview${n.value?` (${n.value})`:""}.${l?` The next visible comparison is ${l.title}${l.value?` (${l.value})`:""}.`:""}`:"The report does not yet have ranked drivers. Add a clearer metric, time grain, or segment field before treating the analysis as complete.",f=[s?`source: ${s}`:"",o?`filters: ${o}`:""].filter(Boolean).join("; "),x=e.actionMode==="block"?"## Reusable logic decision":e.actionMode==="evidence"||e.intent==="trust_gap_review"?"## Validation result":"## Business interpretation",c=e.actionMode==="block"?"This is a candidate reusable block design, not a certified answer yet. Preserve the business question, parameter defaults, allowed filters, output grain, and proof path before certification.":e.actionMode==="evidence"||e.intent==="trust_gap_review"?`The claim should be treated as validated only inside this bounded analysis context${f?` (${f})`:""}. Use the appendix when a reviewer needs SQL, preview rows, caveats, or source trace.`:`${u} Treat the conclusion as a directional stakeholder explanation until the analyst confirms SQL, grain, filters, joins, and lineage.`,N=["## Executive answer",e.summary,x,c];return p&&N.push("## Key numbers",`The bounded preview shows ${p}. These numbers are useful for review and stakeholder framing but still need source validation before promotion.`),N.push("## Recommended next step",e.recommendation,"## Review boundary","This report is AI-generated and review-required. Use it to guide analysis, then validate SQL, grain, filters, joins, and source proof before pinning it to the app or turning it into a reusable DQL block."),N.join(`
|
|
52
|
+
|
|
53
|
+
`)}function jl({sections:e}){return t.jsx("div",{className:"dql-app-report-dynamic-sections",children:e.map(r=>{var a;return t.jsxs("section",{className:`dql-app-report-dynamic-section tone-${r.tone??"neutral"}`,children:[t.jsxs("div",{className:"dql-app-report-dynamic-head",children:[t.jsx("span",{children:Sl(r)}),t.jsx("h3",{children:r.title})]}),t.jsx(kl,{text:r.body}),(a=r.bullets)!=null&&a.length?t.jsx("ul",{children:r.bullets.map(i=>t.jsx("li",{children:i},i))}):null]},r.id)})})}function kl({text:e}){const r=e.split(/\n{2,}/).map(a=>a.replace(/\s*\n\s*/g," ").trim()).filter(Boolean);return r.length?t.jsx("div",{className:"dql-app-report-memo-body",children:r.map(a=>t.jsx("p",{children:a},a))}):null}function Sl(e){switch(e.kind){case"executive_answer":return"Answer";case"business_interpretation":return"Interpretation";case"key_numbers":return"Numbers";case"validation":return"Proof";case"reusable_logic":return"Reusable logic";case"recommended_next_step":return"Next step";case"review_boundary":return"Review boundary";default:return/focus/i.test(e.title)?"Scope":/repair|preview|sql/i.test(e.title)?"Appendix note":"Report note"}}function zl(e){return Array.isArray(e)?e.filter(r=>!!r&&typeof r.title=="string"&&r.title.trim().length>0&&typeof r.body=="string"&&r.body.trim().length>0).slice(0,8).map((r,a)=>({...r,id:r.id||`section-${a+1}`,title:r.title.trim(),body:r.body.trim(),bullets:Array.isArray(r.bullets)?r.bullets.filter(Boolean).slice(0,8):void 0,evidenceRefs:Array.isArray(r.evidenceRefs)?r.evidenceRefs.filter(Boolean).slice(0,8):void 0})):[]}function Cl({drivers:e}){if(!e.length)return t.jsx("p",{className:"dql-app-report-muted",children:"No ranked drivers are available yet. Refresh the report after adding a clearer metric, time grain, or comparison group."});const r=e.slice(0,6).map(i=>({...i,numericValue:Math.abs(Al(i.value))})),a=Math.max(...r.map(i=>i.numericValue),0);return t.jsx("div",{className:"dql-app-report-driver-chart","aria-label":"Report driver chart",children:r.map((i,n)=>{const l=a>0?Math.max(8,Math.round(i.numericValue/a*100)):28;return t.jsxs("div",{className:"dql-app-report-driver-bar",children:[t.jsxs("div",{children:[t.jsx("b",{children:i.title}),t.jsx("span",{children:i.value})]}),t.jsx("i",{style:{"--driver-width":`${l}%`}}),t.jsx("p",{children:i.explanation})]},`${i.title}-${n}`)})})}function Al(e){const r=e.replace(/,/g,"").match(/-?\+?\d+(?:\.\d+)?/);if(!r)return 0;const a=Number(r[0].replace(/^\+/,""));return Number.isFinite(a)?a:0}function Nl(e){const r=Object.entries(e).filter(([a])=>a!=="smartView");return r.length?r.map(([a,i])=>`${ze(a)} ${ga(a,i)}`).join(", "):"No app filters set"}function Il({investigation:e,tab:r,sqlDraft:a,onSqlDraftChange:i}){if(r==="sql")return t.jsxs("div",{className:"dql-app-research-sql-review",children:[t.jsx("textarea",{value:a,onChange:l=>i(l.target.value),spellCheck:!1,placeholder:"Generated SQL will appear here for review."}),e.error?t.jsx("div",{className:"dql-app-error",children:e.error}):null]});const n=he(e.evidence);if(r==="assumptions"){const l=Array.isArray(n.assumptions)?n.assumptions:[],s=he(n.trustStatus);return t.jsxs("div",{className:"dql-app-research-assumptions",children:[l.length?l.map((o,p)=>t.jsx("p",{children:String(o)},p)):t.jsx("p",{children:"Refresh the report to capture assumptions."}),t.jsx(Br,{label:"Trust",value:String(s.label??"AI-generated report")}),t.jsx(Br,{label:"Review",value:e.reviewStatus})]})}return r==="context"?t.jsx("pre",{className:"dql-app-research-code",children:JSON.stringify({certifiedContext:n.certifiedContext,trustStatus:n.trustStatus,planner:n.planner},null,2)}):t.jsx(Tl,{investigation:e})}function Tl({investigation:e}){const r=dr(e);if(!r)return t.jsx(we,{title:"No preview rows yet.",detail:"Refresh the report with SQL or selected tile results to capture proof.",compact:!0});const a=he(r.result),i=Array.isArray(a.rows)?a.rows.map(he).filter(l=>!!l).slice(0,8):[],n=Array.isArray(a.columns)?a.columns.map(String).slice(0,8):Object.keys(i[0]??{}).slice(0,8);return!i.length||!n.length?t.jsx(we,{title:"No preview rows yet.",detail:"The report captured proof, but no row preview was available.",compact:!0}):t.jsx("div",{className:"dql-app-research-table",children:t.jsxs("table",{children:[t.jsx("thead",{children:t.jsx("tr",{children:n.map(l=>t.jsx("th",{children:ze(l)},l))})}),t.jsx("tbody",{children:i.map((l,s)=>t.jsx("tr",{children:n.map(o=>t.jsx("td",{children:Rl(l[o])},o))},s))})]})})}function dr(e){return(Array.isArray(e.resultPreviews)?e.resultPreviews:[]).map(he).find(a=>!!a.result)??null}function nt(e,r){const a=e.filter(i=>i.id!==r.id);return Dt([r,...a])}function Dt(e){return[...e].sort((r,a)=>Lr(a)-Lr(r))}function Lr(e){const r=new Date(e.updatedAt||e.lastRunAt||e.createdAt).getTime();return Number.isFinite(r)?r:0}function ha(e){const r=e.title.replace(/^\s*(write\s+the\s+report\s+brief|the\s+research\s+question|research\s+question)\s*:\s*/i,"").replace(/^\s*research\b/i,"Analysis").replace(/^\s*report\b/i,"Analysis").trim(),a=ze(r||e.title);return a.length<=64?a:`${a.slice(0,61).trim()}...`}function $l(e){const r=e.status==="error"?"Needs SQL review":e.status==="ready"?"Ready":e.status==="running"?"Running":"Draft",a=Pl(e.updatedAt||e.lastRunAt||e.createdAt);return`${ze(e.intent)} / ${r}${a?` / ${a}`:""}`}function Pl(e){if(!e)return"";const r=new Date(e).getTime();if(!Number.isFinite(r))return"";const a=Math.max(0,Date.now()-r),i=Math.floor(a/6e4);if(i<1)return"just now";if(i<60)return`${i}m ago`;const n=Math.floor(i/60);return n<24?`${n}h ago`:`${Math.floor(n/24)}d ago`}function ot(e){return typeof e=="number"&&Number.isFinite(e)?Math.abs(e)>=100?Math.round(e).toLocaleString():Number(e.toFixed(2)).toLocaleString():typeof e=="string"&&e.trim()?e:"n/a"}function Rl(e){return e==null?"":typeof e=="number"?ot(e):typeof e=="string"?e:JSON.stringify(e)}function he(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}function Qe({icon:e,children:r}){return t.jsxs("div",{className:"dql-app-panel-card",children:[t.jsx("span",{children:e}),t.jsx("div",{children:r})]})}function we({title:e,detail:r,compact:a=!1}){return t.jsxs("div",{className:`dql-app-empty ${a?"compact":""}`,children:[t.jsx(Ge,{size:a?24:34,strokeWidth:1.5}),t.jsx("b",{children:e}),t.jsx("span",{children:r})]})}function Bl({title:e,error:r,onChange:a,onCancel:i,onCreate:n}){return t.jsx("div",{className:"dql-app-modal-backdrop",children:t.jsxs("div",{className:"dql-app-modal",children:[t.jsx("h3",{children:"Add dashboard page"}),t.jsx("p",{children:"Create a new page inside this local App package."}),t.jsxs("label",{children:["Page name",t.jsx("input",{value:e,onChange:l=>a(l.target.value),autoFocus:!0,placeholder:"Executive Overview"})]}),r?t.jsx("div",{className:"dql-app-error",children:r}):null,t.jsxs("div",{children:[t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-line",onClick:i,children:"Cancel"}),t.jsx("button",{type:"button",className:"dql-apps-btn dql-apps-btn-primary",onClick:n,children:"Create page"})]})]})})}function Ll(e,r,a,i,n){const l=n.map((s,o)=>({id:s.id||`tile-${o+1}`,title:s.name,kind:"certified_block",description:s.description,blockId:s.name,sourceNodeId:s.id,viz:s.chartType??"table",certification:"certified",reviewStatus:"certified",rationale:"Selected from the certified block palette."}));return{version:2,mode:"stakeholder",requirements:[{id:"primary",question:r,role:"detail",measures:[],dimensions:[],filters:[]}],requirementCoverage:l.map(s=>({requirementId:"primary",status:"covered",source:"certified_block",tileId:s.id,sourceId:s.sourceNodeId,trustState:"certified",reasons:["Explicitly selected certified block."]})),storyEvidencePlan:{version:1,goal:r,audience:"stakeholder",eligibleTileIds:l.map(s=>s.id)},appId:Ml(e)||"new-app",name:e,prompt:r,skills:Rn.map(s=>({id:s.id,title:s.title,description:s.description})),domain:a,audience:"stakeholder",businessGoal:r,owner:i,lifecycle:"draft",tags:["app-builder"],pages:[{id:"overview",title:"Overview",filters:[],tiles:l}],caveats:[],reviewTasks:[]}}function El(e,r){return{all:e.length,mine:e.filter(a=>a.storage==="mine").length,shared:e.filter(a=>(a.storage??"shared")==="shared").length,fav:r.size}}function _l(e){var r;return((r=e.owners)==null?void 0:r[0])??"owner@local"}function Ml(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}const Ol=`
|
|
54
|
+
.dql-apps-waterline {
|
|
55
|
+
--dql-app-canvas: var(--color-bg-primary, #f7f8fb);
|
|
56
|
+
--dql-app-surface: var(--color-bg-card, #ffffff);
|
|
57
|
+
--dql-app-surface-muted: var(--color-bg-secondary, #f8fafc);
|
|
58
|
+
--dql-app-control: var(--color-bg-sunken, #f4f6f9);
|
|
59
|
+
--dql-app-line: var(--color-border-subtle, rgba(15, 23, 42, 0.10));
|
|
60
|
+
--dql-app-line-2: var(--color-border-primary, rgba(15, 23, 42, 0.16));
|
|
61
|
+
--dql-app-ink: var(--color-text-primary, #0f172a);
|
|
62
|
+
--dql-app-muted: var(--color-text-secondary, #64748b);
|
|
63
|
+
--dql-app-faint: var(--color-text-tertiary, #94a3b8);
|
|
64
|
+
--dql-app-accent: var(--color-accent-blue, #2563eb);
|
|
65
|
+
--dql-app-accent-soft: var(--accent-dim, rgba(37, 99, 235, 0.10));
|
|
66
|
+
--dql-app-deep: #111827;
|
|
67
|
+
--dql-app-green: var(--color-status-success, #16a34a);
|
|
68
|
+
--dql-app-green-soft: var(--status-success-bg, rgba(22, 163, 74, 0.08));
|
|
69
|
+
--dql-app-orange: var(--color-status-warning, #ca8a04);
|
|
70
|
+
--dql-app-orange-soft: var(--status-warning-bg, rgba(202, 138, 4, 0.10));
|
|
71
|
+
--dql-app-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 10px 28px rgba(15, 23, 42, 0.06);
|
|
72
|
+
--surface: var(--dql-app-surface);
|
|
73
|
+
--surface-hover: var(--dql-app-control);
|
|
74
|
+
--border-color: var(--dql-app-line);
|
|
75
|
+
flex: 1;
|
|
76
|
+
min-height: 0;
|
|
77
|
+
overflow-x: hidden;
|
|
78
|
+
overflow-y: auto;
|
|
79
|
+
background: var(--dql-app-canvas);
|
|
80
|
+
color: var(--dql-app-ink);
|
|
81
|
+
font-family: var(--font-ui);
|
|
82
|
+
font-size: 14px;
|
|
83
|
+
line-height: 1.45;
|
|
84
|
+
text-rendering: geometricPrecision;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.dql-apps-waterline * {
|
|
88
|
+
letter-spacing: 0;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* Per-theme palettes come straight from the Luna tokens the base block maps
|
|
92
|
+
(tokens.css under [data-theme]) — the redesign handoff palette IS the Paper
|
|
93
|
+
token set, so no per-theme hex overrides remain here. Obsidian only mutes
|
|
94
|
+
card shadows. */
|
|
95
|
+
.dql-apps-theme-obsidian {
|
|
96
|
+
--dql-app-deep: #05070b;
|
|
97
|
+
--dql-app-shadow: none;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.dql-apps-wrap {
|
|
101
|
+
width: min(880px, calc(100% - 48px));
|
|
102
|
+
margin: 0 auto;
|
|
103
|
+
padding: 28px 0 40px;
|
|
104
|
+
display: flex;
|
|
105
|
+
flex-direction: column;
|
|
106
|
+
gap: 12px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.dql-apps-createhead h1 {
|
|
110
|
+
margin: 0;
|
|
111
|
+
font-size: 18px;
|
|
112
|
+
line-height: 1.2;
|
|
113
|
+
font-weight: 700;
|
|
114
|
+
letter-spacing: -0.01em;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.dql-apps-createhead p {
|
|
118
|
+
margin: 3px 0 0;
|
|
119
|
+
color: var(--dql-app-faint);
|
|
120
|
+
font-size: 12.5px;
|
|
121
|
+
line-height: 1.55;
|
|
122
|
+
max-width: 720px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Prototype composer card (library) */
|
|
126
|
+
.dql-apps-composer {
|
|
127
|
+
background: var(--dql-app-surface);
|
|
128
|
+
border: 1px solid var(--dql-app-line-2);
|
|
129
|
+
border-radius: 14px;
|
|
130
|
+
box-shadow: 0 1px 2px rgba(26, 26, 26, 0.03), 0 6px 22px rgba(26, 26, 26, 0.05);
|
|
131
|
+
display: flex;
|
|
132
|
+
flex-direction: column;
|
|
133
|
+
}
|
|
134
|
+
.dql-apps-composer textarea {
|
|
135
|
+
border: 0; background: transparent; resize: none; outline: none;
|
|
136
|
+
padding: 13px 15px 4px;
|
|
137
|
+
font-size: 13.5px; line-height: 1.5;
|
|
138
|
+
color: var(--dql-app-ink); font-family: inherit;
|
|
139
|
+
}
|
|
140
|
+
.dql-apps-composer-row { display: flex; align-items: center; gap: 8px; padding: 8px 10px 10px 12px; }
|
|
141
|
+
.dql-apps-composer-row > i { flex: 1; }
|
|
142
|
+
.dql-apps-composer-chip {
|
|
143
|
+
display: inline-flex; align-items: center; gap: 6px;
|
|
144
|
+
padding: 4px 9px; border-radius: 8px;
|
|
145
|
+
border: 1px solid var(--dql-app-line);
|
|
146
|
+
background: var(--dql-app-canvas);
|
|
147
|
+
font-size: 11.5px; color: var(--dql-app-muted); white-space: nowrap;
|
|
148
|
+
}
|
|
149
|
+
.dql-apps-composer-chip svg { color: var(--dql-app-green); }
|
|
150
|
+
.dql-apps-composer-blank {
|
|
151
|
+
display: inline-flex; align-items: center; gap: 6px;
|
|
152
|
+
height: 30px; padding: 0 11px;
|
|
153
|
+
border-radius: 8px; border: 1px solid var(--dql-app-line);
|
|
154
|
+
background: var(--dql-app-surface); color: var(--dql-app-muted);
|
|
155
|
+
font-size: 11.5px; font-weight: 600; cursor: pointer; font-family: inherit;
|
|
156
|
+
}
|
|
157
|
+
.dql-apps-composer-blank:hover { background: var(--dql-app-surface-muted); }
|
|
158
|
+
.dql-apps-composer-send {
|
|
159
|
+
width: 34px; height: 34px; border-radius: 10px; border: 0;
|
|
160
|
+
background: var(--dql-app-accent); color: #fff;
|
|
161
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
162
|
+
cursor: pointer; box-shadow: 0 1px 5px rgba(107, 93, 211, 0.3);
|
|
163
|
+
}
|
|
164
|
+
.dql-apps-composer-send:hover { filter: brightness(0.95); }
|
|
165
|
+
.dql-apps-composer-send:disabled { opacity: 0.5; cursor: default; box-shadow: none; }
|
|
166
|
+
.dql-apps-try { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
|
|
167
|
+
.dql-apps-try > span { font-size: 10.5px; color: var(--dql-app-faint); }
|
|
168
|
+
.dql-apps-try button {
|
|
169
|
+
border: 1px solid var(--dql-app-line);
|
|
170
|
+
background: var(--dql-app-surface);
|
|
171
|
+
color: var(--dql-app-muted);
|
|
172
|
+
border-radius: 999px; padding: 3.5px 11px;
|
|
173
|
+
font-size: 11px; font-weight: 550; cursor: pointer; font-family: inherit;
|
|
174
|
+
}
|
|
175
|
+
.dql-apps-try button:hover { border-color: var(--dql-app-accent); color: var(--dql-app-accent); background: var(--dql-app-accent-soft); }
|
|
176
|
+
|
|
177
|
+
.dql-apps-btn {
|
|
178
|
+
height: 32px;
|
|
179
|
+
border-radius: 8px;
|
|
180
|
+
border: 1px solid transparent;
|
|
181
|
+
padding: 0 12px;
|
|
182
|
+
display: inline-flex;
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
gap: 7px;
|
|
186
|
+
font: 750 12px var(--font-ui);
|
|
187
|
+
cursor: pointer;
|
|
188
|
+
white-space: nowrap;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.dql-apps-btn:disabled { opacity: 0.62; cursor: not-allowed; }
|
|
192
|
+
.dql-apps-btn-primary { background: var(--dql-app-accent); color: #fff; }
|
|
193
|
+
.dql-apps-btn-line { background: var(--dql-app-surface); border-color: var(--dql-app-line-2); color: var(--dql-app-ink); }
|
|
194
|
+
.dql-apps-btn-icon { width: 32px; padding: 0; flex: none; }
|
|
195
|
+
.dql-apps-btn-icon:hover,
|
|
196
|
+
.dql-apps-btn-icon.on { color: var(--dql-app-accent); border-color: rgba(79, 99, 215, 0.34); background: var(--dql-app-accent-soft); }
|
|
197
|
+
.dql-apps-btn-dark { width: 100%; background: var(--dql-app-deep); border-color: #1f2937; color: #fff; margin-top: 12px; }
|
|
198
|
+
|
|
199
|
+
.dql-apps-ai-entry {
|
|
200
|
+
margin-top: 18px;
|
|
201
|
+
border: 1px solid rgba(79, 99, 215, 0.26);
|
|
202
|
+
border-radius: 12px;
|
|
203
|
+
background: var(--dql-app-surface);
|
|
204
|
+
box-shadow: var(--dql-app-shadow);
|
|
205
|
+
padding: 16px;
|
|
206
|
+
display: grid;
|
|
207
|
+
gap: 12px;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
.dql-apps-ai-entry-head {
|
|
211
|
+
display: flex;
|
|
212
|
+
align-items: center;
|
|
213
|
+
justify-content: space-between;
|
|
214
|
+
gap: 10px;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
.dql-apps-ai-entry-head span,
|
|
218
|
+
.dql-apps-ai-entry-head b {
|
|
219
|
+
display: inline-flex;
|
|
220
|
+
align-items: center;
|
|
221
|
+
gap: 6px;
|
|
222
|
+
font: 850 11px var(--font-ui);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
.dql-apps-ai-entry-head span {
|
|
226
|
+
color: var(--dql-app-accent);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.dql-apps-ai-entry-head b {
|
|
230
|
+
color: var(--dql-app-green);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.dql-apps-ai-entry-box {
|
|
234
|
+
display: grid;
|
|
235
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
236
|
+
align-items: end;
|
|
237
|
+
gap: 12px;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.dql-apps-ai-entry-box textarea {
|
|
241
|
+
width: 100%;
|
|
242
|
+
min-height: 112px;
|
|
243
|
+
resize: vertical;
|
|
244
|
+
border: 1px solid var(--dql-app-line-2);
|
|
245
|
+
border-radius: 10px;
|
|
246
|
+
background: var(--dql-app-control);
|
|
247
|
+
color: var(--dql-app-ink);
|
|
248
|
+
outline: 0;
|
|
249
|
+
padding: 13px 14px;
|
|
250
|
+
font: 540 15px/1.5 var(--font-ui);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.dql-apps-ai-entry-box textarea:focus {
|
|
254
|
+
border-color: rgba(79, 99, 215, 0.52);
|
|
255
|
+
box-shadow: 0 0 0 3px rgba(79, 99, 215, 0.1);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.dql-apps-ai-entry-box button {
|
|
259
|
+
height: 46px;
|
|
260
|
+
border: 0;
|
|
261
|
+
border-radius: 10px;
|
|
262
|
+
background: var(--dql-app-accent);
|
|
263
|
+
color: #fff;
|
|
264
|
+
padding: 0 16px;
|
|
265
|
+
display: inline-flex;
|
|
266
|
+
align-items: center;
|
|
267
|
+
justify-content: center;
|
|
268
|
+
gap: 7px;
|
|
269
|
+
font: 800 12.5px var(--font-ui);
|
|
270
|
+
cursor: pointer;
|
|
271
|
+
box-shadow: 0 12px 26px rgba(79, 99, 215, 0.2);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.dql-apps-ai-entry-box button:disabled {
|
|
275
|
+
opacity: 0.6;
|
|
276
|
+
cursor: not-allowed;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.dql-apps-ai-entry-foot {
|
|
280
|
+
display: flex;
|
|
281
|
+
align-items: center;
|
|
282
|
+
justify-content: space-between;
|
|
283
|
+
gap: 10px;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.dql-apps-ai-entry-foot > div {
|
|
287
|
+
min-width: 0;
|
|
288
|
+
display: flex;
|
|
289
|
+
flex-wrap: wrap;
|
|
290
|
+
gap: 6px;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
.dql-apps-ai-entry-foot button {
|
|
294
|
+
border: 1px solid var(--dql-app-line);
|
|
295
|
+
border-radius: 999px;
|
|
296
|
+
background: var(--dql-app-surface);
|
|
297
|
+
color: var(--dql-app-muted);
|
|
298
|
+
padding: 6px 9px;
|
|
299
|
+
display: inline-flex;
|
|
300
|
+
align-items: center;
|
|
301
|
+
gap: 5px;
|
|
302
|
+
font: 750 11.5px var(--font-ui);
|
|
303
|
+
cursor: pointer;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.dql-apps-ai-entry-foot button:hover {
|
|
307
|
+
color: var(--dql-app-accent);
|
|
308
|
+
border-color: rgba(79, 99, 215, 0.32);
|
|
309
|
+
background: var(--dql-app-accent-soft);
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
.dql-apps-ai-entry-secondary {
|
|
313
|
+
flex: none;
|
|
314
|
+
color: var(--dql-app-ink) !important;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.dql-apps-sectionhead {
|
|
318
|
+
margin: 30px 0 14px;
|
|
319
|
+
display: flex;
|
|
320
|
+
align-items: center;
|
|
321
|
+
gap: 12px;
|
|
322
|
+
color: var(--dql-app-muted);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.dql-apps-sectionhead span,
|
|
326
|
+
.dql-app-eyebrow {
|
|
327
|
+
font-family: var(--font-mono);
|
|
328
|
+
font-size: 10px;
|
|
329
|
+
letter-spacing: 0;
|
|
330
|
+
text-transform: uppercase;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
.dql-apps-sectionhead i { flex: 1; border-top: 1px solid var(--dql-app-line); }
|
|
334
|
+
.dql-apps-sectionhead b { font-family: var(--font-mono); font-size: 10px; color: var(--dql-app-faint); }
|
|
335
|
+
|
|
336
|
+
.dql-apps-libbar {
|
|
337
|
+
display: flex;
|
|
338
|
+
align-items: center;
|
|
339
|
+
gap: 12px;
|
|
340
|
+
margin-bottom: 16px;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.dql-apps-filter-tabs {
|
|
344
|
+
display: flex;
|
|
345
|
+
gap: 3px;
|
|
346
|
+
border: 1px solid var(--dql-app-line);
|
|
347
|
+
border-radius: 999px;
|
|
348
|
+
background: var(--dql-app-control);
|
|
349
|
+
padding: 4px;
|
|
350
|
+
flex-wrap: wrap;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
.dql-apps-filter-tabs button {
|
|
354
|
+
border: 0;
|
|
355
|
+
background: transparent;
|
|
356
|
+
border-radius: 999px;
|
|
357
|
+
padding: 6px 12px;
|
|
358
|
+
cursor: pointer;
|
|
359
|
+
color: var(--dql-app-muted);
|
|
360
|
+
font: 800 12px var(--font-ui);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
.dql-apps-filter-tabs button.on { background: var(--dql-app-surface); color: var(--dql-app-ink); box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08); }
|
|
364
|
+
.dql-apps-filter-tabs span { margin-left: 5px; color: var(--dql-app-accent); font-family: var(--font-mono); font-size: 10px; }
|
|
365
|
+
|
|
366
|
+
.dql-apps-search {
|
|
367
|
+
flex: 1;
|
|
368
|
+
min-width: 220px;
|
|
369
|
+
height: 38px;
|
|
370
|
+
display: flex;
|
|
371
|
+
align-items: center;
|
|
372
|
+
gap: 8px;
|
|
373
|
+
background: var(--dql-app-surface);
|
|
374
|
+
border: 1px solid var(--dql-app-line);
|
|
375
|
+
border-radius: 7px;
|
|
376
|
+
padding: 0 12px;
|
|
377
|
+
color: var(--dql-app-faint);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.dql-apps-search input {
|
|
381
|
+
flex: 1;
|
|
382
|
+
min-width: 0;
|
|
383
|
+
border: 0;
|
|
384
|
+
outline: 0;
|
|
385
|
+
background: transparent;
|
|
386
|
+
color: var(--dql-app-ink);
|
|
387
|
+
font: 13px var(--font-ui);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.dql-apps-grid {
|
|
391
|
+
display: grid;
|
|
392
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
393
|
+
gap: 16px;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
.dql-app-card {
|
|
397
|
+
min-width: 0;
|
|
398
|
+
border: 1px solid var(--dql-app-line);
|
|
399
|
+
border-radius: 8px;
|
|
400
|
+
background: var(--dql-app-surface);
|
|
401
|
+
overflow: hidden;
|
|
402
|
+
box-shadow: var(--dql-app-shadow);
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.dql-app-card-body {
|
|
406
|
+
padding: 16px;
|
|
407
|
+
cursor: pointer;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.dql-app-card-top {
|
|
411
|
+
display: flex;
|
|
412
|
+
align-items: flex-start;
|
|
413
|
+
justify-content: space-between;
|
|
414
|
+
gap: 10px;
|
|
415
|
+
margin-bottom: 9px;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.dql-app-star {
|
|
419
|
+
width: 28px;
|
|
420
|
+
height: 28px;
|
|
421
|
+
border-radius: 6px;
|
|
422
|
+
border: 1px solid var(--dql-app-line);
|
|
423
|
+
background: var(--dql-app-surface);
|
|
424
|
+
color: var(--dql-app-faint);
|
|
425
|
+
display: inline-flex;
|
|
426
|
+
align-items: center;
|
|
427
|
+
justify-content: center;
|
|
428
|
+
cursor: pointer;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
.dql-app-star.on { color: var(--dql-app-accent); background: var(--dql-app-accent-soft); border-color: rgba(37, 99, 235, 0.35); }
|
|
432
|
+
.dql-app-card h3 { margin: 13px 0 0; font-size: 17px; line-height: 1.2; }
|
|
433
|
+
.dql-app-card p { min-height: 54px; margin: 7px 0 0; color: var(--dql-app-muted); font-size: 12px; line-height: 1.5; }
|
|
434
|
+
|
|
435
|
+
.dql-app-card-mini {
|
|
436
|
+
margin-top: 13px;
|
|
437
|
+
display: grid;
|
|
438
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
439
|
+
gap: 6px;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.dql-app-card-mini span {
|
|
443
|
+
border-radius: 6px;
|
|
444
|
+
background: var(--dql-app-control);
|
|
445
|
+
padding: 7px 9px;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.dql-app-card-mini small {
|
|
449
|
+
display: block;
|
|
450
|
+
font-family: var(--font-mono);
|
|
451
|
+
font-size: 7.5px;
|
|
452
|
+
letter-spacing: 0;
|
|
453
|
+
text-transform: uppercase;
|
|
454
|
+
color: var(--dql-app-muted);
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
.dql-app-card-mini b { display: block; margin-top: 1px; font-size: 15px; }
|
|
458
|
+
|
|
459
|
+
.dql-app-card-signals {
|
|
460
|
+
margin-top: 12px;
|
|
461
|
+
display: flex;
|
|
462
|
+
flex-wrap: wrap;
|
|
463
|
+
gap: 7px;
|
|
464
|
+
color: var(--dql-app-muted);
|
|
465
|
+
font: 700 10px var(--font-mono);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
.dql-app-card-signals span {
|
|
469
|
+
display: inline-flex;
|
|
470
|
+
align-items: center;
|
|
471
|
+
gap: 5px;
|
|
472
|
+
min-height: 24px;
|
|
473
|
+
padding: 4px 8px;
|
|
474
|
+
border: 1px solid var(--dql-app-line);
|
|
475
|
+
border-radius: 7px;
|
|
476
|
+
background: var(--dql-app-surface-muted);
|
|
477
|
+
white-space: nowrap;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.dql-app-card-depth {
|
|
481
|
+
min-height: 42px;
|
|
482
|
+
display: flex;
|
|
483
|
+
align-items: center;
|
|
484
|
+
gap: 8px;
|
|
485
|
+
padding: 8px 16px;
|
|
486
|
+
border-top: 1px solid var(--dql-app-line);
|
|
487
|
+
background: var(--dql-app-surface-muted);
|
|
488
|
+
font-family: var(--font-mono);
|
|
489
|
+
font-size: 10px;
|
|
490
|
+
color: var(--dql-app-muted);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
.dql-app-card-depth span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
494
|
+
.dql-app-card-depth button { border: 0; background: transparent; color: var(--dql-app-accent); cursor: pointer; font: 800 11px var(--font-ui); }
|
|
495
|
+
.dql-app-card-act {
|
|
496
|
+
display: inline-flex;
|
|
497
|
+
align-items: center;
|
|
498
|
+
gap: 5px;
|
|
499
|
+
flex: none !important;
|
|
500
|
+
min-height: 26px;
|
|
501
|
+
padding: 0 10px;
|
|
502
|
+
border: 1px solid var(--dql-app-line) !important;
|
|
503
|
+
border-radius: 6px;
|
|
504
|
+
background: var(--dql-app-surface) !important;
|
|
505
|
+
color: var(--dql-app-muted) !important;
|
|
506
|
+
font: 650 11px var(--font-ui) !important;
|
|
507
|
+
transition: border-color 0.12s ease, color 0.12s ease;
|
|
508
|
+
}
|
|
509
|
+
.dql-app-card-act:hover {
|
|
510
|
+
border-color: var(--dql-app-accent) !important;
|
|
511
|
+
color: var(--dql-app-accent) !important;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
.dql-app-block-cite i,
|
|
515
|
+
.dql-app-plan-item > i {
|
|
516
|
+
width: 7px;
|
|
517
|
+
height: 7px;
|
|
518
|
+
border-radius: 999px;
|
|
519
|
+
background: var(--dql-app-green);
|
|
520
|
+
flex: none;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.dql-app-block-cite i.draft,
|
|
524
|
+
.dql-app-plan-item > i.draft { background: var(--dql-app-orange); }
|
|
525
|
+
|
|
526
|
+
.dql-app-seal {
|
|
527
|
+
display: inline-flex;
|
|
528
|
+
align-items: center;
|
|
529
|
+
gap: 5px;
|
|
530
|
+
border-radius: 999px;
|
|
531
|
+
min-height: 22px;
|
|
532
|
+
padding: 2px 9px;
|
|
533
|
+
width: fit-content;
|
|
534
|
+
border: 1px solid rgba(22, 163, 74, 0.26);
|
|
535
|
+
background: var(--dql-app-green-soft);
|
|
536
|
+
color: var(--dql-app-green);
|
|
537
|
+
font-family: var(--font-mono);
|
|
538
|
+
font-size: 10.5px;
|
|
539
|
+
font-weight: 700;
|
|
540
|
+
letter-spacing: 0;
|
|
541
|
+
text-transform: uppercase;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
.dql-app-seal::before {
|
|
545
|
+
content: "";
|
|
546
|
+
width: 6px;
|
|
547
|
+
height: 6px;
|
|
548
|
+
border-radius: 999px;
|
|
549
|
+
background: currentColor;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
.dql-app-seal.draft { border-color: rgba(202, 138, 4, 0.30); background: var(--dql-app-orange-soft); color: var(--dql-app-orange); }
|
|
553
|
+
.dql-app-seal.agentic { border-color: rgba(37, 99, 235, 0.32); background: var(--dql-app-accent-soft); color: var(--dql-app-accent); }
|
|
554
|
+
|
|
555
|
+
.dql-app-create-shell,
|
|
556
|
+
.dql-app-workspace {
|
|
557
|
+
height: 100%;
|
|
558
|
+
min-height: 0;
|
|
559
|
+
display: grid;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.dql-app-create-shell { grid-template-rows: auto 1fr; overflow: hidden; }
|
|
563
|
+
.dql-app-workspace { grid-template-rows: auto auto 1fr; }
|
|
564
|
+
|
|
565
|
+
.dql-app-buildbar,
|
|
566
|
+
.dql-app-view-topbar {
|
|
567
|
+
min-height: 54px;
|
|
568
|
+
display: flex;
|
|
569
|
+
align-items: center;
|
|
570
|
+
gap: 10px;
|
|
571
|
+
padding: 9px 18px;
|
|
572
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
573
|
+
background: var(--dql-app-surface);
|
|
574
|
+
flex-wrap: wrap;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
.dql-app-back {
|
|
578
|
+
width: 30px;
|
|
579
|
+
height: 30px;
|
|
580
|
+
border: 1px solid var(--dql-app-line);
|
|
581
|
+
border-radius: 8px;
|
|
582
|
+
background: var(--dql-app-control);
|
|
583
|
+
display: inline-flex;
|
|
584
|
+
align-items: center;
|
|
585
|
+
justify-content: center;
|
|
586
|
+
color: var(--dql-app-muted);
|
|
587
|
+
cursor: pointer;
|
|
588
|
+
flex: none;
|
|
589
|
+
}
|
|
590
|
+
|
|
591
|
+
.dql-app-back:hover { color: var(--dql-app-ink); border-color: var(--dql-app-line-2); }
|
|
592
|
+
|
|
593
|
+
.dql-app-back-label {
|
|
594
|
+
width: auto;
|
|
595
|
+
min-width: 72px;
|
|
596
|
+
padding: 0 11px 0 9px;
|
|
597
|
+
gap: 6px;
|
|
598
|
+
justify-content: flex-start;
|
|
599
|
+
color: var(--dql-app-ink);
|
|
600
|
+
font: 750 12px var(--font-ui);
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
.dql-app-back-label span {
|
|
604
|
+
line-height: 1;
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
.dql-app-topbar-divider {
|
|
608
|
+
width: 1px;
|
|
609
|
+
height: 22px;
|
|
610
|
+
background: var(--dql-app-line);
|
|
611
|
+
flex: none;
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
.dql-app-topbar-filters {
|
|
615
|
+
display: flex;
|
|
616
|
+
align-items: center;
|
|
617
|
+
gap: 8px;
|
|
618
|
+
flex-wrap: wrap;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
.dql-app-filter-icon {
|
|
622
|
+
display: inline-flex;
|
|
623
|
+
align-items: center;
|
|
624
|
+
color: var(--dql-app-faint);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.dql-app-name-input input {
|
|
628
|
+
width: 240px;
|
|
629
|
+
border: 1px solid transparent;
|
|
630
|
+
border-radius: 6px;
|
|
631
|
+
padding: 5px 8px;
|
|
632
|
+
outline: 0;
|
|
633
|
+
background: transparent;
|
|
634
|
+
color: var(--dql-app-ink);
|
|
635
|
+
font: 800 16px var(--font-ui);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
.dql-app-name-input input:focus { border-color: var(--dql-app-accent); background: var(--dql-app-control); }
|
|
639
|
+
.dql-app-mode-seg {
|
|
640
|
+
margin: 0 auto;
|
|
641
|
+
display: flex;
|
|
642
|
+
gap: 2px;
|
|
643
|
+
border: 1px solid var(--dql-app-line);
|
|
644
|
+
border-radius: 999px;
|
|
645
|
+
background: var(--dql-app-control);
|
|
646
|
+
padding: 3px;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
.dql-app-mode-seg button {
|
|
650
|
+
min-width: 78px;
|
|
651
|
+
border: 0;
|
|
652
|
+
background: transparent;
|
|
653
|
+
border-radius: 999px;
|
|
654
|
+
display: inline-flex;
|
|
655
|
+
align-items: center;
|
|
656
|
+
justify-content: center;
|
|
657
|
+
gap: 6px;
|
|
658
|
+
min-height: 30px;
|
|
659
|
+
padding: 6px 12px;
|
|
660
|
+
color: var(--dql-app-muted);
|
|
661
|
+
cursor: pointer;
|
|
662
|
+
font: 750 12px var(--font-ui);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
.dql-app-mode-seg button.on { background: var(--dql-app-deep); color: #fff; }
|
|
666
|
+
|
|
667
|
+
.dql-app-customize-btn {
|
|
668
|
+
display: inline-flex;
|
|
669
|
+
align-items: center;
|
|
670
|
+
justify-content: center;
|
|
671
|
+
gap: 6px;
|
|
672
|
+
min-height: 32px;
|
|
673
|
+
padding: 6px 14px;
|
|
674
|
+
border: 1px solid var(--dql-app-line);
|
|
675
|
+
border-radius: 999px;
|
|
676
|
+
background: var(--dql-app-control);
|
|
677
|
+
color: var(--dql-app-ink);
|
|
678
|
+
cursor: pointer;
|
|
679
|
+
font: 750 12px var(--font-ui);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
.dql-app-customize-btn:hover {
|
|
683
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
684
|
+
background: var(--dql-app-accent-soft);
|
|
685
|
+
color: var(--dql-app-accent);
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
.dql-app-customize-btn.on {
|
|
689
|
+
border-color: var(--dql-app-deep);
|
|
690
|
+
background: var(--dql-app-deep);
|
|
691
|
+
color: #fff;
|
|
692
|
+
}
|
|
693
|
+
.dql-app-build-actions,
|
|
694
|
+
.dql-app-view-actions {
|
|
695
|
+
margin-left: auto;
|
|
696
|
+
display: flex;
|
|
697
|
+
align-items: center;
|
|
698
|
+
gap: 8px;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
.dql-app-view-actions { position: relative; }
|
|
702
|
+
|
|
703
|
+
.dql-app-share-popover {
|
|
704
|
+
position: absolute;
|
|
705
|
+
right: 0;
|
|
706
|
+
top: calc(100% + 8px);
|
|
707
|
+
z-index: 20;
|
|
708
|
+
width: min(340px, 80vw);
|
|
709
|
+
border: 1px solid var(--dql-app-line-2);
|
|
710
|
+
border-radius: 8px;
|
|
711
|
+
background: var(--dql-app-surface);
|
|
712
|
+
box-shadow: var(--dql-app-shadow);
|
|
713
|
+
padding: 10px;
|
|
714
|
+
display: grid;
|
|
715
|
+
gap: 7px;
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
.dql-app-share-popover b {
|
|
719
|
+
color: var(--dql-app-ink);
|
|
720
|
+
font: 850 12px var(--font-ui);
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
.dql-app-share-popover textarea {
|
|
724
|
+
width: 100%;
|
|
725
|
+
min-height: 92px;
|
|
726
|
+
resize: none;
|
|
727
|
+
border: 1px solid var(--dql-app-line);
|
|
728
|
+
border-radius: 7px;
|
|
729
|
+
background: var(--dql-app-control);
|
|
730
|
+
color: var(--dql-app-ink);
|
|
731
|
+
padding: 8px;
|
|
732
|
+
font: 11px/1.45 var(--font-mono);
|
|
733
|
+
box-sizing: border-box;
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
.dql-app-promote-popover {
|
|
737
|
+
position: absolute;
|
|
738
|
+
right: 0;
|
|
739
|
+
top: calc(100% + 8px);
|
|
740
|
+
z-index: 21;
|
|
741
|
+
max-width: min(360px, 80vw);
|
|
742
|
+
border: 1px solid rgba(22, 163, 74, 0.28);
|
|
743
|
+
border-radius: 8px;
|
|
744
|
+
background: var(--dql-app-green-soft);
|
|
745
|
+
color: var(--dql-app-ink);
|
|
746
|
+
box-shadow: var(--dql-app-shadow);
|
|
747
|
+
padding: 10px 12px;
|
|
748
|
+
font-size: 12px;
|
|
749
|
+
line-height: 1.4;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
.dql-app-promote-popover.error {
|
|
753
|
+
border-color: rgba(202, 138, 4, 0.28);
|
|
754
|
+
background: var(--dql-app-orange-soft);
|
|
755
|
+
}
|
|
756
|
+
|
|
757
|
+
.dql-app-persona {
|
|
758
|
+
display: inline-flex;
|
|
759
|
+
align-items: center;
|
|
760
|
+
gap: 6px;
|
|
761
|
+
border: 1px solid var(--dql-app-line);
|
|
762
|
+
border-radius: 999px;
|
|
763
|
+
padding: 3px 9px 3px 4px;
|
|
764
|
+
color: var(--dql-app-muted);
|
|
765
|
+
font-size: 12px;
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
.dql-app-persona b {
|
|
769
|
+
width: 26px;
|
|
770
|
+
height: 26px;
|
|
771
|
+
border-radius: 999px;
|
|
772
|
+
display: inline-flex;
|
|
773
|
+
align-items: center;
|
|
774
|
+
justify-content: center;
|
|
775
|
+
background: var(--dql-app-accent);
|
|
776
|
+
color: #fff;
|
|
777
|
+
font-size: 9px;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
.dql-app-create-workspace {
|
|
781
|
+
min-height: 0;
|
|
782
|
+
display: grid;
|
|
783
|
+
grid-template-columns: 380px minmax(420px, 1fr) 300px;
|
|
784
|
+
}
|
|
785
|
+
|
|
786
|
+
.dql-app-create-workspace.classic { grid-template-columns: 286px minmax(420px, 1fr) 320px; }
|
|
787
|
+
.dql-app-create-workspace.clean {
|
|
788
|
+
display: block;
|
|
789
|
+
min-height: calc(100vh - 56px);
|
|
790
|
+
overflow: auto;
|
|
791
|
+
padding: 26px;
|
|
792
|
+
background: var(--dql-app-canvas);
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
.dql-app-ai-start {
|
|
796
|
+
max-width: 1260px;
|
|
797
|
+
margin: 0 auto;
|
|
798
|
+
display: grid;
|
|
799
|
+
grid-template-columns: minmax(0, 1fr) minmax(320px, 380px);
|
|
800
|
+
gap: 18px;
|
|
801
|
+
align-items: start;
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
.dql-app-ai-start-main {
|
|
805
|
+
min-width: 0;
|
|
806
|
+
display: grid;
|
|
807
|
+
gap: 14px;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
.dql-app-ai-start-copy h1 {
|
|
811
|
+
margin: 0 0 7px;
|
|
812
|
+
color: var(--dql-app-ink);
|
|
813
|
+
font-size: clamp(30px, 4vw, 52px);
|
|
814
|
+
line-height: 0.98;
|
|
815
|
+
letter-spacing: 0;
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
.dql-app-ai-start-copy p {
|
|
819
|
+
margin: 0;
|
|
820
|
+
max-width: 650px;
|
|
821
|
+
color: var(--dql-app-muted);
|
|
822
|
+
font-size: 14px;
|
|
823
|
+
line-height: 1.55;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
.dql-app-ai-start-card {
|
|
827
|
+
position: relative;
|
|
828
|
+
border: 1px solid rgba(79, 99, 215, 0.32);
|
|
829
|
+
border-radius: 12px;
|
|
830
|
+
background: var(--dql-app-surface);
|
|
831
|
+
box-shadow: var(--dql-app-shadow);
|
|
832
|
+
padding: 18px 76px 18px 18px;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
.dql-app-ai-start-card textarea {
|
|
836
|
+
width: 100%;
|
|
837
|
+
min-height: 124px;
|
|
838
|
+
resize: vertical;
|
|
839
|
+
border: 0;
|
|
840
|
+
outline: 0;
|
|
841
|
+
background: transparent;
|
|
842
|
+
color: var(--dql-app-ink);
|
|
843
|
+
padding: 0;
|
|
844
|
+
font: 520 18px/1.45 var(--font-ui);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
.dql-app-ai-start-send {
|
|
848
|
+
position: absolute;
|
|
849
|
+
right: 18px;
|
|
850
|
+
bottom: 18px;
|
|
851
|
+
width: 46px;
|
|
852
|
+
height: 46px;
|
|
853
|
+
border: 0;
|
|
854
|
+
border-radius: 999px;
|
|
855
|
+
background: var(--dql-app-accent);
|
|
856
|
+
color: white;
|
|
857
|
+
display: inline-flex;
|
|
858
|
+
align-items: center;
|
|
859
|
+
justify-content: center;
|
|
860
|
+
cursor: pointer;
|
|
861
|
+
box-shadow: 0 14px 30px rgba(79, 99, 215, 0.24);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
.dql-app-ai-start-send:disabled {
|
|
865
|
+
opacity: 0.6;
|
|
866
|
+
cursor: not-allowed;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
.dql-app-ai-start-examples {
|
|
870
|
+
padding-left: 2px;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
.dql-app-ai-start-advanced {
|
|
874
|
+
border: 1px solid var(--dql-app-line);
|
|
875
|
+
border-radius: 8px;
|
|
876
|
+
background: var(--dql-app-surface);
|
|
877
|
+
padding: 0 12px;
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
.dql-app-ai-start-advanced .dql-app-palette {
|
|
881
|
+
max-height: 340px;
|
|
882
|
+
margin: 0 0 12px;
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
.dql-app-ai-start-result {
|
|
886
|
+
margin: 0;
|
|
887
|
+
}
|
|
888
|
+
|
|
889
|
+
.dql-app-ai-start-context {
|
|
890
|
+
display: grid;
|
|
891
|
+
gap: 12px;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
.dql-app-ai-context-card {
|
|
895
|
+
border: 1px solid var(--dql-app-line);
|
|
896
|
+
border-radius: 10px;
|
|
897
|
+
background: var(--dql-app-surface);
|
|
898
|
+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.04);
|
|
899
|
+
overflow: hidden;
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
.dql-app-ai-evidence-list {
|
|
903
|
+
display: grid;
|
|
904
|
+
gap: 8px;
|
|
905
|
+
padding: 12px;
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
.dql-app-ai-evidence-row {
|
|
909
|
+
display: grid;
|
|
910
|
+
grid-template-columns: 30px minmax(0, 1fr) auto;
|
|
911
|
+
gap: 9px;
|
|
912
|
+
align-items: start;
|
|
913
|
+
border: 1px solid var(--dql-app-line);
|
|
914
|
+
border-radius: 8px;
|
|
915
|
+
background: var(--dql-app-surface-muted);
|
|
916
|
+
padding: 10px;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
.dql-app-ai-evidence-row > span:first-child {
|
|
920
|
+
width: 30px;
|
|
921
|
+
height: 30px;
|
|
922
|
+
border-radius: 8px;
|
|
923
|
+
background: var(--dql-app-green-soft);
|
|
924
|
+
color: var(--dql-app-green);
|
|
925
|
+
display: inline-flex;
|
|
926
|
+
align-items: center;
|
|
927
|
+
justify-content: center;
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
.dql-app-ai-evidence-row b {
|
|
931
|
+
display: block;
|
|
932
|
+
color: var(--dql-app-ink);
|
|
933
|
+
font-size: 12px;
|
|
934
|
+
line-height: 1.25;
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
.dql-app-ai-evidence-row small {
|
|
938
|
+
display: block;
|
|
939
|
+
margin-top: 3px;
|
|
940
|
+
color: var(--dql-app-muted);
|
|
941
|
+
font-size: 11px;
|
|
942
|
+
line-height: 1.35;
|
|
943
|
+
display: -webkit-box;
|
|
944
|
+
-webkit-line-clamp: 2;
|
|
945
|
+
-webkit-box-orient: vertical;
|
|
946
|
+
overflow: hidden;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
.dql-app-ai-filter-preview {
|
|
950
|
+
display: grid;
|
|
951
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
952
|
+
gap: 8px;
|
|
953
|
+
padding: 12px;
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
.dql-app-ai-filter-preview span {
|
|
957
|
+
min-height: 70px;
|
|
958
|
+
border: 1px solid var(--dql-app-line);
|
|
959
|
+
border-radius: 8px;
|
|
960
|
+
background: var(--dql-app-surface-muted);
|
|
961
|
+
padding: 10px;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
.dql-app-ai-filter-preview small {
|
|
965
|
+
display: block;
|
|
966
|
+
color: var(--dql-app-faint);
|
|
967
|
+
font: 800 9.5px var(--font-mono);
|
|
968
|
+
text-transform: uppercase;
|
|
969
|
+
margin-bottom: 8px;
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.dql-app-ai-filter-preview b {
|
|
973
|
+
color: var(--dql-app-accent);
|
|
974
|
+
font-size: 18px;
|
|
975
|
+
line-height: 1.1;
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
.dql-app-ai-gap-list {
|
|
979
|
+
display: grid;
|
|
980
|
+
gap: 8px;
|
|
981
|
+
padding: 12px;
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.dql-app-ai-gap-list span {
|
|
985
|
+
display: flex;
|
|
986
|
+
gap: 8px;
|
|
987
|
+
color: var(--dql-app-muted);
|
|
988
|
+
font-size: 12px;
|
|
989
|
+
line-height: 1.4;
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
.dql-app-ai-gap-list svg {
|
|
993
|
+
flex: 0 0 auto;
|
|
994
|
+
margin-top: 1px;
|
|
995
|
+
color: var(--dql-app-orange);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.dql-app-ai-generated-section {
|
|
999
|
+
max-width: 1260px;
|
|
1000
|
+
margin: 18px auto 0;
|
|
1001
|
+
display: grid;
|
|
1002
|
+
gap: 12px;
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
.dql-app-ai-generated-head {
|
|
1006
|
+
display: flex;
|
|
1007
|
+
align-items: flex-end;
|
|
1008
|
+
justify-content: space-between;
|
|
1009
|
+
gap: 14px;
|
|
1010
|
+
}
|
|
1011
|
+
|
|
1012
|
+
.dql-app-ai-generated-head h2 {
|
|
1013
|
+
margin: 0;
|
|
1014
|
+
color: var(--dql-app-ink);
|
|
1015
|
+
font-size: 20px;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.dql-app-ai-generated-head p {
|
|
1019
|
+
margin: 4px 0 0;
|
|
1020
|
+
color: var(--dql-app-muted);
|
|
1021
|
+
font-size: 12.5px;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
.dql-app-ai-generated-grid {
|
|
1025
|
+
display: grid;
|
|
1026
|
+
grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
|
|
1027
|
+
gap: 14px;
|
|
1028
|
+
align-items: start;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
.dql-app-ai-plan-compact {
|
|
1032
|
+
border: 1px solid var(--dql-app-line);
|
|
1033
|
+
border-radius: 10px;
|
|
1034
|
+
background: var(--dql-app-surface);
|
|
1035
|
+
overflow: hidden;
|
|
1036
|
+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.04);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.dql-app-plan-list.compact {
|
|
1040
|
+
max-height: 520px;
|
|
1041
|
+
}
|
|
1042
|
+
.dql-app-panel {
|
|
1043
|
+
min-height: 0;
|
|
1044
|
+
display: flex;
|
|
1045
|
+
flex-direction: column;
|
|
1046
|
+
border-right: 1px solid var(--dql-app-line);
|
|
1047
|
+
background: var(--dql-app-surface-muted);
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
.dql-app-panel:last-child { border-right: 0; }
|
|
1051
|
+
.dql-app-panel-head {
|
|
1052
|
+
min-height: 48px;
|
|
1053
|
+
display: flex;
|
|
1054
|
+
align-items: center;
|
|
1055
|
+
gap: 8px;
|
|
1056
|
+
padding: 12px 15px;
|
|
1057
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1058
|
+
background: var(--dql-app-surface);
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
.dql-app-panel-head span { font-weight: 850; font-size: 14px; }
|
|
1062
|
+
.dql-app-panel-head b { margin-left: auto; color: var(--dql-app-faint); font: 500 10px var(--font-mono); text-transform: uppercase; letter-spacing: 0; }
|
|
1063
|
+
|
|
1064
|
+
.dql-app-agent-scroll,
|
|
1065
|
+
.dql-app-plan-list {
|
|
1066
|
+
flex: 1;
|
|
1067
|
+
min-height: 0;
|
|
1068
|
+
overflow: auto;
|
|
1069
|
+
padding: 16px;
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
.dql-app-agent-panel.ai-clean { background: var(--dql-app-surface); }
|
|
1073
|
+
.dql-app-ai-brief {
|
|
1074
|
+
padding: 18px 16px 2px;
|
|
1075
|
+
display: grid;
|
|
1076
|
+
gap: 8px;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
.dql-app-ai-brief > span {
|
|
1080
|
+
display: inline-flex;
|
|
1081
|
+
align-items: center;
|
|
1082
|
+
gap: 7px;
|
|
1083
|
+
color: var(--dql-app-ink);
|
|
1084
|
+
font: 850 13px var(--font-ui);
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
.dql-app-ai-brief > span svg { color: var(--dql-app-accent); }
|
|
1088
|
+
.dql-app-ai-brief p {
|
|
1089
|
+
margin: 0;
|
|
1090
|
+
color: var(--dql-app-muted);
|
|
1091
|
+
font-size: 12px;
|
|
1092
|
+
line-height: 1.5;
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
.dql-app-ai-result {
|
|
1096
|
+
margin-top: 5px;
|
|
1097
|
+
border: 1px solid rgba(22, 163, 74, 0.26);
|
|
1098
|
+
border-radius: 7px;
|
|
1099
|
+
background: var(--dql-app-green-soft);
|
|
1100
|
+
color: var(--dql-app-ink);
|
|
1101
|
+
padding: 8px 10px;
|
|
1102
|
+
font-size: 12px;
|
|
1103
|
+
line-height: 1.45;
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
.dql-app-ai-result small {
|
|
1107
|
+
display: block;
|
|
1108
|
+
margin-top: 3px;
|
|
1109
|
+
color: var(--dql-app-muted);
|
|
1110
|
+
font: 700 10px var(--font-mono);
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
.dql-app-composer {
|
|
1114
|
+
border-top: 1px solid var(--dql-app-line);
|
|
1115
|
+
background: var(--dql-app-surface);
|
|
1116
|
+
padding: 12px;
|
|
1117
|
+
display: grid;
|
|
1118
|
+
gap: 9px;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.dql-app-composer.ai-clean {
|
|
1122
|
+
border-top: 0;
|
|
1123
|
+
padding: 10px 16px 16px;
|
|
1124
|
+
gap: 9px;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
.dql-app-suggestions {
|
|
1128
|
+
display: flex;
|
|
1129
|
+
align-items: center;
|
|
1130
|
+
gap: 10px;
|
|
1131
|
+
flex-wrap: wrap;
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
.dql-app-suggestions > span {
|
|
1135
|
+
color: var(--dql-app-faint);
|
|
1136
|
+
font: 750 10px var(--font-mono);
|
|
1137
|
+
text-transform: uppercase;
|
|
1138
|
+
}
|
|
1139
|
+
|
|
1140
|
+
.dql-app-suggestions button,
|
|
1141
|
+
.dql-app-suggests button {
|
|
1142
|
+
border: 0;
|
|
1143
|
+
border-radius: 0;
|
|
1144
|
+
background: transparent;
|
|
1145
|
+
color: var(--dql-app-muted);
|
|
1146
|
+
padding: 2px 0;
|
|
1147
|
+
cursor: pointer;
|
|
1148
|
+
font: 750 11.5px var(--font-ui);
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
.dql-app-suggestions button:hover,
|
|
1152
|
+
.dql-app-suggests button:hover {
|
|
1153
|
+
color: var(--dql-app-accent);
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
.dql-app-composer textarea,
|
|
1157
|
+
.dql-app-form-grid input,
|
|
1158
|
+
.dql-app-select-label select,
|
|
1159
|
+
.dql-app-modal input {
|
|
1160
|
+
width: 100%;
|
|
1161
|
+
border: 1px solid var(--dql-app-line);
|
|
1162
|
+
border-radius: 7px;
|
|
1163
|
+
background: var(--dql-app-control);
|
|
1164
|
+
color: var(--dql-app-ink);
|
|
1165
|
+
outline: 0;
|
|
1166
|
+
padding: 8px 10px;
|
|
1167
|
+
font: 12.5px var(--font-ui);
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
.dql-app-composer textarea { resize: vertical; min-height: 92px; line-height: 1.45; }
|
|
1171
|
+
.dql-app-composer.ai-clean textarea {
|
|
1172
|
+
min-height: 130px;
|
|
1173
|
+
background: var(--dql-app-surface);
|
|
1174
|
+
border-color: var(--dql-app-line-2);
|
|
1175
|
+
border-radius: 10px;
|
|
1176
|
+
padding: 11px 12px;
|
|
1177
|
+
font-size: 13.5px;
|
|
1178
|
+
}
|
|
1179
|
+
.dql-app-form-grid.two { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
|
|
1180
|
+
.dql-app-form-grid label,
|
|
1181
|
+
.dql-app-select-label,
|
|
1182
|
+
.dql-app-modal label {
|
|
1183
|
+
display: grid;
|
|
1184
|
+
gap: 5px;
|
|
1185
|
+
color: var(--dql-app-muted);
|
|
1186
|
+
font: 700 10px var(--font-mono);
|
|
1187
|
+
text-transform: uppercase;
|
|
1188
|
+
letter-spacing: 0;
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
.dql-app-ai-context {
|
|
1192
|
+
border-top: 1px solid var(--dql-app-line);
|
|
1193
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1194
|
+
background: transparent;
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
.dql-app-ai-context summary {
|
|
1198
|
+
min-height: 34px;
|
|
1199
|
+
display: flex;
|
|
1200
|
+
align-items: center;
|
|
1201
|
+
gap: 8px;
|
|
1202
|
+
padding: 0 2px;
|
|
1203
|
+
cursor: pointer;
|
|
1204
|
+
list-style: none;
|
|
1205
|
+
}
|
|
1206
|
+
|
|
1207
|
+
.dql-app-ai-context summary::-webkit-details-marker { display: none; }
|
|
1208
|
+
|
|
1209
|
+
.dql-app-ai-context summary span {
|
|
1210
|
+
color: var(--dql-app-muted);
|
|
1211
|
+
font: 800 10px var(--font-mono);
|
|
1212
|
+
text-transform: uppercase;
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
.dql-app-ai-context summary b {
|
|
1216
|
+
margin-left: auto;
|
|
1217
|
+
min-width: 0;
|
|
1218
|
+
overflow: hidden;
|
|
1219
|
+
text-overflow: ellipsis;
|
|
1220
|
+
white-space: nowrap;
|
|
1221
|
+
color: var(--dql-app-ink);
|
|
1222
|
+
font: 750 11px var(--font-ui);
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
.dql-app-ai-context summary svg {
|
|
1226
|
+
flex: 0 0 auto;
|
|
1227
|
+
color: var(--dql-app-faint);
|
|
1228
|
+
transition: transform 140ms ease;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
.dql-app-ai-context[open] summary svg { transform: rotate(180deg); }
|
|
1232
|
+
|
|
1233
|
+
.dql-app-ai-context-grid {
|
|
1234
|
+
display: grid;
|
|
1235
|
+
grid-template-columns: 1fr;
|
|
1236
|
+
gap: 8px;
|
|
1237
|
+
padding: 0 0 10px;
|
|
1238
|
+
border-top: 1px solid var(--dql-app-line);
|
|
1239
|
+
}
|
|
1240
|
+
|
|
1241
|
+
.dql-app-ai-context-grid label {
|
|
1242
|
+
display: grid;
|
|
1243
|
+
gap: 5px;
|
|
1244
|
+
color: var(--dql-app-muted);
|
|
1245
|
+
font: 700 10px var(--font-mono);
|
|
1246
|
+
text-transform: uppercase;
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
.dql-app-ai-context-grid input,
|
|
1250
|
+
.dql-app-ai-context-grid select {
|
|
1251
|
+
width: 100%;
|
|
1252
|
+
height: 34px;
|
|
1253
|
+
border: 1px solid var(--dql-app-line);
|
|
1254
|
+
border-radius: 7px;
|
|
1255
|
+
background: var(--dql-app-surface-muted);
|
|
1256
|
+
color: var(--dql-app-ink);
|
|
1257
|
+
outline: 0;
|
|
1258
|
+
padding: 0 10px;
|
|
1259
|
+
font: 12.5px var(--font-ui);
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
.dql-app-ai-send-row {
|
|
1263
|
+
display: flex;
|
|
1264
|
+
align-items: center;
|
|
1265
|
+
justify-content: space-between;
|
|
1266
|
+
gap: 10px;
|
|
1267
|
+
padding-top: 3px;
|
|
1268
|
+
}
|
|
1269
|
+
|
|
1270
|
+
.dql-app-ai-send-row span {
|
|
1271
|
+
display: inline-flex;
|
|
1272
|
+
align-items: center;
|
|
1273
|
+
gap: 6px;
|
|
1274
|
+
color: var(--dql-app-muted);
|
|
1275
|
+
font: 750 11px var(--font-ui);
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
.dql-app-ai-send-row span svg {
|
|
1279
|
+
color: var(--dql-app-green);
|
|
1280
|
+
}
|
|
1281
|
+
|
|
1282
|
+
.dql-app-preview-panel { background: var(--dql-app-canvas); }
|
|
1283
|
+
.dql-app-preview-scroll { flex: 1; min-height: 0; overflow: auto; padding: 18px 20px 40px; }
|
|
1284
|
+
.dql-app-preview-card {
|
|
1285
|
+
border: 1px solid var(--dql-app-line);
|
|
1286
|
+
border-radius: 8px;
|
|
1287
|
+
background: var(--dql-app-surface);
|
|
1288
|
+
overflow: hidden;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
.dql-app-preview-head {
|
|
1292
|
+
min-height: 58px;
|
|
1293
|
+
display: flex;
|
|
1294
|
+
align-items: center;
|
|
1295
|
+
gap: 10px;
|
|
1296
|
+
padding: 12px 18px;
|
|
1297
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1298
|
+
}
|
|
1299
|
+
|
|
1300
|
+
.dql-app-preview-head h2 { margin: 0; font-size: 19px; }
|
|
1301
|
+
.dql-app-preview-filters {
|
|
1302
|
+
display: flex;
|
|
1303
|
+
gap: 7px;
|
|
1304
|
+
padding: 10px 18px;
|
|
1305
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1306
|
+
background: var(--dql-app-surface-muted);
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
.dql-app-preview-filters span {
|
|
1310
|
+
display: inline-flex;
|
|
1311
|
+
align-items: center;
|
|
1312
|
+
gap: 6px;
|
|
1313
|
+
border: 1px solid var(--dql-app-line);
|
|
1314
|
+
border-radius: 6px;
|
|
1315
|
+
background: var(--dql-app-surface);
|
|
1316
|
+
color: var(--dql-app-muted);
|
|
1317
|
+
padding: 4px 9px;
|
|
1318
|
+
font-size: 11px;
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
.dql-app-preview-grid {
|
|
1322
|
+
display: grid;
|
|
1323
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
1324
|
+
gap: 12px;
|
|
1325
|
+
padding: 16px 18px;
|
|
1326
|
+
min-height: 300px;
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1329
|
+
.dql-app-preview-empty {
|
|
1330
|
+
grid-column: 1 / -1;
|
|
1331
|
+
min-height: 260px;
|
|
1332
|
+
display: flex;
|
|
1333
|
+
flex-direction: column;
|
|
1334
|
+
align-items: center;
|
|
1335
|
+
justify-content: center;
|
|
1336
|
+
gap: 10px;
|
|
1337
|
+
color: var(--dql-app-faint);
|
|
1338
|
+
text-align: center;
|
|
1339
|
+
}
|
|
1340
|
+
|
|
1341
|
+
.dql-app-preview-tile {
|
|
1342
|
+
grid-column: span 4;
|
|
1343
|
+
min-height: 136px;
|
|
1344
|
+
border: 1px solid var(--dql-app-line);
|
|
1345
|
+
border-radius: 8px;
|
|
1346
|
+
background: var(--dql-app-surface);
|
|
1347
|
+
overflow: hidden;
|
|
1348
|
+
display: flex;
|
|
1349
|
+
flex-direction: column;
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
.dql-app-preview-tile.wide { grid-column: span 6; }
|
|
1353
|
+
.dql-app-preview-tile.draft { border-color: rgba(202, 138, 4, 0.34); }
|
|
1354
|
+
.dql-app-preview-tile-head,
|
|
1355
|
+
.dql-app-preview-tile-foot {
|
|
1356
|
+
display: flex;
|
|
1357
|
+
align-items: center;
|
|
1358
|
+
gap: 8px;
|
|
1359
|
+
padding: 8px 10px;
|
|
1360
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
.dql-app-preview-tile-head b { font-size: 12px; }
|
|
1364
|
+
.dql-app-preview-tile-head span,
|
|
1365
|
+
.dql-app-preview-tile-foot {
|
|
1366
|
+
color: var(--dql-app-faint);
|
|
1367
|
+
font: 700 9px var(--font-mono);
|
|
1368
|
+
text-transform: uppercase;
|
|
1369
|
+
letter-spacing: 0;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
.dql-app-preview-tile-head span { margin-left: auto; }
|
|
1373
|
+
.dql-app-preview-tile-body {
|
|
1374
|
+
flex: 1;
|
|
1375
|
+
display: flex;
|
|
1376
|
+
flex-direction: column;
|
|
1377
|
+
justify-content: center;
|
|
1378
|
+
padding: 10px;
|
|
1379
|
+
}
|
|
1380
|
+
|
|
1381
|
+
.dql-app-preview-tile-body strong { font-size: 26px; }
|
|
1382
|
+
.dql-app-preview-tile-body small { color: var(--dql-app-muted); }
|
|
1383
|
+
.dql-app-preview-source {
|
|
1384
|
+
display: grid;
|
|
1385
|
+
grid-template-columns: 34px minmax(0, 1fr);
|
|
1386
|
+
gap: 10px;
|
|
1387
|
+
align-items: center;
|
|
1388
|
+
}
|
|
1389
|
+
.dql-app-preview-source > span {
|
|
1390
|
+
width: 34px;
|
|
1391
|
+
height: 34px;
|
|
1392
|
+
border-radius: 8px;
|
|
1393
|
+
display: inline-flex;
|
|
1394
|
+
align-items: center;
|
|
1395
|
+
justify-content: center;
|
|
1396
|
+
background: var(--dql-app-accent-soft);
|
|
1397
|
+
color: var(--dql-app-accent);
|
|
1398
|
+
}
|
|
1399
|
+
.dql-app-preview-source b {
|
|
1400
|
+
display: block;
|
|
1401
|
+
color: var(--dql-app-ink);
|
|
1402
|
+
font-size: 13px;
|
|
1403
|
+
line-height: 1.2;
|
|
1404
|
+
}
|
|
1405
|
+
.dql-app-preview-source p {
|
|
1406
|
+
margin: 4px 0 0;
|
|
1407
|
+
color: var(--dql-app-muted);
|
|
1408
|
+
font-size: 11.5px;
|
|
1409
|
+
line-height: 1.4;
|
|
1410
|
+
display: -webkit-box;
|
|
1411
|
+
-webkit-line-clamp: 2;
|
|
1412
|
+
-webkit-box-orient: vertical;
|
|
1413
|
+
overflow: hidden;
|
|
1414
|
+
}
|
|
1415
|
+
.dql-app-preview-viz-row {
|
|
1416
|
+
display: flex;
|
|
1417
|
+
gap: 4px;
|
|
1418
|
+
padding: 0 10px 8px;
|
|
1419
|
+
align-items: center;
|
|
1420
|
+
}
|
|
1421
|
+
.dql-app-preview-viz-row button {
|
|
1422
|
+
width: 26px;
|
|
1423
|
+
height: 26px;
|
|
1424
|
+
border: 1px solid var(--dql-app-line);
|
|
1425
|
+
border-radius: 6px;
|
|
1426
|
+
background: var(--dql-app-surface);
|
|
1427
|
+
color: var(--dql-app-muted);
|
|
1428
|
+
display: inline-flex;
|
|
1429
|
+
align-items: center;
|
|
1430
|
+
justify-content: center;
|
|
1431
|
+
cursor: pointer;
|
|
1432
|
+
}
|
|
1433
|
+
.dql-app-preview-viz-row button.on {
|
|
1434
|
+
background: var(--dql-app-accent);
|
|
1435
|
+
border-color: var(--dql-app-accent);
|
|
1436
|
+
color: #fff;
|
|
1437
|
+
}
|
|
1438
|
+
.dql-app-preview-viz-row button:disabled {
|
|
1439
|
+
cursor: default;
|
|
1440
|
+
opacity: 0.58;
|
|
1441
|
+
}
|
|
1442
|
+
.dql-app-preview-tile-foot { border-bottom: 0; border-top: 1px solid var(--dql-app-line); }
|
|
1443
|
+
.dql-app-preview-tile-foot b { margin-left: auto; color: var(--dql-app-green); }
|
|
1444
|
+
.dql-app-preview-tile.draft .dql-app-preview-tile-foot b { color: var(--dql-app-orange); }
|
|
1445
|
+
.dql-app-review-backlog {
|
|
1446
|
+
border-top: 1px solid var(--dql-app-line);
|
|
1447
|
+
background: var(--dql-app-surface-muted);
|
|
1448
|
+
padding: 14px 18px 18px;
|
|
1449
|
+
}
|
|
1450
|
+
.dql-app-review-backlog-head {
|
|
1451
|
+
display: flex;
|
|
1452
|
+
align-items: center;
|
|
1453
|
+
gap: 8px;
|
|
1454
|
+
margin-bottom: 10px;
|
|
1455
|
+
color: var(--dql-app-muted);
|
|
1456
|
+
}
|
|
1457
|
+
.dql-app-review-backlog-head span {
|
|
1458
|
+
display: inline-flex;
|
|
1459
|
+
align-items: center;
|
|
1460
|
+
gap: 6px;
|
|
1461
|
+
font: 850 12px var(--font-ui);
|
|
1462
|
+
color: var(--dql-app-ink);
|
|
1463
|
+
}
|
|
1464
|
+
.dql-app-review-backlog-head b {
|
|
1465
|
+
margin-left: auto;
|
|
1466
|
+
min-width: 22px;
|
|
1467
|
+
height: 22px;
|
|
1468
|
+
border-radius: 999px;
|
|
1469
|
+
display: inline-flex;
|
|
1470
|
+
align-items: center;
|
|
1471
|
+
justify-content: center;
|
|
1472
|
+
background: var(--dql-app-orange-soft);
|
|
1473
|
+
color: var(--dql-app-orange);
|
|
1474
|
+
font: 800 10px var(--font-mono);
|
|
1475
|
+
}
|
|
1476
|
+
.dql-app-review-backlog-grid {
|
|
1477
|
+
display: grid;
|
|
1478
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1479
|
+
gap: 10px;
|
|
1480
|
+
}
|
|
1481
|
+
.dql-app-review-backlog-item {
|
|
1482
|
+
border: 1px solid rgba(202, 138, 4, 0.22);
|
|
1483
|
+
border-radius: 8px;
|
|
1484
|
+
background: var(--dql-app-surface);
|
|
1485
|
+
padding: 11px;
|
|
1486
|
+
display: grid;
|
|
1487
|
+
gap: 9px;
|
|
1488
|
+
}
|
|
1489
|
+
.dql-app-review-backlog-item b {
|
|
1490
|
+
display: block;
|
|
1491
|
+
font-size: 12.5px;
|
|
1492
|
+
line-height: 1.25;
|
|
1493
|
+
}
|
|
1494
|
+
.dql-app-review-backlog-item p {
|
|
1495
|
+
margin: 5px 0 0;
|
|
1496
|
+
color: var(--dql-app-muted);
|
|
1497
|
+
font-size: 11.5px;
|
|
1498
|
+
line-height: 1.4;
|
|
1499
|
+
}
|
|
1500
|
+
.dql-app-review-backlog-item > div:last-child {
|
|
1501
|
+
display: flex;
|
|
1502
|
+
gap: 5px;
|
|
1503
|
+
flex-wrap: wrap;
|
|
1504
|
+
}
|
|
1505
|
+
.dql-app-review-backlog-item span {
|
|
1506
|
+
border: 1px solid rgba(79, 99, 215, 0.18);
|
|
1507
|
+
border-radius: 999px;
|
|
1508
|
+
background: var(--dql-app-accent-soft);
|
|
1509
|
+
color: var(--dql-app-accent);
|
|
1510
|
+
padding: 3px 7px;
|
|
1511
|
+
font: 750 10px var(--font-ui);
|
|
1512
|
+
}
|
|
1513
|
+
.dql-app-planner-flow {
|
|
1514
|
+
border: 1px solid var(--dql-app-line);
|
|
1515
|
+
border-radius: 8px;
|
|
1516
|
+
background: var(--dql-app-surface);
|
|
1517
|
+
padding: 11px;
|
|
1518
|
+
margin-bottom: 12px;
|
|
1519
|
+
}
|
|
1520
|
+
.dql-app-planner-flow-title {
|
|
1521
|
+
display: flex;
|
|
1522
|
+
align-items: center;
|
|
1523
|
+
gap: 7px;
|
|
1524
|
+
color: var(--dql-app-accent);
|
|
1525
|
+
font: 850 12px var(--font-ui);
|
|
1526
|
+
}
|
|
1527
|
+
.dql-app-planner-flow p {
|
|
1528
|
+
margin: 7px 0 0;
|
|
1529
|
+
color: var(--dql-app-muted);
|
|
1530
|
+
font-size: 11.5px;
|
|
1531
|
+
line-height: 1.42;
|
|
1532
|
+
}
|
|
1533
|
+
.dql-app-planner-flow-steps {
|
|
1534
|
+
display: grid;
|
|
1535
|
+
gap: 6px;
|
|
1536
|
+
margin-top: 10px;
|
|
1537
|
+
}
|
|
1538
|
+
.dql-app-planner-flow-steps span {
|
|
1539
|
+
display: grid;
|
|
1540
|
+
grid-template-columns: 20px minmax(0, 1fr);
|
|
1541
|
+
gap: 7px;
|
|
1542
|
+
color: var(--dql-app-muted);
|
|
1543
|
+
font-size: 11px;
|
|
1544
|
+
line-height: 1.35;
|
|
1545
|
+
}
|
|
1546
|
+
.dql-app-planner-flow-steps b {
|
|
1547
|
+
width: 20px;
|
|
1548
|
+
height: 20px;
|
|
1549
|
+
border-radius: 999px;
|
|
1550
|
+
display: inline-flex;
|
|
1551
|
+
align-items: center;
|
|
1552
|
+
justify-content: center;
|
|
1553
|
+
background: var(--dql-app-accent-soft);
|
|
1554
|
+
color: var(--dql-app-accent);
|
|
1555
|
+
font: 850 10px var(--font-mono);
|
|
1556
|
+
}
|
|
1557
|
+
.dql-app-plan-group-label {
|
|
1558
|
+
margin: 14px 0 4px;
|
|
1559
|
+
color: var(--dql-app-faint);
|
|
1560
|
+
font: 850 10px var(--font-mono);
|
|
1561
|
+
text-transform: uppercase;
|
|
1562
|
+
}
|
|
1563
|
+
.dql-app-plan-item {
|
|
1564
|
+
display: flex;
|
|
1565
|
+
align-items: center;
|
|
1566
|
+
gap: 10px;
|
|
1567
|
+
padding: 10px 0;
|
|
1568
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
.dql-app-plan-item span { flex: 1; min-width: 0; }
|
|
1572
|
+
.dql-app-plan-item b { display: block; font: 700 11.5px var(--font-mono); }
|
|
1573
|
+
.dql-app-plan-item small { display: block; color: var(--dql-app-faint); font-size: 10px; margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1574
|
+
.dql-app-plan-item em { color: var(--dql-app-faint); font: 700 9px var(--font-mono); text-transform: uppercase; font-style: normal; }
|
|
1575
|
+
|
|
1576
|
+
.dql-app-plan-session,
|
|
1577
|
+
.dql-app-plan-warning,
|
|
1578
|
+
.dql-app-plan-task {
|
|
1579
|
+
border: 1px solid var(--dql-app-line);
|
|
1580
|
+
border-radius: 7px;
|
|
1581
|
+
padding: 8px 9px;
|
|
1582
|
+
background: var(--dql-app-surface-muted);
|
|
1583
|
+
color: var(--dql-app-muted);
|
|
1584
|
+
font-size: 11.5px;
|
|
1585
|
+
line-height: 1.35;
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
.dql-app-plan-session span {
|
|
1589
|
+
display: block;
|
|
1590
|
+
color: var(--dql-app-ink);
|
|
1591
|
+
font-weight: 800;
|
|
1592
|
+
}
|
|
1593
|
+
|
|
1594
|
+
.dql-app-plan-session small {
|
|
1595
|
+
display: block;
|
|
1596
|
+
margin-top: 2px;
|
|
1597
|
+
color: var(--dql-app-faint);
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
.dql-app-plan-warning {
|
|
1601
|
+
border-color: rgba(202, 138, 4, 0.24);
|
|
1602
|
+
background: var(--dql-app-orange-soft);
|
|
1603
|
+
}
|
|
1604
|
+
|
|
1605
|
+
.dql-app-plan-task {
|
|
1606
|
+
display: flex;
|
|
1607
|
+
align-items: flex-start;
|
|
1608
|
+
gap: 7px;
|
|
1609
|
+
}
|
|
1610
|
+
|
|
1611
|
+
.dql-app-plan-foot {
|
|
1612
|
+
margin-top: auto;
|
|
1613
|
+
padding: 14px;
|
|
1614
|
+
border-top: 2px solid var(--dql-app-accent);
|
|
1615
|
+
background: var(--dql-app-accent-soft);
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
.dql-app-leader {
|
|
1619
|
+
display: flex;
|
|
1620
|
+
align-items: baseline;
|
|
1621
|
+
gap: 8px;
|
|
1622
|
+
font-size: 11.5px;
|
|
1623
|
+
color: var(--dql-app-muted);
|
|
1624
|
+
margin: 5px 0;
|
|
1625
|
+
}
|
|
1626
|
+
|
|
1627
|
+
.dql-app-leader i { flex: 1; border-bottom: 1.5px dotted var(--dql-app-line-2); transform: translateY(-3px); }
|
|
1628
|
+
.dql-app-leader b { font-family: var(--font-mono); color: var(--dql-app-ink); }
|
|
1629
|
+
.dql-app-leader.certified b { color: var(--dql-app-green); }
|
|
1630
|
+
.dql-app-leader.draft b { color: var(--dql-app-orange); }
|
|
1631
|
+
|
|
1632
|
+
.dql-app-error {
|
|
1633
|
+
border: 1px solid rgba(220, 38, 38, 0.24);
|
|
1634
|
+
border-radius: 6px;
|
|
1635
|
+
background: rgba(220, 38, 38, 0.06);
|
|
1636
|
+
color: #b91c1c;
|
|
1637
|
+
padding: 8px 10px;
|
|
1638
|
+
font-size: 12px;
|
|
1639
|
+
line-height: 1.45;
|
|
1640
|
+
margin-top: 10px;
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
.dql-app-palette { flex: 1; min-height: 0; overflow: auto; padding: 12px; }
|
|
1644
|
+
.dql-app-agent-scroll .dql-app-palette {
|
|
1645
|
+
margin-top: 12px;
|
|
1646
|
+
border: 1px solid var(--dql-app-line);
|
|
1647
|
+
border-radius: 8px;
|
|
1648
|
+
background: var(--dql-app-surface-muted);
|
|
1649
|
+
padding: 10px;
|
|
1650
|
+
max-height: 360px;
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
.dql-app-palette-title {
|
|
1654
|
+
display: flex;
|
|
1655
|
+
align-items: center;
|
|
1656
|
+
gap: 8px;
|
|
1657
|
+
margin-bottom: 8px;
|
|
1658
|
+
}
|
|
1659
|
+
|
|
1660
|
+
.dql-app-palette-title span {
|
|
1661
|
+
display: inline-flex;
|
|
1662
|
+
align-items: center;
|
|
1663
|
+
gap: 7px;
|
|
1664
|
+
color: var(--dql-app-ink);
|
|
1665
|
+
font: 850 12px var(--font-ui);
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
.dql-app-palette-title b {
|
|
1669
|
+
margin-left: auto;
|
|
1670
|
+
color: var(--dql-app-faint);
|
|
1671
|
+
font: 700 9.5px var(--font-mono);
|
|
1672
|
+
text-transform: uppercase;
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
.dql-app-palette-search {
|
|
1676
|
+
display: flex;
|
|
1677
|
+
align-items: center;
|
|
1678
|
+
gap: 8px;
|
|
1679
|
+
border: 1px solid var(--dql-app-line);
|
|
1680
|
+
border-radius: 7px;
|
|
1681
|
+
background: var(--dql-app-surface);
|
|
1682
|
+
color: var(--dql-app-muted);
|
|
1683
|
+
padding: 8px 10px;
|
|
1684
|
+
margin-bottom: 10px;
|
|
1685
|
+
font-size: 12px;
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
.dql-app-palette-search input {
|
|
1689
|
+
flex: 1;
|
|
1690
|
+
min-width: 0;
|
|
1691
|
+
border: 0;
|
|
1692
|
+
outline: 0;
|
|
1693
|
+
background: transparent;
|
|
1694
|
+
color: var(--dql-app-ink);
|
|
1695
|
+
font: 12px var(--font-ui);
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1698
|
+
.dql-app-palette button {
|
|
1699
|
+
width: 100%;
|
|
1700
|
+
border: 1px solid var(--dql-app-line);
|
|
1701
|
+
border-radius: 7px;
|
|
1702
|
+
background: var(--dql-app-surface);
|
|
1703
|
+
color: var(--dql-app-ink);
|
|
1704
|
+
padding: 9px 10px;
|
|
1705
|
+
margin-bottom: 7px;
|
|
1706
|
+
display: flex;
|
|
1707
|
+
align-items: center;
|
|
1708
|
+
gap: 9px;
|
|
1709
|
+
text-align: left;
|
|
1710
|
+
cursor: pointer;
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
.dql-app-palette button.selected { border-color: var(--dql-app-accent); background: var(--dql-app-accent-soft); }
|
|
1714
|
+
.dql-app-palette-icon {
|
|
1715
|
+
width: 25px;
|
|
1716
|
+
height: 25px;
|
|
1717
|
+
border-radius: 6px;
|
|
1718
|
+
background: #f1f5f9;
|
|
1719
|
+
color: var(--dql-app-accent);
|
|
1720
|
+
display: inline-flex;
|
|
1721
|
+
align-items: center;
|
|
1722
|
+
justify-content: center;
|
|
1723
|
+
flex: none;
|
|
1724
|
+
}
|
|
1725
|
+
|
|
1726
|
+
.dql-app-palette span:nth-child(2) { flex: 1; min-width: 0; }
|
|
1727
|
+
.dql-app-palette b { display: block; font: 700 11px var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1728
|
+
.dql-app-palette small { display: block; color: var(--dql-app-faint); font-size: 10px; }
|
|
1729
|
+
.dql-app-palette i { color: var(--dql-app-green); font: 700 9px var(--font-mono); text-transform: uppercase; font-style: normal; }
|
|
1730
|
+
.dql-app-palette-more {
|
|
1731
|
+
color: var(--dql-app-faint);
|
|
1732
|
+
text-align: center;
|
|
1733
|
+
font: 700 10px var(--font-mono);
|
|
1734
|
+
padding: 8px 0 2px;
|
|
1735
|
+
}
|
|
1736
|
+
|
|
1737
|
+
.dql-app-view-topbar { position: relative; z-index: 4; }
|
|
1738
|
+
.dql-app-view-topbar {
|
|
1739
|
+
min-height: 48px;
|
|
1740
|
+
padding: 7px 22px;
|
|
1741
|
+
box-shadow: 0 1px 0 var(--dql-app-line);
|
|
1742
|
+
background: var(--dql-app-surface);
|
|
1743
|
+
backdrop-filter: blur(10px);
|
|
1744
|
+
}
|
|
1745
|
+
|
|
1746
|
+
.dql-app-crumb { color: var(--dql-app-muted); font: 700 11.5px var(--font-mono); }
|
|
1747
|
+
.dql-app-filterbar {
|
|
1748
|
+
position: relative;
|
|
1749
|
+
z-index: 3;
|
|
1750
|
+
min-height: 52px;
|
|
1751
|
+
display: flex;
|
|
1752
|
+
align-items: center;
|
|
1753
|
+
gap: 8px;
|
|
1754
|
+
padding: 8px 26px;
|
|
1755
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
1756
|
+
background: var(--dql-app-surface);
|
|
1757
|
+
flex-wrap: wrap;
|
|
1758
|
+
}
|
|
1759
|
+
|
|
1760
|
+
.dql-app-filter-select {
|
|
1761
|
+
height: 34px;
|
|
1762
|
+
display: inline-flex;
|
|
1763
|
+
align-items: center;
|
|
1764
|
+
gap: 8px;
|
|
1765
|
+
border: 1px solid var(--dql-app-line);
|
|
1766
|
+
border-radius: 8px;
|
|
1767
|
+
background: var(--dql-app-control);
|
|
1768
|
+
padding: 0 10px;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
.dql-app-filter-select span {
|
|
1772
|
+
color: var(--dql-app-faint);
|
|
1773
|
+
font: 700 9px var(--font-mono);
|
|
1774
|
+
letter-spacing: 0;
|
|
1775
|
+
text-transform: uppercase;
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
.dql-app-filter-select select,
|
|
1779
|
+
.dql-app-filter-select input {
|
|
1780
|
+
border: 0;
|
|
1781
|
+
background: transparent;
|
|
1782
|
+
color: var(--dql-app-ink);
|
|
1783
|
+
outline: 0;
|
|
1784
|
+
font: 750 12.5px var(--font-ui);
|
|
1785
|
+
min-width: 0;
|
|
1786
|
+
max-width: 110px;
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
.dql-app-filter-select input[type="number"] {
|
|
1790
|
+
width: 64px;
|
|
1791
|
+
}
|
|
1792
|
+
|
|
1793
|
+
.dql-app-filter-empty {
|
|
1794
|
+
color: var(--dql-app-faint);
|
|
1795
|
+
font: 750 11px var(--font-ui);
|
|
1796
|
+
}
|
|
1797
|
+
|
|
1798
|
+
.dql-app-filter-note {
|
|
1799
|
+
margin-left: auto;
|
|
1800
|
+
color: var(--dql-app-faint);
|
|
1801
|
+
font: 700 11px var(--font-ui);
|
|
1802
|
+
display: inline-flex;
|
|
1803
|
+
align-items: center;
|
|
1804
|
+
gap: 6px;
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
.dql-app-toggle {
|
|
1808
|
+
border: 0;
|
|
1809
|
+
background: transparent;
|
|
1810
|
+
display: inline-flex;
|
|
1811
|
+
align-items: center;
|
|
1812
|
+
gap: 8px;
|
|
1813
|
+
color: var(--dql-app-muted);
|
|
1814
|
+
cursor: pointer;
|
|
1815
|
+
font: 800 12px var(--font-ui);
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
.dql-app-toggle i {
|
|
1819
|
+
width: 32px;
|
|
1820
|
+
height: 18px;
|
|
1821
|
+
border-radius: 999px;
|
|
1822
|
+
background: #cbd5e1;
|
|
1823
|
+
position: relative;
|
|
1824
|
+
}
|
|
1825
|
+
|
|
1826
|
+
.dql-app-toggle i::after {
|
|
1827
|
+
content: "";
|
|
1828
|
+
width: 14px;
|
|
1829
|
+
height: 14px;
|
|
1830
|
+
border-radius: 999px;
|
|
1831
|
+
position: absolute;
|
|
1832
|
+
top: 2px;
|
|
1833
|
+
left: 2px;
|
|
1834
|
+
background: #fff;
|
|
1835
|
+
transition: transform 140ms ease;
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
.dql-app-toggle.on i { background: var(--dql-app-accent); }
|
|
1839
|
+
.dql-app-toggle.on i::after { transform: translateX(14px); }
|
|
1840
|
+
|
|
1841
|
+
.dql-app-view-wrap {
|
|
1842
|
+
position: relative;
|
|
1843
|
+
z-index: 1;
|
|
1844
|
+
width: min(1560px, calc(100% - 40px));
|
|
1845
|
+
margin: 0 auto;
|
|
1846
|
+
padding: 12px 0 60px;
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
.dql-app-title-row {
|
|
1850
|
+
display: flex;
|
|
1851
|
+
align-items: flex-end;
|
|
1852
|
+
justify-content: space-between;
|
|
1853
|
+
gap: 18px;
|
|
1854
|
+
margin-bottom: 12px;
|
|
1855
|
+
flex-wrap: wrap;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
.dql-app-title-copy {
|
|
1859
|
+
flex: 1 1 420px;
|
|
1860
|
+
min-width: 0;
|
|
1861
|
+
}
|
|
1862
|
+
|
|
1863
|
+
.dql-app-title-meta {
|
|
1864
|
+
display: flex;
|
|
1865
|
+
align-items: center;
|
|
1866
|
+
gap: 8px;
|
|
1867
|
+
margin-bottom: 6px;
|
|
1868
|
+
}
|
|
1869
|
+
|
|
1870
|
+
.dql-app-title-meta > span {
|
|
1871
|
+
display: inline-flex;
|
|
1872
|
+
align-items: center;
|
|
1873
|
+
gap: 6px;
|
|
1874
|
+
color: var(--dql-app-muted);
|
|
1875
|
+
font: 750 11.5px var(--font-ui);
|
|
1876
|
+
text-transform: capitalize;
|
|
1877
|
+
}
|
|
1878
|
+
|
|
1879
|
+
.dql-app-title-row h1 {
|
|
1880
|
+
margin: 0;
|
|
1881
|
+
font-size: 26px;
|
|
1882
|
+
line-height: 1.1;
|
|
1883
|
+
font-weight: 820;
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
.dql-app-title-row p {
|
|
1887
|
+
margin: 6px 0 0;
|
|
1888
|
+
color: var(--dql-app-muted);
|
|
1889
|
+
font-size: 13px;
|
|
1890
|
+
line-height: 1.45;
|
|
1891
|
+
max-width: 720px;
|
|
1892
|
+
display: -webkit-box;
|
|
1893
|
+
-webkit-line-clamp: 2;
|
|
1894
|
+
-webkit-box-orient: vertical;
|
|
1895
|
+
overflow: hidden;
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
.dql-app-title-context {
|
|
1899
|
+
display: inline-flex;
|
|
1900
|
+
align-items: center;
|
|
1901
|
+
color: var(--dql-app-faint);
|
|
1902
|
+
font: 700 11.5px var(--font-mono);
|
|
1903
|
+
}
|
|
1904
|
+
.dql-app-title-context::before { content: "·"; margin-right: 8px; color: var(--dql-app-line-2); }
|
|
1905
|
+
|
|
1906
|
+
.dql-app-nav-row {
|
|
1907
|
+
display: flex;
|
|
1908
|
+
align-items: center;
|
|
1909
|
+
justify-content: flex-end;
|
|
1910
|
+
gap: 8px;
|
|
1911
|
+
flex-wrap: wrap;
|
|
1912
|
+
min-width: 0;
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
.dql-app-section-tabs,
|
|
1916
|
+
.dql-app-page-picker {
|
|
1917
|
+
display: flex;
|
|
1918
|
+
align-items: center;
|
|
1919
|
+
gap: 6px;
|
|
1920
|
+
}
|
|
1921
|
+
|
|
1922
|
+
.dql-app-section-tabs {
|
|
1923
|
+
overflow-x: auto;
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
.dql-app-section-tabs button,
|
|
1927
|
+
.dql-app-page-picker {
|
|
1928
|
+
border: 1px solid var(--dql-app-line);
|
|
1929
|
+
border-radius: 8px;
|
|
1930
|
+
background: var(--dql-app-surface);
|
|
1931
|
+
color: var(--dql-app-muted);
|
|
1932
|
+
min-height: 32px;
|
|
1933
|
+
display: inline-flex;
|
|
1934
|
+
align-items: center;
|
|
1935
|
+
font: 750 12px var(--font-ui);
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
.dql-app-section-tabs {
|
|
1939
|
+
gap: 6px;
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
.dql-app-section-tabs button {
|
|
1943
|
+
border: 0;
|
|
1944
|
+
border-radius: 8px;
|
|
1945
|
+
background: transparent;
|
|
1946
|
+
color: var(--dql-app-muted);
|
|
1947
|
+
min-height: 32px;
|
|
1948
|
+
padding: 6px 9px;
|
|
1949
|
+
display: inline-flex;
|
|
1950
|
+
align-items: center;
|
|
1951
|
+
gap: 6px;
|
|
1952
|
+
cursor: pointer;
|
|
1953
|
+
font: 750 12px var(--font-ui);
|
|
1954
|
+
}
|
|
1955
|
+
|
|
1956
|
+
.dql-app-section-tabs button {
|
|
1957
|
+
min-width: 38px;
|
|
1958
|
+
justify-content: center;
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1961
|
+
.dql-app-section-tabs .dql-app-tab-icon {
|
|
1962
|
+
display: inline-flex;
|
|
1963
|
+
align-items: center;
|
|
1964
|
+
justify-content: center;
|
|
1965
|
+
font-style: normal;
|
|
1966
|
+
}
|
|
1967
|
+
|
|
1968
|
+
.dql-app-section-tabs .dql-app-tab-label {
|
|
1969
|
+
display: none;
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
.dql-app-section-tabs button.on .dql-app-tab-label {
|
|
1973
|
+
display: inline;
|
|
1974
|
+
}
|
|
1975
|
+
|
|
1976
|
+
.dql-app-section-tabs button.on,
|
|
1977
|
+
.dql-app-section-tabs button:hover {
|
|
1978
|
+
color: var(--dql-app-ink);
|
|
1979
|
+
background: var(--dql-app-accent-soft);
|
|
1980
|
+
}
|
|
1981
|
+
|
|
1982
|
+
.dql-app-section-tabs button.on {
|
|
1983
|
+
box-shadow: inset 0 0 0 1px var(--dql-app-accent);
|
|
1984
|
+
}
|
|
1985
|
+
|
|
1986
|
+
.dql-app-section-tabs b {
|
|
1987
|
+
color: var(--dql-app-accent);
|
|
1988
|
+
font-family: var(--font-mono);
|
|
1989
|
+
font-size: 10px;
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
.dql-app-page-picker {
|
|
1993
|
+
padding: 0 5px 0 10px;
|
|
1994
|
+
white-space: nowrap;
|
|
1995
|
+
max-width: min(440px, 100%);
|
|
1996
|
+
}
|
|
1997
|
+
|
|
1998
|
+
.dql-app-page-picker > span {
|
|
1999
|
+
display: inline-flex;
|
|
2000
|
+
align-items: center;
|
|
2001
|
+
gap: 6px;
|
|
2002
|
+
color: var(--dql-app-faint);
|
|
2003
|
+
font: 800 10px var(--font-mono);
|
|
2004
|
+
text-transform: uppercase;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
2007
|
+
.dql-app-page-picker select {
|
|
2008
|
+
min-width: 210px;
|
|
2009
|
+
max-width: 310px;
|
|
2010
|
+
height: 30px;
|
|
2011
|
+
border: 0;
|
|
2012
|
+
outline: 0;
|
|
2013
|
+
background: transparent;
|
|
2014
|
+
color: var(--dql-app-ink);
|
|
2015
|
+
font: 800 12px var(--font-ui);
|
|
2016
|
+
text-overflow: ellipsis;
|
|
2017
|
+
}
|
|
2018
|
+
|
|
2019
|
+
.dql-app-page-picker button {
|
|
2020
|
+
width: 26px;
|
|
2021
|
+
height: 26px;
|
|
2022
|
+
border: 0;
|
|
2023
|
+
border-radius: 6px;
|
|
2024
|
+
background: var(--dql-app-accent-soft);
|
|
2025
|
+
color: var(--dql-app-accent);
|
|
2026
|
+
display: inline-flex;
|
|
2027
|
+
align-items: center;
|
|
2028
|
+
justify-content: center;
|
|
2029
|
+
cursor: pointer;
|
|
2030
|
+
}
|
|
2031
|
+
|
|
2032
|
+
.dql-app-dashboard-label {
|
|
2033
|
+
min-width: 0;
|
|
2034
|
+
overflow: hidden;
|
|
2035
|
+
text-overflow: ellipsis;
|
|
2036
|
+
white-space: nowrap;
|
|
2037
|
+
}
|
|
2038
|
+
.dql-app-view-layout {
|
|
2039
|
+
display: grid;
|
|
2040
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
2041
|
+
gap: 14px;
|
|
2042
|
+
align-items: start;
|
|
2043
|
+
}
|
|
2044
|
+
|
|
2045
|
+
.dql-app-view-layout.no-explain { grid-template-columns: minmax(0, 1fr); }
|
|
2046
|
+
.dql-app-main-column { min-width: 0; }
|
|
2047
|
+
.dql-app-filter-row {
|
|
2048
|
+
display: flex;
|
|
2049
|
+
align-items: center;
|
|
2050
|
+
gap: 12px;
|
|
2051
|
+
flex-wrap: wrap;
|
|
2052
|
+
margin-bottom: 14px;
|
|
2053
|
+
padding: 12px 14px;
|
|
2054
|
+
border: 1px solid var(--dql-app-line);
|
|
2055
|
+
border-radius: 12px;
|
|
2056
|
+
background: var(--dql-app-surface);
|
|
2057
|
+
}
|
|
2058
|
+
.dql-app-filter-row-copy { display: grid; gap: 2px; min-width: 170px; }
|
|
2059
|
+
.dql-app-filter-row-copy b { font-size: 12px; color: var(--dql-app-ink); }
|
|
2060
|
+
.dql-app-filter-row-copy span { font-size: 10.5px; color: var(--dql-app-faint); }
|
|
2061
|
+
.dql-app-filter-row .dql-app-topbar-filters { flex: 1; }
|
|
2062
|
+
.dql-app-filter-row-actions { display: flex; gap: 7px; margin-left: auto; }
|
|
2063
|
+
|
|
2064
|
+
.dql-app-explain-panel {
|
|
2065
|
+
position: sticky;
|
|
2066
|
+
top: 110px;
|
|
2067
|
+
width: clamp(420px, 29vw, 500px);
|
|
2068
|
+
min-width: 390px;
|
|
2069
|
+
max-width: min(520px, 40vw);
|
|
2070
|
+
min-height: 580px;
|
|
2071
|
+
height: calc(100vh - 142px);
|
|
2072
|
+
max-height: calc(100vh - 142px);
|
|
2073
|
+
border: 1px solid var(--dql-app-line);
|
|
2074
|
+
border-radius: 16px;
|
|
2075
|
+
background: var(--dql-app-surface);
|
|
2076
|
+
overflow: hidden;
|
|
2077
|
+
box-shadow: 0 20px 60px rgba(15, 23, 42, 0.14);
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
.dql-app-explain-panel[data-expanded="true"] {
|
|
2081
|
+
width: min(${Kt}px, 52vw);
|
|
2082
|
+
max-width: min(${Kt}px, 52vw);
|
|
2083
|
+
}
|
|
2084
|
+
|
|
2085
|
+
.dql-app-copilot-panel {
|
|
2086
|
+
display: flex;
|
|
2087
|
+
flex-direction: column;
|
|
2088
|
+
overflow: hidden;
|
|
2089
|
+
}
|
|
2090
|
+
|
|
2091
|
+
.dql-app-assistant-panel {
|
|
2092
|
+
display: flex;
|
|
2093
|
+
flex-direction: column;
|
|
2094
|
+
min-height: 0;
|
|
2095
|
+
overflow: hidden;
|
|
2096
|
+
/* No background override: the shared AiSidePanel owns the surface so App AI,
|
|
2097
|
+
Notebook AI and Block AI read as the same panel rather than three skins. */
|
|
2098
|
+
}
|
|
2099
|
+
|
|
2100
|
+
.dql-app-assistant-top {
|
|
2101
|
+
display: grid;
|
|
2102
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
2103
|
+
align-items: end;
|
|
2104
|
+
gap: 10px;
|
|
2105
|
+
padding: 10px 12px;
|
|
2106
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2107
|
+
flex: none;
|
|
2108
|
+
background: var(--dql-app-surface);
|
|
2109
|
+
}
|
|
2110
|
+
|
|
2111
|
+
.dql-app-assistant-focus {
|
|
2112
|
+
min-width: 0;
|
|
2113
|
+
display: grid;
|
|
2114
|
+
gap: 5px;
|
|
2115
|
+
}
|
|
2116
|
+
|
|
2117
|
+
.dql-app-assistant-focus span {
|
|
2118
|
+
color: var(--dql-app-muted);
|
|
2119
|
+
font: 800 9.5px var(--font-mono);
|
|
2120
|
+
letter-spacing: 0;
|
|
2121
|
+
text-transform: uppercase;
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2124
|
+
.dql-app-assistant-focus select {
|
|
2125
|
+
width: 100%;
|
|
2126
|
+
height: 36px;
|
|
2127
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2128
|
+
border-radius: 8px;
|
|
2129
|
+
background: var(--dql-app-surface);
|
|
2130
|
+
color: var(--dql-app-ink);
|
|
2131
|
+
padding: 0 10px;
|
|
2132
|
+
font: 750 12px var(--font-ui);
|
|
2133
|
+
cursor: pointer;
|
|
2134
|
+
}
|
|
2135
|
+
|
|
2136
|
+
.dql-app-assistant-context-btn {
|
|
2137
|
+
flex: none;
|
|
2138
|
+
height: 30px;
|
|
2139
|
+
border: 1px solid var(--dql-app-line);
|
|
2140
|
+
border-radius: 8px;
|
|
2141
|
+
background: var(--dql-app-control);
|
|
2142
|
+
color: var(--dql-app-muted);
|
|
2143
|
+
display: inline-flex;
|
|
2144
|
+
align-items: center;
|
|
2145
|
+
gap: 5px;
|
|
2146
|
+
padding: 0 9px;
|
|
2147
|
+
cursor: pointer;
|
|
2148
|
+
font: 800 11px var(--font-ui);
|
|
2149
|
+
}
|
|
2150
|
+
|
|
2151
|
+
.dql-app-assistant-context-btn.on,
|
|
2152
|
+
.dql-app-assistant-context-btn:hover {
|
|
2153
|
+
color: var(--dql-app-accent);
|
|
2154
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
2155
|
+
background: var(--dql-app-accent-soft);
|
|
2156
|
+
}
|
|
2157
|
+
|
|
2158
|
+
.dql-app-assistant-context-btn.on svg { transform: rotate(180deg); }
|
|
2159
|
+
|
|
2160
|
+
.dql-app-assistant-context {
|
|
2161
|
+
display: grid;
|
|
2162
|
+
gap: 8px;
|
|
2163
|
+
padding: 11px 14px;
|
|
2164
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2165
|
+
background: var(--dql-app-surface-muted);
|
|
2166
|
+
}
|
|
2167
|
+
|
|
2168
|
+
.dql-app-assistant-context p {
|
|
2169
|
+
margin: 0;
|
|
2170
|
+
color: var(--dql-app-muted);
|
|
2171
|
+
font-size: 12px;
|
|
2172
|
+
line-height: 1.45;
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
.dql-app-assistant-context > div {
|
|
2176
|
+
display: grid;
|
|
2177
|
+
gap: 6px;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
.dql-app-one-ai-panel {
|
|
2181
|
+
flex: 1;
|
|
2182
|
+
min-height: 0;
|
|
2183
|
+
overflow: hidden;
|
|
2184
|
+
display: flex;
|
|
2185
|
+
flex-direction: column;
|
|
2186
|
+
padding: 0;
|
|
2187
|
+
background: var(--dql-app-surface);
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
.dql-app-one-ai-status {
|
|
2191
|
+
margin: 0;
|
|
2192
|
+
display: grid;
|
|
2193
|
+
gap: 6px;
|
|
2194
|
+
padding: 10px 16px;
|
|
2195
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2196
|
+
background: color-mix(in srgb, var(--dql-app-surface-muted) 72%, var(--dql-app-surface));
|
|
2197
|
+
flex: none;
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
.dql-app-one-ai-status span {
|
|
2201
|
+
display: inline-flex;
|
|
2202
|
+
align-items: center;
|
|
2203
|
+
gap: 6px;
|
|
2204
|
+
color: var(--dql-app-green);
|
|
2205
|
+
font: 850 11px var(--font-ui);
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
.dql-app-one-ai-status > div {
|
|
2209
|
+
display: flex;
|
|
2210
|
+
flex-wrap: nowrap;
|
|
2211
|
+
gap: 6px;
|
|
2212
|
+
overflow-x: auto;
|
|
2213
|
+
scrollbar-width: none;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
.dql-app-one-ai-status > div::-webkit-scrollbar {
|
|
2217
|
+
display: none;
|
|
2218
|
+
}
|
|
2219
|
+
|
|
2220
|
+
.dql-app-one-ai-status b {
|
|
2221
|
+
flex: none;
|
|
2222
|
+
min-width: 0;
|
|
2223
|
+
max-width: 190px;
|
|
2224
|
+
border: 1px solid var(--dql-app-line);
|
|
2225
|
+
border-radius: 999px;
|
|
2226
|
+
background: var(--dql-app-surface);
|
|
2227
|
+
color: var(--dql-app-faint);
|
|
2228
|
+
font: 750 10.5px var(--font-ui);
|
|
2229
|
+
padding: 4px 8px;
|
|
2230
|
+
overflow: hidden;
|
|
2231
|
+
text-overflow: ellipsis;
|
|
2232
|
+
white-space: nowrap;
|
|
2233
|
+
}
|
|
2234
|
+
|
|
2235
|
+
.dql-app-copilot-thread {
|
|
2236
|
+
flex: 1;
|
|
2237
|
+
min-height: 0;
|
|
2238
|
+
overflow-y: auto;
|
|
2239
|
+
display: flex;
|
|
2240
|
+
flex-direction: column;
|
|
2241
|
+
gap: 14px;
|
|
2242
|
+
padding: 16px 0 20px;
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
.dql-app-direct-ask {
|
|
2246
|
+
margin-top: 0;
|
|
2247
|
+
z-index: 4;
|
|
2248
|
+
border-top: 1px solid var(--dql-app-line);
|
|
2249
|
+
padding: 14px 16px 16px;
|
|
2250
|
+
display: grid;
|
|
2251
|
+
gap: 8px;
|
|
2252
|
+
flex: none;
|
|
2253
|
+
background: color-mix(in srgb, var(--dql-app-surface) 92%, transparent);
|
|
2254
|
+
backdrop-filter: blur(10px);
|
|
2255
|
+
box-shadow: 0 -12px 28px rgba(15, 23, 42, 0.05);
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
.dql-app-direct-ask-row {
|
|
2259
|
+
display: grid;
|
|
2260
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
2261
|
+
gap: 8px;
|
|
2262
|
+
align-items: end;
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
.dql-app-direct-ask-row textarea {
|
|
2266
|
+
width: 100%;
|
|
2267
|
+
min-height: 96px;
|
|
2268
|
+
max-height: 150px;
|
|
2269
|
+
resize: vertical;
|
|
2270
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2271
|
+
border-radius: 12px;
|
|
2272
|
+
background: var(--dql-app-surface);
|
|
2273
|
+
color: var(--dql-app-ink);
|
|
2274
|
+
padding: 12px 13px;
|
|
2275
|
+
font: 500 13.5px/1.45 var(--font-ui);
|
|
2276
|
+
outline: none;
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
.dql-app-direct-ask-row textarea:focus {
|
|
2280
|
+
border-color: rgba(79, 99, 215, 0.48);
|
|
2281
|
+
box-shadow: 0 0 0 3px rgba(79, 99, 215, 0.1);
|
|
2282
|
+
}
|
|
2283
|
+
|
|
2284
|
+
.dql-app-direct-ask-row button,
|
|
2285
|
+
.dql-app-direct-quick button {
|
|
2286
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2287
|
+
border-radius: 12px;
|
|
2288
|
+
background: var(--dql-app-surface);
|
|
2289
|
+
color: var(--dql-app-ink);
|
|
2290
|
+
display: inline-flex;
|
|
2291
|
+
align-items: center;
|
|
2292
|
+
justify-content: center;
|
|
2293
|
+
gap: 6px;
|
|
2294
|
+
padding: 8px 10px;
|
|
2295
|
+
font-weight: 750;
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
.dql-app-direct-ask-row button {
|
|
2299
|
+
min-height: 48px;
|
|
2300
|
+
padding-inline: 13px;
|
|
2301
|
+
background: var(--dql-app-accent);
|
|
2302
|
+
border-color: var(--dql-app-accent);
|
|
2303
|
+
color: #fff;
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2306
|
+
.dql-app-direct-ask-row button:disabled {
|
|
2307
|
+
opacity: 0.55;
|
|
2308
|
+
}
|
|
2309
|
+
|
|
2310
|
+
.dql-app-direct-quick {
|
|
2311
|
+
display: grid;
|
|
2312
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2313
|
+
gap: 6px;
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
.dql-app-direct-quick button {
|
|
2317
|
+
color: var(--dql-app-muted);
|
|
2318
|
+
font-size: 11.5px;
|
|
2319
|
+
padding: 7px 9px;
|
|
2320
|
+
white-space: nowrap;
|
|
2321
|
+
width: 100%;
|
|
2322
|
+
min-width: 0;
|
|
2323
|
+
overflow: hidden;
|
|
2324
|
+
text-overflow: ellipsis;
|
|
2325
|
+
}
|
|
2326
|
+
|
|
2327
|
+
.dql-app-copilot-welcome {
|
|
2328
|
+
margin: 2px 16px 0;
|
|
2329
|
+
border: 1px dashed var(--dql-app-line-2);
|
|
2330
|
+
border-radius: 12px;
|
|
2331
|
+
background: var(--dql-app-surface);
|
|
2332
|
+
padding: 12px;
|
|
2333
|
+
display: grid;
|
|
2334
|
+
gap: 6px;
|
|
2335
|
+
}
|
|
2336
|
+
|
|
2337
|
+
.dql-app-user-message {
|
|
2338
|
+
align-self: flex-end;
|
|
2339
|
+
max-width: calc(100% - 42px);
|
|
2340
|
+
margin: 0 16px 0 42px;
|
|
2341
|
+
border: 1px solid rgba(79, 99, 215, 0.28);
|
|
2342
|
+
border-radius: 14px 14px 5px 14px;
|
|
2343
|
+
background: var(--dql-app-accent);
|
|
2344
|
+
color: #fff;
|
|
2345
|
+
padding: 10px 12px;
|
|
2346
|
+
box-shadow: 0 10px 28px rgba(79, 99, 215, 0.16);
|
|
2347
|
+
}
|
|
2348
|
+
|
|
2349
|
+
.dql-app-user-message span {
|
|
2350
|
+
display: block;
|
|
2351
|
+
font: 850 9.5px var(--font-mono);
|
|
2352
|
+
letter-spacing: 0;
|
|
2353
|
+
text-transform: uppercase;
|
|
2354
|
+
opacity: .72;
|
|
2355
|
+
}
|
|
2356
|
+
|
|
2357
|
+
.dql-app-user-message p {
|
|
2358
|
+
margin: 4px 0 0;
|
|
2359
|
+
color: inherit;
|
|
2360
|
+
font-size: 12.5px;
|
|
2361
|
+
line-height: 1.45;
|
|
2362
|
+
overflow-wrap: anywhere;
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2365
|
+
.dql-app-copilot-welcome span {
|
|
2366
|
+
color: var(--dql-app-accent);
|
|
2367
|
+
font: 850 10.5px var(--font-mono);
|
|
2368
|
+
letter-spacing: 0;
|
|
2369
|
+
text-transform: uppercase;
|
|
2370
|
+
}
|
|
2371
|
+
|
|
2372
|
+
.dql-app-copilot-welcome p {
|
|
2373
|
+
margin: 0;
|
|
2374
|
+
color: var(--dql-app-muted);
|
|
2375
|
+
font-size: 12.5px;
|
|
2376
|
+
line-height: 1.48;
|
|
2377
|
+
}
|
|
2378
|
+
|
|
2379
|
+
.dql-app-direct-answer {
|
|
2380
|
+
border: 1px solid var(--dql-app-line);
|
|
2381
|
+
border-radius: 14px 14px 14px 5px;
|
|
2382
|
+
background: var(--dql-app-surface);
|
|
2383
|
+
margin: 0 42px 0 16px;
|
|
2384
|
+
padding: 12px;
|
|
2385
|
+
box-shadow: 0 10px 30px rgba(15, 23, 42, 0.05);
|
|
2386
|
+
}
|
|
2387
|
+
|
|
2388
|
+
.dql-app-direct-answer > div:first-child {
|
|
2389
|
+
display: flex;
|
|
2390
|
+
align-items: center;
|
|
2391
|
+
gap: 8px;
|
|
2392
|
+
margin-bottom: 6px;
|
|
2393
|
+
}
|
|
2394
|
+
|
|
2395
|
+
.dql-app-direct-answer p {
|
|
2396
|
+
margin: 0;
|
|
2397
|
+
color: var(--dql-app-ink);
|
|
2398
|
+
font-size: 12.5px;
|
|
2399
|
+
line-height: 1.45;
|
|
2400
|
+
}
|
|
2401
|
+
|
|
2402
|
+
.dql-app-direct-followups {
|
|
2403
|
+
display: flex;
|
|
2404
|
+
flex-wrap: wrap;
|
|
2405
|
+
gap: 6px;
|
|
2406
|
+
margin-top: 8px;
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
.dql-app-direct-followups span,
|
|
2410
|
+
.dql-app-direct-followups button {
|
|
2411
|
+
border: 1px solid var(--dql-app-line);
|
|
2412
|
+
border-radius: 999px;
|
|
2413
|
+
padding: 3px 7px;
|
|
2414
|
+
color: var(--dql-app-muted);
|
|
2415
|
+
font-size: 10.5px;
|
|
2416
|
+
background: var(--dql-app-surface);
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
.dql-app-direct-followups button {
|
|
2420
|
+
cursor: pointer;
|
|
2421
|
+
font-weight: 750;
|
|
2422
|
+
}
|
|
2423
|
+
|
|
2424
|
+
.dql-app-direct-followups button:hover {
|
|
2425
|
+
color: var(--dql-app-accent);
|
|
2426
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
2427
|
+
background: var(--dql-app-accent-soft);
|
|
2428
|
+
}
|
|
2429
|
+
|
|
2430
|
+
.dql-app-copilot-action-grid {
|
|
2431
|
+
display: grid;
|
|
2432
|
+
gap: 7px;
|
|
2433
|
+
margin-top: 10px;
|
|
2434
|
+
}
|
|
2435
|
+
|
|
2436
|
+
.dql-app-copilot-next-step {
|
|
2437
|
+
display: grid;
|
|
2438
|
+
gap: 8px;
|
|
2439
|
+
margin-top: 12px;
|
|
2440
|
+
border: 1px solid rgba(79, 99, 215, 0.18);
|
|
2441
|
+
border-radius: 11px;
|
|
2442
|
+
background: color-mix(in srgb, var(--dql-app-accent-soft) 58%, var(--dql-app-surface));
|
|
2443
|
+
padding: 10px;
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
.dql-app-copilot-next-step > span {
|
|
2447
|
+
color: var(--dql-app-accent);
|
|
2448
|
+
font: 850 10.5px var(--font-mono);
|
|
2449
|
+
text-transform: uppercase;
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
.dql-app-copilot-next-step p {
|
|
2453
|
+
margin: 0;
|
|
2454
|
+
color: var(--dql-app-muted);
|
|
2455
|
+
font-size: 12px;
|
|
2456
|
+
line-height: 1.45;
|
|
2457
|
+
}
|
|
2458
|
+
|
|
2459
|
+
.dql-app-analysis-handoff {
|
|
2460
|
+
margin: 0 16px;
|
|
2461
|
+
border: 1px solid rgba(22, 163, 74, 0.2);
|
|
2462
|
+
border-radius: 12px;
|
|
2463
|
+
background: rgba(22, 163, 74, 0.06);
|
|
2464
|
+
padding: 12px;
|
|
2465
|
+
display: grid;
|
|
2466
|
+
gap: 7px;
|
|
2467
|
+
}
|
|
2468
|
+
|
|
2469
|
+
.dql-app-analysis-handoff > span {
|
|
2470
|
+
color: #15803d;
|
|
2471
|
+
font: 850 10.5px var(--font-mono);
|
|
2472
|
+
letter-spacing: .02em;
|
|
2473
|
+
text-transform: uppercase;
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
.dql-app-analysis-handoff p {
|
|
2477
|
+
margin: 0;
|
|
2478
|
+
color: var(--dql-app-ink);
|
|
2479
|
+
font-size: 12.5px;
|
|
2480
|
+
line-height: 1.45;
|
|
2481
|
+
}
|
|
2482
|
+
|
|
2483
|
+
.dql-app-analysis-handoff small {
|
|
2484
|
+
color: var(--dql-app-muted);
|
|
2485
|
+
font-size: 12px;
|
|
2486
|
+
line-height: 1.45;
|
|
2487
|
+
}
|
|
2488
|
+
|
|
2489
|
+
.dql-app-analysis-handoff > div {
|
|
2490
|
+
display: flex;
|
|
2491
|
+
flex-wrap: wrap;
|
|
2492
|
+
gap: 7px;
|
|
2493
|
+
margin-top: 2px;
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
.dql-app-context-composer {
|
|
2497
|
+
margin: 0 16px;
|
|
2498
|
+
border: 1px solid rgba(79, 99, 215, 0.28);
|
|
2499
|
+
border-radius: 14px;
|
|
2500
|
+
background: var(--dql-app-surface);
|
|
2501
|
+
box-shadow: 0 16px 44px rgba(79, 99, 215, 0.11);
|
|
2502
|
+
padding: 12px;
|
|
2503
|
+
display: grid;
|
|
2504
|
+
gap: 9px;
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2507
|
+
.dql-app-context-composer-head {
|
|
2508
|
+
display: flex;
|
|
2509
|
+
align-items: center;
|
|
2510
|
+
justify-content: space-between;
|
|
2511
|
+
gap: 8px;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
.dql-app-context-composer h4 {
|
|
2515
|
+
margin: 0;
|
|
2516
|
+
color: var(--dql-app-ink);
|
|
2517
|
+
font-size: 14px;
|
|
2518
|
+
line-height: 1.25;
|
|
2519
|
+
}
|
|
2520
|
+
|
|
2521
|
+
.dql-app-context-composer p {
|
|
2522
|
+
margin: 0;
|
|
2523
|
+
color: var(--dql-app-muted);
|
|
2524
|
+
font-size: 12px;
|
|
2525
|
+
line-height: 1.45;
|
|
2526
|
+
}
|
|
2527
|
+
|
|
2528
|
+
.dql-app-context-composer textarea {
|
|
2529
|
+
width: 100%;
|
|
2530
|
+
min-height: 158px;
|
|
2531
|
+
resize: vertical;
|
|
2532
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2533
|
+
border-radius: 8px;
|
|
2534
|
+
background: var(--dql-app-control);
|
|
2535
|
+
color: var(--dql-app-ink);
|
|
2536
|
+
outline: 0;
|
|
2537
|
+
padding: 10px;
|
|
2538
|
+
font: 12.5px/1.5 var(--font-ui);
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2541
|
+
.dql-app-context-composer textarea:focus {
|
|
2542
|
+
border-color: rgba(79, 99, 215, 0.54);
|
|
2543
|
+
box-shadow: 0 0 0 3px rgba(79, 99, 215, 0.1);
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
.dql-app-context-chips {
|
|
2547
|
+
display: flex;
|
|
2548
|
+
flex-wrap: wrap;
|
|
2549
|
+
gap: 6px;
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
.dql-app-context-chips span {
|
|
2553
|
+
min-width: 0;
|
|
2554
|
+
max-width: 100%;
|
|
2555
|
+
border: 1px solid var(--dql-app-line);
|
|
2556
|
+
border-radius: 999px;
|
|
2557
|
+
background: var(--dql-app-surface-muted);
|
|
2558
|
+
color: var(--dql-app-muted);
|
|
2559
|
+
padding: 4px 8px;
|
|
2560
|
+
font: 750 10px var(--font-ui);
|
|
2561
|
+
overflow: hidden;
|
|
2562
|
+
text-overflow: ellipsis;
|
|
2563
|
+
white-space: nowrap;
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
.dql-app-context-actions {
|
|
2567
|
+
display: flex;
|
|
2568
|
+
justify-content: flex-end;
|
|
2569
|
+
gap: 8px;
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
.dql-app-copilot-hero {
|
|
2573
|
+
padding: 12px 14px 10px;
|
|
2574
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2575
|
+
background: linear-gradient(180deg, var(--dql-app-surface), var(--dql-app-surface-muted));
|
|
2576
|
+
}
|
|
2577
|
+
|
|
2578
|
+
.dql-app-copilot-kicker {
|
|
2579
|
+
display: inline-flex;
|
|
2580
|
+
align-items: center;
|
|
2581
|
+
gap: 7px;
|
|
2582
|
+
color: var(--dql-app-muted);
|
|
2583
|
+
font: 750 10px var(--font-mono);
|
|
2584
|
+
letter-spacing: 0;
|
|
2585
|
+
text-transform: uppercase;
|
|
2586
|
+
}
|
|
2587
|
+
|
|
2588
|
+
.dql-app-copilot-kicker svg { color: var(--dql-app-accent); }
|
|
2589
|
+
.dql-app-copilot-hero h3 {
|
|
2590
|
+
margin: 6px 0 0;
|
|
2591
|
+
color: var(--dql-app-ink);
|
|
2592
|
+
font-size: 19px;
|
|
2593
|
+
line-height: 1.15;
|
|
2594
|
+
}
|
|
2595
|
+
|
|
2596
|
+
.dql-app-copilot-hero p {
|
|
2597
|
+
margin: 6px 0 0;
|
|
2598
|
+
color: var(--dql-app-muted);
|
|
2599
|
+
font-size: 11.5px;
|
|
2600
|
+
line-height: 1.42;
|
|
2601
|
+
display: -webkit-box;
|
|
2602
|
+
-webkit-line-clamp: 2;
|
|
2603
|
+
-webkit-box-orient: vertical;
|
|
2604
|
+
overflow: hidden;
|
|
2605
|
+
}
|
|
2606
|
+
|
|
2607
|
+
.dql-app-copilot-decision {
|
|
2608
|
+
margin-top: 8px;
|
|
2609
|
+
border: 1px solid var(--dql-app-line);
|
|
2610
|
+
border-radius: 7px;
|
|
2611
|
+
background: var(--dql-app-surface);
|
|
2612
|
+
padding: 7px 9px;
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2615
|
+
.dql-app-copilot-decision small,
|
|
2616
|
+
.dql-app-copilot-facts small {
|
|
2617
|
+
display: block;
|
|
2618
|
+
color: var(--dql-app-muted);
|
|
2619
|
+
font: 750 9px var(--font-mono);
|
|
2620
|
+
letter-spacing: 0;
|
|
2621
|
+
text-transform: uppercase;
|
|
2622
|
+
}
|
|
2623
|
+
|
|
2624
|
+
.dql-app-copilot-decision b {
|
|
2625
|
+
display: block;
|
|
2626
|
+
margin-top: 3px;
|
|
2627
|
+
color: var(--dql-app-ink);
|
|
2628
|
+
font-size: 11.5px;
|
|
2629
|
+
line-height: 1.32;
|
|
2630
|
+
}
|
|
2631
|
+
|
|
2632
|
+
.dql-app-copilot-facts {
|
|
2633
|
+
display: grid;
|
|
2634
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2635
|
+
gap: 6px;
|
|
2636
|
+
margin-top: 7px;
|
|
2637
|
+
}
|
|
2638
|
+
|
|
2639
|
+
.dql-app-copilot-facts span {
|
|
2640
|
+
min-width: 0;
|
|
2641
|
+
border-radius: 7px;
|
|
2642
|
+
background: var(--dql-app-control);
|
|
2643
|
+
padding: 6px 8px;
|
|
2644
|
+
}
|
|
2645
|
+
|
|
2646
|
+
.dql-app-copilot-facts b {
|
|
2647
|
+
display: block;
|
|
2648
|
+
margin-top: 2px;
|
|
2649
|
+
color: var(--dql-app-ink);
|
|
2650
|
+
font-size: 10.5px;
|
|
2651
|
+
line-height: 1.25;
|
|
2652
|
+
overflow: hidden;
|
|
2653
|
+
text-overflow: ellipsis;
|
|
2654
|
+
white-space: nowrap;
|
|
2655
|
+
}
|
|
2656
|
+
|
|
2657
|
+
.dql-app-copilot-chat {
|
|
2658
|
+
flex: 1;
|
|
2659
|
+
min-height: 210px;
|
|
2660
|
+
padding: 9px 12px 12px;
|
|
2661
|
+
}
|
|
2662
|
+
|
|
2663
|
+
.dql-app-explain-head { padding: 14px 16px 12px; border-bottom: 1px solid var(--dql-app-line); }
|
|
2664
|
+
.dql-app-explain-head span,
|
|
2665
|
+
.dql-app-ex-label {
|
|
2666
|
+
color: var(--dql-app-muted);
|
|
2667
|
+
font: 700 9px var(--font-mono);
|
|
2668
|
+
letter-spacing: 0;
|
|
2669
|
+
text-transform: uppercase;
|
|
2670
|
+
}
|
|
2671
|
+
|
|
2672
|
+
.dql-app-explain-head h3 { margin: 3px 0 0; font-size: 17px; }
|
|
2673
|
+
.dql-app-explain-head p { margin: 5px 0 0; color: var(--dql-app-muted); font-size: 11.5px; line-height: 1.45; }
|
|
2674
|
+
.dql-app-ex-section { padding: 13px 16px; border-bottom: 1px solid var(--dql-app-line); }
|
|
2675
|
+
.dql-app-ex-section.compact { padding-top: 11px; padding-bottom: 11px; }
|
|
2676
|
+
.dql-app-copilot-controls {
|
|
2677
|
+
padding: 8px 12px;
|
|
2678
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2681
|
+
.dql-app-copilot-focus {
|
|
2682
|
+
display: grid;
|
|
2683
|
+
gap: 5px;
|
|
2684
|
+
}
|
|
2685
|
+
|
|
2686
|
+
.dql-app-copilot-focus span {
|
|
2687
|
+
color: var(--dql-app-muted);
|
|
2688
|
+
font: 700 9px var(--font-mono);
|
|
2689
|
+
letter-spacing: 0;
|
|
2690
|
+
text-transform: uppercase;
|
|
2691
|
+
}
|
|
2692
|
+
|
|
2693
|
+
.dql-app-copilot-focus select {
|
|
2694
|
+
width: 100%;
|
|
2695
|
+
min-width: 0;
|
|
2696
|
+
height: 34px;
|
|
2697
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2698
|
+
border-radius: 7px;
|
|
2699
|
+
background: var(--dql-app-control);
|
|
2700
|
+
color: var(--dql-app-ink);
|
|
2701
|
+
padding: 0 10px;
|
|
2702
|
+
font: 800 12px var(--font-ui);
|
|
2703
|
+
}
|
|
2704
|
+
|
|
2705
|
+
.dql-app-copilot-empty {
|
|
2706
|
+
margin-top: 7px;
|
|
2707
|
+
color: var(--dql-app-faint);
|
|
2708
|
+
font-size: 11px;
|
|
2709
|
+
}
|
|
2710
|
+
|
|
2711
|
+
.dql-app-copilot-brief {
|
|
2712
|
+
display: flex;
|
|
2713
|
+
align-items: flex-start;
|
|
2714
|
+
gap: 10px;
|
|
2715
|
+
padding: 9px 12px;
|
|
2716
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
.dql-app-copilot-brief > div {
|
|
2720
|
+
min-width: 0;
|
|
2721
|
+
flex: 1;
|
|
2722
|
+
}
|
|
2723
|
+
|
|
2724
|
+
.dql-app-copilot-brief span {
|
|
2725
|
+
display: inline-flex;
|
|
2726
|
+
color: var(--dql-app-green);
|
|
2727
|
+
font: 750 9px var(--font-mono);
|
|
2728
|
+
letter-spacing: 0;
|
|
2729
|
+
text-transform: uppercase;
|
|
2730
|
+
}
|
|
2731
|
+
|
|
2732
|
+
.dql-app-copilot-brief b {
|
|
2733
|
+
display: block;
|
|
2734
|
+
margin-top: 4px;
|
|
2735
|
+
color: var(--dql-app-ink);
|
|
2736
|
+
font-size: 13px;
|
|
2737
|
+
line-height: 1.25;
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
.dql-app-copilot-brief p {
|
|
2741
|
+
margin: 4px 0 0;
|
|
2742
|
+
color: var(--dql-app-muted);
|
|
2743
|
+
font-size: 11.5px;
|
|
2744
|
+
line-height: 1.35;
|
|
2745
|
+
}
|
|
2746
|
+
|
|
2747
|
+
.dql-app-copilot-result-pill {
|
|
2748
|
+
flex: none;
|
|
2749
|
+
border-radius: 999px;
|
|
2750
|
+
border: 1px solid rgba(22, 163, 74, 0.24);
|
|
2751
|
+
background: var(--dql-app-green-soft);
|
|
2752
|
+
color: var(--dql-app-green) !important;
|
|
2753
|
+
padding: 4px 8px;
|
|
2754
|
+
white-space: nowrap;
|
|
2755
|
+
}
|
|
2756
|
+
|
|
2757
|
+
.dql-app-copilot-prompts {
|
|
2758
|
+
display: flex;
|
|
2759
|
+
gap: 7px;
|
|
2760
|
+
flex-wrap: wrap;
|
|
2761
|
+
padding: 8px 12px;
|
|
2762
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2763
|
+
}
|
|
2764
|
+
|
|
2765
|
+
.dql-app-copilot-prompts button {
|
|
2766
|
+
min-width: 0;
|
|
2767
|
+
height: 31px;
|
|
2768
|
+
border: 1px solid var(--dql-app-line);
|
|
2769
|
+
border-radius: 999px;
|
|
2770
|
+
background: var(--dql-app-surface);
|
|
2771
|
+
color: var(--dql-app-muted);
|
|
2772
|
+
padding: 0 9px;
|
|
2773
|
+
display: inline-flex;
|
|
2774
|
+
align-items: center;
|
|
2775
|
+
gap: 5px;
|
|
2776
|
+
cursor: pointer;
|
|
2777
|
+
font: 800 10.5px var(--font-ui);
|
|
2778
|
+
}
|
|
2779
|
+
|
|
2780
|
+
.dql-app-copilot-prompts button:hover {
|
|
2781
|
+
color: var(--dql-app-accent);
|
|
2782
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
2783
|
+
background: var(--dql-app-accent-soft);
|
|
2784
|
+
}
|
|
2785
|
+
|
|
2786
|
+
.dql-app-copilot-prompts svg {
|
|
2787
|
+
flex: 0 0 auto;
|
|
2788
|
+
}
|
|
2789
|
+
|
|
2790
|
+
.dql-app-copilot-evidence {
|
|
2791
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
.dql-app-copilot-evidence summary {
|
|
2795
|
+
min-height: 36px;
|
|
2796
|
+
display: flex;
|
|
2797
|
+
align-items: center;
|
|
2798
|
+
gap: 8px;
|
|
2799
|
+
padding: 0 12px;
|
|
2800
|
+
cursor: pointer;
|
|
2801
|
+
color: var(--dql-app-muted);
|
|
2802
|
+
font: 800 11px var(--font-ui);
|
|
2803
|
+
list-style: none;
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
.dql-app-copilot-evidence summary::-webkit-details-marker { display: none; }
|
|
2807
|
+
.dql-app-copilot-evidence summary span {
|
|
2808
|
+
display: inline-flex;
|
|
2809
|
+
align-items: center;
|
|
2810
|
+
gap: 6px;
|
|
2811
|
+
min-width: 0;
|
|
2812
|
+
}
|
|
2813
|
+
|
|
2814
|
+
.dql-app-copilot-evidence summary small {
|
|
2815
|
+
margin-left: auto;
|
|
2816
|
+
min-width: 0;
|
|
2817
|
+
max-width: 160px;
|
|
2818
|
+
color: var(--dql-app-faint);
|
|
2819
|
+
font: 700 10px var(--font-mono);
|
|
2820
|
+
overflow: hidden;
|
|
2821
|
+
text-overflow: ellipsis;
|
|
2822
|
+
white-space: nowrap;
|
|
2823
|
+
}
|
|
2824
|
+
|
|
2825
|
+
.dql-app-copilot-evidence > div {
|
|
2826
|
+
display: grid;
|
|
2827
|
+
gap: 6px;
|
|
2828
|
+
padding: 0 12px 11px;
|
|
2829
|
+
}
|
|
2830
|
+
|
|
2831
|
+
.dql-app-keyvalue-inline {
|
|
2832
|
+
display: grid;
|
|
2833
|
+
grid-template-columns: 92px minmax(0, 1fr);
|
|
2834
|
+
gap: 8px;
|
|
2835
|
+
align-items: baseline;
|
|
2836
|
+
font-size: 11px;
|
|
2837
|
+
}
|
|
2838
|
+
|
|
2839
|
+
.dql-app-keyvalue-inline span {
|
|
2840
|
+
color: var(--dql-app-faint);
|
|
2841
|
+
font-family: var(--font-mono);
|
|
2842
|
+
}
|
|
2843
|
+
|
|
2844
|
+
.dql-app-keyvalue-inline b {
|
|
2845
|
+
min-width: 0;
|
|
2846
|
+
color: var(--dql-app-muted);
|
|
2847
|
+
font-weight: 700;
|
|
2848
|
+
overflow: hidden;
|
|
2849
|
+
text-overflow: ellipsis;
|
|
2850
|
+
white-space: nowrap;
|
|
2851
|
+
}
|
|
2852
|
+
.dql-app-block-cite {
|
|
2853
|
+
display: flex;
|
|
2854
|
+
align-items: center;
|
|
2855
|
+
gap: 9px;
|
|
2856
|
+
padding: 5px 0;
|
|
2857
|
+
font-size: 11.5px;
|
|
2858
|
+
}
|
|
2859
|
+
|
|
2860
|
+
.dql-app-block-cite span { flex: 1; min-width: 0; font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2861
|
+
.dql-app-block-cite b { color: var(--dql-app-faint); font: 10px var(--font-mono); }
|
|
2862
|
+
.dql-app-flow { margin-top: 8px; }
|
|
2863
|
+
.dql-app-flow-node {
|
|
2864
|
+
display: flex;
|
|
2865
|
+
align-items: center;
|
|
2866
|
+
gap: 8px;
|
|
2867
|
+
padding: 5px 0;
|
|
2868
|
+
font-size: 11.5px;
|
|
2869
|
+
}
|
|
2870
|
+
|
|
2871
|
+
.dql-app-flow-node span {
|
|
2872
|
+
width: 28px;
|
|
2873
|
+
height: 23px;
|
|
2874
|
+
border-radius: 6px;
|
|
2875
|
+
background: var(--dql-app-accent-soft);
|
|
2876
|
+
color: var(--dql-app-accent);
|
|
2877
|
+
display: inline-flex;
|
|
2878
|
+
align-items: center;
|
|
2879
|
+
justify-content: center;
|
|
2880
|
+
font: 700 8px var(--font-mono);
|
|
2881
|
+
}
|
|
2882
|
+
|
|
2883
|
+
.dql-app-flow-node b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2884
|
+
.dql-app-flow-node small { color: var(--dql-app-faint); font: 9px var(--font-mono); }
|
|
2885
|
+
.dql-app-flow i {
|
|
2886
|
+
display: block;
|
|
2887
|
+
width: 2px;
|
|
2888
|
+
height: 9px;
|
|
2889
|
+
background: var(--dql-app-accent);
|
|
2890
|
+
margin-left: 13px;
|
|
2891
|
+
}
|
|
2892
|
+
|
|
2893
|
+
.dql-app-suggests { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 9px; }
|
|
2894
|
+
.dql-app-focus-list {
|
|
2895
|
+
display: grid;
|
|
2896
|
+
gap: 6px;
|
|
2897
|
+
margin-top: 8px;
|
|
2898
|
+
}
|
|
2899
|
+
|
|
2900
|
+
.dql-app-focus-list > span {
|
|
2901
|
+
color: var(--dql-app-faint);
|
|
2902
|
+
font-size: 12px;
|
|
2903
|
+
}
|
|
2904
|
+
|
|
2905
|
+
.dql-app-focus-list button {
|
|
2906
|
+
min-width: 0;
|
|
2907
|
+
min-height: 34px;
|
|
2908
|
+
border: 1px solid var(--dql-app-line);
|
|
2909
|
+
border-radius: 8px;
|
|
2910
|
+
background: var(--dql-app-surface);
|
|
2911
|
+
color: var(--dql-app-muted);
|
|
2912
|
+
display: flex;
|
|
2913
|
+
align-items: center;
|
|
2914
|
+
gap: 8px;
|
|
2915
|
+
padding: 7px 8px;
|
|
2916
|
+
cursor: pointer;
|
|
2917
|
+
text-align: left;
|
|
2918
|
+
}
|
|
2919
|
+
|
|
2920
|
+
.dql-app-focus-list button.on {
|
|
2921
|
+
color: var(--dql-app-ink);
|
|
2922
|
+
border-color: rgba(79, 99, 215, 0.42);
|
|
2923
|
+
background: var(--dql-app-accent-soft);
|
|
2924
|
+
}
|
|
2925
|
+
|
|
2926
|
+
.dql-app-focus-list button svg {
|
|
2927
|
+
flex: 0 0 auto;
|
|
2928
|
+
color: var(--dql-app-accent);
|
|
2929
|
+
}
|
|
2930
|
+
|
|
2931
|
+
.dql-app-focus-list button span {
|
|
2932
|
+
flex: 1;
|
|
2933
|
+
min-width: 0;
|
|
2934
|
+
overflow: hidden;
|
|
2935
|
+
text-overflow: ellipsis;
|
|
2936
|
+
white-space: nowrap;
|
|
2937
|
+
font: 800 11.5px var(--font-ui);
|
|
2938
|
+
}
|
|
2939
|
+
|
|
2940
|
+
.dql-app-focus-list button b {
|
|
2941
|
+
color: var(--dql-app-faint);
|
|
2942
|
+
font: 700 8.5px var(--font-mono);
|
|
2943
|
+
text-transform: uppercase;
|
|
2944
|
+
}
|
|
2945
|
+
|
|
2946
|
+
.dql-app-rail-title {
|
|
2947
|
+
display: flex;
|
|
2948
|
+
align-items: center;
|
|
2949
|
+
gap: 8px;
|
|
2950
|
+
margin-bottom: 8px;
|
|
2951
|
+
}
|
|
2952
|
+
|
|
2953
|
+
.dql-app-rail-title > span { flex: 1; }
|
|
2954
|
+
|
|
2955
|
+
.dql-app-rail-title button {
|
|
2956
|
+
height: 26px;
|
|
2957
|
+
border: 1px solid var(--dql-app-line);
|
|
2958
|
+
border-radius: 6px;
|
|
2959
|
+
background: var(--dql-app-surface);
|
|
2960
|
+
color: var(--dql-app-muted);
|
|
2961
|
+
display: inline-flex;
|
|
2962
|
+
align-items: center;
|
|
2963
|
+
gap: 5px;
|
|
2964
|
+
padding: 0 8px;
|
|
2965
|
+
cursor: pointer;
|
|
2966
|
+
font: 800 10.5px var(--font-ui);
|
|
2967
|
+
}
|
|
2968
|
+
|
|
2969
|
+
.dql-app-drilldown-grid {
|
|
2970
|
+
display: grid;
|
|
2971
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
2972
|
+
gap: 7px;
|
|
2973
|
+
}
|
|
2974
|
+
|
|
2975
|
+
.dql-app-drilldown-grid button {
|
|
2976
|
+
min-width: 0;
|
|
2977
|
+
border: 1px solid var(--dql-app-line);
|
|
2978
|
+
border-radius: 8px;
|
|
2979
|
+
background: var(--dql-app-surface);
|
|
2980
|
+
color: var(--dql-app-muted);
|
|
2981
|
+
padding: 8px 6px;
|
|
2982
|
+
display: grid;
|
|
2983
|
+
justify-items: center;
|
|
2984
|
+
gap: 5px;
|
|
2985
|
+
cursor: pointer;
|
|
2986
|
+
font: 800 10.5px var(--font-ui);
|
|
2987
|
+
}
|
|
2988
|
+
|
|
2989
|
+
.dql-app-drilldown-grid button:hover {
|
|
2990
|
+
color: var(--dql-app-accent);
|
|
2991
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
2992
|
+
background: var(--dql-app-accent-soft);
|
|
2993
|
+
}
|
|
2994
|
+
|
|
2995
|
+
.dql-app-rail-chat {
|
|
2996
|
+
height: 100%;
|
|
2997
|
+
min-height: 0;
|
|
2998
|
+
border: 1px solid var(--dql-app-line-2);
|
|
2999
|
+
border-radius: 8px;
|
|
3000
|
+
overflow: hidden;
|
|
3001
|
+
background: var(--dql-app-surface);
|
|
3002
|
+
}
|
|
3003
|
+
|
|
3004
|
+
.dql-app-rail-chat.expanded {
|
|
3005
|
+
position: fixed;
|
|
3006
|
+
z-index: 80;
|
|
3007
|
+
right: 24px;
|
|
3008
|
+
top: 76px;
|
|
3009
|
+
bottom: 24px;
|
|
3010
|
+
width: min(760px, calc(100vw - 80px));
|
|
3011
|
+
height: auto;
|
|
3012
|
+
box-shadow: 0 18px 60px rgba(15, 23, 42, 0.24);
|
|
3013
|
+
}
|
|
3014
|
+
|
|
3015
|
+
.dql-app-gapcard {
|
|
3016
|
+
margin: 12px;
|
|
3017
|
+
border-radius: 7px;
|
|
3018
|
+
background: var(--dql-app-orange-soft);
|
|
3019
|
+
padding: 11px 12px;
|
|
3020
|
+
}
|
|
3021
|
+
|
|
3022
|
+
.dql-app-gapcard p { margin: 6px 0 0; color: var(--dql-app-muted); font-size: 11.5px; line-height: 1.45; }
|
|
3023
|
+
.dql-app-research-shell {
|
|
3024
|
+
display: grid;
|
|
3025
|
+
gap: 14px;
|
|
3026
|
+
min-height: 620px;
|
|
3027
|
+
}
|
|
3028
|
+
|
|
3029
|
+
.dql-app-research-shell.history-open {
|
|
3030
|
+
grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
|
|
3031
|
+
}
|
|
3032
|
+
|
|
3033
|
+
.dql-app-research-shell.history-collapsed {
|
|
3034
|
+
grid-template-columns: minmax(0, 1fr);
|
|
3035
|
+
}
|
|
3036
|
+
|
|
3037
|
+
.dql-app-research-shell.history-collapsed .dql-app-research-list {
|
|
3038
|
+
display: none;
|
|
3039
|
+
}
|
|
3040
|
+
|
|
3041
|
+
.dql-app-research-list {
|
|
3042
|
+
border: 1px solid var(--dql-app-line);
|
|
3043
|
+
border-radius: 8px;
|
|
3044
|
+
background: var(--dql-app-surface);
|
|
3045
|
+
}
|
|
3046
|
+
|
|
3047
|
+
.dql-app-research-list {
|
|
3048
|
+
padding: 12px;
|
|
3049
|
+
display: flex;
|
|
3050
|
+
flex-direction: column;
|
|
3051
|
+
gap: 10px;
|
|
3052
|
+
min-width: 0;
|
|
3053
|
+
}
|
|
3054
|
+
|
|
3055
|
+
.dql-app-research-detail {
|
|
3056
|
+
padding: 0;
|
|
3057
|
+
min-width: 0;
|
|
3058
|
+
overflow: auto;
|
|
3059
|
+
background: transparent;
|
|
3060
|
+
}
|
|
3061
|
+
|
|
3062
|
+
.dql-app-research-head,
|
|
3063
|
+
.dql-app-research-titlebar,
|
|
3064
|
+
.dql-app-research-evidence-head {
|
|
3065
|
+
display: flex;
|
|
3066
|
+
align-items: center;
|
|
3067
|
+
justify-content: space-between;
|
|
3068
|
+
gap: 12px;
|
|
3069
|
+
}
|
|
3070
|
+
|
|
3071
|
+
.dql-app-research-head span {
|
|
3072
|
+
display: inline-flex;
|
|
3073
|
+
align-items: center;
|
|
3074
|
+
gap: 7px;
|
|
3075
|
+
font-weight: 850;
|
|
3076
|
+
}
|
|
3077
|
+
|
|
3078
|
+
.dql-app-research-head > div {
|
|
3079
|
+
display: inline-flex;
|
|
3080
|
+
align-items: center;
|
|
3081
|
+
gap: 7px;
|
|
3082
|
+
}
|
|
3083
|
+
|
|
3084
|
+
.dql-app-research-head b {
|
|
3085
|
+
color: var(--dql-app-faint);
|
|
3086
|
+
font-family: var(--font-mono);
|
|
3087
|
+
font-size: 10px;
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
.dql-app-research-head button {
|
|
3091
|
+
height: 26px;
|
|
3092
|
+
border: 1px solid var(--dql-app-line);
|
|
3093
|
+
border-radius: 999px;
|
|
3094
|
+
background: var(--dql-app-surface-muted);
|
|
3095
|
+
color: var(--dql-app-muted);
|
|
3096
|
+
padding: 0 9px;
|
|
3097
|
+
cursor: pointer;
|
|
3098
|
+
font: 800 10px var(--font-ui);
|
|
3099
|
+
}
|
|
3100
|
+
|
|
3101
|
+
.dql-app-research-head button:hover {
|
|
3102
|
+
color: var(--dql-app-accent);
|
|
3103
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
3104
|
+
background: var(--dql-app-accent-soft);
|
|
3105
|
+
}
|
|
3106
|
+
|
|
3107
|
+
.dql-app-research-new {
|
|
3108
|
+
height: 32px;
|
|
3109
|
+
border: 1px solid var(--dql-app-line);
|
|
3110
|
+
border-radius: 7px;
|
|
3111
|
+
background: var(--dql-app-control);
|
|
3112
|
+
color: var(--dql-app-ink);
|
|
3113
|
+
display: inline-flex;
|
|
3114
|
+
align-items: center;
|
|
3115
|
+
justify-content: center;
|
|
3116
|
+
gap: 7px;
|
|
3117
|
+
font: 800 12px var(--font-ui);
|
|
3118
|
+
cursor: pointer;
|
|
3119
|
+
}
|
|
3120
|
+
|
|
3121
|
+
.dql-app-research-new:disabled { opacity: 0.65; cursor: not-allowed; }
|
|
3122
|
+
.dql-app-research-items { display: grid; gap: 6px; overflow: auto; }
|
|
3123
|
+
.dql-app-research-group-label {
|
|
3124
|
+
margin: 4px 2px 1px;
|
|
3125
|
+
color: var(--dql-app-faint);
|
|
3126
|
+
font: 850 9.5px var(--font-mono);
|
|
3127
|
+
letter-spacing: 0;
|
|
3128
|
+
text-transform: uppercase;
|
|
3129
|
+
}
|
|
3130
|
+
.dql-app-research-items button {
|
|
3131
|
+
border: 1px solid transparent;
|
|
3132
|
+
border-radius: 7px;
|
|
3133
|
+
background: transparent;
|
|
3134
|
+
color: var(--dql-app-ink);
|
|
3135
|
+
text-align: left;
|
|
3136
|
+
padding: 9px;
|
|
3137
|
+
cursor: pointer;
|
|
3138
|
+
min-width: 0;
|
|
3139
|
+
}
|
|
3140
|
+
|
|
3141
|
+
.dql-app-research-items button.on,
|
|
3142
|
+
.dql-app-research-items button:hover {
|
|
3143
|
+
border-color: var(--dql-app-line);
|
|
3144
|
+
background: var(--dql-app-control);
|
|
3145
|
+
}
|
|
3146
|
+
|
|
3147
|
+
.dql-app-research-items button.status-error:not(.on) {
|
|
3148
|
+
color: var(--dql-app-muted);
|
|
3149
|
+
opacity: 0.72;
|
|
3150
|
+
}
|
|
3151
|
+
|
|
3152
|
+
.dql-app-research-items button.status-error small {
|
|
3153
|
+
color: var(--dql-app-orange);
|
|
3154
|
+
}
|
|
3155
|
+
|
|
3156
|
+
.dql-app-research-items button.status-ready small {
|
|
3157
|
+
color: var(--dql-app-green);
|
|
3158
|
+
}
|
|
3159
|
+
|
|
3160
|
+
.dql-app-research-history-toggle {
|
|
3161
|
+
border-style: dashed !important;
|
|
3162
|
+
background: var(--dql-app-surface-muted) !important;
|
|
3163
|
+
color: var(--dql-app-muted) !important;
|
|
3164
|
+
}
|
|
3165
|
+
|
|
3166
|
+
.dql-app-research-items span,
|
|
3167
|
+
.dql-app-research-items small {
|
|
3168
|
+
display: block;
|
|
3169
|
+
overflow: hidden;
|
|
3170
|
+
text-overflow: ellipsis;
|
|
3171
|
+
white-space: nowrap;
|
|
3172
|
+
}
|
|
3173
|
+
|
|
3174
|
+
.dql-app-research-items span { font-weight: 800; font-size: 12px; }
|
|
3175
|
+
.dql-app-research-items small { margin-top: 3px; color: var(--dql-app-muted); font-size: 10.5px; }
|
|
3176
|
+
.dql-app-research-titlebar { align-items: flex-start; margin-bottom: 14px; }
|
|
3177
|
+
.dql-app-research-titlebar h2 {
|
|
3178
|
+
margin: 2px 0 0;
|
|
3179
|
+
font-size: 20px;
|
|
3180
|
+
line-height: 1.2;
|
|
3181
|
+
}
|
|
3182
|
+
|
|
3183
|
+
.dql-app-research-status {
|
|
3184
|
+
margin: 0 0 12px;
|
|
3185
|
+
border: 1px solid rgba(37, 99, 235, 0.26);
|
|
3186
|
+
border-radius: 8px;
|
|
3187
|
+
background: var(--dql-app-accent-soft);
|
|
3188
|
+
color: var(--dql-app-accent);
|
|
3189
|
+
padding: 10px 12px;
|
|
3190
|
+
display: flex;
|
|
3191
|
+
align-items: flex-start;
|
|
3192
|
+
gap: 8px;
|
|
3193
|
+
font: 800 12px var(--font-ui);
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3196
|
+
.dql-app-research-status.opening {
|
|
3197
|
+
border-color: rgba(79, 99, 215, 0.28);
|
|
3198
|
+
background: color-mix(in srgb, var(--dql-app-accent-soft) 72%, var(--dql-app-surface));
|
|
3199
|
+
}
|
|
3200
|
+
|
|
3201
|
+
.dql-app-research-status > div {
|
|
3202
|
+
min-width: 0;
|
|
3203
|
+
display: grid;
|
|
3204
|
+
gap: 3px;
|
|
3205
|
+
}
|
|
3206
|
+
|
|
3207
|
+
.dql-app-research-status small {
|
|
3208
|
+
color: var(--dql-app-muted);
|
|
3209
|
+
font: 700 11px/1.35 var(--font-ui);
|
|
3210
|
+
overflow: hidden;
|
|
3211
|
+
text-overflow: ellipsis;
|
|
3212
|
+
}
|
|
3213
|
+
|
|
3214
|
+
.dql-app-report-toolbar {
|
|
3215
|
+
max-width: 1120px;
|
|
3216
|
+
margin: 0 auto 12px;
|
|
3217
|
+
display: flex;
|
|
3218
|
+
align-items: center;
|
|
3219
|
+
justify-content: space-between;
|
|
3220
|
+
gap: 12px;
|
|
3221
|
+
}
|
|
3222
|
+
|
|
3223
|
+
.dql-app-report-toolbar > div {
|
|
3224
|
+
min-width: 0;
|
|
3225
|
+
display: grid;
|
|
3226
|
+
gap: 3px;
|
|
3227
|
+
}
|
|
3228
|
+
|
|
3229
|
+
.dql-app-report-toolbar span {
|
|
3230
|
+
color: var(--dql-app-faint);
|
|
3231
|
+
font: 850 9.5px var(--font-mono);
|
|
3232
|
+
text-transform: uppercase;
|
|
3233
|
+
}
|
|
3234
|
+
|
|
3235
|
+
.dql-app-report-toolbar b {
|
|
3236
|
+
min-width: 0;
|
|
3237
|
+
color: var(--dql-app-ink);
|
|
3238
|
+
font-size: 13px;
|
|
3239
|
+
overflow: hidden;
|
|
3240
|
+
text-overflow: ellipsis;
|
|
3241
|
+
white-space: nowrap;
|
|
3242
|
+
}
|
|
3243
|
+
|
|
3244
|
+
.dql-app-research-creating {
|
|
3245
|
+
max-width: 760px;
|
|
3246
|
+
min-height: 340px;
|
|
3247
|
+
margin: 40px auto;
|
|
3248
|
+
border: 1px solid var(--dql-app-line);
|
|
3249
|
+
border-radius: 12px;
|
|
3250
|
+
background: var(--dql-app-surface);
|
|
3251
|
+
box-shadow: var(--dql-app-shadow);
|
|
3252
|
+
color: var(--dql-app-muted);
|
|
3253
|
+
padding: 42px;
|
|
3254
|
+
display: grid;
|
|
3255
|
+
place-items: center;
|
|
3256
|
+
align-content: center;
|
|
3257
|
+
gap: 12px;
|
|
3258
|
+
text-align: center;
|
|
3259
|
+
}
|
|
3260
|
+
|
|
3261
|
+
.dql-app-research-creating.active {
|
|
3262
|
+
max-width: 920px;
|
|
3263
|
+
min-height: 420px;
|
|
3264
|
+
border-color: rgba(79, 99, 215, 0.24);
|
|
3265
|
+
background:
|
|
3266
|
+
linear-gradient(180deg, color-mix(in srgb, var(--dql-app-accent-soft) 24%, var(--dql-app-surface)), var(--dql-app-surface) 48%),
|
|
3267
|
+
var(--dql-app-surface);
|
|
3268
|
+
}
|
|
3269
|
+
|
|
3270
|
+
.dql-app-research-creating svg {
|
|
3271
|
+
color: var(--dql-app-accent);
|
|
3272
|
+
}
|
|
3273
|
+
|
|
3274
|
+
.dql-app-research-creating > span {
|
|
3275
|
+
color: var(--dql-app-accent);
|
|
3276
|
+
font: 850 10.5px var(--font-mono);
|
|
3277
|
+
letter-spacing: 0;
|
|
3278
|
+
text-transform: uppercase;
|
|
3279
|
+
}
|
|
3280
|
+
|
|
3281
|
+
.dql-app-research-creating h2 {
|
|
3282
|
+
margin: 0;
|
|
3283
|
+
color: var(--dql-app-ink);
|
|
3284
|
+
font-size: 24px;
|
|
3285
|
+
}
|
|
3286
|
+
|
|
3287
|
+
.dql-app-research-creating p {
|
|
3288
|
+
margin: 0;
|
|
3289
|
+
max-width: 520px;
|
|
3290
|
+
font-size: 13px;
|
|
3291
|
+
line-height: 1.6;
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
.dql-app-research-creating-steps {
|
|
3295
|
+
display: flex;
|
|
3296
|
+
flex-wrap: wrap;
|
|
3297
|
+
justify-content: center;
|
|
3298
|
+
gap: 8px;
|
|
3299
|
+
margin-top: 4px;
|
|
3300
|
+
max-width: 680px;
|
|
3301
|
+
}
|
|
3302
|
+
|
|
3303
|
+
.dql-app-research-creating-steps small {
|
|
3304
|
+
border: 1px solid var(--dql-app-line);
|
|
3305
|
+
border-radius: 999px;
|
|
3306
|
+
background: var(--dql-app-surface-muted);
|
|
3307
|
+
color: var(--dql-app-muted);
|
|
3308
|
+
padding: 5px 9px;
|
|
3309
|
+
font: 750 11px var(--font-ui);
|
|
3310
|
+
}
|
|
3311
|
+
|
|
3312
|
+
.dql-app-research-report {
|
|
3313
|
+
max-width: 1040px;
|
|
3314
|
+
margin: 0 auto;
|
|
3315
|
+
border: 0;
|
|
3316
|
+
border-radius: 0;
|
|
3317
|
+
background: var(--dql-app-surface);
|
|
3318
|
+
box-shadow: none;
|
|
3319
|
+
overflow: visible;
|
|
3320
|
+
}
|
|
3321
|
+
|
|
3322
|
+
.dql-app-report-hero {
|
|
3323
|
+
padding: 26px 34px 20px;
|
|
3324
|
+
border-bottom: 0;
|
|
3325
|
+
background: var(--dql-app-surface);
|
|
3326
|
+
}
|
|
3327
|
+
|
|
3328
|
+
.dql-app-report-status-row {
|
|
3329
|
+
display: flex;
|
|
3330
|
+
align-items: center;
|
|
3331
|
+
justify-content: space-between;
|
|
3332
|
+
gap: 14px;
|
|
3333
|
+
}
|
|
3334
|
+
|
|
3335
|
+
.dql-app-report-status-row > span {
|
|
3336
|
+
display: inline-flex;
|
|
3337
|
+
align-items: center;
|
|
3338
|
+
gap: 7px;
|
|
3339
|
+
color: var(--dql-app-muted);
|
|
3340
|
+
font: 850 10px var(--font-mono);
|
|
3341
|
+
text-transform: uppercase;
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3344
|
+
.dql-app-report-hero h2 {
|
|
3345
|
+
margin: 18px 0 0;
|
|
3346
|
+
color: var(--dql-app-ink);
|
|
3347
|
+
font-size: clamp(25px, 2.4vw, 34px);
|
|
3348
|
+
line-height: 1.08;
|
|
3349
|
+
max-width: 860px;
|
|
3350
|
+
text-wrap: balance;
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3353
|
+
.dql-app-report-hero p {
|
|
3354
|
+
margin: 14px 0 0;
|
|
3355
|
+
color: var(--dql-app-muted);
|
|
3356
|
+
font-size: 14px;
|
|
3357
|
+
line-height: 1.6;
|
|
3358
|
+
max-width: 850px;
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
.dql-app-report-context-line {
|
|
3362
|
+
display: flex;
|
|
3363
|
+
flex-wrap: wrap;
|
|
3364
|
+
gap: 8px;
|
|
3365
|
+
margin-top: 18px;
|
|
3366
|
+
}
|
|
3367
|
+
|
|
3368
|
+
.dql-app-report-context-line span {
|
|
3369
|
+
display: inline-flex;
|
|
3370
|
+
align-items: center;
|
|
3371
|
+
gap: 6px;
|
|
3372
|
+
border: 1px solid var(--dql-app-line);
|
|
3373
|
+
border-radius: 999px;
|
|
3374
|
+
background: var(--dql-app-surface);
|
|
3375
|
+
color: var(--dql-app-muted);
|
|
3376
|
+
padding: 6px 10px;
|
|
3377
|
+
font-size: 11.5px;
|
|
3378
|
+
max-width: 100%;
|
|
3379
|
+
}
|
|
3380
|
+
|
|
3381
|
+
.dql-app-report-context-line b {
|
|
3382
|
+
color: var(--dql-app-ink);
|
|
3383
|
+
font-weight: 850;
|
|
3384
|
+
}
|
|
3385
|
+
|
|
3386
|
+
.dql-app-report-route {
|
|
3387
|
+
display: flex;
|
|
3388
|
+
align-items: flex-start;
|
|
3389
|
+
gap: 10px;
|
|
3390
|
+
margin-top: 14px;
|
|
3391
|
+
border: 1px solid rgba(79, 99, 215, 0.18);
|
|
3392
|
+
border-radius: 10px;
|
|
3393
|
+
background: rgba(79, 99, 215, 0.055);
|
|
3394
|
+
padding: 10px 12px;
|
|
3395
|
+
max-width: 900px;
|
|
3396
|
+
}
|
|
3397
|
+
|
|
3398
|
+
.dql-app-report-route > svg {
|
|
3399
|
+
color: var(--dql-app-accent);
|
|
3400
|
+
flex: 0 0 auto;
|
|
3401
|
+
margin-top: 2px;
|
|
3402
|
+
}
|
|
3403
|
+
|
|
3404
|
+
.dql-app-report-route span {
|
|
3405
|
+
display: block;
|
|
3406
|
+
color: var(--dql-app-accent);
|
|
3407
|
+
font: 850 10.5px var(--font-mono);
|
|
3408
|
+
letter-spacing: .02em;
|
|
3409
|
+
text-transform: uppercase;
|
|
3410
|
+
}
|
|
3411
|
+
|
|
3412
|
+
.dql-app-report-route p {
|
|
3413
|
+
margin: 5px 0 0;
|
|
3414
|
+
color: var(--dql-app-ink);
|
|
3415
|
+
font-size: 12.5px;
|
|
3416
|
+
line-height: 1.45;
|
|
3417
|
+
}
|
|
3418
|
+
|
|
3419
|
+
.dql-app-report-route small {
|
|
3420
|
+
display: block;
|
|
3421
|
+
margin-top: 5px;
|
|
3422
|
+
color: var(--dql-app-muted);
|
|
3423
|
+
font-size: 12px;
|
|
3424
|
+
line-height: 1.45;
|
|
3425
|
+
}
|
|
3426
|
+
|
|
3427
|
+
.dql-app-report-actions {
|
|
3428
|
+
display: flex;
|
|
3429
|
+
flex-wrap: wrap;
|
|
3430
|
+
gap: 8px;
|
|
3431
|
+
margin-top: 18px;
|
|
3432
|
+
}
|
|
3433
|
+
|
|
3434
|
+
.dql-app-report-review-actions {
|
|
3435
|
+
position: relative;
|
|
3436
|
+
}
|
|
3437
|
+
|
|
3438
|
+
.dql-app-report-review-actions summary {
|
|
3439
|
+
list-style: none;
|
|
3440
|
+
height: 32px;
|
|
3441
|
+
border: 1px solid var(--dql-app-line);
|
|
3442
|
+
border-radius: 8px;
|
|
3443
|
+
background: var(--dql-app-surface);
|
|
3444
|
+
color: var(--dql-app-muted);
|
|
3445
|
+
padding: 0 10px;
|
|
3446
|
+
display: inline-flex;
|
|
3447
|
+
align-items: center;
|
|
3448
|
+
cursor: pointer;
|
|
3449
|
+
font: 800 11.5px var(--font-ui);
|
|
3450
|
+
}
|
|
3451
|
+
|
|
3452
|
+
.dql-app-report-review-actions summary::-webkit-details-marker {
|
|
3453
|
+
display: none;
|
|
3454
|
+
}
|
|
3455
|
+
|
|
3456
|
+
.dql-app-report-review-actions[open] summary,
|
|
3457
|
+
.dql-app-report-review-actions summary:hover {
|
|
3458
|
+
color: var(--dql-app-accent);
|
|
3459
|
+
border-color: rgba(79, 99, 215, 0.34);
|
|
3460
|
+
background: var(--dql-app-accent-soft);
|
|
3461
|
+
}
|
|
3462
|
+
|
|
3463
|
+
.dql-app-report-review-actions > div {
|
|
3464
|
+
position: absolute;
|
|
3465
|
+
z-index: 5;
|
|
3466
|
+
right: 0;
|
|
3467
|
+
top: calc(100% + 6px);
|
|
3468
|
+
min-width: 220px;
|
|
3469
|
+
border: 1px solid var(--dql-app-line);
|
|
3470
|
+
border-radius: 10px;
|
|
3471
|
+
background: var(--dql-app-surface);
|
|
3472
|
+
box-shadow: var(--dql-app-shadow);
|
|
3473
|
+
padding: 8px;
|
|
3474
|
+
display: grid;
|
|
3475
|
+
gap: 7px;
|
|
3476
|
+
}
|
|
3477
|
+
|
|
3478
|
+
.dql-app-report-review-actions > div .dql-apps-btn {
|
|
3479
|
+
justify-content: flex-start;
|
|
3480
|
+
width: 100%;
|
|
3481
|
+
}
|
|
3482
|
+
|
|
3483
|
+
.dql-app-report-warning {
|
|
3484
|
+
display: flex;
|
|
3485
|
+
align-items: flex-start;
|
|
3486
|
+
gap: 8px;
|
|
3487
|
+
margin-top: 14px;
|
|
3488
|
+
border: 1px solid rgba(217, 119, 6, 0.24);
|
|
3489
|
+
border-radius: 9px;
|
|
3490
|
+
background: rgba(251, 191, 36, 0.12);
|
|
3491
|
+
color: #92400e;
|
|
3492
|
+
padding: 10px 12px;
|
|
3493
|
+
font-size: 12px;
|
|
3494
|
+
line-height: 1.45;
|
|
3495
|
+
}
|
|
3496
|
+
|
|
3497
|
+
.dql-app-report-warning svg {
|
|
3498
|
+
flex: none;
|
|
3499
|
+
margin-top: 1px;
|
|
3500
|
+
}
|
|
3501
|
+
|
|
3502
|
+
.dql-app-report-section {
|
|
3503
|
+
padding: 24px 34px;
|
|
3504
|
+
border-bottom: 0;
|
|
3505
|
+
}
|
|
3506
|
+
|
|
3507
|
+
.dql-app-report-section:last-child {
|
|
3508
|
+
border-bottom: 0;
|
|
3509
|
+
}
|
|
3510
|
+
|
|
3511
|
+
.dql-app-report-section h3 {
|
|
3512
|
+
margin: 0 0 12px;
|
|
3513
|
+
color: var(--dql-app-ink);
|
|
3514
|
+
font-size: 17px;
|
|
3515
|
+
line-height: 1.25;
|
|
3516
|
+
}
|
|
3517
|
+
|
|
3518
|
+
.dql-app-report-paper {
|
|
3519
|
+
color: var(--dql-app-ink);
|
|
3520
|
+
font-size: 14.5px;
|
|
3521
|
+
line-height: 1.78;
|
|
3522
|
+
padding: 26px 54px 20px;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
.dql-app-report-paper h2,
|
|
3526
|
+
.dql-app-report-paper h3 {
|
|
3527
|
+
margin: 18px 0 8px;
|
|
3528
|
+
color: var(--dql-app-ink);
|
|
3529
|
+
font-size: 18px;
|
|
3530
|
+
line-height: 1.22;
|
|
3531
|
+
}
|
|
3532
|
+
|
|
3533
|
+
.dql-app-report-paper h2:first-child,
|
|
3534
|
+
.dql-app-report-paper h3:first-child {
|
|
3535
|
+
margin-top: 0;
|
|
3536
|
+
}
|
|
3537
|
+
|
|
3538
|
+
.dql-app-report-paper p,
|
|
3539
|
+
.dql-app-report-paper ul,
|
|
3540
|
+
.dql-app-report-paper ol {
|
|
3541
|
+
max-width: 900px;
|
|
3542
|
+
}
|
|
3543
|
+
|
|
3544
|
+
.dql-app-report-dynamic-sections {
|
|
3545
|
+
display: grid;
|
|
3546
|
+
gap: 30px;
|
|
3547
|
+
}
|
|
3548
|
+
|
|
3549
|
+
.dql-app-report-dynamic-section {
|
|
3550
|
+
border-left: 0;
|
|
3551
|
+
padding: 0;
|
|
3552
|
+
display: grid;
|
|
3553
|
+
gap: 10px;
|
|
3554
|
+
}
|
|
3555
|
+
|
|
3556
|
+
.dql-app-report-dynamic-head {
|
|
3557
|
+
display: grid;
|
|
3558
|
+
gap: 5px;
|
|
3559
|
+
}
|
|
3560
|
+
|
|
3561
|
+
.dql-app-report-dynamic-head span {
|
|
3562
|
+
color: var(--dql-app-muted);
|
|
3563
|
+
font: 850 9.5px var(--font-mono);
|
|
3564
|
+
letter-spacing: 0;
|
|
3565
|
+
text-transform: uppercase;
|
|
3566
|
+
}
|
|
3567
|
+
|
|
3568
|
+
.dql-app-report-dynamic-head h3 {
|
|
3569
|
+
margin: 0;
|
|
3570
|
+
font-size: 20px;
|
|
3571
|
+
line-height: 1.18;
|
|
3572
|
+
}
|
|
3573
|
+
|
|
3574
|
+
.dql-app-report-memo-body {
|
|
3575
|
+
display: grid;
|
|
3576
|
+
gap: 10px;
|
|
3577
|
+
max-width: 900px;
|
|
3578
|
+
}
|
|
3579
|
+
|
|
3580
|
+
.dql-app-report-memo-body p {
|
|
3581
|
+
margin: 0;
|
|
3582
|
+
color: var(--dql-app-ink);
|
|
3583
|
+
font-size: 14.5px;
|
|
3584
|
+
line-height: 1.72;
|
|
3585
|
+
}
|
|
3586
|
+
|
|
3587
|
+
.dql-app-report-dynamic-section ul {
|
|
3588
|
+
margin: 4px 0 0;
|
|
3589
|
+
padding-left: 20px;
|
|
3590
|
+
display: grid;
|
|
3591
|
+
gap: 7px;
|
|
3592
|
+
max-width: 820px;
|
|
3593
|
+
}
|
|
3594
|
+
|
|
3595
|
+
.dql-app-report-dynamic-section li {
|
|
3596
|
+
color: var(--dql-app-ink);
|
|
3597
|
+
font-size: 14.5px;
|
|
3598
|
+
line-height: 1.6;
|
|
3599
|
+
}
|
|
3600
|
+
|
|
3601
|
+
.dql-app-report-evidence-story {
|
|
3602
|
+
display: grid;
|
|
3603
|
+
grid-template-columns: minmax(280px, 0.9fr) minmax(360px, 1.1fr);
|
|
3604
|
+
gap: 24px;
|
|
3605
|
+
align-items: start;
|
|
3606
|
+
margin: 6px 34px 12px;
|
|
3607
|
+
border: 1px solid color-mix(in srgb, var(--dql-app-line) 75%, transparent);
|
|
3608
|
+
border-radius: 12px;
|
|
3609
|
+
background: linear-gradient(180deg, color-mix(in srgb, var(--dql-app-surface-muted) 64%, var(--dql-app-surface)), var(--dql-app-surface));
|
|
3610
|
+
}
|
|
3611
|
+
|
|
3612
|
+
.dql-app-report-evidence-story.single {
|
|
3613
|
+
grid-template-columns: minmax(0, 1fr);
|
|
3614
|
+
}
|
|
3615
|
+
|
|
3616
|
+
.dql-app-report-evidence-story .dql-app-report-numbers {
|
|
3617
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
3618
|
+
}
|
|
3619
|
+
|
|
3620
|
+
.dql-app-report-prose {
|
|
3621
|
+
font-size: 14px;
|
|
3622
|
+
line-height: 1.65;
|
|
3623
|
+
}
|
|
3624
|
+
|
|
3625
|
+
.dql-app-report-callout {
|
|
3626
|
+
margin-top: 16px;
|
|
3627
|
+
border-left: 3px solid var(--dql-app-accent);
|
|
3628
|
+
background: var(--dql-app-surface-muted);
|
|
3629
|
+
padding: 12px 14px;
|
|
3630
|
+
color: var(--dql-app-muted);
|
|
3631
|
+
}
|
|
3632
|
+
|
|
3633
|
+
.dql-app-report-numbers {
|
|
3634
|
+
display: grid;
|
|
3635
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
3636
|
+
gap: 10px;
|
|
3637
|
+
}
|
|
3638
|
+
|
|
3639
|
+
.dql-app-report-number {
|
|
3640
|
+
border: 1px solid var(--dql-app-line);
|
|
3641
|
+
border-radius: 9px;
|
|
3642
|
+
background: var(--dql-app-surface);
|
|
3643
|
+
padding: 13px;
|
|
3644
|
+
min-width: 0;
|
|
3645
|
+
}
|
|
3646
|
+
|
|
3647
|
+
.dql-app-report-number span,
|
|
3648
|
+
.dql-app-report-number small {
|
|
3649
|
+
display: block;
|
|
3650
|
+
color: var(--dql-app-muted);
|
|
3651
|
+
}
|
|
3652
|
+
|
|
3653
|
+
.dql-app-report-number span {
|
|
3654
|
+
font: 850 9.5px var(--font-mono);
|
|
3655
|
+
letter-spacing: 0;
|
|
3656
|
+
text-transform: uppercase;
|
|
3657
|
+
}
|
|
3658
|
+
|
|
3659
|
+
.dql-app-report-number b {
|
|
3660
|
+
display: block;
|
|
3661
|
+
margin-top: 7px;
|
|
3662
|
+
color: var(--dql-app-ink);
|
|
3663
|
+
font-size: 23px;
|
|
3664
|
+
line-height: 1;
|
|
3665
|
+
overflow: hidden;
|
|
3666
|
+
text-overflow: ellipsis;
|
|
3667
|
+
}
|
|
3668
|
+
|
|
3669
|
+
.dql-app-report-number small {
|
|
3670
|
+
margin-top: 7px;
|
|
3671
|
+
font-size: 11.5px;
|
|
3672
|
+
line-height: 1.35;
|
|
3673
|
+
}
|
|
3674
|
+
|
|
3675
|
+
.dql-app-report-drivers {
|
|
3676
|
+
display: grid;
|
|
3677
|
+
gap: 12px;
|
|
3678
|
+
}
|
|
3679
|
+
|
|
3680
|
+
.dql-app-report-driver {
|
|
3681
|
+
display: grid;
|
|
3682
|
+
grid-template-columns: 34px minmax(0, 1fr);
|
|
3683
|
+
gap: 12px;
|
|
3684
|
+
align-items: start;
|
|
3685
|
+
padding: 13px 0;
|
|
3686
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
3687
|
+
}
|
|
3688
|
+
|
|
3689
|
+
.dql-app-report-driver:last-child { border-bottom: 0; }
|
|
3690
|
+
|
|
3691
|
+
.dql-app-report-driver > span {
|
|
3692
|
+
width: 28px;
|
|
3693
|
+
height: 28px;
|
|
3694
|
+
border-radius: 999px;
|
|
3695
|
+
background: var(--dql-app-accent-soft);
|
|
3696
|
+
color: var(--dql-app-accent);
|
|
3697
|
+
display: inline-flex;
|
|
3698
|
+
align-items: center;
|
|
3699
|
+
justify-content: center;
|
|
3700
|
+
font: 850 12px var(--font-mono);
|
|
3701
|
+
}
|
|
3702
|
+
|
|
3703
|
+
.dql-app-report-driver b {
|
|
3704
|
+
display: inline;
|
|
3705
|
+
color: var(--dql-app-ink);
|
|
3706
|
+
font-size: 14px;
|
|
3707
|
+
}
|
|
3708
|
+
|
|
3709
|
+
.dql-app-report-driver em {
|
|
3710
|
+
margin-left: 8px;
|
|
3711
|
+
color: var(--dql-app-accent);
|
|
3712
|
+
font: 850 12px var(--font-mono);
|
|
3713
|
+
font-style: normal;
|
|
3714
|
+
}
|
|
3715
|
+
|
|
3716
|
+
.dql-app-report-driver p,
|
|
3717
|
+
.dql-app-report-muted {
|
|
3718
|
+
margin: 7px 0 0;
|
|
3719
|
+
color: var(--dql-app-muted);
|
|
3720
|
+
font-size: 13px;
|
|
3721
|
+
line-height: 1.55;
|
|
3722
|
+
}
|
|
3723
|
+
|
|
3724
|
+
.dql-app-report-driver-chart {
|
|
3725
|
+
display: grid;
|
|
3726
|
+
gap: 13px;
|
|
3727
|
+
}
|
|
3728
|
+
|
|
3729
|
+
.dql-app-report-driver-bar {
|
|
3730
|
+
display: grid;
|
|
3731
|
+
gap: 7px;
|
|
3732
|
+
}
|
|
3733
|
+
|
|
3734
|
+
.dql-app-report-driver-bar > div {
|
|
3735
|
+
display: flex;
|
|
3736
|
+
align-items: baseline;
|
|
3737
|
+
justify-content: space-between;
|
|
3738
|
+
gap: 12px;
|
|
3739
|
+
}
|
|
3740
|
+
|
|
3741
|
+
.dql-app-report-driver-bar b {
|
|
3742
|
+
min-width: 0;
|
|
3743
|
+
color: var(--dql-app-ink);
|
|
3744
|
+
font-size: 13.5px;
|
|
3745
|
+
overflow: hidden;
|
|
3746
|
+
text-overflow: ellipsis;
|
|
3747
|
+
white-space: nowrap;
|
|
3748
|
+
}
|
|
3749
|
+
|
|
3750
|
+
.dql-app-report-driver-bar span {
|
|
3751
|
+
flex: none;
|
|
3752
|
+
color: var(--dql-app-accent);
|
|
3753
|
+
font: 850 11px var(--font-mono);
|
|
3754
|
+
}
|
|
3755
|
+
|
|
3756
|
+
.dql-app-report-driver-bar i {
|
|
3757
|
+
display: block;
|
|
3758
|
+
width: var(--driver-width);
|
|
3759
|
+
min-width: 28px;
|
|
3760
|
+
height: 9px;
|
|
3761
|
+
border-radius: 999px;
|
|
3762
|
+
background: linear-gradient(90deg, var(--dql-app-accent), rgba(79, 99, 215, 0.42));
|
|
3763
|
+
}
|
|
3764
|
+
|
|
3765
|
+
.dql-app-report-driver-bar p {
|
|
3766
|
+
margin: 0;
|
|
3767
|
+
color: var(--dql-app-muted);
|
|
3768
|
+
font-size: 12px;
|
|
3769
|
+
line-height: 1.45;
|
|
3770
|
+
}
|
|
3771
|
+
|
|
3772
|
+
.dql-app-report-appendix {
|
|
3773
|
+
padding: 0;
|
|
3774
|
+
}
|
|
3775
|
+
|
|
3776
|
+
.dql-app-report-appendix summary {
|
|
3777
|
+
list-style: none;
|
|
3778
|
+
display: grid;
|
|
3779
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
3780
|
+
gap: 4px 14px;
|
|
3781
|
+
align-items: center;
|
|
3782
|
+
cursor: pointer;
|
|
3783
|
+
padding: 18px 30px;
|
|
3784
|
+
}
|
|
3785
|
+
|
|
3786
|
+
.dql-app-report-appendix summary::-webkit-details-marker {
|
|
3787
|
+
display: none;
|
|
3788
|
+
}
|
|
3789
|
+
|
|
3790
|
+
.dql-app-report-appendix summary span {
|
|
3791
|
+
color: var(--dql-app-ink);
|
|
3792
|
+
font: 850 14px var(--font-ui);
|
|
3793
|
+
}
|
|
3794
|
+
|
|
3795
|
+
.dql-app-report-appendix summary small {
|
|
3796
|
+
grid-column: 1 / 2;
|
|
3797
|
+
color: var(--dql-app-muted);
|
|
3798
|
+
font-size: 12px;
|
|
3799
|
+
line-height: 1.4;
|
|
3800
|
+
}
|
|
3801
|
+
|
|
3802
|
+
.dql-app-report-appendix summary svg {
|
|
3803
|
+
grid-row: 1 / span 2;
|
|
3804
|
+
grid-column: 2;
|
|
3805
|
+
color: var(--dql-app-muted);
|
|
3806
|
+
transition: transform 140ms ease;
|
|
3807
|
+
}
|
|
3808
|
+
|
|
3809
|
+
.dql-app-report-appendix[open] summary {
|
|
3810
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
3811
|
+
}
|
|
3812
|
+
|
|
3813
|
+
.dql-app-report-appendix[open] summary svg {
|
|
3814
|
+
transform: rotate(180deg);
|
|
3815
|
+
}
|
|
3816
|
+
|
|
3817
|
+
.dql-app-report-appendix .dql-app-research-evidence-head {
|
|
3818
|
+
align-items: flex-start;
|
|
3819
|
+
margin: 18px 30px 10px;
|
|
3820
|
+
}
|
|
3821
|
+
|
|
3822
|
+
.dql-app-report-appendix .dql-app-research-evidence-head h3 {
|
|
3823
|
+
margin-bottom: 4px;
|
|
3824
|
+
}
|
|
3825
|
+
|
|
3826
|
+
.dql-app-report-appendix .dql-app-research-evidence-head p {
|
|
3827
|
+
margin: 0;
|
|
3828
|
+
color: var(--dql-app-muted);
|
|
3829
|
+
font-size: 12px;
|
|
3830
|
+
line-height: 1.45;
|
|
3831
|
+
}
|
|
3832
|
+
|
|
3833
|
+
.dql-app-report-appendix .dql-app-research-table,
|
|
3834
|
+
.dql-app-report-appendix .dql-app-research-sql-review,
|
|
3835
|
+
.dql-app-report-appendix .dql-app-research-assumptions,
|
|
3836
|
+
.dql-app-report-appendix .dql-app-research-code {
|
|
3837
|
+
margin-left: 30px;
|
|
3838
|
+
margin-right: 30px;
|
|
3839
|
+
}
|
|
3840
|
+
|
|
3841
|
+
.dql-app-report-appendix > :last-child {
|
|
3842
|
+
margin-bottom: 24px;
|
|
3843
|
+
}
|
|
3844
|
+
|
|
3845
|
+
.dql-app-research-tabs {
|
|
3846
|
+
display: flex;
|
|
3847
|
+
gap: 4px;
|
|
3848
|
+
flex-wrap: wrap;
|
|
3849
|
+
}
|
|
3850
|
+
|
|
3851
|
+
.dql-app-research-tabs button,
|
|
3852
|
+
.dql-app-research-next button {
|
|
3853
|
+
border: 1px solid var(--dql-app-line);
|
|
3854
|
+
border-radius: 999px;
|
|
3855
|
+
background: var(--dql-app-surface);
|
|
3856
|
+
color: var(--dql-app-muted);
|
|
3857
|
+
font: 800 11px var(--font-ui);
|
|
3858
|
+
padding: 5px 9px;
|
|
3859
|
+
cursor: pointer;
|
|
3860
|
+
}
|
|
3861
|
+
|
|
3862
|
+
.dql-app-research-tabs button.on,
|
|
3863
|
+
.dql-app-research-tabs button:hover,
|
|
3864
|
+
.dql-app-research-next button:hover {
|
|
3865
|
+
color: var(--dql-app-accent);
|
|
3866
|
+
border-color: rgba(37, 99, 235, 0.34);
|
|
3867
|
+
background: var(--dql-app-accent-soft);
|
|
3868
|
+
}
|
|
3869
|
+
|
|
3870
|
+
.dql-app-research-code {
|
|
3871
|
+
margin: 10px 0 0;
|
|
3872
|
+
max-height: 320px;
|
|
3873
|
+
overflow: auto;
|
|
3874
|
+
border-radius: 8px;
|
|
3875
|
+
border: 1px solid var(--dql-app-line);
|
|
3876
|
+
background: var(--dql-app-surface);
|
|
3877
|
+
padding: 11px;
|
|
3878
|
+
color: var(--dql-app-ink);
|
|
3879
|
+
font: 11px/1.5 var(--font-mono);
|
|
3880
|
+
white-space: pre-wrap;
|
|
3881
|
+
}
|
|
3882
|
+
|
|
3883
|
+
.dql-app-research-sql-review {
|
|
3884
|
+
display: grid;
|
|
3885
|
+
gap: 10px;
|
|
3886
|
+
margin-top: 10px;
|
|
3887
|
+
}
|
|
3888
|
+
|
|
3889
|
+
.dql-app-research-sql-review textarea {
|
|
3890
|
+
min-height: 260px;
|
|
3891
|
+
resize: vertical;
|
|
3892
|
+
border-radius: 8px;
|
|
3893
|
+
border: 1px solid var(--dql-app-line);
|
|
3894
|
+
background: var(--dql-app-surface);
|
|
3895
|
+
color: var(--dql-app-ink);
|
|
3896
|
+
padding: 11px;
|
|
3897
|
+
font: 11px/1.5 var(--font-mono);
|
|
3898
|
+
outline: none;
|
|
3899
|
+
}
|
|
3900
|
+
|
|
3901
|
+
.dql-app-research-sql-review textarea:focus {
|
|
3902
|
+
border-color: rgba(37, 99, 235, 0.42);
|
|
3903
|
+
box-shadow: 0 0 0 3px var(--dql-app-accent-soft);
|
|
3904
|
+
}
|
|
3905
|
+
|
|
3906
|
+
.dql-app-research-assumptions {
|
|
3907
|
+
display: grid;
|
|
3908
|
+
gap: 8px;
|
|
3909
|
+
margin-top: 10px;
|
|
3910
|
+
}
|
|
3911
|
+
|
|
3912
|
+
.dql-app-research-assumptions p {
|
|
3913
|
+
margin: 0;
|
|
3914
|
+
border: 1px solid var(--dql-app-line);
|
|
3915
|
+
border-radius: 7px;
|
|
3916
|
+
background: var(--dql-app-surface);
|
|
3917
|
+
padding: 9px;
|
|
3918
|
+
color: var(--dql-app-muted);
|
|
3919
|
+
font-size: 12px;
|
|
3920
|
+
}
|
|
3921
|
+
|
|
3922
|
+
.dql-app-research-table {
|
|
3923
|
+
margin-top: 10px;
|
|
3924
|
+
overflow: auto;
|
|
3925
|
+
border: 1px solid var(--dql-app-line);
|
|
3926
|
+
border-radius: 8px;
|
|
3927
|
+
background: var(--dql-app-surface);
|
|
3928
|
+
}
|
|
3929
|
+
|
|
3930
|
+
.dql-app-research-table table {
|
|
3931
|
+
width: 100%;
|
|
3932
|
+
border-collapse: collapse;
|
|
3933
|
+
min-width: 520px;
|
|
3934
|
+
}
|
|
3935
|
+
|
|
3936
|
+
.dql-app-research-table th,
|
|
3937
|
+
.dql-app-research-table td {
|
|
3938
|
+
padding: 8px 9px;
|
|
3939
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
3940
|
+
text-align: left;
|
|
3941
|
+
font-size: 11.5px;
|
|
3942
|
+
white-space: nowrap;
|
|
3943
|
+
}
|
|
3944
|
+
|
|
3945
|
+
.dql-app-research-table th {
|
|
3946
|
+
color: var(--dql-app-muted);
|
|
3947
|
+
background: var(--dql-app-control);
|
|
3948
|
+
font-weight: 850;
|
|
3949
|
+
}
|
|
3950
|
+
|
|
3951
|
+
.dql-app-research-next {
|
|
3952
|
+
display: flex;
|
|
3953
|
+
gap: 7px;
|
|
3954
|
+
flex-wrap: wrap;
|
|
3955
|
+
margin-top: 10px;
|
|
3956
|
+
}
|
|
3957
|
+
|
|
3958
|
+
.dql-app-simple-list,
|
|
3959
|
+
.dql-app-settings-grid { display: grid; gap: 10px; }
|
|
3960
|
+
.dql-app-settings-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
3961
|
+
.dql-app-panel-card {
|
|
3962
|
+
border: 1px solid var(--dql-app-line);
|
|
3963
|
+
border-radius: 8px;
|
|
3964
|
+
background: var(--dql-app-surface);
|
|
3965
|
+
padding: 13px;
|
|
3966
|
+
display: flex;
|
|
3967
|
+
gap: 10px;
|
|
3968
|
+
align-items: flex-start;
|
|
3969
|
+
}
|
|
3970
|
+
|
|
3971
|
+
.dql-app-panel-card > span {
|
|
3972
|
+
width: 30px;
|
|
3973
|
+
height: 30px;
|
|
3974
|
+
border-radius: 7px;
|
|
3975
|
+
display: inline-flex;
|
|
3976
|
+
align-items: center;
|
|
3977
|
+
justify-content: center;
|
|
3978
|
+
color: var(--dql-app-accent);
|
|
3979
|
+
background: var(--dql-app-accent-soft);
|
|
3980
|
+
flex: none;
|
|
3981
|
+
}
|
|
3982
|
+
|
|
3983
|
+
.dql-app-panel-card b { display: block; }
|
|
3984
|
+
.dql-app-panel-card span:last-child { color: var(--dql-app-muted); font-size: 12px; }
|
|
3985
|
+
.dql-app-empty {
|
|
3986
|
+
min-height: 260px;
|
|
3987
|
+
border: 1px dashed var(--dql-app-line-2);
|
|
3988
|
+
border-radius: 8px;
|
|
3989
|
+
background: var(--dql-app-surface);
|
|
3990
|
+
color: var(--dql-app-faint);
|
|
3991
|
+
display: flex;
|
|
3992
|
+
flex-direction: column;
|
|
3993
|
+
align-items: center;
|
|
3994
|
+
justify-content: center;
|
|
3995
|
+
text-align: center;
|
|
3996
|
+
gap: 8px;
|
|
3997
|
+
padding: 28px;
|
|
3998
|
+
}
|
|
3999
|
+
|
|
4000
|
+
.dql-app-empty.compact { min-height: 120px; padding: 18px; }
|
|
4001
|
+
.dql-app-empty b { color: var(--dql-app-ink); }
|
|
4002
|
+
.dql-app-empty span { max-width: 440px; font-size: 12px; line-height: 1.45; }
|
|
4003
|
+
.dql-app-modal-backdrop {
|
|
4004
|
+
position: fixed;
|
|
4005
|
+
inset: 0;
|
|
4006
|
+
z-index: 100;
|
|
4007
|
+
background: rgba(15, 23, 42, 0.36);
|
|
4008
|
+
display: flex;
|
|
4009
|
+
align-items: center;
|
|
4010
|
+
justify-content: center;
|
|
4011
|
+
padding: 24px;
|
|
4012
|
+
}
|
|
4013
|
+
|
|
4014
|
+
.dql-app-modal {
|
|
4015
|
+
width: min(480px, 94vw);
|
|
4016
|
+
border-radius: 8px;
|
|
4017
|
+
background: var(--dql-app-surface);
|
|
4018
|
+
box-shadow: 0 18px 60px rgba(15, 23, 42, 0.28);
|
|
4019
|
+
padding: 18px;
|
|
4020
|
+
display: grid;
|
|
4021
|
+
gap: 12px;
|
|
4022
|
+
}
|
|
4023
|
+
|
|
4024
|
+
.dql-app-modal h3 { margin: 0; }
|
|
4025
|
+
.dql-app-modal p { margin: 0; color: var(--dql-app-muted); font-size: 12px; }
|
|
4026
|
+
.dql-app-modal > div:last-child { display: flex; justify-content: flex-end; gap: 8px; }
|
|
4027
|
+
|
|
4028
|
+
@media (max-width: 1120px) {
|
|
4029
|
+
.dql-apps-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
4030
|
+
.dql-app-create-workspace,
|
|
4031
|
+
.dql-app-create-workspace.classic {
|
|
4032
|
+
grid-template-columns: 1fr;
|
|
4033
|
+
align-content: start;
|
|
4034
|
+
overflow: auto;
|
|
4035
|
+
}
|
|
4036
|
+
.dql-app-create-workspace .dql-app-panel {
|
|
4037
|
+
min-height: auto;
|
|
4038
|
+
border-right: 0;
|
|
4039
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
4040
|
+
}
|
|
4041
|
+
.dql-app-ai-start,
|
|
4042
|
+
.dql-app-ai-generated-grid {
|
|
4043
|
+
grid-template-columns: 1fr;
|
|
4044
|
+
}
|
|
4045
|
+
.dql-app-filterbar {
|
|
4046
|
+
flex-wrap: nowrap;
|
|
4047
|
+
gap: 6px;
|
|
4048
|
+
padding: 7px 22px;
|
|
4049
|
+
overflow-x: auto;
|
|
4050
|
+
}
|
|
4051
|
+
.dql-app-filter-note {
|
|
4052
|
+
width: 30px;
|
|
4053
|
+
height: 30px;
|
|
4054
|
+
justify-content: center;
|
|
4055
|
+
gap: 0;
|
|
4056
|
+
border: 1px solid var(--dql-app-line);
|
|
4057
|
+
border-radius: 8px;
|
|
4058
|
+
background: var(--dql-app-control);
|
|
4059
|
+
font-size: 0;
|
|
4060
|
+
flex: 0 0 auto;
|
|
4061
|
+
}
|
|
4062
|
+
.dql-app-filter-note svg {
|
|
4063
|
+
width: 14px;
|
|
4064
|
+
height: 14px;
|
|
4065
|
+
}
|
|
4066
|
+
.dql-app-filter-select,
|
|
4067
|
+
.dql-app-toggle {
|
|
4068
|
+
flex: 0 0 auto;
|
|
4069
|
+
}
|
|
4070
|
+
.dql-app-toggle {
|
|
4071
|
+
gap: 6px;
|
|
4072
|
+
font-weight: 750;
|
|
4073
|
+
}
|
|
4074
|
+
.dql-app-review-backlog-grid {
|
|
4075
|
+
grid-template-columns: 1fr;
|
|
4076
|
+
}
|
|
4077
|
+
}
|
|
4078
|
+
|
|
4079
|
+
@media (max-width: 900px) {
|
|
4080
|
+
.dql-app-view-layout { grid-template-columns: 1fr; }
|
|
4081
|
+
.dql-app-view-topbar {
|
|
4082
|
+
align-content: flex-start;
|
|
4083
|
+
align-items: flex-start;
|
|
4084
|
+
min-height: 132px;
|
|
4085
|
+
row-gap: 8px;
|
|
4086
|
+
}
|
|
4087
|
+
.dql-app-topbar-divider {
|
|
4088
|
+
display: none;
|
|
4089
|
+
}
|
|
4090
|
+
.dql-app-topbar-filters {
|
|
4091
|
+
flex: 1 1 100%;
|
|
4092
|
+
order: 2;
|
|
4093
|
+
}
|
|
4094
|
+
.dql-app-filter-row { align-items: stretch; }
|
|
4095
|
+
.dql-app-filter-row-copy, .dql-app-filter-row-actions { width: 100%; }
|
|
4096
|
+
.dql-app-filter-row-actions { justify-content: flex-end; }
|
|
4097
|
+
.dql-app-view-actions {
|
|
4098
|
+
flex: 1 1 100%;
|
|
4099
|
+
justify-content: flex-start;
|
|
4100
|
+
margin-left: 0;
|
|
4101
|
+
order: 3;
|
|
4102
|
+
}
|
|
4103
|
+
.dql-app-research-shell {
|
|
4104
|
+
grid-template-columns: 1fr;
|
|
4105
|
+
}
|
|
4106
|
+
.dql-app-research-detail {
|
|
4107
|
+
order: 1;
|
|
4108
|
+
}
|
|
4109
|
+
.dql-app-research-list {
|
|
4110
|
+
order: 2;
|
|
4111
|
+
}
|
|
4112
|
+
.dql-app-explain-panel {
|
|
4113
|
+
position: static;
|
|
4114
|
+
width: 100%;
|
|
4115
|
+
max-width: none;
|
|
4116
|
+
height: min(680px, calc(100vh - 24px));
|
|
4117
|
+
resize: none;
|
|
4118
|
+
max-height: none;
|
|
4119
|
+
}
|
|
4120
|
+
.dql-app-explain-panel[data-expanded="true"] {
|
|
4121
|
+
width: 100%;
|
|
4122
|
+
max-width: none;
|
|
4123
|
+
}
|
|
4124
|
+
}
|
|
4125
|
+
|
|
4126
|
+
@media (max-width: 760px) {
|
|
4127
|
+
.dql-apps-wrap,
|
|
4128
|
+
.dql-app-view-wrap {
|
|
4129
|
+
width: min(100% - 16px, calc(100vw - 104px));
|
|
4130
|
+
max-width: calc(100vw - 104px);
|
|
4131
|
+
margin: 0 auto;
|
|
4132
|
+
padding-bottom: 48px;
|
|
4133
|
+
}
|
|
4134
|
+
.dql-apps-libbar,
|
|
4135
|
+
.dql-app-buildbar,
|
|
4136
|
+
.dql-app-view-topbar,
|
|
4137
|
+
.dql-app-filterbar {
|
|
4138
|
+
align-items: stretch;
|
|
4139
|
+
flex-direction: column;
|
|
4140
|
+
overflow-x: visible;
|
|
4141
|
+
}
|
|
4142
|
+
.dql-app-filter-note {
|
|
4143
|
+
width: auto;
|
|
4144
|
+
height: auto;
|
|
4145
|
+
margin-left: 0;
|
|
4146
|
+
justify-content: flex-start;
|
|
4147
|
+
gap: 6px;
|
|
4148
|
+
font-size: 11px;
|
|
4149
|
+
}
|
|
4150
|
+
.dql-apps-grid,
|
|
4151
|
+
.dql-app-form-grid.two,
|
|
4152
|
+
.dql-app-settings-grid,
|
|
4153
|
+
.dql-app-ai-filter-preview { grid-template-columns: 1fr; }
|
|
4154
|
+
.dql-apps-ai-entry-box {
|
|
4155
|
+
grid-template-columns: 1fr;
|
|
4156
|
+
}
|
|
4157
|
+
.dql-apps-ai-entry-box button {
|
|
4158
|
+
width: 100%;
|
|
4159
|
+
}
|
|
4160
|
+
.dql-apps-ai-entry-foot {
|
|
4161
|
+
align-items: stretch;
|
|
4162
|
+
flex-direction: column;
|
|
4163
|
+
}
|
|
4164
|
+
.dql-apps-ai-entry-secondary {
|
|
4165
|
+
justify-content: center;
|
|
4166
|
+
}
|
|
4167
|
+
.dql-app-create-workspace.clean {
|
|
4168
|
+
padding: 16px;
|
|
4169
|
+
}
|
|
4170
|
+
.dql-app-ai-start-card {
|
|
4171
|
+
padding: 15px;
|
|
4172
|
+
}
|
|
4173
|
+
.dql-app-ai-start-card textarea {
|
|
4174
|
+
min-height: 150px;
|
|
4175
|
+
font-size: 15px;
|
|
4176
|
+
padding-bottom: 48px;
|
|
4177
|
+
}
|
|
4178
|
+
.dql-app-ai-start-send {
|
|
4179
|
+
right: 14px;
|
|
4180
|
+
bottom: 14px;
|
|
4181
|
+
}
|
|
4182
|
+
.dql-app-ai-generated-head {
|
|
4183
|
+
align-items: stretch;
|
|
4184
|
+
flex-direction: column;
|
|
4185
|
+
}
|
|
4186
|
+
.dql-app-mode-seg { margin: 0; width: 100%; }
|
|
4187
|
+
.dql-app-mode-seg button { flex: 1; }
|
|
4188
|
+
.dql-app-build-actions,
|
|
4189
|
+
.dql-app-view-actions { margin-left: 0; width: 100%; flex-wrap: wrap; }
|
|
4190
|
+
.dql-app-nav-row {
|
|
4191
|
+
width: 100%;
|
|
4192
|
+
justify-content: flex-start;
|
|
4193
|
+
flex-wrap: nowrap;
|
|
4194
|
+
overflow-x: auto;
|
|
4195
|
+
padding-bottom: 2px;
|
|
4196
|
+
}
|
|
4197
|
+
.dql-app-section-tabs {
|
|
4198
|
+
flex: 0 0 auto;
|
|
4199
|
+
max-width: none;
|
|
4200
|
+
}
|
|
4201
|
+
.dql-app-section-tabs button {
|
|
4202
|
+
min-width: auto;
|
|
4203
|
+
white-space: nowrap;
|
|
4204
|
+
}
|
|
4205
|
+
.dql-app-section-tabs .dql-app-tab-label {
|
|
4206
|
+
display: inline;
|
|
4207
|
+
}
|
|
4208
|
+
.dql-app-explain-panel {
|
|
4209
|
+
order: -1;
|
|
4210
|
+
min-width: 0;
|
|
4211
|
+
height: min(620px, calc(100vh - 160px));
|
|
4212
|
+
min-height: 420px;
|
|
4213
|
+
margin-bottom: 12px;
|
|
4214
|
+
}
|
|
4215
|
+
.dql-app-assistant-top {
|
|
4216
|
+
grid-template-columns: minmax(0, 1fr);
|
|
4217
|
+
align-items: stretch;
|
|
4218
|
+
}
|
|
4219
|
+
.dql-app-assistant-focus {
|
|
4220
|
+
flex: 1 1 100%;
|
|
4221
|
+
}
|
|
4222
|
+
.dql-app-assistant-focus select {
|
|
4223
|
+
width: 100%;
|
|
4224
|
+
max-width: none;
|
|
4225
|
+
}
|
|
4226
|
+
.dql-app-assistant-context-btn {
|
|
4227
|
+
position: static;
|
|
4228
|
+
justify-self: start;
|
|
4229
|
+
}
|
|
4230
|
+
.dql-app-direct-ask-row {
|
|
4231
|
+
grid-template-columns: minmax(0, 1fr);
|
|
4232
|
+
}
|
|
4233
|
+
.dql-app-direct-ask-row button {
|
|
4234
|
+
width: 100%;
|
|
4235
|
+
}
|
|
4236
|
+
.dql-app-page-picker {
|
|
4237
|
+
flex: 0 0 min(100%, 360px);
|
|
4238
|
+
}
|
|
4239
|
+
.dql-app-page-picker select { min-width: 0; max-width: 100%; }
|
|
4240
|
+
.dql-app-report-hero {
|
|
4241
|
+
padding: 18px 16px 16px;
|
|
4242
|
+
}
|
|
4243
|
+
.dql-app-report-status-row {
|
|
4244
|
+
align-items: flex-start;
|
|
4245
|
+
flex-direction: column;
|
|
4246
|
+
}
|
|
4247
|
+
.dql-app-report-hero h2 {
|
|
4248
|
+
font-size: 26px;
|
|
4249
|
+
line-height: 1.08;
|
|
4250
|
+
overflow-wrap: anywhere;
|
|
4251
|
+
}
|
|
4252
|
+
.dql-app-report-section {
|
|
4253
|
+
padding: 18px 16px;
|
|
4254
|
+
}
|
|
4255
|
+
.dql-app-report-paper {
|
|
4256
|
+
padding: 18px 18px 14px;
|
|
4257
|
+
}
|
|
4258
|
+
.dql-app-report-evidence-story {
|
|
4259
|
+
margin: 4px 16px 10px;
|
|
4260
|
+
}
|
|
4261
|
+
.dql-app-report-appendix {
|
|
4262
|
+
padding: 0;
|
|
4263
|
+
}
|
|
4264
|
+
.dql-app-report-appendix summary {
|
|
4265
|
+
padding: 16px;
|
|
4266
|
+
}
|
|
4267
|
+
.dql-app-report-appendix .dql-app-research-evidence-head,
|
|
4268
|
+
.dql-app-report-appendix .dql-app-research-table,
|
|
4269
|
+
.dql-app-report-appendix .dql-app-research-sql-review,
|
|
4270
|
+
.dql-app-report-appendix .dql-app-research-assumptions,
|
|
4271
|
+
.dql-app-report-appendix .dql-app-research-code {
|
|
4272
|
+
margin-left: 16px;
|
|
4273
|
+
margin-right: 16px;
|
|
4274
|
+
}
|
|
4275
|
+
.dql-app-direct-quick,
|
|
4276
|
+
.dql-app-report-evidence-story,
|
|
4277
|
+
.dql-app-report-numbers {
|
|
4278
|
+
grid-template-columns: 1fr;
|
|
4279
|
+
}
|
|
4280
|
+
.dql-app-report-evidence-story .dql-app-report-numbers {
|
|
4281
|
+
grid-template-columns: 1fr;
|
|
4282
|
+
}
|
|
4283
|
+
.dql-app-report-context-line span {
|
|
4284
|
+
white-space: normal;
|
|
4285
|
+
}
|
|
4286
|
+
.dql-app-preview-tile,
|
|
4287
|
+
.dql-app-preview-tile.wide { grid-column: 1 / -1; }
|
|
4288
|
+
.dql-app-drilldown-grid {
|
|
4289
|
+
grid-template-columns: 1fr;
|
|
4290
|
+
}
|
|
4291
|
+
}
|
|
4292
|
+
|
|
4293
|
+
/* ══ Redesigned AI build flow (Apps Redesign.dc.html) ══ */
|
|
4294
|
+
@keyframes dql-app-fadein { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: none; } }
|
|
4295
|
+
@keyframes dql-app-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
|
|
4296
|
+
@keyframes dql-app-orb { 0%, 100% { box-shadow: 0 0 0 0 rgba(107, 93, 211, 0); } 50% { box-shadow: 0 0 13px 1px rgba(107, 93, 211, 0.4); } }
|
|
4297
|
+
@keyframes dql-app-step { from { opacity: 0; transform: translateX(-4px); } to { opacity: 1; transform: none; } }
|
|
4298
|
+
|
|
4299
|
+
.dql-app-flow-scroll { min-height: 100%; }
|
|
4300
|
+
.dql-app-flow {
|
|
4301
|
+
width: min(880px, calc(100% - 48px));
|
|
4302
|
+
margin: 0 auto;
|
|
4303
|
+
padding: 28px 0 40px;
|
|
4304
|
+
display: flex;
|
|
4305
|
+
flex-direction: column;
|
|
4306
|
+
gap: 16px;
|
|
4307
|
+
}
|
|
4308
|
+
.dql-app-flow-head h2 { margin: 0; font-size: 18px; font-weight: 700; letter-spacing: -0.01em; color: var(--dql-app-ink); }
|
|
4309
|
+
.dql-app-flow-head p { margin: 3px 0 0; font-size: 12.5px; color: var(--dql-app-faint); }
|
|
4310
|
+
.dql-app-flow-bubble {
|
|
4311
|
+
align-self: flex-end;
|
|
4312
|
+
max-width: 78%;
|
|
4313
|
+
background: var(--dql-app-surface-muted);
|
|
4314
|
+
color: var(--dql-app-ink);
|
|
4315
|
+
border-radius: 16px 16px 4px 16px;
|
|
4316
|
+
padding: 10px 14px;
|
|
4317
|
+
font-size: 13px;
|
|
4318
|
+
line-height: 1.5;
|
|
4319
|
+
animation: dql-app-fadein 0.2s ease-out;
|
|
4320
|
+
}
|
|
4321
|
+
.dql-app-buildstream { display: flex; gap: 12px; animation: dql-app-fadein 0.25s ease-out; }
|
|
4322
|
+
.dql-app-buildorb {
|
|
4323
|
+
width: 30px; height: 30px; border-radius: 50%;
|
|
4324
|
+
background: var(--dql-app-accent-soft);
|
|
4325
|
+
border: 1px solid var(--dql-app-line);
|
|
4326
|
+
color: var(--dql-app-accent);
|
|
4327
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4328
|
+
flex: none;
|
|
4329
|
+
animation: dql-app-orb 1.8s ease-in-out infinite;
|
|
4330
|
+
}
|
|
4331
|
+
.dql-app-buildorb.still { animation: none; }
|
|
4332
|
+
.dql-app-buildbody { display: flex; flex-direction: column; gap: 7px; padding-top: 4px; min-width: 0; }
|
|
4333
|
+
.dql-app-buildbody.wide { flex: 1; gap: 10px; }
|
|
4334
|
+
.dql-app-shimmer {
|
|
4335
|
+
font-size: 13.5px; font-weight: 700; letter-spacing: -0.01em;
|
|
4336
|
+
background-image: linear-gradient(100deg, var(--dql-app-ink) 25%, var(--dql-app-accent) 50%, var(--dql-app-ink) 75%);
|
|
4337
|
+
background-size: 220% 100%;
|
|
4338
|
+
-webkit-background-clip: text; background-clip: text;
|
|
4339
|
+
color: transparent; -webkit-text-fill-color: transparent;
|
|
4340
|
+
animation: dql-app-shimmer 2.4s linear infinite;
|
|
4341
|
+
}
|
|
4342
|
+
.dql-app-buildsteps { display: flex; flex-direction: column; gap: 5px; font-size: 11.5px; color: var(--dql-app-faint); line-height: 1.45; }
|
|
4343
|
+
.dql-app-buildsteps > span { display: inline-flex; align-items: center; gap: 6px; animation: dql-app-step 0.3s ease-out both; }
|
|
4344
|
+
.dql-app-buildsteps .ok { color: var(--dql-app-green); flex: none; }
|
|
4345
|
+
.dql-app-buildsteps code { font-family: var(--font-mono); font-size: 10.5px; }
|
|
4346
|
+
.dql-app-buildsteps .dot { width: 5px; height: 5px; border-radius: 999px; background: var(--dql-app-accent); margin: 0 3px; flex: none; }
|
|
4347
|
+
.dql-app-proposal-lede { font-size: 13.5px; line-height: 1.6; color: var(--dql-app-ink); }
|
|
4348
|
+
.dql-app-proposal-card {
|
|
4349
|
+
border: 1px solid var(--dql-app-line);
|
|
4350
|
+
border-radius: 11px;
|
|
4351
|
+
background: var(--dql-app-surface);
|
|
4352
|
+
overflow: hidden;
|
|
4353
|
+
}
|
|
4354
|
+
.dql-app-proposal-row {
|
|
4355
|
+
display: flex; align-items: center; gap: 10px;
|
|
4356
|
+
width: 100%;
|
|
4357
|
+
padding: 10px 13px;
|
|
4358
|
+
border: 0; border-bottom: 1px solid var(--dql-app-line);
|
|
4359
|
+
background: var(--dql-app-surface);
|
|
4360
|
+
cursor: pointer; text-align: left; font-family: inherit;
|
|
4361
|
+
}
|
|
4362
|
+
.dql-app-proposal-row:hover { background: var(--dql-app-canvas); }
|
|
4363
|
+
.dql-app-proposal-row.off { background: var(--dql-app-canvas); }
|
|
4364
|
+
.dql-app-prop-check {
|
|
4365
|
+
width: 16px; height: 16px; border-radius: 4.5px;
|
|
4366
|
+
border: 1.5px solid var(--dql-app-line-2);
|
|
4367
|
+
background: var(--dql-app-surface);
|
|
4368
|
+
color: #fff;
|
|
4369
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4370
|
+
flex: none;
|
|
4371
|
+
}
|
|
4372
|
+
.dql-app-prop-check.on { border-color: var(--dql-app-accent); background: var(--dql-app-accent); }
|
|
4373
|
+
.dql-app-prop-glyph {
|
|
4374
|
+
width: 26px; height: 26px; border-radius: 6px;
|
|
4375
|
+
background: var(--dql-app-accent-soft); color: var(--dql-app-accent);
|
|
4376
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4377
|
+
flex: none; font-size: 13px;
|
|
4378
|
+
}
|
|
4379
|
+
.dql-app-prop-glyph.green { background: var(--dql-app-green-soft); color: var(--dql-app-green); }
|
|
4380
|
+
.dql-app-prop-name { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
|
|
4381
|
+
.dql-app-prop-name b { font-size: 12.5px; font-weight: 650; color: var(--dql-app-ink); font-family: var(--font-mono); }
|
|
4382
|
+
.dql-app-prop-name small { font-size: 11px; color: var(--dql-app-faint); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4383
|
+
.dql-app-prop-badge {
|
|
4384
|
+
flex: none; border-radius: 999px; padding: 2px 8px;
|
|
4385
|
+
font-size: 9.5px; font-weight: 700;
|
|
4386
|
+
}
|
|
4387
|
+
.dql-app-prop-badge.certified { border: 1px solid rgba(46, 139, 87, 0.33); color: var(--dql-app-green); background: var(--dql-app-green-soft); }
|
|
4388
|
+
.dql-app-prop-badge.draft { border: 1px solid rgba(178, 107, 31, 0.31); color: var(--dql-app-orange); background: var(--dql-app-orange-soft); }
|
|
4389
|
+
.dql-app-prop-viz { flex: none; font-size: 10.5px; color: var(--dql-app-faint); }
|
|
4390
|
+
.dql-app-addmore {
|
|
4391
|
+
display: flex; align-items: center; gap: 7px;
|
|
4392
|
+
width: 100%; padding: 10px 13px;
|
|
4393
|
+
border: 0; background: none;
|
|
4394
|
+
color: var(--dql-app-accent);
|
|
4395
|
+
font-size: 12px; font-weight: 650; cursor: pointer; font-family: inherit; text-align: left;
|
|
4396
|
+
}
|
|
4397
|
+
.dql-app-addmore:hover { background: var(--dql-app-accent-soft); }
|
|
4398
|
+
.dql-app-addmore-panel { border-top: 1px solid var(--dql-app-line); animation: dql-app-fadein 0.15s ease-out; }
|
|
4399
|
+
.dql-app-addmore-search {
|
|
4400
|
+
display: flex; align-items: center; gap: 7px;
|
|
4401
|
+
padding: 9px 13px;
|
|
4402
|
+
border-bottom: 1px solid var(--dql-app-line);
|
|
4403
|
+
background: var(--dql-app-canvas);
|
|
4404
|
+
color: var(--dql-app-faint);
|
|
4405
|
+
}
|
|
4406
|
+
.dql-app-addmore-search input {
|
|
4407
|
+
flex: 1; border: 0; background: none; outline: none;
|
|
4408
|
+
font-size: 12px; font-family: inherit; color: var(--dql-app-ink); min-width: 0;
|
|
4409
|
+
}
|
|
4410
|
+
.dql-app-addmore-row {
|
|
4411
|
+
display: flex; align-items: center; gap: 9px;
|
|
4412
|
+
width: 100%; padding: 8px 13px;
|
|
4413
|
+
border: 0; border-bottom: 1px solid var(--dql-app-line);
|
|
4414
|
+
background: none; cursor: pointer; text-align: left; font-family: inherit;
|
|
4415
|
+
color: var(--dql-app-accent);
|
|
4416
|
+
}
|
|
4417
|
+
.dql-app-addmore-row:hover { background: var(--dql-app-accent-soft); }
|
|
4418
|
+
.dql-app-addmore-row span { flex: 1; min-width: 0; font-size: 12px; font-family: var(--font-mono); color: var(--dql-app-ink); }
|
|
4419
|
+
.dql-app-addmore-row small { flex: none; font-size: 10.5px; color: var(--dql-app-faint); }
|
|
4420
|
+
.dql-app-addmore-hint { padding: 9px 13px; font-size: 11px; color: var(--dql-app-faint); }
|
|
4421
|
+
.dql-app-detected { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 11px; color: var(--dql-app-faint); }
|
|
4422
|
+
.dql-app-detected-label { font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; font-size: 9.5px; }
|
|
4423
|
+
.dql-app-detected-pill {
|
|
4424
|
+
border: 1px solid var(--dql-app-line);
|
|
4425
|
+
background: var(--dql-app-surface);
|
|
4426
|
+
border-radius: 999px; padding: 2.5px 9px;
|
|
4427
|
+
color: var(--dql-app-muted);
|
|
4428
|
+
}
|
|
4429
|
+
.dql-app-flow-gaps { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--dql-app-orange); }
|
|
4430
|
+
.dql-app-flow-gaps span { display: inline-flex; align-items: center; gap: 6px; }
|
|
4431
|
+
.dql-app-flow-actions { display: flex; align-items: center; gap: 8px; }
|
|
4432
|
+
.dql-app-flow-build {
|
|
4433
|
+
display: inline-flex; align-items: center; gap: 7px;
|
|
4434
|
+
height: 34px; padding: 0 16px;
|
|
4435
|
+
border-radius: 8px; border: 0;
|
|
4436
|
+
background: var(--dql-app-accent); color: #fff;
|
|
4437
|
+
font-size: 12.5px; font-weight: 650; cursor: pointer; font-family: inherit;
|
|
4438
|
+
box-shadow: 0 1px 5px rgba(107, 93, 211, 0.3);
|
|
4439
|
+
}
|
|
4440
|
+
.dql-app-flow-build:hover { filter: brightness(0.95); }
|
|
4441
|
+
.dql-app-flow-build:disabled { opacity: 0.55; cursor: default; }
|
|
4442
|
+
.dql-app-flow-reset {
|
|
4443
|
+
height: 34px; padding: 0 13px;
|
|
4444
|
+
border-radius: 8px; border: 1px solid var(--dql-app-line);
|
|
4445
|
+
background: var(--dql-app-surface); color: var(--dql-app-muted);
|
|
4446
|
+
font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit;
|
|
4447
|
+
}
|
|
4448
|
+
.dql-app-flow-reset:hover { background: var(--dql-app-surface-muted); }
|
|
4449
|
+
/* View / Edit segmented toggle (app workspace top bar) */
|
|
4450
|
+
.dql-app-modeseg {
|
|
4451
|
+
display: inline-flex; align-items: center; gap: 2px;
|
|
4452
|
+
padding: 2px;
|
|
4453
|
+
border: 1px solid var(--dql-app-line);
|
|
4454
|
+
border-radius: 7px;
|
|
4455
|
+
background: var(--dql-app-canvas);
|
|
4456
|
+
}
|
|
4457
|
+
.dql-app-modeseg button {
|
|
4458
|
+
border: 0; border-radius: 5px;
|
|
4459
|
+
padding: 4px 12px;
|
|
4460
|
+
font-size: 11.5px; font-weight: 600;
|
|
4461
|
+
cursor: pointer; font-family: inherit;
|
|
4462
|
+
display: inline-flex; align-items: center; gap: 5px;
|
|
4463
|
+
background: transparent; color: var(--dql-app-faint);
|
|
4464
|
+
}
|
|
4465
|
+
.dql-app-modeseg button.on { background: var(--dql-app-accent-soft); color: var(--dql-app-accent); }
|
|
4466
|
+
`;export{is as AppsView};
|