/* Extension layer: retain PureOS tokens, shell layout and window manager. */
.vps-app { font-family: var(--font-ui, system-ui); box-sizing: border-box; display:flex; flex-direction:column; height:100%; width:100%; overflow:auto; color:var(--text,#ecf3fb); padding:22px 24px; gap:13px; }
.vps-app * { box-sizing:border-box; }
.vps-app-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.vps-eyebrow { font-size:10px; font-weight:700; letter-spacing:1.5px; color:var(--accent,#4cc2ff); margin-bottom:6px; }
.vps-app h2 { margin:0; font-size:23px; font-weight:650; }
.vps-app h3 { margin:14px 0 4px; font-size:14px; }
.vps-intro { font-size:13px; opacity:.72; margin:0; line-height:1.5; }
.vps-app-content { flex:1; min-height:0; }
.vps-app button,.vps-auth-panel button { color:inherit; background:rgba(120,155,188,.14); border:1px solid rgba(170,195,225,.18); border-radius:9px; padding:9px 13px; cursor:pointer; }
.vps-app button:hover,.vps-auth-panel button:hover { background:rgba(120,155,188,.25); }
.vps-app button:focus-visible,.vps-auth-panel input:focus-visible { outline:2px solid #4cc2ff; outline-offset:2px; }
.vps-app select { border:1px solid rgba(170,195,225,.3); border-radius:7px; background:#223447; color:#edf7ff; padding:8px; }
.vps-metrics { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.vps-metric { border:1px solid rgba(170,195,225,.15); border-radius:13px; padding:16px; background:rgba(255,255,255,.045); display:flex; flex-direction:column; gap:8px; }
.vps-metric small { letter-spacing:1px; font-size:10px; opacity:.64; font-weight:700; }
.vps-metric b { font-size:25px; font-variant-numeric:tabular-nums; font-weight:650; }
.vps-metric span { font-size:11px; opacity:.7; }
.vps-info { border:1px solid rgba(170,195,225,.15); border-radius:11px; overflow:hidden; margin:10px 0; }
.vps-info-row { padding:11px 14px; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid rgba(170,195,225,.1); gap:20px; font-size:12px; }
.vps-info-row:last-child { border-bottom:none; }
.vps-info-row span { opacity:.72; }
.vps-info-row strong { overflow-wrap:anywhere; text-align:right; font-weight:600; }
.vps-notice { padding:14px 16px; border:1px solid rgba(150,180,205,.24); background:rgba(100,140,170,.09); border-radius:11px; line-height:1.55; font-size:13px; margin-top:12px; }
.vps-table-wrap { max-width:100%; overflow:auto; margin-top:12px; border:1px solid rgba(170,195,225,.13); border-radius:10px; }
.vps-table { width:100%; border-collapse:collapse; font-size:12px; text-align:left; }
.vps-table th { opacity:.65; font-size:10px; letter-spacing:.8px; padding:12px; border-bottom:1px solid rgba(170,195,225,.15); white-space:nowrap; }
.vps-table td { padding:12px; border-bottom:1px solid rgba(170,195,225,.09); overflow-wrap:anywhere; }
.vps-table tr:last-child td { border-bottom:0; }
.vps-clickable { cursor:pointer; }
.vps-clickable:hover { background:rgba(100,145,190,.14); }
.vps-controls { display:flex; gap:10px; flex-wrap:wrap; }
.vps-path,.vps-mono { font-family:ui-monospace,Consolas,monospace; font-size:12px; overflow-wrap:anywhere; }
.vps-path { margin:10px 0; opacity:.76; }
.vps-loading { padding:24px 4px; opacity:.65; }
.vps-footer { padding-top:15px; font-size:10px; opacity:.46; }
.vps-auth-overlay { position:fixed;z-index:100000;inset:0;background:rgba(7,13,25,.87);display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(16px); }
.vps-auth-panel { display:flex; flex-direction:column; gap:14px; width:min(100%,380px);border:1px solid rgba(155,195,226,.26);background:#162233;color:#eff8ff; border-radius:16px;padding:28px;box-shadow:0 25px 80px rgba(0,0,0,.4); }
.vps-auth-panel h1 { margin:0; font-size:25px; }
.vps-auth-panel p { margin:0; font-size:13px; opacity:.85; line-height:1.5; }
.vps-auth-panel input { border:1px solid #496079; border-radius:8px; padding:12px; background:#0d1829; color:#fff; }
.vps-auth-panel button { background:#235b89; color:#fff; font-weight:650; }
.vps-auth-message { color:#ffb0b0; }
@media(max-width:600px){.vps-app{padding:16px}.vps-app h2{font-size:20px}.vps-metrics{grid-template-columns:1fr}.vps-info-row{align-items:flex-start;flex-direction:column;gap:4px}}

/* v0.5 — file manager: scoped application controls, not the desktop context menu */
.vps-app:has(.fm-app) { padding: 16px 18px; gap: 9px; }
.vps-app:has(.fm-app) .vps-intro { font-size: 12px; }
.vps-app-content:has(.fm-app) { display:flex; flex-direction:column; overflow:hidden; }
.fm-app { position:relative; min-height:0; height:100%; display:flex; flex-direction:column; gap:9px; color:var(--text,#eef5ff); user-select:text; }
.fm-switcher,.fm-toolbar,.fm-navigation { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
.fm-switcher { border-bottom:1px solid var(--border,rgba(255,255,255,.13)); padding-bottom:9px; }
.fm-switcher .fm-btn { font-size:12px; }
.fm-mode-label { margin-left:auto; font-size:11px; color:var(--text-dim,#a8bdd1); white-space:nowrap; }
.vps-app .fm-btn { font:inherit; font-size:12px; padding:7px 11px; border-radius:7px; white-space:nowrap; }
.vps-app .fm-btn.fm-on { background:var(--accent-dim,rgba(76,194,255,.17)); border-color:var(--accent,#4cc2ff); color:var(--text,#fff); }
.vps-app button:disabled { opacity:.42; cursor:not-allowed; }
.fm-navigation { flex-wrap:nowrap; }
.fm-address { flex:1 1 160px; min-width:60px; border:1px solid var(--border,rgba(255,255,255,.2)); background:var(--surface-2,#1b2837); color:var(--text,#fff); padding:9px 11px; border-radius:7px; font:12px ui-monospace,SFMono-Regular,Consolas,monospace; }
.fm-address:focus { outline:1px solid var(--accent,#4cc2ff); }
.fm-toolbar { justify-content:space-between; min-height:38px; }
.fm-operations,.fm-view-controls { display:flex; gap:6px; align-items:center; }
.fm-view-controls { margin-left:auto; }
.fm-hint { margin:0; padding:8px 12px; border-radius:7px; background:rgba(100,140,170,.095); color:var(--text-dim,#bac9da); font-size:11.5px; line-height:1.4; }
.fm-listing { flex:1; min-height:130px; overflow:auto; background:rgba(18,31,49,.19); border:1px solid var(--border,rgba(200,215,240,.13)); border-radius:10px; }
.fm-list { display:block; }
.fm-list-head,.fm-list .fm-entry { display:grid; grid-template-columns:minmax(155px,2.4fr) minmax(80px,1fr) 90px 100px; gap:8px; align-items:center; }
.fm-list-head { position:sticky; top:0; z-index:1; background:var(--surface-solid,#223147); border-bottom:1px solid var(--border,rgba(255,255,255,.13)); padding:10px 12px; color:var(--text-dim,#b2c5d6); font-size:11px; font-weight:700; }
.fm-list .fm-entry { padding:8px 12px; min-height:44px; border-bottom:1px solid rgba(166,190,218,.09); }
.fm-entry { cursor:default; border:1px solid transparent; border-radius:6px; font-size:12px; }
.fm-entry:hover { background:rgba(111,165,211,.10); }
.fm-entry.selected { background:rgba(76,194,255,.18); outline:1px solid rgba(76,194,255,.35); }
.fm-entry:focus-visible { outline:2px solid var(--accent,#4cc2ff); }
.fm-name-group { display:flex; align-items:center; gap:10px; min-width:0; }
.fm-file-icon { font-size:23px; flex:0 0 25px; text-align:center; }
.fm-file-name { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fm-file-detail { font-size:11px; color:var(--text-dim,#bbcbd9); overflow:hidden; text-overflow:ellipsis; }
.fm-tiles { display:grid; grid-template-columns:repeat(auto-fill,minmax(118px,1fr)); align-content:start; gap:10px; padding:14px; }
.fm-tiles .fm-entry { padding:12px 9px; display:flex; flex-direction:column; align-items:center; text-align:center; justify-content:flex-start; min-height:112px; gap:8px; }
.fm-tiles .fm-name-group { display:flex; flex-direction:column; gap:8px; max-width:100%; }
.fm-tiles .fm-file-icon { font-size:37px; line-height:1.15; }
.fm-tiles .fm-file-name { overflow-wrap:anywhere; white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-clamp:2; }
.fm-tiles .fm-file-type,.fm-tiles .fm-entry>.fm-file-detail:last-child { display:none; }
.fm-status { min-height:27px; padding:5px 9px; border-top:1px solid var(--border,rgba(255,255,255,.15)); color:var(--text-dim,#c6d3df); font-size:11px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.fm-status.fm-error { color:#f9a3a3; }
.fm-empty { padding:28px; text-align:center; color:var(--text-dim,#bbccd9); font-size:13px; }
.fm-empty p { font-size:12px; margin:12px 0; }
.fm-drop-cover { display:none; position:absolute; inset:0; z-index:5; background:rgba(19,48,81,.9); border:2px dashed var(--accent,#4cc2ff); border-radius:9px; align-items:center; justify-content:center; padding:30px; font-weight:600; text-align:center; pointer-events:none; }
.fm-drop-cover.visible { display:flex; }
.fm-editor-backdrop { position:absolute; inset:0; z-index:9; display:flex; align-items:center; justify-content:center; background:rgba(3,10,20,.75); padding:16px; }
.fm-editor { width:min(750px,100%); height:min(550px,100%); display:flex; flex-direction:column; gap:11px; background:var(--surface-solid,#1b2a3d); color:var(--text,#fff); padding:19px; border-radius:12px; border:1px solid var(--border,rgba(255,255,255,.22)); box-shadow:0 20px 60px #0009; }
.fm-editor h3 { margin:0; font-size:16px; overflow:hidden; text-overflow:ellipsis; }
.fm-editor small { color:var(--text-dim,#bbccd9); }
.fm-editor-text { flex:1; min-height:0; background:rgba(0,0,0,.22); color:var(--text,#fff); border:1px solid var(--border,rgba(255,255,255,.2)); border-radius:8px; padding:12px; resize:vertical; font:12px/1.55 ui-monospace,Consolas,monospace; tab-size:2; }
.fm-editor-actions { display:flex; justify-content:flex-end; gap:8px; }
@media(max-width:650px) {
  .fm-mode-label { flex:1 0 100%; margin:0; }
  .fm-list-head,.fm-list .fm-entry { grid-template-columns:minmax(145px,1fr) 67px; }
  .fm-list-head>span:nth-child(2),.fm-list-head>span:last-child,.fm-list .fm-file-type,.fm-list .fm-entry>.fm-file-detail:last-child { display:none; }
  .fm-toolbar { gap:8px; }
  .fm-tiles { grid-template-columns:repeat(auto-fill,minmax(98px,1fr)); gap:6px; padding:9px; }
}

/* v0.5.1 — compact, Explorer-style File Manager. Only affects the Files window. */
.vps-app.vps-files-shell {
  padding: 9px 11px 7px;
  gap: 0;
  overflow: hidden;
  min-height: 0;
}
.vps-files-shell .fm-app {
  height: 100%;
  min-height: 0;
  width: 100%;
  gap: 6px;
}
/* v0.5.2: source selection is in the *single* bottom status row. */
.vps-files-shell .fm-bottom {
  display: flex;
  align-items: center;
  gap: 9px;
  flex: 0 0 auto;
  min-height: 31px;
  border-top: 1px solid var(--border,rgba(255,255,255,.12));
  padding: 3px 2px 0;
}
.vps-files-shell .fm-bottom .fm-switcher {
  border: 0;
  padding: 0;
  min-height: 0;
  flex: 0 0 auto;
  flex-wrap: nowrap;
  gap: 4px;
}
.vps-files-shell .fm-bottom .fm-switcher .fm-btn {
  min-height: 25px;
  padding: 3px 9px;
  font-size: 10.5px;
}
.vps-files-shell .fm-bottom .fm-status {
  min-width: 0;
  flex: 1 1 0;
  padding: 0 0 0 4px;
  min-height: 0;
  border: 0;
}
.vps-files-shell .fm-bottom .fm-mode-label {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  text-align: right;
  font-size: 10.5px;
  opacity: .8;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.vps-files-shell .fm-navigation {
  min-height: 33px;
  flex-wrap: nowrap;
  gap: 5px;
}
.vps-files-shell .fm-btn {
  border-radius: 6px;
  font-size: 11.5px;
  padding: 6px 10px;
  line-height: 1.35;
  min-height: 29px;
}
.vps-files-shell .fm-navigation .fm-btn {
  min-width: 29px;
  padding: 5px 9px;
}
.vps-files-shell .fm-address {
  height: 31px;
  padding: 6px 10px;
  min-width: 60px;
}
.vps-files-shell .fm-toolbar {
  min-height: 31px;
  padding-bottom: 2px;
  flex-wrap: nowrap;
  gap: 7px;
}
.vps-files-shell .fm-operations,
.vps-files-shell .fm-tools,
.vps-files-shell .fm-view-controls { display: flex; align-items: center; gap: 5px; }
.vps-files-shell .fm-operations[hidden] { display: none !important; }
.vps-files-shell .fm-tools { flex: 1; min-width: 0; justify-content: flex-end; }
.vps-files-shell .fm-search {
  width: 142px;
  min-width: 78px;
  max-width: 180px;
  height: 29px;
  flex: 0 1 142px;
  border-radius: 6px;
  padding: 5px 9px;
  font: 11.5px system-ui, sans-serif;
  border: 1px solid var(--border,rgba(200,215,240,.24));
  background: var(--surface-2,#1b2837);
  color: var(--text,#fff);
}
.vps-files-shell .fm-search::placeholder { color: var(--text-dim,#b3c5d5); }
.vps-files-shell .fm-sort {
  width: 79px;
  height: 29px;
  padding: 4px 5px;
  border-radius: 6px;
  font-size: 11.5px;
  border: 1px solid var(--border,rgba(200,215,240,.24));
  background: var(--surface-2,#1b2837);
  color: var(--text,#fff);
}
.vps-files-shell .fm-visually-hidden {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.vps-files-shell .fm-listing { flex:1; min-height:95px; border-radius:7px; }
.vps-files-shell .fm-list-head { padding: 7px 10px; font-size: 10.5px; }
.vps-files-shell .fm-list .fm-entry { min-height:34px; padding:5px 10px; }
.vps-files-shell .fm-list .fm-file-icon { font-size:18px; flex-basis:21px; }
.vps-files-shell .fm-entry { font-size:11.5px; }
.vps-files-shell .fm-tiles {
  grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
  padding: 7px;
  gap: 4px;
}
.vps-files-shell .fm-tiles .fm-entry {
  min-height: 84px;
  padding: 8px 5px 6px;
  gap: 4px;
}
.vps-files-shell .fm-tiles .fm-name-group { gap: 4px; }
.vps-files-shell .fm-tiles .fm-file-icon { font-size: 29px; line-height: 1.1; }
.vps-files-shell .fm-tiles .fm-file-name { font-size: 11px; line-height: 1.22; }
.vps-files-shell .fm-status {
  font-size: 10.5px;
}
.vps-files-shell .fm-empty { padding:19px 10px; }
.vps-files-shell .fm-search:focus-visible,
.vps-files-shell .fm-sort:focus-visible { outline: 2px solid var(--accent,#4cc2ff); outline-offset: 1px; }
@media (max-width: 650px) {
  .vps-app.vps-files-shell { padding: 7px; }
  .vps-files-shell .fm-bottom .fm-switcher .fm-btn { font-size: 10px; padding:3px 6px; }
  .vps-files-shell .fm-bottom .fm-mode-label { display:none; }
  .vps-files-shell .fm-toolbar { flex-wrap:wrap; }
  .vps-files-shell .fm-tools { flex:1 1 100%; justify-content:space-between; }
  .vps-files-shell .fm-search { flex:1 1 88px; width:auto; max-width:none; }
  .vps-files-shell .fm-operations { flex:1 1 auto; }
  .vps-files-shell .fm-tiles { grid-template-columns:repeat(auto-fill,minmax(76px,1fr)); padding:5px; }
}

.vps-files-shell .fm-tiles .fm-entry > .fm-file-detail { display:none; }

/* v0.5.4: file manager only. Keep a strict 2-row toolbar + 1-row status bar.
 * :has(.fm-app) is a compatibility fallback if an old application wrapper is cached.
 */
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) {
  padding: 6px 8px 5px;
  gap: 0;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) > .vps-app-head,
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) > .vps-intro {
  display: none !important;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) > .vps-app-content {
  flex: 1 1 auto;
  display: flex;
  min-height: 0;
  overflow: hidden;
  margin: 0;
  padding: 0;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-app {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  height: 100%;
  gap: 5px;
  overflow: hidden;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-navigation {
  display: flex;
  flex: 0 0 auto;
  width: 100%;
  min-height: 30px;
  gap: 5px;
  align-items: center;
  flex-wrap: nowrap !important;
  min-width: 0;
  margin: 0;
  padding: 0;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-navigation .fm-address {
  flex: 1 1 auto;
  width: 0;
  min-width: 45px;
  height: 30px;
  padding: 4px 9px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-btn {
  flex-shrink: 0;
  font-size: 11px;
  line-height: 1;
  height: 29px;
  min-height: 29px;
  padding: 5px 9px;
  border-radius: 6px;
  white-space: nowrap;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-navigation .fm-btn {
  height: 30px;
  min-width: 29px;
  padding-inline: 7px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-toolbar {
  display: flex;
  width: 100%;
  flex: 0 0 auto;
  align-items: center;
  justify-content: space-between;
  flex-wrap: nowrap !important;
  white-space: nowrap;
  gap: 6px;
  min-width: 0;
  height: 32px;
  min-height: 32px;
  padding: 0;
  margin: 0;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-operations,
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tools,
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-view-controls {
  display: flex;
  flex-wrap: nowrap !important;
  align-items: center;
  gap: 4px;
  min-width: 0;
  margin: 0;
  padding: 0;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-operations[hidden] { display: none !important; }
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tools {
  flex: 0 1 auto;
  margin-left: auto;
  justify-content: flex-end;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-search {
  flex: 0 1 142px;
  width: 142px;
  min-width: 68px;
  max-width: 142px;
  height: 29px;
  padding: 4px 7px;
  font-size: 11px;
  line-height: 1;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-sort-label { flex: 0 0 auto; display: flex; }
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-sort {
  width: 72px;
  min-width: 62px;
  height: 29px;
  padding: 3px 4px;
  font-size: 11px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-listing {
  flex: 1 1 auto;
  min-height: 55px;
  min-width: 0;
  margin: 0;
  overflow: auto;
  border-radius: 7px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom {
  display: grid !important;
  grid-template-columns: minmax(0,1fr) max-content minmax(0,1fr);
  align-items: center;
  justify-content: stretch;
  flex: 0 0 29px;
  height: 29px;
  min-height: 29px;
  gap: 5px;
  width: 100%;
  min-width: 0;
  margin: 0;
  padding: 2px 1px 0;
  border-top: 1px solid var(--border,rgba(255,255,255,.12));
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom .fm-status {
  grid-column: 1;
  min-width: 0;
  width: 100%;
  height: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 10.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom .fm-switcher {
  grid-column: 2;
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  min-height: 0;
  width: auto;
  padding: 0;
  margin: 0;
  border: 0;
  flex-wrap: nowrap !important;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom .fm-switcher .fm-btn {
  height: 24px;
  min-height: 24px;
  padding: 3px 8px;
  font-size: 10.5px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom .fm-mode-label {
  grid-column: 3;
  display: block;
  min-width: 0;
  width: 100%;
  margin: 0;
  padding: 0;
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 10.5px;
  opacity: .8;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tiles {
  grid-template-columns: repeat(auto-fill,minmax(82px,1fr));
  gap: 4px;
  padding: 7px;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tiles .fm-entry {
  min-height: 82px;
  gap: 4px;
  padding: 8px 4px 5px;
}
@media (max-width: 560px) {
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) { padding: 5px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-toolbar { gap: 3px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-toolbar .fm-btn { padding-inline: 5px; font-size: 10px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tools,
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-operations { gap: 2px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-search { flex-basis: 80px; width: 80px; min-width: 38px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-sort { width: 60px; min-width: 50px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom { grid-template-columns: minmax(0,1fr) max-content minmax(0,1fr); gap: 3px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-bottom .fm-switcher .fm-btn { padding-inline: 4px; font-size: 10px; }
}
/* Keep form labels accessible without consuming toolbar space, including old shells. */
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
:is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-search {
  color: var(--text,#fff);
  background: var(--surface-2,#30363d);
  border: 1px solid var(--border,#43505e);
  border-radius: 5px;
}
@media (max-width: 480px) {
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-toolbar .fm-btn {
    padding-inline: 3px;
    font-size: 9.5px;
  }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-tools { gap: 2px; }
  :is(.vps-app.vps-files-shell, .vps-app:has(.fm-app)) .fm-sort { width: 54px; min-width: 50px; }
}
/* v0.5.7 dialog form only; compact File Manager toolbars and footer untouched. */
.vps-files-shell .fm-name-form { display:flex; flex-direction:column; gap:9px; min-width:0; }
.vps-files-shell .fm-name-label { display:flex; flex-direction:column; gap:5px; color:var(--text-dim,#bfceda); font-size:11px; }
.vps-files-shell .fm-name-input { box-sizing:border-box; width:100%; min-width:0; padding:9px 10px; border:1px solid var(--border,rgba(255,255,255,.24)); border-radius:6px; color:var(--text,#fff); background:var(--surface-2,#263342); font:13px ui-monospace,Consolas,monospace; }
.vps-files-shell .fm-name-input:focus-visible { outline:2px solid var(--accent,#4cc2ff); outline-offset:1px; }
.vps-files-shell .fm-name-error { color:#f9a3a3; font-size:11px; min-height:0; }
.vps-files-shell .fm-name-error:empty { display:none; }
/* v0.5.10 File Manager in-window dialog forms only. Does not alter toolbars/footer/layout. */
.vps-files-shell .fm-name-form { display:flex; flex-direction:column; gap:9px; min-width:0; }
.vps-files-shell .fm-name-label { display:flex; flex-direction:column; gap:5px; color:var(--text-dim,#bfceda); font-size:11px; }
.vps-files-shell .fm-name-input { box-sizing:border-box; width:100%; min-width:0; padding:9px 10px; border:1px solid var(--border,rgba(255,255,255,.24)); border-radius:6px; color:var(--text,#fff); background:var(--surface-2,#263342); font:13px ui-monospace,Consolas,monospace; }
.vps-files-shell .fm-name-input:focus-visible { outline:2px solid var(--accent,#4cc2ff); outline-offset:1px; }
.vps-files-shell .fm-name-error { color:#f9a3a3; font-size:11px; min-height:0; }
.vps-files-shell .fm-name-error:empty { display:none; }
/* v0.5.12 File Manager in-window dialog forms only. Does not alter toolbars/footer/layout. */
.vps-files-shell .fm-name-form { display:flex; flex-direction:column; gap:9px; min-width:0; }
.vps-files-shell .fm-name-label { display:flex; flex-direction:column; gap:5px; color:var(--text-dim,#bfceda); font-size:11px; }
.vps-files-shell .fm-name-input { box-sizing:border-box; width:100%; min-width:0; padding:9px 10px; border:1px solid var(--border,rgba(255,255,255,.24)); border-radius:6px; color:var(--text,#fff); background:var(--surface-2,#263342); font:13px ui-monospace,Consolas,monospace; }
.vps-files-shell .fm-name-input:focus-visible { outline:2px solid var(--accent,#4cc2ff); outline-offset:1px; }
.vps-files-shell .fm-name-error { color:#f9a3a3; font-size:11px; min-height:0; }
.vps-files-shell .fm-name-error:empty { display:none; }


/* v0.5.12 — polished in-window confirmations; no browser-native dialogs. */
.vps-files-shell .fm-confirm-backdrop {
  background: rgba(4, 10, 18, .64);
  backdrop-filter: blur(3px) saturate(.85);
  -webkit-backdrop-filter: blur(3px) saturate(.85);
}
.vps-files-shell .fm-confirm {
  box-sizing: border-box;
  width: min(440px, calc(100% - 26px));
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(174, 202, 226, .24);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(42, 57, 75, .99), rgba(27, 39, 54, .99));
  color: var(--text, #fff);
  box-shadow: 0 22px 70px rgba(0, 0, 0, .56), 0 1px 0 rgba(255,255,255,.07) inset;
}
.vps-files-shell .fm-confirm-head {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  padding: 18px 18px 13px;
}
.vps-files-shell .fm-confirm-icon {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 11px;
  background: rgba(76, 194, 255, .14);
  border: 1px solid rgba(76, 194, 255, .28);
  color: #bcecff;
  font: 700 13px/1 system-ui, sans-serif;
}
.vps-files-shell .fm-confirm-danger .fm-confirm-icon {
  background: rgba(235, 86, 86, .14);
  border-color: rgba(244, 113, 113, .34);
  color: #ffc7c7;
  font-size: 25px;
  font-weight: 400;
}
.vps-files-shell .fm-confirm-title-wrap { min-width: 0; }
.vps-files-shell .fm-confirm-title {
  margin: 1px 0 5px;
  color: var(--text, #fff);
  font-size: 16px;
  line-height: 1.25;
  font-weight: 650;
}
.vps-files-shell .fm-confirm-description {
  margin: 0;
  color: var(--text-dim, #bfceda);
  font-size: 12px;
  line-height: 1.55;
}
.vps-files-shell .fm-confirm-detail {
  margin: 0 18px 15px 72px;
  padding: 8px 10px;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  border-radius: 7px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.18);
  color: #d7e3ec;
  font: 11px/1.35 ui-monospace, Consolas, monospace;
}
.vps-files-shell .fm-confirm-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 11px 14px 13px;
  border-top: 1px solid rgba(255,255,255,.09);
  background: rgba(0,0,0,.13);
}
.vps-files-shell .fm-confirm-actions .fm-btn {
  min-width: 82px;
  padding: 7px 13px;
  border-radius: 7px;
}
.vps-files-shell .fm-confirm-primary {
  border-color: rgba(76,194,255,.45) !important;
  background: rgba(76,194,255,.16) !important;
}
.vps-files-shell .fm-danger-action {
  border-color: rgba(244,113,113,.48) !important;
  background: rgba(202,60,60,.30) !important;
  color: #fff !important;
}
.vps-files-shell .fm-danger-action:hover { background: rgba(217,67,67,.43) !important; }
@media (max-width: 520px) {
  .vps-files-shell .fm-confirm-head { grid-template-columns: 34px minmax(0, 1fr); padding: 15px 14px 11px; gap: 10px; }
  .vps-files-shell .fm-confirm-icon { width: 32px; height: 32px; border-radius: 9px; }
  .vps-files-shell .fm-confirm-detail { margin: 0 14px 12px 58px; }
}

.vps-files-shell .fm-confirm .fm-name-form { padding: 0 18px 14px; gap: 9px; }
.vps-files-shell .fm-confirm .fm-name-form .fm-confirm-actions {
  margin: 5px -18px -14px;
  padding: 11px 14px 13px;
}
