@lemoncat7/dsh-ssh 1.3.2 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  window.__ModuleLoader__.load({ id: "@lemoncat7/dsh-ssh", factory: (require) => { var module = { exports: {} }; var exports = module.exports;
2
- "use strict";var tf=Object.create;var xi=Object.defineProperty;var rf=Object.getOwnPropertyDescriptor;var sf=Object.getOwnPropertyNames;var nf=Object.getPrototypeOf,of=Object.prototype.hasOwnProperty;var Ar=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Hn=(e,t)=>{for(var r in t)xi(e,r,{get:t[r],enumerable:!0})},Al=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of sf(t))!of.call(e,o)&&o!==r&&xi(e,o,{get:()=>t[o],enumerable:!(s=rf(t,o))||s.enumerable});return e};var Ms=(e,t,r)=>(r=e!=null?tf(nf(e)):{},Al(t||!e||!e.__esModule?xi(r,"default",{value:e,enumerable:!0}):r,e)),af=e=>Al(xi({},"__esModule",{value:!0}),e);var jn=Ar((yi,Un)=>{(function(e,t){typeof yi=="object"&&typeof Un=="object"?Un.exports=t():typeof define=="function"&&define.amd?define([],t):typeof yi=="object"?yi.FitAddon=t():e.FitAddon=t()})(self,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(r){this._terminal=r}dispose(){}fit(){let r=this.proposeDimensions();if(!r||!this._terminal||isNaN(r.cols)||isNaN(r.rows))return;let s=this._terminal._core;this._terminal.rows===r.rows&&this._terminal.cols===r.cols||(s._renderService.clear(),this._terminal.resize(r.cols,r.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let r=this._terminal._core,s=r._renderService.dimensions;if(s.css.cell.width===0||s.css.cell.height===0)return;let o=this._terminal.options.scrollback===0?0:r.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(i.getPropertyValue("height")),a=Math.max(0,parseInt(i.getPropertyValue("width"))),h=window.getComputedStyle(this._terminal.element),l=n-(parseInt(h.getPropertyValue("padding-top"))+parseInt(h.getPropertyValue("padding-bottom"))),c=a-(parseInt(h.getPropertyValue("padding-right"))+parseInt(h.getPropertyValue("padding-left")))-o;return{cols:Math.max(2,Math.floor(c/s.css.cell.width)),rows:Math.max(1,Math.floor(l/s.css.cell.height))}}}})(),e})()))});var Sh=Ar((X1,wh)=>{"use strict";var _h=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,vf=/\n/g,_f=/^\s*/,bf=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,xf=/^:\s*/,yf=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,wf=/^[;\s]*/,Sf=/^\s+|\s+$/g,kf=`
2
+ "use strict";var tf=Object.create;var xi=Object.defineProperty;var rf=Object.getOwnPropertyDescriptor;var sf=Object.getOwnPropertyNames;var nf=Object.getPrototypeOf,of=Object.prototype.hasOwnProperty;var Ar=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Hn=(e,t)=>{for(var r in t)xi(e,r,{get:t[r],enumerable:!0})},Al=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of sf(t))!of.call(e,o)&&o!==r&&xi(e,o,{get:()=>t[o],enumerable:!(s=rf(t,o))||s.enumerable});return e};var Ms=(e,t,r)=>(r=e!=null?tf(nf(e)):{},Al(t||!e||!e.__esModule?xi(r,"default",{value:e,enumerable:!0}):r,e)),af=e=>Al(xi({},"__esModule",{value:!0}),e);var jn=Ar((yi,Un)=>{(function(e,t){typeof yi=="object"&&typeof Un=="object"?Un.exports=t():typeof define=="function"&&define.amd?define([],t):typeof yi=="object"?yi.FitAddon=t():e.FitAddon=t()})(self,(()=>(()=>{"use strict";var e={};return(()=>{var t=e;Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0,t.FitAddon=class{activate(r){this._terminal=r}dispose(){}fit(){let r=this.proposeDimensions();if(!r||!this._terminal||isNaN(r.cols)||isNaN(r.rows))return;let s=this._terminal._core;this._terminal.rows===r.rows&&this._terminal.cols===r.cols||(s._renderService.clear(),this._terminal.resize(r.cols,r.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;let r=this._terminal._core,s=r._renderService.dimensions;if(s.css.cell.width===0||s.css.cell.height===0)return;let o=this._terminal.options.scrollback===0?0:r.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),n=parseInt(i.getPropertyValue("height")),a=Math.max(0,parseInt(i.getPropertyValue("width"))),h=window.getComputedStyle(this._terminal.element),l=n-(parseInt(h.getPropertyValue("padding-top"))+parseInt(h.getPropertyValue("padding-bottom"))),c=a-(parseInt(h.getPropertyValue("padding-right"))+parseInt(h.getPropertyValue("padding-left")))-o;return{cols:Math.max(2,Math.floor(c/s.css.cell.width)),rows:Math.max(1,Math.floor(l/s.css.cell.height))}}}})(),e})()))});var Sh=Ar((Xy,wh)=>{"use strict";var _h=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,vf=/\n/g,_f=/^\s*/,bf=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,xf=/^:\s*/,yf=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,wf=/^[;\s]*/,Sf=/^\s+|\s+$/g,kf=`
3
3
  `,bh="/",xh="*",Or="",Cf="comment",Ef="declaration";function Tf(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var r=1,s=1;function o(u){var d=u.match(vf);d&&(r+=d.length);var m=u.lastIndexOf(kf);s=~m?u.length-m:s+u.length}function i(){var u={line:r,column:s};return function(d){return d.position=new n(u),l(),d}}function n(u){this.start=u,this.end={line:r,column:s},this.source=t.source}n.prototype.content=e;function a(u){var d=new Error(t.source+":"+r+":"+s+": "+u);if(d.reason=u,d.filename=t.source,d.line=r,d.column=s,d.source=e,!t.silent)throw d}function h(u){var d=u.exec(e);if(d){var m=d[0];return o(m),e=e.slice(m.length),d}}function l(){h(_f)}function c(u){var d;for(u=u||[];d=p();)d!==!1&&u.push(d);return u}function p(){var u=i();if(!(bh!=e.charAt(0)||xh!=e.charAt(1))){for(var d=2;Or!=e.charAt(d)&&(xh!=e.charAt(d)||bh!=e.charAt(d+1));)++d;if(d+=2,Or===e.charAt(d-1))return a("End of comment missing");var m=e.slice(2,d-2);return s+=2,o(m),e=e.slice(d),s+=2,u({type:Cf,comment:m})}}function v(){var u=i(),d=h(bf);if(d){if(p(),!h(xf))return a("property missing ':'");var m=h(yf),f=u({type:Ef,property:yh(d[0].replace(_h,Or)),value:m?yh(m[0].replace(_h,Or)):Or});return h(wf),f}}function g(){var u=[];c(u);for(var d;d=v();)d!==!1&&(u.push(d),c(u));return u}return l(),g()}function yh(e){return e?e.replace(Sf,Or):Or}wh.exports=Tf});var kh=Ar(Hs=>{"use strict";var Pf=Hs&&Hs.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hs,"__esModule",{value:!0});Hs.default=Rf;var Df=Pf(Sh());function Rf(e,t){let r=null;if(!e||typeof e!="string")return r;let s=(0,Df.default)(e),o=typeof t=="function";return s.forEach(i=>{if(i.type!=="declaration")return;let{property:n,value:a}=i;o?t(n,a,i):a&&(r=r||{},r[n]=a)}),r}});var Eh=Ar(Di=>{"use strict";Object.defineProperty(Di,"__esModule",{value:!0});Di.camelCase=void 0;var Af=/^--[a-zA-Z0-9_-]+$/,If=/-([a-z])/g,Lf=/^[^-]+$/,Of=/^-(webkit|moz|ms|o|khtml)-/,Mf=/^-(ms)-/,Bf=function(e){return!e||Lf.test(e)||Af.test(e)},Ff=function(e,t){return t.toUpperCase()},Ch=function(e,t){return"".concat(t,"-")},Nf=function(e,t){return t===void 0&&(t={}),Bf(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Mf,Ch):e=e.replace(Of,Ch),e.replace(If,Ff))};Di.camelCase=Nf});var Ph=Ar((to,Th)=>{"use strict";var zf=to&&to.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Hf=zf(kh()),Uf=Eh();function eo(e,t){var r={};return!e||typeof e!="string"||(0,Hf.default)(e,function(s,o){s&&o&&(r[(0,Uf.camelCase)(s,t)]=o)}),r}eo.default=eo;Th.exports=eo});var Zc=Ar((k2,Qc)=>{"use strict";var Zi=Object.prototype.hasOwnProperty,Yc=Object.prototype.toString,Wc=Object.defineProperty,qc=Object.getOwnPropertyDescriptor,Kc=function(t){return typeof Array.isArray=="function"?Array.isArray(t):Yc.call(t)==="[object Array]"},Xc=function(t){if(!t||Yc.call(t)!=="[object Object]")return!1;var r=Zi.call(t,"constructor"),s=t.constructor&&t.constructor.prototype&&Zi.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!s)return!1;var o;for(o in t);return typeof o>"u"||Zi.call(t,o)},Jc=function(t,r){Wc&&r.name==="__proto__"?Wc(t,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):t[r.name]=r.newValue},Gc=function(t,r){if(r==="__proto__")if(Zi.call(t,r)){if(qc)return qc(t,r).value}else return;return t[r]};Qc.exports=function e(){var t,r,s,o,i,n,a=arguments[0],h=1,l=arguments.length,c=!1;for(typeof a=="boolean"&&(c=a,a=arguments[1]||{},h=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});h<l;++h)if(t=arguments[h],t!=null)for(r in t)s=Gc(a,r),o=Gc(t,r),a!==o&&(c&&o&&(Xc(o)||(i=Kc(o)))?(i?(i=!1,n=s&&Kc(s)?s:[]):n=s&&Xc(s)?s:{},Jc(a,{name:r,newValue:e(c,n,o)})):typeof o<"u"&&Jc(a,{name:r,newValue:o}));return a}});var bp=Ar((An,wl)=>{(function(e,t){if(typeof An=="object"&&typeof wl=="object")wl.exports=t();else if(typeof define=="function"&&define.amd)define([],t);else{var r=t();for(var s in r)(typeof An=="object"?An:e)[s]=r[s]}})(globalThis,(()=>(()=>{"use strict";var e={4567:function(o,i,n){var a=this&&this.__decorate||function(m,f,_,x){var y,w=arguments.length,b=w<3?f:x===null?x=Object.getOwnPropertyDescriptor(f,_):x;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")b=Reflect.decorate(m,f,_,x);else for(var S=m.length-1;S>=0;S--)(y=m[S])&&(b=(w<3?y(b):w>3?y(f,_,b):y(f,_))||b);return w>3&&b&&Object.defineProperty(f,_,b),b},h=this&&this.__param||function(m,f){return function(_,x){f(_,x,m)}};Object.defineProperty(i,"__esModule",{value:!0}),i.AccessibilityManager=void 0;let l=n(9042),c=n(9924),p=n(844),v=n(4725),g=n(2585),u=n(3656),d=i.AccessibilityManager=class extends p.Disposable{constructor(m,f,_,x){super(),this._terminal=m,this._coreBrowserService=_,this._renderService=x,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce="",this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement("div"),this._accessibilityContainer.classList.add("xterm-accessibility"),this._rowContainer=this._coreBrowserService.mainDocument.createElement("div"),this._rowContainer.setAttribute("role","list"),this._rowContainer.classList.add("xterm-accessibility-tree"),this._rowElements=[];for(let y=0;y<this._terminal.rows;y++)this._rowElements[y]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[y]);if(this._topBoundaryFocusListener=y=>this._handleBoundaryFocus(y,0),this._bottomBoundaryFocusListener=y=>this._handleBoundaryFocus(y,1),this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement("div"),this._liveRegion.classList.add("live-region"),this._liveRegion.setAttribute("aria-live","assertive"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new c.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error("Cannot enable accessibility before Terminal.open");this._terminal.element.insertAdjacentElement("afterbegin",this._accessibilityContainer),this.register(this._terminal.onResize((y=>this._handleResize(y.rows)))),this.register(this._terminal.onRender((y=>this._refreshRows(y.start,y.end)))),this.register(this._terminal.onScroll((()=>this._refreshRows()))),this.register(this._terminal.onA11yChar((y=>this._handleChar(y)))),this.register(this._terminal.onLineFeed((()=>this._handleChar(`
4
4
  `)))),this.register(this._terminal.onA11yTab((y=>this._handleTab(y)))),this.register(this._terminal.onKey((y=>this._handleKey(y.key)))),this.register(this._terminal.onBlur((()=>this._clearLiveRegion()))),this.register(this._renderService.onDimensionsChange((()=>this._refreshRowsDimensions()))),this.register((0,u.addDisposableDomListener)(document,"selectionchange",(()=>this._handleSelectionChange()))),this.register(this._coreBrowserService.onDprChange((()=>this._refreshRowsDimensions()))),this._refreshRows(),this.register((0,p.toDisposable)((()=>{this._accessibilityContainer.remove(),this._rowElements.length=0})))}_handleTab(m){for(let f=0;f<m;f++)this._handleChar(" ")}_handleChar(m){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==m&&(this._charsToAnnounce+=m):this._charsToAnnounce+=m,m===`
5
5
  `&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=l.tooMuchOutput)))}_clearLiveRegion(){this._liveRegion.textContent="",this._liveRegionLineCount=0}_handleKey(m){this._clearLiveRegion(),/\p{Control}/u.test(m)||this._charsToConsume.push(m)}_refreshRows(m,f){this._liveRegionDebouncer.refresh(m,f,this._terminal.rows)}_renderRows(m,f){let _=this._terminal.buffer,x=_.lines.length.toString();for(let y=m;y<=f;y++){let w=_.lines.get(_.ydisp+y),b=[],S=w?.translateToString(!0,void 0,void 0,b)||"",T=(_.ydisp+y+1).toString(),R=this._rowElements[y];R&&(S.length===0?(R.innerText="\xA0",this._rowColumns.set(R,[0,1])):(R.textContent=S,this._rowColumns.set(R,b)),R.setAttribute("aria-posinset",T),R.setAttribute("aria-setsize",x))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce="")}_handleBoundaryFocus(m,f){let _=m.target,x=this._rowElements[f===0?1:this._rowElements.length-2];if(_.getAttribute("aria-posinset")===(f===0?"1":`${this._terminal.buffer.lines.length}`)||m.relatedTarget!==x)return;let y,w;if(f===0?(y=_,w=this._rowElements.pop(),this._rowContainer.removeChild(w)):(y=this._rowElements.shift(),w=_,this._rowContainer.removeChild(y)),y.removeEventListener("focus",this._topBoundaryFocusListener),w.removeEventListener("focus",this._bottomBoundaryFocusListener),f===0){let b=this._createAccessibilityTreeNode();this._rowElements.unshift(b),this._rowContainer.insertAdjacentElement("afterbegin",b)}else{let b=this._createAccessibilityTreeNode();this._rowElements.push(b),this._rowContainer.appendChild(b)}this._rowElements[0].addEventListener("focus",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._terminal.scrollLines(f===0?-1:1),this._rowElements[f===0?1:this._rowElements.length-2].focus(),m.preventDefault(),m.stopImmediatePropagation()}_handleSelectionChange(){if(this._rowElements.length===0)return;let m=document.getSelection();if(!m)return;if(m.isCollapsed)return void(this._rowContainer.contains(m.anchorNode)&&this._terminal.clearSelection());if(!m.anchorNode||!m.focusNode)return void console.error("anchorNode and/or focusNode are null");let f={node:m.anchorNode,offset:m.anchorOffset},_={node:m.focusNode,offset:m.focusOffset};if((f.node.compareDocumentPosition(_.node)&Node.DOCUMENT_POSITION_PRECEDING||f.node===_.node&&f.offset>_.offset)&&([f,_]=[_,f]),f.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(f={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(f.node))return;let x=this._rowElements.slice(-1)[0];if(_.node.compareDocumentPosition(x)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(_={node:x,offset:x.textContent?.length??0}),!this._rowContainer.contains(_.node))return;let y=({node:S,offset:T})=>{let R=S instanceof Text?S.parentNode:S,E=parseInt(R?.getAttribute("aria-posinset"),10)-1;if(isNaN(E))return console.warn("row is invalid. Race condition?"),null;let A=this._rowColumns.get(R);if(!A)return console.warn("columns is null. Race condition?"),null;let B=T<A.length?A[T]:A.slice(-1)[0]+1;return B>=this._terminal.cols&&(++E,B=0),{row:E,column:B}},w=y(f),b=y(_);if(w&&b){if(w.row>b.row||w.row===b.row&&w.column>=b.column)throw new Error("invalid range");this._terminal.select(w.column,w.row,(b.row-w.row)*this._terminal.cols-w.column+b.column)}}_handleResize(m){this._rowElements[this._rowElements.length-1].removeEventListener("focus",this._bottomBoundaryFocusListener);for(let f=this._rowContainer.children.length;f<this._terminal.rows;f++)this._rowElements[f]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[f]);for(;this._rowElements.length>m;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener("focus",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){let m=this._coreBrowserService.mainDocument.createElement("div");return m.setAttribute("role","listitem"),m.tabIndex=-1,this._refreshRowDimensions(m),m}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}px`,this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let m=0;m<this._terminal.rows;m++)this._refreshRowDimensions(this._rowElements[m])}}_refreshRowDimensions(m){m.style.height=`${this._renderService.dimensions.css.cell.height}px`}};i.AccessibilityManager=d=a([h(1,g.IInstantiationService),h(2,v.ICoreBrowserService),h(3,v.IRenderService)],d)},3614:(o,i)=>{function n(c){return c.replace(/\r?\n/g,"\r")}function a(c,p){return p?"\x1B[200~"+c+"\x1B[201~":c}function h(c,p,v,g){c=a(c=n(c),v.decPrivateModes.bracketedPasteMode&&g.rawOptions.ignoreBracketedPasteMode!==!0),v.triggerDataEvent(c,!0),p.value=""}function l(c,p,v){let g=v.getBoundingClientRect(),u=c.clientX-g.left-10,d=c.clientY-g.top-10;p.style.width="20px",p.style.height="20px",p.style.left=`${u}px`,p.style.top=`${d}px`,p.style.zIndex="1000",p.focus()}Object.defineProperty(i,"__esModule",{value:!0}),i.rightClickHandler=i.moveTextAreaUnderMouseCursor=i.paste=i.handlePasteEvent=i.copyHandler=i.bracketTextForPaste=i.prepareTextForTerminal=void 0,i.prepareTextForTerminal=n,i.bracketTextForPaste=a,i.copyHandler=function(c,p){c.clipboardData&&c.clipboardData.setData("text/plain",p.selectionText),c.preventDefault()},i.handlePasteEvent=function(c,p,v,g){c.stopPropagation(),c.clipboardData&&h(c.clipboardData.getData("text/plain"),p,v,g)},i.paste=h,i.moveTextAreaUnderMouseCursor=l,i.rightClickHandler=function(c,p,v,g,u){l(c,p,v),u&&g.rightClickSelect(c),p.value=g.selectionText,p.select()}},7239:(o,i,n)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.ColorContrastCache=void 0;let a=n(1505);i.ColorContrastCache=class{constructor(){this._color=new a.TwoKeyMap,this._css=new a.TwoKeyMap}setCss(h,l,c){this._css.set(h,l,c)}getCss(h,l){return this._css.get(h,l)}setColor(h,l,c){this._color.set(h,l,c)}getColor(h,l){return this._color.get(h,l)}clear(){this._color.clear(),this._css.clear()}}},3656:(o,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.addDisposableDomListener=void 0,i.addDisposableDomListener=function(n,a,h,l){n.addEventListener(a,h,l);let c=!1;return{dispose:()=>{c||(c=!0,n.removeEventListener(a,h,l))}}}},3551:function(o,i,n){var a=this&&this.__decorate||function(d,m,f,_){var x,y=arguments.length,w=y<3?m:_===null?_=Object.getOwnPropertyDescriptor(m,f):_;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")w=Reflect.decorate(d,m,f,_);else for(var b=d.length-1;b>=0;b--)(x=d[b])&&(w=(y<3?x(w):y>3?x(m,f,w):x(m,f))||w);return y>3&&w&&Object.defineProperty(m,f,w),w},h=this&&this.__param||function(d,m){return function(f,_){m(f,_,d)}};Object.defineProperty(i,"__esModule",{value:!0}),i.Linkifier=void 0;let l=n(3656),c=n(8460),p=n(844),v=n(2585),g=n(4725),u=i.Linkifier=class extends p.Disposable{get currentLink(){return this._currentLink}constructor(d,m,f,_,x){super(),this._element=d,this._mouseService=m,this._renderService=f,this._bufferService=_,this._linkProviderService=x,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new c.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new c.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,p.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,p.toDisposable)((()=>{this._lastMouseEvent=void 0,this._activeProviderReplies?.clear()}))),this.register(this._bufferService.onResize((()=>{this._clearCurrentLink(),this._wasResized=!0}))),this.register((0,l.addDisposableDomListener)(this._element,"mouseleave",(()=>{this._isMouseOut=!0,this._clearCurrentLink()}))),this.register((0,l.addDisposableDomListener)(this._element,"mousemove",this._handleMouseMove.bind(this))),this.register((0,l.addDisposableDomListener)(this._element,"mousedown",this._handleMouseDown.bind(this))),this.register((0,l.addDisposableDomListener)(this._element,"mouseup",this._handleMouseUp.bind(this)))}_handleMouseMove(d){this._lastMouseEvent=d;let m=this._positionFromMouseEvent(d,this._element,this._mouseService);if(!m)return;this._isMouseOut=!1;let f=d.composedPath();for(let _=0;_<f.length;_++){let x=f[_];if(x.classList.contains("xterm"))break;if(x.classList.contains("xterm-hover"))return}this._lastBufferCell&&m.x===this._lastBufferCell.x&&m.y===this._lastBufferCell.y||(this._handleHover(m),this._lastBufferCell=m)}_handleHover(d){if(this._activeLine!==d.y||this._wasResized)return this._clearCurrentLink(),this._askForLink(d,!1),void(this._wasResized=!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,d)||(this._clearCurrentLink(),this._askForLink(d,!0))}_askForLink(d,m){this._activeProviderReplies&&m||(this._activeProviderReplies?.forEach((_=>{_?.forEach((x=>{x.link.dispose&&x.link.dispose()}))})),this._activeProviderReplies=new Map,this._activeLine=d.y);let f=!1;for(let[_,x]of this._linkProviderService.linkProviders.entries())m?this._activeProviderReplies?.get(_)&&(f=this._checkLinkProviderResult(_,d,f)):x.provideLinks(d.y,(y=>{if(this._isMouseOut)return;let w=y?.map((b=>({link:b})));this._activeProviderReplies?.set(_,w),f=this._checkLinkProviderResult(_,d,f),this._activeProviderReplies?.size===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(d.y,this._activeProviderReplies)}))}_removeIntersectingLinks(d,m){let f=new Set;for(let _=0;_<m.size;_++){let x=m.get(_);if(x)for(let y=0;y<x.length;y++){let w=x[y],b=w.link.range.start.y<d?0:w.link.range.start.x,S=w.link.range.end.y>d?this._bufferService.cols:w.link.range.end.x;for(let T=b;T<=S;T++){if(f.has(T)){x.splice(y--,1);break}f.add(T)}}}}_checkLinkProviderResult(d,m,f){if(!this._activeProviderReplies)return f;let _=this._activeProviderReplies.get(d),x=!1;for(let y=0;y<d;y++)this._activeProviderReplies.has(y)&&!this._activeProviderReplies.get(y)||(x=!0);if(!x&&_){let y=_.find((w=>this._linkAtPosition(w.link,m)));y&&(f=!0,this._handleNewLink(y))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!f)for(let y=0;y<this._activeProviderReplies.size;y++){let w=this._activeProviderReplies.get(y)?.find((b=>this._linkAtPosition(b.link,m)));if(w){f=!0,this._handleNewLink(w);break}}return f}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(d){if(!this._currentLink)return;let m=this._positionFromMouseEvent(d,this._element,this._mouseService);m&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,m)&&this._currentLink.link.activate(d,this._currentLink.link.text)}_clearCurrentLink(d,m){this._currentLink&&this._lastMouseEvent&&(!d||!m||this._currentLink.link.range.start.y>=d&&this._currentLink.link.range.end.y<=m)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,p.disposeArray)(this._linkCacheDisposables))}_handleNewLink(d){if(!this._lastMouseEvent)return;let m=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);m&&this._linkAtPosition(d.link,m)&&(this._currentLink=d,this._currentLink.state={decorations:{underline:d.link.decorations===void 0||d.link.decorations.underline,pointerCursor:d.link.decorations===void 0||d.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,d.link,this._lastMouseEvent),d.link.decorations={},Object.defineProperties(d.link.decorations,{pointerCursor:{get:()=>this._currentLink?.state?.decorations.pointerCursor,set:f=>{this._currentLink?.state&&this._currentLink.state.decorations.pointerCursor!==f&&(this._currentLink.state.decorations.pointerCursor=f,this._currentLink.state.isHovered&&this._element.classList.toggle("xterm-cursor-pointer",f))}},underline:{get:()=>this._currentLink?.state?.decorations.underline,set:f=>{this._currentLink?.state&&this._currentLink?.state?.decorations.underline!==f&&(this._currentLink.state.decorations.underline=f,this._currentLink.state.isHovered&&this._fireUnderlineEvent(d.link,f))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange((f=>{if(!this._currentLink)return;let _=f.start===0?0:f.start+1+this._bufferService.buffer.ydisp,x=this._bufferService.buffer.ydisp+1+f.end;if(this._currentLink.link.range.start.y>=_&&this._currentLink.link.range.end.y<=x&&(this._clearCurrentLink(_,x),this._lastMouseEvent)){let y=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);y&&this._askForLink(y,!1)}}))))}_linkHover(d,m,f){this._currentLink?.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(m,!0),this._currentLink.state.decorations.pointerCursor&&d.classList.add("xterm-cursor-pointer")),m.hover&&m.hover(f,m.text)}_fireUnderlineEvent(d,m){let f=d.range,_=this._bufferService.buffer.ydisp,x=this._createLinkUnderlineEvent(f.start.x-1,f.start.y-_-1,f.end.x,f.end.y-_-1,void 0);(m?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(x)}_linkLeave(d,m,f){this._currentLink?.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(m,!1),this._currentLink.state.decorations.pointerCursor&&d.classList.remove("xterm-cursor-pointer")),m.leave&&m.leave(f,m.text)}_linkAtPosition(d,m){let f=d.range.start.y*this._bufferService.cols+d.range.start.x,_=d.range.end.y*this._bufferService.cols+d.range.end.x,x=m.y*this._bufferService.cols+m.x;return f<=x&&x<=_}_positionFromMouseEvent(d,m,f){let _=f.getCoords(d,m,this._bufferService.cols,this._bufferService.rows);if(_)return{x:_[0],y:_[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(d,m,f,_,x){return{x1:d,y1:m,x2:f,y2:_,cols:this._bufferService.cols,fg:x}}};i.Linkifier=u=a([h(1,g.IMouseService),h(2,g.IRenderService),h(3,v.IBufferService),h(4,g.ILinkProviderService)],u)},9042:(o,i)=>{Object.defineProperty(i,"__esModule",{value:!0}),i.tooMuchOutput=i.promptLabel=void 0,i.promptLabel="Terminal input",i.tooMuchOutput="Too much output to announce, navigate to rows manually to read"},3730:function(o,i,n){var a=this&&this.__decorate||function(g,u,d,m){var f,_=arguments.length,x=_<3?u:m===null?m=Object.getOwnPropertyDescriptor(u,d):m;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")x=Reflect.decorate(g,u,d,m);else for(var y=g.length-1;y>=0;y--)(f=g[y])&&(x=(_<3?f(x):_>3?f(u,d,x):f(u,d))||x);return _>3&&x&&Object.defineProperty(u,d,x),x},h=this&&this.__param||function(g,u){return function(d,m){u(d,m,g)}};Object.defineProperty(i,"__esModule",{value:!0}),i.OscLinkProvider=void 0;let l=n(511),c=n(2585),p=i.OscLinkProvider=class{constructor(g,u,d){this._bufferService=g,this._optionsService=u,this._oscLinkService=d}provideLinks(g,u){let d=this._bufferService.buffer.lines.get(g-1);if(!d)return void u(void 0);let m=[],f=this._optionsService.rawOptions.linkHandler,_=new l.CellData,x=d.getTrimmedLength(),y=-1,w=-1,b=!1;for(let S=0;S<x;S++)if(w!==-1||d.hasContent(S)){if(d.loadCell(S,_),_.hasExtendedAttrs()&&_.extended.urlId){if(w===-1){w=S,y=_.extended.urlId;continue}b=_.extended.urlId!==y}else w!==-1&&(b=!0);if(b||w!==-1&&S===x-1){let T=this._oscLinkService.getLinkData(y)?.uri;if(T){let R={start:{x:w+1,y:g},end:{x:S+(b||S!==x-1?0:1),y:g}},E=!1;if(!f?.allowNonHttpProtocols)try{let A=new URL(T);["http:","https:"].includes(A.protocol)||(E=!0)}catch{E=!0}E||m.push({text:T,range:R,activate:(A,B)=>f?f.activate(A,B,R):v(0,B),hover:(A,B)=>f?.hover?.(A,B,R),leave:(A,B)=>f?.leave?.(A,B,R)})}b=!1,_.hasExtendedAttrs()&&_.extended.urlId?(w=S,y=_.extended.urlId):(w=-1,y=-1)}}u(m)}};function v(g,u){if(confirm(`Do you want to navigate to ${u}?
@@ -71,6 +71,11 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
71
71
  .dsh-ssh-adaptive-content {
72
72
  position: relative;
73
73
  z-index: 0;
74
+ overflow: hidden;
75
+ background: var(--ssh-surface);
76
+ -webkit-backdrop-filter: var(--ssh-content-filter);
77
+ backdrop-filter: var(--ssh-content-filter);
78
+ box-shadow: inset 0 1px 0 var(--ssh-card-highlight);
74
79
  }
75
80
  .dsh-ssh-mobile-actions,
76
81
  .dsh-ssh-adaptive-backdrop {
@@ -84,7 +89,7 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
84
89
  min-height: 46px;
85
90
  padding: 5px max(10px, env(safe-area-inset-left)) 5px max(10px, env(safe-area-inset-right));
86
91
  border-bottom: 1px solid var(--ssh-adaptive-border, color-mix(in srgb, currentColor 10%, transparent));
87
- background: var(--ssh-adaptive-toolbar-surface, var(--ssh-glass-regular));
92
+ background: var(--ssh-adaptive-toolbar-surface, var(--ssh-chrome-surface));
88
93
  -webkit-backdrop-filter: var(--ssh-glass-filter);
89
94
  backdrop-filter: var(--ssh-glass-filter);
90
95
  overflow-x: auto;
@@ -154,7 +159,7 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
154
159
  inset: 0;
155
160
  display: block;
156
161
  border: 0;
157
- background: rgba(0, 0, 0, 0.24);
162
+ background: color-mix(in srgb, black 24%, transparent);
158
163
  opacity: 0;
159
164
  visibility: hidden;
160
165
  transition: opacity 170ms ease, visibility 170ms;
@@ -182,6 +187,7 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
182
187
  }
183
188
  }
184
189
  @media (prefers-reduced-transparency: reduce) {
190
+ .dsh-ssh-adaptive-content,
185
191
  .dsh-ssh-mobile-actions,
186
192
  .dsh-ssh-adaptive-navigation,
187
193
  .dsh-ssh-adaptive-inspector {
@@ -800,63 +806,65 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
800
806
  "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;
801
807
  --ssh-font-mono: "SFMono-Regular", "Cascadia Code", "Roboto Mono",
802
808
  "Noto Sans Mono CJK SC", monospace;
803
- --ssh-type-caption: 11px;
804
- --ssh-type-label: 12px;
809
+ --ssh-type-caption: 12px;
810
+ --ssh-type-label: 13px;
805
811
  --ssh-type-body: 13px;
806
- --ssh-type-title: 17px;
812
+ --ssh-type-title: 18px;
807
813
  --ssh-leading-compact: 1.35;
808
814
  --ssh-leading-body: 1.5;
809
- --ssh-control-height: 34px;
810
- --ssh-control-height-compact: 30px;
815
+ --ssh-control-height: 36px;
816
+ --ssh-control-height-compact: 32px;
811
817
  --ssh-control-padding: 15px;
812
- --ssh-control-padding-compact: 11px;
813
- --ssh-canvas: #e9e9ed;
814
- --ssh-panel: rgba(233, 233, 237, 0.72);
818
+ --ssh-control-padding-compact: 12px;
819
+ --ssh-canvas: transparent;
820
+ --ssh-panel: rgba(255, 255, 255, 0.16);
815
821
  --ssh-text: #1d1d1f;
816
822
  --ssh-text-muted: #515154;
817
- --ssh-text-subtle: #6e6e73;
818
- --ssh-host-border: rgba(60, 60, 67, 0.18);
819
- --ssh-hover: rgba(118, 118, 128, 0.1);
823
+ --ssh-text-subtle: #747478;
824
+ --ssh-hover: rgba(118, 118, 128, 0.09);
820
825
  --ssh-selected: rgba(60, 60, 67, 0.085);
821
- --ssh-control: rgba(255, 255, 255, 0.96);
822
- --ssh-accent: #3a3a3c;
823
- --ssh-accent-strong: #1d1d1f;
826
+ --ssh-control: rgba(255, 255, 255, 0.27);
827
+ --ssh-accent: #6e6e73;
828
+ --ssh-accent-strong: #2c2c2e;
824
829
  --ssh-on-accent: #ffffff;
825
830
  --ssh-success: #248a3d;
826
831
  --ssh-danger: #d70015;
827
832
  --ssh-warning: #c93400;
828
- --ssh-surface: var(--ssh-canvas);
829
- --ssh-surface-raised: #ffffff;
833
+ --ssh-surface: rgba(246, 247, 250, 0.17);
834
+ --ssh-surface-raised: rgba(255, 255, 255, 0.38);
835
+ --ssh-chrome-surface: var(--ssh-panel);
836
+ --ssh-card-surface: rgba(255, 255, 255, 0.24);
837
+ --ssh-card-highlight: rgba(255, 255, 255, 0.58);
838
+ --ssh-control-surface: var(--ssh-control);
830
839
  --ssh-tab-selected: color-mix(in srgb, var(--ssh-surface-raised) 84%, var(--ssh-text) 16%);
831
- /* Modal tasks need an opaque semantic plane even when the active theme uses
832
- translucent canvas and panel tokens over artwork. */
833
- --ssh-modal-surface: #ffffff;
834
- --ssh-modal-surface-raised: #f5f5f7;
835
- --ssh-activity-surface: var(--ssh-surface);
836
- --ssh-activity-surface-raised: var(--ssh-surface-raised);
837
- --ssh-border: rgba(60, 60, 67, 0.18);
838
- --ssh-focus-ring: rgba(60, 60, 67, 0.5);
840
+ --ssh-modal-surface: rgba(246, 247, 250, 0.88);
841
+ --ssh-modal-surface-raised: rgba(255, 255, 255, 0.54);
842
+ --ssh-activity-surface: rgba(246, 247, 250, 0.82);
843
+ --ssh-activity-surface-raised: rgba(255, 255, 255, 0.72);
844
+ --ssh-border: rgba(60, 60, 67, 0.14);
845
+ --ssh-host-border: var(--ssh-border);
846
+ --ssh-separator: rgba(60, 60, 67, 0.11);
847
+ --ssh-focus-ring: rgba(60, 60, 67, 0.46);
839
848
  --ssh-scrollbar-thumb: rgba(60, 60, 67, 0.32);
840
849
  --ssh-scrollbar-hover: rgba(60, 60, 67, 0.5);
841
- --ssh-glass-clear: rgba(255, 255, 255, 0.035);
842
- --ssh-glass-regular: rgba(255, 255, 255, 0.075);
843
- --ssh-glass-thick: rgba(255, 255, 255, 0.16);
844
- --ssh-glass-border: rgba(60, 60, 67, 0.065);
845
- --ssh-glass-separator: rgba(60, 60, 67, 0.14);
846
- --ssh-glass-highlight: rgba(255, 255, 255, 0.32);
847
- --ssh-glass-rim-light: rgba(255, 255, 255, 0.52);
848
- --ssh-glass-rim-shadow: rgba(60, 60, 67, 0.12);
850
+ --ssh-glass-clear: rgba(255, 255, 255, 0.11);
851
+ --ssh-glass-regular: rgba(255, 255, 255, 0.24);
852
+ --ssh-glass-thick: rgba(255, 255, 255, 0.42);
853
+ --ssh-glass-border: var(--ssh-border);
854
+ --ssh-glass-separator: var(--ssh-separator);
855
+ --ssh-glass-highlight: var(--ssh-card-highlight);
856
+ --ssh-glass-rim-light: rgba(255, 255, 255, 0.7);
857
+ --ssh-glass-rim-shadow: rgba(60, 60, 67, 0.11);
849
858
  --ssh-border-glow-core: rgba(255, 255, 255, 1);
850
859
  --ssh-border-glow-soft: rgba(142, 142, 147, 0.5);
851
860
  --ssh-border-glow-shadow: rgba(44, 44, 46, 0.64);
852
861
  --ssh-border-glow-haze: rgba(255, 255, 255, 0.72);
853
- --ssh-glass-filter: saturate(1.2) contrast(1.035) blur(20px);
854
- --ssh-ambient-light: rgba(255, 255, 255, 0.28);
855
- --ssh-ambient-shadow: rgba(60, 60, 67, 0.09);
862
+ --ssh-content-filter: saturate(1.08) contrast(1.015) blur(18px);
863
+ --ssh-glass-filter: saturate(1.22) contrast(1.03) blur(32px);
856
864
  --ssh-glass-shadow:
857
865
  inset 0 1px 0 var(--ssh-glass-rim-light),
858
866
  inset 0 -1px 0 var(--ssh-glass-rim-shadow),
859
- 0 10px 28px rgba(0, 0, 0, 0.085);
867
+ 0 10px 28px rgba(31, 31, 35, 0.085);
860
868
  --ssh-control-shadow:
861
869
  0 1px 2px rgba(0, 0, 0, 0.08),
862
870
  0 4px 12px rgba(0, 0, 0, 0.055);
@@ -864,7 +872,8 @@ WARNING: This link could potentially be dangerous`)){let d=window.open();if(d){t
864
872
  0 2px 4px rgba(0, 0, 0, 0.09),
865
873
  0 8px 18px rgba(0, 0, 0, 0.075);
866
874
  --ssh-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
867
- --ssh-shadow-lg: 0 24px 64px rgba(0, 0, 0, 0.2);
875
+ --ssh-shadow-md: 0 10px 28px rgba(31, 31, 35, 0.085);
876
+ --ssh-shadow-lg: 0 24px 64px rgba(31, 31, 35, 0.14);
868
877
  --ssh-terminal-surface: #1c1c1e;
869
878
  --ssh-terminal-raised: #242426;
870
879
  --ssh-terminal-border: rgba(255, 255, 255, 0.12);
@@ -894,47 +903,51 @@ body[data-ds-dark-theme] :is(
894
903
  .dsh-ssh-preview-modal,
895
904
  .dsh-ssh-session-create-modal
896
905
  ) {
897
- --ssh-canvas: #1c1c1e;
898
- --ssh-panel: rgba(44, 44, 46, 0.94);
906
+ --ssh-canvas: transparent;
907
+ --ssh-panel: rgba(8, 10, 12, 0.18);
899
908
  --ssh-text: #f5f5f7;
900
909
  --ssh-text-muted: #d1d1d6;
901
910
  --ssh-text-subtle: #98989d;
902
- --ssh-host-border: rgba(84, 84, 88, 0.65);
903
- --ssh-hover: rgba(255, 255, 255, 0.08);
911
+ --ssh-hover: rgba(255, 255, 255, 0.075);
904
912
  --ssh-selected: rgba(255, 255, 255, 0.09);
905
- --ssh-control: #3a3a3c;
906
- --ssh-accent: #e5e5ea;
907
- --ssh-accent-strong: #ffffff;
913
+ --ssh-control: rgba(8, 10, 12, 0.3);
914
+ --ssh-accent: #aeaeb2;
915
+ --ssh-accent-strong: #f5f5f7;
908
916
  --ssh-on-accent: #1d1d1f;
909
917
  --ssh-success: #30d158;
910
918
  --ssh-danger: #ff453a;
911
919
  --ssh-warning: #ff9f0a;
912
- --ssh-surface: #1c1c1e;
913
- --ssh-surface-raised: #2c2c2e;
920
+ --ssh-surface: rgba(8, 10, 12, 0.19);
921
+ --ssh-surface-raised: rgba(8, 10, 12, 0.42);
922
+ --ssh-chrome-surface: var(--ssh-panel);
923
+ --ssh-card-surface: rgba(7, 9, 11, 0.22);
924
+ --ssh-card-highlight: rgba(255, 255, 255, 0.11);
925
+ --ssh-control-surface: var(--ssh-control);
914
926
  --ssh-tab-selected: color-mix(in srgb, var(--ssh-surface-raised) 84%, var(--ssh-text) 16%);
915
- --ssh-modal-surface: #2c2c2e;
916
- --ssh-modal-surface-raised: #3a3a3c;
917
- --ssh-activity-surface: #1c1c1e;
918
- --ssh-activity-surface-raised: #2c2c2e;
919
- --ssh-border: rgba(84, 84, 88, 0.65);
920
- --ssh-focus-ring: rgba(255, 255, 255, 0.58);
927
+ --ssh-modal-surface: rgba(18, 20, 22, 0.92);
928
+ --ssh-modal-surface-raised: rgba(28, 30, 32, 0.88);
929
+ --ssh-activity-surface: rgba(8, 10, 12, 0.88);
930
+ --ssh-activity-surface-raised: rgba(20, 22, 24, 0.84);
931
+ --ssh-border: rgba(255, 255, 255, 0.105);
932
+ --ssh-host-border: var(--ssh-border);
933
+ --ssh-separator: rgba(255, 255, 255, 0.08);
934
+ --ssh-focus-ring: rgba(255, 255, 255, 0.52);
921
935
  --ssh-scrollbar-thumb: rgba(235, 235, 245, 0.28);
922
936
  --ssh-scrollbar-hover: rgba(235, 235, 245, 0.46);
923
- --ssh-glass-clear: rgba(28, 28, 30, 0.1);
924
- --ssh-glass-regular: rgba(36, 36, 38, 0.22);
925
- --ssh-glass-thick: rgba(44, 44, 46, 0.36);
926
- --ssh-glass-border: rgba(255, 255, 255, 0.1);
927
- --ssh-glass-separator: rgba(255, 255, 255, 0.1);
928
- --ssh-glass-highlight: rgba(255, 255, 255, 0.14);
929
- --ssh-glass-rim-light: rgba(255, 255, 255, 0.18);
937
+ --ssh-glass-clear: rgba(0, 0, 0, 0.1);
938
+ --ssh-glass-regular: rgba(0, 0, 0, 0.16);
939
+ --ssh-glass-thick: rgba(0, 0, 0, 0.26);
940
+ --ssh-glass-border: var(--ssh-border);
941
+ --ssh-glass-separator: var(--ssh-separator);
942
+ --ssh-glass-highlight: var(--ssh-card-highlight);
943
+ --ssh-glass-rim-light: rgba(255, 255, 255, 0.16);
930
944
  --ssh-glass-rim-shadow: rgba(0, 0, 0, 0.3);
931
945
  --ssh-border-glow-core: rgba(255, 255, 255, 0.6);
932
946
  --ssh-border-glow-soft: rgba(209, 209, 214, 0.24);
933
947
  --ssh-border-glow-shadow: rgba(0, 0, 0, 0.46);
934
948
  --ssh-border-glow-haze: rgba(235, 235, 245, 0.22);
935
- --ssh-glass-filter: saturate(1.22) contrast(1.04) blur(22px);
936
- --ssh-ambient-light: rgba(255, 255, 255, 0.055);
937
- --ssh-ambient-shadow: rgba(0, 0, 0, 0.3);
949
+ --ssh-content-filter: saturate(1.04) contrast(1.02) blur(18px);
950
+ --ssh-glass-filter: saturate(1.22) contrast(1.03) blur(32px);
938
951
  --ssh-glass-shadow:
939
952
  inset 0 1px 0 var(--ssh-glass-rim-light),
940
953
  inset 0 -1px 0 var(--ssh-glass-rim-shadow),
@@ -946,6 +959,7 @@ body[data-ds-dark-theme] :is(
946
959
  0 2px 5px rgba(0, 0, 0, 0.28),
947
960
  0 9px 20px rgba(0, 0, 0, 0.24);
948
961
  --ssh-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.28);
962
+ --ssh-shadow-md: 0 12px 32px rgba(0, 0, 0, 0.34);
949
963
  --ssh-shadow-lg: 0 28px 72px rgba(0, 0, 0, 0.48);
950
964
  color-scheme: dark;
951
965
  }
@@ -1127,7 +1141,7 @@ body[data-ds-dark-theme] :is(
1127
1141
  }
1128
1142
  .dsh-ssh-sidebar-copy small {
1129
1143
  color: var(--ssh-text-subtle);
1130
- font-size: 10px;
1144
+ font-size: var(--ssh-type-caption);
1131
1145
  }
1132
1146
  .dsh-ssh-injected-mark {
1133
1147
  display: inline-flex;
@@ -1138,7 +1152,7 @@ body[data-ds-dark-theme] :is(
1138
1152
  border-radius: 6px;
1139
1153
  color: var(--ssh-success);
1140
1154
  background: color-mix(in srgb, var(--ssh-success) 8%, transparent);
1141
- font-size: 10px;
1155
+ font-size: var(--ssh-type-caption);
1142
1156
  font-weight: 650;
1143
1157
  line-height: 1;
1144
1158
  white-space: nowrap;
@@ -1184,9 +1198,9 @@ body[data-ds-dark-theme] :is(
1184
1198
  --ssh-adaptive-border: var(--ssh-border);
1185
1199
  --ssh-adaptive-accent: var(--ssh-accent);
1186
1200
  --ssh-adaptive-accent-strong: var(--ssh-accent-strong);
1187
- --ssh-adaptive-raised-surface: var(--ssh-surface-raised);
1188
- --ssh-adaptive-toolbar-surface: var(--ssh-glass-regular);
1189
- --ssh-adaptive-drawer-surface: var(--ssh-glass-thick);
1201
+ --ssh-adaptive-raised-surface: var(--ssh-card-surface);
1202
+ --ssh-adaptive-toolbar-surface: var(--ssh-chrome-surface);
1203
+ --ssh-adaptive-drawer-surface: var(--ssh-activity-surface);
1190
1204
  }
1191
1205
  .dsh-ssh-workspace *,
1192
1206
  .dsh-ssh-workspace *::before,
@@ -1395,11 +1409,7 @@ body[data-ds-dark-theme] :is(
1395
1409
  min-width: 0;
1396
1410
  min-height: 0;
1397
1411
  color: var(--ssh-text);
1398
- background:
1399
- radial-gradient(circle at 8% 0%, var(--ssh-ambient-light), transparent 34%),
1400
- radial-gradient(circle at 96% 6%, var(--ssh-ambient-shadow), transparent 31%),
1401
- linear-gradient(145deg, color-mix(in srgb, var(--ssh-surface-raised) 32%, transparent), transparent 58%),
1402
- var(--ssh-canvas);
1412
+ background: var(--ssh-canvas);
1403
1413
  font-family: var(--ssh-font-sans);
1404
1414
  }
1405
1415
  .dsh-ssh-toolbar {
@@ -1412,7 +1422,7 @@ body[data-ds-dark-theme] :is(
1412
1422
  padding: 0 20px;
1413
1423
  border: 1px solid var(--ssh-glass-border);
1414
1424
  border-radius: 18px;
1415
- background: var(--ssh-glass-regular);
1425
+ background: var(--ssh-chrome-surface);
1416
1426
  -webkit-backdrop-filter: var(--ssh-glass-filter);
1417
1427
  backdrop-filter: var(--ssh-glass-filter);
1418
1428
  box-shadow: var(--ssh-glass-shadow);
@@ -1443,7 +1453,7 @@ body[data-ds-dark-theme] :is(
1443
1453
  }
1444
1454
  .dsh-ssh-brand small {
1445
1455
  color: var(--ssh-text-subtle);
1446
- font-size: 10px;
1456
+ font-size: var(--ssh-type-caption);
1447
1457
  }
1448
1458
  .dsh-ssh-segments {
1449
1459
  display: flex;
@@ -1617,7 +1627,7 @@ body[data-ds-dark-theme] :is(
1617
1627
  border-radius: 8px;
1618
1628
  outline: 0;
1619
1629
  color: var(--ssh-text);
1620
- background: color-mix(in srgb, var(--ssh-surface-raised) 92%, transparent);
1630
+ background: var(--ssh-control-surface);
1621
1631
  font: 400 12px/1.35 var(--ssh-font-sans);
1622
1632
  }
1623
1633
  .dsh-ssh-search input {
@@ -1640,8 +1650,8 @@ body[data-ds-dark-theme] :is(
1640
1650
  border: 1px solid var(--ssh-border);
1641
1651
  border-radius: 8px;
1642
1652
  color: var(--ssh-text-muted);
1643
- background: var(--ssh-surface-raised);
1644
- font-size: 11px;
1653
+ background: var(--ssh-card-surface);
1654
+ font-size: var(--ssh-type-caption);
1645
1655
  font-weight: 650;
1646
1656
  }
1647
1657
  .dsh-ssh-terminal-pane,
@@ -1670,7 +1680,7 @@ body[data-ds-dark-theme] :is(
1670
1680
  .dsh-ssh-content-heading p {
1671
1681
  margin: 4px 0 0;
1672
1682
  color: var(--ssh-text-subtle);
1673
- font-size: 11px;
1683
+ font-size: var(--ssh-type-caption);
1674
1684
  }
1675
1685
  .dsh-ssh-heading-actions {
1676
1686
  display: flex;
@@ -1710,7 +1720,7 @@ body[data-ds-dark-theme] :is(
1710
1720
  border: 1px solid var(--ssh-terminal-border);
1711
1721
  border-radius: 12px;
1712
1722
  background: var(--ssh-terminal-surface);
1713
- box-shadow: 0 12px 30px rgba(0, 0, 0, 0.16);
1723
+ box-shadow: var(--ssh-shadow-md);
1714
1724
  }
1715
1725
  .dsh-ssh-xterm {
1716
1726
  box-sizing: border-box;
@@ -1763,8 +1773,7 @@ body[data-ds-dark-theme] :is(
1763
1773
  border-top: 1px solid var(--ssh-terminal-border);
1764
1774
  color: var(--ssh-terminal-muted);
1765
1775
  background: var(--ssh-terminal-raised);
1766
- font:
1767
- 10px/1 var(--ssh-font-mono),
1776
+ font: var(--ssh-type-caption)/1 var(--ssh-font-mono),
1768
1777
  monospace;
1769
1778
  }
1770
1779
  .dsh-ssh-banner {
@@ -1774,7 +1783,7 @@ body[data-ds-dark-theme] :is(
1774
1783
  gap: 16px;
1775
1784
  padding: 8px 18px;
1776
1785
  border-bottom: 1px solid transparent;
1777
- font-size: 11px;
1786
+ font-size: var(--ssh-type-caption);
1778
1787
  }
1779
1788
  .dsh-ssh-banner > span {
1780
1789
  display: flex;
@@ -1811,7 +1820,7 @@ body[data-ds-dark-theme] :is(
1811
1820
  border-radius: 7px;
1812
1821
  color: var(--ssh-danger);
1813
1822
  background: color-mix(in srgb, var(--ssh-danger) 7%, transparent);
1814
- font-size: 11px;
1823
+ font-size: var(--ssh-type-caption);
1815
1824
  }
1816
1825
  .dsh-ssh-empty-state {
1817
1826
  display: grid;
@@ -1830,7 +1839,7 @@ body[data-ds-dark-theme] :is(
1830
1839
  border: 1px solid var(--ssh-border);
1831
1840
  border-radius: 14px;
1832
1841
  color: var(--ssh-accent);
1833
- background: var(--ssh-surface-raised);
1842
+ background: var(--ssh-card-surface);
1834
1843
  }
1835
1844
  .dsh-ssh-empty-state h1 {
1836
1845
  margin: 0;
@@ -1853,18 +1862,19 @@ body[data-ds-dark-theme] :is(
1853
1862
  padding: 7px 10px;
1854
1863
  border: 1px solid var(--ssh-border);
1855
1864
  border-radius: 10px;
1865
+ background: var(--ssh-card-surface);
1856
1866
  }
1857
1867
  .dsh-ssh-switch-row > span {
1858
1868
  display: grid;
1859
1869
  gap: 3px;
1860
1870
  }
1861
1871
  .dsh-ssh-switch-row strong {
1862
- font-size: 11px;
1872
+ font-size: var(--ssh-type-caption);
1863
1873
  font-weight: 550;
1864
1874
  }
1865
1875
  .dsh-ssh-switch-row small {
1866
1876
  color: var(--ssh-text-subtle);
1867
- font-size: 10px;
1877
+ font-size: var(--ssh-type-caption);
1868
1878
  line-height: 1.35;
1869
1879
  }
1870
1880
  .dsh-ssh-switch-row input {
@@ -1885,7 +1895,7 @@ body[data-ds-dark-theme] :is(
1885
1895
  padding: 6px 10px;
1886
1896
  border: 1px solid var(--ssh-border);
1887
1897
  border-radius: 10px;
1888
- background: color-mix(in srgb, var(--ssh-surface-raised) 88%, transparent);
1898
+ background: var(--ssh-card-surface);
1889
1899
  }
1890
1900
  .dsh-ssh-forward-kind {
1891
1901
  display: grid;
@@ -1895,8 +1905,7 @@ body[data-ds-dark-theme] :is(
1895
1905
  border: 1px solid var(--ssh-border);
1896
1906
  border-radius: 8px;
1897
1907
  color: var(--ssh-accent-strong);
1898
- font:
1899
- 600 11px/1 var(--ssh-font-mono),
1908
+ font: 600 var(--ssh-type-caption)/1 var(--ssh-font-mono),
1900
1909
  monospace;
1901
1910
  }
1902
1911
  .dsh-ssh-forward-copy {
@@ -1910,8 +1919,7 @@ body[data-ds-dark-theme] :is(
1910
1919
  .dsh-ssh-forward-copy small {
1911
1920
  overflow: hidden;
1912
1921
  color: var(--ssh-text-subtle);
1913
- font:
1914
- 10px/1 var(--ssh-font-mono),
1922
+ font: var(--ssh-type-caption)/1 var(--ssh-font-mono),
1915
1923
  monospace;
1916
1924
  text-overflow: ellipsis;
1917
1925
  white-space: nowrap;
@@ -1925,7 +1933,7 @@ body[data-ds-dark-theme] :is(
1925
1933
  var(--ssh-text) 5%,
1926
1934
  transparent
1927
1935
  );
1928
- font-size: 10px;
1936
+ font-size: var(--ssh-type-caption);
1929
1937
  }
1930
1938
  .dsh-ssh-state-label.is-running {
1931
1939
  color: var(--ssh-success);
@@ -1961,18 +1969,18 @@ body[data-ds-dark-theme] :is(
1961
1969
  padding: 6px 10px;
1962
1970
  border: 1px solid var(--ssh-border);
1963
1971
  border-radius: 10px;
1964
- background: color-mix(in srgb, var(--ssh-surface-raised) 80%, transparent);
1972
+ background: var(--ssh-card-surface);
1965
1973
  }
1966
1974
  .dsh-ssh-number-row > span {
1967
1975
  display: grid;
1968
1976
  gap: 3px;
1969
1977
  }
1970
1978
  .dsh-ssh-number-row strong {
1971
- font-size: 11px;
1979
+ font-size: var(--ssh-type-caption);
1972
1980
  }
1973
1981
  .dsh-ssh-number-row small {
1974
1982
  color: var(--ssh-text-subtle);
1975
- font-size: 10px;
1983
+ font-size: var(--ssh-type-caption);
1976
1984
  }
1977
1985
  .dsh-ssh-number-row input {
1978
1986
  height: 30px;
@@ -1980,7 +1988,7 @@ body[data-ds-dark-theme] :is(
1980
1988
  }
1981
1989
  .dsh-ssh-number-row em {
1982
1990
  color: var(--ssh-text-subtle);
1983
- font-size: 10px;
1991
+ font-size: var(--ssh-type-caption);
1984
1992
  font-style: normal;
1985
1993
  }
1986
1994
  .dsh-ssh-dialog-modal {
@@ -2008,7 +2016,7 @@ body[data-ds-dark-theme] :is(
2008
2016
  border: 1px solid var(--ssh-glass-border);
2009
2017
  border-radius: 14px;
2010
2018
  color: var(--ssh-text);
2011
- background: var(--ssh-glass-thick);
2019
+ background: var(--ssh-modal-surface);
2012
2020
  -webkit-backdrop-filter: var(--ssh-glass-filter);
2013
2021
  backdrop-filter: var(--ssh-glass-filter);
2014
2022
  box-shadow: var(--ssh-glass-shadow), var(--ssh-shadow-lg);
@@ -2032,7 +2040,7 @@ body[data-ds-dark-theme] :is(
2032
2040
  --ssh-border,
2033
2041
  color-mix(in srgb, var(--ssh-text) 10%, transparent)
2034
2042
  );
2035
- background: color-mix(in srgb, var(--ssh-glass-regular) 88%, transparent);
2043
+ background: color-mix(in srgb, var(--ssh-modal-surface-raised) 88%, transparent);
2036
2044
  -webkit-backdrop-filter: saturate(1.25) blur(20px);
2037
2045
  backdrop-filter: saturate(1.25) blur(20px);
2038
2046
  }
@@ -2045,7 +2053,7 @@ body[data-ds-dark-theme] :is(
2045
2053
  .dsh-ssh-dialog header p {
2046
2054
  margin: 3px 0 0;
2047
2055
  color: var(--ssh-text-subtle);
2048
- font-size: 11px;
2056
+ font-size: var(--ssh-type-caption);
2049
2057
  }
2050
2058
  .dsh-ssh-form {
2051
2059
  --ssh-border: color-mix(
@@ -2063,7 +2071,7 @@ body[data-ds-dark-theme] :is(
2063
2071
  padding: 14px;
2064
2072
  border: 1px solid color-mix(in srgb, var(--ssh-border) 78%, transparent);
2065
2073
  border-radius: var(--ssh-radius-surface);
2066
- background: var(--ssh-modal-surface-raised);
2074
+ background: color-mix(in srgb, var(--ssh-modal-surface-raised) 74%, transparent);
2067
2075
  }
2068
2076
  .dsh-ssh-form-section-heading {
2069
2077
  display: grid;
@@ -2077,7 +2085,7 @@ body[data-ds-dark-theme] :is(
2077
2085
  }
2078
2086
  .dsh-ssh-form-section-heading small {
2079
2087
  color: var(--ssh-text-subtle);
2080
- font-size: 10px;
2088
+ font-size: var(--ssh-type-caption);
2081
2089
  line-height: 1.4;
2082
2090
  }
2083
2091
  .dsh-ssh-form-grid {
@@ -2111,7 +2119,7 @@ body[data-ds-dark-theme] :is(
2111
2119
  }
2112
2120
  .dsh-ssh-field small {
2113
2121
  color: var(--ssh-text-subtle);
2114
- font-size: 11px;
2122
+ font-size: var(--ssh-type-caption);
2115
2123
  line-height: 1.4;
2116
2124
  font-weight: 400;
2117
2125
  }
@@ -2121,7 +2129,7 @@ body[data-ds-dark-theme] :is(
2121
2129
  gap: 10px;
2122
2130
  margin-top: 2px;
2123
2131
  color: var(--ssh-text-subtle);
2124
- font-size: 11px;
2132
+ font-size: var(--ssh-type-caption);
2125
2133
  font-weight: 600;
2126
2134
  }
2127
2135
  .dsh-ssh-form-divider:after {
@@ -2161,7 +2169,7 @@ body[data-ds-dark-theme] :is(
2161
2169
  .dsh-ssh-delete-profile > div:nth-child(2) { min-width: 0; }
2162
2170
  .dsh-ssh-delete-profile > div:nth-child(2) strong { font-size: 13px; }
2163
2171
  .dsh-ssh-delete-profile > div:nth-child(2) p,
2164
- .dsh-ssh-delete-profile-block p { margin: 4px 0 0; color: var(--ssh-text-subtle); font-size: 11px; line-height: 1.55; }
2172
+ .dsh-ssh-delete-profile-block p { margin: 4px 0 0; color: var(--ssh-text-subtle); font-size: var(--ssh-type-caption); line-height: 1.55; }
2165
2173
  .dsh-ssh-delete-profile-block,
2166
2174
  .dsh-ssh-delete-profile > .dsh-ssh-inline-error,
2167
2175
  .dsh-ssh-delete-profile > .dsh-ssh-dialog-actions { grid-column: 1 / -1; }
@@ -2171,7 +2179,7 @@ body[data-ds-dark-theme] :is(
2171
2179
  padding: 10px 11px;
2172
2180
  background: color-mix(in srgb, var(--ssh-warning) 7%, transparent);
2173
2181
  }
2174
- .dsh-ssh-delete-profile-block strong { color: color-mix(in srgb, var(--ssh-warning) 82%, var(--ssh-text)); font-size: 11px; }
2182
+ .dsh-ssh-delete-profile-block strong { color: color-mix(in srgb, var(--ssh-warning) 82%, var(--ssh-text)); font-size: var(--ssh-type-caption); }
2175
2183
  .dsh-ssh-form .dsh-ssh-switch-row {
2176
2184
  margin: 0;
2177
2185
  }
@@ -2333,7 +2341,18 @@ body[data-ds-dark-theme] :is(
2333
2341
  .dsh-ssh-dialog-modal,
2334
2342
  .dsh-ssh-preview-modal,
2335
2343
  .dsh-ssh-session-create-modal {
2336
- --ssh-panel: #ffffff;
2344
+ --ssh-canvas: #e9e9ed;
2345
+ --ssh-panel: #f2f3f7;
2346
+ --ssh-surface: #f2f3f7;
2347
+ --ssh-surface-raised: #f8f8fa;
2348
+ --ssh-card-surface: #f8f8fa;
2349
+ --ssh-control: #ffffff;
2350
+ --ssh-control-surface: #ffffff;
2351
+ --ssh-chrome-surface: #f2f3f7;
2352
+ --ssh-modal-surface: #f8f8fa;
2353
+ --ssh-modal-surface-raised: #ffffff;
2354
+ --ssh-activity-surface: #f2f3f7;
2355
+ --ssh-activity-surface-raised: #ffffff;
2337
2356
  }
2338
2357
  body[data-ds-dark-theme] :is(
2339
2358
  .dsh-ssh-sidebar,
@@ -2343,7 +2362,18 @@ body[data-ds-dark-theme] :is(
2343
2362
  .dsh-ssh-preview-modal,
2344
2363
  .dsh-ssh-session-create-modal
2345
2364
  ) {
2365
+ --ssh-canvas: #1c1c1e;
2346
2366
  --ssh-panel: #2c2c2e;
2367
+ --ssh-surface: #2c2c2e;
2368
+ --ssh-surface-raised: #323235;
2369
+ --ssh-card-surface: #323235;
2370
+ --ssh-control: #3a3a3c;
2371
+ --ssh-control-surface: #3a3a3c;
2372
+ --ssh-chrome-surface: #2c2c2e;
2373
+ --ssh-modal-surface: #2c2c2e;
2374
+ --ssh-modal-surface-raised: #3a3a3c;
2375
+ --ssh-activity-surface: #1c1c1e;
2376
+ --ssh-activity-surface-raised: #2c2c2e;
2347
2377
  }
2348
2378
  .dsh-ssh-dialog > header,
2349
2379
  .dsh-ssh-toolbar,
@@ -2407,7 +2437,7 @@ body[data-ds-dark-theme] :is(
2407
2437
  min-height: 0;
2408
2438
  flex-direction: column;
2409
2439
  color: var(--ssh-text);
2410
- background: var(--ssh-glass-thick);
2440
+ background: var(--ssh-activity-surface);
2411
2441
  -webkit-backdrop-filter: var(--ssh-glass-filter);
2412
2442
  backdrop-filter: var(--ssh-glass-filter);
2413
2443
  box-shadow: inset 1px 0 0 var(--ssh-glass-border);
@@ -2423,7 +2453,7 @@ body[data-ds-dark-theme] :is(
2423
2453
  padding: 0 14px 0 16px;
2424
2454
  border: 1px solid var(--ssh-glass-border);
2425
2455
  border-radius: 17px;
2426
- background: var(--ssh-glass-regular);
2456
+ background: var(--ssh-chrome-surface);
2427
2457
  -webkit-backdrop-filter: var(--ssh-glass-filter);
2428
2458
  backdrop-filter: var(--ssh-glass-filter);
2429
2459
  box-shadow: var(--ssh-glass-shadow);
@@ -2457,8 +2487,7 @@ body[data-ds-dark-theme] :is(
2457
2487
  .dsh-ssh-activity-header small {
2458
2488
  overflow: hidden;
2459
2489
  color: var(--ssh-text-subtle);
2460
- font:
2461
- 10px/1.25 var(--ssh-font-mono),
2490
+ font: var(--ssh-type-caption)/1.25 var(--ssh-font-mono),
2462
2491
  monospace;
2463
2492
  text-overflow: ellipsis;
2464
2493
  white-space: nowrap;
@@ -2490,7 +2519,7 @@ body[data-ds-dark-theme] :is(
2490
2519
  border-radius: 7px;
2491
2520
  color: var(--ssh-text-muted);
2492
2521
  background: transparent;
2493
- font: 550 11px/1 var(--ssh-font-sans);
2522
+ font: 550 var(--ssh-type-caption)/1 var(--ssh-font-sans);
2494
2523
  cursor: pointer;
2495
2524
  }
2496
2525
  .dsh-ssh-activity-tabs button:hover {
@@ -2518,7 +2547,7 @@ body[data-ds-dark-theme] :is(
2518
2547
  .dsh-ssh-activity-state {
2519
2548
  margin: 20px 4px;
2520
2549
  color: var(--ssh-text-subtle);
2521
- font-size: 11px;
2550
+ font-size: var(--ssh-type-caption);
2522
2551
  }
2523
2552
  .dsh-ssh-sftp {
2524
2553
  position: relative;
@@ -2559,7 +2588,7 @@ body[data-ds-dark-theme] :is(
2559
2588
  .dsh-ssh-sftp-dropzone small {
2560
2589
  overflow: hidden;
2561
2590
  color: var(--ssh-text-subtle);
2562
- font: 10px/1.4 var(--ssh-font-mono), monospace;
2591
+ font: var(--ssh-type-caption)/1.4 var(--ssh-font-mono), monospace;
2563
2592
  text-overflow: ellipsis;
2564
2593
  white-space: nowrap;
2565
2594
  }
@@ -2597,8 +2626,7 @@ body[data-ds-dark-theme] :is(
2597
2626
  .dsh-ssh-sftp-hostbar small {
2598
2627
  overflow: hidden;
2599
2628
  color: var(--ssh-text-subtle);
2600
- font:
2601
- 10px/1.2 var(--ssh-font-mono),
2629
+ font: var(--ssh-type-caption)/1.2 var(--ssh-font-mono),
2602
2630
  monospace;
2603
2631
  text-overflow: ellipsis;
2604
2632
  white-space: nowrap;
@@ -2635,8 +2663,7 @@ body[data-ds-dark-theme] :is(
2635
2663
  min-width: 0;
2636
2664
  padding: 0 10px;
2637
2665
  outline: 0;
2638
- font:
2639
- 10px/1 var(--ssh-font-mono),
2666
+ font: var(--ssh-type-caption)/1 var(--ssh-font-mono),
2640
2667
  monospace;
2641
2668
  }
2642
2669
  .dsh-ssh-sftp-pathbar .dsh-ssh-sftp-upload-button {
@@ -2646,7 +2673,7 @@ body[data-ds-dark-theme] :is(
2646
2673
  padding: 0 10px;
2647
2674
  color: var(--ssh-on-accent);
2648
2675
  background: var(--ssh-accent);
2649
- font: 550 10px/1 var(--ssh-font-sans);
2676
+ font: 550 var(--ssh-type-caption)/1 var(--ssh-font-sans);
2650
2677
  }
2651
2678
  .dsh-ssh-directory-error {
2652
2679
  margin: 0 0 8px;
@@ -2654,7 +2681,7 @@ body[data-ds-dark-theme] :is(
2654
2681
  border-radius: 7px;
2655
2682
  color: var(--ssh-danger);
2656
2683
  background: color-mix(in srgb, var(--ssh-danger) 7%, transparent);
2657
- font-size: 10px;
2684
+ font-size: var(--ssh-type-caption);
2658
2685
  line-height: 1.4;
2659
2686
  }
2660
2687
  .dsh-ssh-sftp-table {
@@ -2682,7 +2709,7 @@ body[data-ds-dark-theme] :is(
2682
2709
  border-bottom: 1px solid var(--ssh-activity-border);
2683
2710
  color: var(--ssh-text-subtle);
2684
2711
  background: var(--ssh-activity-surface);
2685
- font-size: 10px;
2712
+ font-size: var(--ssh-type-caption);
2686
2713
  }
2687
2714
  .dsh-ssh-sftp-row {
2688
2715
  box-sizing: border-box;
@@ -2730,7 +2757,7 @@ body[data-ds-dark-theme] :is(
2730
2757
  }
2731
2758
  .dsh-ssh-sftp-row strong {
2732
2759
  overflow: hidden;
2733
- font-size: 11px;
2760
+ font-size: var(--ssh-type-caption);
2734
2761
  font-weight: 500;
2735
2762
  line-height: 1.3;
2736
2763
  text-overflow: ellipsis;
@@ -2739,8 +2766,7 @@ body[data-ds-dark-theme] :is(
2739
2766
  .dsh-ssh-sftp-row small {
2740
2767
  overflow: hidden;
2741
2768
  color: var(--ssh-text-subtle);
2742
- font:
2743
- 10px/1.25 var(--ssh-font-mono),
2769
+ font: var(--ssh-type-caption)/1.25 var(--ssh-font-mono),
2744
2770
  monospace;
2745
2771
  text-overflow: ellipsis;
2746
2772
  white-space: nowrap;
@@ -2749,7 +2775,7 @@ body[data-ds-dark-theme] :is(
2749
2775
  .dsh-ssh-sftp-row-delete:hover { color: var(--ssh-danger); background: color-mix(in srgb, var(--ssh-danger) 8%, transparent); }
2750
2776
  .dsh-ssh-sftp-row-delete:active { transform: scale(.94); }
2751
2777
  .dsh-ssh-sftp-row-delete:focus-visible { outline: 2px solid color-mix(in srgb, var(--ssh-danger) 42%, transparent); outline-offset: 1px; }
2752
- .dsh-ssh-sftp-operation-status { display: flex; min-height: 30px; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 8px; padding: 0 8px 0 10px; border: 1px solid var(--ssh-activity-border); border-radius: 8px; color: var(--ssh-text-muted); background: var(--ssh-activity-surface-raised); font-size: 10px; }
2778
+ .dsh-ssh-sftp-operation-status { display: flex; min-height: 30px; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 8px; padding: 0 8px 0 10px; border: 1px solid var(--ssh-activity-border); border-radius: 8px; color: var(--ssh-text-muted); background: var(--ssh-activity-surface-raised); font-size: var(--ssh-type-caption); }
2753
2779
  .dsh-ssh-sftp-operation-status button { display: grid; width: 24px; height: 24px; place-items: center; padding: 0; border: 0; border-radius: 6px; color: var(--ssh-text-subtle); background: transparent; cursor: pointer; }
2754
2780
  .dsh-ssh-sftp-operation-status button:hover { color: var(--ssh-text); background: var(--ssh-hover); }
2755
2781
  .dsh-ssh-sftp-state {
@@ -2758,7 +2784,7 @@ body[data-ds-dark-theme] :is(
2758
2784
  min-height: 160px;
2759
2785
  margin: 0;
2760
2786
  color: var(--ssh-text-subtle);
2761
- font-size: 10px;
2787
+ font-size: var(--ssh-type-caption);
2762
2788
  }
2763
2789
  .dsh-ssh-activity-empty {
2764
2790
  display: grid;
@@ -2779,7 +2805,7 @@ body[data-ds-dark-theme] :is(
2779
2805
  max-width: 260px;
2780
2806
  margin: 7px 0 0;
2781
2807
  color: var(--ssh-text-subtle);
2782
- font-size: 10px;
2808
+ font-size: var(--ssh-type-caption);
2783
2809
  line-height: 1.5;
2784
2810
  }
2785
2811
  .dsh-ssh-terminal-observer {
@@ -2791,7 +2817,7 @@ body[data-ds-dark-theme] :is(
2791
2817
  border: 1px solid var(--ssh-terminal-border);
2792
2818
  border-radius: 12px;
2793
2819
  background: var(--ssh-terminal-surface);
2794
- box-shadow: 0 10px 26px rgba(0, 0, 0, 0.16);
2820
+ box-shadow: var(--ssh-shadow-md);
2795
2821
  }
2796
2822
  .dsh-ssh-terminal-observer-heading {
2797
2823
  display: flex;
@@ -2820,14 +2846,13 @@ body[data-ds-dark-theme] :is(
2820
2846
  }
2821
2847
  .dsh-ssh-terminal-observer-heading small {
2822
2848
  color: var(--ssh-terminal-muted);
2823
- font:
2824
- 10px/1.2 var(--ssh-font-mono),
2849
+ font: var(--ssh-type-caption)/1.2 var(--ssh-font-mono),
2825
2850
  monospace;
2826
2851
  }
2827
2852
  .dsh-ssh-terminal-state {
2828
2853
  flex: none;
2829
2854
  color: var(--ssh-terminal-muted);
2830
- font-size: 10px;
2855
+ font-size: var(--ssh-type-caption);
2831
2856
  }
2832
2857
  .dsh-ssh-terminal-state.is-running {
2833
2858
  color: var(--ssh-success);
@@ -2849,14 +2874,14 @@ body[data-ds-dark-theme] :is(
2849
2874
  border: 1px solid var(--ssh-terminal-border);
2850
2875
  border-radius: 7px;
2851
2876
  color: var(--ssh-terminal-muted);
2852
- background: rgba(255, 255, 255, 0.03);
2853
- font: 550 10px/1 var(--ssh-font-sans);
2877
+ background: color-mix(in srgb, var(--ssh-terminal-text) 3%, transparent);
2878
+ font: 550 var(--ssh-type-caption)/1 var(--ssh-font-sans);
2854
2879
  cursor: pointer;
2855
2880
  transition: color 120ms ease, border-color 120ms ease, background 120ms ease, transform 120ms ease;
2856
2881
  }
2857
2882
  .dsh-ssh-terminal-close:hover:not(:disabled) {
2858
2883
  border-color: color-mix(in srgb, var(--ssh-danger) 34%, transparent);
2859
- color: #ff6961;
2884
+ color: var(--ssh-danger);
2860
2885
  background: color-mix(in srgb, var(--ssh-danger) 10%, transparent);
2861
2886
  }
2862
2887
  .dsh-ssh-terminal-close:active:not(:disabled) { transform: scale(.97); }
@@ -2906,11 +2931,11 @@ body[data-ds-dark-theme] :is(
2906
2931
  white-space: nowrap;
2907
2932
  }
2908
2933
  .dsh-ssh-file-preview-title strong {
2909
- font-size: 10px;
2934
+ font-size: var(--ssh-type-caption);
2910
2935
  }
2911
2936
  .dsh-ssh-file-preview-title small {
2912
2937
  color: var(--ssh-text-subtle);
2913
- font-size: 10px;
2938
+ font-size: var(--ssh-type-caption);
2914
2939
  }
2915
2940
  .dsh-ssh-file-preview-actions {
2916
2941
  display: flex;
@@ -2950,8 +2975,7 @@ body[data-ds-dark-theme] :is(
2950
2975
  padding: 12px;
2951
2976
  color: var(--ssh-text);
2952
2977
  background: transparent;
2953
- font:
2954
- 10px/1.55 var(--ssh-font-mono),
2978
+ font: var(--ssh-type-caption)/1.55 var(--ssh-font-mono),
2955
2979
  monospace;
2956
2980
  white-space: pre-wrap;
2957
2981
  overflow-wrap: anywhere;
@@ -3027,7 +3051,7 @@ body[data-ds-dark-theme] :is(
3027
3051
  .dsh-ssh-markdown-preview pre code {
3028
3052
  padding: 0;
3029
3053
  background: transparent;
3030
- font-size: 11px;
3054
+ font-size: var(--ssh-type-caption);
3031
3055
  }
3032
3056
  .dsh-ssh-markdown-preview a {
3033
3057
  color: var(--ssh-accent-strong);
@@ -3068,7 +3092,7 @@ body[data-ds-dark-theme] :is(
3068
3092
  .dsh-ssh-file-preview-body > small {
3069
3093
  padding: 8px 12px;
3070
3094
  color: var(--ssh-text-subtle);
3071
- font-size: 10px;
3095
+ font-size: var(--ssh-type-caption);
3072
3096
  }
3073
3097
  .dsh-ssh-file-preview-body > img {
3074
3098
  display: block;
@@ -3082,7 +3106,7 @@ body[data-ds-dark-theme] :is(
3082
3106
  height: 100%;
3083
3107
  min-height: 420px;
3084
3108
  border: 0;
3085
- background: #fff;
3109
+ background: var(--ssh-modal-surface-raised);
3086
3110
  }
3087
3111
  .dsh-ssh-preview-modal {
3088
3112
  --ssh-surface: var(--ssh-modal-surface);
@@ -3095,7 +3119,7 @@ body[data-ds-dark-theme] :is(
3095
3119
  border-color: var(--ssh-glass-border);
3096
3120
  border-radius: 16px;
3097
3121
  color: var(--ssh-text);
3098
- background: var(--ssh-glass-thick);
3122
+ background: var(--ssh-modal-surface);
3099
3123
  -webkit-backdrop-filter: var(--ssh-glass-filter);
3100
3124
  backdrop-filter: var(--ssh-glass-filter);
3101
3125
  box-shadow: var(--ssh-glass-shadow), var(--ssh-shadow-lg);
@@ -3119,7 +3143,7 @@ body[data-ds-dark-theme] :is(
3119
3143
  gap: 16px;
3120
3144
  padding: 0 14px 0 18px;
3121
3145
  border-bottom: 1px solid var(--ssh-glass-separator);
3122
- background: var(--ssh-glass-regular);
3146
+ background: var(--ssh-modal-surface-raised);
3123
3147
  }
3124
3148
  .dsh-ssh-preview-modal-shell > header > span:first-child {
3125
3149
  display: grid;
@@ -3132,7 +3156,7 @@ body[data-ds-dark-theme] :is(
3132
3156
  }
3133
3157
  .dsh-ssh-preview-modal-shell > header small {
3134
3158
  color: var(--ssh-text-subtle);
3135
- font-size: 10px;
3159
+ font-size: var(--ssh-type-caption);
3136
3160
  }
3137
3161
  .dsh-ssh-file-preview-body.is-modal > pre {
3138
3162
  padding: 22px 24px 40px;
@@ -3158,12 +3182,12 @@ body[data-ds-dark-theme] :is(
3158
3182
  color: var(--ssh-text-subtle);
3159
3183
  }
3160
3184
  .dsh-ssh-file-binary strong {
3161
- font-size: 11px;
3185
+ font-size: var(--ssh-type-caption);
3162
3186
  }
3163
3187
  .dsh-ssh-file-binary p {
3164
3188
  margin: 5px 0 12px;
3165
3189
  color: var(--ssh-text-subtle);
3166
- font-size: 10px;
3190
+ font-size: var(--ssh-type-caption);
3167
3191
  }
3168
3192
  .dsh-ssh-file-binary a {
3169
3193
  display: inline-flex;
@@ -3175,7 +3199,7 @@ body[data-ds-dark-theme] :is(
3175
3199
  border-radius: 8px;
3176
3200
  color: var(--ssh-text);
3177
3201
  background: var(--ssh-control);
3178
- font-size: 10px;
3202
+ font-size: var(--ssh-type-caption);
3179
3203
  text-decoration: none;
3180
3204
  }
3181
3205
  .dsh-ssh-terminal-workbench {
@@ -3206,7 +3230,7 @@ body[data-ds-dark-theme] :is(
3206
3230
  border-radius: 7px;
3207
3231
  color: var(--ssh-text-muted);
3208
3232
  background: transparent;
3209
- font: 500 10px/1 var(--ssh-font-sans);
3233
+ font: 500 var(--ssh-type-caption)/1 var(--ssh-font-sans);
3210
3234
  white-space: nowrap;
3211
3235
  cursor: pointer;
3212
3236
  flex: 0 0 min(120px, 42%);
@@ -3255,9 +3279,9 @@ body[data-ds-dark-theme] :is(
3255
3279
  margin: 0;
3256
3280
  padding: 6px 8px;
3257
3281
  border-radius: 6px;
3258
- color: #ff6961;
3259
- background: rgba(255, 69, 58, 0.14);
3260
- font-size: 10px;
3282
+ color: var(--ssh-danger);
3283
+ background: color-mix(in srgb, var(--ssh-danger) 14%, transparent);
3284
+ font-size: var(--ssh-type-caption);
3261
3285
  }
3262
3286
 
3263
3287
  .dsh-ssh-sftp-row:active,
@@ -3291,7 +3315,7 @@ body[data-ds-dark-theme] :is(
3291
3315
  padding: 5px 8px;
3292
3316
  border: 1px solid var(--ssh-border);
3293
3317
  border-radius: 10px;
3294
- background: color-mix(in srgb, var(--ssh-surface-raised) 82%, transparent);
3318
+ background: var(--ssh-card-surface);
3295
3319
  transition:
3296
3320
  background 140ms ease,
3297
3321
  border-color 140ms ease;
@@ -3333,21 +3357,21 @@ body[data-ds-dark-theme] :is(
3333
3357
  .dsh-ssh-vault-row small,
3334
3358
  .dsh-ssh-proxy-row small {
3335
3359
  color: var(--ssh-text-subtle);
3336
- font-size: 10px;
3360
+ font-size: var(--ssh-type-caption);
3337
3361
  }
3338
3362
  .dsh-ssh-proxy-kind {
3339
3363
  padding: 3px 7px;
3340
3364
  border-radius: 6px;
3341
3365
  color: var(--ssh-accent-strong);
3342
3366
  background: color-mix(in srgb, var(--ssh-accent) 9%, transparent);
3343
- font: 600 10px/1 var(--ssh-font-mono), monospace;
3367
+ font: 600 var(--ssh-type-caption)/1 var(--ssh-font-mono), monospace;
3344
3368
  }
3345
3369
  .dsh-ssh-vault-state {
3346
3370
  padding: 3px 7px;
3347
3371
  border-radius: 6px;
3348
3372
  color: var(--ssh-danger);
3349
3373
  background: color-mix(in srgb, var(--ssh-danger) 7%, transparent);
3350
- font-size: 10px;
3374
+ font-size: var(--ssh-type-caption);
3351
3375
  }
3352
3376
  .dsh-ssh-vault-state.is-ready {
3353
3377
  color: var(--ssh-accent-strong);
@@ -3380,7 +3404,7 @@ body[data-ds-dark-theme] :is(
3380
3404
  max-width: 360px;
3381
3405
  margin: 7px 0 16px;
3382
3406
  color: var(--ssh-text-muted);
3383
- font-size: 11px;
3407
+ font-size: var(--ssh-type-caption);
3384
3408
  line-height: 1.55;
3385
3409
  }
3386
3410
  .dsh-ssh-credential-reference {
@@ -3412,15 +3436,15 @@ body[data-ds-dark-theme] :is(
3412
3436
  gap: 3px;
3413
3437
  }
3414
3438
  .dsh-ssh-credential-reference strong {
3415
- font-size: 11px;
3439
+ font-size: var(--ssh-type-caption);
3416
3440
  }
3417
3441
  .dsh-ssh-credential-reference small {
3418
3442
  color: var(--ssh-text-subtle);
3419
- font-size: 10px;
3443
+ font-size: var(--ssh-type-caption);
3420
3444
  }
3421
3445
  .dsh-ssh-credential-reference em {
3422
3446
  color: var(--ssh-accent-strong);
3423
- font-size: 10px;
3447
+ font-size: var(--ssh-type-caption);
3424
3448
  font-style: normal;
3425
3449
  }
3426
3450
  .dsh-ssh-jump-chain {
@@ -3430,18 +3454,18 @@ body[data-ds-dark-theme] :is(
3430
3454
  padding: 10px;
3431
3455
  border: 1px solid var(--ssh-border);
3432
3456
  border-radius: 10px;
3433
- background: color-mix(in srgb, var(--ssh-surface-raised) 72%, transparent);
3457
+ background: var(--ssh-card-surface);
3434
3458
  }
3435
3459
  .dsh-ssh-jump-chain legend {
3436
3460
  padding: 0 5px;
3437
3461
  color: var(--ssh-text-muted);
3438
- font-size: 10px;
3462
+ font-size: var(--ssh-type-caption);
3439
3463
  font-weight: 600;
3440
3464
  }
3441
3465
  .dsh-ssh-jump-chain > p {
3442
3466
  margin: 0;
3443
3467
  color: var(--ssh-text-subtle);
3444
- font-size: 10px;
3468
+ font-size: var(--ssh-type-caption);
3445
3469
  }
3446
3470
  .dsh-ssh-jump-chain > div {
3447
3471
  display: grid;
@@ -3461,8 +3485,7 @@ body[data-ds-dark-theme] :is(
3461
3485
  border-radius: 6px;
3462
3486
  color: var(--ssh-accent-strong);
3463
3487
  background: color-mix(in srgb, var(--ssh-accent) 9%, transparent);
3464
- font:
3465
- 600 10px/1 var(--ssh-font-mono),
3488
+ font: 600 var(--ssh-type-caption)/1 var(--ssh-font-mono),
3466
3489
  monospace;
3467
3490
  font-style: normal;
3468
3491
  }
@@ -3595,7 +3618,7 @@ body[data-ds-dark-theme] :is(
3595
3618
  border-radius: 8px;
3596
3619
  color: var(--ssh-text-muted);
3597
3620
  background: transparent;
3598
- font: 550 11px/1 var(--ssh-font-sans);
3621
+ font: 550 var(--ssh-type-caption)/1 var(--ssh-font-sans);
3599
3622
  text-align: left;
3600
3623
  cursor: pointer;
3601
3624
  }
@@ -3631,7 +3654,7 @@ body[data-ds-dark-theme] :is(
3631
3654
  box-sizing: border-box;
3632
3655
  margin: 0;
3633
3656
  border-radius: 10px;
3634
- font-size: 10px;
3657
+ font-size: var(--ssh-type-caption);
3635
3658
  }
3636
3659
  .dsh-ssh-test-result.is-warning {
3637
3660
  display: flex;
@@ -3654,8 +3677,7 @@ body[data-ds-dark-theme] :is(
3654
3677
  }
3655
3678
  .dsh-ssh-test-result.is-warning code {
3656
3679
  overflow: hidden;
3657
- font:
3658
- 10px/1.3 var(--ssh-font-mono),
3680
+ font: var(--ssh-type-caption)/1.3 var(--ssh-font-mono),
3659
3681
  monospace;
3660
3682
  text-overflow: ellipsis;
3661
3683
  white-space: nowrap;
@@ -3674,7 +3696,7 @@ body[data-ds-dark-theme] :is(
3674
3696
  margin: 0;
3675
3697
  padding: 8px 10px;
3676
3698
  color: var(--ssh-text-subtle);
3677
- font: 10px/1.4 var(--ssh-font-sans);
3699
+ font: var(--ssh-type-caption)/1.4 var(--ssh-font-sans);
3678
3700
  }
3679
3701
  .dsh-ssh-profile-sftp-pane {
3680
3702
  box-sizing: border-box;
@@ -3702,7 +3724,7 @@ body[data-ds-dark-theme] :is(
3702
3724
  .dsh-ssh-sftp.is-workspace .dsh-ssh-sftp-columns {
3703
3725
  min-height: 34px;
3704
3726
  padding: 0 12px;
3705
- font-size: 10px;
3727
+ font-size: var(--ssh-type-caption);
3706
3728
  }
3707
3729
  .dsh-ssh-sftp.is-workspace .dsh-ssh-sftp-row {
3708
3730
  min-height: 40px;
@@ -3713,10 +3735,10 @@ body[data-ds-dark-theme] :is(
3713
3735
  background: var(--ssh-hover);
3714
3736
  }
3715
3737
  .dsh-ssh-sftp.is-workspace .dsh-ssh-sftp-row strong {
3716
- font-size: 11px;
3738
+ font-size: var(--ssh-type-caption);
3717
3739
  }
3718
3740
  .dsh-ssh-sftp.is-workspace .dsh-ssh-sftp-row small {
3719
- font-size: 10px;
3741
+ font-size: var(--ssh-type-caption);
3720
3742
  }
3721
3743
  .dsh-ssh-upload-conflict {
3722
3744
  display: flex;
@@ -3740,14 +3762,13 @@ body[data-ds-dark-theme] :is(
3740
3762
  min-width: 0;
3741
3763
  }
3742
3764
  .dsh-ssh-upload-conflict strong {
3743
- font-size: 10px;
3765
+ font-size: var(--ssh-type-caption);
3744
3766
  }
3745
3767
  .dsh-ssh-upload-conflict small {
3746
3768
  overflow: hidden;
3747
3769
  max-width: 240px;
3748
3770
  color: var(--ssh-text-subtle);
3749
- font:
3750
- 10px/1 var(--ssh-font-mono),
3771
+ font: var(--ssh-type-caption)/1 var(--ssh-font-mono),
3751
3772
  monospace;
3752
3773
  text-overflow: ellipsis;
3753
3774
  white-space: nowrap;
@@ -3759,7 +3780,7 @@ body[data-ds-dark-theme] :is(
3759
3780
  border-radius: 7px;
3760
3781
  color: var(--ssh-text-muted);
3761
3782
  background: var(--ssh-surface-raised);
3762
- font-size: 10px;
3783
+ font-size: var(--ssh-type-caption);
3763
3784
  cursor: pointer;
3764
3785
  }
3765
3786
  .dsh-ssh-upload-conflict button.is-primary {
@@ -3780,7 +3801,7 @@ body[data-ds-dark-theme] :is(
3780
3801
  margin: 10px 0 10px 10px;
3781
3802
  border: 1px solid var(--ssh-glass-border);
3782
3803
  border-radius: 18px;
3783
- background: var(--ssh-glass-regular);
3804
+ background: var(--ssh-chrome-surface);
3784
3805
  -webkit-backdrop-filter: var(--ssh-glass-filter);
3785
3806
  backdrop-filter: var(--ssh-glass-filter);
3786
3807
  box-shadow: var(--ssh-glass-shadow);
@@ -3812,7 +3833,7 @@ body[data-ds-dark-theme] :is(
3812
3833
  .dsh-ssh-tree-header small,
3813
3834
  .dsh-ssh-access-heading small {
3814
3835
  color: var(--ssh-text-subtle);
3815
- font-size: 10px;
3836
+ font-size: var(--ssh-type-caption);
3816
3837
  }
3817
3838
 
3818
3839
  .dsh-ssh-remote-tree > .dsh-ssh-search {
@@ -3840,7 +3861,7 @@ body[data-ds-dark-theme] :is(
3840
3861
  margin: 0;
3841
3862
  padding: 0 8px;
3842
3863
  color: var(--ssh-text-subtle);
3843
- font-size: 10px;
3864
+ font-size: var(--ssh-type-caption);
3844
3865
  font-weight: 600;
3845
3866
  }
3846
3867
 
@@ -3851,7 +3872,7 @@ body[data-ds-dark-theme] :is(
3851
3872
  place-items: center;
3852
3873
  border-radius: 6px;
3853
3874
  background: color-mix(in srgb, var(--ssh-text) 5%, transparent);
3854
- font-size: 10px;
3875
+ font-size: var(--ssh-type-caption);
3855
3876
  }
3856
3877
 
3857
3878
  .dsh-ssh-tree-host {
@@ -3954,7 +3975,7 @@ body[data-ds-dark-theme] :is(
3954
3975
  border-radius: 7px;
3955
3976
  color: var(--ssh-text-subtle);
3956
3977
  background: color-mix(in srgb, var(--ssh-surface-raised) 64%, transparent);
3957
- font-size: 11px;
3978
+ font-size: var(--ssh-type-caption);
3958
3979
  font-weight: 620;
3959
3980
  line-height: 1;
3960
3981
  white-space: nowrap;
@@ -4009,7 +4030,7 @@ body[data-ds-dark-theme] :is(
4009
4030
 
4010
4031
  .dsh-ssh-tree-host-main small {
4011
4032
  color: var(--ssh-text-subtle);
4012
- font: 10px/1.25 var(--ssh-font-mono);
4033
+ font: var(--ssh-type-caption)/1.25 var(--ssh-font-mono);
4013
4034
  }
4014
4035
 
4015
4036
  .dsh-ssh-tree-add,
@@ -4125,19 +4146,19 @@ body[data-ds-dark-theme] :is(
4125
4146
  }
4126
4147
 
4127
4148
  .dsh-ssh-tree-project-main strong {
4128
- font-size: 11px;
4149
+ font-size: var(--ssh-type-caption);
4129
4150
  font-weight: 570;
4130
4151
  }
4131
4152
 
4132
4153
  .dsh-ssh-tree-project-main small {
4133
4154
  color: var(--ssh-text-subtle);
4134
- font: 10px/1.2 var(--ssh-font-mono);
4155
+ font: var(--ssh-type-caption)/1.2 var(--ssh-font-mono);
4135
4156
  }
4136
4157
 
4137
4158
  .dsh-ssh-tree-project-main em {
4138
4159
  overflow: hidden;
4139
4160
  color: var(--ssh-accent-strong);
4140
- font-size: 10px;
4161
+ font-size: var(--ssh-type-caption);
4141
4162
  font-style: normal;
4142
4163
  font-weight: 620;
4143
4164
  line-height: 1.2;
@@ -4149,7 +4170,7 @@ body[data-ds-dark-theme] :is(
4149
4170
  .dsh-ssh-tree-state,
4150
4171
  .dsh-ssh-tree-no-results {
4151
4172
  color: var(--ssh-text-subtle);
4152
- font-size: 10px;
4173
+ font-size: var(--ssh-type-caption);
4153
4174
  }
4154
4175
 
4155
4176
  .dsh-ssh-tree-empty {
@@ -4191,13 +4212,13 @@ body[data-ds-dark-theme] :is(
4191
4212
  }
4192
4213
 
4193
4214
  .dsh-ssh-access-heading strong {
4194
- font-size: 11px;
4215
+ font-size: var(--ssh-type-caption);
4195
4216
  font-weight: 620;
4196
4217
  }
4197
4218
 
4198
4219
  .dsh-ssh-access-heading em {
4199
4220
  color: var(--ssh-text-subtle);
4200
- font-size: 10px;
4221
+ font-size: var(--ssh-type-caption);
4201
4222
  font-style: normal;
4202
4223
  }
4203
4224
 
@@ -4220,7 +4241,7 @@ body[data-ds-dark-theme] :is(
4220
4241
  color: var(--ssh-text-subtle);
4221
4242
  background: transparent;
4222
4243
  background-image: none;
4223
- font-size: 10px;
4244
+ font-size: var(--ssh-type-caption);
4224
4245
  font-weight: 550;
4225
4246
  cursor: pointer;
4226
4247
  transition:
@@ -4266,13 +4287,13 @@ body[data-ds-dark-theme] :is(
4266
4287
  }
4267
4288
 
4268
4289
  .dsh-ssh-access-approval strong {
4269
- font-size: 10px;
4290
+ font-size: var(--ssh-type-caption);
4270
4291
  font-weight: 560;
4271
4292
  }
4272
4293
 
4273
4294
  .dsh-ssh-access-approval small {
4274
4295
  color: var(--ssh-text-subtle);
4275
- font-size: 10px;
4296
+ font-size: var(--ssh-type-caption);
4276
4297
  }
4277
4298
 
4278
4299
  .dsh-ssh-access-approval > i {
@@ -4370,7 +4391,7 @@ body[data-ds-dark-theme] :is(
4370
4391
 
4371
4392
  .dsh-ssh-session-create-shell header p {
4372
4393
  color: var(--ssh-text-subtle);
4373
- font-size: 11px;
4394
+ font-size: var(--ssh-type-caption);
4374
4395
  }
4375
4396
 
4376
4397
  .dsh-ssh-session-create-shell > form {
@@ -4408,7 +4429,7 @@ body[data-ds-dark-theme] :is(
4408
4429
 
4409
4430
  .dsh-ssh-session-create-target dt {
4410
4431
  color: var(--ssh-text-subtle);
4411
- font-size: 10px;
4432
+ font-size: var(--ssh-type-caption);
4412
4433
  font-weight: 560;
4413
4434
  }
4414
4435
 
@@ -4423,7 +4444,7 @@ body[data-ds-dark-theme] :is(
4423
4444
  .dsh-ssh-session-create-target dd small {
4424
4445
  overflow: hidden;
4425
4446
  color: var(--ssh-text-subtle);
4426
- font: 10px/1.35 var(--ssh-font-mono);
4447
+ font: var(--ssh-type-caption)/1.35 var(--ssh-font-mono);
4427
4448
  text-overflow: ellipsis;
4428
4449
  white-space: nowrap;
4429
4450
  }
@@ -4446,7 +4467,7 @@ body[data-ds-dark-theme] :is(
4446
4467
  .dsh-ssh-workspace-picker > p {
4447
4468
  margin: 4px 0 10px;
4448
4469
  color: var(--ssh-text-subtle);
4449
- font-size: 10px;
4470
+ font-size: var(--ssh-type-caption);
4450
4471
  line-height: 1.5;
4451
4472
  }
4452
4473
 
@@ -4526,7 +4547,7 @@ body[data-ds-dark-theme] :is(
4526
4547
 
4527
4548
  .dsh-ssh-workspace-option-copy small {
4528
4549
  color: var(--ssh-text-subtle);
4529
- font: 10px/1.3 var(--ssh-font-mono);
4550
+ font: var(--ssh-type-caption)/1.3 var(--ssh-font-mono);
4530
4551
  }
4531
4552
 
4532
4553
  .dsh-ssh-workspace-option em {
@@ -4534,7 +4555,7 @@ body[data-ds-dark-theme] :is(
4534
4555
  border-radius: 6px;
4535
4556
  color: var(--ssh-text-subtle);
4536
4557
  background: color-mix(in srgb, var(--ssh-text) 5%, transparent);
4537
- font-size: 10px;
4558
+ font-size: var(--ssh-type-caption);
4538
4559
  font-style: normal;
4539
4560
  font-weight: 560;
4540
4561
  white-space: nowrap;
@@ -4587,11 +4608,11 @@ body[data-ds-dark-theme] :is(
4587
4608
 
4588
4609
  .dsh-ssh-workspace-picker-empty strong {
4589
4610
  color: var(--ssh-text-muted);
4590
- font-size: 11px;
4611
+ font-size: var(--ssh-type-caption);
4591
4612
  }
4592
4613
 
4593
4614
  .dsh-ssh-workspace-picker-empty small {
4594
- font-size: 10px;
4615
+ font-size: var(--ssh-type-caption);
4595
4616
  line-height: 1.4;
4596
4617
  }
4597
4618
 
@@ -4674,7 +4695,7 @@ body[data-ds-dark-theme] :is(
4674
4695
  padding: 8px 16px;
4675
4696
  border: 1px solid var(--ssh-glass-border);
4676
4697
  border-radius: 17px;
4677
- background: var(--ssh-glass-regular);
4698
+ background: var(--ssh-chrome-surface);
4678
4699
  -webkit-backdrop-filter: var(--ssh-glass-filter);
4679
4700
  backdrop-filter: var(--ssh-glass-filter);
4680
4701
  box-shadow: var(--ssh-glass-shadow);
@@ -4710,7 +4731,7 @@ body[data-ds-dark-theme] :is(
4710
4731
 
4711
4732
  .dsh-ssh-workbench-heading p {
4712
4733
  color: var(--ssh-text-subtle);
4713
- font: 10px/1.25 var(--ssh-font-mono);
4734
+ font: var(--ssh-type-caption)/1.25 var(--ssh-font-mono);
4714
4735
  }
4715
4736
 
4716
4737
  .dsh-ssh-workbench-split {
@@ -4815,7 +4836,7 @@ body[data-ds-dark-theme] :is(
4815
4836
  border-radius: 7px;
4816
4837
  color: var(--ssh-text-muted);
4817
4838
  background: color-mix(in srgb, var(--ssh-surface-raised) 68%, transparent);
4818
- font: 600 10px/1 var(--ssh-font-mono);
4839
+ font: 600 var(--ssh-type-caption)/1 var(--ssh-font-mono);
4819
4840
  letter-spacing: .08em;
4820
4841
  }
4821
4842
 
@@ -4828,7 +4849,7 @@ body[data-ds-dark-theme] :is(
4828
4849
  .dsh-ssh-sftp-deferred p {
4829
4850
  margin: 5px 0 0;
4830
4851
  color: var(--ssh-text-subtle);
4831
- font-size: 10px;
4852
+ font-size: var(--ssh-type-caption);
4832
4853
  }
4833
4854
 
4834
4855
  .dsh-ssh-terminal-pane.is-embedded,
@@ -4860,7 +4881,7 @@ body[data-ds-dark-theme] :is(
4860
4881
  .dsh-ssh-terminal-pane.is-embedded .dsh-ssh-terminal-frame {
4861
4882
  min-height: 0;
4862
4883
  border-radius: 10px;
4863
- box-shadow: 0 8px 22px rgba(0, 0, 0, 0.14);
4884
+ box-shadow: var(--ssh-shadow-md);
4864
4885
  }
4865
4886
 
4866
4887
  .dsh-ssh-profile-sftp-pane.is-embedded .dsh-ssh-sftp.is-workspace {
@@ -4925,11 +4946,7 @@ body[data-ds-dark-theme] :is(
4925
4946
  height: 100%;
4926
4947
  min-height: 0;
4927
4948
  overflow: hidden;
4928
- background:
4929
- radial-gradient(circle at 8% 0%, var(--ssh-ambient-light), transparent 34%),
4930
- radial-gradient(circle at 96% 6%, var(--ssh-ambient-shadow), transparent 31%),
4931
- linear-gradient(145deg, color-mix(in srgb, var(--ssh-surface-raised) 32%, transparent), transparent 58%),
4932
- color-mix(in srgb, var(--ssh-surface) 28%, transparent);
4949
+ background: var(--ssh-canvas);
4933
4950
  }
4934
4951
  .dsh-ssh-transfer-header {
4935
4952
  display: flex;
@@ -4941,7 +4958,7 @@ body[data-ds-dark-theme] :is(
4941
4958
  padding: 10px 16px;
4942
4959
  border: 1px solid var(--ssh-glass-border);
4943
4960
  border-radius: 18px;
4944
- background: var(--ssh-glass-regular);
4961
+ background: var(--ssh-chrome-surface);
4945
4962
  -webkit-backdrop-filter: var(--ssh-glass-filter);
4946
4963
  backdrop-filter: var(--ssh-glass-filter);
4947
4964
  box-shadow: var(--ssh-glass-shadow);
@@ -4960,7 +4977,7 @@ body[data-ds-dark-theme] :is(
4960
4977
  padding: 5px 12px;
4961
4978
  border: 1px solid var(--ssh-glass-border);
4962
4979
  border-radius: 14px;
4963
- background: var(--ssh-glass-clear);
4980
+ background: var(--ssh-chrome-surface);
4964
4981
  -webkit-backdrop-filter: saturate(1.25) blur(20px);
4965
4982
  backdrop-filter: saturate(1.25) blur(20px);
4966
4983
  box-shadow: var(--ssh-glass-shadow);
@@ -5016,7 +5033,7 @@ body[data-ds-dark-theme] :is(
5016
5033
  min-width: 0;
5017
5034
  min-height: 0;
5018
5035
  overflow: hidden;
5019
- background: var(--ssh-surface-raised);
5036
+ background: var(--ssh-card-surface);
5020
5037
  transition: box-shadow var(--ssh-motion-fast) ease;
5021
5038
  }
5022
5039
  .dsh-ssh-file-pane > header {
@@ -5117,7 +5134,7 @@ body[data-ds-dark-theme] :is(
5117
5134
  .dsh-ssh-file-pane.is-drop-target { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--ssh-accent) 55%, transparent); }
5118
5135
  .dsh-ssh-file-drop-overlay { position: absolute; z-index: 3; inset: 88px 8px 50px; display: grid; place-content: center; gap: 4px; border: 1px dashed color-mix(in srgb, var(--ssh-accent) 58%, transparent); border-radius: 10px; color: var(--ssh-text); background: color-mix(in srgb, var(--ssh-surface-raised) 90%, transparent); backdrop-filter: blur(3px); text-align: center; pointer-events: none; }
5119
5136
  .dsh-ssh-file-drop-overlay span { max-width: 260px; overflow: hidden; color: var(--ssh-text-muted); font: var(--ssh-type-caption)/1.4 var(--ssh-font-mono); text-overflow: ellipsis; white-space: nowrap; }
5120
- .dsh-ssh-transfer-queue { border-top: 1px solid var(--ssh-border); background: var(--ssh-surface-raised); }
5137
+ .dsh-ssh-transfer-queue { border-top: 1px solid var(--ssh-border); background: var(--ssh-card-surface); }
5121
5138
  .dsh-ssh-transfer-queue-heading { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 42px; padding: 6px 12px; border: 0; color: var(--ssh-text-muted); background: transparent; font: 500 var(--ssh-type-label)/1.3 var(--ssh-font-sans); cursor: pointer; }
5122
5139
  .dsh-ssh-transfer-queue-heading > span:first-child { display: flex; align-items: baseline; gap: 8px; }
5123
5140
  .dsh-ssh-transfer-queue-heading strong { color: var(--ssh-text); font-size: var(--ssh-type-body); }
@@ -5183,7 +5200,7 @@ body[data-ds-dark-theme] :is(
5183
5200
  .dsh-ssh-ftp-list-empty > span { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid var(--ssh-border); border-radius: 12px; background: var(--ssh-surface-raised); }
5184
5201
  .dsh-ssh-ftp-list-empty strong { color: var(--ssh-text); font-size: var(--ssh-type-body); }
5185
5202
  .dsh-ssh-ftp-list-empty p { max-width: 240px; margin: 0 0 6px; font-size: var(--ssh-type-label); line-height: var(--ssh-leading-body); }
5186
- .dsh-ssh-ftp-manager-detail { min-width: 0; min-height: 0; overflow: hidden; background: var(--ssh-surface-raised); }
5203
+ .dsh-ssh-ftp-manager-detail { min-width: 0; min-height: 0; overflow: hidden; background: var(--ssh-card-surface); }
5187
5204
  .dsh-ssh-ftp-manager-overview { display: grid; place-items: center; align-content: center; height: 100%; padding: 38px; color: var(--ssh-text-subtle); text-align: center; }
5188
5205
  .dsh-ssh-ftp-manager-overview > span { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 11px; border: 1px solid var(--ssh-border); border-radius: 14px; background: var(--ssh-surface); }
5189
5206
  .dsh-ssh-ftp-manager-overview h3 { margin: 0; color: var(--ssh-text); font-size: 15px; }
@@ -5221,8 +5238,8 @@ body[data-ds-dark-theme] :is(
5221
5238
  .dsh-ssh-file-access-dialog-modal {
5222
5239
  --ssh-access-edge: var(--ssh-border);
5223
5240
  --ssh-access-divider: color-mix(in srgb, var(--ssh-border) 76%, transparent);
5224
- --ssh-access-surface: var(--ssh-glass-thick);
5225
- --ssh-access-subtle: var(--ssh-glass-regular);
5241
+ --ssh-access-surface: var(--ssh-modal-surface);
5242
+ --ssh-access-subtle: var(--ssh-modal-surface-raised);
5226
5243
  --ssh-access-hover: var(--ssh-hover);
5227
5244
  --ssh-access-selected: var(--ssh-selected);
5228
5245
  --ssh-access-control: var(--ssh-control);
@@ -5257,7 +5274,7 @@ body[data-ds-dark-theme] :is(
5257
5274
  overflow: hidden;
5258
5275
  border: 1px solid var(--ssh-glass-border);
5259
5276
  border-radius: 14px;
5260
- background: var(--ssh-glass-thick);
5277
+ background: var(--ssh-modal-surface);
5261
5278
  -webkit-backdrop-filter: var(--ssh-glass-filter);
5262
5279
  backdrop-filter: var(--ssh-glass-filter);
5263
5280
  box-shadow: var(--ssh-glass-shadow), var(--ssh-shadow-lg);
@@ -5344,7 +5361,7 @@ body[data-ds-dark-theme] :is(
5344
5361
  flex: none;
5345
5362
  padding-bottom: 2px;
5346
5363
  color: var(--ssh-text-subtle);
5347
- font: 570 11px/1 var(--ssh-font-mono);
5364
+ font: 570 var(--ssh-type-caption)/1 var(--ssh-font-mono);
5348
5365
  font-style: normal;
5349
5366
  font-variant-numeric: tabular-nums;
5350
5367
  letter-spacing: .055em;
@@ -5429,7 +5446,7 @@ body[data-ds-dark-theme] :is(
5429
5446
  }
5430
5447
  .dsh-ssh-file-access-endpoint-copy small {
5431
5448
  color: var(--ssh-text-subtle);
5432
- font: 11px/1.35 var(--ssh-font-mono);
5449
+ font: var(--ssh-type-caption)/1.35 var(--ssh-font-mono);
5433
5450
  }
5434
5451
  .dsh-ssh-file-access-state {
5435
5452
  display: inline-grid;
@@ -5464,7 +5481,7 @@ body[data-ds-dark-theme] :is(
5464
5481
  transform 260ms cubic-bezier(.22, 1, .36, 1);
5465
5482
  }
5466
5483
  .dsh-ssh-file-access-state > em {
5467
- font-size: 11px;
5484
+ font-size: var(--ssh-type-caption);
5468
5485
  font-style: normal;
5469
5486
  white-space: nowrap;
5470
5487
  }
@@ -5641,7 +5658,7 @@ body[data-ds-dark-theme] :is(
5641
5658
  height: 10px;
5642
5659
  border-radius: 50%;
5643
5660
  background: var(--ssh-text-subtle);
5644
- box-shadow: 0 1px 2px rgb(23 35 43 / 18%);
5661
+ box-shadow: var(--ssh-shadow-sm);
5645
5662
  transition:
5646
5663
  background-color 180ms cubic-bezier(.22, 1, .36, 1),
5647
5664
  transform 220ms cubic-bezier(.22, 1, .36, 1);