@brftech/filex 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/{ArchiveViewer-BQ5umRKO.js → ArchiveViewer-CNOSf-KQ.js} +2 -2
  2. package/dist/{ArchiveViewer-BQ5umRKO.js.map → ArchiveViewer-CNOSf-KQ.js.map} +1 -1
  3. package/dist/{CsvViewer-B4HaZoF8.js → CsvViewer-Daynga4F.js} +2 -2
  4. package/dist/{CsvViewer-B4HaZoF8.js.map → CsvViewer-Daynga4F.js.map} +1 -1
  5. package/dist/{DrawioViewer-D8oIzZs7.js → DrawioViewer-OwupnkD6.js} +2 -2
  6. package/dist/{DrawioViewer-D8oIzZs7.js.map → DrawioViewer-OwupnkD6.js.map} +1 -1
  7. package/dist/{EpubViewer-CqSJ8cUr.js → EpubViewer-DT2BBYCW.js} +2 -2
  8. package/dist/{EpubViewer-CqSJ8cUr.js.map → EpubViewer-DT2BBYCW.js.map} +1 -1
  9. package/dist/{IpynbViewer-EKD7M-Pv.js → IpynbViewer-CFtju9N6.js} +2 -2
  10. package/dist/{IpynbViewer-EKD7M-Pv.js.map → IpynbViewer-CFtju9N6.js.map} +1 -1
  11. package/dist/{MermaidViewer-D7aLBcbT.js → MermaidViewer-CHDQGOsy.js} +2 -2
  12. package/dist/{MermaidViewer-D7aLBcbT.js.map → MermaidViewer-CHDQGOsy.js.map} +1 -1
  13. package/dist/{PsdViewer-B3yfsc6X.js → PsdViewer-DkiaIx4M.js} +2 -2
  14. package/dist/{PsdViewer-B3yfsc6X.js.map → PsdViewer-DkiaIx4M.js.map} +1 -1
  15. package/dist/{TiffViewer-CGfxjKvt.js → TiffViewer-ct_Z5VWk.js} +2 -2
  16. package/dist/{TiffViewer-CGfxjKvt.js.map → TiffViewer-ct_Z5VWk.js.map} +1 -1
  17. package/dist/{Viewer3D-aTags5xs.js → Viewer3D-BuW4GfJU.js} +2 -2
  18. package/dist/{Viewer3D-aTags5xs.js.map → Viewer3D-BuW4GfJU.js.map} +1 -1
  19. package/dist/filex.js +1 -1
  20. package/dist/filex.umd.cjs +1 -1
  21. package/dist/filex.umd.cjs.map +1 -1
  22. package/dist/{index-BUM9bNvd.js → index-DT29FlKR.js} +20 -20
  23. package/dist/{index-BUM9bNvd.js.map → index-DT29FlKR.js.map} +1 -1
  24. package/dist/style.css +1 -1
  25. package/package.json +2 -2
@@ -52,7 +52,7 @@
52
52
  `)},{kind:"note",text:t("conn.guide.nfs.mac.resvport")}]},{id:"windows",name:"Windows (Client for NFS)",platform:"windows",blocks:[{kind:"steps",steps:[t("conn.guide.nfs.win.s1"),t("conn.guide.nfs.win.s2"),t("conn.guide.nfs.win.s3")]},{kind:"code",caption:t("conn.guide.nfs.win.cmdCaption"),code:`mount -o anon nolock ${n}:${a} Z:`},{kind:"warn",text:t("conn.guide.nfs.win.port")}]},{id:"synology",name:t("conn.guide.nfs.nas.tab"),platform:"any",blocks:[{kind:"steps",steps:[t("conn.guide.nfs.nas.s1",{host:n,port:String(r)}),t("conn.guide.nfs.nas.s2"),t("conn.guide.nfs.nas.s3")]}]}],u=[{kind:"warn",text:t("conn.guide.nfs.note.unencrypted")},{kind:"warn",text:t("conn.guide.nfs.note.pathIsSecret")},{kind:"note",text:t("conn.guide.nfs.note.noPortmapper")},{kind:"note",text:t("conn.guide.nfs.note.uid")},{kind:"note",text:t("conn.guide.nfs.note.trash")},{kind:"note",text:t("conn.guide.nfs.note.revoke")}];return e.nfsEnabled===!1&&u.unshift({kind:"warn",text:t("conn.guide.nfs.note.disabled")}),{id:"nfs",name:"NFS",summary:t("conn.guide.nfs.summary"),facts:s,clients:l,notes:u}},mount:(e,t)=>{const n=e.origin.replace(/\/+$/,""),r=e.storage||e.storages[0]||"main",a=[{label:t("conn.guide.mount.fact.url"),value:n,hint:t("conn.guide.mount.fact.urlHint")},{label:t("conn.guide.mount.fact.token"),value:t("conn.guide.mount.fact.tokenPlaceholder"),hint:t("conn.guide.mount.fact.tokenHint"),placeholderOnly:!0},{label:t("conn.guide.mount.fact.remote"),value:`${r}://`,hint:t("conn.guide.mount.fact.remoteHint")}],i=[{id:"linux",name:"Linux",platform:"linux",blocks:[{kind:"code",caption:t("conn.guide.mount.linux.mountCaption"),code:[`export FILEX_URL=${n}`,"export FILEX_TOKEN=<token>","","mkdir -p ~/filex","filex mount ~/filex","","# one storage only, or a subfolder of it:",`filex mount --remote '${r}://' ~/filex`,`filex mount --remote '${r}://projects/acme' --read-only ~/acme`].join(`
53
53
  `)},{kind:"code",caption:t("conn.guide.mount.linux.umountCaption"),code:"fusermount -u ~/filex"},{kind:"warn",text:t("conn.guide.mount.linux.umountWarn")},{kind:"code",caption:t("conn.guide.mount.linux.systemdCaption"),code:["# ~/.config/systemd/user/filex-mount.service","[Unit]","Description=filex mount","After=network-online.target","","[Service]",`Environment=FILEX_URL=${n}`,"Environment=FILEX_TOKEN=<token>","ExecStart=%h/.local/bin/filex mount %h/filex","ExecStop=/bin/fusermount -u %h/filex","Restart=on-failure","","[Install]","WantedBy=default.target"].join(`
54
54
  `)}]},{id:"windows",name:"Windows",platform:"windows",blocks:[{kind:"note",text:t("conn.guide.mount.win.winfsp")},{kind:"code",caption:t("conn.guide.mount.win.mountCaption"),code:[`$env:FILEX_URL = "${n}"`,'$env:FILEX_TOKEN = "<token>"',"","filex mount Z:"].join(`
55
- `)},{kind:"warn",text:t("conn.guide.mount.win.freeLetter")},{kind:"note",text:t("conn.guide.mount.win.stop")}]},{id:"macos",name:"macOS",platform:"macos",blocks:[{kind:"warn",text:t("conn.guide.mount.mac.unsupported")},{kind:"note",text:t("conn.guide.mount.mac.alternatives")}]}],o=[{kind:"note",text:t("conn.guide.mount.note.notASync")},{kind:"note",text:t("conn.guide.mount.note.reachable")},{kind:"note",text:t("conn.guide.mount.note.wholeFileWrites")},{kind:"note",text:t("conn.guide.mount.note.trash")},{kind:"note",text:t("conn.guide.mount.note.revoke")}];return{id:"mount",name:"filex mount",summary:t("conn.guide.mount.summary"),facts:a,clients:i,notes:o}}},Yz={webdav:"WebDAV",s3:"S3",sftp:"SFTP",ftps:"FTPS",nfs:"NFS",mount:"filex mount"};function Zz(e){return Yz[e]||e.toUpperCase()}function Xz(){return Object.keys(Yb)}function Jz(e,t,n){const r=Yb[e];return r?r(t,n):null}const Qz={class:"fe-cfield"},eN={key:0,class:"fe-cfield__empty"},tN={key:0,class:"fe-cfield__check"},nN=["checked","disabled","onChange"],rN=["for"],aN={key:0,class:"fe-cfield__req","aria-hidden":"true"},iN=["id","value","disabled","onChange"],oN=["value"],sN=["id","value","placeholder","disabled","onInput"],lN={key:4,class:"fe-cfield__secret"},uN=["id","type","value","placeholder","disabled","onInput"],cN=["title","aria-label","onClick"],dN=["id","type","value","placeholder","min","max","disabled","onInput"],fN={key:6,class:"fe-cfield__help"},pN={key:7,class:"fe-cfield__error"},hN={key:1,class:"fe-cfield__adv"},mN={key:0,class:"fe-cfield__advbody"},vN={key:0,class:"fe-cfield__check"},gN=["checked","disabled","onChange"],bN=["for"],_N=["id","type","value","placeholder","disabled","onInput"],yN={key:2,class:"fe-cfield__help"},xN=Mt({__name:"StorageFields",props:{fields:{},modelValue:{},locale:{},invalid:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=t,{t:a}=an(()=>n.locale),i=X(!1),o=X({}),s=$e(()=>n.fields.filter(m=>!m.advanced)),l=$e(()=>n.fields.filter(m=>m.advanced));function u(m){const k=a(m.i18n_key);return k===m.i18n_key?m.label:k}function c(m){if(!m.help_i18n_key)return m.help??"";const k=a(m.help_i18n_key);return k===m.help_i18n_key?m.help??"":k}function d(m){if(!m.i18n_key)return m.label;const k=a(m.i18n_key);return k===m.i18n_key?m.label:k}function f(m,k){r("update:modelValue",{...n.modelValue,[m]:k})}function p(m){var E,A;const k=(E=n.modelValue)==null?void 0:E[m.key];if(k!=null)return k;for(const S of m.aliases??[]){const x=(A=n.modelValue)==null?void 0:A[S];if(x!=null)return x}return m.default??void 0}function _(m){const k=p(m);return k==null?"":String(k)}function g(m){const k=p(m);return k===""||k===void 0||k===null?"":String(k)}function y(m){return p(m)===!0}function h(m){return(n.invalid??[]).includes(m.key)}function b(m){return m.type==="int"?"number":m.type==="password"&&!o.value[m.key]?"password":"text"}function v(m){o.value={...o.value,[m]:!o.value[m]}}return(m,k)=>(O(),N("div",Qz,[e.fields.length?_e("",!0):(O(),N("p",eN,L(I(a)("conn.form.noFields")),1)),(O(!0),N(qe,null,pt(s.value,E=>(O(),N("div",{key:E.key,class:dt(["fe-cfield__row",{"is-invalid":h(E)}])},[E.type==="bool"?(O(),N("label",tN,[w("input",{type:"checkbox",checked:y(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.checked)},null,40,nN),w("span",null,L(u(E)),1)])):(O(),N("label",{key:1,class:"fe-cfield__label",for:`fe-cf-${E.key}`},[$t(L(u(E)),1),E.required?(O(),N("span",aN,"*")):_e("",!0)],8,rN)),E.type==="select"?(O(),N("select",{key:2,id:`fe-cf-${E.key}`,class:"fe-cfield__input",value:_(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.value)},[(O(!0),N(qe,null,pt(E.options??[],A=>(O(),N("option",{key:A.value,value:A.value},L(d(A)),9,oN))),128))],40,iN)):E.multiline?(O(),N("textarea",{key:3,id:`fe-cf-${E.key}`,class:dt(["fe-cfield__input fe-cfield__input--area",{"fe-cfield__input--mono":E.monospace}]),rows:"4",value:_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,A.target.value)},null,42,sN)):E.type==="password"?(O(),N("div",lN,[w("input",{id:`fe-cf-${E.key}`,class:"fe-cfield__input fe-cfield__input--mono",type:b(E),autocomplete:"new-password",spellcheck:"false",value:_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,A.target.value)},null,40,uN),w("button",{type:"button",class:"fe-cfield__eye",title:o.value[E.key]?I(a)("conn.form.hide"):I(a)("conn.form.reveal"),"aria-label":o.value[E.key]?I(a)("conn.form.hide"):I(a)("conn.form.reveal"),onClick:A=>v(E.key)},L(o.value[E.key]?"🙈":"👁"),9,cN)])):E.type!=="bool"?(O(),N("input",{key:5,id:`fe-cf-${E.key}`,class:dt(["fe-cfield__input",{"fe-cfield__input--mono":E.monospace}]),type:b(E),value:E.type==="int"?g(E):_(E),placeholder:E.placeholder,min:E.min,max:E.max,disabled:e.disabled,onInput:A=>f(E.key,E.type==="int"?A.target.value===""?null:Number(A.target.value):A.target.value)},null,42,dN)):_e("",!0),c(E)?(O(),N("p",fN,L(c(E)),1)):_e("",!0),h(E)?(O(),N("p",pN,L(I(a)("conn.form.required")),1)):_e("",!0)],2))),128)),l.value.length?(O(),N("div",hN,[w("button",{type:"button",class:"fe-cfield__advtoggle",onClick:k[0]||(k[0]=E=>i.value=!i.value)},L(i.value?"▾":"▸")+" "+L(I(a)("conn.form.advanced")),1),i.value?(O(),N("div",mN,[(O(!0),N(qe,null,pt(l.value,E=>(O(),N("div",{key:E.key,class:"fe-cfield__row"},[E.type==="bool"?(O(),N("label",vN,[w("input",{type:"checkbox",checked:y(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.checked)},null,40,gN),w("span",null,L(u(E)),1)])):(O(),N(qe,{key:1},[w("label",{class:"fe-cfield__label",for:`fe-cfa-${E.key}`},L(u(E)),9,bN),w("input",{id:`fe-cfa-${E.key}`,class:dt(["fe-cfield__input",{"fe-cfield__input--mono":E.monospace}]),type:b(E),value:E.type==="int"?g(E):_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,E.type==="int"?A.target.value===""?null:Number(A.target.value):A.target.value)},null,42,_N)],64)),c(E)?(O(),N("p",yN,L(c(E)),1)):_e("",!0)]))),128))])):_e("",!0)])):_e("",!0)]))}}),kN={class:"fe-guide"},wN={class:"fe-guide__summary"},SN={class:"fe-guide__facts","data-testid":"guide-facts"},EN={class:"fe-guide__factlabel"},CN={class:"fe-guide__factvalue"},AN=["data-testid","onClick"],TN={key:0,class:"fe-guide__facthint"},DN={class:"fe-guide__tabs",role:"tablist"},MN=["aria-selected","data-testid","onClick"],ON={key:0,class:"fe-guide__body",role:"tabpanel"},IN={key:0,class:"fe-guide__steps"},RN={key:1,class:"fe-guide__codewrap"},zN={class:"fe-guide__codehead"},NN={class:"fe-guide__caption"},FN=["data-testid","onClick"],LN={class:"fe-guide__code"},PN={key:2,class:"fe-guide__warn"},BN={key:3,class:"fe-guide__note"},$N={key:4,class:"fe-guide__text"},UN={key:1,class:"fe-guide__notes"},HN={class:"fe-guide__notestitle"},GN=Mt({__name:"ConnectionGuideView",props:{guide:{},locale:{}},setup(e){var c;const t=e,{t:n}=an(()=>t.locale),r=X(((c=t.guide.clients[0])==null?void 0:c.id)??""),a=X(null);let i=null;const o=$e(()=>t.guide.clients.find(d=>d.id===r.value)??t.guide.clients[0]);async function s(d,f){let p=!1;try{await navigator.clipboard.writeText(d),p=!0}catch{try{const _=document.createElement("textarea");_.value=d,_.setAttribute("readonly",""),_.style.position="fixed",_.style.opacity="0",document.body.appendChild(_),_.select(),p=document.execCommand("copy"),document.body.removeChild(_)}catch{p=!1}}a.value=p?f:null,i&&clearTimeout(i),i=setTimeout(()=>{a.value=null},1600)}function l(d,f){return`${d}-${f}`}function u(d){return d.kind==="code"}return(d,f)=>(O(),N("div",kN,[w("p",wN,L(e.guide.summary),1),w("section",SN,[(O(!0),N(qe,null,pt(e.guide.facts,(p,_)=>(O(),N("div",{key:p.label,class:"fe-guide__fact"},[w("span",EN,L(p.label),1),w("span",CN,[w("code",{class:dt({"fe-guide__ph":p.placeholderOnly})},L(p.value),3),p.placeholderOnly?_e("",!0):(O(),N("button",{key:0,type:"button",class:"fe-guide__copy","data-testid":`copy-fact-${_}`,onClick:g=>s(p.value,l("fact",_))},L(a.value===l("fact",_)?I(n)("conn.guide.copied"):I(n)("conn.guide.copy")),9,AN))]),p.hint?(O(),N("span",TN,L(p.hint),1)):_e("",!0)]))),128))]),w("nav",DN,[(O(!0),N(qe,null,pt(e.guide.clients,p=>(O(),N("button",{key:p.id,type:"button",role:"tab",class:dt(["fe-guide__tab",{"is-active":o.value&&p.id===o.value.id}]),"aria-selected":o.value&&p.id===o.value.id,"data-testid":`guide-tab-${p.id}`,onClick:_=>r.value=p.id},L(p.name),11,MN))),128))]),o.value?(O(),N("div",ON,[(O(!0),N(qe,null,pt(o.value.blocks,(p,_)=>(O(),N(qe,{key:_},[p.kind==="steps"?(O(),N("ol",IN,[(O(!0),N(qe,null,pt(p.steps??[],(g,y)=>(O(),N("li",{key:y},L(g),1))),128))])):u(p)?(O(),N("div",RN,[w("div",zN,[w("span",NN,L(p.caption),1),w("button",{type:"button",class:"fe-guide__copy","data-testid":`copy-code-${_}`,onClick:g=>s(p.code??"",l(o.value.id,_))},L(a.value===l(o.value.id,_)?I(n)("conn.guide.copied"):I(n)("conn.guide.copy")),9,FN)]),w("pre",LN,[w("code",null,L(p.code),1)])])):p.kind==="warn"?(O(),N("p",PN,L(p.text),1)):p.kind==="note"?(O(),N("p",BN,L(p.text),1)):(O(),N("p",$N,L(p.text),1))],64))),128))])):_e("",!0),e.guide.notes.length?(O(),N("section",UN,[w("h4",HN,L(I(n)("conn.guide.goodToKnow")),1),(O(!0),N(qe,null,pt(e.guide.notes,(p,_)=>(O(),N("p",{key:_,class:dt(p.kind==="warn"?"fe-guide__warn":"fe-guide__note")},L(p.text),3))),128))])):_e("",!0)]))}});function qN(e){const t=us(e),n=fs(e),r=v=>`${n}${v}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null),c=X(null);function d(v){const m=v;if(m!=null&&m.detail)try{const k=JSON.parse(m.detail);if(k!=null&&k.error)return k.error}catch{}return(m==null?void 0:m.message)||String(v)}function f(v){return v==null?void 0:v.status}async function p(){o.value=!0,l.value=null;try{const v=await t.jsonFetch(r("/api/auth/s3-keys"));a.value=Array.isArray(v==null?void 0:v.keys)?v.keys:[],i.value={endpoint:(v==null?void 0:v.endpoint)??"",enabled:(v==null?void 0:v.enabled)!==!1,path_style:(v==null?void 0:v.path_style)!==!1},u.value=!0}catch(v){a.value=[];const m=f(v);m===401||m===403?u.value=!1:(u.value=!1,l.value=d(v))}finally{o.value=!1,s.value=!0}}async function _(v){l.value=null;try{const m=await t.jsonFetch(r("/api/auth/s3-keys"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});return c.value=m,m!=null&&m.endpoint&&(i.value={endpoint:m.endpoint,enabled:m.enabled!==!1,path_style:m.path_style!==!1}),await p(),m}catch(m){return l.value=d(m),null}}async function g(v,m){l.value=null;try{await t.jsonFetch(r(`/api/auth/s3-keys/${v}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:m})}),await p()}catch(k){l.value=d(k)}}async function y(v){var m,k;l.value=null;try{await t.jsonFetch(r(`/api/auth/s3-keys/${v}`),{method:"DELETE"}),((k=(m=c.value)==null?void 0:m.key)==null?void 0:k.id)===v&&(c.value=null),await p()}catch(E){l.value=d(E)}}function h(){c.value=null}const b=$e(()=>{var m;if((m=c.value)!=null&&m.key)return c.value.key;const v=a.value.filter(k=>!k.disabled_at);return v.length?v.reduce((k,E)=>k.created_at>=E.created_at?k:E):null});return{keys:a,connection:i,loading:o,loaded:s,error:l,canMint:u,revealed:c,guideKey:b,load:p,create:_,setDisabled:g,remove:y,dismissSecret:h}}const KN={class:"fe-s3keys","data-testid":"s3-keys"},jN={class:"fe-s3keys__head"},VN={class:"fe-s3keys__title"},WN={class:"fe-s3keys__lead"},YN={key:0,class:"fe-s3keys__warn"},ZN={key:1,class:"fe-s3keys__muted"},XN={key:2,class:"fe-s3keys__warn"},JN={key:3,class:"fe-s3keys__form"},QN=["placeholder"],eF={value:""},tF=["value"],nF=["placeholder","disabled"],rF=["disabled"],aF={key:4,class:"fe-s3keys__hint"},iF={key:5,class:"fe-s3keys__secret","data-testid":"s3-key-secret"},oF={class:"fe-s3keys__once"},sF={class:"fe-s3keys__pair"},lF={class:"fe-s3keys__k"},uF={class:"fe-s3keys__pair"},cF={class:"fe-s3keys__k"},dF={key:6,class:"fe-s3keys__muted"},fF={key:7,class:"fe-s3keys__table"},pF={class:"fe-s3keys__actions"},hF=["disabled","onClick"],mF=["disabled","onClick"],vF={key:8,class:"fe-s3keys__muted"},gF=Mt({__name:"S3KeysPanel",props:{config:{},storages:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{keys:o,connection:s,loading:l,error:u,canMint:c,revealed:d,guideKey:f,load:p,create:_,setDisabled:g,remove:y,dismissSecret:h}=qN(n.config),b=X(""),v=X(""),m=X(""),k=X(!1),E=X(null),A=X(null);let S=null;function x(){var Y,J,H,G,R;const U=s.value;U&&r("active",{accessKeyID:((Y=f.value)==null?void 0:Y.access_key_id)??"",secret:((H=(J=d.value)==null?void 0:J.key)==null?void 0:H.id)===((G=f.value)==null?void 0:G.id)?(R=d.value)==null?void 0:R.secret:void 0,endpoint:U.endpoint,pathStyle:U.path_style})}jt(async()=>{await p(),x()});async function C(){k.value=!0;try{await _({label:b.value.trim()||i("conn.s3keys.defaultLabel"),bucket:v.value.trim()||void 0,prefix:m.value.trim()||void 0}),b.value="",x()}finally{k.value=!1}}async function T(U){k.value=!0;try{await g(U.id,!U.disabled_at),x()}finally{k.value=!1}}async function $(U){if(E.value!==U.id){E.value=U.id;return}E.value=null,k.value=!0;try{await y(U.id),x()}finally{k.value=!1}}async function P(U,Y){let J=!1;try{await navigator.clipboard.writeText(U),J=!0}catch{try{const H=document.createElement("textarea");H.value=U,H.setAttribute("readonly",""),H.style.position="fixed",H.style.opacity="0",document.body.appendChild(H),H.select(),J=document.execCommand("copy"),document.body.removeChild(H)}catch{J=!1}}J&&(A.value=Y,S&&clearTimeout(S),S=setTimeout(()=>A.value=null,1600))}function K(U){if(!U)return"";const Y=new Date(U);return Number.isNaN(Y.getTime())?"":Y.toLocaleDateString()}function Q(U){return U.bucket?U.prefix?`${U.bucket}/${U.prefix}`:U.bucket:i("conn.s3keys.scopeAll")}return(U,Y)=>(O(),N("section",KN,[w("header",jN,[w("h4",VN,L(I(i)("conn.s3keys.title")),1),w("p",WN,L(I(i)("conn.s3keys.lead")),1)]),I(s)&&!I(s).enabled?(O(),N("p",YN,L(I(i)("conn.s3keys.disabled")),1)):_e("",!0),I(c)===!1?(O(),N("p",ZN,L(I(i)("conn.s3keys.cannotMint")),1)):_e("",!0),I(u)?(O(),N("p",XN,L(I(u)),1)):_e("",!0),I(c)?(O(),N("div",JN,[Dt(w("input",{"onUpdate:modelValue":Y[0]||(Y[0]=J=>b.value=J),class:"fe-cfield__input",placeholder:I(i)("conn.s3keys.label"),"data-testid":"s3-key-label"},null,8,QN),[[pn,b.value]]),Dt(w("select",{"onUpdate:modelValue":Y[1]||(Y[1]=J=>v.value=J),class:"fe-cfield__input","data-testid":"s3-key-bucket"},[w("option",eF,L(I(i)("conn.s3keys.everyBucket")),1),(O(!0),N(qe,null,pt(e.storages,J=>(O(),N("option",{key:J,value:J},L(J),9,tF))),128))],512),[[mi,v.value]]),Dt(w("input",{"onUpdate:modelValue":Y[2]||(Y[2]=J=>m.value=J),class:"fe-cfield__input",placeholder:I(i)("conn.s3keys.prefix"),disabled:!v.value,"data-testid":"s3-key-prefix"},null,8,nF),[[pn,m.value]]),w("button",{class:"fe-s3keys__btn",disabled:k.value,"data-testid":"s3-key-mint",onClick:C},L(I(i)("conn.s3keys.mint")),9,rF)])):_e("",!0),I(c)?(O(),N("p",aF,L(I(i)("conn.s3keys.inheritNote")),1)):_e("",!0),I(d)?(O(),N("div",iF,[w("p",oF,L(I(i)("conn.s3keys.once")),1),w("div",sF,[w("span",lF,L(I(i)("conn.s3keys.accessKeyID")),1),w("code",null,L(I(d).key.access_key_id),1),w("button",{class:"fe-s3keys__copy",onClick:Y[3]||(Y[3]=J=>P(I(d).key.access_key_id,"akid"))},L(A.value==="akid"?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("div",uF,[w("span",cF,L(I(i)("conn.s3keys.secret")),1),w("code",null,L(I(d).secret),1),w("button",{class:"fe-s3keys__copy",onClick:Y[4]||(Y[4]=J=>P(I(d).secret,"secret"))},L(A.value==="secret"?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:Y[5]||(Y[5]=(...J)=>I(h)&&I(h)(...J))},L(I(i)("conn.s3keys.dismiss")),1)])):_e("",!0),I(l)?(O(),N("p",dF,"…")):I(o).length?(O(),N("table",fF,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.s3keys.col.label")),1),w("th",null,L(I(i)("conn.s3keys.col.key")),1),w("th",null,L(I(i)("conn.s3keys.col.scope")),1),w("th",null,L(I(i)("conn.s3keys.col.lastUsed")),1),Y[6]||(Y[6]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),J=>(O(),N("tr",{key:J.id,class:dt({"is-off":!!J.disabled_at})},[w("td",null,L(J.label||I(i)("conn.s3keys.noLabel")),1),w("td",null,[w("code",null,L(J.access_key_id),1)]),w("td",null,L(Q(J)),1),w("td",null,L(J.last_used_at?K(J.last_used_at):I(i)("conn.s3keys.neverUsed")),1),w("td",pF,[w("button",{class:"fe-s3keys__link",disabled:k.value,onClick:H=>T(J)},L(J.disabled_at?I(i)("conn.s3keys.enable"):I(i)("conn.s3keys.disable")),9,hF),w("button",{class:"fe-s3keys__link is-danger",disabled:k.value,onClick:H=>$(J)},L(E.value===J.id?I(i)("conn.s3keys.confirm"):I(i)("conn.s3keys.revoke")),9,mF)])],2))),128))])])):I(c)?(O(),N("p",vF,L(I(i)("conn.s3keys.empty")),1)):_e("",!0)]))}});function bF(e){const t=us(e),n=fs(e),r=h=>`${n}${h}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null);function c(h){const b=h;if(b!=null&&b.detail)try{const v=JSON.parse(b.detail);if(v!=null&&v.error)return v.error}catch{}return(b==null?void 0:b.message)||String(h)}function d(h){return h==null?void 0:h.status}async function f(){o.value=!0,l.value=null;try{const h=await t.jsonFetch(r("/api/auth/ssh-keys"));a.value=Array.isArray(h==null?void 0:h.keys)?h.keys:[],i.value={enabled:(h==null?void 0:h.enabled)!==!1,host:(h==null?void 0:h.host)??"",port:(h==null?void 0:h.port)??2022,login:(h==null?void 0:h.login)??"",ftps:h==null?void 0:h.ftps},u.value=!0}catch(h){a.value=[],u.value=!1,d(h)!==401&&d(h)!==403&&(l.value=c(h))}finally{o.value=!1,s.value=!0}}async function p(h,b){l.value=null;try{return await t.jsonFetch(r("/api/auth/ssh-keys"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:h,name:b})}),await f(),!0}catch(v){return l.value=c(v),!1}}async function _(h,b){l.value=null;try{await t.jsonFetch(r(`/api/auth/ssh-keys/${h}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:b})}),await f()}catch(v){l.value=c(v)}}async function g(h){l.value=null;try{await t.jsonFetch(r(`/api/auth/ssh-keys/${h}`),{method:"DELETE"}),await f()}catch(b){l.value=c(b)}}const y=$e(()=>a.value.some(h=>!h.disabled_at));return{keys:a,connection:i,loading:o,loaded:s,error:l,canAdd:u,hasUsableKey:y,load:f,add:p,setDisabled:_,remove:g}}const _F={key:0,class:"fe-s3keys","data-testid":"ssh-keys"},yF={class:"fe-s3keys__head"},xF={class:"fe-s3keys__title"},kF={class:"fe-s3keys__lead"},wF={key:0,class:"fe-s3keys__warn"},SF={key:1,class:"fe-s3keys__muted"},EF={key:2,class:"fe-s3keys__warn"},CF={key:3,class:"fe-sshkeys__form"},AF=["placeholder"],TF={class:"fe-sshkeys__row"},DF=["placeholder"],MF=["disabled"],OF={class:"fe-s3keys__hint"},IF={key:4,class:"fe-s3keys__muted"},RF={key:5,class:"fe-s3keys__table"},zF={class:"fe-s3keys__actions"},NF=["disabled","onClick"],FF=["disabled","onClick"],LF={key:6,class:"fe-s3keys__muted"},PF=Mt({__name:"SSHKeysPanel",props:{config:{},keysVisible:{type:Boolean}},emits:["active"],setup(e,{emit:t}){const n=e,r=$e(()=>n.keysVisible!==!1),a=t,i=$e(()=>n.config.locale??"tr"),{t:o}=an(i),{keys:s,connection:l,loading:u,error:c,canAdd:d,hasUsableKey:f,load:p,add:_,setDisabled:g,remove:y}=bF(n.config),h=X(""),b=X(""),v=X(!1),m=X(null);function k(){const T=l.value;T&&a("active",{host:T.host,port:T.port,login:T.login,enabled:T.enabled,hasKey:f.value,ftps:T.ftps})}jt(async()=>{await p(),k()});async function E(){if(h.value.trim()){v.value=!0;try{await _(h.value.trim(),b.value.trim()||void 0)&&(h.value="",b.value=""),k()}finally{v.value=!1}}}async function A(T){v.value=!0;try{await g(T.id,!T.disabled_at),k()}finally{v.value=!1}}async function S(T){if(m.value!==T.id){m.value=T.id;return}m.value=null,v.value=!0;try{await y(T.id),k()}finally{v.value=!1}}function x(T){if(!T)return"";const $=new Date(T);return Number.isNaN($.getTime())?"":$.toLocaleDateString()}function C(T){return"SHA256:"+T.fingerprint}return(T,$)=>r.value?(O(),N("section",_F,[w("header",yF,[w("h4",xF,L(I(o)("conn.sshkeys.title")),1),w("p",kF,L(I(o)("conn.sshkeys.lead")),1)]),I(l)&&!I(l).enabled?(O(),N("p",wF,L(I(o)("conn.sshkeys.disabled")),1)):_e("",!0),I(d)===!1?(O(),N("p",SF,L(I(o)("conn.sshkeys.cannotAdd")),1)):_e("",!0),I(c)?(O(),N("p",EF,L(I(c)),1)):_e("",!0),I(d)?(O(),N("div",CF,[Dt(w("textarea",{"onUpdate:modelValue":$[0]||($[0]=P=>h.value=P),class:"fe-cfield__input fe-sshkeys__paste",rows:"2",spellcheck:"false",placeholder:I(o)("conn.sshkeys.paste"),"data-testid":"ssh-key-input"},null,8,AF),[[pn,h.value]]),w("div",TF,[Dt(w("input",{"onUpdate:modelValue":$[1]||($[1]=P=>b.value=P),class:"fe-cfield__input",placeholder:I(o)("conn.sshkeys.name"),"data-testid":"ssh-key-name"},null,8,DF),[[pn,b.value]]),w("button",{class:"fe-s3keys__btn",disabled:v.value,"data-testid":"ssh-key-add",onClick:E},L(I(o)("conn.sshkeys.add")),9,MF)]),w("p",OF,L(I(o)("conn.sshkeys.noCopyId")),1)])):_e("",!0),I(u)?(O(),N("p",IF,"…")):I(s).length?(O(),N("table",RF,[w("thead",null,[w("tr",null,[w("th",null,L(I(o)("conn.sshkeys.col.name")),1),w("th",null,L(I(o)("conn.sshkeys.col.fingerprint")),1),w("th",null,L(I(o)("conn.sshkeys.col.lastUsed")),1),$[2]||($[2]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(s),P=>(O(),N("tr",{key:P.id,class:dt({"is-off":!!P.disabled_at})},[w("td",null,L(P.name||I(o)("conn.sshkeys.noName")),1),w("td",null,[w("code",null,L(C(P)),1)]),w("td",null,L(P.last_used_at?x(P.last_used_at):I(o)("conn.sshkeys.neverUsed")),1),w("td",zF,[w("button",{class:"fe-s3keys__link",disabled:v.value,onClick:K=>A(P)},L(P.disabled_at?I(o)("conn.sshkeys.enable"):I(o)("conn.sshkeys.disable")),9,NF),w("button",{class:"fe-s3keys__link is-danger",disabled:v.value,onClick:K=>S(P)},L(m.value===P.id?I(o)("conn.sshkeys.confirm"):I(o)("conn.sshkeys.remove")),9,FF)])],2))),128))])])):I(d)?(O(),N("p",LF,L(I(o)("conn.sshkeys.empty")),1)):_e("",!0)])):_e("",!0)}});function BF(e){const t=us(e),n=fs(e),r=v=>`${n}${v}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null),c=X(null);function d(v){const m=v;if(m!=null&&m.detail)try{const k=JSON.parse(m.detail);if(k!=null&&k.error)return k.error}catch{}return(m==null?void 0:m.message)||String(v)}function f(v){return v==null?void 0:v.status}async function p(){o.value=!0,l.value=null;try{const v=await t.jsonFetch(r("/api/auth/nfs-exports"));a.value=Array.isArray(v==null?void 0:v.exports)?v.exports:[],i.value={enabled:(v==null?void 0:v.enabled)!==!1,host:(v==null?void 0:v.host)??"",port:(v==null?void 0:v.port)??2049},u.value=!0}catch(v){a.value=[],u.value=!1,f(v)!==401&&f(v)!==403&&(l.value=d(v))}finally{o.value=!1,s.value=!0}}async function _(v){l.value=null;try{const m=await t.jsonFetch(r("/api/auth/nfs-exports"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});return c.value=m,m!=null&&m.host&&(i.value={enabled:m.enabled!==!1,host:m.host,port:m.port}),await p(),m}catch(m){return l.value=d(m),null}}async function g(v,m){l.value=null;try{await t.jsonFetch(r(`/api/auth/nfs-exports/${v}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:m})}),await p()}catch(k){l.value=d(k)}}async function y(v){var m,k;l.value=null;try{await t.jsonFetch(r(`/api/auth/nfs-exports/${v}`),{method:"DELETE"}),((k=(m=c.value)==null?void 0:m.export)==null?void 0:k.id)===v&&(c.value=null),await p()}catch(E){l.value=d(E)}}function h(){c.value=null}const b=$e(()=>{var m;if((m=c.value)!=null&&m.export)return c.value.export;const v=a.value.filter(k=>!k.disabled_at);return v.length?v.reduce((k,E)=>k.created_at>=E.created_at?k:E):null});return{exports:a,connection:i,loading:o,loaded:s,error:l,canMint:u,revealed:c,guideExport:b,load:p,create:_,setDisabled:g,remove:y,dismissPath:h}}const $F={class:"fe-s3keys","data-testid":"nfs-exports"},UF={class:"fe-s3keys__head"},HF={class:"fe-s3keys__title"},GF={class:"fe-s3keys__lead"},qF={class:"fe-s3keys__warn"},KF={key:0,class:"fe-s3keys__warn"},jF={key:1,class:"fe-s3keys__muted"},VF={key:2,class:"fe-s3keys__warn"},WF={key:3,class:"fe-s3keys__form fe-nfs__form"},YF=["placeholder"],ZF={value:""},XF=["value"],JF=["placeholder","disabled"],QF=["placeholder"],eL={class:"fe-nfs__ro"},tL=["disabled"],nL={key:4,class:"fe-s3keys__hint"},rL={key:5,class:"fe-s3keys__secret","data-testid":"nfs-path"},aL={class:"fe-s3keys__once"},iL={class:"fe-s3keys__pair"},oL={key:6,class:"fe-s3keys__muted"},sL={key:7,class:"fe-s3keys__table"},lL={class:"fe-s3keys__actions"},uL=["disabled","onClick"],cL=["disabled","onClick"],dL={key:8,class:"fe-s3keys__muted"},fL=Mt({__name:"NFSExportsPanel",props:{config:{},storages:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{exports:o,connection:s,loading:l,error:u,canMint:c,revealed:d,guideExport:f,load:p,create:_,setDisabled:g,remove:y,dismissPath:h}=BF(n.config),b=X(""),v=X(""),m=X(""),k=X(!0),E=X(""),A=X(!1),S=X(null),x=X(!1);let C=null;function T(){var G,R;const H=s.value;H&&r("active",{host:H.host,port:H.port,enabled:H.enabled,path:(G=d.value)==null?void 0:G.path,readOnly:((R=f.value)==null?void 0:R.read_only)??k.value})}jt(async()=>{await p(),T()});async function $(){A.value=!0;try{await _({label:b.value.trim()||i("conn.nfs.defaultLabel"),storage:v.value.trim()||void 0,prefix:m.value.trim()||void 0,read_only:k.value,allow_cidrs:E.value.trim()||void 0}),b.value="",T()}finally{A.value=!1}}async function P(H){A.value=!0;try{await g(H.id,!H.disabled_at),T()}finally{A.value=!1}}async function K(H){if(S.value!==H.id){S.value=H.id;return}S.value=null,A.value=!0;try{await y(H.id),T()}finally{A.value=!1}}const Q=$e(()=>{var V,W,ge;const H=s.value,G=(V=d.value)==null?void 0:V.path;if(!H||!G)return"";const R=(ge=(W=d.value)==null?void 0:W.export)!=null&&ge.read_only?",ro":"";return`sudo mount -t nfs -o nfsvers=3,tcp,port=${H.port},mountport=${H.port},nolock${R} ${H.host}:${G} /mnt/filex`});async function U(){const H=Q.value;if(!H)return;let G=!1;try{await navigator.clipboard.writeText(H),G=!0}catch{try{const R=document.createElement("textarea");R.value=H,R.setAttribute("readonly",""),R.style.position="fixed",R.style.opacity="0",document.body.appendChild(R),R.select(),G=document.execCommand("copy"),document.body.removeChild(R)}catch{G=!1}}G&&(x.value=!0,C&&clearTimeout(C),C=setTimeout(()=>x.value=!1,1600))}function Y(H){if(!H)return"";const G=new Date(H);return Number.isNaN(G.getTime())?"":G.toLocaleDateString()}function J(H){return H.storage_name?H.prefix?`${H.storage_name}/${H.prefix}`:H.storage_name:i("conn.nfs.scopeAll")}return(H,G)=>(O(),N("section",$F,[w("header",UF,[w("h4",HF,L(I(i)("conn.nfs.title")),1),w("p",GF,L(I(i)("conn.nfs.lead")),1)]),w("p",qF,L(I(i)("conn.nfs.pathIsSecret")),1),I(s)&&!I(s).enabled?(O(),N("p",KF,L(I(i)("conn.nfs.disabled")),1)):_e("",!0),I(c)===!1?(O(),N("p",jF,L(I(i)("conn.nfs.cannotMint")),1)):_e("",!0),I(u)?(O(),N("p",VF,L(I(u)),1)):_e("",!0),I(c)?(O(),N("div",WF,[Dt(w("input",{"onUpdate:modelValue":G[0]||(G[0]=R=>b.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.label"),"data-testid":"nfs-label"},null,8,YF),[[pn,b.value]]),Dt(w("select",{"onUpdate:modelValue":G[1]||(G[1]=R=>v.value=R),class:"fe-cfield__input","data-testid":"nfs-storage"},[w("option",ZF,L(I(i)("conn.nfs.everyStorage")),1),(O(!0),N(qe,null,pt(e.storages,R=>(O(),N("option",{key:R,value:R},L(R),9,XF))),128))],512),[[mi,v.value]]),Dt(w("input",{"onUpdate:modelValue":G[2]||(G[2]=R=>m.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.prefix"),disabled:!v.value,"data-testid":"nfs-prefix"},null,8,JF),[[pn,m.value]]),Dt(w("input",{"onUpdate:modelValue":G[3]||(G[3]=R=>E.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.allowCidrs"),"data-testid":"nfs-cidrs"},null,8,QF),[[pn,E.value]]),w("label",eL,[Dt(w("input",{type:"checkbox","onUpdate:modelValue":G[4]||(G[4]=R=>k.value=R),"data-testid":"nfs-readonly"},null,512),[[hi,k.value]]),$t(" "+L(I(i)("conn.nfs.readOnly")),1)]),w("button",{class:"fe-s3keys__btn",disabled:A.value,"data-testid":"nfs-mint",onClick:$},L(I(i)("conn.nfs.mint")),9,tL)])):_e("",!0),I(c)?(O(),N("p",nL,L(I(i)("conn.nfs.readOnlyHint")),1)):_e("",!0),I(d)?(O(),N("div",rL,[w("p",aL,L(I(i)("conn.nfs.once")),1),w("div",iL,[w("code",null,L(Q.value),1),w("button",{class:"fe-s3keys__copy",onClick:U},L(x.value?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:G[5]||(G[5]=(...R)=>I(h)&&I(h)(...R))},L(I(i)("conn.nfs.dismiss")),1)])):_e("",!0),I(l)?(O(),N("p",oL,"…")):I(o).length?(O(),N("table",sL,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.nfs.col.label")),1),w("th",null,L(I(i)("conn.nfs.col.scope")),1),w("th",null,L(I(i)("conn.nfs.col.mode")),1),w("th",null,L(I(i)("conn.nfs.col.lastUsed")),1),G[6]||(G[6]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),R=>(O(),N("tr",{key:R.id,class:dt({"is-off":!!R.disabled_at})},[w("td",null,L(R.label||I(i)("conn.nfs.noLabel")),1),w("td",null,L(J(R)),1),w("td",null,L(R.read_only?I(i)("conn.nfs.modeRead"):I(i)("conn.nfs.modeWrite")),1),w("td",null,L(R.last_used_at?Y(R.last_used_at):I(i)("conn.nfs.neverUsed")),1),w("td",lL,[w("button",{class:"fe-s3keys__link",disabled:A.value,onClick:V=>P(R)},L(R.disabled_at?I(i)("conn.nfs.enable"):I(i)("conn.nfs.disable")),9,uL),w("button",{class:"fe-s3keys__link is-danger",disabled:A.value,onClick:V=>K(R)},L(S.value===R.id?I(i)("conn.nfs.confirm"):I(i)("conn.nfs.revoke")),9,cL)])],2))),128))])])):I(c)?(O(),N("p",dL,L(I(i)("conn.nfs.empty")),1)):_e("",!0)]))}});function pL(e){const t=us(e),n=fs(e),r=y=>`${n}${y}`,a=Pi([]),i=X(!1),o=X(!1),s=X(null),l=X(null),u=X(null);function c(y){const h=y;if(h!=null&&h.detail)try{const b=JSON.parse(h.detail);if(b!=null&&b.error)return b.error}catch{}return(h==null?void 0:h.message)||String(y)}function d(y){return y==null?void 0:y.status}async function f(){i.value=!0,s.value=null;try{const y=await t.jsonFetch(r("/api/tokens"));a.value=Array.isArray(y==null?void 0:y.tokens)?y.tokens:[],l.value=!0}catch(y){a.value=[];const h=d(y);l.value=!1,h!==401&&h!==403&&(s.value=c(y))}finally{i.value=!1,o.value=!0}}async function p(y){s.value=null;try{const h=await t.jsonFetch(r("/api/tokens"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});return u.value=h,await f(),h}catch(h){return s.value=c(h),null}}async function _(y){var h,b;s.value=null;try{await t.jsonFetch(r(`/api/tokens/${y}`),{method:"DELETE"}),((b=(h=u.value)==null?void 0:h.row)==null?void 0:b.id)===y&&(u.value=null),await f()}catch(v){s.value=c(v)}}function g(){u.value=null}return{tokens:a,loading:i,loaded:o,error:s,canMint:l,revealed:u,load:f,create:p,remove:_,dismiss:g}}const hL={class:"fe-s3keys","data-testid":"api-tokens"},mL={class:"fe-s3keys__head"},vL={class:"fe-s3keys__title"},gL={class:"fe-s3keys__lead"},bL={key:0,class:"fe-s3keys__muted"},_L={key:1,class:"fe-s3keys__warn"},yL={key:2,class:"fe-s3keys__form"},xL=["placeholder"],kL=["disabled"],wL={key:3,class:"fe-s3keys__secret","data-testid":"token-secret"},SL={class:"fe-s3keys__once"},EL={class:"fe-s3keys__pair"},CL={key:4,class:"fe-s3keys__muted"},AL={key:5,class:"fe-s3keys__table"},TL={class:"fe-s3keys__actions"},DL=["disabled","onClick"],ML={key:6,class:"fe-s3keys__muted"},OL={key:7,class:"fe-s3keys__hint"},IL=Mt({__name:"TokensPanel",props:{config:{},protocol:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{tokens:o,loading:s,error:l,canMint:u,revealed:c,load:d,create:f,remove:p,dismiss:_}=pL(n.config),g=X(""),y=X(!1),h=X(!1),b=X(null);jt(async()=>{await d(),r("active",{hasToken:o.value.length>0})});function v(){const C=(n.protocol||"").toUpperCase();return C?`${C} — ${m()}`:m()}function m(){try{return new URL(n.config.apiBase||window.location.origin).host}catch{return"filex"}}async function k(){if(!y.value){y.value=!0,h.value=!1;try{await f({label:g.value.trim()||v(),scopes:"read,write,delete"}),await d(),r("active",{hasToken:o.value.length>0}),g.value=""}finally{y.value=!1}}}async function E(C){if(b.value!==C.id){b.value=C.id;return}b.value=null,y.value=!0;try{await p(C.id),r("active",{hasToken:o.value.length>0})}finally{y.value=!1}}async function A(){var C;if((C=c.value)!=null&&C.token)try{await navigator.clipboard.writeText(c.value.token),h.value=!0,window.setTimeout(()=>h.value=!1,1600)}catch{}}function S(C){if(!C)return"";const T=new Date(C);return Number.isNaN(T.getTime())?"":T.toLocaleDateString()}function x(C){return C.last_used_at?S(C.last_used_at):i("conn.tokens.neverUsed")}return(C,T)=>(O(),N("section",hL,[w("header",mL,[w("h4",vL,L(I(i)("conn.tokens.title")),1),w("p",gL,L(I(i)("conn.tokens.lead")),1)]),I(u)===!1?(O(),N("p",bL,L(I(i)("conn.tokens.cannotMint")),1)):_e("",!0),I(l)?(O(),N("p",_L,L(I(l)),1)):_e("",!0),I(u)?(O(),N("div",yL,[Dt(w("input",{"onUpdate:modelValue":T[0]||(T[0]=$=>g.value=$),class:"fe-cfield__input",placeholder:v(),"data-testid":"token-label"},null,8,xL),[[pn,g.value]]),w("button",{class:"fe-s3keys__btn",disabled:y.value,"data-testid":"token-mint",onClick:k},L(I(i)("conn.tokens.mint")),9,kL)])):_e("",!0),I(c)?(O(),N("div",wL,[w("p",SL,L(I(i)("conn.tokens.once")),1),w("div",EL,[w("code",null,L(I(c).token),1),w("button",{class:"fe-s3keys__copy",onClick:A},L(h.value?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:T[1]||(T[1]=(...$)=>I(_)&&I(_)(...$))},L(I(i)("conn.tokens.dismiss")),1)])):_e("",!0),I(s)?(O(),N("p",CL,"…")):I(o).length?(O(),N("table",AL,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.tokens.col.label")),1),w("th",null,L(I(i)("conn.tokens.col.scopes")),1),w("th",null,L(I(i)("conn.tokens.col.used")),1),T[2]||(T[2]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),$=>(O(),N("tr",{key:$.id},[w("td",null,L($.label||"—"),1),w("td",null,[w("code",null,L($.scopes),1)]),w("td",null,L(x($)),1),w("td",TL,[w("button",{class:"fe-s3keys__link is-danger",disabled:y.value,onClick:P=>E($)},L(b.value===$.id?I(i)("conn.tokens.confirm"):I(i)("conn.tokens.revoke")),9,DL)])]))),128))])])):I(u)?(O(),N("p",ML,L(I(i)("conn.tokens.empty")),1)):_e("",!0),I(u)?(O(),N("p",OL,L(I(i)("conn.tokens.revokeHint")),1)):_e("",!0)]))}}),RL={class:"fe-conn__head"},zL={class:"fe-conn__title"},NL={class:"fe-conn__sub"},FL=["aria-label"],LL={class:"fe-conn__tabs",role:"tablist"},PL=["aria-selected"],BL=["aria-selected"],$L={key:0,class:"fe-conn__body",role:"tabpanel"},UL={key:0,class:"fe-conn__muted"},HL={key:0,class:"fe-conn__card fe-conn__card--notice","data-testid":"no-admin"},GL={class:"fe-conn__muted"},qL={class:"fe-conn__muted"},KL={key:1,class:"fe-conn__list"},jL={class:"fe-conn__rowmain"},VL={class:"fe-conn__name"},WL={class:"fe-conn__muted"},YL={key:0,class:"fe-conn__error"},ZL={key:1,class:"fe-conn__card fe-conn__form","data-testid":"storage-form"},XL={class:"fe-conn__formtitle"},JL={class:"fe-cfield__row"},QL={class:"fe-cfield__label",for:"fe-conn-name"},eP=["placeholder"],tP={class:"fe-cfield__help"},nP={class:"fe-cfield__row"},rP={class:"fe-cfield__label",for:"fe-conn-driver"},aP=["value","disabled"],iP=["value"],oP={key:0,class:"fe-cfield__help"},sP={class:"fe-cfield__check"},lP={class:"fe-cfield__check"},uP={key:0,class:"fe-conn__error","data-testid":"form-error"},cP={class:"fe-conn__actions"},dP=["disabled"],fP=["disabled"],pP={key:2},hP={class:"fe-conn__listhead"},mP={class:"fe-conn__muted"},vP={key:0,class:"fe-conn__empty"},gP={class:"fe-conn__list","data-testid":"storage-list"},bP={class:"fe-conn__rowmain"},_P={class:"fe-conn__rowtext"},yP={class:"fe-conn__name"},xP={class:"fe-conn__badge"},kP={key:0,class:"fe-conn__badge fe-conn__badge--warn"},wP={key:1,class:"fe-conn__badge"},SP={key:2,class:"fe-conn__muted fe-conn__summary"},EP={class:"fe-conn__rowbtns"},CP=["data-testid","onClick"],AP=["onClick"],TP={key:1,class:"fe-conn__body",role:"tabpanel"},DP={class:"fe-conn__guidebar"},MP={key:0,class:"fe-conn__pick"},OP={class:"fe-cfield__label"},IP=["value"],RP={class:"fe-conn__pick"},zP={class:"fe-cfield__label"},NP={value:""},FP=["value"],LP=Mt({__name:"ConnectionsPanel",props:{config:{},initialTab:{},closable:{type:Boolean}},emits:["changed","close","error"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{drivers:o,storages:s,visible:l,me:u,loading:c,loaded:d,error:f,canManage:p,denial:_,load:g,createStorage:y,updateStorage:h,deleteStorage:b,testStorage:v,descriptor:m,fields:k,defaults:E,missingRequired:A}=Wz(n.config),S=typeof window<"u"&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):void 0,x=X(!!(S!=null&&S.matches));function C(Re){x.value=Re.matches}const T=$e(()=>{const Re=n.config.theme??"auto";return Re==="light"||Re==="dark"?Re:x.value?"dark":"light"}),$=X(n.initialTab??"storages"),P=X({kind:"none"}),K=X(""),Q=X(""),U=X(!1),Y=X(!0),J=X({}),H=X([]),G=X(!1),R=X(!1),V=X(null),W=X(null),ge=X(null),Se=X(null),ze=$e(()=>o.value.map(Re=>{const Fe=i(Re.i18n_key);return{value:Re.driver,label:Fe===Re.i18n_key?Re.label:Fe}})),Ue=$e(()=>k(Q.value));function me(){var Fe;const Re=((Fe=o.value[0])==null?void 0:Fe.driver)??"";Q.value=Re,K.value="",U.value=!1,Y.value=!0,J.value=E(Re),H.value=[],V.value=null,ge.value=null,P.value={kind:"new"}}function De(Re){Q.value=Re.driver,K.value=Re.name,U.value=!!Re.read_only,Y.value=Re.enabled!==!1,J.value={...Re.config??{}},H.value=[],V.value=null,ge.value=null,P.value={kind:"edit",row:Re}}function Ne(){P.value={kind:"none"},V.value=null,ge.value=null}function Ke(Re){Q.value=Re,J.value=E(Re),H.value=[],V.value=null}function ne(){const Re=A(Q.value,J.value).map(Fe=>Fe.key);return H.value=Re,K.value.trim()?Re.length?ge.value=i("conn.form.fillRequired"):ge.value=null:ge.value=i("conn.form.nameRequired"),!ge.value}async function oe(){R.value=!0,V.value=null;try{V.value=await v({driver:Q.value,config:J.value})}finally{R.value=!1}}async function ke(){if(ne()){G.value=!0,ge.value=null;try{const Re={name:K.value.trim(),driver:Q.value,config:J.value,read_only:U.value,enabled:Y.value};P.value.kind==="edit"?await h(P.value.row.id,Re):await y(Re),Ne(),r("changed")}catch(Re){const Fe=Re??{};let pe="";try{pe=Fe.detail?JSON.parse(Fe.detail).error??"":""}catch{pe=Fe.detail??""}ge.value=pe||Fe.message||String(Re),r("error",{message:ge.value})}finally{G.value=!1}}}async function Ee(Re){if(Se.value!==Re.id){Se.value=Re.id;return}Se.value=null;try{await b(Re.id),r("changed")}catch(Fe){r("error",{message:Fe.message})}}function be(Re){const Fe=m(Re.driver),pe=Re.config??{},Pe=[],je=Fe==null?void 0:Fe.fields.find(he=>he.root),tt=(he,ve=[])=>{for(const Le of[he,...ve]){const ce=pe[Le];if(typeof ce=="string"&&ce.trim())return ce}return""},gt=tt("endpoint")||tt("url")||tt("host");gt&&Pe.push(gt);const ee=tt("bucket");if(ee&&Pe.push(ee),je){const he=tt(je.key,je.aliases??[]);he&&Pe.push(he)}return Pe.join(" · ")}const ye=Xz(),ue=X(ye[0]??"webdav"),Ae=X(""),se=$e(()=>Vz(n.config)),le=X(null),Me=X(null),He=$e(()=>{var Re,Fe,pe,Pe,je,tt,gt,ee,he,ve,Le,ce,Te,q,Ve,bt,M,Be,Ge,Z,re,ie,We,Je,Ce,ct,Un;return Jz(ue.value,{origin:se.value,user:((Re=u.value)==null?void 0:Re.email)??"",storages:l.value,storage:Ae.value||void 0,s3Endpoint:(Fe=le.value)==null?void 0:Fe.endpoint,s3PathStyle:(pe=le.value)==null?void 0:pe.pathStyle,s3AccessKeyID:((Pe=le.value)==null?void 0:Pe.accessKeyID)||void 0,s3Secret:(je=le.value)==null?void 0:je.secret,sftpHost:((tt=Me.value)==null?void 0:tt.host)||void 0,sftpPort:(gt=Me.value)==null?void 0:gt.port,sftpEnabled:(ee=Me.value)==null?void 0:ee.enabled,sftpLogin:((he=Me.value)==null?void 0:he.login)||void 0,sftpHasKey:(ve=Me.value)==null?void 0:ve.hasKey,ftpsHost:((ce=(Le=Me.value)==null?void 0:Le.ftps)==null?void 0:ce.host)||void 0,ftpsPort:(q=(Te=Me.value)==null?void 0:Te.ftps)==null?void 0:q.port,ftpsEnabled:(bt=(Ve=Me.value)==null?void 0:Ve.ftps)==null?void 0:bt.enabled,ftpsPasvMin:(Be=(M=Me.value)==null?void 0:M.ftps)==null?void 0:Be.pasv_min,ftpsPasvMax:(Z=(Ge=Me.value)==null?void 0:Ge.ftps)==null?void 0:Z.pasv_max,ftpsSelfSigned:(ie=(re=Me.value)==null?void 0:re.ftps)==null?void 0:ie.self_signed,nfsHost:((We=W.value)==null?void 0:We.host)||void 0,nfsPort:(Je=W.value)==null?void 0:Je.port,nfsEnabled:(Ce=W.value)==null?void 0:Ce.enabled,nfsPath:(ct=W.value)==null?void 0:ct.path,nfsReadOnly:(Un=W.value)==null?void 0:Un.readOnly},i)});return Tt(()=>l.value,Re=>{!Ae.value&&Re.length===1&&(Ae.value=Re[0])}),jt(()=>{var Re;(Re=S==null?void 0:S.addEventListener)==null||Re.call(S,"change",C),g()}),tn(()=>{var Re;return(Re=S==null?void 0:S.removeEventListener)==null?void 0:Re.call(S,"change",C)}),Tt(()=>[n.config.apiBase,n.config.endpoint],()=>{Ne(),g()}),(Re,Fe)=>(O(),N("div",{class:dt(["fe-conn",{"fe--theme-dark":T.value==="dark","fe--theme-light":T.value==="light"}]),"data-testid":"connections-panel"},[w("header",RL,[w("div",null,[w("h2",zL,L(I(i)("conn.title")),1),w("p",NL,L(I(i)("conn.subtitle",{host:I(ps)(se.value)})),1)]),e.closable?(O(),N("button",{key:0,type:"button",class:"fe-conn__btn","data-testid":"connections-close","aria-label":I(i)("conn.close"),onClick:Fe[0]||(Fe[0]=pe=>r("close"))}," ✕ ",8,FL)):_e("",!0)]),w("nav",LL,[w("button",{type:"button",role:"tab",class:dt(["fe-conn__tab",{"is-active":$.value==="storages"}]),"aria-selected":$.value==="storages","data-testid":"tab-storages",onClick:Fe[1]||(Fe[1]=pe=>$.value="storages")},L(I(i)("conn.tab.storages")),11,PL),w("button",{type:"button",role:"tab",class:dt(["fe-conn__tab",{"is-active":$.value==="connect"}]),"aria-selected":$.value==="connect","data-testid":"tab-connect",onClick:Fe[2]||(Fe[2]=pe=>$.value="connect")},L(I(i)("conn.tab.connect")),11,BL)]),$.value==="storages"?(O(),N("section",$L,[I(c)&&!I(d)?(O(),N("p",UL,L(I(i)("conn.loading")),1)):(O(),N(qe,{key:1},[I(p)===!1?(O(),N("div",HL,[w("strong",null,L(I(i)("conn.denied.title")),1),w("p",GL,L(I(_)==="anonymous"?I(i)("conn.denied.anonymous"):I(_)==="unreachable"?I(i)("conn.denied.unreachable",{error:I(f)??""}):I(i)("conn.denied.none")),1),w("p",qL,L(I(i)("conn.denied.guideHint")),1),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary",onClick:Fe[3]||(Fe[3]=pe=>$.value="connect")},L(I(i)("conn.denied.guideCta")),1)])):_e("",!0),I(p)===!1&&I(l).length?(O(),N("div",KL,[(O(!0),N(qe,null,pt(I(l),pe=>(O(),N("div",{key:pe,class:"fe-conn__card"},[w("div",jL,[w("strong",VL,L(pe),1),w("span",WL,L(I(i)("conn.visibleOnly")),1)])]))),128))])):_e("",!0),I(p)?(O(),N(qe,{key:2},[I(f)?(O(),N("p",YL,L(I(f)),1)):_e("",!0),P.value.kind!=="none"?(O(),N("div",ZL,[w("h3",XL,L(P.value.kind==="edit"?I(i)("conn.form.editTitle",{name:K.value}):I(i)("conn.form.newTitle")),1),w("div",JL,[w("label",QL,[$t(L(I(i)("conn.form.name")),1),Fe[14]||(Fe[14]=w("span",{class:"fe-cfield__req"},"*",-1))]),Dt(w("input",{id:"fe-conn-name","onUpdate:modelValue":Fe[4]||(Fe[4]=pe=>K.value=pe),class:"fe-cfield__input","data-testid":"storage-name",placeholder:I(i)("conn.form.namePlaceholder")},null,8,eP),[[pn,K.value]]),w("p",tP,L(I(i)("conn.form.nameHelp")),1)]),w("div",nP,[w("label",rP,L(I(i)("conn.form.driver")),1),w("select",{id:"fe-conn-driver",class:"fe-cfield__input","data-testid":"storage-driver",value:Q.value,disabled:P.value.kind==="edit",onChange:Fe[5]||(Fe[5]=pe=>Ke(pe.target.value))},[(O(!0),N(qe,null,pt(ze.value,pe=>(O(),N("option",{key:pe.value,value:pe.value},L(pe.label),9,iP))),128))],40,aP),P.value.kind==="edit"?(O(),N("p",oP,L(I(i)("conn.form.driverLocked")),1)):_e("",!0)]),It(xN,{modelValue:J.value,"onUpdate:modelValue":Fe[6]||(Fe[6]=pe=>J.value=pe),fields:Ue.value,locale:a.value,invalid:H.value},null,8,["modelValue","fields","locale","invalid"]),w("label",sP,[Dt(w("input",{"onUpdate:modelValue":Fe[7]||(Fe[7]=pe=>U.value=pe),type:"checkbox","data-testid":"storage-readonly"},null,512),[[hi,U.value]]),w("span",null,L(I(i)("conn.form.readOnly")),1)]),w("label",lP,[Dt(w("input",{"onUpdate:modelValue":Fe[8]||(Fe[8]=pe=>Y.value=pe),type:"checkbox"},null,512),[[hi,Y.value]]),w("span",null,L(I(i)("conn.form.enabled")),1)]),ge.value?(O(),N("p",uP,L(ge.value),1)):_e("",!0),V.value?(O(),N("p",{key:1,class:dt(["fe-conn__testresult",V.value.ok?"is-ok":"is-bad"]),"data-testid":"test-result"},L(V.value.ok?I(i)("conn.form.testOk",{count:V.value.object_count??0}):I(i)("conn.form.testFail",{error:V.value.error??""})),3)):_e("",!0),w("div",cP,[w("button",{type:"button",class:"fe-conn__btn","data-testid":"storage-test",disabled:R.value,onClick:oe},L(R.value?I(i)("conn.form.testing"):I(i)("conn.form.test")),9,dP),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary","data-testid":"storage-save",disabled:G.value,onClick:ke},L(G.value?I(i)("conn.form.saving"):I(i)("conn.form.save")),9,fP),w("button",{type:"button",class:"fe-conn__btn",onClick:Ne},L(I(i)("conn.form.cancel")),1)])])):(O(),N("div",pP,[w("div",hP,[w("span",mP,L(I(i)("conn.list.count",{n:I(s).length})),1),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary","data-testid":"storage-add",onClick:me}," + "+L(I(i)("conn.list.add")),1)]),I(s).length?_e("",!0):(O(),N("p",vP,L(I(i)("conn.list.empty")),1)),w("div",gP,[(O(!0),N(qe,null,pt(I(s),pe=>(O(),N("div",{key:pe.id,class:"fe-conn__card"},[w("div",bP,[w("div",_P,[w("strong",yP,L(pe.name),1),w("span",xP,L(pe.driver),1),pe.read_only?(O(),N("span",kP,L(I(i)("conn.list.readOnly")),1)):_e("",!0),pe.enabled===!1?(O(),N("span",wP,L(I(i)("conn.list.disabled")),1)):_e("",!0),be(pe)?(O(),N("div",SP,L(be(pe)),1)):_e("",!0)]),w("div",EP,[w("button",{type:"button",class:"fe-conn__btn","data-testid":`storage-edit-${pe.name}`,onClick:Pe=>De(pe)},L(I(i)("conn.list.edit")),9,CP),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--danger",onClick:Pe=>Ee(pe)},L(Se.value===pe.id?I(i)("conn.list.confirm"):I(i)("conn.list.remove")),9,AP)])])]))),128))])]))],64)):_e("",!0)],64))])):(O(),N("section",TP,[w("div",DP,[I(ye).length>1?(O(),N("label",MP,[w("span",OP,L(I(i)("conn.guide.protocol")),1),Dt(w("select",{"onUpdate:modelValue":Fe[9]||(Fe[9]=pe=>ue.value=pe),class:"fe-cfield__input","data-testid":"guide-protocol"},[(O(!0),N(qe,null,pt(I(ye),pe=>(O(),N("option",{key:pe,value:pe},L(I(Zz)(pe)),9,IP))),128))],512),[[mi,ue.value]])])):_e("",!0),w("label",RP,[w("span",zP,L(I(i)("conn.guide.storage")),1),Dt(w("select",{"onUpdate:modelValue":Fe[10]||(Fe[10]=pe=>Ae.value=pe),class:"fe-cfield__input","data-testid":"guide-storage"},[w("option",NP,L(I(i)("conn.guide.allStorages")),1),(O(!0),N(qe,null,pt(I(l),pe=>(O(),N("option",{key:pe,value:pe},L(pe),9,FP))),128))],512),[[mi,Ae.value]])])]),ue.value==="s3"?(O(),Kt(gF,{key:0,config:e.config,storages:I(l),onActive:Fe[11]||(Fe[11]=pe=>le.value=pe)},null,8,["config","storages"])):_e("",!0),ue.value==="sftp"||ue.value==="ftps"?(O(),Kt(PF,{key:1,config:e.config,"keys-visible":ue.value==="sftp",onActive:Fe[12]||(Fe[12]=pe=>Me.value=pe)},null,8,["config","keys-visible"])):_e("",!0),ue.value==="nfs"?(O(),Kt(fL,{key:2,config:e.config,storages:I(l),onActive:Fe[13]||(Fe[13]=pe=>W.value=pe)},null,8,["config","storages"])):_e("",!0),ue.value==="ftps"||ue.value==="webdav"||ue.value==="mount"?(O(),Kt(IL,{key:3,config:e.config,protocol:ue.value},null,8,["config","protocol"])):_e("",!0),He.value?(O(),Kt(GN,{key:4,guide:He.value,locale:a.value},null,8,["guide","locale"])):_e("",!0)]))],2))}}),PP='.fx-presence{display:inline-flex;align-items:center;gap:.5rem;max-width:100%}.fx-presence-avatars{display:inline-flex;align-items:center}.fx-presence-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:-.4rem;border-radius:9999px;border:2px solid var(--fx-presence-ring, #ffffff);color:#fff;font-size:.6rem;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.fx-presence-avatar:first-child{margin-left:0}.fx-presence-avatar--photo{overflow:visible}.fx-presence-photo{width:100%;height:100%;border-radius:9999px;object-fit:cover;display:block}.fx-presence-dot{position:absolute;right:-1px;bottom:-1px;width:.5rem;height:.5rem;border-radius:9999px;background:#22c55e;border:1.5px solid var(--fx-presence-ring, #ffffff)}.fx-presence-more{margin-left:.15rem;font-size:.7rem;color:#71717a}.fx-presence--wide{flex:1 1 auto;min-width:0}.fx-presence-chips{display:flex;align-items:center;gap:.4rem;overflow-x:auto;min-width:0;padding-bottom:2px;scrollbar-width:thin}.fx-presence-chip{display:inline-flex;align-items:center;gap:.35rem;flex:0 0 auto;padding:.15rem .5rem .15rem .2rem;border-radius:9999px;background:#f4f4f5;font-size:.75rem;color:#3f3f46;white-space:nowrap}.fx-presence-chip .fx-presence-avatar{margin-left:0}.fx-presence-chip-name{font-weight:500}.fx-presence-chip-file{color:#71717a;max-width:12rem;overflow:hidden;text-overflow:ellipsis}.fx-presence-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:none;border-radius:9999px;background:transparent;color:#71717a;font-size:.9rem;line-height:1;cursor:pointer}.fx-presence-toggle:hover{background:#e4e4e7;color:#3f3f46}.dark .fx-presence-chip,.dark .fx-presence-toggle:hover{background:#27272a;color:#d4d4d8}.fx-presence-text{font-size:.75rem;color:#71717a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:14rem}.fx-presence-file{color:#52525b;font-weight:500}.dark .fx-presence-avatar,.dark .fx-presence-dot{--fx-presence-ring: #18181b}.filex-tag-picker{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.filex-tag-picker.is-loading{opacity:.6;pointer-events:none}.filex-tag{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;color:#fff;background:var(--filex-tag-color)}.filex-tag-x{background:transparent;border:none;color:#ffffffd9;cursor:pointer;padding:0 2px;font-size:14px;line-height:1}.filex-tag-x:hover{color:#fff}.filex-tag-add input{border:1px solid var(--filex-border, #d1d5db);border-radius:12px;padding:2px 10px;font-size:12px;width:110px}.filex-tag-add-btn{border:1px dashed var(--filex-border, #d1d5db);background:transparent;border-radius:999px;padding:2px 10px;font-size:12px;color:var(--filex-text-muted, #6b7280);cursor:pointer}.filex-tag-add-btn:hover{border-color:var(--filex-accent, #6366f1);color:var(--filex-accent, #6366f1)}.filex-recent{background:var(--fe-bg-elev, var(--filex-bg-card, #ffffff));border:1px solid var(--fe-border, var(--filex-border, #e5e7eb));border-radius:8px;padding:12px;font-size:13px}.filex-recent header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.filex-recent h3{margin:0;font-size:13px;font-weight:600;color:var(--fe-text, var(--filex-text, #111827))}.filex-recent-refresh{background:transparent;border:none;color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));cursor:pointer;font-size:14px;padding:2px 6px}.filex-recent ul{list-style:none;margin:0;padding:0}.filex-recent-item{display:flex;justify-content:space-between;align-items:center;width:100%;background:transparent;border:none;padding:6px 8px;cursor:pointer;border-radius:4px;text-align:left}.filex-recent-item:hover{background:var(--fe-bg-hover, var(--filex-bg-soft, #f3f4f6))}.filex-recent-name{color:var(--fe-text, var(--filex-text, #111827));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filex-recent-meta{color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));font-size:11px;margin-left:8px;flex-shrink:0}.filex-recent-empty{color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));margin:4px 0 0}.filex-star-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;border-radius:6px;padding:4px 8px;color:var(--filex-text-muted, #9ca3af);cursor:pointer;transition:color .12s,background .12s}.filex-star-btn:hover{color:var(--filex-accent-amber, #f59e0b);background:var(--filex-bg-soft, rgba(0, 0, 0, .04))}.filex-star-btn.is-starred{color:var(--filex-accent-amber, #f59e0b)}.filex-star-btn.is-compact{padding:4px}.filex-star-label{font-size:13px}.fe-themes__hint{margin:0 0 12px;font-size:12.5px;color:var(--fe-text-muted)}.fe-themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.fe-themecard{display:flex;flex-direction:column;padding:0;border:2px solid var(--fe-border-strong);border-radius:var(--fe-radius, 8px);background:var(--fe-bg);cursor:pointer;overflow:hidden;text-align:left;transition:transform .12s ease,box-shadow .12s ease;font:inherit}.fe-themecard:hover{transform:translateY(-2px);box-shadow:var(--fe-shadow-sm, 0 2px 6px rgba(15, 23, 42, .08))}.fe-themecard:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-themecard.is-selected{border-color:var(--fe-primary);box-shadow:0 0 0 2px var(--fe-primary)}.fe-themecard__preview{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--fe-bg);border-bottom:1px solid var(--fe-border);min-height:84px}.fe-themecard__topbar{display:flex;gap:4px;margin-bottom:2px}.fe-themecard__chip{height:8px;width:22px;border-radius:4px;background:var(--fe-bg-hover);border:1px solid var(--fe-border)}.fe-themecard__chip--primary{background:var(--fe-primary);border-color:var(--fe-primary)}.fe-themecard__chip--ghost{background:var(--fe-bg-elev)}.fe-themecard__row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px}.fe-themecard__row--selected{background:var(--fe-bg-selected)}.fe-themecard__dot{width:8px;height:8px;border-radius:50%;background:var(--fe-text);opacity:.75;flex:none}.fe-themecard__dot--primary{background:var(--fe-primary);opacity:1}.fe-themecard__dot--muted{background:var(--fe-text-muted)}.fe-themecard__line{height:6px;border-radius:3px;background:var(--fe-text);opacity:.55}.fe-themecard__line--muted{background:var(--fe-text-muted)}.fe-themecard__name{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;font-size:12.5px;font-weight:600;color:var(--fe-text);background:var(--fe-bg-elev);font-family:var(--fe-font, inherit)}.fe-themecard__check{flex:none;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:11px;line-height:1}.fe-preview__code-editor.is-hidden{display:none}.fe-preview__viewer{width:100%;height:100%;min-height:70vh;display:flex;flex-direction:column}.fe-preview .fe-preview__viewer{align-self:stretch}.fe-preview__md-mermaid{display:flex;justify-content:center;margin:16px 0}.fe-preview__md-mermaid svg{max-width:100%;height:auto}.fe-preview__md-math{margin:16px 0;text-align:center;overflow-x:auto}.filex-cv__bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0000008c;display:flex;align-items:center;justify-content:center}.filex-cv{width:min(560px,92vw);max-height:80vh;overflow:hidden;display:flex;flex-direction:column;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1f29);border:1px solid var(--fe-border, #e2e6ed);border-radius:12px;box-shadow:0 20px 60px #00000059}.filex-cv__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fe-border, #e2e6ed)}.filex-cv__head h3{margin:0;font-size:14px;font-weight:600}.filex-cv__x{border:0;background:none;cursor:pointer;font-size:16px;color:var(--fe-text-muted, #5a6475)}.filex-cv__msg{padding:28px;text-align:center;color:var(--fe-text-muted, #5a6475)}.filex-cv__ok{color:#059669}.filex-cv__src{padding:12px 16px 0;font-size:13px;color:var(--fe-text-muted, #5a6475)}.filex-cv__search{margin:8px 16px;padding:8px 10px;border:1px solid var(--fe-border, #e2e6ed);border-radius:8px;background:var(--fe-bg-elev, #f7f8fa);color:inherit;font-size:13px}.filex-cv__list{flex:1;overflow-y:auto;padding:4px 12px 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.filex-cv__fmt{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:8px 10px;cursor:pointer;text-align:left;border:1px solid var(--fe-border, #e2e6ed);border-radius:8px;background:var(--fe-bg-elev, #f7f8fa);color:inherit}.filex-cv__fmt small{color:var(--fe-text-muted, #5a6475);font-size:11px}.filex-cv__fmt.is-sel{border-color:#44c878;background:#44c8781f}.filex-cv__empty{grid-column:1 / -1;text-align:center;color:var(--fe-text-muted, #5a6475);padding:16px}.filex-cv__err{padding:0 16px;color:var(--fe-danger, #dc2626);font-size:13px}.filex-cv__foot{padding:12px 16px;border-top:1px solid var(--fe-border, #e2e6ed);text-align:right}.filex-cv__convert{padding:8px 18px;border:0;border-radius:8px;cursor:pointer;background:#44c878;color:#03200f;font-weight:600;font-size:13px}.filex-cv__convert:disabled{opacity:.5;cursor:default}.filex-cv__frame{position:absolute;width:0;height:0;border:0;left:-9999px}.fx-perm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;font-family:var(--fe-font)}.fx-perm-modal{display:flex;flex-direction:column;background:var(--fe-bg);color:var(--fe-text);width:min(520px,94vw);max-height:86vh;border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg, 14px);box-shadow:var(--fe-shadow);font-size:14px;overflow:hidden}.fx-perm-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 12px;flex:none}.fx-perm-title{display:flex;align-items:center;gap:10px;min-width:0}.fx-perm-ico{font-size:22px;line-height:1}.fx-perm-titletext{display:flex;flex-direction:column;min-width:0}.fx-perm-title h3{margin:0;font-size:15px;font-weight:600;color:var(--fe-text)}.fx-perm-sub{font-size:12px;color:var(--fe-text);max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-perm-subdim{color:var(--fe-text-muted)}.fx-perm-x{background:none;border:none;font-size:17px;cursor:pointer;color:var(--fe-text-muted);flex:none;line-height:1;padding:2px 4px;border-radius:6px}.fx-perm-x:hover{color:var(--fe-text);background:var(--fe-bg-hover)}.fx-perm-tabs{display:flex;gap:2px;padding:0 18px;border-bottom:1px solid var(--fe-border);flex:none}.fx-perm-tab{background:none;border:none;border-bottom:2px solid transparent;padding:8px 12px;cursor:pointer;color:var(--fe-text-muted);font-size:13px;font-family:inherit;font-weight:500}.fx-perm-tab:hover{color:var(--fe-text)}.fx-perm-tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary)}.fx-perm-body{flex:1 1 auto;overflow-y:auto;padding:14px 18px 18px}.fx-perm-addcard{padding:12px;border-radius:var(--fe-radius-md, 10px);background:var(--fe-bg-elev);border:1px solid var(--fe-border)}.fx-perm-section{margin-top:16px}.fx-perm-section h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted)}.fx-perm-empty{color:var(--fe-text-muted);font-size:13px;padding:8px 2px}.fx-perm-person{display:flex;align-items:center;gap:10px;padding:7px 2px}.fx-perm-person+.fx-perm-person{border-top:1px solid var(--fe-border)}.fx-perm-inh{color:var(--fe-text-muted)}.fx-perm-av{width:28px;height:28px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--fe-primary);color:var(--fe-text-on-primary, #fff);font-size:12px;font-weight:600}.fx-perm-av--dim{background:var(--fe-bg-hover);color:var(--fe-text-muted)}.fx-perm-user{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fe-text);min-width:0}.fx-perm-from{font-size:11px;color:var(--fe-text-muted);white-space:nowrap}.fx-perm-badge{font-size:11px;padding:2px 9px;border-radius:999px;background:var(--fe-bg-hover);color:var(--fe-text)}.fx-perm-sel,.fx-perm-input{padding:7px 9px;border-radius:var(--fe-radius-sm, 7px);border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);font-size:13px;font-family:inherit}.fx-perm-sel--sm{padding:5px 7px;font-size:12px}.fx-perm-sel:focus,.fx-perm-input:focus{outline:none;border-color:var(--fe-primary)}.fx-perm-add{display:flex;gap:8px;align-items:stretch}.fx-perm-emailwrap{position:relative;flex:1;min-width:120px}.fx-perm-input{width:100%;box-sizing:border-box}.fx-perm-suggest{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:5;margin:0;padding:4px;list-style:none;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm, 7px);box-shadow:var(--fe-shadow);max-height:210px;overflow:auto}.fx-perm-suggest li{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer}.fx-perm-suggest li:hover{background:var(--fe-bg-hover)}.fx-perm-suggest-av{width:24px;height:24px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--fe-bg-hover);color:var(--fe-text);font-size:11px;font-weight:600}.fx-perm-suggest-txt{display:flex;flex-direction:column;min-width:0}.fx-perm-suggest-name{color:var(--fe-text);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-perm-suggest-meta{color:var(--fe-text-muted);font-size:11px}.fx-perm-check{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--fe-text);cursor:pointer}.fx-perm-btn{padding:7px 13px;border-radius:var(--fe-radius-sm, 7px);border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap}.fx-perm-btn:hover:not(:disabled){background:var(--fe-bg-hover)}.fx-perm-btn:disabled{opacity:.55;cursor:default}.fx-perm-btn--sm{padding:5px 10px;font-size:12px}.fx-perm-btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:var(--fe-text-on-primary, #fff)}.fx-perm-btn--primary:hover:not(:disabled){background:var(--fe-primary-hover, var(--fe-primary));filter:brightness(1.05)}.fx-perm-btn--ghost{background:none;border-color:transparent;color:var(--fe-primary);padding-left:2px}.fx-perm-btn--ghost:hover:not(:disabled){background:none;text-decoration:underline}.fx-perm-del{background:none;border:none;color:var(--fe-danger);cursor:pointer;font-size:14px;flex:none;padding:2px 4px}.fx-perm-del:hover:not(:disabled){filter:brightness(1.15)}.fx-perm-invite{margin-top:10px;padding-top:10px;border-top:1px dashed var(--fe-border)}.fx-perm-invite-actions{display:flex;flex-direction:column;gap:8px;margin-top:6px}.fx-perm-invite-row{display:flex;gap:8px;align-items:stretch}.fx-perm-invite-row .fx-perm-btn--primary{flex:1}.fx-perm-share-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end}.fx-perm-share-opts>.fx-perm-check{grid-column:1 / -1}.fx-perm-field{display:flex;flex-direction:column;gap:4px;font-size:13px;min-width:0}.fx-perm-field .fx-perm-sel{width:100%}.fx-perm-create{width:100%;margin-top:10px}@media (max-width: 380px){.fx-perm-share-opts{grid-template-columns:1fr}}.fx-perm-result{margin-top:12px;padding-top:12px;border-top:1px solid var(--fe-border)}.fx-perm-linkrow{display:flex;gap:8px;align-items:center}.fx-perm-link{color:var(--fe-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-decoration:none}.fx-perm-link:hover{text-decoration:underline}.fx-perm-pin{margin:8px 0 0;font-size:13px;color:var(--fe-text);display:flex;align-items:center;gap:8px}.fx-perm-pin code,.fx-perm-reveal code{font-family:var(--fe-font-mono, monospace);background:var(--fe-bg-hover);padding:1px 6px;border-radius:5px}.fx-perm-cli{margin-top:10px}.fx-perm-clilabel{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted);margin-bottom:4px}.fx-perm-clirow{display:flex;gap:8px;align-items:center}.fx-perm-clicmd{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--fe-font-mono, monospace);font-size:12px;background:var(--fe-bg-hover);color:var(--fe-text);padding:6px 8px;border-radius:var(--fe-radius-sm, 7px)}.fx-perm-mailrow{display:flex;gap:8px;margin-top:10px}.fx-perm-mailrow .fx-perm-input{flex:1}.fx-perm-hint{font-size:13px;color:var(--fe-text-muted);margin:10px 0 0}.fx-perm-sharebtn{display:flex;width:100%;align-items:center;justify-content:center;gap:6px;margin-top:8px}.fx-perm-dropintro{margin:0 0 12px;line-height:1.4}.fx-perm-advtoggle{margin-top:10px;padding-left:2px}.fx-perm-adv{margin-top:8px;padding-top:10px;border-top:1px dashed var(--fe-border);display:flex;flex-direction:column;gap:8px}.fx-perm-adv-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.fx-perm-input--sm{width:130px;padding:5px 8px;font-size:12px}.fx-perm-warn{background:#f59e0b24;border:1px solid rgba(245,158,11,.4);border-radius:var(--fe-radius-sm, 7px);padding:8px 10px;font-size:13px;margin-bottom:10px;color:var(--fe-text)}.fx-perm-notice{margin-top:8px;font-size:13px;color:var(--fe-text-muted)}.fx-perm-reveal{margin-top:8px;font-size:13px;word-break:break-all;color:var(--fe-text)}.fx-perm-muted{color:var(--fe-text-muted);font-size:13px}:root{--fe-bg: #ffffff;--fe-bg-elev: #f7f8fa;--fe-bg-hover: #edf0f5;--fe-bg-selected: #dfe8ff;--fe-border: #e2e6ed;--fe-border-strong: #c7ced9;--fe-text: #1a1e27;--fe-text-muted: #5a6475;--fe-text-on-primary: #ffffff;--fe-primary: #2f6fe0;--fe-primary-hover: #2563eb;--fe-danger: #dc2626;--fe-danger-hover: #b91c1c;--fe-shadow: 0 10px 32px rgba(15, 23, 42, .14);--fe-shadow-sm: 0 2px 6px rgba(15, 23, 42, .08);--fe-radius: 8px;--fe-radius-sm: 4px;--fe-radius-lg: 12px;--fe-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fe-font-mono: ui-monospace, "SF Mono", Consolas, Menlo, monospace;--fe-gap: 12px}.fe--theme-dark,:root[data-theme=dark] .fe,.fe.fe--theme-dark,:root.dark,.dark,:root.dark .fe,.dark .fe,.fe-ctx-backdrop--theme-dark,.fe-ctx-backdrop--theme-auto[data-prefers-dark="1"]{--fe-bg: #0f1419;--fe-bg-elev: #161c25;--fe-bg-hover: #1f2733;--fe-bg-selected: #23324a;--fe-border: #2a323e;--fe-border-strong: #3a4453;--fe-text: #e5e9f0;--fe-text-muted: #8b95a7;--fe-primary: #60a5fa;--fe-primary-hover: #3b82f6;--fe-danger: #f87171;--fe-danger-hover: #ef4444;--fe-shadow: 0 12px 32px rgba(0, 0, 0, .45);--fe-shadow-sm: 0 2px 6px rgba(0, 0, 0, .25)}@media (prefers-color-scheme: dark){.fe:not(.fe--theme-light),.fe-ctx-backdrop--theme-auto:not(.fe-ctx-backdrop--theme-light){--fe-bg: #0f1419;--fe-bg-elev: #161c25;--fe-bg-hover: #1f2733;--fe-bg-selected: #23324a;--fe-border: #2a323e;--fe-border-strong: #3a4453;--fe-text: #e5e9f0;--fe-text-muted: #8b95a7;--fe-primary: #60a5fa;--fe-primary-hover: #3b82f6;--fe-danger: #f87171;--fe-danger-hover: #ef4444;--fe-shadow: 0 12px 32px rgba(0, 0, 0, .45);--fe-shadow-sm: 0 2px 6px rgba(0, 0, 0, .25)}}:root{--fe-icon-folder: #d97706;--fe-icon-image: #7c3aed;--fe-icon-video: #db2777;--fe-icon-audio: #0d9488;--fe-icon-pdf: #dc2626;--fe-icon-doc: #2563eb;--fe-icon-sheet: #16a34a;--fe-icon-slides: #ea580c;--fe-icon-archive: #78716c;--fe-icon-code: #4f46e5;--fe-icon-text: #64748b;--fe-icon-unknown: #64748b}.fe--theme-dark,:root[data-theme=dark] .fe,.fe.fe--theme-dark,:root.dark,.dark,:root.dark .fe,.dark .fe,.fe-ctx-backdrop--theme-dark,.fe-ctx-backdrop--theme-auto[data-prefers-dark="1"]{--fe-icon-folder: #fbbf24;--fe-icon-image: #a78bfa;--fe-icon-video: #f472b6;--fe-icon-audio: #2dd4bf;--fe-icon-pdf: #f87171;--fe-icon-doc: #60a5fa;--fe-icon-sheet: #4ade80;--fe-icon-slides: #fb923c;--fe-icon-archive: #a8a29e;--fe-icon-code: #818cf8;--fe-icon-text: #94a3b8;--fe-icon-unknown: #8b95a7}@media (prefers-color-scheme: dark){.fe:not(.fe--theme-light),.fe-ctx-backdrop--theme-auto:not(.fe-ctx-backdrop--theme-light){--fe-icon-folder: #fbbf24;--fe-icon-image: #a78bfa;--fe-icon-video: #f472b6;--fe-icon-audio: #2dd4bf;--fe-icon-pdf: #f87171;--fe-icon-doc: #60a5fa;--fe-icon-sheet: #4ade80;--fe-icon-slides: #fb923c;--fe-icon-archive: #a8a29e;--fe-icon-code: #818cf8;--fe-icon-text: #94a3b8;--fe-icon-unknown: #8b95a7}}:root,.fe--theme-dark,:root.dark,.dark{--fe-warning: #f59e0b}.fe,.fe *,.fe-ctx-backdrop,.fe-ctx-backdrop *,.fe-tour,.fe-tour *{scrollbar-width:thin;scrollbar-color:var(--fe-border-strong) transparent}.fe ::-webkit-scrollbar,.fe-ctx-backdrop ::-webkit-scrollbar,.fe-tour ::-webkit-scrollbar{width:10px;height:10px}.fe ::-webkit-scrollbar-track,.fe-ctx-backdrop ::-webkit-scrollbar-track,.fe-tour ::-webkit-scrollbar-track{background:transparent}.fe ::-webkit-scrollbar-thumb,.fe-ctx-backdrop ::-webkit-scrollbar-thumb,.fe-tour ::-webkit-scrollbar-thumb{background:var(--fe-border-strong);border:2px solid transparent;background-clip:padding-box;border-radius:8px}.fe ::-webkit-scrollbar-thumb:hover,.fe-ctx-backdrop ::-webkit-scrollbar-thumb:hover,.fe-tour ::-webkit-scrollbar-thumb:hover{background:var(--fe-text-muted);background-clip:padding-box}.fe ::-webkit-scrollbar-corner,.fe-ctx-backdrop ::-webkit-scrollbar-corner,.fe-tour ::-webkit-scrollbar-corner{background:transparent}.fe{position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-height:420px;height:100%;background:var(--fe-bg);color:var(--fe-text);font-family:var(--fe-font);font-size:14px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);overflow:hidden;outline:none}.fe *{box-sizing:border-box}.fe__body{flex:1 1 auto;overflow:auto;min-height:0;background:var(--fe-bg)}filex-explorer{display:block;height:100%;min-width:0;max-width:100%}.fe__presence{flex:0 0 auto;padding:.25rem .75rem;border-bottom:1px solid var(--fe-border, rgba(0, 0, 0, .06))}.fe__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:240px;height:100%;color:var(--fe-text-muted)}.fe__spinner{width:34px;height:34px;border-radius:50%;border:3px solid color-mix(in srgb,var(--fe-text-muted) 30%,transparent);border-top-color:var(--fe-primary);animation:fe-spin .7s linear infinite}.fe__loading-text{margin:0;font-size:13px}@keyframes fe-spin{to{transform:rotate(360deg)}}.fe__notfound{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:240px;height:100%;color:var(--fe-text-muted);text-align:center;padding:24px}.fe__notfound-icon{font-size:40px;filter:grayscale(1);opacity:.6}.fe__notfound-title{margin:4px 0 0;font-size:15px;font-weight:600;color:var(--fe-text)}.fe__notfound-path{margin:0;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all;max-width:480px}.fe__notfound-desc{margin:0 0 10px;font-size:13px}.fe__file-input{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.fe-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);color:var(--fe-text);font:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.fe-btn:hover:not(:disabled){background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-btn:disabled{opacity:.5;cursor:not-allowed}.fe-btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:var(--fe-text-on-primary)}.fe-btn--primary:hover:not(:disabled){background:var(--fe-primary-hover);border-color:var(--fe-primary-hover)}.fe-btn--danger{background:var(--fe-danger);border-color:var(--fe-danger);color:var(--fe-text-on-primary)}.fe-btn--danger:hover:not(:disabled){background:var(--fe-danger-hover);border-color:var(--fe-danger-hover)}.fe-btn--icon-only{padding:6px 8px}.fe-btn.is-active{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-btn__label{line-height:1}.fe-icon{font-size:1.05em;line-height:1}.fe-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);flex-wrap:wrap}.fe-toolbar__primary{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.fe-toolbar__spacer{flex:1 1 auto}.fe-toolbar__search-group{display:inline-flex;align-items:center;gap:4px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px}.fe-toolbar__search-group .fe-search__input{border:0;background:transparent;padding:4px 8px}.fe-toolbar__search-group .fe-btn{border:0;background:transparent;padding:4px 6px}.fe-toolbar__search-group .fe-btn:hover:not(:disabled){background:var(--fe-bg-hover)}.fe-toolbar__view{display:inline-flex;gap:2px;padding:2px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm)}.fe-toolbar__view .fe-btn{border:0;background:transparent}.fe-toolbar__view .fe-btn.is-active{background:var(--fe-bg-selected)}.fe-search{position:relative}.fe-search__input{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:6px 10px;font:inherit;color:var(--fe-text);min-width:200px}.fe-search__input:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-breadcrumb{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:6px 12px;min-height:37px;background:var(--fe-bg);border-bottom:1px solid var(--fe-border);font-size:13px;color:var(--fe-text-muted)}.fe-breadcrumb__crumb{display:inline-flex;align-items:center;gap:4px;background:transparent;border:0;color:inherit;padding:2px 6px;border-radius:var(--fe-radius-sm);cursor:pointer;font:inherit}.fe-breadcrumb__crumb:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-breadcrumb__crumb.is-last{color:var(--fe-text);font-weight:600}.fe-breadcrumb__sep{color:var(--fe-text-muted)}.fe-breadcrumb__edit{margin-left:auto;background:none;border:1px solid transparent;color:var(--fe-text-muted);cursor:pointer;font-size:14px;line-height:1;padding:4px 8px;border-radius:4px}.fe-breadcrumb__edit:hover{background:var(--fe-bg-hover);color:var(--fe-text);border-color:var(--fe-border)}.fe-breadcrumb__input{flex:1;background:var(--fe-bg);color:var(--fe-text);border:1px solid var(--fe-accent, #2563eb);border-radius:4px;padding:4px 8px;font-family:var(--fe-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);font-size:13px;outline:none}.fe-list{display:flex;flex-direction:column}.fe-list__head{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;padding:8px 12px;font-weight:600;color:var(--fe-text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border)}.fe-list__body{display:flex;flex-direction:column}.fe-list__row{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;padding:8px 12px;align-items:center;cursor:pointer;border-bottom:1px solid var(--fe-border);transition:background .08s;-webkit-user-select:none;user-select:none}.fe-list__row:hover{background:var(--fe-bg-hover)}.fe-list__row.is-selected{background:var(--fe-bg-selected)}.fe-list__row.is-trash{opacity:.7}.fe-list__row.is-clipped,.fe-grid__card.is-clipped{opacity:.45;font-style:italic}.fe-list__row:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-list__col--star{display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s}.fe-list__row:hover .fe-list__col--star,.fe-list__row:focus-within .fe-list__col--star,.fe-list__col--star:has(.is-starred){opacity:1}.fe-list__col--star .filex-star-btn.is-starred{color:var(--fe-warning, #f59e0b)}.fe-list__col--name{display:flex;align-items:center;gap:8px;min-width:0}.fe-list__icon{flex-shrink:0;font-size:16px}.fe-list__name-wrap{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.fe-list__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-list__parent{font-size:11px;color:var(--fe-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.fe-list__col--size,.fe-list__col--mod{color:var(--fe-text-muted);font-size:13px}.fe-list__empty{padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-grid__card{display:flex;flex-direction:column;align-items:stretch;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);cursor:pointer;transition:background .08s,border-color .08s;-webkit-user-select:none;user-select:none}.fe-grid__card:hover{background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-grid__card.is-selected{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-grid__card.is-trash{opacity:.7}.fe-grid__thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;background:var(--fe-bg);border-radius:var(--fe-radius-sm);margin-bottom:8px;overflow:hidden}.fe-grid__thumb img{width:100%;height:100%;object-fit:cover}.fe-grid__icon{font-size:32px}.fe-grid__label{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-grid__meta{font-size:11px;color:var(--fe-text-muted);margin-top:2px}.fe-grid__parent{font-size:11px;color:var(--fe-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-style:italic}.fe-grid__snippet{margin-top:2px;font-size:11px;line-height:1.35;color:var(--fe-text-muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;text-align:left}.fe-grid__empty{grid-column:1 / -1;padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe__dragover{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#3b82f61f;border:3px dashed var(--fe-primary);pointer-events:none}.fe__dragover-card{background:var(--fe-bg);border-radius:var(--fe-radius-lg);padding:24px 40px;box-shadow:var(--fe-shadow);text-align:center}.fe__dragover-card .fe-icon{font-size:32px;display:block;margin-bottom:8px}.fe-upload{position:absolute;right:16px;bottom:16px;width:min(360px,calc(100% - 32px));background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);z-index:40;max-height:40vh;display:flex;flex-direction:column;overflow:hidden}.fe-upload__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);font-size:13px}.fe-upload__count{background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:12px;padding:1px 7px;border-radius:999px}.fe-upload__list{list-style:none;padding:0;margin:0;overflow:auto}.fe-upload__item{padding:10px 14px;border-bottom:1px solid var(--fe-border)}.fe-upload__item:last-child{border-bottom:0}.fe-upload__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;margin-bottom:4px}.fe-upload__bar{background:var(--fe-bg-elev);border-radius:99px;height:6px;overflow:hidden;margin-bottom:4px}.fe-upload__bar-fill{background:var(--fe-primary);height:100%;transition:width .2s}.fe-upload__item.is-error .fe-upload__bar-fill,.fe-upload__item.is-aborted .fe-upload__bar-fill{background:var(--fe-danger)}.fe-upload__item.is-done .fe-upload__bar-fill{background:#16a34a}.fe-upload__meta{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:var(--fe-text-muted)}.fe-upload__cancel{background:transparent;border:0;color:var(--fe-primary);cursor:pointer;font:inherit}.fe-upload-slide-enter-active,.fe-upload-slide-leave-active{transition:transform .2s,opacity .2s}.fe-upload-slide-enter-from,.fe-upload-slide-leave-to{opacity:0;transform:translateY(10px)}.fe-ops{position:absolute;left:16px;bottom:16px;width:min(320px,calc(100% - 32px));display:flex;flex-direction:column;gap:8px;z-index:40}.fe-ops__item{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);padding:10px 14px;font-size:13px}.fe-ops__item.is-done{border-color:#16a34a}.fe-ops__item.is-error{border-color:var(--fe-danger)}.fe-ops__row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.fe-ops__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}.fe-ops__dismiss{background:transparent;border:0;color:var(--fe-text-muted);cursor:pointer;font-size:18px;line-height:1;padding:0 4px}.fe-ops__bar{background:var(--fe-bg-elev);border-radius:99px;height:6px;overflow:hidden}.fe-ops__bar-fill{background:var(--fe-primary);height:100%;transition:width .25s}.fe-ops__item.is-done .fe-ops__bar-fill{background:#16a34a}.fe-ops__item.is-error .fe-ops__bar-fill{background:var(--fe-danger)}.fe-ops__error{margin-top:6px;font-size:11px;color:var(--fe-danger)}.fe-ops-slide-enter-active,.fe-ops-slide-leave-active{transition:transform .2s,opacity .2s}.fe-ops-slide-enter-from,.fe-ops-slide-leave-to{opacity:0;transform:translateY(10px)}.fe-ctx-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;color:var(--fe-text);font-family:var(--fe-font);font-size:14px}.fe-ctx{position:absolute;min-width:180px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);padding:4px;z-index:90;color:var(--fe-text)}.fe-ctx__item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--fe-radius-sm);border:0;background:transparent;color:var(--fe-text);font:inherit;width:100%;text-align:left;cursor:pointer}.fe-ctx__item:hover:not(.is-disabled){background:var(--fe-bg-hover)}.fe-ctx__item.is-danger{color:var(--fe-danger)}.fe-ctx__item.is-disabled{opacity:.45;cursor:not-allowed}.fe-ctx__icon{width:1.2em;text-align:center}.fe-ctx__sep{height:1px;background:var(--fe-border);margin:4px 0}.fe-ctx-enter-active,.fe-ctx-leave-active{transition:opacity .1s}.fe-ctx-enter-from,.fe-ctx-leave-to{opacity:0}.fe-modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;align-items:center;justify-content:center;background:#0d131b7a;padding:16px}.fe-modal__card{background:var(--fe-bg);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;overflow:hidden}.fe-modal__card--sm{max-width:420px}.fe-modal__card--md{max-width:560px}.fe-modal__card--lg{max-width:800px}.fe-modal__card--xl{max-width:1080px;height:calc(100vh - 64px)}.fe-recents__backdrop{align-items:flex-start!important;padding-top:60px}.fe-recents__panel{background:var(--fe-bg, #fff);border-radius:var(--fe-radius, 8px);box-shadow:var(--fe-shadow, 0 6px 24px rgba(0, 0, 0, .18));width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 96px);display:flex;flex-direction:column;overflow:hidden}.fe-recents__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--fe-border, #e2e6ed)}.fe-recents__close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--fe-text-muted, #6b7280);padding:0 4px}.fe-recents__close:hover{color:var(--fe-text, #111)}.fe-preview__md-split{display:flex;flex-direction:column;height:100%;width:100%;min-height:0}.fe-preview__md-split-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:var(--fe-bg-elev, #f6f7f9);border-bottom:1px solid var(--fe-border, #e2e6ed);flex:0 0 auto}.fe-preview__md-split-label{font-family:var(--fe-font-mono, ui-monospace, monospace);font-size:11px;letter-spacing:.06em;color:var(--fe-text-muted, #6b7280)}.fe-preview__md-split-error{flex:1 1 auto;font-size:12px;color:var(--fe-danger, #dc2626);text-align:center}.fe-preview__md-split-body{flex:1 1 auto;display:grid;grid-template-columns:1fr 1fr;min-height:0}.fe-preview__md-split-input{resize:none;border:0;outline:0;padding:16px 20px;font-family:var(--fe-font-mono, ui-monospace, monospace);font-size:13px;line-height:1.6;background:var(--fe-bg, #fff);color:var(--fe-text, #111);border-right:1px solid var(--fe-border, #e2e6ed);overflow:auto;-moz-tab-size:2;tab-size:2}.fe-preview__md-split-output{overflow:auto;padding:16px 24px;background:var(--fe-bg, #fff)}.fe-preview__md-split-output.fe-preview__md{max-height:none;min-height:0;height:100%}@media (max-width: 900px){.fe-preview__md-split-body{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.fe-preview__md-split-input{border-right:0;border-bottom:1px solid var(--fe-border, #e2e6ed)}}.fe-modal__backdrop--chromeless{background:transparent;padding:0}.fe-modal__card--chromeless{max-width:none;width:100vw;height:100vh;max-height:100vh;border-radius:0;box-shadow:none}.fe-modal__card--chromeless .fe-modal__body{flex:1 1 auto;min-height:0;padding:0}.fe-modal__card--chromeless .fe-preview{align-items:stretch;justify-content:stretch;min-height:0;flex:1 1 auto}.fe-modal__card--chromeless .fe-preview>*{width:100%;height:100%}.fe-modal__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fe-border)}.fe-modal__title{font-size:16px;font-weight:600;margin:0}.fe-modal__close{background:transparent;border:0;color:var(--fe-text-muted);font-size:22px;cursor:pointer;padding:0 4px;line-height:1}.fe-modal__body{padding:16px;overflow:auto;flex:1 1 auto}.fe-modal__actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--fe-border);background:var(--fe-bg-elev)}.fe-modal-enter-active,.fe-modal-leave-active{transition:opacity .15s}.fe-modal-enter-from,.fe-modal-leave-to{opacity:0}.fe-input{width:100%;padding:8px 10px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);font:inherit;color:var(--fe-text)}.fe-input:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-input--mono{font-family:var(--fe-font-mono);letter-spacing:.1em}.fe-form{display:flex;flex-direction:column;gap:12px}.fe-form__row{display:flex;align-items:center;gap:8px}.fe-form__row--stack{flex-direction:column;align-items:stretch}.fe-form__error{color:var(--fe-danger);font-size:12px;margin:6px 0 0}.fe-share-result{display:flex;flex-direction:column;gap:12px}.fe-share-result__row label{display:block;font-size:12px;font-weight:600;color:var(--fe-text-muted);margin-bottom:4px}.fe-share-result__copy{display:flex;gap:6px}.fe-preview{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:50vh;background:var(--fe-bg-elev)}.fe-preview__image{max-width:100%;max-height:70vh;object-fit:contain}.fe-preview__video,.fe-preview__audio{max-width:100%;max-height:70vh}.fe-preview__iframe{width:100%;height:70vh;border:0;background:#fff}.fe-preview__office{width:100%;height:78vh;background:var(--fe-bg)}.fe-preview__code-wrap{display:flex;flex-direction:column;width:100%;height:78vh}.fe-preview__code-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-hover, #f3f4f6);border-bottom:1px solid var(--fe-border, #e5e7eb);font-size:12px}.fe-preview__code-lang{font-family:var(--fe-font-mono, ui-monospace, monospace);color:var(--fe-text-muted);text-transform:uppercase;letter-spacing:.04em}.fe-preview__code-toolbar>.fe-btn{margin-left:auto}.fe-preview__code-status{font-size:12px;font-weight:500}.fe-preview__code-status--ok{color:#059669}.fe-preview__code-status--err{color:#dc2626;cursor:help}.fe-preview__code-editor{flex:1;min-height:0;overflow:hidden}.fe-preview__code-editor .cm-editor{height:100%;font-size:13px}.fe-preview__code-editor .cm-scroller{font-family:var(--fe-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.fe-preview__fallback{text-align:center;color:var(--fe-text-muted);padding:40px 20px}.fe-preview__fallback-icon{font-size:48px;display:block;margin-bottom:12px}.fe-preview__pre{margin:0;padding:16px;width:100%;max-height:70vh;overflow:auto;background:var(--fe-bg);color:var(--fe-text);font-family:var(--fe-font-mono);font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.fe-preview__code{white-space:pre;word-wrap:normal}.hljs{background:var(--fe-bg);color:var(--fe-text)}.hljs-comment,.hljs-quote{color:var(--fe-text-muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-section,.hljs-meta{color:#c678dd}.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-link{color:#98c379}.hljs-number,.hljs-literal,.hljs-deletion{color:#d19a66}.hljs-title,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-template-tag,.hljs-template-variable{color:#61aeee}.hljs-type,.hljs-tag{color:#e06c75}.hljs-variable,.hljs-attribute{color:#d19a66}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.fe-preview__md{width:100%;max-height:70vh;overflow:auto;padding:24px 32px;background:var(--fe-bg);color:var(--fe-text);line-height:1.6;font-size:15px}.fe-preview__md h1,.fe-preview__md h2,.fe-preview__md h3,.fe-preview__md h4{margin:1.2em 0 .6em;font-weight:600}.fe-preview__md h1{font-size:1.8em;border-bottom:1px solid var(--fe-border);padding-bottom:.3em}.fe-preview__md h2{font-size:1.4em;border-bottom:1px solid var(--fe-border);padding-bottom:.3em}.fe-preview__md h3{font-size:1.2em}.fe-preview__md p{margin:.8em 0}.fe-preview__md a{color:var(--fe-primary);text-decoration:underline}.fe-preview__md code{font-family:var(--fe-font-mono);background:var(--fe-bg-elev);padding:1px 5px;border-radius:3px;font-size:.92em}.fe-preview__md pre{background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:12px 16px;overflow:auto;font-size:.9em}.fe-preview__md pre code{background:transparent;padding:0}.fe-preview__md ul,.fe-preview__md ol{padding-left:2em;margin:.8em 0}.fe-preview__md li{margin:.3em 0}.fe-preview__md blockquote{border-left:3px solid var(--fe-border-strong);padding:0 1em;color:var(--fe-text-muted);margin:.8em 0}.fe-preview__md table{border-collapse:collapse;margin:1em 0;width:100%}.fe-preview__md th,.fe-preview__md td{border:1px solid var(--fe-border);padding:6px 10px;text-align:left}.fe-preview__md th{background:var(--fe-bg-elev)}.fe-preview__md img{max-width:100%}.fe-toast{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:var(--fe-text);color:var(--fe-bg);padding:8px 14px;border-radius:var(--fe-radius);font-size:13px;box-shadow:var(--fe-shadow-sm);z-index:95}.fe-toast-enter-active,.fe-toast-leave-active{transition:opacity .2s,transform .2s}.fe-toast-enter-from,.fe-toast-leave-to{opacity:0;transform:translate(-50%,10px)}@media (max-width: 640px){.fe-list__head,.fe-list__row{grid-template-columns:28px minmax(0,1fr) 90px}.fe-list__col--mod{display:none}.fe-toolbar{padding:8px}.fe-search__input{min-width:120px}}.fe-ficon{width:1em;height:1em;display:block;flex-shrink:0}.fe-ficon--folder{color:var(--fe-icon-folder)}.fe-ficon--image{color:var(--fe-icon-image)}.fe-ficon--video{color:var(--fe-icon-video)}.fe-ficon--audio{color:var(--fe-icon-audio)}.fe-ficon--pdf{color:var(--fe-icon-pdf)}.fe-ficon--doc{color:var(--fe-icon-doc)}.fe-ficon--sheet{color:var(--fe-icon-sheet)}.fe-ficon--slides{color:var(--fe-icon-slides)}.fe-ficon--archive{color:var(--fe-icon-archive)}.fe-ficon--code{color:var(--fe-icon-code)}.fe-ficon--text{color:var(--fe-icon-text)}.fe-ficon--unknown{color:var(--fe-icon-unknown)}.fe-grid__icon--svg{display:flex;align-items:center;justify-content:center}.fe-list__icon--svg{display:inline-flex;align-items:center}.fe-list__sort{display:inline-flex;align-items:center;gap:4px;background:transparent;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.fe-list__sort:hover{color:var(--fe-text)}.fe-list__sort:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px;border-radius:2px}.fe-list__sort-arrow{font-size:11px;color:var(--fe-primary)}.fe-list__group{padding:12px 12px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted);-webkit-user-select:none;user-select:none}.fe--density-compact .fe-toolbar{padding:6px 8px;gap:6px}.fe--density-compact .fe-breadcrumb,.fe--density-compact .fe-list__head{padding:4px 12px}.fe--density-compact .fe-list__row{padding:3px 12px}.fe--density-compact .fe-list__icon{font-size:14px}.fe--density-compact .fe-list__group{padding:8px 12px 2px}.fe--density-compact .fe-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;padding:8px}.fe--density-compact .fe-grid__card{padding:6px}.fe--density-compact .fe-grid__icon{font-size:24px}.fe-cmdp__backdrop{align-items:flex-start;padding-top:min(18vh,160px)}.fe-cmdp{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);box-shadow:var(--fe-shadow);width:min(560px,calc(100vw - 32px));display:flex;flex-direction:column;overflow:hidden}.fe-cmdp__inputwrap{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--fe-border);color:var(--fe-text-muted)}.fe-cmdp__glyph{flex:0 0 auto}.fe-cmdp__input{flex:1 1 auto;min-width:0;border:0;outline:none;background:transparent;color:var(--fe-text);font:inherit;font-size:15px}.fe-cmdp__input::placeholder{color:var(--fe-text-muted)}.fe-cmdp__list{max-height:min(48vh,380px);overflow-y:auto;padding:6px}.fe-cmdp__group{padding:8px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fe-text-muted)}.fe-cmdp__item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--fe-radius-sm);padding:8px 10px;color:var(--fe-text);font:inherit;font-size:14px;cursor:pointer}.fe-cmdp__item.is-active{background:var(--fe-bg-selected)}.fe-cmdp__item:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-cmdp__icon{flex:0 0 auto;width:20px;text-align:center}.fe-cmdp__label{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-cmdp__empty{padding:20px 12px;text-align:center;color:var(--fe-text-muted);font-size:13px}.fe-cmdp__hint{padding:8px 14px;border-top:1px solid var(--fe-border);background:var(--fe-bg-elev);font-size:11px;color:var(--fe-text-muted)}.fe-shortcuts{display:flex;flex-direction:column;gap:16px}.fe-shortcuts__heading{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fe-text-muted)}.fe-shortcuts__table{display:flex;flex-direction:column}.fe-shortcuts__row{display:flex;align-items:center;gap:12px;padding:4px 0}.fe-shortcuts__keys{flex:0 0 40%;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.fe-shortcuts__desc{flex:1 1 auto;font-size:13px;color:var(--fe-text)}.fe-shortcuts__or{color:var(--fe-text-muted);font-size:11px}.fe-kbd{display:inline-block;padding:2px 7px;border:1px solid var(--fe-border-strong);border-bottom-width:2px;border-radius:var(--fe-radius-sm);background:var(--fe-bg-elev);color:var(--fe-text);font-family:var(--fe-font-mono);font-size:11.5px;line-height:1.4}.fe-breadcrumb__more-wrap{position:relative;display:inline-flex;align-items:center;gap:4px}.fe-breadcrumb__more{background:transparent;border:0;color:inherit;padding:2px 8px;border-radius:var(--fe-radius-sm);cursor:pointer;font:inherit;line-height:1.2}.fe-breadcrumb__more:hover,.fe-breadcrumb__more[aria-expanded=true]{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-breadcrumb__more:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-breadcrumb__menu{position:absolute;top:calc(100% + 4px);left:0;z-index:80;min-width:160px;max-width:280px;max-height:40vh;overflow-y:auto;display:flex;flex-direction:column;padding:4px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow)}.fe-breadcrumb__menu-item{text-align:left;background:transparent;border:0;padding:6px 10px;border-radius:var(--fe-radius-sm);color:var(--fe-text);font:inherit;font-size:13px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-breadcrumb__menu-item:hover,.fe-breadcrumb__menu-item:focus-visible{background:var(--fe-bg-hover)}.fe-breadcrumb__crumb>span:first-child{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.fe-breadcrumb__crumb>span:first-child{max-width:110px}}@media (prefers-reduced-motion: reduce){.fe-modal-enter-active,.fe-modal-leave-active{transition:none!important}}.fe-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.fe__skeleton{min-height:240px}.fe-skel{position:relative;overflow:hidden;border-radius:var(--fe-radius-sm);background:color-mix(in srgb,var(--fe-text-muted) 14%,transparent)}.fe-skel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--fe-text-muted) 12%,transparent),transparent);animation:fe-skel-shimmer 1.4s ease-in-out infinite}@keyframes fe-skel-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion: reduce){.fe-skel:after{animation:none;content:none}}.fe-skel-list{padding-top:2px}.fe-skel-row{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;align-items:center;padding:12px;border-bottom:1px solid var(--fe-border)}.fe-skel-row .fe-skel{height:12px}.fe-skel-row .fe-skel--icon{width:20px;height:20px;border-radius:6px}.fe-skel-row .fe-skel--name{width:55%}.fe-skel-row:nth-child(2n) .fe-skel--name{width:38%}.fe-skel-row:nth-child(3n) .fe-skel--name{width:70%}.fe-skel-row .fe-skel--size{width:56px;justify-self:start}.fe-skel-row .fe-skel--date{width:110px;justify-self:start}.fe-skel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-skel-card{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev)}.fe-skel-card .fe-skel--thumb{aspect-ratio:1 / 1}.fe-skel-card .fe-skel--label{height:12px;width:70%}.fe-skel-card:nth-child(2n) .fe-skel--label{width:50%}.fe-skel-card:nth-child(3n) .fe-skel--label{width:85%}.fe-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:240px;height:100%;padding:24px;text-align:center;color:var(--fe-text-muted)}.fe-state__art{color:var(--fe-text-muted);opacity:.7;margin-bottom:4px;flex:0 0 auto}.fe-state__title{margin:2px 0 0;font-size:15px;font-weight:600;color:var(--fe-text)}.fe-state__hint{margin:0;font-size:13px;max-width:420px}.fe-state__path{margin:0;font-size:12px;font-family:var(--fe-font-mono);word-break:break-all;max-width:480px}.fe-state__actions{margin-top:12px;display:flex;gap:8px}.fe-toast--action{display:flex;align-items:center;gap:14px;padding:8px 10px 8px 14px;cursor:pointer;max-width:min(480px,calc(100% - 32px))}.fe-toast__msg{min-width:0}.fe-toast__action{flex:0 0 auto;background:transparent;border:0;padding:4px 8px;border-radius:var(--fe-radius-sm);font:inherit;font-weight:600;color:color-mix(in srgb,var(--fe-primary) 70%,var(--fe-bg));cursor:pointer}.fe-toast__action:hover{background:color-mix(in srgb,var(--fe-bg) 14%,transparent)}.fe-toast__action:focus-visible{outline:2px solid var(--fe-bg);outline-offset:1px}.fe-connbadge{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:1.4;color:var(--fe-text-muted);background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:999px;padding:2px 10px;cursor:help;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.fe-connbadge__dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--fe-warning, #f59e0b)}.fe-cmdp__item--hit{align-items:flex-start}.fe-cmdp__item--hit .fe-cmdp__icon{margin-top:1px}.fe-cmdp__hitbody{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.fe-cmdp__hitline{display:flex;align-items:center;gap:8px;min-width:0}.fe-cmdp__badge,.fe-list__badge{flex:0 0 auto;display:inline-block;padding:1px 6px;border-radius:999px;border:1px solid color-mix(in srgb,var(--fe-primary) 35%,transparent);background:color-mix(in srgb,var(--fe-primary) 12%,transparent);color:var(--fe-primary);font-size:10px;font-weight:600;line-height:1.5;white-space:nowrap;vertical-align:middle}.fe-cmdp__crumb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--fe-text-muted)}.fe-cmdp__snippet,.fe-list__snippet{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--fe-text-muted)}.fe-cmdp__mark,.fe-list__mark,.fe-grid__mark{background:color-mix(in srgb,var(--fe-primary) 22%,transparent);color:var(--fe-text);border-radius:2px;padding:0 1px;font-weight:600}.fe-cmdp__loading{padding:8px 12px;font-size:13px;color:var(--fe-text-muted)}.fe-cmdp__item--saved{-webkit-user-select:none;user-select:none}.fe-cmdp__del{flex:0 0 auto;background:transparent;border:0;border-radius:var(--fe-radius-sm);padding:2px 6px;font:inherit;font-size:13px;color:var(--fe-text-muted);cursor:pointer;opacity:.55}.fe-cmdp__item--saved:hover .fe-cmdp__del,.fe-cmdp__item--saved.is-active .fe-cmdp__del{opacity:1}.fe-cmdp__del:hover{background:var(--fe-bg-elev);color:var(--fe-danger, #dc2626)}.fe-cmdp__del:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-list__snippet{max-width:100%}.fe-toolbar--narrow{flex-wrap:nowrap;gap:6px}.fe-toolbar--narrow .fe-btn.is-active{background:var(--fe-bg-selected)}.fe-toolbar--narrow .fe-search--full{flex:1 1 auto;min-width:0}.fe-toolbar--narrow .fe-search--full .fe-search__input{width:100%;min-width:0}.fe-fab{position:absolute;right:16px;bottom:16px;width:56px;height:56px;border:0;border-radius:50%;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:24px;display:flex;align-items:center;justify-content:center;box-shadow:var(--fe-shadow);cursor:pointer;z-index:45;transition:background .15s,transform .15s}.fe-fab:hover{background:var(--fe-primary-hover)}.fe-fab:active{transform:scale(.94)}.fe-fab:focus-visible{outline:2px solid var(--fe-primary);outline-offset:3px}.fe--narrow .fe-upload,.fe--narrow .fe-ops{bottom:84px}.fe-ctx-backdrop--sheet{background:#0d131b6b}.fe-sheet{position:fixed;left:0;right:0;bottom:0;max-height:70vh;display:flex;flex-direction:column;background:var(--fe-bg);color:var(--fe-text);border:1px solid var(--fe-border);border-bottom:0;border-top-left-radius:var(--fe-radius-lg);border-top-right-radius:var(--fe-radius-lg);box-shadow:0 -10px 32px #0f172a47;padding:0 8px calc(8px + env(safe-area-inset-bottom,0px));outline:none;z-index:90}.fe-sheet__handle{flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:12px 0 8px;cursor:grab;touch-action:none}.fe-sheet__handle:before{content:"";width:40px;height:4px;border-radius:99px;background:var(--fe-border-strong)}.fe-sheet__items{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.fe-sheet__item{min-height:44px;padding:10px 14px;font-size:15px;gap:12px}.fe-sheet-enter-active,.fe-sheet-leave-active{transition:opacity .18s ease}.fe-sheet-enter-active .fe-sheet,.fe-sheet-leave-active .fe-sheet{transition:transform .22s ease}.fe-sheet-enter-from,.fe-sheet-leave-to{opacity:0}.fe-sheet-enter-from .fe-sheet,.fe-sheet-leave-to .fe-sheet{transform:translateY(100%)}@media (prefers-reduced-motion: reduce){.fe-sheet-enter-active,.fe-sheet-leave-active,.fe-sheet-enter-active .fe-sheet,.fe-sheet-leave-active .fe-sheet,.fe-fab{transition:none}}.fe__main{display:flex;flex-direction:row;flex:1 1 auto;min-height:0}.fe__main>.fe__body{min-width:0;height:100%}.fe-inspector{flex:0 0 300px;width:300px;min-height:0;display:flex;flex-direction:column;border-left:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text)}.fe-inspector--overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;width:auto;border-left:none}.fe-inspector__head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fe-border);flex:0 0 auto}.fe-inspector__title{margin:0;font-size:13px;font-weight:600;letter-spacing:.02em}.fe-inspector__close{border:none;background:none;color:var(--fe-text-muted);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}.fe-inspector__close:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-inspector__scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px}.fe-inspector__section{margin-bottom:18px}.fe-inspector__section:last-child{margin-bottom:0}.fe-inspector__heading{margin:0 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fe-text-muted)}.fe-inspector__hero{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:6px 0 4px}.fe-inspector__bigicon{display:inline-flex}.fe-inspector__bigicon .fe-ficon{width:56px;height:56px}.fe-inspector__thumb{width:96px;height:96px;object-fit:cover;border-radius:var(--fe-radius);border:1px solid var(--fe-border)}.fe-inspector__name{margin:0;font-size:13px;font-weight:600;word-break:break-word;max-width:100%}.fe-inspector__sub{margin:0;font-size:12px;color:var(--fe-text-muted)}.fe-inspector__meta{margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.fe-inspector__row{display:flex;align-items:baseline;gap:8px;font-size:12px}.fe-inspector__row dt{flex:0 0 84px;color:var(--fe-text-muted)}.fe-inspector__row dd{margin:0;min-width:0;flex:1 1 auto;word-break:break-word}.fe-inspector__pathcell{display:flex;align-items:center;gap:4px}.fe-inspector__path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}.fe-inspector__mime{font-family:var(--fe-font-mono);font-size:11px}.fe-inspector__copy{flex:0 0 auto;border:none;background:none;color:var(--fe-text-muted);cursor:pointer;font-size:13px;line-height:1;padding:2px 4px;border-radius:4px}.fe-inspector__copy:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-inspector__empty{margin:0;font-size:12px;color:var(--fe-text-muted)}.fe-btn--sm{padding:3px 8px;font-size:12px}.fe-inspector__versions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.fe-inspector__version{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius)}.fe-inspector__version-main{display:flex;flex-direction:column;gap:2px}.fe-inspector__version-n{font-size:12px;font-weight:600}.fe-inspector__version-meta{font-size:11px;color:var(--fe-text-muted)}.fe-inspector__confirm{display:flex;flex-direction:column;gap:6px}.fe-inspector__confirm-q{margin:0;font-size:12px}.fe-inspector__check{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--fe-text-muted);cursor:pointer}.fe-inspector__confirm-actions{display:flex;gap:6px}.fe-inspector__snapshot{margin-top:8px;width:100%}.fe-inspector__permrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fe-inspector__badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;border:1px solid var(--fe-border-strong);color:var(--fe-text);background:var(--fe-bg-hover)}.fe-inspector__badge--owner{border-color:var(--fe-primary);color:var(--fe-primary);background:transparent}.fe-inspector__badge--none{color:var(--fe-text-muted)}.fe-inspector__badge--pin{border-color:var(--fe-warning, #f59e0b);color:var(--fe-warning, #f59e0b);background:transparent}.fe-inspector__shares{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.fe-inspector__share{display:flex;align-items:center;gap:6px;font-size:12px;min-width:0}.fe-inspector__share-url{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-inspector__share-exp{flex:0 0 auto;font-size:11px;color:var(--fe-text-muted)}@media (prefers-reduced-motion: no-preference){.fe-inspector{animation:fe-inspector-in .16s ease}@keyframes fe-inspector-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}}.fe-shortcuts__unbound{font-size:12px;font-style:italic;color:var(--fe-text-muted)}.fe-shortcuts__custom{margin-left:4px;font-size:9px;vertical-align:2px;color:var(--fe-primary)}.fe-shortset{display:flex;flex-direction:column;gap:14px}.fe-shortset__topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.fe-shortset__hint{margin:0;font-size:12px;color:var(--fe-text-muted);flex:1 1 auto}.fe-shortset__reset-all{flex:0 0 auto}.fe-shortset__group{display:flex;flex-direction:column}.fe-shortset__item{border-radius:var(--fe-radius-sm);padding:2px 6px;margin:0 -6px}.fe-shortset__item.is-capturing{background:var(--fe-bg-hover);outline:1px dashed var(--fe-primary);outline-offset:-1px}.fe-shortset__item.is-conflict{background:color-mix(in srgb,var(--fe-danger) 8%,transparent);outline:1px solid var(--fe-danger);outline-offset:-1px}.fe-shortset__row{display:flex;align-items:center;gap:12px;padding:4px 0;min-height:34px}.fe-shortset__label{flex:1 1 auto;font-size:13px;color:var(--fe-text)}.fe-shortset__keys{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.fe-shortset__capture{font-size:12px;color:var(--fe-primary);animation:fe-shortset-blink 1.1s ease-in-out infinite}@keyframes fe-shortset-blink{0%,to{opacity:1}50%{opacity:.45}}.fe-shortset__actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:118px;justify-content:flex-end}.fe-shortset__btn{padding:3px 9px;font-size:12px}.fe-shortset__fixed{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fe-text-muted);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px 7px}.fe-shortset__conflict{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 2px 8px;font-size:12.5px;color:var(--fe-danger)}.fe-shortset__conflict-msg{flex:1 1 auto;display:inline-flex;align-items:center;gap:6px;min-width:200px}.fe-shortset__conflict-actions{flex:0 0 auto;display:flex;gap:6px}.fe-ql-hint{position:fixed;left:50%;bottom:14px;transform:translate(-50%);z-index:72;display:inline-flex;flex-direction:row;align-items:center;width:auto;height:auto;min-height:0;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--fe-border);background:var(--fe-bg-elev);color:var(--fe-text-muted);font-size:12px;box-shadow:var(--fe-shadow);pointer-events:none;white-space:nowrap}.fe-ql-hint .fe-kbd{font-size:10.5px;padding:1px 5px}.fe-ql-hint__sep{opacity:.5}.fe-opc{position:absolute;right:16px;bottom:16px;z-index:45;display:flex;flex-direction:column;align-items:flex-end;gap:10px;max-width:calc(100% - 32px)}.fe-opc__badge{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 10px;border-radius:999px;border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow);cursor:pointer;font:inherit;font-size:13px;line-height:1}.fe-opc__badge:hover{background:var(--fe-bg-hover)}.fe-opc__badge:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-opc__badge.is-error{border-color:var(--fe-danger)}.fe-opc__badge.is-error .fe-opc__count{color:var(--fe-danger)}.fe-opc__ring{width:22px;height:22px;flex:0 0 auto}.fe-opc__ring-track{stroke:var(--fe-border-strong)}.fe-opc__ring-fill{stroke:var(--fe-primary);transition:stroke-dashoffset .25s}.fe-opc__badge.is-error .fe-opc__ring-fill{stroke:var(--fe-danger)}.fe-opc__ring--spin{animation:fe-opc-spin 1s linear infinite}@keyframes fe-opc-spin{to{transform:rotate(360deg)}}.fe-opc__count{font-weight:600}.fe-opc__pct{color:var(--fe-text-muted);font-size:12px}.fe-opc__panel{width:min(380px,calc(100vw - 32px));max-width:100%;max-height:min(420px,60vh);display:flex;flex-direction:column;overflow:hidden;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);box-shadow:var(--fe-shadow)}.fe-opc__head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);font-size:13px}.fe-opc__body{overflow:auto;padding:6px 0 8px}.fe-opc__section+.fe-opc__section{border-top:1px solid var(--fe-border);margin-top:6px}.fe-opc__section-title{display:flex;align-items:center;justify-content:space-between;margin:0;padding:8px 14px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fe-text-muted)}.fe-opc__list{list-style:none;margin:0;padding:0}.fe-opc__item{display:flex;align-items:flex-start;gap:10px;padding:8px 14px}.fe-opc__item+.fe-opc__item{border-top:1px solid var(--fe-border)}.fe-opc__item.is-error{background:color-mix(in srgb,var(--fe-danger) 7%,transparent)}.fe-opc__kicon{width:18px;height:18px;flex:0 0 auto;margin-top:2px;color:var(--fe-text-muted)}.fe-opc__item.is-error .fe-opc__kicon{color:var(--fe-danger)}.fe-opc__mid{flex:1 1 auto;min-width:0}.fe-opc__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.fe-opc__sub{display:flex;align-items:baseline;gap:5px;font-size:11px;color:var(--fe-text-muted);margin-top:1px;min-width:0}.fe-opc__sub--err,.fe-opc__item.is-error .fe-opc__state{color:var(--fe-danger)}.fe-opc__state{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-opc__bar{background:var(--fe-bg-elev);border-radius:99px;height:5px;overflow:hidden;margin-top:5px}.fe-opc__bar-fill{background:var(--fe-primary);height:100%;transition:width .2s}.fe-opc__spin{flex:0 0 auto;width:14px;height:14px;margin-top:4px;border-radius:50%;border:2px solid var(--fe-border-strong);border-top-color:var(--fe-primary);animation:fe-opc-spin .8s linear infinite}.fe-opc__acts{display:flex;align-items:center;gap:2px;flex:0 0 auto}.fe-opc__act{background:transparent;border:0;color:var(--fe-primary);cursor:pointer;font:inherit;font-size:12px;padding:2px 4px;border-radius:var(--fe-radius-sm)}.fe-opc__act:hover{background:var(--fe-bg-hover)}.fe-opc__act--retry{font-weight:600}.fe-opc__x{background:transparent;border:0;color:var(--fe-text-muted);cursor:pointer;font-size:16px;line-height:1;padding:0 4px;border-radius:var(--fe-radius-sm)}.fe-opc__x:hover{color:var(--fe-text)}.fe-opc__item--history .fe-opc__name{font-size:12px;color:var(--fe-text-muted)}.fe-opc__chip{flex:0 0 auto;font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;background:var(--fe-bg-elev);color:var(--fe-text-muted)}.fe-opc__chip.is-done{color:var(--fe-ok, #16a34a);background:color-mix(in srgb,var(--fe-ok, #16a34a) 12%,transparent)}.fe-opc__chip.is-error{color:var(--fe-danger);background:color-mix(in srgb,var(--fe-danger) 12%,transparent)}.fe-opc__item.is-done .fe-opc__bar-fill{background:var(--fe-ok, #16a34a)}.fe-opc__empty{margin:0;padding:16px 14px;font-size:12px;color:var(--fe-text-muted);text-align:center}.fe-opc-pop-enter-active,.fe-opc-pop-leave-active{transition:transform .16s ease,opacity .16s ease}.fe-opc-pop-enter-from,.fe-opc-pop-leave-to{opacity:0;transform:translateY(8px) scale(.98)}.fe--narrow .fe-opc{left:12px;right:12px;bottom:84px;max-width:none}.fe--narrow .fe-opc__panel{width:100%;max-height:50vh}@media (prefers-reduced-motion: reduce){.fe-opc__ring--spin,.fe-opc__spin{animation-duration:3s}.fe-opc-pop-enter-active,.fe-opc-pop-leave-active{transition:none}}.fe-grid__card:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-ctx__item:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-hover)}.fe-list__row.is-droptarget,.fe-grid__card.is-droptarget{outline:2px dashed var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-selected)}.fe-grid__card.is-droptarget{border-color:var(--fe-primary)}.fe-dragghost{display:inline-flex;align-items:center;gap:8px;max-width:260px;padding:6px 10px;border:1px solid var(--fe-border-strong);border-radius:var(--fe-radius);background:var(--fe-bg-elev);color:var(--fe-text);font-family:var(--fe-font);font-size:13px;box-shadow:var(--fe-shadow-sm);pointer-events:none;z-index:96}.fe-dragghost__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-dragghost__badge{flex:0 0 auto;min-width:20px;padding:1px 6px;border-radius:999px;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:12px;font-weight:600;text-align:center}.fe-state__details{margin-top:10px;max-width:480px;font-size:12px;text-align:left}.fe-state__details-summary{cursor:pointer;text-align:center;color:var(--fe-text-muted);-webkit-user-select:none;user-select:none}.fe-state__details-summary:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-state__details-pre{margin:8px 0 0;padding:8px 10px;border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);background:var(--fe-bg-elev);font-family:var(--fe-font-mono);font-size:11px;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow:auto}.fe-tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:96;color:var(--fe-text);font-family:var(--fe-font);font-size:14px}.fe-tour__spot{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px #0d131b8c;border:2px solid var(--fe-primary);pointer-events:none}.fe-tour__dim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d131b8c;pointer-events:none}.fe-tour__card{position:fixed;display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--fe-border-strong);border-radius:var(--fe-radius-lg);background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow);outline:none}.fe-tour__card--center{top:50%;left:50%;transform:translate(-50%,-50%);width:min(360px,calc(100vw - 24px))}.fe-tour__progress{margin:0;font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--fe-text-muted)}.fe-tour__title{margin:0;font-size:15px;font-weight:700}.fe-tour__desc{margin:0;font-size:13px;line-height:1.5;color:var(--fe-text-muted)}.fe-tour__dots{display:flex;gap:5px;margin-top:4px}.fe-tour__dot{width:7px;height:7px;border-radius:50%;background:var(--fe-border-strong);transition:background .15s}.fe-tour__dot.is-active{background:var(--fe-primary)}.fe-tour__actions{display:flex;align-items:center;gap:8px;margin-top:8px}.fe-tour__actions-spacer{flex:1 1 auto}.fe-tour__skip{color:var(--fe-text-muted)}.fe-tour-enter-active,.fe-tour-leave-active{transition:opacity .16s ease}.fe-tour-enter-from,.fe-tour-leave-to{opacity:0}@media (prefers-reduced-motion: reduce){.fe-tour-enter-active,.fe-tour-leave-active,.fe-ctx-enter-active,.fe-ctx-leave-active,.fe-sheet-enter-active,.fe-sheet-leave-active,.fe-toast-enter-active,.fe-toast-leave-active,.fe-list__row,.fe-grid__card,.fe-tour__dot,.fe-list__col--star{transition:none!important}}.fe-tabs{display:flex;align-items:stretch;gap:4px;flex:0 0 auto;min-width:0;padding:4px 6px 0;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);-webkit-user-select:none;user-select:none}.fe-tabs__scroll{display:flex;align-items:stretch;gap:2px;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:var(--fe-border-strong) transparent}.fe-tabs__scroll::-webkit-scrollbar{height:6px;width:0}.fe-tabs__scroll::-webkit-scrollbar-track{background:transparent}.fe-tabs__scroll::-webkit-scrollbar-thumb{background:var(--fe-border-strong);border-radius:6px}.fe-tabs__scroll::-webkit-scrollbar-thumb:hover{background:var(--fe-text-muted)}.fe-tabs__tab{display:flex;align-items:center;gap:6px;max-width:180px;min-width:72px;padding:4px 6px 4px 10px;font-size:12px;color:var(--fe-text-muted);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;white-space:nowrap;position:relative}.fe-tabs__tab:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-tabs__tab.is-active{background:var(--fe-bg);color:var(--fe-text);border-color:var(--fe-border)}.fe-tabs__tab.is-active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--fe-bg)}.fe-tabs__tab.is-dragover{outline:1px dashed var(--fe-primary);outline-offset:-2px}.fe-tabs__tab:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-tabs__label{overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}.fe-tabs__splitdot{width:6px;height:6px;border-radius:2px;background:var(--fe-primary);flex:0 0 auto}.fe-tabs__close{flex:0 0 auto;width:16px;height:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:4px;background:transparent;color:inherit;font-size:13px;cursor:pointer;padding:0}.fe-tabs__close:hover{background:var(--fe-bg-hover)}.fe-tabs__new,.fe-tabs__split{flex:0 0 auto;align-self:center;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--fe-text-muted);font-size:15px;cursor:pointer;padding:0}.fe-tabs__split .fe-ficon{width:14px;height:14px}.fe-tabs__new:hover,.fe-tabs__split:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-tabs__split.is-active{background:var(--fe-bg-selected);color:var(--fe-primary);border-color:var(--fe-border)}.fe--narrow .fe-tabs__split{display:none}.fe__primary{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0}.fe__primary>.fe__body{min-width:0}.fe__main--split>.fe__primary{flex:1 1 50%}.fe-split{flex:1 1 50%;min-width:0;min-height:0;display:flex;flex-direction:column;border-left:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text)}.fe__main--split>.fe__primary,.fe-split{box-shadow:inset 0 2px 0 transparent}.fe__main--split>.fe__primary.fe-pane--focus,.fe-split.fe-pane--focus{box-shadow:inset 0 2px 0 var(--fe-primary)}.fe-split__crumbs{display:flex;align-items:center;gap:4px;flex:0 0 auto;padding:6px 12px;min-height:37px;border-bottom:1px solid var(--fe-border);font-size:13px;color:var(--fe-text-muted);overflow:hidden;white-space:nowrap}.fe-split__crumb{border:none;background:transparent;color:inherit;font:inherit;padding:2px 6px;border-radius:var(--fe-radius-sm);cursor:pointer;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-split__crumb:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-split__crumb.is-last{color:var(--fe-text);font-weight:600}.fe-split__sep{opacity:.6;flex:0 0 auto}.fe-split__spacer{flex:1 1 auto}.fe-split__closebtn{flex:0 0 auto;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:5px;background:transparent;color:var(--fe-text-muted);font-size:14px;cursor:pointer;padding:0}.fe-split__closebtn:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-split__body{flex:1 1 auto;min-height:0;overflow:auto;position:relative}.fe-split__body.is-dropover{outline:2px dashed var(--fe-primary);outline-offset:-4px}.fe-split__list{padding:4px 0}.fe-split__row{display:flex;align-items:center;gap:8px;padding:5px 10px;font-size:13px;cursor:default}.fe-split__row:hover{background:var(--fe-bg-hover)}.fe-split__row.is-selected{background:var(--fe-bg-selected)}.fe-split__row.is-droptarget{outline:1.5px dashed var(--fe-primary);outline-offset:-2px;border-radius:6px}.fe-split__row:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-split__icon{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:16px}.fe-split__icon .fe-ficon{width:16px;height:16px}.fe-split__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-split__size{flex:0 0 auto;color:var(--fe-text-muted);font-size:11.5px}.fe-split__state{padding:24px 12px;text-align:center;color:var(--fe-text-muted);font-size:12.5px;display:flex;flex-direction:column;gap:10px;align-items:center}.fe-gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-gal__card{display:flex;flex-direction:column;align-items:stretch;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);cursor:pointer;overflow:hidden;transition:background .08s,border-color .08s;-webkit-user-select:none;user-select:none}.fe-gal__card:hover{background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-gal__card.is-selected{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-gal__card.is-trash{opacity:.7}.fe-gal__card.is-clipped{opacity:.55;border-style:dashed}.fe-gal__card:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-gal__card.is-droptarget{outline:2px dashed var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-gal__thumb{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;background:var(--fe-bg);overflow:hidden}.fe-gal__thumb img{width:100%;height:100%;object-fit:cover}.fe-gal__icon{font-size:44px}.fe-gal__icon--svg svg{width:64px;height:64px}.fe-gal__meta{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:1px;padding:6px 8px;font-size:11px;line-height:1.35;color:var(--fe-text);background:color-mix(in srgb,var(--fe-bg-elev) 88%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease;pointer-events:none}.fe-gal__card:hover .fe-gal__meta,.fe-gal__card:focus-visible .fe-gal__meta{opacity:1;transform:translateY(0)}.fe-gal__meta-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-gal__meta-line--path{color:var(--fe-text-muted);font-style:italic}.fe-gal__label{padding:7px 9px;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.fe-gal__empty{grid-column:1 / -1;padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe--narrow .fe-gal{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.fe--density-compact .fe-gal{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:calc(var(--fe-gap) * .6)}.fe--density-compact .fe-gal__label{padding:5px 7px;font-size:12px}@media (prefers-reduced-motion: reduce){.fe-gal__card,.fe-gal__meta{transition:none!important;transform:none}}.fe-inspector__countbadge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-left:6px;border-radius:8px;font-size:10px;font-weight:600;letter-spacing:0;background:var(--fe-bg-hover);color:var(--fe-text);vertical-align:middle}.fe-inspector__comments{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:8px}.fe-inspector__comment{border:1px solid var(--fe-border);border-radius:8px;padding:6px 8px;background:var(--fe-bg)}.fe-inspector__comment-top{display:flex;align-items:baseline;gap:6px;min-width:0}.fe-inspector__comment-author{font-size:12px;font-weight:600;color:var(--fe-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fe-inspector__comment-time{font-size:11px;color:var(--fe-text-muted);flex:1 1 auto;white-space:nowrap}.fe-inspector__comment-del{border:none;background:none;color:var(--fe-text-muted);font-size:14px;line-height:1;cursor:pointer;padding:0 4px;border-radius:4px;flex:0 0 auto}.fe-inspector__comment-del:hover{background:var(--fe-bg-hover);color:var(--fe-danger)}.fe-inspector__comment-del:disabled{opacity:.5;cursor:default}.fe-inspector__comment-body{margin:4px 0 0;font-size:12px;line-height:1.45;color:var(--fe-text);overflow-wrap:anywhere;white-space:pre-wrap}.fe-inspector__comment-form{display:flex;gap:6px;align-items:center}.fe-inspector__comment-input{flex:1 1 auto;min-width:0;border:1px solid var(--fe-border);border-radius:8px;background:var(--fe-bg);color:var(--fe-text);font:inherit;font-size:12px;padding:6px 8px}.fe-inspector__comment-input:focus{outline:none;border-color:var(--fe-accent)}.fe-inspector__comment-input:disabled{opacity:.6}.fe-e2e-strip{display:flex;align-items:center;gap:8px;padding:4px 12px;font-size:12.5px;color:var(--fe-text-muted);border-bottom:1px solid var(--fe-border);background:var(--fe-bg-elev)}.fe-e2e-strip__icon{font-size:13px;line-height:1}.fe-e2e-strip__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-e2e-strip__btn{padding:2px 10px;font-size:12px}.fe-e2e-lock__form{display:flex;gap:8px;align-items:stretch;margin-top:12px;width:min(340px,100%)}.fe-e2e-lock__input{flex:1;min-width:0}.fe-e2e-form{display:flex;flex-direction:column;gap:10px}.fe-e2e-warn{border:1px solid var(--fe-danger);border-radius:var(--fe-radius-sm);padding:8px 10px;font-size:12.5px;color:var(--fe-text);background:color-mix(in srgb,var(--fe-danger) 8%,transparent)}.fe-e2e-warn strong{display:block;color:var(--fe-danger);margin-bottom:2px}.fe-e2e-warn p{margin:0;color:var(--fe-text-muted)}.fe-e2e-ack{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--fe-text);cursor:pointer}.fe-e2e-ack input{margin-top:2px;accent-color:var(--fe-primary)}.fe-e2e-optlink{margin-top:10px;padding:0;border:none;background:none;font:inherit;font-size:12.5px;color:var(--fe-primary);cursor:pointer;text-align:left}.fe-e2e-optlink:hover{text-decoration:underline}.fe:not(.fe--narrow) .fe-toolbar{flex-wrap:nowrap}.fe:not(.fe--narrow) .fe-toolbar__primary{flex:1 1 auto;min-width:0;flex-wrap:nowrap;overflow:hidden;position:relative}.fe-toolbar__measure{position:absolute;visibility:hidden;pointer-events:none;height:0;overflow:hidden;display:flex;gap:8px;white-space:nowrap}.fe-toolbar__measure .fe-btn{flex:none}.fe-thememode{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.fe-thememode__label{font-size:13px;font-weight:600;color:var(--fe-text-muted)}.fe-thememode__seg{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);background:var(--fe-bg-elev)}.fe-thememode__opt{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:0;border-radius:calc(var(--fe-radius-lg) - 4px);background:transparent;color:var(--fe-text-muted);font:inherit;font-size:13px;cursor:pointer;transition:background .14s ease,color .14s ease}.fe-thememode__opt:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-thememode__opt.is-active{background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow-sm)}.fe-thememode__opt .fe-ficon{width:15px;height:15px;flex:none}@media (max-width: 420px){.fe-thememode__seg{flex:1 1 100%}.fe-thememode__opt{flex:1;justify-content:center}}.fe-cfield{display:flex;flex-direction:column;gap:14px}.fe-cfield__empty{margin:0;color:var(--fe-text-muted);font-size:13px}.fe-cfield__row{display:flex;flex-direction:column;gap:5px}.fe-cfield__label{font-size:13px;font-weight:600;color:var(--fe-text)}.fe-cfield__req{color:var(--fe-danger);margin-left:3px}.fe-cfield__input{font:inherit;font-size:13.5px;padding:8px 10px;border-radius:var(--fe-radius);border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);width:100%;min-width:0;box-sizing:border-box}.fe-cfield__input:focus{outline:2px solid var(--fe-primary);outline-offset:-1px}.fe-cfield__input--mono{font-family:var(--fe-font-mono);font-size:12.5px}.fe-cfield__input--area{resize:vertical}.fe-cfield__row.is-invalid .fe-cfield__input{border-color:var(--fe-danger)}.fe-cfield__secret{display:flex;gap:6px;align-items:stretch}.fe-cfield__eye{flex:0 0 auto;border:1px solid var(--fe-border-strong);background:var(--fe-bg-elev);color:var(--fe-text);border-radius:var(--fe-radius);padding:0 10px;cursor:pointer;font-size:14px}.fe-cfield__check{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--fe-text);cursor:pointer}.fe-cfield__help{margin:0;font-size:12px;color:var(--fe-text-muted);line-height:1.45}.fe-cfield__error{margin:0;font-size:12px;color:var(--fe-danger)}.fe-cfield__advtoggle{border:0;background:none;color:var(--fe-text-muted);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;padding:2px 0}.fe-cfield__advtoggle:hover{color:var(--fe-text)}.fe-cfield__advbody{display:flex;flex-direction:column;gap:14px;margin-top:12px}.fe-guide{display:flex;flex-direction:column;gap:16px}.fe-guide__summary{margin:0;color:var(--fe-text-muted);font-size:13.5px;line-height:1.55}.fe-guide__facts{display:flex;flex-direction:column;gap:10px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);padding:12px 14px}.fe-guide__fact{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:4px 14px;align-items:baseline}.fe-guide__factlabel{font-size:12.5px;font-weight:600;color:var(--fe-text-muted)}.fe-guide__factvalue{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.fe-guide__factvalue code{font-family:var(--fe-font-mono);font-size:12.5px;color:var(--fe-text);background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px 6px;overflow-wrap:anywhere}.fe-guide__ph{color:var(--fe-text-muted)!important;font-style:italic}.fe-guide__facthint{grid-column:2;font-size:12px;color:var(--fe-text-muted)}.fe-guide__tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--fe-border);padding-bottom:2px}.fe-guide__tab{font:inherit;font-size:13px;border:0;background:none;color:var(--fe-text-muted);padding:6px 10px;border-radius:var(--fe-radius-sm) var(--fe-radius-sm) 0 0;cursor:pointer;border-bottom:2px solid transparent}.fe-guide__tab:hover{color:var(--fe-text);background:var(--fe-bg-hover)}.fe-guide__tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary);font-weight:600}.fe-guide__body{display:flex;flex-direction:column;gap:12px}.fe-guide__steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:13.5px;line-height:1.55;color:var(--fe-text)}.fe-guide__codewrap{border:1px solid var(--fe-border);border-radius:var(--fe-radius);overflow:hidden;background:var(--fe-bg-elev)}.fe-guide__codehead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px;border-bottom:1px solid var(--fe-border)}.fe-guide__caption{font-size:12px;color:var(--fe-text-muted);font-family:var(--fe-font-mono);overflow-wrap:anywhere}.fe-guide__code{margin:0;padding:10px 12px;overflow-x:auto;font-family:var(--fe-font-mono);font-size:12.5px;line-height:1.6;color:var(--fe-text);white-space:pre}.fe-guide__copy{font:inherit;font-size:12px;border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);border-radius:var(--fe-radius-sm);padding:3px 9px;cursor:pointer;flex:0 0 auto}.fe-guide__copy:hover{border-color:var(--fe-primary);color:var(--fe-primary)}.fe-guide__note,.fe-guide__warn,.fe-guide__text{margin:0;font-size:12.5px;line-height:1.55}.fe-guide__text{color:var(--fe-text)}.fe-guide__note{color:var(--fe-text-muted)}.fe-guide__warn{color:var(--fe-danger)}.fe-guide__notes{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--fe-border);padding-top:12px}.fe-guide__notestitle{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted)}.fe-s3keys{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--fe-border);border-radius:10px;background:var(--fe-surface)}.fe-s3keys__title{margin:0;font-size:14px;font-weight:600}.fe-s3keys__lead,.fe-s3keys__hint,.fe-s3keys__muted{margin:0;font-size:12px;color:var(--fe-muted)}.fe-s3keys__warn{margin:0;font-size:12px;color:var(--fe-danger, #c0392b)}.fe-s3keys__form{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:8px;align-items:center}@media (max-width: 640px){.fe-s3keys__form{grid-template-columns:1fr}}.fe-s3keys__btn{padding:7px 12px;border-radius:8px;border:1px solid transparent;background:var(--fe-accent, #2f6df6);color:#fff;font-size:13px;cursor:pointer}.fe-s3keys__btn:disabled{opacity:.55;cursor:default}.fe-s3keys__secret{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:8px;border:1px solid var(--fe-accent, #2f6df6);background:var(--fe-surface-2, rgba(47, 109, 246, .06))}.fe-s3keys__once{margin:0;font-size:12px;font-weight:600}.fe-s3keys__pair{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}.fe-s3keys__pair code{flex:1;overflow-wrap:anywhere;font-family:var(--fe-mono, ui-monospace, monospace)}.fe-s3keys__k{min-width:96px;color:var(--fe-muted)}.fe-s3keys__copy,.fe-s3keys__dismiss,.fe-s3keys__link{background:none;border:none;padding:0 4px;color:var(--fe-accent, #2f6df6);font-size:12px;cursor:pointer}.fe-s3keys__link.is-danger{color:var(--fe-danger, #c0392b)}.fe-s3keys__dismiss{align-self:flex-start}.fe-s3keys__table{width:100%;border-collapse:collapse;font-size:12px}.fe-s3keys__table th{text-align:left;font-weight:500;color:var(--fe-muted);padding:4px 6px}.fe-s3keys__table td{padding:5px 6px;border-top:1px solid var(--fe-border);overflow-wrap:anywhere}.fe-s3keys__table tr.is-off{opacity:.55}.fe-s3keys__actions{white-space:nowrap;text-align:right}.fe-sshkeys__form{display:flex;flex-direction:column;gap:8px}.fe-sshkeys__paste{width:100%;font-family:var(--fe-mono, ui-monospace, monospace);font-size:12px;resize:vertical;overflow-wrap:anywhere}.fe-sshkeys__row{display:flex;gap:8px;align-items:center}.fe-sshkeys__row .fe-cfield__input{flex:1}.fe-nfs__form{grid-template-columns:1.2fr 1fr 1fr 1fr auto auto}@media (max-width: 900px){.fe-nfs__form{grid-template-columns:1fr}}.fe-nfs__ro{display:inline-flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}.fe-conn{display:flex;flex-direction:column;gap:14px;font-family:var(--fe-font);font-size:14px;color:var(--fe-text);background:var(--fe-bg);min-width:0}.fe-conn.fe--theme-light{--fe-bg: #ffffff;--fe-bg-elev: #f7f8fa;--fe-bg-hover: #edf0f5;--fe-border: #e2e6ed;--fe-border-strong: #c7ced9;--fe-text: #1a1e27;--fe-text-muted: #5a6475;--fe-primary: #2f6fe0;--fe-danger: #dc2626}.fe-conn__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.fe-conn h2,.fe-conn h3,.fe-conn h4{text-transform:none;letter-spacing:normal}.fe-conn__title{margin:0;font-size:17px;font-weight:650}.fe-conn__sub{margin:3px 0 0;color:var(--fe-text-muted);font-size:13px;overflow-wrap:anywhere}.fe-conn__tabs{display:flex;gap:4px;border-bottom:1px solid var(--fe-border)}.fe-conn__tab{font:inherit;font-size:13.5px;border:0;background:none;color:var(--fe-text-muted);padding:7px 12px;cursor:pointer;border-bottom:2px solid transparent}.fe-conn__tab:hover{color:var(--fe-text)}.fe-conn__tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary);font-weight:600}.fe-conn__body{display:flex;flex-direction:column;gap:12px;min-width:0}.fe-conn__card{border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);padding:12px 14px}.fe-conn__card--notice{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.fe-conn__form{display:flex;flex-direction:column;gap:14px}.fe-conn__formtitle{margin:0;font-size:14px;font-weight:650}.fe-conn__list{display:flex;flex-direction:column;gap:8px}.fe-conn__listhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.fe-conn__rowmain{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.fe-conn__rowtext{min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fe-conn__rowbtns{display:flex;gap:6px;flex:0 0 auto}.fe-conn__name{font-size:14px}.fe-conn__summary{flex-basis:100%;font-family:var(--fe-font-mono);font-size:12px;overflow-wrap:anywhere}.fe-conn__badge{font-size:11px;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--fe-border-strong);border-radius:999px;padding:1px 8px;color:var(--fe-text-muted)}.fe-conn__badge--warn{color:var(--fe-danger);border-color:var(--fe-danger)}.fe-conn__muted{color:var(--fe-text-muted);font-size:12.5px;margin:0;line-height:1.5}.fe-conn__empty{border:1px dashed var(--fe-border-strong);border-radius:var(--fe-radius);padding:16px;color:var(--fe-text-muted);font-size:13px;margin:0}.fe-conn__error{margin:0;color:var(--fe-danger);font-size:13px;overflow-wrap:anywhere}.fe-conn__testresult{margin:0;font-size:13px;overflow-wrap:anywhere}.fe-conn__testresult.is-ok{color:#16a34a}.fe-conn__testresult.is-bad{color:var(--fe-danger)}.fe-conn__actions{display:flex;gap:8px;flex-wrap:wrap}.fe-conn__btn{font:inherit;font-size:13px;padding:6px 12px;border-radius:var(--fe-radius);border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);cursor:pointer}.fe-conn__btn:hover:not(:disabled){border-color:var(--fe-primary)}.fe-conn__btn:disabled{opacity:.55;cursor:default}.fe-conn__btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:#fff}.fe-conn__btn--danger{color:var(--fe-danger)}.fe-conn__guidebar{display:flex;gap:12px;flex-wrap:wrap}.fe-conn__pick{display:flex;flex-direction:column;gap:4px;min-width:180px}.filex-viewer-3d{width:100%;height:100%;min-height:480px;background:#1a1a1a;display:flex;align-items:center;justify-content:center}.filex-viewer-3d model-viewer{width:100%;height:100%;min-height:480px;background:#1a1a1a;display:block}.filex-viewer-fallback{text-align:center;color:#c8cdd6;padding:32px;max-width:480px}.filex-viewer-epub__nav{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:8px;padding:4px 8px;background:var(--fe-bg-elev, rgba(255, 255, 255, .9));border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filex-viewer-epub{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27);position:relative}.filex-viewer-epub__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-epub__fs{display:inline-block;min-width:40px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-epub__main{flex:1;min-height:0;display:flex}.filex-viewer-epub__rendition{flex:1;min-height:0}.filex-viewer-epub__toc{width:260px;border-right:1px solid var(--fe-border, #e2e6ed);overflow-y:auto;padding:12px 0;background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-epub__toc ul{list-style:none;margin:0;padding:0}.filex-viewer-epub__toc-link{display:block;width:100%;text-align:left;background:transparent;border:0;padding:6px 14px;font:inherit;color:inherit;cursor:pointer}.filex-viewer-epub__toc-link:hover{background:var(--fe-bg-hover, #edf0f5)}.filex-viewer-epub__toc-link.is-child{padding-left:28px;color:var(--fe-text-muted, #5a6475);font-size:12px}.filex-viewer-epub__loading{position:absolute;inset:auto 0 0 0;text-align:center;padding:6px;background:#0000000d;font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-btn:disabled{opacity:.5;cursor:not-allowed}.filex-viewer-mermaid{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-mermaid__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-mermaid__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-mermaid__pane{flex:1;overflow:hidden;position:relative;cursor:grab;background:var(--fe-bg-elev, #f7f8fa);touch-action:none}.filex-viewer-mermaid__pane:active{cursor:grabbing}.filex-viewer-mermaid__surface{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transform-origin:center center;transition:transform .05s linear;-webkit-user-select:none;user-select:none}.filex-viewer-mermaid__surface svg{max-width:90%;max-height:90%}.filex-viewer-fallback{text-align:center;padding:32px;color:var(--fe-text-muted, #5a6475);width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.filex-viewer-drawio{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-drawio__bar{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-drawio__status[data-state=error]{color:var(--fe-danger, #dc2626)}.filex-viewer-drawio__status[data-state=saved]{color:#059669}.filex-viewer-drawio__readonly{font-style:italic;margin-left:auto}.filex-viewer-drawio__frame{flex:1;width:100%;border:0;background:#fafafa;min-height:0}.filex-viewer-tiff__pager{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--fe-bg-elev, rgba(255, 255, 255, .9));border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filex-viewer-tiff__pages{font-size:12px;font-variant-numeric:tabular-nums}.filex-viewer-tiff{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-tiff__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-tiff__pages{min-width:110px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-tiff__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-tiff__pane{flex:1;overflow:auto;padding:16px;background:#2a2d33;display:flex;align-items:flex-start;justify-content:flex-start}.filex-viewer-tiff__pane canvas{background:#fff;box-shadow:0 4px 16px #0000004d}.filex-viewer-psd{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-psd__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-psd__dim{font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-psd__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-psd__main{flex:1;display:flex;min-height:0}.filex-viewer-psd__layers{width:240px;border-right:1px solid var(--fe-border, #e2e6ed);overflow-y:auto;padding:8px 0;background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-psd__layers ul{list-style:none;margin:0;padding:0}.filex-viewer-psd__layers li{display:flex;align-items:center;gap:6px;padding:4px 12px;font-size:12px}.filex-viewer-psd__layer-vis{width:14px;text-align:center;color:var(--fe-text-muted, #5a6475)}.filex-viewer-psd__layer-vis[data-hidden="1"]{color:var(--fe-border-strong, #c7ced9)}.filex-viewer-psd__layer-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filex-viewer-psd__pane{flex:1;overflow:auto;padding:16px;background:#2a2d33;display:flex;align-items:flex-start;justify-content:flex-start}.filex-viewer-psd__pane canvas{background:#fff repeating-conic-gradient(#e0e0e0 0% 25%,transparent 0% 50%) 50% / 16px 16px;box-shadow:0 4px 16px #0000004d}.filex-viewer-fallback{text-align:center;padding:32px;color:#c8cdd6;margin:auto}.filex-viewer-btn.is-active{background:var(--fe-bg-selected, #dfe8ff);border-color:var(--fe-primary, #3b82f6)}.filex-viewer-ipynb{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-ipynb__bar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-ipynb__lang{font-family:var(--fe-font-mono, monospace);text-transform:uppercase;letter-spacing:.04em}.filex-viewer-ipynb__pane{flex:1;overflow:auto;padding:16px 24px}.filex-viewer-ipynb__cell{border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;margin-bottom:16px;overflow:hidden}.filex-viewer-ipynb__cell[data-type=code]{background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-ipynb__exec{padding:4px 12px;font-family:var(--fe-font-mono, monospace);font-size:11px;color:var(--fe-text-muted, #5a6475);background:#0000000a}.filex-viewer-ipynb__src{margin:0;padding:12px;font-family:var(--fe-font-mono, monospace);font-size:12px;line-height:1.5;white-space:pre;overflow-x:auto}.filex-viewer-ipynb__outputs{border-top:1px dashed var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);padding:8px 12px}.filex-viewer-ipynb__out{margin:0;padding:4px 0;font-family:var(--fe-font-mono, monospace);font-size:12px;white-space:pre-wrap;word-wrap:break-word}.filex-viewer-ipynb__out[data-type=error]{color:var(--fe-danger, #dc2626)}.filex-viewer-ipynb__img{display:block;max-width:100%;height:auto;margin:8px 0}.filex-viewer-ipynb__html{font-size:13px}.filex-viewer-ipynb__md{padding:12px 16px;font-size:14px;line-height:1.6}.filex-viewer-ipynb__md-raw{padding:12px;margin:0;font-family:var(--fe-font-mono, monospace);font-size:12px;white-space:pre-wrap}.filex-viewer-csv{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-csv__bar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px}.filex-viewer-csv__check{display:flex;align-items:center;gap:4px;font-size:12px}.filex-viewer-csv__select,.filex-viewer-csv__filter{border:1px solid var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);color:inherit;padding:4px 8px;border-radius:4px;font:inherit;font-size:12px}.filex-viewer-csv__filter{flex:0 1 240px}.filex-viewer-spacer{flex:1}.filex-viewer-csv__count{font-size:11px;color:var(--fe-text-muted, #5a6475);font-variant-numeric:tabular-nums}.filex-viewer-csv__pane{flex:1;overflow:auto}.filex-viewer-csv__table{border-collapse:collapse;width:max-content;min-width:100%;font-size:12px;font-family:var(--fe-font-mono, monospace)}.filex-viewer-csv__table th,.filex-viewer-csv__table td{padding:4px 10px;border:1px solid var(--fe-border, #e2e6ed);white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}.filex-viewer-csv__table th{background:var(--fe-bg-elev, #f7f8fa);position:sticky;top:0;font-weight:600;text-align:left}.filex-viewer-csv__table tbody tr:nth-child(2n){background:var(--fe-bg-hover, rgba(0, 0, 0, .02))}.filex-viewer-csv__rownum{color:var(--fe-text-muted, #5a6475);text-align:right;background:var(--fe-bg-elev, #f7f8fa);font-variant-numeric:tabular-nums;position:sticky;left:0}.filex-viewer-csv__pager{display:flex;justify-content:center;align-items:center;gap:8px;padding:6px;background:var(--fe-bg-elev, #f7f8fa);border-top:1px solid var(--fe-border, #e2e6ed);font-size:12px}.filex-viewer-csv__pageno{font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-btn{border:1px solid var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27);padding:4px 10px;border-radius:4px;cursor:pointer;font:inherit;font-size:12px}.filex-viewer-btn:hover:not(:disabled){background:var(--fe-bg-hover, #edf0f5)}.filex-viewer-btn:disabled{opacity:.4;cursor:not-allowed}.filex-viewer-archive{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-archive__pane{flex:1;overflow:auto;padding:16px 20px}.filex-viewer-archive__summary{font-size:12px;color:var(--fe-text-muted, #5a6475);margin-bottom:12px;font-variant-numeric:tabular-nums}.filex-viewer-archive__table{width:100%;border-collapse:collapse;font-size:13px;font-family:var(--fe-font-mono, monospace)}.filex-viewer-archive__table th,.filex-viewer-archive__table td{padding:6px 12px;border-bottom:1px solid var(--fe-border, #e2e6ed);text-align:left}.filex-viewer-archive__table th{background:var(--fe-bg-elev, #f7f8fa);font-weight:600;position:sticky;top:0}.filex-viewer-archive__size{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--fe-text-muted, #5a6475)}.filex-viewer-archive__icon{margin-right:6px}.filex-viewer-archive__table tr[data-dir="1"]{color:var(--fe-text-muted, #5a6475)}.filex-viewer-fallback{text-align:center;padding:32px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-fallback__icon{font-size:48px;display:block;margin-bottom:12px}';let Zb=!1;function Xb(){if(Zb||typeof document>"u")return;const e=document.createElement("style");e.setAttribute("data-filex",""),e.textContent=PP,document.head.appendChild(e),Zb=!0}function Mc(e,t){const n={};return e.apiBase&&(n.apiBase=e.apiBase),e.endpoint&&(n.endpoint=e.endpoint),(e.locale==="tr"||e.locale==="en")&&(n.locale=e.locale),(e.theme==="light"||e.theme==="dark"||e.theme==="auto")&&(n.theme=e.theme),e.trashVisible!==void 0&&(n.trashVisible=e.trashVisible===!0||e.trashVisible==="true"||e.trashVisible===""),{...n,...t??{}}}const Jb=Hg({inheritAttrs:!1,props:{config:{type:Object,default:null},apiBase:{type:String,default:""},endpoint:{type:String,default:""},locale:{type:String,default:""},theme:{type:String,default:""},trashVisible:{type:[Boolean,String],default:void 0}},emits:["share-created","file-opened","error","upload-progress","selection-change"],setup(e,{emit:t}){Xb();const n=X(Mc({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme,trashVisible:e.trashVisible},e.config));return Tt(()=>[e.config,e.apiBase,e.endpoint,e.locale,e.theme,e.trashVisible],()=>{n.value=Mc({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme,trashVisible:e.trashVisible},e.config)},{deep:!0}),()=>df(jz,{config:n.value,onShareCreated:r=>t("share-created",r),onFileOpened:r=>t("file-opened",r),onError:r=>t("error",r),onUploadProgress:r=>t("upload-progress",r),onSelectionChange:r=>t("selection-change",r)})}},{shadowRoot:!1}),Qb=Hg({inheritAttrs:!1,props:{config:{type:Object,default:null},apiBase:{type:String,default:""},endpoint:{type:String,default:""},locale:{type:String,default:""},theme:{type:String,default:""},initialTab:{type:String,default:""},closable:{type:[Boolean,String],default:void 0}},emits:["changed","close","error"],setup(e,{emit:t}){Xb();const n=()=>({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme}),r=X(Mc(n(),e.config));return Tt(()=>[e.config,e.apiBase,e.endpoint,e.locale,e.theme],()=>{r.value=Mc(n(),e.config)},{deep:!0}),()=>df(LP,{config:r.value,initialTab:e.initialTab==="connect"?"connect":"storages",closable:e.closable===!0||e.closable==="true"||e.closable==="",onChanged:()=>t("changed"),onClose:()=>t("close"),onError:a=>t("error",a)})}},{shadowRoot:!1}),BP=Jb,$P=Qb;typeof customElements<"u"&&!customElements.get("filex-explorer")&&customElements.define("filex-explorer",Jb),typeof customElements<"u"&&!customElements.get("filex-connections")&&customElements.define("filex-connections",Qb);var UP=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function qf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function e2(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&e2(n)}),e}class t2{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n2(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function ji(e,...t){const n=Object.create(null);for(const r in e)n[r]=e[r];return t.forEach(function(r){for(const a in r)n[a]=r[a]}),n}const HP="</span>",r2=e=>!!e.scope,GP=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,a)=>`${r}${"_".repeat(a+1)}`)].join(" ")}return`${t}${e}`};class qP{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=n2(t)}openNode(t){if(!r2(t))return;const n=GP(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){r2(t)&&(this.buffer+=HP)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const a2=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class Kf{constructor(){this.rootNode=a2(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=a2({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{Kf._collapse(n)}))}}class KP extends Kf{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new qP(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Bl(e){return e?typeof e=="string"?e:e.source:null}function i2(e){return Oo("(?=",e,")")}function jP(e){return Oo("(?:",e,")*")}function VP(e){return Oo("(?:",e,")?")}function Oo(...e){return e.map(n=>Bl(n)).join("")}function WP(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function jf(...e){return"("+(WP(e).capture?"":"?:")+e.map(r=>Bl(r)).join("|")+")"}function o2(e){return new RegExp(e.toString()+"|").exec("").length-1}function YP(e,t){const n=e&&e.exec(t);return n&&n.index===0}const ZP=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Vf(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;const a=n;let i=Bl(r),o="";for(;i.length>0;){const s=ZP.exec(i);if(!s){o+=i;break}o+=i.substring(0,s.index),i=i.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?o+="\\"+String(Number(s[1])+a):(o+=s[0],s[0]==="("&&n++)}return o}).map(r=>`(${r})`).join(t)}const XP=/\b\B/,s2="[a-zA-Z]\\w*",Wf="[a-zA-Z_]\\w*",l2="\\b\\d+(\\.\\d+)?",u2="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",c2="\\b(0b[01]+)",JP="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",QP=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Oo(t,/.*\b/,e.binary,/\b.*/)),ji({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},$l={begin:"\\\\[\\s\\S]",relevance:0},eB={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[$l]},tB={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[$l]},nB={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Oc=function(e,t,n={}){const r=ji({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=jf("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:Oo(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},rB=Oc("//","$"),aB=Oc("/\\*","\\*/"),iB=Oc("#","$"),oB={scope:"number",begin:l2,relevance:0},sB={scope:"number",begin:u2,relevance:0},lB={scope:"number",begin:c2,relevance:0},uB={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[$l,{begin:/\[/,end:/\]/,relevance:0,contains:[$l]}]},cB={scope:"title",begin:s2,relevance:0},dB={scope:"title",begin:Wf,relevance:0},fB={begin:"\\.\\s*"+Wf,relevance:0};var Ic=Object.freeze({__proto__:null,APOS_STRING_MODE:eB,BACKSLASH_ESCAPE:$l,BINARY_NUMBER_MODE:lB,BINARY_NUMBER_RE:c2,COMMENT:Oc,C_BLOCK_COMMENT_MODE:aB,C_LINE_COMMENT_MODE:rB,C_NUMBER_MODE:sB,C_NUMBER_RE:u2,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},HASH_COMMENT_MODE:iB,IDENT_RE:s2,MATCH_NOTHING_RE:XP,METHOD_GUARD:fB,NUMBER_MODE:oB,NUMBER_RE:l2,PHRASAL_WORDS_MODE:nB,QUOTE_STRING_MODE:tB,REGEXP_MODE:uB,RE_STARTERS_RE:JP,SHEBANG:QP,TITLE_MODE:cB,UNDERSCORE_IDENT_RE:Wf,UNDERSCORE_TITLE_MODE:dB});function pB(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function hB(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function mB(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=pB,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function vB(e,t){Array.isArray(e.illegal)&&(e.illegal=jf(...e.illegal))}function gB(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function bB(e,t){e.relevance===void 0&&(e.relevance=1)}const _B=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=Oo(n.beforeMatch,i2(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},yB=["of","and","for","in","not","or","if","then","parent","list","value"],xB="keyword";function d2(e,t,n=xB){const r=Object.create(null);return typeof e=="string"?a(n,e.split(" ")):Array.isArray(e)?a(n,e):Object.keys(e).forEach(function(i){Object.assign(r,d2(e[i],t,i))}),r;function a(i,o){t&&(o=o.map(s=>s.toLowerCase())),o.forEach(function(s){const l=s.split("|");r[l[0]]=[i,kB(l[0],l[1])]})}}function kB(e,t){return t?Number(t):wB(e)?0:1}function wB(e){return yB.includes(e.toLowerCase())}const f2={},Io=e=>{console.error(e)},p2=(e,...t)=>{console.log(`WARN: ${e}`,...t)},hs=(e,t)=>{f2[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),f2[`${e}/${t}`]=!0)},Rc=new Error;function h2(e,t,{key:n}){let r=0;const a=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+r]=a[s],i[s+r]=!0,r+=o2(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function SB(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Io("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Rc;if(typeof e.beginScope!="object"||e.beginScope===null)throw Io("beginScope must be object"),Rc;h2(e,e.begin,{key:"beginScope"}),e.begin=Vf(e.begin,{joinWith:""})}}function EB(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Io("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Rc;if(typeof e.endScope!="object"||e.endScope===null)throw Io("endScope must be object"),Rc;h2(e,e.end,{key:"endScope"}),e.end=Vf(e.end,{joinWith:""})}}function CB(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function AB(e){CB(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),SB(e),EB(e)}function TB(e){function t(o,s){return new RegExp(Bl(o),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,l){l.position=this.position++,this.matchIndexes[this.matchAt]=l,this.regexes.push([l,s]),this.matchAt+=o2(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(l=>l[1]);this.matcherRe=t(Vf(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const l=this.matcherRe.exec(s);if(!l)return null;const u=l.findIndex((d,f)=>f>0&&d!==void 0),c=this.matchIndexes[u];return l.splice(0,u),Object.assign(l,c)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const l=new n;return this.rules.slice(s).forEach(([u,c])=>l.addRule(u,c)),l.compile(),this.multiRegexes[s]=l,l}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,l){this.rules.push([s,l]),l.type==="begin"&&this.count++}exec(s){const l=this.getMatcher(this.regexIndex);l.lastIndex=this.lastIndex;let u=l.exec(s);if(this.resumingScanAtSamePosition()&&!(u&&u.index===this.lastIndex)){const c=this.getMatcher(0);c.lastIndex=this.lastIndex+1,u=c.exec(s)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}function a(o){const s=new r;return o.contains.forEach(l=>s.addRule(l.begin,{rule:l,type:"begin"})),o.terminatorEnd&&s.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&s.addRule(o.illegal,{type:"illegal"}),s}function i(o,s){const l=o;if(o.isCompiled)return l;[hB,gB,AB,_B].forEach(c=>c(o,s)),e.compilerExtensions.forEach(c=>c(o,s)),o.__beforeBegin=null,[mB,vB,bB].forEach(c=>c(o,s)),o.isCompiled=!0;let u=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),u=o.keywords.$pattern,delete o.keywords.$pattern),u=u||/\w+/,o.keywords&&(o.keywords=d2(o.keywords,e.case_insensitive)),l.keywordPatternRe=t(u,!0),s&&(o.begin||(o.begin=/\B|\b/),l.beginRe=t(l.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(l.endRe=t(l.end)),l.terminatorEnd=Bl(l.end)||"",o.endsWithParent&&s.terminatorEnd&&(l.terminatorEnd+=(o.end?"|":"")+s.terminatorEnd)),o.illegal&&(l.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(c){return DB(c==="self"?o:c)})),o.contains.forEach(function(c){i(c,l)}),o.starts&&i(o.starts,s),l.matcher=a(l),l}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ji(e.classNameAliases||{}),i(e)}function m2(e){return e?e.endsWithParent||m2(e.starts):!1}function DB(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return ji(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:m2(e)?ji(e,{starts:e.starts?ji(e.starts):null}):Object.isFrozen(e)?ji(e):e}var MB="11.11.1";class OB extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const Yf=n2,v2=ji,g2=Symbol("nomatch"),IB=7,b2=function(e){const t=Object.create(null),n=Object.create(null),r=[];let a=!0;const i="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:KP};function l(U){return s.noHighlightRe.test(U)}function u(U){let Y=U.className+" ";Y+=U.parentNode?U.parentNode.className:"";const J=s.languageDetectRe.exec(Y);if(J){const H=S(J[1]);return H||(p2(i.replace("{}",J[1])),p2("Falling back to no-highlight mode for this block.",U)),H?J[1]:"no-highlight"}return Y.split(/\s+/).find(H=>l(H)||S(H))}function c(U,Y,J){let H="",G="";typeof Y=="object"?(H=U,J=Y.ignoreIllegals,G=Y.language):(hs("10.7.0","highlight(lang, code, ...args) has been deprecated."),hs("10.7.0",`Please use highlight(code, options) instead.
55
+ `)},{kind:"warn",text:t("conn.guide.mount.win.freeLetter")},{kind:"note",text:t("conn.guide.mount.win.stop")}]},{id:"macos",name:"macOS",platform:"macos",blocks:[{kind:"warn",text:t("conn.guide.mount.mac.unsupported")},{kind:"note",text:t("conn.guide.mount.mac.alternatives")}]}],o=[{kind:"note",text:t("conn.guide.mount.note.notASync")},{kind:"note",text:t("conn.guide.mount.note.reachable")},{kind:"note",text:t("conn.guide.mount.note.wholeFileWrites")},{kind:"note",text:t("conn.guide.mount.note.trash")},{kind:"note",text:t("conn.guide.mount.note.revoke")}];return{id:"mount",name:"filex mount",summary:t("conn.guide.mount.summary"),facts:a,clients:i,notes:o}}},Yz={webdav:"WebDAV",s3:"S3",sftp:"SFTP",ftps:"FTPS",nfs:"NFS",mount:"filex mount"};function Zz(e){return Yz[e]||e.toUpperCase()}function Xz(){return Object.keys(Yb)}function Jz(e,t,n){const r=Yb[e];return r?r(t,n):null}const Qz={class:"fe-cfield"},eN={key:0,class:"fe-cfield__empty"},tN={key:0,class:"fe-cfield__check"},nN=["checked","disabled","onChange"],rN=["for"],aN={key:0,class:"fe-cfield__req","aria-hidden":"true"},iN=["id","value","disabled","onChange"],oN=["value"],sN=["id","value","placeholder","disabled","onInput"],lN={key:4,class:"fe-cfield__secret"},uN=["id","type","value","placeholder","disabled","onInput"],cN=["title","aria-label","onClick"],dN=["id","type","value","placeholder","min","max","disabled","onInput"],fN={key:6,class:"fe-cfield__help"},pN={key:7,class:"fe-cfield__error"},hN={key:1,class:"fe-cfield__adv"},mN={key:0,class:"fe-cfield__advbody"},vN={key:0,class:"fe-cfield__check"},gN=["checked","disabled","onChange"],bN=["for"],_N=["id","type","value","placeholder","disabled","onInput"],yN={key:2,class:"fe-cfield__help"},xN=Mt({__name:"StorageFields",props:{fields:{},modelValue:{},locale:{},invalid:{},disabled:{type:Boolean}},emits:["update:modelValue"],setup(e,{emit:t}){const n=e,r=t,{t:a}=an(()=>n.locale),i=X(!1),o=X({}),s=$e(()=>n.fields.filter(m=>!m.advanced)),l=$e(()=>n.fields.filter(m=>m.advanced));function u(m){const k=a(m.i18n_key);return k===m.i18n_key?m.label:k}function c(m){if(!m.help_i18n_key)return m.help??"";const k=a(m.help_i18n_key);return k===m.help_i18n_key?m.help??"":k}function d(m){if(!m.i18n_key)return m.label;const k=a(m.i18n_key);return k===m.i18n_key?m.label:k}function f(m,k){r("update:modelValue",{...n.modelValue,[m]:k})}function p(m){var E,A;const k=(E=n.modelValue)==null?void 0:E[m.key];if(k!=null)return k;for(const S of m.aliases??[]){const x=(A=n.modelValue)==null?void 0:A[S];if(x!=null)return x}return m.default??void 0}function _(m){const k=p(m);return k==null?"":String(k)}function g(m){const k=p(m);return k===""||k===void 0||k===null?"":String(k)}function y(m){return p(m)===!0}function h(m){return(n.invalid??[]).includes(m.key)}function b(m){return m.type==="int"?"number":m.type==="password"&&!o.value[m.key]?"password":"text"}function v(m){o.value={...o.value,[m]:!o.value[m]}}return(m,k)=>(O(),N("div",Qz,[e.fields.length?_e("",!0):(O(),N("p",eN,L(I(a)("conn.form.noFields")),1)),(O(!0),N(qe,null,pt(s.value,E=>(O(),N("div",{key:E.key,class:dt(["fe-cfield__row",{"is-invalid":h(E)}])},[E.type==="bool"?(O(),N("label",tN,[w("input",{type:"checkbox",checked:y(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.checked)},null,40,nN),w("span",null,L(u(E)),1)])):(O(),N("label",{key:1,class:"fe-cfield__label",for:`fe-cf-${E.key}`},[$t(L(u(E)),1),E.required?(O(),N("span",aN,"*")):_e("",!0)],8,rN)),E.type==="select"?(O(),N("select",{key:2,id:`fe-cf-${E.key}`,class:"fe-cfield__input",value:_(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.value)},[(O(!0),N(qe,null,pt(E.options??[],A=>(O(),N("option",{key:A.value,value:A.value},L(d(A)),9,oN))),128))],40,iN)):E.multiline?(O(),N("textarea",{key:3,id:`fe-cf-${E.key}`,class:dt(["fe-cfield__input fe-cfield__input--area",{"fe-cfield__input--mono":E.monospace}]),rows:"4",value:_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,A.target.value)},null,42,sN)):E.type==="password"?(O(),N("div",lN,[w("input",{id:`fe-cf-${E.key}`,class:"fe-cfield__input fe-cfield__input--mono",type:b(E),autocomplete:"new-password",spellcheck:"false",value:_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,A.target.value)},null,40,uN),w("button",{type:"button",class:"fe-cfield__eye",title:o.value[E.key]?I(a)("conn.form.hide"):I(a)("conn.form.reveal"),"aria-label":o.value[E.key]?I(a)("conn.form.hide"):I(a)("conn.form.reveal"),onClick:A=>v(E.key)},L(o.value[E.key]?"🙈":"👁"),9,cN)])):E.type!=="bool"?(O(),N("input",{key:5,id:`fe-cf-${E.key}`,class:dt(["fe-cfield__input",{"fe-cfield__input--mono":E.monospace}]),type:b(E),value:E.type==="int"?g(E):_(E),placeholder:E.placeholder,min:E.min,max:E.max,disabled:e.disabled,onInput:A=>f(E.key,E.type==="int"?A.target.value===""?null:Number(A.target.value):A.target.value)},null,42,dN)):_e("",!0),c(E)?(O(),N("p",fN,L(c(E)),1)):_e("",!0),h(E)?(O(),N("p",pN,L(I(a)("conn.form.required")),1)):_e("",!0)],2))),128)),l.value.length?(O(),N("div",hN,[w("button",{type:"button",class:"fe-cfield__advtoggle",onClick:k[0]||(k[0]=E=>i.value=!i.value)},L(i.value?"▾":"▸")+" "+L(I(a)("conn.form.advanced")),1),i.value?(O(),N("div",mN,[(O(!0),N(qe,null,pt(l.value,E=>(O(),N("div",{key:E.key,class:"fe-cfield__row"},[E.type==="bool"?(O(),N("label",vN,[w("input",{type:"checkbox",checked:y(E),disabled:e.disabled,onChange:A=>f(E.key,A.target.checked)},null,40,gN),w("span",null,L(u(E)),1)])):(O(),N(qe,{key:1},[w("label",{class:"fe-cfield__label",for:`fe-cfa-${E.key}`},L(u(E)),9,bN),w("input",{id:`fe-cfa-${E.key}`,class:dt(["fe-cfield__input",{"fe-cfield__input--mono":E.monospace}]),type:b(E),value:E.type==="int"?g(E):_(E),placeholder:E.placeholder,disabled:e.disabled,onInput:A=>f(E.key,E.type==="int"?A.target.value===""?null:Number(A.target.value):A.target.value)},null,42,_N)],64)),c(E)?(O(),N("p",yN,L(c(E)),1)):_e("",!0)]))),128))])):_e("",!0)])):_e("",!0)]))}}),kN={class:"fe-guide"},wN={class:"fe-guide__summary"},SN={class:"fe-guide__facts","data-testid":"guide-facts"},EN={class:"fe-guide__factlabel"},CN={class:"fe-guide__factvalue"},AN=["data-testid","onClick"],TN={key:0,class:"fe-guide__facthint"},DN={class:"fe-guide__tabs",role:"tablist"},MN=["aria-selected","data-testid","onClick"],ON={key:0,class:"fe-guide__body",role:"tabpanel"},IN={key:0,class:"fe-guide__steps"},RN={key:1,class:"fe-guide__codewrap"},zN={class:"fe-guide__codehead"},NN={class:"fe-guide__caption"},FN=["data-testid","onClick"],LN={class:"fe-guide__code"},PN={key:2,class:"fe-guide__warn"},BN={key:3,class:"fe-guide__note"},$N={key:4,class:"fe-guide__text"},UN={key:1,class:"fe-guide__notes"},HN={class:"fe-guide__notestitle"},GN=Mt({__name:"ConnectionGuideView",props:{guide:{},locale:{}},setup(e){var c;const t=e,{t:n}=an(()=>t.locale),r=X(((c=t.guide.clients[0])==null?void 0:c.id)??""),a=X(null);let i=null;const o=$e(()=>t.guide.clients.find(d=>d.id===r.value)??t.guide.clients[0]);async function s(d,f){let p=!1;try{await navigator.clipboard.writeText(d),p=!0}catch{try{const _=document.createElement("textarea");_.value=d,_.setAttribute("readonly",""),_.style.position="fixed",_.style.opacity="0",document.body.appendChild(_),_.select(),p=document.execCommand("copy"),document.body.removeChild(_)}catch{p=!1}}a.value=p?f:null,i&&clearTimeout(i),i=setTimeout(()=>{a.value=null},1600)}function l(d,f){return`${d}-${f}`}function u(d){return d.kind==="code"}return(d,f)=>(O(),N("div",kN,[w("p",wN,L(e.guide.summary),1),w("section",SN,[(O(!0),N(qe,null,pt(e.guide.facts,(p,_)=>(O(),N("div",{key:p.label,class:"fe-guide__fact"},[w("span",EN,L(p.label),1),w("span",CN,[w("code",{class:dt({"fe-guide__ph":p.placeholderOnly})},L(p.value),3),p.placeholderOnly?_e("",!0):(O(),N("button",{key:0,type:"button",class:"fe-guide__copy","data-testid":`copy-fact-${_}`,onClick:g=>s(p.value,l("fact",_))},L(a.value===l("fact",_)?I(n)("conn.guide.copied"):I(n)("conn.guide.copy")),9,AN))]),p.hint?(O(),N("span",TN,L(p.hint),1)):_e("",!0)]))),128))]),w("nav",DN,[(O(!0),N(qe,null,pt(e.guide.clients,p=>(O(),N("button",{key:p.id,type:"button",role:"tab",class:dt(["fe-guide__tab",{"is-active":o.value&&p.id===o.value.id}]),"aria-selected":o.value&&p.id===o.value.id,"data-testid":`guide-tab-${p.id}`,onClick:_=>r.value=p.id},L(p.name),11,MN))),128))]),o.value?(O(),N("div",ON,[(O(!0),N(qe,null,pt(o.value.blocks,(p,_)=>(O(),N(qe,{key:_},[p.kind==="steps"?(O(),N("ol",IN,[(O(!0),N(qe,null,pt(p.steps??[],(g,y)=>(O(),N("li",{key:y},L(g),1))),128))])):u(p)?(O(),N("div",RN,[w("div",zN,[w("span",NN,L(p.caption),1),w("button",{type:"button",class:"fe-guide__copy","data-testid":`copy-code-${_}`,onClick:g=>s(p.code??"",l(o.value.id,_))},L(a.value===l(o.value.id,_)?I(n)("conn.guide.copied"):I(n)("conn.guide.copy")),9,FN)]),w("pre",LN,[w("code",null,L(p.code),1)])])):p.kind==="warn"?(O(),N("p",PN,L(p.text),1)):p.kind==="note"?(O(),N("p",BN,L(p.text),1)):(O(),N("p",$N,L(p.text),1))],64))),128))])):_e("",!0),e.guide.notes.length?(O(),N("section",UN,[w("h4",HN,L(I(n)("conn.guide.goodToKnow")),1),(O(!0),N(qe,null,pt(e.guide.notes,(p,_)=>(O(),N("p",{key:_,class:dt(p.kind==="warn"?"fe-guide__warn":"fe-guide__note")},L(p.text),3))),128))])):_e("",!0)]))}});function qN(e){const t=us(e),n=fs(e),r=v=>`${n}${v}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null),c=X(null);function d(v){const m=v;if(m!=null&&m.detail)try{const k=JSON.parse(m.detail);if(k!=null&&k.error)return k.error}catch{}return(m==null?void 0:m.message)||String(v)}function f(v){return v==null?void 0:v.status}async function p(){o.value=!0,l.value=null;try{const v=await t.jsonFetch(r("/api/auth/s3-keys"));a.value=Array.isArray(v==null?void 0:v.keys)?v.keys:[],i.value={endpoint:(v==null?void 0:v.endpoint)??"",enabled:(v==null?void 0:v.enabled)!==!1,path_style:(v==null?void 0:v.path_style)!==!1},u.value=!0}catch(v){a.value=[];const m=f(v);m===401||m===403?u.value=!1:(u.value=!1,l.value=d(v))}finally{o.value=!1,s.value=!0}}async function _(v){l.value=null;try{const m=await t.jsonFetch(r("/api/auth/s3-keys"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});return c.value=m,m!=null&&m.endpoint&&(i.value={endpoint:m.endpoint,enabled:m.enabled!==!1,path_style:m.path_style!==!1}),await p(),m}catch(m){return l.value=d(m),null}}async function g(v,m){l.value=null;try{await t.jsonFetch(r(`/api/auth/s3-keys/${v}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:m})}),await p()}catch(k){l.value=d(k)}}async function y(v){var m,k;l.value=null;try{await t.jsonFetch(r(`/api/auth/s3-keys/${v}`),{method:"DELETE"}),((k=(m=c.value)==null?void 0:m.key)==null?void 0:k.id)===v&&(c.value=null),await p()}catch(E){l.value=d(E)}}function h(){c.value=null}const b=$e(()=>{var m;if((m=c.value)!=null&&m.key)return c.value.key;const v=a.value.filter(k=>!k.disabled_at);return v.length?v.reduce((k,E)=>k.created_at>=E.created_at?k:E):null});return{keys:a,connection:i,loading:o,loaded:s,error:l,canMint:u,revealed:c,guideKey:b,load:p,create:_,setDisabled:g,remove:y,dismissSecret:h}}const KN={class:"fe-s3keys","data-testid":"s3-keys"},jN={class:"fe-s3keys__head"},VN={class:"fe-s3keys__title"},WN={class:"fe-s3keys__lead"},YN={key:0,class:"fe-s3keys__warn"},ZN={key:1,class:"fe-s3keys__muted"},XN={key:2,class:"fe-s3keys__warn"},JN={key:3,class:"fe-s3keys__form"},QN=["placeholder"],eF={value:""},tF=["value"],nF=["placeholder","disabled"],rF=["disabled"],aF={key:4,class:"fe-s3keys__hint"},iF={key:5,class:"fe-s3keys__secret","data-testid":"s3-key-secret"},oF={class:"fe-s3keys__once"},sF={class:"fe-s3keys__pair"},lF={class:"fe-s3keys__k"},uF={class:"fe-s3keys__pair"},cF={class:"fe-s3keys__k"},dF={key:6,class:"fe-s3keys__muted"},fF={key:7,class:"fe-s3keys__table"},pF={class:"fe-s3keys__actions"},hF=["disabled","onClick"],mF=["disabled","onClick"],vF={key:8,class:"fe-s3keys__muted"},gF=Mt({__name:"S3KeysPanel",props:{config:{},storages:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{keys:o,connection:s,loading:l,error:u,canMint:c,revealed:d,guideKey:f,load:p,create:_,setDisabled:g,remove:y,dismissSecret:h}=qN(n.config),b=X(""),v=X(""),m=X(""),k=X(!1),E=X(null),A=X(null);let S=null;function x(){var Y,J,H,G,R;const U=s.value;U&&r("active",{accessKeyID:((Y=f.value)==null?void 0:Y.access_key_id)??"",secret:((H=(J=d.value)==null?void 0:J.key)==null?void 0:H.id)===((G=f.value)==null?void 0:G.id)?(R=d.value)==null?void 0:R.secret:void 0,endpoint:U.endpoint,pathStyle:U.path_style})}jt(async()=>{await p(),x()});async function C(){k.value=!0;try{await _({label:b.value.trim()||i("conn.s3keys.defaultLabel"),bucket:v.value.trim()||void 0,prefix:m.value.trim()||void 0}),b.value="",x()}finally{k.value=!1}}async function T(U){k.value=!0;try{await g(U.id,!U.disabled_at),x()}finally{k.value=!1}}async function $(U){if(E.value!==U.id){E.value=U.id;return}E.value=null,k.value=!0;try{await y(U.id),x()}finally{k.value=!1}}async function P(U,Y){let J=!1;try{await navigator.clipboard.writeText(U),J=!0}catch{try{const H=document.createElement("textarea");H.value=U,H.setAttribute("readonly",""),H.style.position="fixed",H.style.opacity="0",document.body.appendChild(H),H.select(),J=document.execCommand("copy"),document.body.removeChild(H)}catch{J=!1}}J&&(A.value=Y,S&&clearTimeout(S),S=setTimeout(()=>A.value=null,1600))}function K(U){if(!U)return"";const Y=new Date(U);return Number.isNaN(Y.getTime())?"":Y.toLocaleDateString()}function Q(U){return U.bucket?U.prefix?`${U.bucket}/${U.prefix}`:U.bucket:i("conn.s3keys.scopeAll")}return(U,Y)=>(O(),N("section",KN,[w("header",jN,[w("h4",VN,L(I(i)("conn.s3keys.title")),1),w("p",WN,L(I(i)("conn.s3keys.lead")),1)]),I(s)&&!I(s).enabled?(O(),N("p",YN,L(I(i)("conn.s3keys.disabled")),1)):_e("",!0),I(c)===!1?(O(),N("p",ZN,L(I(i)("conn.s3keys.cannotMint")),1)):_e("",!0),I(u)?(O(),N("p",XN,L(I(u)),1)):_e("",!0),I(c)?(O(),N("div",JN,[Dt(w("input",{"onUpdate:modelValue":Y[0]||(Y[0]=J=>b.value=J),class:"fe-cfield__input",placeholder:I(i)("conn.s3keys.label"),"data-testid":"s3-key-label"},null,8,QN),[[pn,b.value]]),Dt(w("select",{"onUpdate:modelValue":Y[1]||(Y[1]=J=>v.value=J),class:"fe-cfield__input","data-testid":"s3-key-bucket"},[w("option",eF,L(I(i)("conn.s3keys.everyBucket")),1),(O(!0),N(qe,null,pt(e.storages,J=>(O(),N("option",{key:J,value:J},L(J),9,tF))),128))],512),[[mi,v.value]]),Dt(w("input",{"onUpdate:modelValue":Y[2]||(Y[2]=J=>m.value=J),class:"fe-cfield__input",placeholder:I(i)("conn.s3keys.prefix"),disabled:!v.value,"data-testid":"s3-key-prefix"},null,8,nF),[[pn,m.value]]),w("button",{class:"fe-s3keys__btn",disabled:k.value,"data-testid":"s3-key-mint",onClick:C},L(I(i)("conn.s3keys.mint")),9,rF)])):_e("",!0),I(c)?(O(),N("p",aF,L(I(i)("conn.s3keys.inheritNote")),1)):_e("",!0),I(d)?(O(),N("div",iF,[w("p",oF,L(I(i)("conn.s3keys.once")),1),w("div",sF,[w("span",lF,L(I(i)("conn.s3keys.accessKeyID")),1),w("code",null,L(I(d).key.access_key_id),1),w("button",{class:"fe-s3keys__copy",onClick:Y[3]||(Y[3]=J=>P(I(d).key.access_key_id,"akid"))},L(A.value==="akid"?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("div",uF,[w("span",cF,L(I(i)("conn.s3keys.secret")),1),w("code",null,L(I(d).secret),1),w("button",{class:"fe-s3keys__copy",onClick:Y[4]||(Y[4]=J=>P(I(d).secret,"secret"))},L(A.value==="secret"?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:Y[5]||(Y[5]=(...J)=>I(h)&&I(h)(...J))},L(I(i)("conn.s3keys.dismiss")),1)])):_e("",!0),I(l)?(O(),N("p",dF,"…")):I(o).length?(O(),N("table",fF,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.s3keys.col.label")),1),w("th",null,L(I(i)("conn.s3keys.col.key")),1),w("th",null,L(I(i)("conn.s3keys.col.scope")),1),w("th",null,L(I(i)("conn.s3keys.col.lastUsed")),1),Y[6]||(Y[6]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),J=>(O(),N("tr",{key:J.id,class:dt({"is-off":!!J.disabled_at})},[w("td",null,L(J.label||I(i)("conn.s3keys.noLabel")),1),w("td",null,[w("code",null,L(J.access_key_id),1)]),w("td",null,L(Q(J)),1),w("td",null,L(J.last_used_at?K(J.last_used_at):I(i)("conn.s3keys.neverUsed")),1),w("td",pF,[w("button",{class:"fe-s3keys__link",disabled:k.value,onClick:H=>T(J)},L(J.disabled_at?I(i)("conn.s3keys.enable"):I(i)("conn.s3keys.disable")),9,hF),w("button",{class:"fe-s3keys__link is-danger",disabled:k.value,onClick:H=>$(J)},L(E.value===J.id?I(i)("conn.s3keys.confirm"):I(i)("conn.s3keys.revoke")),9,mF)])],2))),128))])])):I(c)?(O(),N("p",vF,L(I(i)("conn.s3keys.empty")),1)):_e("",!0)]))}});function bF(e){const t=us(e),n=fs(e),r=h=>`${n}${h}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null);function c(h){const b=h;if(b!=null&&b.detail)try{const v=JSON.parse(b.detail);if(v!=null&&v.error)return v.error}catch{}return(b==null?void 0:b.message)||String(h)}function d(h){return h==null?void 0:h.status}async function f(){o.value=!0,l.value=null;try{const h=await t.jsonFetch(r("/api/auth/ssh-keys"));a.value=Array.isArray(h==null?void 0:h.keys)?h.keys:[],i.value={enabled:(h==null?void 0:h.enabled)!==!1,host:(h==null?void 0:h.host)??"",port:(h==null?void 0:h.port)??2022,login:(h==null?void 0:h.login)??"",ftps:h==null?void 0:h.ftps},u.value=!0}catch(h){a.value=[],u.value=!1,d(h)!==401&&d(h)!==403&&(l.value=c(h))}finally{o.value=!1,s.value=!0}}async function p(h,b){l.value=null;try{return await t.jsonFetch(r("/api/auth/ssh-keys"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:h,name:b})}),await f(),!0}catch(v){return l.value=c(v),!1}}async function _(h,b){l.value=null;try{await t.jsonFetch(r(`/api/auth/ssh-keys/${h}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:b})}),await f()}catch(v){l.value=c(v)}}async function g(h){l.value=null;try{await t.jsonFetch(r(`/api/auth/ssh-keys/${h}`),{method:"DELETE"}),await f()}catch(b){l.value=c(b)}}const y=$e(()=>a.value.some(h=>!h.disabled_at));return{keys:a,connection:i,loading:o,loaded:s,error:l,canAdd:u,hasUsableKey:y,load:f,add:p,setDisabled:_,remove:g}}const _F={key:0,class:"fe-s3keys","data-testid":"ssh-keys"},yF={class:"fe-s3keys__head"},xF={class:"fe-s3keys__title"},kF={class:"fe-s3keys__lead"},wF={key:0,class:"fe-s3keys__warn"},SF={key:1,class:"fe-s3keys__muted"},EF={key:2,class:"fe-s3keys__warn"},CF={key:3,class:"fe-sshkeys__form"},AF=["placeholder"],TF={class:"fe-sshkeys__row"},DF=["placeholder"],MF=["disabled"],OF={class:"fe-s3keys__hint"},IF={key:4,class:"fe-s3keys__muted"},RF={key:5,class:"fe-s3keys__table"},zF={class:"fe-s3keys__actions"},NF=["disabled","onClick"],FF=["disabled","onClick"],LF={key:6,class:"fe-s3keys__muted"},PF=Mt({__name:"SSHKeysPanel",props:{config:{},keysVisible:{type:Boolean}},emits:["active"],setup(e,{emit:t}){const n=e,r=$e(()=>n.keysVisible!==!1),a=t,i=$e(()=>n.config.locale??"tr"),{t:o}=an(i),{keys:s,connection:l,loading:u,error:c,canAdd:d,hasUsableKey:f,load:p,add:_,setDisabled:g,remove:y}=bF(n.config),h=X(""),b=X(""),v=X(!1),m=X(null);function k(){const T=l.value;T&&a("active",{host:T.host,port:T.port,login:T.login,enabled:T.enabled,hasKey:f.value,ftps:T.ftps})}jt(async()=>{await p(),k()});async function E(){if(h.value.trim()){v.value=!0;try{await _(h.value.trim(),b.value.trim()||void 0)&&(h.value="",b.value=""),k()}finally{v.value=!1}}}async function A(T){v.value=!0;try{await g(T.id,!T.disabled_at),k()}finally{v.value=!1}}async function S(T){if(m.value!==T.id){m.value=T.id;return}m.value=null,v.value=!0;try{await y(T.id),k()}finally{v.value=!1}}function x(T){if(!T)return"";const $=new Date(T);return Number.isNaN($.getTime())?"":$.toLocaleDateString()}function C(T){return"SHA256:"+T.fingerprint}return(T,$)=>r.value?(O(),N("section",_F,[w("header",yF,[w("h4",xF,L(I(o)("conn.sshkeys.title")),1),w("p",kF,L(I(o)("conn.sshkeys.lead")),1)]),I(l)&&!I(l).enabled?(O(),N("p",wF,L(I(o)("conn.sshkeys.disabled")),1)):_e("",!0),I(d)===!1?(O(),N("p",SF,L(I(o)("conn.sshkeys.cannotAdd")),1)):_e("",!0),I(c)?(O(),N("p",EF,L(I(c)),1)):_e("",!0),I(d)?(O(),N("div",CF,[Dt(w("textarea",{"onUpdate:modelValue":$[0]||($[0]=P=>h.value=P),class:"fe-cfield__input fe-sshkeys__paste",rows:"2",spellcheck:"false",placeholder:I(o)("conn.sshkeys.paste"),"data-testid":"ssh-key-input"},null,8,AF),[[pn,h.value]]),w("div",TF,[Dt(w("input",{"onUpdate:modelValue":$[1]||($[1]=P=>b.value=P),class:"fe-cfield__input",placeholder:I(o)("conn.sshkeys.name"),"data-testid":"ssh-key-name"},null,8,DF),[[pn,b.value]]),w("button",{class:"fe-s3keys__btn",disabled:v.value,"data-testid":"ssh-key-add",onClick:E},L(I(o)("conn.sshkeys.add")),9,MF)]),w("p",OF,L(I(o)("conn.sshkeys.noCopyId")),1)])):_e("",!0),I(u)?(O(),N("p",IF,"…")):I(s).length?(O(),N("table",RF,[w("thead",null,[w("tr",null,[w("th",null,L(I(o)("conn.sshkeys.col.name")),1),w("th",null,L(I(o)("conn.sshkeys.col.fingerprint")),1),w("th",null,L(I(o)("conn.sshkeys.col.lastUsed")),1),$[2]||($[2]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(s),P=>(O(),N("tr",{key:P.id,class:dt({"is-off":!!P.disabled_at})},[w("td",null,L(P.name||I(o)("conn.sshkeys.noName")),1),w("td",null,[w("code",null,L(C(P)),1)]),w("td",null,L(P.last_used_at?x(P.last_used_at):I(o)("conn.sshkeys.neverUsed")),1),w("td",zF,[w("button",{class:"fe-s3keys__link",disabled:v.value,onClick:K=>A(P)},L(P.disabled_at?I(o)("conn.sshkeys.enable"):I(o)("conn.sshkeys.disable")),9,NF),w("button",{class:"fe-s3keys__link is-danger",disabled:v.value,onClick:K=>S(P)},L(m.value===P.id?I(o)("conn.sshkeys.confirm"):I(o)("conn.sshkeys.remove")),9,FF)])],2))),128))])])):I(d)?(O(),N("p",LF,L(I(o)("conn.sshkeys.empty")),1)):_e("",!0)])):_e("",!0)}});function BF(e){const t=us(e),n=fs(e),r=v=>`${n}${v}`,a=Pi([]),i=X(null),o=X(!1),s=X(!1),l=X(null),u=X(null),c=X(null);function d(v){const m=v;if(m!=null&&m.detail)try{const k=JSON.parse(m.detail);if(k!=null&&k.error)return k.error}catch{}return(m==null?void 0:m.message)||String(v)}function f(v){return v==null?void 0:v.status}async function p(){o.value=!0,l.value=null;try{const v=await t.jsonFetch(r("/api/auth/nfs-exports"));a.value=Array.isArray(v==null?void 0:v.exports)?v.exports:[],i.value={enabled:(v==null?void 0:v.enabled)!==!1,host:(v==null?void 0:v.host)??"",port:(v==null?void 0:v.port)??2049},u.value=!0}catch(v){a.value=[],u.value=!1,f(v)!==401&&f(v)!==403&&(l.value=d(v))}finally{o.value=!1,s.value=!0}}async function _(v){l.value=null;try{const m=await t.jsonFetch(r("/api/auth/nfs-exports"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(v)});return c.value=m,m!=null&&m.host&&(i.value={enabled:m.enabled!==!1,host:m.host,port:m.port}),await p(),m}catch(m){return l.value=d(m),null}}async function g(v,m){l.value=null;try{await t.jsonFetch(r(`/api/auth/nfs-exports/${v}/state`),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({disabled:m})}),await p()}catch(k){l.value=d(k)}}async function y(v){var m,k;l.value=null;try{await t.jsonFetch(r(`/api/auth/nfs-exports/${v}`),{method:"DELETE"}),((k=(m=c.value)==null?void 0:m.export)==null?void 0:k.id)===v&&(c.value=null),await p()}catch(E){l.value=d(E)}}function h(){c.value=null}const b=$e(()=>{var m;if((m=c.value)!=null&&m.export)return c.value.export;const v=a.value.filter(k=>!k.disabled_at);return v.length?v.reduce((k,E)=>k.created_at>=E.created_at?k:E):null});return{exports:a,connection:i,loading:o,loaded:s,error:l,canMint:u,revealed:c,guideExport:b,load:p,create:_,setDisabled:g,remove:y,dismissPath:h}}const $F={class:"fe-s3keys","data-testid":"nfs-exports"},UF={class:"fe-s3keys__head"},HF={class:"fe-s3keys__title"},GF={class:"fe-s3keys__lead"},qF={class:"fe-s3keys__warn"},KF={key:0,class:"fe-s3keys__warn"},jF={key:1,class:"fe-s3keys__muted"},VF={key:2,class:"fe-s3keys__warn"},WF={key:3,class:"fe-s3keys__form fe-nfs__form"},YF=["placeholder"],ZF={value:""},XF=["value"],JF=["placeholder","disabled"],QF=["placeholder"],eL={class:"fe-nfs__ro"},tL=["disabled"],nL={key:4,class:"fe-s3keys__hint"},rL={key:5,class:"fe-s3keys__secret","data-testid":"nfs-path"},aL={class:"fe-s3keys__once"},iL={class:"fe-s3keys__pair"},oL={key:6,class:"fe-s3keys__muted"},sL={key:7,class:"fe-s3keys__table"},lL={class:"fe-s3keys__actions"},uL=["disabled","onClick"],cL=["disabled","onClick"],dL={key:8,class:"fe-s3keys__muted"},fL=Mt({__name:"NFSExportsPanel",props:{config:{},storages:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{exports:o,connection:s,loading:l,error:u,canMint:c,revealed:d,guideExport:f,load:p,create:_,setDisabled:g,remove:y,dismissPath:h}=BF(n.config),b=X(""),v=X(""),m=X(""),k=X(!0),E=X(""),A=X(!1),S=X(null),x=X(!1);let C=null;function T(){var G,R;const H=s.value;H&&r("active",{host:H.host,port:H.port,enabled:H.enabled,path:(G=d.value)==null?void 0:G.path,readOnly:((R=f.value)==null?void 0:R.read_only)??k.value})}jt(async()=>{await p(),T()});async function $(){A.value=!0;try{await _({label:b.value.trim()||i("conn.nfs.defaultLabel"),storage:v.value.trim()||void 0,prefix:m.value.trim()||void 0,read_only:k.value,allow_cidrs:E.value.trim()||void 0}),b.value="",T()}finally{A.value=!1}}async function P(H){A.value=!0;try{await g(H.id,!H.disabled_at),T()}finally{A.value=!1}}async function K(H){if(S.value!==H.id){S.value=H.id;return}S.value=null,A.value=!0;try{await y(H.id),T()}finally{A.value=!1}}const Q=$e(()=>{var V,W,ge;const H=s.value,G=(V=d.value)==null?void 0:V.path;if(!H||!G)return"";const R=(ge=(W=d.value)==null?void 0:W.export)!=null&&ge.read_only?",ro":"";return`sudo mount -t nfs -o nfsvers=3,tcp,port=${H.port},mountport=${H.port},nolock${R} ${H.host}:${G} /mnt/filex`});async function U(){const H=Q.value;if(!H)return;let G=!1;try{await navigator.clipboard.writeText(H),G=!0}catch{try{const R=document.createElement("textarea");R.value=H,R.setAttribute("readonly",""),R.style.position="fixed",R.style.opacity="0",document.body.appendChild(R),R.select(),G=document.execCommand("copy"),document.body.removeChild(R)}catch{G=!1}}G&&(x.value=!0,C&&clearTimeout(C),C=setTimeout(()=>x.value=!1,1600))}function Y(H){if(!H)return"";const G=new Date(H);return Number.isNaN(G.getTime())?"":G.toLocaleDateString()}function J(H){return H.storage_name?H.prefix?`${H.storage_name}/${H.prefix}`:H.storage_name:i("conn.nfs.scopeAll")}return(H,G)=>(O(),N("section",$F,[w("header",UF,[w("h4",HF,L(I(i)("conn.nfs.title")),1),w("p",GF,L(I(i)("conn.nfs.lead")),1)]),w("p",qF,L(I(i)("conn.nfs.pathIsSecret")),1),I(s)&&!I(s).enabled?(O(),N("p",KF,L(I(i)("conn.nfs.disabled")),1)):_e("",!0),I(c)===!1?(O(),N("p",jF,L(I(i)("conn.nfs.cannotMint")),1)):_e("",!0),I(u)?(O(),N("p",VF,L(I(u)),1)):_e("",!0),I(c)?(O(),N("div",WF,[Dt(w("input",{"onUpdate:modelValue":G[0]||(G[0]=R=>b.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.label"),"data-testid":"nfs-label"},null,8,YF),[[pn,b.value]]),Dt(w("select",{"onUpdate:modelValue":G[1]||(G[1]=R=>v.value=R),class:"fe-cfield__input","data-testid":"nfs-storage"},[w("option",ZF,L(I(i)("conn.nfs.everyStorage")),1),(O(!0),N(qe,null,pt(e.storages,R=>(O(),N("option",{key:R,value:R},L(R),9,XF))),128))],512),[[mi,v.value]]),Dt(w("input",{"onUpdate:modelValue":G[2]||(G[2]=R=>m.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.prefix"),disabled:!v.value,"data-testid":"nfs-prefix"},null,8,JF),[[pn,m.value]]),Dt(w("input",{"onUpdate:modelValue":G[3]||(G[3]=R=>E.value=R),class:"fe-cfield__input",placeholder:I(i)("conn.nfs.allowCidrs"),"data-testid":"nfs-cidrs"},null,8,QF),[[pn,E.value]]),w("label",eL,[Dt(w("input",{type:"checkbox","onUpdate:modelValue":G[4]||(G[4]=R=>k.value=R),"data-testid":"nfs-readonly"},null,512),[[hi,k.value]]),$t(" "+L(I(i)("conn.nfs.readOnly")),1)]),w("button",{class:"fe-s3keys__btn",disabled:A.value,"data-testid":"nfs-mint",onClick:$},L(I(i)("conn.nfs.mint")),9,tL)])):_e("",!0),I(c)?(O(),N("p",nL,L(I(i)("conn.nfs.readOnlyHint")),1)):_e("",!0),I(d)?(O(),N("div",rL,[w("p",aL,L(I(i)("conn.nfs.once")),1),w("div",iL,[w("code",null,L(Q.value),1),w("button",{class:"fe-s3keys__copy",onClick:U},L(x.value?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:G[5]||(G[5]=(...R)=>I(h)&&I(h)(...R))},L(I(i)("conn.nfs.dismiss")),1)])):_e("",!0),I(l)?(O(),N("p",oL,"…")):I(o).length?(O(),N("table",sL,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.nfs.col.label")),1),w("th",null,L(I(i)("conn.nfs.col.scope")),1),w("th",null,L(I(i)("conn.nfs.col.mode")),1),w("th",null,L(I(i)("conn.nfs.col.lastUsed")),1),G[6]||(G[6]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),R=>(O(),N("tr",{key:R.id,class:dt({"is-off":!!R.disabled_at})},[w("td",null,L(R.label||I(i)("conn.nfs.noLabel")),1),w("td",null,L(J(R)),1),w("td",null,L(R.read_only?I(i)("conn.nfs.modeRead"):I(i)("conn.nfs.modeWrite")),1),w("td",null,L(R.last_used_at?Y(R.last_used_at):I(i)("conn.nfs.neverUsed")),1),w("td",lL,[w("button",{class:"fe-s3keys__link",disabled:A.value,onClick:V=>P(R)},L(R.disabled_at?I(i)("conn.nfs.enable"):I(i)("conn.nfs.disable")),9,uL),w("button",{class:"fe-s3keys__link is-danger",disabled:A.value,onClick:V=>K(R)},L(S.value===R.id?I(i)("conn.nfs.confirm"):I(i)("conn.nfs.revoke")),9,cL)])],2))),128))])])):I(c)?(O(),N("p",dL,L(I(i)("conn.nfs.empty")),1)):_e("",!0)]))}});function pL(e){const t=us(e),n=fs(e),r=y=>`${n}${y}`,a=Pi([]),i=X(!1),o=X(!1),s=X(null),l=X(null),u=X(null);function c(y){const h=y;if(h!=null&&h.detail)try{const b=JSON.parse(h.detail);if(b!=null&&b.error)return b.error}catch{}return(h==null?void 0:h.message)||String(y)}function d(y){return y==null?void 0:y.status}async function f(){i.value=!0,s.value=null;try{const y=await t.jsonFetch(r("/api/tokens"));a.value=Array.isArray(y==null?void 0:y.tokens)?y.tokens:[],l.value=!0}catch(y){a.value=[];const h=d(y);l.value=!1,h!==401&&h!==403&&(s.value=c(y))}finally{i.value=!1,o.value=!0}}async function p(y){s.value=null;try{const h=await t.jsonFetch(r("/api/tokens"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});return u.value=h,await f(),h}catch(h){return s.value=c(h),null}}async function _(y){var h,b;s.value=null;try{await t.jsonFetch(r(`/api/tokens/${y}`),{method:"DELETE"}),((b=(h=u.value)==null?void 0:h.row)==null?void 0:b.id)===y&&(u.value=null),await f()}catch(v){s.value=c(v)}}function g(){u.value=null}return{tokens:a,loading:i,loaded:o,error:s,canMint:l,revealed:u,load:f,create:p,remove:_,dismiss:g}}const hL={class:"fe-s3keys","data-testid":"api-tokens"},mL={class:"fe-s3keys__head"},vL={class:"fe-s3keys__title"},gL={class:"fe-s3keys__lead"},bL={key:0,class:"fe-s3keys__muted"},_L={key:1,class:"fe-s3keys__warn"},yL={key:2,class:"fe-s3keys__form"},xL=["placeholder"],kL=["disabled"],wL={key:3,class:"fe-s3keys__secret","data-testid":"token-secret"},SL={class:"fe-s3keys__once"},EL={class:"fe-s3keys__pair"},CL={key:4,class:"fe-s3keys__muted"},AL={key:5,class:"fe-s3keys__table"},TL={class:"fe-s3keys__actions"},DL=["disabled","onClick"],ML={key:6,class:"fe-s3keys__muted"},OL={key:7,class:"fe-s3keys__hint"},IL=Mt({__name:"TokensPanel",props:{config:{},protocol:{}},emits:["active"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{tokens:o,loading:s,error:l,canMint:u,revealed:c,load:d,create:f,remove:p,dismiss:_}=pL(n.config),g=X(""),y=X(!1),h=X(!1),b=X(null);jt(async()=>{await d(),r("active",{hasToken:o.value.length>0})});function v(){const C=(n.protocol||"").toUpperCase();return C?`${C} — ${m()}`:m()}function m(){try{return new URL(n.config.apiBase||window.location.origin).host}catch{return"filex"}}async function k(){if(!y.value){y.value=!0,h.value=!1;try{await f({label:g.value.trim()||v(),scopes:"read,write,delete"}),await d(),r("active",{hasToken:o.value.length>0}),g.value=""}finally{y.value=!1}}}async function E(C){if(b.value!==C.id){b.value=C.id;return}b.value=null,y.value=!0;try{await p(C.id),r("active",{hasToken:o.value.length>0})}finally{y.value=!1}}async function A(){var C;if((C=c.value)!=null&&C.token)try{await navigator.clipboard.writeText(c.value.token),h.value=!0,window.setTimeout(()=>h.value=!1,1600)}catch{}}function S(C){if(!C)return"";const T=new Date(C);return Number.isNaN(T.getTime())?"":T.toLocaleDateString()}function x(C){return C.last_used_at?S(C.last_used_at):i("conn.tokens.neverUsed")}return(C,T)=>(O(),N("section",hL,[w("header",mL,[w("h4",vL,L(I(i)("conn.tokens.title")),1),w("p",gL,L(I(i)("conn.tokens.lead")),1)]),I(u)===!1?(O(),N("p",bL,L(I(i)("conn.tokens.cannotMint")),1)):_e("",!0),I(l)?(O(),N("p",_L,L(I(l)),1)):_e("",!0),I(u)?(O(),N("div",yL,[Dt(w("input",{"onUpdate:modelValue":T[0]||(T[0]=$=>g.value=$),class:"fe-cfield__input",placeholder:v(),"data-testid":"token-label"},null,8,xL),[[pn,g.value]]),w("button",{class:"fe-s3keys__btn",disabled:y.value,"data-testid":"token-mint",onClick:k},L(I(i)("conn.tokens.mint")),9,kL)])):_e("",!0),I(c)?(O(),N("div",wL,[w("p",SL,L(I(i)("conn.tokens.once")),1),w("div",EL,[w("code",null,L(I(c).token),1),w("button",{class:"fe-s3keys__copy",onClick:A},L(h.value?I(i)("conn.guide.copied"):I(i)("conn.guide.copy")),1)]),w("button",{class:"fe-s3keys__dismiss",onClick:T[1]||(T[1]=(...$)=>I(_)&&I(_)(...$))},L(I(i)("conn.tokens.dismiss")),1)])):_e("",!0),I(s)?(O(),N("p",CL,"…")):I(o).length?(O(),N("table",AL,[w("thead",null,[w("tr",null,[w("th",null,L(I(i)("conn.tokens.col.label")),1),w("th",null,L(I(i)("conn.tokens.col.scopes")),1),w("th",null,L(I(i)("conn.tokens.col.used")),1),T[2]||(T[2]=w("th",null,null,-1))])]),w("tbody",null,[(O(!0),N(qe,null,pt(I(o),$=>(O(),N("tr",{key:$.id},[w("td",null,L($.label||"—"),1),w("td",null,[w("code",null,L($.scopes),1)]),w("td",null,L(x($)),1),w("td",TL,[w("button",{class:"fe-s3keys__link is-danger",disabled:y.value,onClick:P=>E($)},L(b.value===$.id?I(i)("conn.tokens.confirm"):I(i)("conn.tokens.revoke")),9,DL)])]))),128))])])):I(u)?(O(),N("p",ML,L(I(i)("conn.tokens.empty")),1)):_e("",!0),I(u)?(O(),N("p",OL,L(I(i)("conn.tokens.revokeHint")),1)):_e("",!0)]))}}),RL={class:"fe-conn__head"},zL={class:"fe-conn__title"},NL={class:"fe-conn__sub"},FL=["aria-label"],LL={class:"fe-conn__tabs",role:"tablist"},PL=["aria-selected"],BL=["aria-selected"],$L={key:0,class:"fe-conn__body",role:"tabpanel"},UL={key:0,class:"fe-conn__muted"},HL={key:0,class:"fe-conn__card fe-conn__card--notice","data-testid":"no-admin"},GL={class:"fe-conn__muted"},qL={class:"fe-conn__muted"},KL={key:1,class:"fe-conn__list"},jL={class:"fe-conn__rowmain"},VL={class:"fe-conn__name"},WL={class:"fe-conn__muted"},YL={key:0,class:"fe-conn__error"},ZL={key:1,class:"fe-conn__card fe-conn__form","data-testid":"storage-form"},XL={class:"fe-conn__formtitle"},JL={class:"fe-cfield__row"},QL={class:"fe-cfield__label",for:"fe-conn-name"},eP=["placeholder"],tP={class:"fe-cfield__help"},nP={class:"fe-cfield__row"},rP={class:"fe-cfield__label",for:"fe-conn-driver"},aP=["value","disabled"],iP=["value"],oP={key:0,class:"fe-cfield__help"},sP={class:"fe-cfield__check"},lP={class:"fe-cfield__check"},uP={key:0,class:"fe-conn__error","data-testid":"form-error"},cP={class:"fe-conn__actions"},dP=["disabled"],fP=["disabled"],pP={key:2},hP={class:"fe-conn__listhead"},mP={class:"fe-conn__muted"},vP={key:0,class:"fe-conn__empty"},gP={class:"fe-conn__list","data-testid":"storage-list"},bP={class:"fe-conn__rowmain"},_P={class:"fe-conn__rowtext"},yP={class:"fe-conn__name"},xP={class:"fe-conn__badge"},kP={key:0,class:"fe-conn__badge fe-conn__badge--warn"},wP={key:1,class:"fe-conn__badge"},SP={key:2,class:"fe-conn__muted fe-conn__summary"},EP={class:"fe-conn__rowbtns"},CP=["data-testid","onClick"],AP=["onClick"],TP={key:1,class:"fe-conn__body",role:"tabpanel"},DP={class:"fe-conn__guidebar"},MP={key:0,class:"fe-conn__pick"},OP={class:"fe-cfield__label"},IP=["value"],RP={class:"fe-conn__pick"},zP={class:"fe-cfield__label"},NP={value:""},FP=["value"],LP=Mt({__name:"ConnectionsPanel",props:{config:{},initialTab:{},closable:{type:Boolean}},emits:["changed","close","error"],setup(e,{emit:t}){const n=e,r=t,a=$e(()=>n.config.locale??"tr"),{t:i}=an(a),{drivers:o,storages:s,visible:l,me:u,loading:c,loaded:d,error:f,canManage:p,denial:_,load:g,createStorage:y,updateStorage:h,deleteStorage:b,testStorage:v,descriptor:m,fields:k,defaults:E,missingRequired:A}=Wz(n.config),S=typeof window<"u"&&window.matchMedia?window.matchMedia("(prefers-color-scheme: dark)"):void 0,x=X(!!(S!=null&&S.matches));function C(Re){x.value=Re.matches}const T=$e(()=>{const Re=n.config.theme??"auto";return Re==="light"||Re==="dark"?Re:x.value?"dark":"light"}),$=X(n.initialTab??"storages"),P=X({kind:"none"}),K=X(""),Q=X(""),U=X(!1),Y=X(!0),J=X({}),H=X([]),G=X(!1),R=X(!1),V=X(null),W=X(null),ge=X(null),Se=X(null),ze=$e(()=>o.value.map(Re=>{const Fe=i(Re.i18n_key);return{value:Re.driver,label:Fe===Re.i18n_key?Re.label:Fe}})),Ue=$e(()=>k(Q.value));function me(){var Fe;const Re=((Fe=o.value[0])==null?void 0:Fe.driver)??"";Q.value=Re,K.value="",U.value=!1,Y.value=!0,J.value=E(Re),H.value=[],V.value=null,ge.value=null,P.value={kind:"new"}}function De(Re){Q.value=Re.driver,K.value=Re.name,U.value=!!Re.read_only,Y.value=Re.enabled!==!1,J.value={...Re.config??{}},H.value=[],V.value=null,ge.value=null,P.value={kind:"edit",row:Re}}function Ne(){P.value={kind:"none"},V.value=null,ge.value=null}function Ke(Re){Q.value=Re,J.value=E(Re),H.value=[],V.value=null}function ne(){const Re=A(Q.value,J.value).map(Fe=>Fe.key);return H.value=Re,K.value.trim()?Re.length?ge.value=i("conn.form.fillRequired"):ge.value=null:ge.value=i("conn.form.nameRequired"),!ge.value}async function oe(){R.value=!0,V.value=null;try{V.value=await v({driver:Q.value,config:J.value})}finally{R.value=!1}}async function ke(){if(ne()){G.value=!0,ge.value=null;try{const Re={name:K.value.trim(),driver:Q.value,config:J.value,read_only:U.value,enabled:Y.value};P.value.kind==="edit"?await h(P.value.row.id,Re):await y(Re),Ne(),r("changed")}catch(Re){const Fe=Re??{};let pe="";try{pe=Fe.detail?JSON.parse(Fe.detail).error??"":""}catch{pe=Fe.detail??""}ge.value=pe||Fe.message||String(Re),r("error",{message:ge.value})}finally{G.value=!1}}}async function Ee(Re){if(Se.value!==Re.id){Se.value=Re.id;return}Se.value=null;try{await b(Re.id),r("changed")}catch(Fe){r("error",{message:Fe.message})}}function be(Re){const Fe=m(Re.driver),pe=Re.config??{},Pe=[],je=Fe==null?void 0:Fe.fields.find(he=>he.root),tt=(he,ve=[])=>{for(const Le of[he,...ve]){const ce=pe[Le];if(typeof ce=="string"&&ce.trim())return ce}return""},gt=tt("endpoint")||tt("url")||tt("host");gt&&Pe.push(gt);const ee=tt("bucket");if(ee&&Pe.push(ee),je){const he=tt(je.key,je.aliases??[]);he&&Pe.push(he)}return Pe.join(" · ")}const ye=Xz(),ue=X(ye[0]??"webdav"),Ae=X(""),se=$e(()=>Vz(n.config)),le=X(null),Me=X(null),He=$e(()=>{var Re,Fe,pe,Pe,je,tt,gt,ee,he,ve,Le,ce,Te,q,Ve,bt,M,Be,Ge,Z,re,ie,We,Je,Ce,ct,Un;return Jz(ue.value,{origin:se.value,user:((Re=u.value)==null?void 0:Re.email)??"",storages:l.value,storage:Ae.value||void 0,s3Endpoint:(Fe=le.value)==null?void 0:Fe.endpoint,s3PathStyle:(pe=le.value)==null?void 0:pe.pathStyle,s3AccessKeyID:((Pe=le.value)==null?void 0:Pe.accessKeyID)||void 0,s3Secret:(je=le.value)==null?void 0:je.secret,sftpHost:((tt=Me.value)==null?void 0:tt.host)||void 0,sftpPort:(gt=Me.value)==null?void 0:gt.port,sftpEnabled:(ee=Me.value)==null?void 0:ee.enabled,sftpLogin:((he=Me.value)==null?void 0:he.login)||void 0,sftpHasKey:(ve=Me.value)==null?void 0:ve.hasKey,ftpsHost:((ce=(Le=Me.value)==null?void 0:Le.ftps)==null?void 0:ce.host)||void 0,ftpsPort:(q=(Te=Me.value)==null?void 0:Te.ftps)==null?void 0:q.port,ftpsEnabled:(bt=(Ve=Me.value)==null?void 0:Ve.ftps)==null?void 0:bt.enabled,ftpsPasvMin:(Be=(M=Me.value)==null?void 0:M.ftps)==null?void 0:Be.pasv_min,ftpsPasvMax:(Z=(Ge=Me.value)==null?void 0:Ge.ftps)==null?void 0:Z.pasv_max,ftpsSelfSigned:(ie=(re=Me.value)==null?void 0:re.ftps)==null?void 0:ie.self_signed,nfsHost:((We=W.value)==null?void 0:We.host)||void 0,nfsPort:(Je=W.value)==null?void 0:Je.port,nfsEnabled:(Ce=W.value)==null?void 0:Ce.enabled,nfsPath:(ct=W.value)==null?void 0:ct.path,nfsReadOnly:(Un=W.value)==null?void 0:Un.readOnly},i)});return Tt(()=>l.value,Re=>{!Ae.value&&Re.length===1&&(Ae.value=Re[0])}),jt(()=>{var Re;(Re=S==null?void 0:S.addEventListener)==null||Re.call(S,"change",C),g()}),tn(()=>{var Re;return(Re=S==null?void 0:S.removeEventListener)==null?void 0:Re.call(S,"change",C)}),Tt(()=>[n.config.apiBase,n.config.endpoint],()=>{Ne(),g()}),(Re,Fe)=>(O(),N("div",{class:dt(["fe-conn",{"fe--theme-dark":T.value==="dark","fe--theme-light":T.value==="light"}]),"data-testid":"connections-panel"},[w("header",RL,[w("div",null,[w("h2",zL,L(I(i)("conn.title")),1),w("p",NL,L(I(i)("conn.subtitle",{host:I(ps)(se.value)})),1)]),e.closable?(O(),N("button",{key:0,type:"button",class:"fe-conn__btn","data-testid":"connections-close","aria-label":I(i)("conn.close"),onClick:Fe[0]||(Fe[0]=pe=>r("close"))}," ✕ ",8,FL)):_e("",!0)]),w("nav",LL,[w("button",{type:"button",role:"tab",class:dt(["fe-conn__tab",{"is-active":$.value==="storages"}]),"aria-selected":$.value==="storages","data-testid":"tab-storages",onClick:Fe[1]||(Fe[1]=pe=>$.value="storages")},L(I(i)("conn.tab.storages")),11,PL),w("button",{type:"button",role:"tab",class:dt(["fe-conn__tab",{"is-active":$.value==="connect"}]),"aria-selected":$.value==="connect","data-testid":"tab-connect",onClick:Fe[2]||(Fe[2]=pe=>$.value="connect")},L(I(i)("conn.tab.connect")),11,BL)]),$.value==="storages"?(O(),N("section",$L,[I(c)&&!I(d)?(O(),N("p",UL,L(I(i)("conn.loading")),1)):(O(),N(qe,{key:1},[I(p)===!1?(O(),N("div",HL,[w("strong",null,L(I(i)("conn.denied.title")),1),w("p",GL,L(I(_)==="anonymous"?I(i)("conn.denied.anonymous"):I(_)==="unreachable"?I(i)("conn.denied.unreachable",{error:I(f)??""}):I(i)("conn.denied.none")),1),w("p",qL,L(I(i)("conn.denied.guideHint")),1),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary",onClick:Fe[3]||(Fe[3]=pe=>$.value="connect")},L(I(i)("conn.denied.guideCta")),1)])):_e("",!0),I(p)===!1&&I(l).length?(O(),N("div",KL,[(O(!0),N(qe,null,pt(I(l),pe=>(O(),N("div",{key:pe,class:"fe-conn__card"},[w("div",jL,[w("strong",VL,L(pe),1),w("span",WL,L(I(i)("conn.visibleOnly")),1)])]))),128))])):_e("",!0),I(p)?(O(),N(qe,{key:2},[I(f)?(O(),N("p",YL,L(I(f)),1)):_e("",!0),P.value.kind!=="none"?(O(),N("div",ZL,[w("h3",XL,L(P.value.kind==="edit"?I(i)("conn.form.editTitle",{name:K.value}):I(i)("conn.form.newTitle")),1),w("div",JL,[w("label",QL,[$t(L(I(i)("conn.form.name")),1),Fe[14]||(Fe[14]=w("span",{class:"fe-cfield__req"},"*",-1))]),Dt(w("input",{id:"fe-conn-name","onUpdate:modelValue":Fe[4]||(Fe[4]=pe=>K.value=pe),class:"fe-cfield__input","data-testid":"storage-name",placeholder:I(i)("conn.form.namePlaceholder")},null,8,eP),[[pn,K.value]]),w("p",tP,L(I(i)("conn.form.nameHelp")),1)]),w("div",nP,[w("label",rP,L(I(i)("conn.form.driver")),1),w("select",{id:"fe-conn-driver",class:"fe-cfield__input","data-testid":"storage-driver",value:Q.value,disabled:P.value.kind==="edit",onChange:Fe[5]||(Fe[5]=pe=>Ke(pe.target.value))},[(O(!0),N(qe,null,pt(ze.value,pe=>(O(),N("option",{key:pe.value,value:pe.value},L(pe.label),9,iP))),128))],40,aP),P.value.kind==="edit"?(O(),N("p",oP,L(I(i)("conn.form.driverLocked")),1)):_e("",!0)]),It(xN,{modelValue:J.value,"onUpdate:modelValue":Fe[6]||(Fe[6]=pe=>J.value=pe),fields:Ue.value,locale:a.value,invalid:H.value},null,8,["modelValue","fields","locale","invalid"]),w("label",sP,[Dt(w("input",{"onUpdate:modelValue":Fe[7]||(Fe[7]=pe=>U.value=pe),type:"checkbox","data-testid":"storage-readonly"},null,512),[[hi,U.value]]),w("span",null,L(I(i)("conn.form.readOnly")),1)]),w("label",lP,[Dt(w("input",{"onUpdate:modelValue":Fe[8]||(Fe[8]=pe=>Y.value=pe),type:"checkbox"},null,512),[[hi,Y.value]]),w("span",null,L(I(i)("conn.form.enabled")),1)]),ge.value?(O(),N("p",uP,L(ge.value),1)):_e("",!0),V.value?(O(),N("p",{key:1,class:dt(["fe-conn__testresult",V.value.ok?"is-ok":"is-bad"]),"data-testid":"test-result"},L(V.value.ok?I(i)("conn.form.testOk",{count:V.value.object_count??0}):I(i)("conn.form.testFail",{error:V.value.error??""})),3)):_e("",!0),w("div",cP,[w("button",{type:"button",class:"fe-conn__btn","data-testid":"storage-test",disabled:R.value,onClick:oe},L(R.value?I(i)("conn.form.testing"):I(i)("conn.form.test")),9,dP),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary","data-testid":"storage-save",disabled:G.value,onClick:ke},L(G.value?I(i)("conn.form.saving"):I(i)("conn.form.save")),9,fP),w("button",{type:"button",class:"fe-conn__btn",onClick:Ne},L(I(i)("conn.form.cancel")),1)])])):(O(),N("div",pP,[w("div",hP,[w("span",mP,L(I(i)("conn.list.count",{n:I(s).length})),1),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--primary","data-testid":"storage-add",onClick:me}," + "+L(I(i)("conn.list.add")),1)]),I(s).length?_e("",!0):(O(),N("p",vP,L(I(i)("conn.list.empty")),1)),w("div",gP,[(O(!0),N(qe,null,pt(I(s),pe=>(O(),N("div",{key:pe.id,class:"fe-conn__card"},[w("div",bP,[w("div",_P,[w("strong",yP,L(pe.name),1),w("span",xP,L(pe.driver),1),pe.read_only?(O(),N("span",kP,L(I(i)("conn.list.readOnly")),1)):_e("",!0),pe.enabled===!1?(O(),N("span",wP,L(I(i)("conn.list.disabled")),1)):_e("",!0),be(pe)?(O(),N("div",SP,L(be(pe)),1)):_e("",!0)]),w("div",EP,[w("button",{type:"button",class:"fe-conn__btn","data-testid":`storage-edit-${pe.name}`,onClick:Pe=>De(pe)},L(I(i)("conn.list.edit")),9,CP),w("button",{type:"button",class:"fe-conn__btn fe-conn__btn--danger",onClick:Pe=>Ee(pe)},L(Se.value===pe.id?I(i)("conn.list.confirm"):I(i)("conn.list.remove")),9,AP)])])]))),128))])]))],64)):_e("",!0)],64))])):(O(),N("section",TP,[w("div",DP,[I(ye).length>1?(O(),N("label",MP,[w("span",OP,L(I(i)("conn.guide.protocol")),1),Dt(w("select",{"onUpdate:modelValue":Fe[9]||(Fe[9]=pe=>ue.value=pe),class:"fe-cfield__input","data-testid":"guide-protocol"},[(O(!0),N(qe,null,pt(I(ye),pe=>(O(),N("option",{key:pe,value:pe},L(I(Zz)(pe)),9,IP))),128))],512),[[mi,ue.value]])])):_e("",!0),w("label",RP,[w("span",zP,L(I(i)("conn.guide.storage")),1),Dt(w("select",{"onUpdate:modelValue":Fe[10]||(Fe[10]=pe=>Ae.value=pe),class:"fe-cfield__input","data-testid":"guide-storage"},[w("option",NP,L(I(i)("conn.guide.allStorages")),1),(O(!0),N(qe,null,pt(I(l),pe=>(O(),N("option",{key:pe,value:pe},L(pe),9,FP))),128))],512),[[mi,Ae.value]])])]),ue.value==="s3"?(O(),Kt(gF,{key:0,config:e.config,storages:I(l),onActive:Fe[11]||(Fe[11]=pe=>le.value=pe)},null,8,["config","storages"])):_e("",!0),ue.value==="sftp"||ue.value==="ftps"?(O(),Kt(PF,{key:1,config:e.config,"keys-visible":ue.value==="sftp",onActive:Fe[12]||(Fe[12]=pe=>Me.value=pe)},null,8,["config","keys-visible"])):_e("",!0),ue.value==="nfs"?(O(),Kt(fL,{key:2,config:e.config,storages:I(l),onActive:Fe[13]||(Fe[13]=pe=>W.value=pe)},null,8,["config","storages"])):_e("",!0),ue.value==="ftps"||ue.value==="webdav"||ue.value==="mount"?(O(),Kt(IL,{key:3,config:e.config,protocol:ue.value},null,8,["config","protocol"])):_e("",!0),He.value?(O(),Kt(GN,{key:4,guide:He.value,locale:a.value},null,8,["guide","locale"])):_e("",!0)]))],2))}}),PP='.fx-presence{display:inline-flex;align-items:center;gap:.5rem;max-width:100%}.fx-presence-avatars{display:inline-flex;align-items:center}.fx-presence-avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;margin-left:-.4rem;border-radius:9999px;border:2px solid var(--fx-presence-ring, #ffffff);color:#fff;font-size:.6rem;font-weight:600;line-height:1;-webkit-user-select:none;user-select:none}.fx-presence-avatar:first-child{margin-left:0}.fx-presence-avatar--photo{overflow:visible}.fx-presence-photo{width:100%;height:100%;border-radius:9999px;object-fit:cover;display:block}.fx-presence-dot{position:absolute;right:-1px;bottom:-1px;width:.5rem;height:.5rem;border-radius:9999px;background:#22c55e;border:1.5px solid var(--fx-presence-ring, #ffffff)}.fx-presence-more{margin-left:.15rem;font-size:.7rem;color:#71717a}.fx-presence--wide{flex:1 1 auto;min-width:0}.fx-presence-chips{display:flex;align-items:center;gap:.4rem;overflow-x:auto;min-width:0;padding-bottom:2px;scrollbar-width:thin}.fx-presence-chip{display:inline-flex;align-items:center;gap:.35rem;flex:0 0 auto;padding:.15rem .5rem .15rem .2rem;border-radius:9999px;background:#f4f4f5;font-size:.75rem;color:#3f3f46;white-space:nowrap}.fx-presence-chip .fx-presence-avatar{margin-left:0}.fx-presence-chip-name{font-weight:500}.fx-presence-chip-file{color:#71717a;max-width:12rem;overflow:hidden;text-overflow:ellipsis}.fx-presence-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;border:none;border-radius:9999px;background:transparent;color:#71717a;font-size:.9rem;line-height:1;cursor:pointer}.fx-presence-toggle:hover{background:#e4e4e7;color:#3f3f46}.dark .fx-presence-chip,.dark .fx-presence-toggle:hover{background:#27272a;color:#d4d4d8}.fx-presence-text{font-size:.75rem;color:#71717a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:14rem}.fx-presence-file{color:#52525b;font-weight:500}.dark .fx-presence-avatar,.dark .fx-presence-dot{--fx-presence-ring: #18181b}.filex-tag-picker{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.filex-tag-picker.is-loading{opacity:.6;pointer-events:none}.filex-tag{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;color:#fff;background:var(--filex-tag-color)}.filex-tag-x{background:transparent;border:none;color:#ffffffd9;cursor:pointer;padding:0 2px;font-size:14px;line-height:1}.filex-tag-x:hover{color:#fff}.filex-tag-add input{border:1px solid var(--filex-border, #d1d5db);border-radius:12px;padding:2px 10px;font-size:12px;width:110px}.filex-tag-add-btn{border:1px dashed var(--filex-border, #d1d5db);background:transparent;border-radius:999px;padding:2px 10px;font-size:12px;color:var(--filex-text-muted, #6b7280);cursor:pointer}.filex-tag-add-btn:hover{border-color:var(--filex-accent, #6366f1);color:var(--filex-accent, #6366f1)}.filex-recent{background:var(--fe-bg-elev, var(--filex-bg-card, #ffffff));border:1px solid var(--fe-border, var(--filex-border, #e5e7eb));border-radius:8px;padding:12px;font-size:13px}.filex-recent header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.filex-recent h3{margin:0;font-size:13px;font-weight:600;color:var(--fe-text, var(--filex-text, #111827))}.filex-recent-refresh{background:transparent;border:none;color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));cursor:pointer;font-size:14px;padding:2px 6px}.filex-recent ul{list-style:none;margin:0;padding:0}.filex-recent-item{display:flex;justify-content:space-between;align-items:center;width:100%;background:transparent;border:none;padding:6px 8px;cursor:pointer;border-radius:4px;text-align:left}.filex-recent-item:hover{background:var(--fe-bg-hover, var(--filex-bg-soft, #f3f4f6))}.filex-recent-name{color:var(--fe-text, var(--filex-text, #111827));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filex-recent-meta{color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));font-size:11px;margin-left:8px;flex-shrink:0}.filex-recent-empty{color:var(--fe-text-muted, var(--filex-text-muted, #9ca3af));margin:4px 0 0}.filex-star-btn{display:inline-flex;align-items:center;gap:6px;background:transparent;border:1px solid transparent;border-radius:6px;padding:4px 8px;color:var(--filex-text-muted, #9ca3af);cursor:pointer;transition:color .12s,background .12s}.filex-star-btn:hover{color:var(--filex-accent-amber, #f59e0b);background:var(--filex-bg-soft, rgba(0, 0, 0, .04))}.filex-star-btn.is-starred{color:var(--filex-accent-amber, #f59e0b)}.filex-star-btn.is-compact{padding:4px}.filex-star-label{font-size:13px}.fe-themes__hint{margin:0 0 12px;font-size:12.5px;color:var(--fe-text-muted)}.fe-themes{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.fe-themecard{display:flex;flex-direction:column;padding:0;border:2px solid var(--fe-border-strong);border-radius:var(--fe-radius, 8px);background:var(--fe-bg);cursor:pointer;overflow:hidden;text-align:left;transition:transform .12s ease,box-shadow .12s ease;font:inherit}.fe-themecard:hover{transform:translateY(-2px);box-shadow:var(--fe-shadow-sm, 0 2px 6px rgba(15, 23, 42, .08))}.fe-themecard:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-themecard.is-selected{border-color:var(--fe-primary);box-shadow:0 0 0 2px var(--fe-primary)}.fe-themecard__preview{display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--fe-bg);border-bottom:1px solid var(--fe-border);min-height:84px}.fe-themecard__topbar{display:flex;gap:4px;margin-bottom:2px}.fe-themecard__chip{height:8px;width:22px;border-radius:4px;background:var(--fe-bg-hover);border:1px solid var(--fe-border)}.fe-themecard__chip--primary{background:var(--fe-primary);border-color:var(--fe-primary)}.fe-themecard__chip--ghost{background:var(--fe-bg-elev)}.fe-themecard__row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-radius:4px}.fe-themecard__row--selected{background:var(--fe-bg-selected)}.fe-themecard__dot{width:8px;height:8px;border-radius:50%;background:var(--fe-text);opacity:.75;flex:none}.fe-themecard__dot--primary{background:var(--fe-primary);opacity:1}.fe-themecard__dot--muted{background:var(--fe-text-muted)}.fe-themecard__line{height:6px;border-radius:3px;background:var(--fe-text);opacity:.55}.fe-themecard__line--muted{background:var(--fe-text-muted)}.fe-themecard__name{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;font-size:12.5px;font-weight:600;color:var(--fe-text);background:var(--fe-bg-elev);font-family:var(--fe-font, inherit)}.fe-themecard__check{flex:none;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:11px;line-height:1}.fe-preview__code-editor.is-hidden{display:none}.fe-preview__viewer{width:100%;height:100%;min-height:70vh;display:flex;flex-direction:column}.fe-preview .fe-preview__viewer{align-self:stretch}.fe-preview__md-mermaid{display:flex;justify-content:center;margin:16px 0}.fe-preview__md-mermaid svg{max-width:100%;height:auto}.fe-preview__md-math{margin:16px 0;text-align:center;overflow-x:auto}.filex-cv__bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0000008c;display:flex;align-items:center;justify-content:center}.filex-cv{width:min(560px,92vw);max-height:80vh;overflow:hidden;display:flex;flex-direction:column;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1f29);border:1px solid var(--fe-border, #e2e6ed);border-radius:12px;box-shadow:0 20px 60px #00000059}.filex-cv__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fe-border, #e2e6ed)}.filex-cv__head h3{margin:0;font-size:14px;font-weight:600}.filex-cv__x{border:0;background:none;cursor:pointer;font-size:16px;color:var(--fe-text-muted, #5a6475)}.filex-cv__msg{padding:28px;text-align:center;color:var(--fe-text-muted, #5a6475)}.filex-cv__ok{color:#059669}.filex-cv__src{padding:12px 16px 0;font-size:13px;color:var(--fe-text-muted, #5a6475)}.filex-cv__search{margin:8px 16px;padding:8px 10px;border:1px solid var(--fe-border, #e2e6ed);border-radius:8px;background:var(--fe-bg-elev, #f7f8fa);color:inherit;font-size:13px}.filex-cv__list{flex:1;overflow-y:auto;padding:4px 12px 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.filex-cv__fmt{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:8px 10px;cursor:pointer;text-align:left;border:1px solid var(--fe-border, #e2e6ed);border-radius:8px;background:var(--fe-bg-elev, #f7f8fa);color:inherit}.filex-cv__fmt small{color:var(--fe-text-muted, #5a6475);font-size:11px}.filex-cv__fmt.is-sel{border-color:#44c878;background:#44c8781f}.filex-cv__empty{grid-column:1 / -1;text-align:center;color:var(--fe-text-muted, #5a6475);padding:16px}.filex-cv__err{padding:0 16px;color:var(--fe-danger, #dc2626);font-size:13px}.filex-cv__foot{padding:12px 16px;border-top:1px solid var(--fe-border, #e2e6ed);text-align:right}.filex-cv__convert{padding:8px 18px;border:0;border-radius:8px;cursor:pointer;background:#44c878;color:#03200f;font-weight:600;font-size:13px}.filex-cv__convert:disabled{opacity:.5;cursor:default}.filex-cv__frame{position:absolute;width:0;height:0;border:0;left:-9999px}.fx-perm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;font-family:var(--fe-font)}.fx-perm-modal{display:flex;flex-direction:column;background:var(--fe-bg);color:var(--fe-text);width:min(520px,94vw);max-height:86vh;border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg, 14px);box-shadow:var(--fe-shadow);font-size:14px;overflow:hidden}.fx-perm-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 18px 12px;flex:none}.fx-perm-title{display:flex;align-items:center;gap:10px;min-width:0}.fx-perm-ico{font-size:22px;line-height:1}.fx-perm-titletext{display:flex;flex-direction:column;min-width:0}.fx-perm-title h3{margin:0;font-size:15px;font-weight:600;color:var(--fe-text)}.fx-perm-sub{font-size:12px;color:var(--fe-text);max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-perm-subdim{color:var(--fe-text-muted)}.fx-perm-x{background:none;border:none;font-size:17px;cursor:pointer;color:var(--fe-text-muted);flex:none;line-height:1;padding:2px 4px;border-radius:6px}.fx-perm-x:hover{color:var(--fe-text);background:var(--fe-bg-hover)}.fx-perm-tabs{display:flex;gap:2px;padding:0 18px;border-bottom:1px solid var(--fe-border);flex:none}.fx-perm-tab{background:none;border:none;border-bottom:2px solid transparent;padding:8px 12px;cursor:pointer;color:var(--fe-text-muted);font-size:13px;font-family:inherit;font-weight:500}.fx-perm-tab:hover{color:var(--fe-text)}.fx-perm-tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary)}.fx-perm-body{flex:1 1 auto;overflow-y:auto;padding:14px 18px 18px}.fx-perm-addcard{padding:12px;border-radius:var(--fe-radius-md);background:var(--fe-bg-elev);border:1px solid var(--fe-border)}.fx-perm-section{margin-top:16px}.fx-perm-section h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted)}.fx-perm-empty{color:var(--fe-text-muted);font-size:13px;padding:8px 2px}.fx-perm-person{display:flex;align-items:center;gap:10px;padding:7px 2px}.fx-perm-person+.fx-perm-person{border-top:1px solid var(--fe-border)}.fx-perm-inh{color:var(--fe-text-muted)}.fx-perm-av{width:28px;height:28px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--fe-primary);color:var(--fe-text-on-primary, #fff);font-size:12px;font-weight:600}.fx-perm-av--dim{background:var(--fe-bg-hover);color:var(--fe-text-muted)}.fx-perm-user{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fe-text);min-width:0}.fx-perm-from{font-size:11px;color:var(--fe-text-muted);white-space:nowrap}.fx-perm-badge{font-size:11px;padding:2px 9px;border-radius:999px;background:var(--fe-bg-hover);color:var(--fe-text)}.fx-perm-sel,.fx-perm-input{padding:7px 9px;border-radius:var(--fe-radius-sm, 7px);border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);font-size:13px;font-family:inherit}.fx-perm-sel--sm{padding:5px 7px;font-size:12px}.fx-perm-sel:focus,.fx-perm-input:focus{outline:none;border-color:var(--fe-primary)}.fx-perm-add{display:flex;gap:8px;align-items:stretch}.fx-perm-emailwrap{position:relative;flex:1;min-width:120px}.fx-perm-input{width:100%;box-sizing:border-box}.fx-perm-suggest{position:absolute;top:calc(100% + 3px);left:0;right:0;z-index:5;margin:0;padding:4px;list-style:none;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm, 7px);box-shadow:var(--fe-shadow);max-height:210px;overflow:auto}.fx-perm-suggest li{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer}.fx-perm-suggest li:hover{background:var(--fe-bg-hover)}.fx-perm-suggest-av{width:24px;height:24px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--fe-bg-hover);color:var(--fe-text);font-size:11px;font-weight:600}.fx-perm-suggest-txt{display:flex;flex-direction:column;min-width:0}.fx-perm-suggest-name{color:var(--fe-text);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fx-perm-suggest-meta{color:var(--fe-text-muted);font-size:11px}.fx-perm-check{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--fe-text);cursor:pointer}.fx-perm-btn{padding:7px 13px;border-radius:var(--fe-radius-sm, 7px);border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);font-size:13px;font-family:inherit;cursor:pointer;white-space:nowrap}.fx-perm-btn:hover:not(:disabled){background:var(--fe-bg-hover)}.fx-perm-btn:disabled{opacity:.55;cursor:default}.fx-perm-btn--sm{padding:5px 10px;font-size:12px}.fx-perm-btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:var(--fe-text-on-primary, #fff)}.fx-perm-btn--primary:hover:not(:disabled){background:var(--fe-primary-hover, var(--fe-primary));filter:brightness(1.05)}.fx-perm-btn--ghost{background:none;border-color:transparent;color:var(--fe-primary);padding-left:2px}.fx-perm-btn--ghost:hover:not(:disabled){background:none;text-decoration:underline}.fx-perm-del{background:none;border:none;color:var(--fe-danger);cursor:pointer;font-size:14px;flex:none;padding:2px 4px}.fx-perm-del:hover:not(:disabled){filter:brightness(1.15)}.fx-perm-invite{margin-top:10px;padding-top:10px;border-top:1px dashed var(--fe-border)}.fx-perm-invite-actions{display:flex;flex-direction:column;gap:8px;margin-top:6px}.fx-perm-invite-row{display:flex;gap:8px;align-items:stretch}.fx-perm-invite-row .fx-perm-btn--primary{flex:1}.fx-perm-share-opts{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;align-items:end}.fx-perm-share-opts>.fx-perm-check{grid-column:1 / -1}.fx-perm-field{display:flex;flex-direction:column;gap:4px;font-size:13px;min-width:0}.fx-perm-field .fx-perm-sel{width:100%}.fx-perm-create{width:100%;margin-top:10px}@media (max-width: 380px){.fx-perm-share-opts{grid-template-columns:1fr}}.fx-perm-result{margin-top:12px;padding-top:12px;border-top:1px solid var(--fe-border)}.fx-perm-linkrow{display:flex;gap:8px;align-items:center}.fx-perm-link{color:var(--fe-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-decoration:none}.fx-perm-link:hover{text-decoration:underline}.fx-perm-pin{margin:8px 0 0;font-size:13px;color:var(--fe-text);display:flex;align-items:center;gap:8px}.fx-perm-pin code,.fx-perm-reveal code{font-family:var(--fe-font-mono, monospace);background:var(--fe-bg-hover);padding:1px 6px;border-radius:5px}.fx-perm-cli{margin-top:10px}.fx-perm-clilabel{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted);margin-bottom:4px}.fx-perm-clirow{display:flex;gap:8px;align-items:center}.fx-perm-clicmd{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--fe-font-mono, monospace);font-size:12px;background:var(--fe-bg-hover);color:var(--fe-text);padding:6px 8px;border-radius:var(--fe-radius-sm, 7px)}.fx-perm-mailrow{display:flex;gap:8px;margin-top:10px}.fx-perm-mailrow .fx-perm-input{flex:1}.fx-perm-hint{font-size:13px;color:var(--fe-text-muted);margin:10px 0 0}.fx-perm-sharebtn{display:flex;width:100%;align-items:center;justify-content:center;gap:6px;margin-top:8px}.fx-perm-dropintro{margin:0 0 12px;line-height:1.4}.fx-perm-advtoggle{margin-top:10px;padding-left:2px}.fx-perm-adv{margin-top:8px;padding-top:10px;border-top:1px dashed var(--fe-border);display:flex;flex-direction:column;gap:8px}.fx-perm-adv-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.fx-perm-input--sm{width:130px;padding:5px 8px;font-size:12px}.fx-perm-warn{background:#f59e0b24;border:1px solid rgba(245,158,11,.4);border-radius:var(--fe-radius-sm, 7px);padding:8px 10px;font-size:13px;margin-bottom:10px;color:var(--fe-text)}.fx-perm-notice{margin-top:8px;font-size:13px;color:var(--fe-text-muted)}.fx-perm-reveal{margin-top:8px;font-size:13px;word-break:break-all;color:var(--fe-text)}.fx-perm-muted{color:var(--fe-text-muted);font-size:13px}:root{--fe-bg: #ffffff;--fe-bg-elev: #f7f8fa;--fe-bg-hover: #edf0f5;--fe-bg-selected: #dfe8ff;--fe-border: #e2e6ed;--fe-border-strong: #c7ced9;--fe-text: #1a1e27;--fe-text-muted: #5a6475;--fe-text-on-primary: #ffffff;--fe-primary: #2f6fe0;--fe-primary-hover: #2563eb;--fe-danger: #dc2626;--fe-danger-hover: #b91c1c;--fe-shadow: 0 10px 32px rgba(15, 23, 42, .14);--fe-shadow-sm: 0 2px 6px rgba(15, 23, 42, .08);--fe-radius: 8px;--fe-radius-sm: 4px;--fe-radius-md: 10px;--fe-radius-lg: 12px;--fe-font: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fe-font-mono: ui-monospace, "SF Mono", Consolas, Menlo, monospace;--fe-gap: 12px}.fe--theme-dark,:root[data-theme=dark] .fe,.fe.fe--theme-dark,:root.dark,.dark,:root.dark .fe,.dark .fe,.fe-ctx-backdrop--theme-dark,.fe-ctx-backdrop--theme-auto[data-prefers-dark="1"]{--fe-bg: #0f1419;--fe-bg-elev: #161c25;--fe-bg-hover: #1f2733;--fe-bg-selected: #23324a;--fe-border: #2a323e;--fe-border-strong: #3a4453;--fe-text: #e5e9f0;--fe-text-muted: #8b95a7;--fe-primary: #60a5fa;--fe-primary-hover: #3b82f6;--fe-danger: #f87171;--fe-danger-hover: #ef4444;--fe-shadow: 0 12px 32px rgba(0, 0, 0, .45);--fe-shadow-sm: 0 2px 6px rgba(0, 0, 0, .25)}@media (prefers-color-scheme: dark){.fe:not(.fe--theme-light),.fe-ctx-backdrop--theme-auto:not(.fe-ctx-backdrop--theme-light){--fe-bg: #0f1419;--fe-bg-elev: #161c25;--fe-bg-hover: #1f2733;--fe-bg-selected: #23324a;--fe-border: #2a323e;--fe-border-strong: #3a4453;--fe-text: #e5e9f0;--fe-text-muted: #8b95a7;--fe-primary: #60a5fa;--fe-primary-hover: #3b82f6;--fe-danger: #f87171;--fe-danger-hover: #ef4444;--fe-shadow: 0 12px 32px rgba(0, 0, 0, .45);--fe-shadow-sm: 0 2px 6px rgba(0, 0, 0, .25)}}:root{--fe-icon-folder: #d97706;--fe-icon-image: #7c3aed;--fe-icon-video: #db2777;--fe-icon-audio: #0d9488;--fe-icon-pdf: #dc2626;--fe-icon-doc: #2563eb;--fe-icon-sheet: #16a34a;--fe-icon-slides: #ea580c;--fe-icon-archive: #78716c;--fe-icon-code: #4f46e5;--fe-icon-text: #64748b;--fe-icon-unknown: #64748b}.fe--theme-dark,:root[data-theme=dark] .fe,.fe.fe--theme-dark,:root.dark,.dark,:root.dark .fe,.dark .fe,.fe-ctx-backdrop--theme-dark,.fe-ctx-backdrop--theme-auto[data-prefers-dark="1"]{--fe-icon-folder: #fbbf24;--fe-icon-image: #a78bfa;--fe-icon-video: #f472b6;--fe-icon-audio: #2dd4bf;--fe-icon-pdf: #f87171;--fe-icon-doc: #60a5fa;--fe-icon-sheet: #4ade80;--fe-icon-slides: #fb923c;--fe-icon-archive: #a8a29e;--fe-icon-code: #818cf8;--fe-icon-text: #94a3b8;--fe-icon-unknown: #8b95a7}@media (prefers-color-scheme: dark){.fe:not(.fe--theme-light),.fe-ctx-backdrop--theme-auto:not(.fe-ctx-backdrop--theme-light){--fe-icon-folder: #fbbf24;--fe-icon-image: #a78bfa;--fe-icon-video: #f472b6;--fe-icon-audio: #2dd4bf;--fe-icon-pdf: #f87171;--fe-icon-doc: #60a5fa;--fe-icon-sheet: #4ade80;--fe-icon-slides: #fb923c;--fe-icon-archive: #a8a29e;--fe-icon-code: #818cf8;--fe-icon-text: #94a3b8;--fe-icon-unknown: #8b95a7}}:root,.fe--theme-dark,:root.dark,.dark{--fe-warning: #f59e0b;--fe-ok: #16a34a}.fe,.fe *,.fe-ctx-backdrop,.fe-ctx-backdrop *,.fe-tour,.fe-tour *{scrollbar-width:thin;scrollbar-color:var(--fe-border-strong) transparent}.fe ::-webkit-scrollbar,.fe-ctx-backdrop ::-webkit-scrollbar,.fe-tour ::-webkit-scrollbar{width:10px;height:10px}.fe ::-webkit-scrollbar-track,.fe-ctx-backdrop ::-webkit-scrollbar-track,.fe-tour ::-webkit-scrollbar-track{background:transparent}.fe ::-webkit-scrollbar-thumb,.fe-ctx-backdrop ::-webkit-scrollbar-thumb,.fe-tour ::-webkit-scrollbar-thumb{background:var(--fe-border-strong);border:2px solid transparent;background-clip:padding-box;border-radius:8px}.fe ::-webkit-scrollbar-thumb:hover,.fe-ctx-backdrop ::-webkit-scrollbar-thumb:hover,.fe-tour ::-webkit-scrollbar-thumb:hover{background:var(--fe-text-muted);background-clip:padding-box}.fe ::-webkit-scrollbar-corner,.fe-ctx-backdrop ::-webkit-scrollbar-corner,.fe-tour ::-webkit-scrollbar-corner{background:transparent}.fe{position:relative;display:flex;flex-direction:column;box-sizing:border-box;min-height:420px;height:100%;background:var(--fe-bg);color:var(--fe-text);font-family:var(--fe-font);font-size:14px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);overflow:hidden;outline:none}.fe *{box-sizing:border-box}.fe__body{flex:1 1 auto;overflow:auto;min-height:0;background:var(--fe-bg)}filex-explorer{display:block;height:100%;min-width:0;max-width:100%}.fe__presence{flex:0 0 auto;padding:.25rem .75rem;border-bottom:1px solid var(--fe-border, rgba(0, 0, 0, .06))}.fe__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:240px;height:100%;color:var(--fe-text-muted)}.fe__spinner{width:34px;height:34px;border-radius:50%;border:3px solid color-mix(in srgb,var(--fe-text-muted) 30%,transparent);border-top-color:var(--fe-primary);animation:fe-spin .7s linear infinite}.fe__loading-text{margin:0;font-size:13px}@keyframes fe-spin{to{transform:rotate(360deg)}}.fe__notfound{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:240px;height:100%;color:var(--fe-text-muted);text-align:center;padding:24px}.fe__notfound-icon{font-size:40px;filter:grayscale(1);opacity:.6}.fe__notfound-title{margin:4px 0 0;font-size:15px;font-weight:600;color:var(--fe-text)}.fe__notfound-path{margin:0;font-size:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;word-break:break-all;max-width:480px}.fe__notfound-desc{margin:0 0 10px;font-size:13px}.fe__file-input{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.fe-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);color:var(--fe-text);font:inherit;cursor:pointer;transition:background .12s,border-color .12s;white-space:nowrap}.fe-btn:hover:not(:disabled){background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-btn:disabled{opacity:.5;cursor:not-allowed}.fe-btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:var(--fe-text-on-primary)}.fe-btn--primary:hover:not(:disabled){background:var(--fe-primary-hover);border-color:var(--fe-primary-hover)}.fe-btn--danger{background:var(--fe-danger);border-color:var(--fe-danger);color:var(--fe-text-on-primary)}.fe-btn--danger:hover:not(:disabled){background:var(--fe-danger-hover);border-color:var(--fe-danger-hover)}.fe-btn--icon-only{padding:6px 8px}.fe-btn.is-active{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-btn__label{line-height:1}.fe-icon{font-size:1.05em;line-height:1}.fe-toolbar{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);flex-wrap:wrap}.fe-toolbar__primary{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.fe-toolbar__spacer{flex:1 1 auto}.fe-toolbar__search-group{display:inline-flex;align-items:center;gap:4px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px}.fe-toolbar__search-group .fe-search__input{border:0;background:transparent;padding:4px 8px}.fe-toolbar__search-group .fe-btn{border:0;background:transparent;padding:4px 6px}.fe-toolbar__search-group .fe-btn:hover:not(:disabled){background:var(--fe-bg-hover)}.fe-toolbar__view{display:inline-flex;gap:2px;padding:2px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm)}.fe-toolbar__view .fe-btn{border:0;background:transparent}.fe-toolbar__view .fe-btn.is-active{background:var(--fe-bg-selected)}.fe-search{position:relative}.fe-search__input{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:6px 10px;font:inherit;color:var(--fe-text);min-width:200px}.fe-search__input:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-breadcrumb{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:6px 12px;min-height:37px;background:var(--fe-bg);border-bottom:1px solid var(--fe-border);font-size:13px;color:var(--fe-text-muted)}.fe-breadcrumb__crumb{display:inline-flex;align-items:center;gap:4px;background:transparent;border:0;color:inherit;padding:2px 6px;border-radius:var(--fe-radius-sm);cursor:pointer;font:inherit}.fe-breadcrumb__crumb:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-breadcrumb__crumb.is-last{color:var(--fe-text);font-weight:600}.fe-breadcrumb__sep{color:var(--fe-text-muted)}.fe-breadcrumb__edit{margin-left:auto;background:none;border:1px solid transparent;color:var(--fe-text-muted);cursor:pointer;font-size:14px;line-height:1;padding:4px 8px;border-radius:4px}.fe-breadcrumb__edit:hover{background:var(--fe-bg-hover);color:var(--fe-text);border-color:var(--fe-border)}.fe-breadcrumb__input{flex:1;background:var(--fe-bg);color:var(--fe-text);border:1px solid var(--fe-primary);border-radius:4px;padding:4px 8px;font-family:var(--fe-font-mono);font-size:13px;outline:none}.fe-list{display:flex;flex-direction:column}.fe-list__head{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;padding:8px 12px;font-weight:600;color:var(--fe-text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border)}.fe-list__body{display:flex;flex-direction:column}.fe-list__row{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;padding:8px 12px;align-items:center;cursor:pointer;border-bottom:1px solid var(--fe-border);transition:background .08s;-webkit-user-select:none;user-select:none}.fe-list__row:hover{background:var(--fe-bg-hover)}.fe-list__row.is-selected{background:var(--fe-bg-selected)}.fe-list__row.is-trash{opacity:.7}.fe-list__row.is-clipped,.fe-grid__card.is-clipped{opacity:.45;font-style:italic}.fe-list__row:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-list__col--star{display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s}.fe-list__row:hover .fe-list__col--star,.fe-list__row:focus-within .fe-list__col--star,.fe-list__col--star:has(.is-starred){opacity:1}.fe-list__col--star .filex-star-btn.is-starred{color:var(--fe-warning, #f59e0b)}.fe-list__col--name{display:flex;align-items:center;gap:8px;min-width:0}.fe-list__icon{flex-shrink:0;font-size:16px}.fe-list__name-wrap{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.fe-list__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-list__parent{font-size:11px;color:var(--fe-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}.fe-list__col--size,.fe-list__col--mod{color:var(--fe-text-muted);font-size:13px}.fe-list__empty{padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-grid__card{display:flex;flex-direction:column;align-items:stretch;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);cursor:pointer;transition:background .08s,border-color .08s;-webkit-user-select:none;user-select:none}.fe-grid__card:hover{background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-grid__card.is-selected{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-grid__card.is-trash{opacity:.7}.fe-grid__thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;background:var(--fe-bg);border-radius:var(--fe-radius-sm);margin-bottom:8px;overflow:hidden}.fe-grid__thumb img{width:100%;height:100%;object-fit:cover}.fe-grid__icon{font-size:32px}.fe-grid__label{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-grid__meta{font-size:11px;color:var(--fe-text-muted);margin-top:2px}.fe-grid__parent{font-size:11px;color:var(--fe-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-style:italic}.fe-grid__snippet{margin-top:2px;font-size:11px;line-height:1.35;color:var(--fe-text-muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;text-align:left}.fe-grid__empty{grid-column:1 / -1;padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe__dragover{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#3b82f61f;border:3px dashed var(--fe-primary);pointer-events:none}.fe__dragover-card{background:var(--fe-bg);border-radius:var(--fe-radius-lg);padding:24px 40px;box-shadow:var(--fe-shadow);text-align:center}.fe__dragover-card .fe-icon{font-size:32px;display:block;margin-bottom:8px}.fe-upload{position:absolute;right:16px;bottom:16px;width:min(360px,calc(100% - 32px));background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);z-index:40;max-height:40vh;display:flex;flex-direction:column;overflow:hidden}.fe-upload__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);font-size:13px}.fe-upload__count{background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:12px;padding:1px 7px;border-radius:999px}.fe-upload__list{list-style:none;padding:0;margin:0;overflow:auto}.fe-upload__item{padding:10px 14px;border-bottom:1px solid var(--fe-border)}.fe-upload__item:last-child{border-bottom:0}.fe-upload__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;margin-bottom:4px}.fe-upload__bar{background:var(--fe-bg-elev);border-radius:99px;height:6px;overflow:hidden;margin-bottom:4px}.fe-upload__bar-fill{background:var(--fe-primary);height:100%;transition:width .2s}.fe-upload__item.is-error .fe-upload__bar-fill,.fe-upload__item.is-aborted .fe-upload__bar-fill{background:var(--fe-danger)}.fe-upload__item.is-done .fe-upload__bar-fill{background:#16a34a}.fe-upload__meta{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:var(--fe-text-muted)}.fe-upload__cancel{background:transparent;border:0;color:var(--fe-primary);cursor:pointer;font:inherit}.fe-upload-slide-enter-active,.fe-upload-slide-leave-active{transition:transform .2s,opacity .2s}.fe-upload-slide-enter-from,.fe-upload-slide-leave-to{opacity:0;transform:translateY(10px)}.fe-ops{position:absolute;left:16px;bottom:16px;width:min(320px,calc(100% - 32px));display:flex;flex-direction:column;gap:8px;z-index:40}.fe-ops__item{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);padding:10px 14px;font-size:13px}.fe-ops__item.is-done{border-color:#16a34a}.fe-ops__item.is-error{border-color:var(--fe-danger)}.fe-ops__row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.fe-ops__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto}.fe-ops__dismiss{background:transparent;border:0;color:var(--fe-text-muted);cursor:pointer;font-size:18px;line-height:1;padding:0 4px}.fe-ops__bar{background:var(--fe-bg-elev);border-radius:99px;height:6px;overflow:hidden}.fe-ops__bar-fill{background:var(--fe-primary);height:100%;transition:width .25s}.fe-ops__item.is-done .fe-ops__bar-fill{background:#16a34a}.fe-ops__item.is-error .fe-ops__bar-fill{background:var(--fe-danger)}.fe-ops__error{margin-top:6px;font-size:11px;color:var(--fe-danger)}.fe-ops-slide-enter-active,.fe-ops-slide-leave-active{transition:transform .2s,opacity .2s}.fe-ops-slide-enter-from,.fe-ops-slide-leave-to{opacity:0;transform:translateY(10px)}.fe-ctx-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;color:var(--fe-text);font-family:var(--fe-font);font-size:14px}.fe-ctx{position:absolute;min-width:180px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);padding:4px;z-index:90;color:var(--fe-text)}.fe-ctx__item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--fe-radius-sm);border:0;background:transparent;color:var(--fe-text);font:inherit;width:100%;text-align:left;cursor:pointer}.fe-ctx__item:hover:not(.is-disabled){background:var(--fe-bg-hover)}.fe-ctx__item.is-danger{color:var(--fe-danger)}.fe-ctx__item.is-disabled{opacity:.45;cursor:not-allowed}.fe-ctx__icon{width:1.2em;text-align:center}.fe-ctx__sep{height:1px;background:var(--fe-border);margin:4px 0}.fe-ctx-enter-active,.fe-ctx-leave-active{transition:opacity .1s}.fe-ctx-enter-from,.fe-ctx-leave-to{opacity:0}.fe-modal__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;align-items:center;justify-content:center;background:#0d131b7a;padding:16px}.fe-modal__card{background:var(--fe-bg);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow);width:100%;max-height:calc(100vh - 32px);display:flex;flex-direction:column;overflow:hidden}.fe-modal__card--sm{max-width:420px}.fe-modal__card--md{max-width:560px}.fe-modal__card--lg{max-width:800px}.fe-modal__card--xl{max-width:1080px;height:calc(100vh - 64px)}.fe-recents__backdrop{align-items:flex-start!important;padding-top:60px}.fe-recents__panel{background:var(--fe-bg, #fff);border-radius:var(--fe-radius, 8px);box-shadow:var(--fe-shadow, 0 6px 24px rgba(0, 0, 0, .18));width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 96px);display:flex;flex-direction:column;overflow:hidden}.fe-recents__header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--fe-border, #e2e6ed)}.fe-recents__close{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--fe-text-muted, #6b7280);padding:0 4px}.fe-recents__close:hover{color:var(--fe-text, #111)}.fe-preview__md-split{display:flex;flex-direction:column;height:100%;width:100%;min-height:0}.fe-preview__md-split-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;background:var(--fe-bg-elev, #f6f7f9);border-bottom:1px solid var(--fe-border, #e2e6ed);flex:0 0 auto}.fe-preview__md-split-label{font-family:var(--fe-font-mono, ui-monospace, monospace);font-size:11px;letter-spacing:.06em;color:var(--fe-text-muted, #6b7280)}.fe-preview__md-split-error{flex:1 1 auto;font-size:12px;color:var(--fe-danger, #dc2626);text-align:center}.fe-preview__md-split-body{flex:1 1 auto;display:grid;grid-template-columns:1fr 1fr;min-height:0}.fe-preview__md-split-input{resize:none;border:0;outline:0;padding:16px 20px;font-family:var(--fe-font-mono, ui-monospace, monospace);font-size:13px;line-height:1.6;background:var(--fe-bg, #fff);color:var(--fe-text, #111);border-right:1px solid var(--fe-border, #e2e6ed);overflow:auto;-moz-tab-size:2;tab-size:2}.fe-preview__md-split-output{overflow:auto;padding:16px 24px;background:var(--fe-bg, #fff)}.fe-preview__md-split-output.fe-preview__md{max-height:none;min-height:0;height:100%}@media (max-width: 900px){.fe-preview__md-split-body{grid-template-columns:1fr;grid-template-rows:1fr 1fr}.fe-preview__md-split-input{border-right:0;border-bottom:1px solid var(--fe-border, #e2e6ed)}}.fe-modal__backdrop--chromeless{background:transparent;padding:0}.fe-modal__card--chromeless{max-width:none;width:100vw;height:100vh;max-height:100vh;border-radius:0;box-shadow:none}.fe-modal__card--chromeless .fe-modal__body{flex:1 1 auto;min-height:0;padding:0}.fe-modal__card--chromeless .fe-preview{align-items:stretch;justify-content:stretch;min-height:0;flex:1 1 auto}.fe-modal__card--chromeless .fe-preview>*{width:100%;height:100%}.fe-modal__head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fe-border)}.fe-modal__title{font-size:16px;font-weight:600;margin:0}.fe-modal__close{background:transparent;border:0;color:var(--fe-text-muted);font-size:22px;cursor:pointer;padding:0 4px;line-height:1}.fe-modal__body{padding:16px;overflow:auto;flex:1 1 auto}.fe-modal__actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--fe-border);background:var(--fe-bg-elev)}.fe-modal-enter-active,.fe-modal-leave-active{transition:opacity .15s}.fe-modal-enter-from,.fe-modal-leave-to{opacity:0}.fe-input{width:100%;padding:8px 10px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);font:inherit;color:var(--fe-text)}.fe-input:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-input--mono{font-family:var(--fe-font-mono);letter-spacing:.1em}.fe-form{display:flex;flex-direction:column;gap:12px}.fe-form__row{display:flex;align-items:center;gap:8px}.fe-form__row--stack{flex-direction:column;align-items:stretch}.fe-form__error{color:var(--fe-danger);font-size:12px;margin:6px 0 0}.fe-share-result{display:flex;flex-direction:column;gap:12px}.fe-share-result__row label{display:block;font-size:12px;font-weight:600;color:var(--fe-text-muted);margin-bottom:4px}.fe-share-result__copy{display:flex;gap:6px}.fe-preview{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:50vh;background:var(--fe-bg-elev)}.fe-preview__image{max-width:100%;max-height:70vh;object-fit:contain}.fe-preview__video,.fe-preview__audio{max-width:100%;max-height:70vh}.fe-preview__iframe{width:100%;height:70vh;border:0;background:#fff}.fe-preview__office{width:100%;height:78vh;background:var(--fe-bg)}.fe-preview__code-wrap{display:flex;flex-direction:column;width:100%;height:78vh}.fe-preview__code-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-hover, #f3f4f6);border-bottom:1px solid var(--fe-border, #e5e7eb);font-size:12px}.fe-preview__code-lang{font-family:var(--fe-font-mono, ui-monospace, monospace);color:var(--fe-text-muted);text-transform:uppercase;letter-spacing:.04em}.fe-preview__code-toolbar>.fe-btn{margin-left:auto}.fe-preview__code-status{font-size:12px;font-weight:500}.fe-preview__code-status--ok{color:#059669}.fe-preview__code-status--err{color:#dc2626;cursor:help}.fe-preview__code-editor{flex:1;min-height:0;overflow:hidden}.fe-preview__code-editor .cm-editor{height:100%;font-size:13px}.fe-preview__code-editor .cm-scroller{font-family:var(--fe-font-mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.fe-preview__fallback{text-align:center;color:var(--fe-text-muted);padding:40px 20px}.fe-preview__fallback-icon{font-size:48px;display:block;margin-bottom:12px}.fe-preview__pre{margin:0;padding:16px;width:100%;max-height:70vh;overflow:auto;background:var(--fe-bg);color:var(--fe-text);font-family:var(--fe-font-mono);font-size:13px;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}.fe-preview__code{white-space:pre;word-wrap:normal}.hljs{background:var(--fe-bg);color:var(--fe-text)}.hljs-comment,.hljs-quote{color:var(--fe-text-muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-section,.hljs-meta{color:#c678dd}.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-link{color:#98c379}.hljs-number,.hljs-literal,.hljs-deletion{color:#d19a66}.hljs-title,.hljs-name,.hljs-selector-id,.hljs-selector-class,.hljs-template-tag,.hljs-template-variable{color:#61aeee}.hljs-type,.hljs-tag{color:#e06c75}.hljs-variable,.hljs-attribute{color:#d19a66}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.fe-preview__md{width:100%;max-height:70vh;overflow:auto;padding:24px 32px;background:var(--fe-bg);color:var(--fe-text);line-height:1.6;font-size:15px}.fe-preview__md h1,.fe-preview__md h2,.fe-preview__md h3,.fe-preview__md h4{margin:1.2em 0 .6em;font-weight:600}.fe-preview__md h1{font-size:1.8em;border-bottom:1px solid var(--fe-border);padding-bottom:.3em}.fe-preview__md h2{font-size:1.4em;border-bottom:1px solid var(--fe-border);padding-bottom:.3em}.fe-preview__md h3{font-size:1.2em}.fe-preview__md p{margin:.8em 0}.fe-preview__md a{color:var(--fe-primary);text-decoration:underline}.fe-preview__md code{font-family:var(--fe-font-mono);background:var(--fe-bg-elev);padding:1px 5px;border-radius:3px;font-size:.92em}.fe-preview__md pre{background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:12px 16px;overflow:auto;font-size:.9em}.fe-preview__md pre code{background:transparent;padding:0}.fe-preview__md ul,.fe-preview__md ol{padding-left:2em;margin:.8em 0}.fe-preview__md li{margin:.3em 0}.fe-preview__md blockquote{border-left:3px solid var(--fe-border-strong);padding:0 1em;color:var(--fe-text-muted);margin:.8em 0}.fe-preview__md table{border-collapse:collapse;margin:1em 0;width:100%}.fe-preview__md th,.fe-preview__md td{border:1px solid var(--fe-border);padding:6px 10px;text-align:left}.fe-preview__md th{background:var(--fe-bg-elev)}.fe-preview__md img{max-width:100%}.fe-toast{position:absolute;bottom:24px;left:50%;transform:translate(-50%);background:var(--fe-text);color:var(--fe-bg);padding:8px 14px;border-radius:var(--fe-radius);font-size:13px;box-shadow:var(--fe-shadow-sm);z-index:95}.fe-toast-enter-active,.fe-toast-leave-active{transition:opacity .2s,transform .2s}.fe-toast-enter-from,.fe-toast-leave-to{opacity:0;transform:translate(-50%,10px)}@media (max-width: 640px){.fe-list__head,.fe-list__row{grid-template-columns:28px minmax(0,1fr) 90px}.fe-list__col--mod{display:none}.fe-toolbar{padding:8px}.fe-search__input{min-width:120px}}.fe-ficon{width:1em;height:1em;display:block;flex-shrink:0}.fe-ficon--folder{color:var(--fe-icon-folder)}.fe-ficon--image{color:var(--fe-icon-image)}.fe-ficon--video{color:var(--fe-icon-video)}.fe-ficon--audio{color:var(--fe-icon-audio)}.fe-ficon--pdf{color:var(--fe-icon-pdf)}.fe-ficon--doc{color:var(--fe-icon-doc)}.fe-ficon--sheet{color:var(--fe-icon-sheet)}.fe-ficon--slides{color:var(--fe-icon-slides)}.fe-ficon--archive{color:var(--fe-icon-archive)}.fe-ficon--code{color:var(--fe-icon-code)}.fe-ficon--text{color:var(--fe-icon-text)}.fe-ficon--unknown{color:var(--fe-icon-unknown)}.fe-grid__icon--svg{display:flex;align-items:center;justify-content:center}.fe-list__icon--svg{display:inline-flex;align-items:center}.fe-list__sort{display:inline-flex;align-items:center;gap:4px;background:transparent;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer}.fe-list__sort:hover{color:var(--fe-text)}.fe-list__sort:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px;border-radius:2px}.fe-list__sort-arrow{font-size:11px;color:var(--fe-primary)}.fe-list__group{padding:12px 12px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted);-webkit-user-select:none;user-select:none}.fe--density-compact .fe-toolbar{padding:6px 8px;gap:6px}.fe--density-compact .fe-breadcrumb,.fe--density-compact .fe-list__head{padding:4px 12px}.fe--density-compact .fe-list__row{padding:3px 12px}.fe--density-compact .fe-list__icon{font-size:14px}.fe--density-compact .fe-list__group{padding:8px 12px 2px}.fe--density-compact .fe-grid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;padding:8px}.fe--density-compact .fe-grid__card{padding:6px}.fe--density-compact .fe-grid__icon{font-size:24px}.fe-cmdp__backdrop{align-items:flex-start;padding-top:min(18vh,160px)}.fe-cmdp{background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);box-shadow:var(--fe-shadow);width:min(560px,calc(100vw - 32px));display:flex;flex-direction:column;overflow:hidden}.fe-cmdp__inputwrap{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--fe-border);color:var(--fe-text-muted)}.fe-cmdp__glyph{flex:0 0 auto}.fe-cmdp__input{flex:1 1 auto;min-width:0;border:0;outline:none;background:transparent;color:var(--fe-text);font:inherit;font-size:15px}.fe-cmdp__input::placeholder{color:var(--fe-text-muted)}.fe-cmdp__list{max-height:min(48vh,380px);overflow-y:auto;padding:6px}.fe-cmdp__group{padding:8px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fe-text-muted)}.fe-cmdp__item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-radius:var(--fe-radius-sm);padding:8px 10px;color:var(--fe-text);font:inherit;font-size:14px;cursor:pointer}.fe-cmdp__item.is-active{background:var(--fe-bg-selected)}.fe-cmdp__item:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-cmdp__icon{flex:0 0 auto;width:20px;text-align:center}.fe-cmdp__label{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-cmdp__empty{padding:20px 12px;text-align:center;color:var(--fe-text-muted);font-size:13px}.fe-cmdp__hint{padding:8px 14px;border-top:1px solid var(--fe-border);background:var(--fe-bg-elev);font-size:11px;color:var(--fe-text-muted)}.fe-shortcuts{display:flex;flex-direction:column;gap:16px}.fe-shortcuts__heading{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--fe-text-muted)}.fe-shortcuts__table{display:flex;flex-direction:column}.fe-shortcuts__row{display:flex;align-items:center;gap:12px;padding:4px 0}.fe-shortcuts__keys{flex:0 0 40%;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.fe-shortcuts__desc{flex:1 1 auto;font-size:13px;color:var(--fe-text)}.fe-shortcuts__or{color:var(--fe-text-muted);font-size:11px}.fe-kbd{display:inline-block;padding:2px 7px;border:1px solid var(--fe-border-strong);border-bottom-width:2px;border-radius:var(--fe-radius-sm);background:var(--fe-bg-elev);color:var(--fe-text);font-family:var(--fe-font-mono);font-size:11.5px;line-height:1.4}.fe-breadcrumb__more-wrap{position:relative;display:inline-flex;align-items:center;gap:4px}.fe-breadcrumb__more{background:transparent;border:0;color:inherit;padding:2px 8px;border-radius:var(--fe-radius-sm);cursor:pointer;font:inherit;line-height:1.2}.fe-breadcrumb__more:hover,.fe-breadcrumb__more[aria-expanded=true]{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-breadcrumb__more:focus-visible{outline:2px solid var(--fe-primary);outline-offset:1px}.fe-breadcrumb__menu{position:absolute;top:calc(100% + 4px);left:0;z-index:80;min-width:160px;max-width:280px;max-height:40vh;overflow-y:auto;display:flex;flex-direction:column;padding:4px;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius);box-shadow:var(--fe-shadow)}.fe-breadcrumb__menu-item{text-align:left;background:transparent;border:0;padding:6px 10px;border-radius:var(--fe-radius-sm);color:var(--fe-text);font:inherit;font-size:13px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-breadcrumb__menu-item:hover,.fe-breadcrumb__menu-item:focus-visible{background:var(--fe-bg-hover)}.fe-breadcrumb__crumb>span:first-child{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 640px){.fe-breadcrumb__crumb>span:first-child{max-width:110px}}@media (prefers-reduced-motion: reduce){.fe-modal-enter-active,.fe-modal-leave-active{transition:none!important}}.fe-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.fe__skeleton{min-height:240px}.fe-skel{position:relative;overflow:hidden;border-radius:var(--fe-radius-sm);background:color-mix(in srgb,var(--fe-text-muted) 14%,transparent)}.fe-skel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--fe-text-muted) 12%,transparent),transparent);animation:fe-skel-shimmer 1.4s ease-in-out infinite}@keyframes fe-skel-shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion: reduce){.fe-skel:after{animation:none;content:none}}.fe-skel-list{padding-top:2px}.fe-skel-row{display:grid;grid-template-columns:32px minmax(0,1fr) 120px 180px;gap:8px;align-items:center;padding:12px;border-bottom:1px solid var(--fe-border)}.fe-skel-row .fe-skel{height:12px}.fe-skel-row .fe-skel--icon{width:20px;height:20px;border-radius:6px}.fe-skel-row .fe-skel--name{width:55%}.fe-skel-row:nth-child(2n) .fe-skel--name{width:38%}.fe-skel-row:nth-child(3n) .fe-skel--name{width:70%}.fe-skel-row .fe-skel--size{width:56px;justify-self:start}.fe-skel-row .fe-skel--date{width:110px;justify-self:start}.fe-skel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-skel-card{display:flex;flex-direction:column;gap:8px;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev)}.fe-skel-card .fe-skel--thumb{aspect-ratio:1 / 1}.fe-skel-card .fe-skel--label{height:12px;width:70%}.fe-skel-card:nth-child(2n) .fe-skel--label{width:50%}.fe-skel-card:nth-child(3n) .fe-skel--label{width:85%}.fe-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:240px;height:100%;padding:24px;text-align:center;color:var(--fe-text-muted)}.fe-state__art{color:var(--fe-text-muted);opacity:.7;margin-bottom:4px;flex:0 0 auto}.fe-state__title{margin:2px 0 0;font-size:15px;font-weight:600;color:var(--fe-text)}.fe-state__hint{margin:0;font-size:13px;max-width:420px}.fe-state__path{margin:0;font-size:12px;font-family:var(--fe-font-mono);word-break:break-all;max-width:480px}.fe-state__actions{margin-top:12px;display:flex;gap:8px}.fe-toast--action{display:flex;align-items:center;gap:14px;padding:8px 10px 8px 14px;cursor:pointer;max-width:min(480px,calc(100% - 32px))}.fe-toast__msg{min-width:0}.fe-toast__action{flex:0 0 auto;background:transparent;border:0;padding:4px 8px;border-radius:var(--fe-radius-sm);font:inherit;font-weight:600;color:color-mix(in srgb,var(--fe-primary) 70%,var(--fe-bg));cursor:pointer}.fe-toast__action:hover{background:color-mix(in srgb,var(--fe-bg) 14%,transparent)}.fe-toast__action:focus-visible{outline:2px solid var(--fe-bg);outline-offset:1px}.fe-connbadge{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:1.4;color:var(--fe-text-muted);background:var(--fe-bg-elev);border:1px solid var(--fe-border);border-radius:999px;padding:2px 10px;cursor:help;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.fe-connbadge__dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--fe-warning, #f59e0b)}.fe-cmdp__item--hit{align-items:flex-start}.fe-cmdp__item--hit .fe-cmdp__icon{margin-top:1px}.fe-cmdp__hitbody{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.fe-cmdp__hitline{display:flex;align-items:center;gap:8px;min-width:0}.fe-cmdp__badge,.fe-list__badge{flex:0 0 auto;display:inline-block;padding:1px 6px;border-radius:999px;border:1px solid color-mix(in srgb,var(--fe-primary) 35%,transparent);background:color-mix(in srgb,var(--fe-primary) 12%,transparent);color:var(--fe-primary);font-size:10px;font-weight:600;line-height:1.5;white-space:nowrap;vertical-align:middle}.fe-cmdp__crumb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:var(--fe-text-muted)}.fe-cmdp__snippet,.fe-list__snippet{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--fe-text-muted)}.fe-cmdp__mark,.fe-list__mark,.fe-grid__mark{background:color-mix(in srgb,var(--fe-primary) 22%,transparent);color:var(--fe-text);border-radius:2px;padding:0 1px;font-weight:600}.fe-cmdp__loading{padding:8px 12px;font-size:13px;color:var(--fe-text-muted)}.fe-cmdp__item--saved{-webkit-user-select:none;user-select:none}.fe-cmdp__del{flex:0 0 auto;background:transparent;border:0;border-radius:var(--fe-radius-sm);padding:2px 6px;font:inherit;font-size:13px;color:var(--fe-text-muted);cursor:pointer;opacity:.55}.fe-cmdp__item--saved:hover .fe-cmdp__del,.fe-cmdp__item--saved.is-active .fe-cmdp__del{opacity:1}.fe-cmdp__del:hover{background:var(--fe-bg-elev);color:var(--fe-danger, #dc2626)}.fe-cmdp__del:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-list__snippet{max-width:100%}.fe-toolbar--narrow{flex-wrap:nowrap;gap:6px}.fe-toolbar--narrow .fe-btn.is-active{background:var(--fe-bg-selected)}.fe-toolbar--narrow .fe-search--full{flex:1 1 auto;min-width:0}.fe-toolbar--narrow .fe-search--full .fe-search__input{width:100%;min-width:0}.fe-fab{position:absolute;right:16px;bottom:16px;width:56px;height:56px;border:0;border-radius:50%;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:24px;display:flex;align-items:center;justify-content:center;box-shadow:var(--fe-shadow);cursor:pointer;z-index:45;transition:background .15s,transform .15s}.fe-fab:hover{background:var(--fe-primary-hover)}.fe-fab:active{transform:scale(.94)}.fe-fab:focus-visible{outline:2px solid var(--fe-primary);outline-offset:3px}.fe--narrow .fe-upload,.fe--narrow .fe-ops{bottom:84px}.fe-ctx-backdrop--sheet{background:#0d131b6b}.fe-sheet{position:fixed;left:0;right:0;bottom:0;max-height:70vh;display:flex;flex-direction:column;background:var(--fe-bg);color:var(--fe-text);border:1px solid var(--fe-border);border-bottom:0;border-top-left-radius:var(--fe-radius-lg);border-top-right-radius:var(--fe-radius-lg);box-shadow:0 -10px 32px #0f172a47;padding:0 8px calc(8px + env(safe-area-inset-bottom,0px));outline:none;z-index:90}.fe-sheet__handle{flex:0 0 auto;display:flex;align-items:center;justify-content:center;padding:12px 0 8px;cursor:grab;touch-action:none}.fe-sheet__handle:before{content:"";width:40px;height:4px;border-radius:99px;background:var(--fe-border-strong)}.fe-sheet__items{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.fe-sheet__item{min-height:44px;padding:10px 14px;font-size:15px;gap:12px}.fe-sheet-enter-active,.fe-sheet-leave-active{transition:opacity .18s ease}.fe-sheet-enter-active .fe-sheet,.fe-sheet-leave-active .fe-sheet{transition:transform .22s ease}.fe-sheet-enter-from,.fe-sheet-leave-to{opacity:0}.fe-sheet-enter-from .fe-sheet,.fe-sheet-leave-to .fe-sheet{transform:translateY(100%)}@media (prefers-reduced-motion: reduce){.fe-sheet-enter-active,.fe-sheet-leave-active,.fe-sheet-enter-active .fe-sheet,.fe-sheet-leave-active .fe-sheet,.fe-fab{transition:none}}.fe__main{display:flex;flex-direction:row;flex:1 1 auto;min-height:0}.fe__main>.fe__body{min-width:0;height:100%}.fe-inspector{flex:0 0 300px;width:300px;min-height:0;display:flex;flex-direction:column;border-left:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text)}.fe-inspector--overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:60;width:auto;border-left:none}.fe-inspector__head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--fe-border);flex:0 0 auto}.fe-inspector__title{margin:0;font-size:13px;font-weight:600;letter-spacing:.02em}.fe-inspector__close{border:none;background:none;color:var(--fe-text-muted);font-size:18px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:6px}.fe-inspector__close:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-inspector__scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px}.fe-inspector__section{margin-bottom:18px}.fe-inspector__section:last-child{margin-bottom:0}.fe-inspector__heading{margin:0 0 8px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fe-text-muted)}.fe-inspector__hero{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;padding:6px 0 4px}.fe-inspector__bigicon{display:inline-flex}.fe-inspector__bigicon .fe-ficon{width:56px;height:56px}.fe-inspector__thumb{width:96px;height:96px;object-fit:cover;border-radius:var(--fe-radius);border:1px solid var(--fe-border)}.fe-inspector__name{margin:0;font-size:13px;font-weight:600;word-break:break-word;max-width:100%}.fe-inspector__sub{margin:0;font-size:12px;color:var(--fe-text-muted)}.fe-inspector__meta{margin:8px 0 0;display:flex;flex-direction:column;gap:6px}.fe-inspector__row{display:flex;align-items:baseline;gap:8px;font-size:12px}.fe-inspector__row dt{flex:0 0 84px;color:var(--fe-text-muted)}.fe-inspector__row dd{margin:0;min-width:0;flex:1 1 auto;word-break:break-word}.fe-inspector__pathcell{display:flex;align-items:center;gap:4px}.fe-inspector__path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;direction:rtl;text-align:left}.fe-inspector__mime{font-family:var(--fe-font-mono);font-size:11px}.fe-inspector__copy{flex:0 0 auto;border:none;background:none;color:var(--fe-text-muted);cursor:pointer;font-size:13px;line-height:1;padding:2px 4px;border-radius:4px}.fe-inspector__copy:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-inspector__empty{margin:0;font-size:12px;color:var(--fe-text-muted)}.fe-btn--sm{padding:3px 8px;font-size:12px}.fe-inspector__versions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.fe-inspector__version{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--fe-border);border-radius:var(--fe-radius)}.fe-inspector__version-main{display:flex;flex-direction:column;gap:2px}.fe-inspector__version-n{font-size:12px;font-weight:600}.fe-inspector__version-meta{font-size:11px;color:var(--fe-text-muted)}.fe-inspector__confirm{display:flex;flex-direction:column;gap:6px}.fe-inspector__confirm-q{margin:0;font-size:12px}.fe-inspector__check{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--fe-text-muted);cursor:pointer}.fe-inspector__confirm-actions{display:flex;gap:6px}.fe-inspector__snapshot{margin-top:8px;width:100%}.fe-inspector__permrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fe-inspector__badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;border:1px solid var(--fe-border-strong);color:var(--fe-text);background:var(--fe-bg-hover)}.fe-inspector__badge--owner{border-color:var(--fe-primary);color:var(--fe-primary);background:transparent}.fe-inspector__badge--none{color:var(--fe-text-muted)}.fe-inspector__badge--pin{border-color:var(--fe-warning, #f59e0b);color:var(--fe-warning, #f59e0b);background:transparent}.fe-inspector__shares{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.fe-inspector__share{display:flex;align-items:center;gap:6px;font-size:12px;min-width:0}.fe-inspector__share-url{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-inspector__share-exp{flex:0 0 auto;font-size:11px;color:var(--fe-text-muted)}@media (prefers-reduced-motion: no-preference){.fe-inspector{animation:fe-inspector-in .16s ease}@keyframes fe-inspector-in{0%{opacity:0;transform:translate(8px)}to{opacity:1;transform:none}}}.fe-shortcuts__unbound{font-size:12px;font-style:italic;color:var(--fe-text-muted)}.fe-shortcuts__custom{margin-left:4px;font-size:9px;vertical-align:2px;color:var(--fe-primary)}.fe-shortset{display:flex;flex-direction:column;gap:14px}.fe-shortset__topbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.fe-shortset__hint{margin:0;font-size:12px;color:var(--fe-text-muted);flex:1 1 auto}.fe-shortset__reset-all{flex:0 0 auto}.fe-shortset__group{display:flex;flex-direction:column}.fe-shortset__item{border-radius:var(--fe-radius-sm);padding:2px 6px;margin:0 -6px}.fe-shortset__item.is-capturing{background:var(--fe-bg-hover);outline:1px dashed var(--fe-primary);outline-offset:-1px}.fe-shortset__item.is-conflict{background:color-mix(in srgb,var(--fe-danger) 8%,transparent);outline:1px solid var(--fe-danger);outline-offset:-1px}.fe-shortset__row{display:flex;align-items:center;gap:12px;padding:4px 0;min-height:34px}.fe-shortset__label{flex:1 1 auto;font-size:13px;color:var(--fe-text)}.fe-shortset__keys{flex:0 0 auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.fe-shortset__capture{font-size:12px;color:var(--fe-primary);animation:fe-shortset-blink 1.1s ease-in-out infinite}@keyframes fe-shortset-blink{0%,to{opacity:1}50%{opacity:.45}}.fe-shortset__actions{flex:0 0 auto;display:flex;align-items:center;gap:6px;min-width:118px;justify-content:flex-end}.fe-shortset__btn{padding:3px 9px;font-size:12px}.fe-shortset__fixed{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--fe-text-muted);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px 7px}.fe-shortset__conflict{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:6px 2px 8px;font-size:12.5px;color:var(--fe-danger)}.fe-shortset__conflict-msg{flex:1 1 auto;display:inline-flex;align-items:center;gap:6px;min-width:200px}.fe-shortset__conflict-actions{flex:0 0 auto;display:flex;gap:6px}.fe-ql-hint{position:fixed;left:50%;bottom:14px;transform:translate(-50%);z-index:72;display:inline-flex;flex-direction:row;align-items:center;width:auto;height:auto;min-height:0;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--fe-border);background:var(--fe-bg-elev);color:var(--fe-text-muted);font-size:12px;box-shadow:var(--fe-shadow);pointer-events:none;white-space:nowrap}.fe-ql-hint .fe-kbd{font-size:10.5px;padding:1px 5px}.fe-ql-hint__sep{opacity:.5}.fe-opc{position:absolute;right:16px;bottom:16px;z-index:45;display:flex;flex-direction:column;align-items:flex-end;gap:10px;max-width:calc(100% - 32px)}.fe-opc__badge{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 10px;border-radius:999px;border:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow);cursor:pointer;font:inherit;font-size:13px;line-height:1}.fe-opc__badge:hover{background:var(--fe-bg-hover)}.fe-opc__badge:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-opc__badge.is-error{border-color:var(--fe-danger)}.fe-opc__badge.is-error .fe-opc__count{color:var(--fe-danger)}.fe-opc__ring{width:22px;height:22px;flex:0 0 auto}.fe-opc__ring-track{stroke:var(--fe-border-strong)}.fe-opc__ring-fill{stroke:var(--fe-primary);transition:stroke-dashoffset .25s}.fe-opc__badge.is-error .fe-opc__ring-fill{stroke:var(--fe-danger)}.fe-opc__ring--spin{animation:fe-opc-spin 1s linear infinite}@keyframes fe-opc-spin{to{transform:rotate(360deg)}}.fe-opc__count{font-weight:600}.fe-opc__pct{color:var(--fe-text-muted);font-size:12px}.fe-opc__panel{width:min(380px,calc(100vw - 32px));max-width:100%;max-height:min(420px,60vh);display:flex;flex-direction:column;overflow:hidden;background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);box-shadow:var(--fe-shadow)}.fe-opc__head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);font-size:13px}.fe-opc__body{overflow:auto;padding:6px 0 8px}.fe-opc__section+.fe-opc__section{border-top:1px solid var(--fe-border);margin-top:6px}.fe-opc__section-title{display:flex;align-items:center;justify-content:space-between;margin:0;padding:8px 14px 4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--fe-text-muted)}.fe-opc__list{list-style:none;margin:0;padding:0}.fe-opc__item{display:flex;align-items:flex-start;gap:10px;padding:8px 14px}.fe-opc__item+.fe-opc__item{border-top:1px solid var(--fe-border)}.fe-opc__item.is-error{background:color-mix(in srgb,var(--fe-danger) 7%,transparent)}.fe-opc__kicon{width:18px;height:18px;flex:0 0 auto;margin-top:2px;color:var(--fe-text-muted)}.fe-opc__item.is-error .fe-opc__kicon{color:var(--fe-danger)}.fe-opc__mid{flex:1 1 auto;min-width:0}.fe-opc__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.fe-opc__sub{display:flex;align-items:baseline;gap:5px;font-size:11px;color:var(--fe-text-muted);margin-top:1px;min-width:0}.fe-opc__sub--err,.fe-opc__item.is-error .fe-opc__state{color:var(--fe-danger)}.fe-opc__state{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-opc__bar{background:var(--fe-bg-elev);border-radius:99px;height:5px;overflow:hidden;margin-top:5px}.fe-opc__bar-fill{background:var(--fe-primary);height:100%;transition:width .2s}.fe-opc__spin{flex:0 0 auto;width:14px;height:14px;margin-top:4px;border-radius:50%;border:2px solid var(--fe-border-strong);border-top-color:var(--fe-primary);animation:fe-opc-spin .8s linear infinite}.fe-opc__acts{display:flex;align-items:center;gap:2px;flex:0 0 auto}.fe-opc__act{background:transparent;border:0;color:var(--fe-primary);cursor:pointer;font:inherit;font-size:12px;padding:2px 4px;border-radius:var(--fe-radius-sm)}.fe-opc__act:hover{background:var(--fe-bg-hover)}.fe-opc__act--retry{font-weight:600}.fe-opc__x{background:transparent;border:0;color:var(--fe-text-muted);cursor:pointer;font-size:16px;line-height:1;padding:0 4px;border-radius:var(--fe-radius-sm)}.fe-opc__x:hover{color:var(--fe-text)}.fe-opc__item--history .fe-opc__name{font-size:12px;color:var(--fe-text-muted)}.fe-opc__chip{flex:0 0 auto;font-size:10px;font-weight:600;padding:2px 7px;border-radius:999px;background:var(--fe-bg-elev);color:var(--fe-text-muted)}.fe-opc__chip.is-done{color:var(--fe-ok, #16a34a);background:color-mix(in srgb,var(--fe-ok, #16a34a) 12%,transparent)}.fe-opc__chip.is-error{color:var(--fe-danger);background:color-mix(in srgb,var(--fe-danger) 12%,transparent)}.fe-opc__item.is-done .fe-opc__bar-fill{background:var(--fe-ok, #16a34a)}.fe-opc__empty{margin:0;padding:16px 14px;font-size:12px;color:var(--fe-text-muted);text-align:center}.fe-opc-pop-enter-active,.fe-opc-pop-leave-active{transition:transform .16s ease,opacity .16s ease}.fe-opc-pop-enter-from,.fe-opc-pop-leave-to{opacity:0;transform:translateY(8px) scale(.98)}.fe--narrow .fe-opc{left:12px;right:12px;bottom:84px;max-width:none}.fe--narrow .fe-opc__panel{width:100%;max-height:50vh}@media (prefers-reduced-motion: reduce){.fe-opc__ring--spin,.fe-opc__spin{animation-duration:3s}.fe-opc-pop-enter-active,.fe-opc-pop-leave-active{transition:none}}.fe-grid__card:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-ctx__item:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-hover)}.fe-list__row.is-droptarget,.fe-grid__card.is-droptarget{outline:2px dashed var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-selected)}.fe-grid__card.is-droptarget{border-color:var(--fe-primary)}.fe-dragghost{display:inline-flex;align-items:center;gap:8px;max-width:260px;padding:6px 10px;border:1px solid var(--fe-border-strong);border-radius:var(--fe-radius);background:var(--fe-bg-elev);color:var(--fe-text);font-family:var(--fe-font);font-size:13px;box-shadow:var(--fe-shadow-sm);pointer-events:none;z-index:96}.fe-dragghost__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-dragghost__badge{flex:0 0 auto;min-width:20px;padding:1px 6px;border-radius:999px;background:var(--fe-primary);color:var(--fe-text-on-primary);font-size:12px;font-weight:600;text-align:center}.fe-state__details{margin-top:10px;max-width:480px;font-size:12px;text-align:left}.fe-state__details-summary{cursor:pointer;text-align:center;color:var(--fe-text-muted);-webkit-user-select:none;user-select:none}.fe-state__details-summary:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-state__details-pre{margin:8px 0 0;padding:8px 10px;border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);background:var(--fe-bg-elev);font-family:var(--fe-font-mono);font-size:11px;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow:auto}.fe-tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:96;color:var(--fe-text);font-family:var(--fe-font);font-size:14px}.fe-tour__spot{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px #0d131b8c;border:2px solid var(--fe-primary);pointer-events:none}.fe-tour__dim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d131b8c;pointer-events:none}.fe-tour__card{position:fixed;display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--fe-border-strong);border-radius:var(--fe-radius-lg);background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow);outline:none}.fe-tour__card--center{top:50%;left:50%;transform:translate(-50%,-50%);width:min(360px,calc(100vw - 24px))}.fe-tour__progress{margin:0;font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--fe-text-muted)}.fe-tour__title{margin:0;font-size:15px;font-weight:700}.fe-tour__desc{margin:0;font-size:13px;line-height:1.5;color:var(--fe-text-muted)}.fe-tour__dots{display:flex;gap:5px;margin-top:4px}.fe-tour__dot{width:7px;height:7px;border-radius:50%;background:var(--fe-border-strong);transition:background .15s}.fe-tour__dot.is-active{background:var(--fe-primary)}.fe-tour__actions{display:flex;align-items:center;gap:8px;margin-top:8px}.fe-tour__actions-spacer{flex:1 1 auto}.fe-tour__skip{color:var(--fe-text-muted)}.fe-tour-enter-active,.fe-tour-leave-active{transition:opacity .16s ease}.fe-tour-enter-from,.fe-tour-leave-to{opacity:0}@media (prefers-reduced-motion: reduce){.fe-tour-enter-active,.fe-tour-leave-active,.fe-ctx-enter-active,.fe-ctx-leave-active,.fe-sheet-enter-active,.fe-sheet-leave-active,.fe-toast-enter-active,.fe-toast-leave-active,.fe-list__row,.fe-grid__card,.fe-tour__dot,.fe-list__col--star{transition:none!important}}.fe-tabs{display:flex;align-items:stretch;gap:4px;flex:0 0 auto;min-width:0;padding:4px 6px 0;background:var(--fe-bg-elev);border-bottom:1px solid var(--fe-border);-webkit-user-select:none;user-select:none}.fe-tabs__scroll{display:flex;align-items:stretch;gap:2px;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:var(--fe-border-strong) transparent}.fe-tabs__scroll::-webkit-scrollbar{height:6px;width:0}.fe-tabs__scroll::-webkit-scrollbar-track{background:transparent}.fe-tabs__scroll::-webkit-scrollbar-thumb{background:var(--fe-border-strong);border-radius:6px}.fe-tabs__scroll::-webkit-scrollbar-thumb:hover{background:var(--fe-text-muted)}.fe-tabs__tab{display:flex;align-items:center;gap:6px;max-width:180px;min-width:72px;padding:4px 6px 4px 10px;font-size:12px;color:var(--fe-text-muted);background:transparent;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;cursor:pointer;white-space:nowrap;position:relative}.fe-tabs__tab:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-tabs__tab.is-active{background:var(--fe-bg);color:var(--fe-text);border-color:var(--fe-border)}.fe-tabs__tab.is-active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--fe-bg)}.fe-tabs__tab.is-dragover{outline:1px dashed var(--fe-primary);outline-offset:-2px}.fe-tabs__tab:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-tabs__label{overflow:hidden;text-overflow:ellipsis;flex:1 1 auto;min-width:0}.fe-tabs__splitdot{width:6px;height:6px;border-radius:2px;background:var(--fe-primary);flex:0 0 auto}.fe-tabs__close{flex:0 0 auto;width:16px;height:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:4px;background:transparent;color:inherit;font-size:13px;cursor:pointer;padding:0}.fe-tabs__close:hover{background:var(--fe-bg-hover)}.fe-tabs__new,.fe-tabs__split{flex:0 0 auto;align-self:center;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--fe-text-muted);font-size:15px;cursor:pointer;padding:0}.fe-tabs__split .fe-ficon{width:14px;height:14px}.fe-tabs__new:hover,.fe-tabs__split:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-tabs__split.is-active{background:var(--fe-bg-selected);color:var(--fe-primary);border-color:var(--fe-border)}.fe--narrow .fe-tabs__split{display:none}.fe__primary{display:flex;flex-direction:column;flex:1 1 auto;min-width:0;min-height:0}.fe__primary>.fe__body{min-width:0}.fe__main--split>.fe__primary{flex:1 1 50%}.fe-split{flex:1 1 50%;min-width:0;min-height:0;display:flex;flex-direction:column;border-left:1px solid var(--fe-border);background:var(--fe-bg);color:var(--fe-text)}.fe__main--split>.fe__primary,.fe-split{box-shadow:inset 0 2px 0 transparent}.fe__main--split>.fe__primary.fe-pane--focus,.fe-split.fe-pane--focus{box-shadow:inset 0 2px 0 var(--fe-primary)}.fe-split__crumbs{display:flex;align-items:center;gap:4px;flex:0 0 auto;padding:6px 12px;min-height:37px;border-bottom:1px solid var(--fe-border);font-size:13px;color:var(--fe-text-muted);overflow:hidden;white-space:nowrap}.fe-split__crumb{border:none;background:transparent;color:inherit;font:inherit;padding:2px 6px;border-radius:var(--fe-radius-sm);cursor:pointer;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-split__crumb:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-split__crumb.is-last{color:var(--fe-text);font-weight:600}.fe-split__sep{opacity:.6;flex:0 0 auto}.fe-split__spacer{flex:1 1 auto}.fe-split__closebtn{flex:0 0 auto;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:5px;background:transparent;color:var(--fe-text-muted);font-size:14px;cursor:pointer;padding:0}.fe-split__closebtn:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-split__body{flex:1 1 auto;min-height:0;overflow:auto;position:relative}.fe-split__body.is-dropover{outline:2px dashed var(--fe-primary);outline-offset:-4px}.fe-split__list{padding:4px 0}.fe-split__row{display:flex;align-items:center;gap:8px;padding:5px 10px;font-size:13px;cursor:default}.fe-split__row:hover{background:var(--fe-bg-hover)}.fe-split__row.is-selected{background:var(--fe-bg-selected)}.fe-split__row.is-droptarget{outline:1.5px dashed var(--fe-primary);outline-offset:-2px;border-radius:6px}.fe-split__row:focus-visible{outline:2px solid var(--fe-primary);outline-offset:-2px}.fe-split__icon{flex:0 0 auto;width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;font-size:16px}.fe-split__icon .fe-ficon{width:16px;height:16px}.fe-split__name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-split__size{flex:0 0 auto;color:var(--fe-text-muted);font-size:11.5px}.fe-split__state{padding:24px 12px;text-align:center;color:var(--fe-text-muted);font-size:12.5px;display:flex;flex-direction:column;gap:10px;align-items:center}.fe-gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:var(--fe-gap);padding:var(--fe-gap)}.fe-gal__card{display:flex;flex-direction:column;align-items:stretch;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);cursor:pointer;overflow:hidden;transition:background .08s,border-color .08s;-webkit-user-select:none;user-select:none}.fe-gal__card:hover{background:var(--fe-bg-hover);border-color:var(--fe-border-strong)}.fe-gal__card.is-selected{background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-gal__card.is-trash{opacity:.7}.fe-gal__card.is-clipped{opacity:.55;border-style:dashed}.fe-gal__card:focus-visible{outline:2px solid var(--fe-primary);outline-offset:2px}.fe-gal__card.is-droptarget{outline:2px dashed var(--fe-primary);outline-offset:-2px;background:var(--fe-bg-selected);border-color:var(--fe-primary)}.fe-gal__thumb{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1 / 1;background:var(--fe-bg);overflow:hidden}.fe-gal__thumb img{width:100%;height:100%;object-fit:cover}.fe-gal__icon{font-size:44px}.fe-gal__icon--svg svg{width:64px;height:64px}.fe-gal__meta{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:1px;padding:6px 8px;font-size:11px;line-height:1.35;color:var(--fe-text);background:color-mix(in srgb,var(--fe-bg-elev) 88%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;transform:translateY(4px);transition:opacity .12s ease,transform .12s ease;pointer-events:none}.fe-gal__card:hover .fe-gal__meta,.fe-gal__card:focus-visible .fe-gal__meta{opacity:1;transform:translateY(0)}.fe-gal__meta-line{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-gal__meta-line--path{color:var(--fe-text-muted);font-style:italic}.fe-gal__label{padding:7px 9px;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.fe-gal__empty{grid-column:1 / -1;padding:40px 20px;text-align:center;color:var(--fe-text-muted)}.fe--narrow .fe-gal{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}.fe--density-compact .fe-gal{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:calc(var(--fe-gap) * .6)}.fe--density-compact .fe-gal__label{padding:5px 7px;font-size:12px}@media (prefers-reduced-motion: reduce){.fe-gal__card,.fe-gal__meta{transition:none!important;transform:none}}.fe-inspector__countbadge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-left:6px;border-radius:8px;font-size:10px;font-weight:600;letter-spacing:0;background:var(--fe-bg-hover);color:var(--fe-text);vertical-align:middle}.fe-inspector__comments{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:8px}.fe-inspector__comment{border:1px solid var(--fe-border);border-radius:8px;padding:6px 8px;background:var(--fe-bg)}.fe-inspector__comment-top{display:flex;align-items:baseline;gap:6px;min-width:0}.fe-inspector__comment-author{font-size:12px;font-weight:600;color:var(--fe-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fe-inspector__comment-time{font-size:11px;color:var(--fe-text-muted);flex:1 1 auto;white-space:nowrap}.fe-inspector__comment-del{border:none;background:none;color:var(--fe-text-muted);font-size:14px;line-height:1;cursor:pointer;padding:0 4px;border-radius:4px;flex:0 0 auto}.fe-inspector__comment-del:hover{background:var(--fe-bg-hover);color:var(--fe-danger)}.fe-inspector__comment-del:disabled{opacity:.5;cursor:default}.fe-inspector__comment-body{margin:4px 0 0;font-size:12px;line-height:1.45;color:var(--fe-text);overflow-wrap:anywhere;white-space:pre-wrap}.fe-inspector__comment-form{display:flex;gap:6px;align-items:center}.fe-inspector__comment-input{flex:1 1 auto;min-width:0;border:1px solid var(--fe-border);border-radius:8px;background:var(--fe-bg);color:var(--fe-text);font:inherit;font-size:12px;padding:6px 8px}.fe-inspector__comment-input:focus{outline:none;border-color:var(--fe-primary)}.fe-inspector__comment-input:disabled{opacity:.6}.fe-e2e-strip{display:flex;align-items:center;gap:8px;padding:4px 12px;font-size:12.5px;color:var(--fe-text-muted);border-bottom:1px solid var(--fe-border);background:var(--fe-bg-elev)}.fe-e2e-strip__icon{font-size:13px;line-height:1}.fe-e2e-strip__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fe-e2e-strip__btn{padding:2px 10px;font-size:12px}.fe-e2e-lock__form{display:flex;gap:8px;align-items:stretch;margin-top:12px;width:min(340px,100%)}.fe-e2e-lock__input{flex:1;min-width:0}.fe-e2e-form{display:flex;flex-direction:column;gap:10px}.fe-e2e-warn{border:1px solid var(--fe-danger);border-radius:var(--fe-radius-sm);padding:8px 10px;font-size:12.5px;color:var(--fe-text);background:color-mix(in srgb,var(--fe-danger) 8%,transparent)}.fe-e2e-warn strong{display:block;color:var(--fe-danger);margin-bottom:2px}.fe-e2e-warn p{margin:0;color:var(--fe-text-muted)}.fe-e2e-ack{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--fe-text);cursor:pointer}.fe-e2e-ack input{margin-top:2px;accent-color:var(--fe-primary)}.fe-e2e-optlink{margin-top:10px;padding:0;border:none;background:none;font:inherit;font-size:12.5px;color:var(--fe-primary);cursor:pointer;text-align:left}.fe-e2e-optlink:hover{text-decoration:underline}.fe:not(.fe--narrow) .fe-toolbar{flex-wrap:nowrap}.fe:not(.fe--narrow) .fe-toolbar__primary{flex:1 1 auto;min-width:0;flex-wrap:nowrap;overflow:hidden;position:relative}.fe-toolbar__measure{position:absolute;visibility:hidden;pointer-events:none;height:0;overflow:hidden;display:flex;gap:8px;white-space:nowrap}.fe-toolbar__measure .fe-btn{flex:none}.fe-thememode{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.fe-thememode__label{font-size:13px;font-weight:600;color:var(--fe-text-muted)}.fe-thememode__seg{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--fe-border);border-radius:var(--fe-radius-lg);background:var(--fe-bg-elev)}.fe-thememode__opt{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:0;border-radius:calc(var(--fe-radius-lg) - 4px);background:transparent;color:var(--fe-text-muted);font:inherit;font-size:13px;cursor:pointer;transition:background .14s ease,color .14s ease}.fe-thememode__opt:hover{background:var(--fe-bg-hover);color:var(--fe-text)}.fe-thememode__opt.is-active{background:var(--fe-bg);color:var(--fe-text);box-shadow:var(--fe-shadow-sm)}.fe-thememode__opt .fe-ficon{width:15px;height:15px;flex:none}@media (max-width: 420px){.fe-thememode__seg{flex:1 1 100%}.fe-thememode__opt{flex:1;justify-content:center}}.fe-cfield{display:flex;flex-direction:column;gap:14px}.fe-cfield__empty{margin:0;color:var(--fe-text-muted);font-size:13px}.fe-cfield__row{display:flex;flex-direction:column;gap:5px}.fe-cfield__label{font-size:13px;font-weight:600;color:var(--fe-text)}.fe-cfield__req{color:var(--fe-danger);margin-left:3px}.fe-cfield__input{font:inherit;font-size:13.5px;padding:8px 10px;border-radius:var(--fe-radius);border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);width:100%;min-width:0;box-sizing:border-box}.fe-cfield__input:focus{outline:2px solid var(--fe-primary);outline-offset:-1px}.fe-cfield__input--mono{font-family:var(--fe-font-mono);font-size:12.5px}.fe-cfield__input--area{resize:vertical}.fe-cfield__row.is-invalid .fe-cfield__input{border-color:var(--fe-danger)}.fe-cfield__secret{display:flex;gap:6px;align-items:stretch}.fe-cfield__eye{flex:0 0 auto;border:1px solid var(--fe-border-strong);background:var(--fe-bg-elev);color:var(--fe-text);border-radius:var(--fe-radius);padding:0 10px;cursor:pointer;font-size:14px}.fe-cfield__check{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--fe-text);cursor:pointer}.fe-cfield__help{margin:0;font-size:12px;color:var(--fe-text-muted);line-height:1.45}.fe-cfield__error{margin:0;font-size:12px;color:var(--fe-danger)}.fe-cfield__advtoggle{border:0;background:none;color:var(--fe-text-muted);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;padding:2px 0}.fe-cfield__advtoggle:hover{color:var(--fe-text)}.fe-cfield__advbody{display:flex;flex-direction:column;gap:14px;margin-top:12px}.fe-guide{display:flex;flex-direction:column;gap:16px}.fe-guide__summary{margin:0;color:var(--fe-text-muted);font-size:13.5px;line-height:1.55}.fe-guide__facts{display:flex;flex-direction:column;gap:10px;border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);padding:12px 14px}.fe-guide__fact{display:grid;grid-template-columns:minmax(120px,180px) 1fr;gap:4px 14px;align-items:baseline}.fe-guide__factlabel{font-size:12.5px;font-weight:600;color:var(--fe-text-muted)}.fe-guide__factvalue{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.fe-guide__factvalue code{font-family:var(--fe-font-mono);font-size:12.5px;color:var(--fe-text);background:var(--fe-bg);border:1px solid var(--fe-border);border-radius:var(--fe-radius-sm);padding:2px 6px;overflow-wrap:anywhere}.fe-guide__ph{color:var(--fe-text-muted)!important;font-style:italic}.fe-guide__facthint{grid-column:2;font-size:12px;color:var(--fe-text-muted)}.fe-guide__tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--fe-border);padding-bottom:2px}.fe-guide__tab{font:inherit;font-size:13px;border:0;background:none;color:var(--fe-text-muted);padding:6px 10px;border-radius:var(--fe-radius-sm) var(--fe-radius-sm) 0 0;cursor:pointer;border-bottom:2px solid transparent}.fe-guide__tab:hover{color:var(--fe-text);background:var(--fe-bg-hover)}.fe-guide__tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary);font-weight:600}.fe-guide__body{display:flex;flex-direction:column;gap:12px}.fe-guide__steps{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:13.5px;line-height:1.55;color:var(--fe-text)}.fe-guide__codewrap{border:1px solid var(--fe-border);border-radius:var(--fe-radius);overflow:hidden;background:var(--fe-bg-elev)}.fe-guide__codehead{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px;border-bottom:1px solid var(--fe-border)}.fe-guide__caption{font-size:12px;color:var(--fe-text-muted);font-family:var(--fe-font-mono);overflow-wrap:anywhere}.fe-guide__code{margin:0;padding:10px 12px;overflow-x:auto;font-family:var(--fe-font-mono);font-size:12.5px;line-height:1.6;color:var(--fe-text);white-space:pre}.fe-guide__copy{font:inherit;font-size:12px;border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);border-radius:var(--fe-radius-sm);padding:3px 9px;cursor:pointer;flex:0 0 auto}.fe-guide__copy:hover{border-color:var(--fe-primary);color:var(--fe-primary)}.fe-guide__note,.fe-guide__warn,.fe-guide__text{margin:0;font-size:12.5px;line-height:1.55}.fe-guide__text{color:var(--fe-text)}.fe-guide__note{color:var(--fe-text-muted)}.fe-guide__warn{color:var(--fe-danger)}.fe-guide__notes{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--fe-border);padding-top:12px}.fe-guide__notestitle{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--fe-text-muted)}.fe-s3keys{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--fe-border);border-radius:10px;background:var(--fe-bg-elev)}.fe-s3keys__title{margin:0;font-size:14px;font-weight:600}.fe-s3keys__lead,.fe-s3keys__hint,.fe-s3keys__muted{margin:0;font-size:12px;color:var(--fe-text-muted)}.fe-s3keys__warn{margin:0;font-size:12px;color:var(--fe-danger)}.fe-s3keys__form{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:8px;align-items:center}@media (max-width: 640px){.fe-s3keys__form{grid-template-columns:1fr}}.fe-s3keys__btn{padding:7px 12px;border-radius:8px;border:1px solid transparent;background:var(--fe-primary);color:#fff;font-size:13px;cursor:pointer}.fe-s3keys__btn:disabled{opacity:.55;cursor:default}.fe-s3keys__secret{display:flex;flex-direction:column;gap:6px;padding:10px;border-radius:8px;border:1px solid var(--fe-primary);background:var(--fe-bg-selected)}.fe-s3keys__once{margin:0;font-size:12px;font-weight:600}.fe-s3keys__pair{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}.fe-s3keys__pair code{flex:1;overflow-wrap:anywhere;font-family:var(--fe-font-mono)}.fe-s3keys__k{min-width:96px;color:var(--fe-text-muted)}.fe-s3keys__copy,.fe-s3keys__dismiss,.fe-s3keys__link{background:none;border:none;padding:0 4px;color:var(--fe-primary);font-size:12px;cursor:pointer}.fe-s3keys__link.is-danger{color:var(--fe-danger)}.fe-s3keys__dismiss{align-self:flex-start}.fe-s3keys__table{width:100%;border-collapse:collapse;font-size:12px}.fe-s3keys__table th{text-align:left;font-weight:500;color:var(--fe-text-muted);padding:4px 6px}.fe-s3keys__table td{padding:5px 6px;border-top:1px solid var(--fe-border);overflow-wrap:anywhere}.fe-s3keys__table tr.is-off{opacity:.55}.fe-s3keys__actions{white-space:nowrap;text-align:right}.fe-sshkeys__form{display:flex;flex-direction:column;gap:8px}.fe-sshkeys__paste{width:100%;font-family:var(--fe-font-mono);font-size:12px;resize:vertical;overflow-wrap:anywhere}.fe-sshkeys__row{display:flex;gap:8px;align-items:center}.fe-sshkeys__row .fe-cfield__input{flex:1}.fe-nfs__form{grid-template-columns:1.2fr 1fr 1fr 1fr auto auto}@media (max-width: 900px){.fe-nfs__form{grid-template-columns:1fr}}.fe-nfs__ro{display:inline-flex;align-items:center;gap:6px;font-size:12px;white-space:nowrap}.fe-conn{display:flex;flex-direction:column;gap:14px;font-family:var(--fe-font);font-size:14px;color:var(--fe-text);background:transparent;min-width:0}.fe-conn.fe--theme-light{--fe-bg: #ffffff;--fe-bg-elev: #f7f8fa;--fe-bg-hover: #edf0f5;--fe-border: #e2e6ed;--fe-border-strong: #c7ced9;--fe-text: #1a1e27;--fe-text-muted: #5a6475;--fe-primary: #2f6fe0;--fe-danger: #dc2626}.fe-conn__head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.fe-conn h2,.fe-conn h3,.fe-conn h4{text-transform:none;letter-spacing:normal}.fe-conn__title{margin:0;font-size:17px;font-weight:650}.fe-conn__sub{margin:3px 0 0;color:var(--fe-text-muted);font-size:13px;overflow-wrap:anywhere}.fe-conn__tabs{display:flex;gap:4px;border-bottom:1px solid var(--fe-border)}.fe-conn__tab{font:inherit;font-size:13.5px;border:0;background:none;color:var(--fe-text-muted);padding:7px 12px;cursor:pointer;border-bottom:2px solid transparent}.fe-conn__tab:hover{color:var(--fe-text)}.fe-conn__tab.is-active{color:var(--fe-primary);border-bottom-color:var(--fe-primary);font-weight:600}.fe-conn__body{display:flex;flex-direction:column;gap:12px;min-width:0}.fe-conn__card{border:1px solid var(--fe-border);border-radius:var(--fe-radius);background:var(--fe-bg-elev);padding:12px 14px}.fe-conn__card--notice{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.fe-conn__form{display:flex;flex-direction:column;gap:14px}.fe-conn__formtitle{margin:0;font-size:14px;font-weight:650}.fe-conn__list{display:flex;flex-direction:column;gap:8px}.fe-conn__listhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.fe-conn__rowmain{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.fe-conn__rowtext{min-width:0;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.fe-conn__rowbtns{display:flex;gap:6px;flex:0 0 auto}.fe-conn__name{font-size:14px}.fe-conn__summary{flex-basis:100%;font-family:var(--fe-font-mono);font-size:12px;overflow-wrap:anywhere}.fe-conn__badge{font-size:11px;text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--fe-border-strong);border-radius:999px;padding:1px 8px;color:var(--fe-text-muted)}.fe-conn__badge--warn{color:var(--fe-danger);border-color:var(--fe-danger)}.fe-conn__muted{color:var(--fe-text-muted);font-size:12.5px;margin:0;line-height:1.5}.fe-conn__empty{border:1px dashed var(--fe-border-strong);border-radius:var(--fe-radius);padding:16px;color:var(--fe-text-muted);font-size:13px;margin:0}.fe-conn__error{margin:0;color:var(--fe-danger);font-size:13px;overflow-wrap:anywhere}.fe-conn__testresult{margin:0;font-size:13px;overflow-wrap:anywhere}.fe-conn__testresult.is-ok{color:#16a34a}.fe-conn__testresult.is-bad{color:var(--fe-danger)}.fe-conn__actions{display:flex;gap:8px;flex-wrap:wrap}.fe-conn__btn{font:inherit;font-size:13px;padding:6px 12px;border-radius:var(--fe-radius);border:1px solid var(--fe-border-strong);background:var(--fe-bg);color:var(--fe-text);cursor:pointer}.fe-conn__btn:hover:not(:disabled){border-color:var(--fe-primary)}.fe-conn__btn:disabled{opacity:.55;cursor:default}.fe-conn__btn--primary{background:var(--fe-primary);border-color:var(--fe-primary);color:#fff}.fe-conn__btn--danger{color:var(--fe-danger)}.fe-conn__guidebar{display:flex;gap:12px;flex-wrap:wrap}.fe-conn__pick{display:flex;flex-direction:column;gap:4px;min-width:180px}.filex-viewer-3d{width:100%;height:100%;min-height:480px;background:#1a1a1a;display:flex;align-items:center;justify-content:center}.filex-viewer-3d model-viewer{width:100%;height:100%;min-height:480px;background:#1a1a1a;display:block}.filex-viewer-fallback{text-align:center;color:#c8cdd6;padding:32px;max-width:480px}.filex-viewer-epub__nav{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:8px;padding:4px 8px;background:var(--fe-bg-elev, rgba(255, 255, 255, .9));border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filex-viewer-epub{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27);position:relative}.filex-viewer-epub__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-epub__fs{display:inline-block;min-width:40px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-epub__main{flex:1;min-height:0;display:flex}.filex-viewer-epub__rendition{flex:1;min-height:0}.filex-viewer-epub__toc{width:260px;border-right:1px solid var(--fe-border, #e2e6ed);overflow-y:auto;padding:12px 0;background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-epub__toc ul{list-style:none;margin:0;padding:0}.filex-viewer-epub__toc-link{display:block;width:100%;text-align:left;background:transparent;border:0;padding:6px 14px;font:inherit;color:inherit;cursor:pointer}.filex-viewer-epub__toc-link:hover{background:var(--fe-bg-hover, #edf0f5)}.filex-viewer-epub__toc-link.is-child{padding-left:28px;color:var(--fe-text-muted, #5a6475);font-size:12px}.filex-viewer-epub__loading{position:absolute;inset:auto 0 0 0;text-align:center;padding:6px;background:#0000000d;font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-btn:disabled{opacity:.5;cursor:not-allowed}.filex-viewer-mermaid{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-mermaid__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-mermaid__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-mermaid__pane{flex:1;overflow:hidden;position:relative;cursor:grab;background:var(--fe-bg-elev, #f7f8fa);touch-action:none}.filex-viewer-mermaid__pane:active{cursor:grabbing}.filex-viewer-mermaid__surface{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transform-origin:center center;transition:transform .05s linear;-webkit-user-select:none;user-select:none}.filex-viewer-mermaid__surface svg{max-width:90%;max-height:90%}.filex-viewer-fallback{text-align:center;padding:32px;color:var(--fe-text-muted, #5a6475);width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.filex-viewer-drawio{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-drawio__bar{display:flex;align-items:center;gap:12px;padding:6px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-drawio__status[data-state=error]{color:var(--fe-danger, #dc2626)}.filex-viewer-drawio__status[data-state=saved]{color:#059669}.filex-viewer-drawio__readonly{font-style:italic;margin-left:auto}.filex-viewer-drawio__frame{flex:1;width:100%;border:0;background:#fafafa;min-height:0}.filex-viewer-tiff__pager{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:4px 8px;background:var(--fe-bg-elev, rgba(255, 255, 255, .9));border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filex-viewer-tiff__pages{font-size:12px;font-variant-numeric:tabular-nums}.filex-viewer-tiff{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-tiff__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-tiff__pages{min-width:110px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-tiff__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-tiff__pane{flex:1;overflow:auto;padding:16px;background:#2a2d33;display:flex;align-items:flex-start;justify-content:flex-start}.filex-viewer-tiff__pane canvas{background:#fff;box-shadow:0 4px 16px #0000004d}.filex-viewer-psd{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff)}.filex-viewer-psd__bar{display:flex;align-items:center;gap:6px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:13px}.filex-viewer-psd__dim{font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-psd__zoom{min-width:50px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-psd__main{flex:1;display:flex;min-height:0}.filex-viewer-psd__layers{width:240px;border-right:1px solid var(--fe-border, #e2e6ed);overflow-y:auto;padding:8px 0;background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-psd__layers ul{list-style:none;margin:0;padding:0}.filex-viewer-psd__layers li{display:flex;align-items:center;gap:6px;padding:4px 12px;font-size:12px}.filex-viewer-psd__layer-vis{width:14px;text-align:center;color:var(--fe-text-muted, #5a6475)}.filex-viewer-psd__layer-vis[data-hidden="1"]{color:var(--fe-border-strong, #c7ced9)}.filex-viewer-psd__layer-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filex-viewer-psd__pane{flex:1;overflow:auto;padding:16px;background:#2a2d33;display:flex;align-items:flex-start;justify-content:flex-start}.filex-viewer-psd__pane canvas{background:#fff repeating-conic-gradient(#e0e0e0 0% 25%,transparent 0% 50%) 50% / 16px 16px;box-shadow:0 4px 16px #0000004d}.filex-viewer-fallback{text-align:center;padding:32px;color:#c8cdd6;margin:auto}.filex-viewer-btn.is-active{background:var(--fe-bg-selected, #dfe8ff);border-color:var(--fe-primary, #3b82f6)}.filex-viewer-ipynb{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-ipynb__bar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-ipynb__lang{font-family:var(--fe-font-mono, monospace);text-transform:uppercase;letter-spacing:.04em}.filex-viewer-ipynb__pane{flex:1;overflow:auto;padding:16px 24px}.filex-viewer-ipynb__cell{border:1px solid var(--fe-border, #e2e6ed);border-radius:6px;margin-bottom:16px;overflow:hidden}.filex-viewer-ipynb__cell[data-type=code]{background:var(--fe-bg-elev, #f7f8fa)}.filex-viewer-ipynb__exec{padding:4px 12px;font-family:var(--fe-font-mono, monospace);font-size:11px;color:var(--fe-text-muted, #5a6475);background:#0000000a}.filex-viewer-ipynb__src{margin:0;padding:12px;font-family:var(--fe-font-mono, monospace);font-size:12px;line-height:1.5;white-space:pre;overflow-x:auto}.filex-viewer-ipynb__outputs{border-top:1px dashed var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);padding:8px 12px}.filex-viewer-ipynb__out{margin:0;padding:4px 0;font-family:var(--fe-font-mono, monospace);font-size:12px;white-space:pre-wrap;word-wrap:break-word}.filex-viewer-ipynb__out[data-type=error]{color:var(--fe-danger, #dc2626)}.filex-viewer-ipynb__img{display:block;max-width:100%;height:auto;margin:8px 0}.filex-viewer-ipynb__html{font-size:13px}.filex-viewer-ipynb__md{padding:12px 16px;font-size:14px;line-height:1.6}.filex-viewer-ipynb__md-raw{padding:12px;margin:0;font-family:var(--fe-font-mono, monospace);font-size:12px;white-space:pre-wrap}.filex-viewer-csv{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-csv__bar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--fe-bg-elev, #f7f8fa);border-bottom:1px solid var(--fe-border, #e2e6ed);font-size:12px}.filex-viewer-csv__check{display:flex;align-items:center;gap:4px;font-size:12px}.filex-viewer-csv__select,.filex-viewer-csv__filter{border:1px solid var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);color:inherit;padding:4px 8px;border-radius:4px;font:inherit;font-size:12px}.filex-viewer-csv__filter{flex:0 1 240px}.filex-viewer-spacer{flex:1}.filex-viewer-csv__count{font-size:11px;color:var(--fe-text-muted, #5a6475);font-variant-numeric:tabular-nums}.filex-viewer-csv__pane{flex:1;overflow:auto}.filex-viewer-csv__table{border-collapse:collapse;width:max-content;min-width:100%;font-size:12px;font-family:var(--fe-font-mono, monospace)}.filex-viewer-csv__table th,.filex-viewer-csv__table td{padding:4px 10px;border:1px solid var(--fe-border, #e2e6ed);white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis}.filex-viewer-csv__table th{background:var(--fe-bg-elev, #f7f8fa);position:sticky;top:0;font-weight:600;text-align:left}.filex-viewer-csv__table tbody tr:nth-child(2n){background:var(--fe-bg-hover, rgba(0, 0, 0, .02))}.filex-viewer-csv__rownum{color:var(--fe-text-muted, #5a6475);text-align:right;background:var(--fe-bg-elev, #f7f8fa);font-variant-numeric:tabular-nums;position:sticky;left:0}.filex-viewer-csv__pager{display:flex;justify-content:center;align-items:center;gap:8px;padding:6px;background:var(--fe-bg-elev, #f7f8fa);border-top:1px solid var(--fe-border, #e2e6ed);font-size:12px}.filex-viewer-csv__pageno{font-variant-numeric:tabular-nums;font-size:12px}.filex-viewer-btn{border:1px solid var(--fe-border, #e2e6ed);background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27);padding:4px 10px;border-radius:4px;cursor:pointer;font:inherit;font-size:12px}.filex-viewer-btn:hover:not(:disabled){background:var(--fe-bg-hover, #edf0f5)}.filex-viewer-btn:disabled{opacity:.4;cursor:not-allowed}.filex-viewer-archive{display:flex;flex-direction:column;width:100%;height:100%;min-height:70vh;background:var(--fe-bg, #fff);color:var(--fe-text, #1a1e27)}.filex-viewer-archive__pane{flex:1;overflow:auto;padding:16px 20px}.filex-viewer-archive__summary{font-size:12px;color:var(--fe-text-muted, #5a6475);margin-bottom:12px;font-variant-numeric:tabular-nums}.filex-viewer-archive__table{width:100%;border-collapse:collapse;font-size:13px;font-family:var(--fe-font-mono, monospace)}.filex-viewer-archive__table th,.filex-viewer-archive__table td{padding:6px 12px;border-bottom:1px solid var(--fe-border, #e2e6ed);text-align:left}.filex-viewer-archive__table th{background:var(--fe-bg-elev, #f7f8fa);font-weight:600;position:sticky;top:0}.filex-viewer-archive__size{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--fe-text-muted, #5a6475)}.filex-viewer-archive__icon{margin-right:6px}.filex-viewer-archive__table tr[data-dir="1"]{color:var(--fe-text-muted, #5a6475)}.filex-viewer-fallback{text-align:center;padding:32px;color:var(--fe-text-muted, #5a6475)}.filex-viewer-fallback__icon{font-size:48px;display:block;margin-bottom:12px}';let Zb=!1;function Xb(){if(Zb||typeof document>"u")return;const e=document.createElement("style");e.setAttribute("data-filex",""),e.textContent=PP,document.head.appendChild(e),Zb=!0}function Mc(e,t){const n={};return e.apiBase&&(n.apiBase=e.apiBase),e.endpoint&&(n.endpoint=e.endpoint),(e.locale==="tr"||e.locale==="en")&&(n.locale=e.locale),(e.theme==="light"||e.theme==="dark"||e.theme==="auto")&&(n.theme=e.theme),e.trashVisible!==void 0&&(n.trashVisible=e.trashVisible===!0||e.trashVisible==="true"||e.trashVisible===""),{...n,...t??{}}}const Jb=Hg({inheritAttrs:!1,props:{config:{type:Object,default:null},apiBase:{type:String,default:""},endpoint:{type:String,default:""},locale:{type:String,default:""},theme:{type:String,default:""},trashVisible:{type:[Boolean,String],default:void 0}},emits:["share-created","file-opened","error","upload-progress","selection-change"],setup(e,{emit:t}){Xb();const n=X(Mc({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme,trashVisible:e.trashVisible},e.config));return Tt(()=>[e.config,e.apiBase,e.endpoint,e.locale,e.theme,e.trashVisible],()=>{n.value=Mc({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme,trashVisible:e.trashVisible},e.config)},{deep:!0}),()=>df(jz,{config:n.value,onShareCreated:r=>t("share-created",r),onFileOpened:r=>t("file-opened",r),onError:r=>t("error",r),onUploadProgress:r=>t("upload-progress",r),onSelectionChange:r=>t("selection-change",r)})}},{shadowRoot:!1}),Qb=Hg({inheritAttrs:!1,props:{config:{type:Object,default:null},apiBase:{type:String,default:""},endpoint:{type:String,default:""},locale:{type:String,default:""},theme:{type:String,default:""},initialTab:{type:String,default:""},closable:{type:[Boolean,String],default:void 0}},emits:["changed","close","error"],setup(e,{emit:t}){Xb();const n=()=>({apiBase:e.apiBase,endpoint:e.endpoint,locale:e.locale,theme:e.theme}),r=X(Mc(n(),e.config));return Tt(()=>[e.config,e.apiBase,e.endpoint,e.locale,e.theme],()=>{r.value=Mc(n(),e.config)},{deep:!0}),()=>df(LP,{config:r.value,initialTab:e.initialTab==="connect"?"connect":"storages",closable:e.closable===!0||e.closable==="true"||e.closable==="",onChanged:()=>t("changed"),onClose:()=>t("close"),onError:a=>t("error",a)})}},{shadowRoot:!1}),BP=Jb,$P=Qb;typeof customElements<"u"&&!customElements.get("filex-explorer")&&customElements.define("filex-explorer",Jb),typeof customElements<"u"&&!customElements.get("filex-connections")&&customElements.define("filex-connections",Qb);var UP=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function qf(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function e2(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach(t=>{const n=e[t],r=typeof n;(r==="object"||r==="function")&&!Object.isFrozen(n)&&e2(n)}),e}class t2{constructor(t){t.data===void 0&&(t.data={}),this.data=t.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n2(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function ji(e,...t){const n=Object.create(null);for(const r in e)n[r]=e[r];return t.forEach(function(r){for(const a in r)n[a]=r[a]}),n}const HP="</span>",r2=e=>!!e.scope,GP=(e,{prefix:t})=>{if(e.startsWith("language:"))return e.replace("language:","language-");if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map((r,a)=>`${r}${"_".repeat(a+1)}`)].join(" ")}return`${t}${e}`};class qP{constructor(t,n){this.buffer="",this.classPrefix=n.classPrefix,t.walk(this)}addText(t){this.buffer+=n2(t)}openNode(t){if(!r2(t))return;const n=GP(t.scope,{prefix:this.classPrefix});this.span(n)}closeNode(t){r2(t)&&(this.buffer+=HP)}value(){return this.buffer}span(t){this.buffer+=`<span class="${t}">`}}const a2=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class Kf{constructor(){this.rootNode=a2(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(t){this.top.children.push(t)}openNode(t){const n=a2({scope:t});this.add(n),this.stack.push(n)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(t){return this.constructor._walk(t,this.rootNode)}static _walk(t,n){return typeof n=="string"?t.addText(n):n.children&&(t.openNode(n),n.children.forEach(r=>this._walk(t,r)),t.closeNode(n)),t}static _collapse(t){typeof t!="string"&&t.children&&(t.children.every(n=>typeof n=="string")?t.children=[t.children.join("")]:t.children.forEach(n=>{Kf._collapse(n)}))}}class KP extends Kf{constructor(t){super(),this.options=t}addText(t){t!==""&&this.add(t)}startScope(t){this.openNode(t)}endScope(){this.closeNode()}__addSublanguage(t,n){const r=t.root;n&&(r.scope=`language:${n}`),this.add(r)}toHTML(){return new qP(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function Bl(e){return e?typeof e=="string"?e:e.source:null}function i2(e){return Oo("(?=",e,")")}function jP(e){return Oo("(?:",e,")*")}function VP(e){return Oo("(?:",e,")?")}function Oo(...e){return e.map(n=>Bl(n)).join("")}function WP(e){const t=e[e.length-1];return typeof t=="object"&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function jf(...e){return"("+(WP(e).capture?"":"?:")+e.map(r=>Bl(r)).join("|")+")"}function o2(e){return new RegExp(e.toString()+"|").exec("").length-1}function YP(e,t){const n=e&&e.exec(t);return n&&n.index===0}const ZP=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function Vf(e,{joinWith:t}){let n=0;return e.map(r=>{n+=1;const a=n;let i=Bl(r),o="";for(;i.length>0;){const s=ZP.exec(i);if(!s){o+=i;break}o+=i.substring(0,s.index),i=i.substring(s.index+s[0].length),s[0][0]==="\\"&&s[1]?o+="\\"+String(Number(s[1])+a):(o+=s[0],s[0]==="("&&n++)}return o}).map(r=>`(${r})`).join(t)}const XP=/\b\B/,s2="[a-zA-Z]\\w*",Wf="[a-zA-Z_]\\w*",l2="\\b\\d+(\\.\\d+)?",u2="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",c2="\\b(0b[01]+)",JP="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",QP=(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=Oo(t,/.*\b/,e.binary,/\b.*/)),ji({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(n,r)=>{n.index!==0&&r.ignoreMatch()}},e)},$l={begin:"\\\\[\\s\\S]",relevance:0},eB={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[$l]},tB={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[$l]},nB={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},Oc=function(e,t,n={}){const r=ji({scope:"comment",begin:e,end:t,contains:[]},n);r.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const a=jf("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return r.contains.push({begin:Oo(/[ ]+/,"(",a,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),r},rB=Oc("//","$"),aB=Oc("/\\*","\\*/"),iB=Oc("#","$"),oB={scope:"number",begin:l2,relevance:0},sB={scope:"number",begin:u2,relevance:0},lB={scope:"number",begin:c2,relevance:0},uB={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[$l,{begin:/\[/,end:/\]/,relevance:0,contains:[$l]}]},cB={scope:"title",begin:s2,relevance:0},dB={scope:"title",begin:Wf,relevance:0},fB={begin:"\\.\\s*"+Wf,relevance:0};var Ic=Object.freeze({__proto__:null,APOS_STRING_MODE:eB,BACKSLASH_ESCAPE:$l,BINARY_NUMBER_MODE:lB,BINARY_NUMBER_RE:c2,COMMENT:Oc,C_BLOCK_COMMENT_MODE:aB,C_LINE_COMMENT_MODE:rB,C_NUMBER_MODE:sB,C_NUMBER_RE:u2,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(t,n)=>{n.data._beginMatch=t[1]},"on:end":(t,n)=>{n.data._beginMatch!==t[1]&&n.ignoreMatch()}})},HASH_COMMENT_MODE:iB,IDENT_RE:s2,MATCH_NOTHING_RE:XP,METHOD_GUARD:fB,NUMBER_MODE:oB,NUMBER_RE:l2,PHRASAL_WORDS_MODE:nB,QUOTE_STRING_MODE:tB,REGEXP_MODE:uB,RE_STARTERS_RE:JP,SHEBANG:QP,TITLE_MODE:cB,UNDERSCORE_IDENT_RE:Wf,UNDERSCORE_TITLE_MODE:dB});function pB(e,t){e.input[e.index-1]==="."&&t.ignoreMatch()}function hB(e,t){e.className!==void 0&&(e.scope=e.className,delete e.className)}function mB(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=pB,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,e.relevance===void 0&&(e.relevance=0))}function vB(e,t){Array.isArray(e.illegal)&&(e.illegal=jf(...e.illegal))}function gB(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function bB(e,t){e.relevance===void 0&&(e.relevance=1)}const _B=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach(r=>{delete e[r]}),e.keywords=n.keywords,e.begin=Oo(n.beforeMatch,i2(n.begin)),e.starts={relevance:0,contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch},yB=["of","and","for","in","not","or","if","then","parent","list","value"],xB="keyword";function d2(e,t,n=xB){const r=Object.create(null);return typeof e=="string"?a(n,e.split(" ")):Array.isArray(e)?a(n,e):Object.keys(e).forEach(function(i){Object.assign(r,d2(e[i],t,i))}),r;function a(i,o){t&&(o=o.map(s=>s.toLowerCase())),o.forEach(function(s){const l=s.split("|");r[l[0]]=[i,kB(l[0],l[1])]})}}function kB(e,t){return t?Number(t):wB(e)?0:1}function wB(e){return yB.includes(e.toLowerCase())}const f2={},Io=e=>{console.error(e)},p2=(e,...t)=>{console.log(`WARN: ${e}`,...t)},hs=(e,t)=>{f2[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),f2[`${e}/${t}`]=!0)},Rc=new Error;function h2(e,t,{key:n}){let r=0;const a=e[n],i={},o={};for(let s=1;s<=t.length;s++)o[s+r]=a[s],i[s+r]=!0,r+=o2(t[s-1]);e[n]=o,e[n]._emit=i,e[n]._multi=!0}function SB(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw Io("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Rc;if(typeof e.beginScope!="object"||e.beginScope===null)throw Io("beginScope must be object"),Rc;h2(e,e.begin,{key:"beginScope"}),e.begin=Vf(e.begin,{joinWith:""})}}function EB(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw Io("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Rc;if(typeof e.endScope!="object"||e.endScope===null)throw Io("endScope must be object"),Rc;h2(e,e.end,{key:"endScope"}),e.end=Vf(e.end,{joinWith:""})}}function CB(e){e.scope&&typeof e.scope=="object"&&e.scope!==null&&(e.beginScope=e.scope,delete e.scope)}function AB(e){CB(e),typeof e.beginScope=="string"&&(e.beginScope={_wrap:e.beginScope}),typeof e.endScope=="string"&&(e.endScope={_wrap:e.endScope}),SB(e),EB(e)}function TB(e){function t(o,s){return new RegExp(Bl(o),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(s?"g":""))}class n{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,l){l.position=this.position++,this.matchIndexes[this.matchAt]=l,this.regexes.push([l,s]),this.matchAt+=o2(s)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const s=this.regexes.map(l=>l[1]);this.matcherRe=t(Vf(s,{joinWith:"|"}),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const l=this.matcherRe.exec(s);if(!l)return null;const u=l.findIndex((d,f)=>f>0&&d!==void 0),c=this.matchIndexes[u];return l.splice(0,u),Object.assign(l,c)}}class r{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const l=new n;return this.rules.slice(s).forEach(([u,c])=>l.addRule(u,c)),l.compile(),this.multiRegexes[s]=l,l}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(s,l){this.rules.push([s,l]),l.type==="begin"&&this.count++}exec(s){const l=this.getMatcher(this.regexIndex);l.lastIndex=this.lastIndex;let u=l.exec(s);if(this.resumingScanAtSamePosition()&&!(u&&u.index===this.lastIndex)){const c=this.getMatcher(0);c.lastIndex=this.lastIndex+1,u=c.exec(s)}return u&&(this.regexIndex+=u.position+1,this.regexIndex===this.count&&this.considerAll()),u}}function a(o){const s=new r;return o.contains.forEach(l=>s.addRule(l.begin,{rule:l,type:"begin"})),o.terminatorEnd&&s.addRule(o.terminatorEnd,{type:"end"}),o.illegal&&s.addRule(o.illegal,{type:"illegal"}),s}function i(o,s){const l=o;if(o.isCompiled)return l;[hB,gB,AB,_B].forEach(c=>c(o,s)),e.compilerExtensions.forEach(c=>c(o,s)),o.__beforeBegin=null,[mB,vB,bB].forEach(c=>c(o,s)),o.isCompiled=!0;let u=null;return typeof o.keywords=="object"&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),u=o.keywords.$pattern,delete o.keywords.$pattern),u=u||/\w+/,o.keywords&&(o.keywords=d2(o.keywords,e.case_insensitive)),l.keywordPatternRe=t(u,!0),s&&(o.begin||(o.begin=/\B|\b/),l.beginRe=t(l.begin),!o.end&&!o.endsWithParent&&(o.end=/\B|\b/),o.end&&(l.endRe=t(l.end)),l.terminatorEnd=Bl(l.end)||"",o.endsWithParent&&s.terminatorEnd&&(l.terminatorEnd+=(o.end?"|":"")+s.terminatorEnd)),o.illegal&&(l.illegalRe=t(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map(function(c){return DB(c==="self"?o:c)})),o.contains.forEach(function(c){i(c,l)}),o.starts&&i(o.starts,s),l.matcher=a(l),l}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=ji(e.classNameAliases||{}),i(e)}function m2(e){return e?e.endsWithParent||m2(e.starts):!1}function DB(e){return e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map(function(t){return ji(e,{variants:null},t)})),e.cachedVariants?e.cachedVariants:m2(e)?ji(e,{starts:e.starts?ji(e.starts):null}):Object.isFrozen(e)?ji(e):e}var MB="11.11.1";class OB extends Error{constructor(t,n){super(t),this.name="HTMLInjectionError",this.html=n}}const Yf=n2,v2=ji,g2=Symbol("nomatch"),IB=7,b2=function(e){const t=Object.create(null),n=Object.create(null),r=[];let a=!0;const i="Could not find the language '{}', did you forget to load/include a language module?",o={disableAutodetect:!0,name:"Plain text",contains:[]};let s={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:KP};function l(U){return s.noHighlightRe.test(U)}function u(U){let Y=U.className+" ";Y+=U.parentNode?U.parentNode.className:"";const J=s.languageDetectRe.exec(Y);if(J){const H=S(J[1]);return H||(p2(i.replace("{}",J[1])),p2("Falling back to no-highlight mode for this block.",U)),H?J[1]:"no-highlight"}return Y.split(/\s+/).find(H=>l(H)||S(H))}function c(U,Y,J){let H="",G="";typeof Y=="object"?(H=U,J=Y.ignoreIllegals,G=Y.language):(hs("10.7.0","highlight(lang, code, ...args) has been deprecated."),hs("10.7.0",`Please use highlight(code, options) instead.
56
56
  https://github.com/highlightjs/highlight.js/issues/2277`),G=U,H=Y),J===void 0&&(J=!0);const R={code:H,language:G};K("before:highlight",R);const V=R.result?R.result:d(R.language,R.code,J);return V.code=R.code,K("after:highlight",V),V}function d(U,Y,J,H){const G=Object.create(null);function R(pe,Pe){return pe.keywords[Pe]}function V(){if(!ue.keywords){se.addText(le);return}let pe=0;ue.keywordPatternRe.lastIndex=0;let Pe=ue.keywordPatternRe.exec(le),je="";for(;Pe;){je+=le.substring(pe,Pe.index);const tt=Ee.case_insensitive?Pe[0].toLowerCase():Pe[0],gt=R(ue,tt);if(gt){const[ee,he]=gt;if(se.addText(je),je="",G[tt]=(G[tt]||0)+1,G[tt]<=IB&&(Me+=he),ee.startsWith("_"))je+=Pe[0];else{const ve=Ee.classNameAliases[ee]||ee;Se(Pe[0],ve)}}else je+=Pe[0];pe=ue.keywordPatternRe.lastIndex,Pe=ue.keywordPatternRe.exec(le)}je+=le.substring(pe),se.addText(je)}function W(){if(le==="")return;let pe=null;if(typeof ue.subLanguage=="string"){if(!t[ue.subLanguage]){se.addText(le);return}pe=d(ue.subLanguage,le,!0,Ae[ue.subLanguage]),Ae[ue.subLanguage]=pe._top}else pe=p(le,ue.subLanguage.length?ue.subLanguage:null);ue.relevance>0&&(Me+=pe.relevance),se.__addSublanguage(pe._emitter,pe.language)}function ge(){ue.subLanguage!=null?W():V(),le=""}function Se(pe,Pe){pe!==""&&(se.startScope(Pe),se.addText(pe),se.endScope())}function ze(pe,Pe){let je=1;const tt=Pe.length-1;for(;je<=tt;){if(!pe._emit[je]){je++;continue}const gt=Ee.classNameAliases[pe[je]]||pe[je],ee=Pe[je];gt?Se(ee,gt):(le=ee,V(),le=""),je++}}function Ue(pe,Pe){return pe.scope&&typeof pe.scope=="string"&&se.openNode(Ee.classNameAliases[pe.scope]||pe.scope),pe.beginScope&&(pe.beginScope._wrap?(Se(le,Ee.classNameAliases[pe.beginScope._wrap]||pe.beginScope._wrap),le=""):pe.beginScope._multi&&(ze(pe.beginScope,Pe),le="")),ue=Object.create(pe,{parent:{value:ue}}),ue}function me(pe,Pe,je){let tt=YP(pe.endRe,je);if(tt){if(pe["on:end"]){const gt=new t2(pe);pe["on:end"](Pe,gt),gt.isMatchIgnored&&(tt=!1)}if(tt){for(;pe.endsParent&&pe.parent;)pe=pe.parent;return pe}}if(pe.endsWithParent)return me(pe.parent,Pe,je)}function De(pe){return ue.matcher.regexIndex===0?(le+=pe[0],1):(Fe=!0,0)}function Ne(pe){const Pe=pe[0],je=pe.rule,tt=new t2(je),gt=[je.__beforeBegin,je["on:begin"]];for(const ee of gt)if(ee&&(ee(pe,tt),tt.isMatchIgnored))return De(Pe);return je.skip?le+=Pe:(je.excludeBegin&&(le+=Pe),ge(),!je.returnBegin&&!je.excludeBegin&&(le=Pe)),Ue(je,pe),je.returnBegin?0:Pe.length}function Ke(pe){const Pe=pe[0],je=Y.substring(pe.index),tt=me(ue,pe,je);if(!tt)return g2;const gt=ue;ue.endScope&&ue.endScope._wrap?(ge(),Se(Pe,ue.endScope._wrap)):ue.endScope&&ue.endScope._multi?(ge(),ze(ue.endScope,pe)):gt.skip?le+=Pe:(gt.returnEnd||gt.excludeEnd||(le+=Pe),ge(),gt.excludeEnd&&(le=Pe));do ue.scope&&se.closeNode(),!ue.skip&&!ue.subLanguage&&(Me+=ue.relevance),ue=ue.parent;while(ue!==tt.parent);return tt.starts&&Ue(tt.starts,pe),gt.returnEnd?0:Pe.length}function ne(){const pe=[];for(let Pe=ue;Pe!==Ee;Pe=Pe.parent)Pe.scope&&pe.unshift(Pe.scope);pe.forEach(Pe=>se.openNode(Pe))}let oe={};function ke(pe,Pe){const je=Pe&&Pe[0];if(le+=pe,je==null)return ge(),0;if(oe.type==="begin"&&Pe.type==="end"&&oe.index===Pe.index&&je===""){if(le+=Y.slice(Pe.index,Pe.index+1),!a){const tt=new Error(`0 width match regex (${U})`);throw tt.languageName=U,tt.badRule=oe.rule,tt}return 1}if(oe=Pe,Pe.type==="begin")return Ne(Pe);if(Pe.type==="illegal"&&!J){const tt=new Error('Illegal lexeme "'+je+'" for mode "'+(ue.scope||"<unnamed>")+'"');throw tt.mode=ue,tt}else if(Pe.type==="end"){const tt=Ke(Pe);if(tt!==g2)return tt}if(Pe.type==="illegal"&&je==="")return le+=`
57
57
  `,1;if(Re>1e5&&Re>Pe.index*3)throw new Error("potential infinite loop, way more iterations than matches");return le+=je,je.length}const Ee=S(U);if(!Ee)throw Io(i.replace("{}",U)),new Error('Unknown language: "'+U+'"');const be=TB(Ee);let ye="",ue=H||be;const Ae={},se=new s.__emitter(s);ne();let le="",Me=0,He=0,Re=0,Fe=!1;try{if(Ee.__emitTokens)Ee.__emitTokens(Y,se);else{for(ue.matcher.considerAll();;){Re++,Fe?Fe=!1:ue.matcher.considerAll(),ue.matcher.lastIndex=He;const pe=ue.matcher.exec(Y);if(!pe)break;const Pe=Y.substring(He,pe.index),je=ke(Pe,pe);He=pe.index+je}ke(Y.substring(He))}return se.finalize(),ye=se.toHTML(),{language:U,value:ye,relevance:Me,illegal:!1,_emitter:se,_top:ue}}catch(pe){if(pe.message&&pe.message.includes("Illegal"))return{language:U,value:Yf(Y),illegal:!0,relevance:0,_illegalBy:{message:pe.message,index:He,context:Y.slice(He-100,He+100),mode:pe.mode,resultSoFar:ye},_emitter:se};if(a)return{language:U,value:Yf(Y),illegal:!1,relevance:0,errorRaised:pe,_emitter:se,_top:ue};throw pe}}function f(U){const Y={value:Yf(U),illegal:!1,relevance:0,_top:o,_emitter:new s.__emitter(s)};return Y._emitter.addText(U),Y}function p(U,Y){Y=Y||s.languages||Object.keys(t);const J=f(U),H=Y.filter(S).filter(C).map(ge=>d(ge,U,!1));H.unshift(J);const G=H.sort((ge,Se)=>{if(ge.relevance!==Se.relevance)return Se.relevance-ge.relevance;if(ge.language&&Se.language){if(S(ge.language).supersetOf===Se.language)return 1;if(S(Se.language).supersetOf===ge.language)return-1}return 0}),[R,V]=G,W=R;return W.secondBest=V,W}function _(U,Y,J){const H=Y&&n[Y]||J;U.classList.add("hljs"),U.classList.add(`language-${H}`)}function g(U){let Y=null;const J=u(U);if(l(J))return;if(K("before:highlightElement",{el:U,language:J}),U.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",U);return}if(U.children.length>0&&(s.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(U)),s.throwUnescapedHTML))throw new OB("One of your code blocks includes unescaped HTML.",U.innerHTML);Y=U;const H=Y.textContent,G=J?c(H,{language:J,ignoreIllegals:!0}):p(H);U.innerHTML=G.value,U.dataset.highlighted="yes",_(U,J,G.language),U.result={language:G.language,re:G.relevance,relevance:G.relevance},G.secondBest&&(U.secondBest={language:G.secondBest.language,relevance:G.secondBest.relevance}),K("after:highlightElement",{el:U,result:G,text:H})}function y(U){s=v2(s,U)}const h=()=>{m(),hs("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function b(){m(),hs("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let v=!1;function m(){function U(){m()}if(document.readyState==="loading"){v||window.addEventListener("DOMContentLoaded",U,!1),v=!0;return}document.querySelectorAll(s.cssSelector).forEach(g)}function k(U,Y){let J=null;try{J=Y(e)}catch(H){if(Io("Language definition for '{}' could not be registered.".replace("{}",U)),a)Io(H);else throw H;J=o}J.name||(J.name=U),t[U]=J,J.rawDefinition=Y.bind(null,e),J.aliases&&x(J.aliases,{languageName:U})}function E(U){delete t[U];for(const Y of Object.keys(n))n[Y]===U&&delete n[Y]}function A(){return Object.keys(t)}function S(U){return U=(U||"").toLowerCase(),t[U]||t[n[U]]}function x(U,{languageName:Y}){typeof U=="string"&&(U=[U]),U.forEach(J=>{n[J.toLowerCase()]=Y})}function C(U){const Y=S(U);return Y&&!Y.disableAutodetect}function T(U){U["before:highlightBlock"]&&!U["before:highlightElement"]&&(U["before:highlightElement"]=Y=>{U["before:highlightBlock"](Object.assign({block:Y.el},Y))}),U["after:highlightBlock"]&&!U["after:highlightElement"]&&(U["after:highlightElement"]=Y=>{U["after:highlightBlock"](Object.assign({block:Y.el},Y))})}function $(U){T(U),r.push(U)}function P(U){const Y=r.indexOf(U);Y!==-1&&r.splice(Y,1)}function K(U,Y){const J=U;r.forEach(function(H){H[J]&&H[J](Y)})}function Q(U){return hs("10.7.0","highlightBlock will be removed entirely in v12.0"),hs("10.7.0","Please use highlightElement now."),g(U)}Object.assign(e,{highlight:c,highlightAuto:p,highlightAll:m,highlightElement:g,highlightBlock:Q,configure:y,initHighlighting:h,initHighlightingOnLoad:b,registerLanguage:k,unregisterLanguage:E,listLanguages:A,getLanguage:S,registerAliases:x,autoDetection:C,inherit:v2,addPlugin:$,removePlugin:P}),e.debugMode=function(){a=!1},e.safeMode=function(){a=!0},e.versionString=MB,e.regex={concat:Oo,lookahead:i2,either:jf,optional:VP,anyNumberOfTimes:jP};for(const U in Ic)typeof Ic[U]=="object"&&e2(Ic[U]);return Object.assign(e,Ic),e},ms=b2({});ms.newInstance=()=>b2({});var RB=ms;ms.HighlightJS=ms,ms.default=ms;var Zf,_2;function zB(){if(_2)return Zf;_2=1;function e(t){const n=t.regex,r=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a=/[\p{L}0-9._:-]+/u,i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},o={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},s=t.inherit(o,{begin:/\(/,end:/\)/}),l=t.inherit(t.APOS_STRING_MODE,{className:"string"}),u=t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),c={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:a,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[i]},{begin:/'/,end:/'/,contains:[i]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[o,u,l,s,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[o,s,u,l]}]}]},t.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},i,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[u]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[c],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[c],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(/</,n.lookahead(n.concat(r,n.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:r,relevance:0,starts:c}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(r,/>/))),contains:[{className:"name",begin:r,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}return Zf=e,Zf}var Xf,y2;function NB(){if(y2)return Xf;y2=1;function e(t){const n=t.regex,r={},a={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[r]}]};Object.assign(r,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={className:"subst",begin:/\$\(/,end:/\)/,contains:[t.BACKSLASH_ESCAPE]},o=t.inherit(t.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},l={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,r,i]};i.contains.push(l);const u={match:/\\"/},c={className:"string",begin:/'/,end:/'/},d={match:/\\'/},f={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},t.NUMBER_MODE,r]},p=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],_=t.SHEBANG({binary:`(${p.join("|")})`,relevance:10}),g={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[t.inherit(t.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},y=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],h=["true","false"],b={match:/(\/[a-z._-]+)+/},v=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],m=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],k=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],E=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:y,literal:h,built_in:[...v,...m,"set","shopt",...k,...E]},contains:[_,t.SHEBANG(),g,f,o,s,b,l,u,c,d,r]}}return Xf=e,Xf}var Jf,x2;function FB(){if(x2)return Jf;x2=1;function e(t){const n=t.regex,r=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",s="("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",l={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},f={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(c,{className:"string"}),{className:"string",begin:/<.*?>/},r,t.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:n.optional(i)+t.IDENT_RE,relevance:0},_=n.optional(i)+t.IDENT_RE+"\\s*\\(",h={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},b=[f,l,r,t.C_BLOCK_COMMENT_MODE,d,c],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:h,contains:b.concat([{begin:/\(/,end:/\)/,keywords:h,contains:b.concat(["self"]),relevance:0}]),relevance:0},m={begin:"("+s+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:h,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:h,relevance:0},{begin:_,returnBegin:!0,contains:[t.inherit(p,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:h,relevance:0,contains:[r,t.C_BLOCK_COMMENT_MODE,c,d,l,{begin:/\(/,end:/\)/,keywords:h,relevance:0,contains:["self",r,t.C_BLOCK_COMMENT_MODE,c,d,l]}]},l,r,t.C_BLOCK_COMMENT_MODE,f]};return{name:"C",aliases:["h"],keywords:h,disableAutodetect:!0,illegal:"</",contains:[].concat(v,m,b,[f,{begin:t.IDENT_RE+"::",keywords:h},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},t.TITLE_MODE]}]),exports:{preprocessor:f,strings:c,keywords:h}}}return Jf=e,Jf}var Qf,k2;function LB(){if(k2)return Qf;k2=1;function e(t){const n=t.regex,r=t.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",s="(?!struct)("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",l={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},c={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'("+"\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)"+"|.)",end:"'",illegal:"."},t.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},d={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},f={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(c,{className:"string"}),{className:"string",begin:/<.*?>/},r,t.C_BLOCK_COMMENT_MODE]},p={className:"title",begin:n.optional(i)+t.IDENT_RE,relevance:0},_=n.optional(i)+t.IDENT_RE+"\\s*\\(",g=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],h=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],b=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],k={type:y,keyword:g,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:h},E={className:"function.dispatch",relevance:0,keywords:{_hint:b},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,t.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},A=[E,f,l,r,t.C_BLOCK_COMMENT_MODE,d,c],S={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:k,contains:A.concat([{begin:/\(/,end:/\)/,keywords:k,contains:A.concat(["self"]),relevance:0}]),relevance:0},x={className:"function",begin:"("+s+"[\\*&\\s]+)+"+_,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:k,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:k,relevance:0},{begin:_,returnBegin:!0,contains:[p],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[c,d]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:[r,t.C_BLOCK_COMMENT_MODE,c,d,l,{begin:/\(/,end:/\)/,keywords:k,relevance:0,contains:["self",r,t.C_BLOCK_COMMENT_MODE,c,d,l]}]},l,r,t.C_BLOCK_COMMENT_MODE,f]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:k,illegal:"</",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(S,x,E,A,[f,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:k,contains:["self",l]},{begin:t.IDENT_RE+"::",keywords:k},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}return Qf=e,Qf}var ep,w2;function PB(){if(w2)return ep;w2=1;function e(t){const n=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],r=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],a=["default","false","null","true"],i=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],o=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],s={keyword:i.concat(o),built_in:n,literal:a},l=t.inherit(t.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),u={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},d={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},f=t.inherit(d,{illegal:/\n/}),p={className:"subst",begin:/\{/,end:/\}/,keywords:s},_=t.inherit(p,{illegal:/\n/}),g={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},t.BACKSLASH_ESCAPE,_]},y={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},p]},h=t.inherit(y,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},_]});p.contains=[y,g,d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,u,t.C_BLOCK_COMMENT_MODE],_.contains=[h,g,f,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,u,t.inherit(t.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const b={variants:[c,y,g,d,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE]},v={begin:"<",end:">",contains:[{beginKeywords:"in out"},l]},m=t.IDENT_RE+"(<"+t.IDENT_RE+"(\\s*,\\s*"+t.IDENT_RE+")*>)?(\\[\\])?",k={begin:"@"+t.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:s,illegal:/::/,contains:[t.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:"<!--|-->"},{begin:"</?",end:">"}]}]}),t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},b,u,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,v,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+m+"\\s+)+"+t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:s,contains:[{beginKeywords:r.join(" "),relevance:0},{begin:t.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[t.TITLE_MODE,v],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,relevance:0,contains:[b,u,t.C_BLOCK_COMMENT_MODE]},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},k]}}return ep=e,ep}var tp,S2;function BB(){if(S2)return tp;S2=1;const e=u=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:u.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[u.APOS_STRING_MODE,u.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:u.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=[...t,...n],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),s=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function l(u){const c=u.regex,d=e(u),f={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},p="and or not only",_=/@-?\w[\w]*(-\w+)*/,g="[a-zA-Z-][a-zA-Z0-9_-]*",y=[u.APOS_STRING_MODE,u.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[d.BLOCK_COMMENT,f,d.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+g,relevance:0},d.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+i.join("|")+")"},{begin:":(:)?("+o.join("|")+")"}]},d.CSS_VARIABLE,{className:"attribute",begin:"\\b("+s.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[d.BLOCK_COMMENT,d.HEXCOLOR,d.IMPORTANT,d.CSS_NUMBER_MODE,...y,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...y,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},d.FUNCTION_DISPATCH]},{begin:c.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:_},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:p,attribute:a.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...y,d.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+r.join("|")+")\\b"}]}}return tp=l,tp}var np,E2;function $B(){if(E2)return np;E2=1;function e(t){const n=t.regex,r={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},a={begin:"^[-\\*]{3,}",end:"$"},i={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},o={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},s={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},l=/[A-Za-z][A-Za-z0-9+.-]*/,u={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,l,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},c={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},d={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},f=t.inherit(c,{contains:[]}),p=t.inherit(d,{contains:[]});c.contains.push(p),d.contains.push(f);let _=[r,u];return[c,d,f,p].forEach(b=>{b.contains=b.contains.concat(_)}),_=_.concat(c,d),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:_},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:_}]}]},r,o,c,d,{className:"quote",begin:"^>\\s+",contains:_,end:"$"},i,a,u,s,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}return np=e,np}var rp,C2;function UB(){if(C2)return rp;C2=1;function e(t){const n=t.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}return rp=e,rp}var ap,A2;function HB(){if(A2)return ap;A2=1;function e(t){const n=t.regex,r="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),s={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield",...["include","extend","prepend","public","private","protected","raise","throw"]],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},l={className:"doctag",begin:"@[A-Za-z]+"},u={begin:"#<",end:">"},c=[t.COMMENT("#","$",{contains:[l]}),t.COMMENT("^=begin","^=end",{contains:[l],relevance:10}),t.COMMENT("^__END__",t.MATCH_NOTHING_RE)],d={className:"subst",begin:/#\{/,end:/\}/,keywords:s},f={className:"string",contains:[t.BACKSLASH_ESCAPE,d],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?</,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[t.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[t.BACKSLASH_ESCAPE,d]})]}]},p="[1-9](_?[0-9])*|0",_="[0-9](_?[0-9])*",g={className:"number",relevance:0,variants:[{begin:`\\b(${p})(\\.(${_}))?([eE][+-]?(${_})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},y={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:s}]},A=[f,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:s},{match:[/(include|extend)\s+/,i],scope:{2:"title.class"},keywords:s},{relevance:0,match:[i,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{match:[/def/,/\s+/,r],scope:{1:"keyword",3:"title.function"},contains:[y]},{begin:t.IDENT_RE+"::"},{className:"symbol",begin:t.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[f,{begin:r}],relevance:0},g,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:s},{begin:"("+t.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[t.BACKSLASH_ESCAPE,d],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(u,c),relevance:0}].concat(u,c);d.contains=A,y.contains=A;const T=[{begin:/^\s*=>/,starts:{end:"$",contains:A}},{className:"meta.prompt",begin:"^("+"[>?]>"+"|"+"[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]"+"|"+"(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>"+")(?=[ ])",starts:{end:"$",keywords:s,contains:A}}];return c.unshift(u),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/,contains:[t.SHEBANG({binary:"ruby"})].concat(T).concat(c).concat(A)}}return ap=e,ap}var ip,T2;function GB(){if(T2)return ip;T2=1;function e(t){const o={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:o,illegal:"</",contains:[t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,{className:"string",variants:[t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[t.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,illegal:/["']/}]}]}}return ip=e,ip}var op,D2;function qB(){if(D2)return op;D2=1;function e(t){const n=t.regex,r=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[t.HASH_COMMENT_MODE,t.QUOTE_STRING_MODE,t.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:n.concat(r,n.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}return op=e,op}var sp,M2;function KB(){if(M2)return sp;M2=1;function e(t){const n=t.regex,r={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:t.NUMBER_RE}]},a=t.COMMENT();a.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const i={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},o={className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string",contains:[t.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[a,o,i,s,r,"self"],relevance:0},u=/[A-Za-z0-9_-]+/,c=/"(\\"|[^"])*"/,d=/'[^']*'/,f=n.either(u,c,d),p=n.concat(f,"(\\s*\\.\\s*",f,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[a,{className:"section",begin:/\[+/,end:/\]+/},{begin:p,className:"attr",starts:{end:/$/,contains:[a,l,o,i,s,r]}}]}}return sp=e,sp}var lp,O2;function jB(){if(O2)return lp;O2=1;var e="[0-9](_*[0-9])*",t=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",r={className:"number",variants:[{begin:`(\\b(${e})((${t})|\\.)?|(${t}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${t})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${t})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(o,s,l){return l===-1?"":o.replace(s,u=>a(o,s,l-1))}function i(o){const s=o.regex,l="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",u=l+a("(?:<"+l+"~~~(?:\\s*,\\s*"+l+"~~~)*>)?",/~~~/g,2),_={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},g={className:"meta",begin:"@"+l,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},y={className:"params",begin:/\(/,end:/\)/,keywords:_,relevance:0,contains:[o.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:_,illegal:/<\/|#/,contains:[o.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[o.BACKSLASH_ESCAPE]},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,l],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[s.concat(/(?!else)/,l),/\s+/,l,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,l],className:{1:"keyword",3:"title.class"},contains:[y,o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+u+"\\s+)",o.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:_,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:_,relevance:0,contains:[g,o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,r,o.C_BLOCK_COMMENT_MODE]},o.C_LINE_COMMENT_MODE,o.C_BLOCK_COMMENT_MODE]},r,g]}}return lp=i,lp}var up,I2;function VB(){if(I2)return up;I2=1;const e="[A-Za-z$_][0-9A-Za-z$_]*",t=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],n=["true","false","null","undefined","NaN","Infinity"],r=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],a=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],i=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],o=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],s=[].concat(i,r,a);function l(u){const c=u.regex,d=(Ue,{after:me})=>{const De="</"+Ue[0].slice(1);return Ue.input.indexOf(De,me)!==-1},f=e,p={begin:"<>",end:"</>"},_=/<[A-Za-z0-9\\._:-]+\s*\/>/,g={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(Ue,me)=>{const De=Ue[0].length+Ue.index,Ne=Ue.input[De];if(Ne==="<"||Ne===","){me.ignoreMatch();return}Ne===">"&&(d(Ue,{after:De})||me.ignoreMatch());let Ke;const ne=Ue.input.substring(De);if(Ke=ne.match(/^\s*=/)){me.ignoreMatch();return}if((Ke=ne.match(/^\s+extends\s+/))&&Ke.index===0){me.ignoreMatch();return}}},y={$pattern:e,keyword:t,literal:n,built_in:s,"variable.language":o},h="[0-9](_?[0-9])*",b=`\\.(${h})`,v="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",m={className:"number",variants:[{begin:`(\\b(${v})((${b})|\\.)?|(${b}))[eE][+-]?(${h})\\b`},{begin:`\\b(${v})\\b((${b})\\b|\\.)?|(${b})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},k={className:"subst",begin:"\\$\\{",end:"\\}",keywords:y,contains:[]},E={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[u.BACKSLASH_ESCAPE,k],subLanguage:"xml"}},A={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[u.BACKSLASH_ESCAPE,k],subLanguage:"css"}},S={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[u.BACKSLASH_ESCAPE,k],subLanguage:"graphql"}},x={className:"string",begin:"`",end:"`",contains:[u.BACKSLASH_ESCAPE,k]},T={className:"comment",variants:[u.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:f+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),u.C_BLOCK_COMMENT_MODE,u.C_LINE_COMMENT_MODE]},$=[u.APOS_STRING_MODE,u.QUOTE_STRING_MODE,E,A,S,x,{match:/\$\d+/},m];k.contains=$.concat({begin:/\{/,end:/\}/,keywords:y,contains:["self"].concat($)});const P=[].concat(T,k.contains),K=P.concat([{begin:/(\s*)\(/,end:/\)/,keywords:y,contains:["self"].concat(P)}]),Q={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:y,contains:K},U={variants:[{match:[/class/,/\s+/,f,/\s+/,/extends/,/\s+/,c.concat(f,"(",c.concat(/\./,f),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,f],scope:{1:"keyword",3:"title.class"}}]},Y={relevance:0,match:c.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...r,...a]}},J={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},H={variants:[{match:[/function/,/\s+/,f,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[Q],illegal:/%/},G={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function R(Ue){return c.concat("(?!",Ue.join("|"),")")}const V={match:c.concat(/\b/,R([...i,"super","import"].map(Ue=>`${Ue}\\s*\\(`)),f,c.lookahead(/\s*\(/)),className:"title.function",relevance:0},W={begin:c.concat(/\./,c.lookahead(c.concat(f,/(?![0-9A-Za-z$_(])/))),end:f,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},ge={match:[/get|set/,/\s+/,f,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},Q]},Se="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+u.UNDERSCORE_IDENT_RE+")\\s*=>",ze={match:[/const|var|let/,/\s+/,f,/\s*/,/=\s*/,/(async\s*)?/,c.lookahead(Se)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[Q]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:y,exports:{PARAMS_CONTAINS:K,CLASS_REFERENCE:Y},illegal:/#(?![$_A-z])/,contains:[u.SHEBANG({label:"shebang",binary:"node",relevance:5}),J,u.APOS_STRING_MODE,u.QUOTE_STRING_MODE,E,A,S,x,T,{match:/\$\d+/},m,Y,{scope:"attr",match:f+c.lookahead(":"),relevance:0},ze,{begin:"("+u.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[T,u.REGEXP_MODE,{className:"function",begin:Se,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:u.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:y,contains:K}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:p.begin,end:p.end},{match:_},{begin:g.begin,"on:begin":g.isTrulyOpeningTag,end:g.end}],subLanguage:"xml",contains:[{begin:g.begin,end:g.end,skip:!0,contains:["self"]}]}]},H,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+u.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[Q,u.inherit(u.TITLE_MODE,{begin:f,className:"title.function"})]},{match:/\.\.\./,relevance:0},W,{match:"\\$"+f,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[Q]},V,G,U,ge,{match:/\$[(.]/}]}}return up=l,up}var cp,R2;function WB(){if(R2)return cp;R2=1;function e(t){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},r={match:/[{}[\],:]/,className:"punctuation",relevance:0},a=["true","false","null"],i={scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:a},contains:[n,r,t.QUOTE_STRING_MODE,i,t.C_NUMBER_MODE,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}return cp=e,cp}var dp,z2;function YB(){if(z2)return dp;z2=1;var e="[0-9](_*[0-9])*",t=`\\.(${e})`,n="[0-9a-fA-F](_*[0-9a-fA-F])*",r={className:"number",variants:[{begin:`(\\b(${e})((${t})|\\.)?|(${t}))[eE][+-]?(${e})[fFdD]?\\b`},{begin:`\\b(${e})((${t})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${t})[fFdD]?\\b`},{begin:`\\b(${e})[fFdD]\\b`},{begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?(${e})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function a(i){const o={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},s={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},l={className:"symbol",begin:i.UNDERSCORE_IDENT_RE+"@"},u={className:"subst",begin:/\$\{/,end:/\}/,contains:[i.C_NUMBER_MODE]},c={className:"variable",begin:"\\$"+i.UNDERSCORE_IDENT_RE},d={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[c,u]},{begin:"'",end:"'",illegal:/\n/,contains:[i.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[i.BACKSLASH_ESCAPE,c,u]}]};u.contains.push(d);const f={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+i.UNDERSCORE_IDENT_RE+")?"},p={className:"meta",begin:"@"+i.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[i.inherit(d,{className:"string"}),"self"]}]},_=r,g=i.COMMENT("/\\*","\\*/",{contains:[i.C_BLOCK_COMMENT_MODE]}),y={variants:[{className:"type",begin:i.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},h=y;return h.variants[1].contains=[y],y.variants[1].contains=[h],{name:"Kotlin",aliases:["kt","kts"],keywords:o,contains:[i.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),i.C_LINE_COMMENT_MODE,g,s,l,f,p,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:o,relevance:5,contains:[{begin:i.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[i.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/</,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:o,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[y,i.C_LINE_COMMENT_MODE,g],relevance:0},i.C_LINE_COMMENT_MODE,g,f,p,d,i.C_NUMBER_MODE]},g]},{begin:[/class|interface|trait/,/\s+/,i.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},i.UNDERSCORE_TITLE_MODE,{className:"type",begin:/</,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},f,p]},d,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
58
58
  `},_]}}return dp=a,dp}var fp,N2;function ZB(){if(N2)return fp;N2=1;const e=c=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:c.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[c.APOS_STRING_MODE,c.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:c.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),t=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],n=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=[...t,...n],a=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),s=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),l=i.concat(o).sort().reverse();function u(c){const d=e(c),f=l,p="and or not only",_="[\\w-]+",g="("+_+"|@\\{"+_+"\\})",y=[],h=[],b=function(P){return{className:"string",begin:"~?"+P+".*?"+P}},v=function(P,K,Q){return{className:P,begin:K,relevance:Q}},m={$pattern:/[a-z-]+/,keyword:p,attribute:a.join(" ")},k={begin:"\\(",end:"\\)",contains:h,keywords:m,relevance:0};h.push(c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE,b("'"),b('"'),d.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},d.HEXCOLOR,k,v("variable","@@?"+_,10),v("variable","@\\{"+_+"\\}"),v("built_in","~?`[^`]*?`"),{className:"attribute",begin:_+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},d.IMPORTANT,{beginKeywords:"and not"},d.FUNCTION_DISPATCH);const E=h.concat({begin:/\{/,end:/\}/,contains:y}),A={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(h)},S={begin:g+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},d.CSS_VARIABLE,{className:"attribute",begin:"\\b("+s.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:h}}]},x={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:m,returnEnd:!0,contains:h,relevance:0}},C={className:"variable",variants:[{begin:"@"+_+"\\s*:",relevance:15},{begin:"@"+_}],starts:{end:"[;}]",returnEnd:!0,contains:E}},T={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:g,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE,A,v("keyword","all\\b"),v("variable","@\\{"+_+"\\}"),{begin:"\\b("+r.join("|")+")\\b",className:"selector-tag"},d.CSS_NUMBER_MODE,v("selector-tag",g,0),v("selector-id","#"+g),v("selector-class","\\."+g,0),v("selector-tag","&",0),d.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+i.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+o.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:E},{begin:"!important"},d.FUNCTION_DISPATCH]},$={begin:_+`:(:)?(${f.join("|")})`,returnBegin:!0,contains:[T]};return y.push(c.C_LINE_COMMENT_MODE,c.C_BLOCK_COMMENT_MODE,x,C,$,S,T,A,d.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:y}}return fp=u,fp}var pp,F2;function XB(){if(F2)return pp;F2=1;function e(t){const n="\\[=*\\[",r="\\]=*\\]",a={begin:n,end:r,contains:["self"]},i=[t.COMMENT("--(?!"+n+")","$"),t.COMMENT("--"+n,r,{contains:[a],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:t.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:i.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[t.inherit(t.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:i}].concat(i)},t.C_NUMBER_MODE,t.APOS_STRING_MODE,t.QUOTE_STRING_MODE,{className:"string",begin:n,end:r,contains:[a],relevance:5}])}}return pp=e,pp}var hp,L2;function JB(){if(L2)return hp;L2=1;function e(t){const n={className:"variable",variants:[{begin:"\\$\\("+t.UNDERSCORE_IDENT_RE+"\\)",contains:[t.BACKSLASH_ESCAPE]},{begin:/\$[@%<?\^\+\*]/}]},r={className:"string",begin:/"/,end:/"/,contains:[t.BACKSLASH_ESCAPE,n]},a={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[n,r]},i={begin:"^"+t.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},o={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},s={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[t.HASH_COMMENT_MODE,n,r,a,i,o,s]}}return hp=e,hp}var mp,P2;function QB(){if(P2)return mp;P2=1;function e(t){const n=t.regex,r=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],a=/[dualxmsipngr]{0,12}/,i={$pattern:/[\w.]+/,keyword:r.join(" ")},o={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:i},s={begin:/->\{/,end:/\}/},l={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},u={scope:"variable",variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[l]},c={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},d=[t.BACKSLASH_ESCAPE,o,u],f=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],p=(y,h,b="\\1")=>{const v=b==="\\1"?b:n.concat(b,h);return n.concat(n.concat("(?:",y,")"),h,/(?:\\.|[^\\\/])*?/,v,/(?:\\.|[^\\\/])*?/,b,a)},_=(y,h,b)=>n.concat(n.concat("(?:",y,")"),h,/(?:\\.|[^\\\/])*?/,b,a),g=[u,t.HASH_COMMENT_MODE,t.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),s,{className:"string",contains:d,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[t.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[t.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},c,{begin:"(\\/\\/|"+t.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[t.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:p("s|tr|y",n.either(...f,{capture:!0}))},{begin:p("s|tr|y","\\(","\\)")},{begin:p("s|tr|y","\\[","\\]")},{begin:p("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:_("(?:m|qr)?",/\//,/\//)},{begin:_("m|qr",n.either(...f,{capture:!0}),/\1/)},{begin:_("m|qr",/\(/,/\)/)},{begin:_("m|qr",/\[/,/\]/)},{begin:_("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[t.TITLE_MODE,l,c]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return o.contains=g,s.contains=g,{name:"Perl",aliases:["pl","pm"],keywords:i,contains:g}}return mp=e,mp}var vp,B2;function e$(){if(B2)return vp;B2=1;function e(t){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},r=/[a-zA-Z@][a-zA-Z0-9_]*/,l={"variable.language":["this","super"],$pattern:r,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},u={$pattern:r,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:l,illegal:"</",contains:[n,t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE,t.C_NUMBER_MODE,t.QUOTE_STRING_MODE,t.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[t.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},t.inherit(t.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},t.C_LINE_COMMENT_MODE,t.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+u.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:u,contains:[t.UNDERSCORE_TITLE_MODE]},{begin:"\\."+t.UNDERSCORE_IDENT_RE,relevance:0}]}}return vp=e,vp}var gp,$2;function t$(){if($2)return gp;$2=1;function e(t){const n=t.regex,r=/(?![A-Za-z0-9])(?![$])/,a=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,r),i=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,r),o=n.concat(/[A-Z]+/,r),s={scope:"variable",match:"\\$+"+a},l={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},u={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},c=t.inherit(t.APOS_STRING_MODE,{illegal:null}),d=t.inherit(t.QUOTE_STRING_MODE,{illegal:null,contains:t.QUOTE_STRING_MODE.contains.concat(u)}),f={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:t.QUOTE_STRING_MODE.contains.concat(u),"on:begin":(Q,U)=>{U.data._beginMatch=Q[1]||Q[2]},"on:end":(Q,U)=>{U.data._beginMatch!==Q[1]&&U.ignoreMatch()}},p=t.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),_=`[