/* 嵌入式远程控制台:连接状态、工具栏、屏幕容器与凭据表单。 */ /* 导入方:app/components/instance/RemoteConsole.vue、app/pages/remote-console.vue。 */ .remote-console[data-v-e696489e] { color: #23324d; background: #f8fafc; flex-direction: column; width: 100%; height: 100dvh; min-height: 0; display: flex; overflow: hidden; } .console-header[data-v-e696489e] { background: #fff; flex-shrink: 0; align-items: center; gap: 14px; padding: 14px 22px; display: flex; } .console-mark[data-v-e696489e] { color: var(--p-primary-color); background: #edf4ff; border-radius: var(--radius-lg); flex: 0 0 40px; place-items: center; width: 40px; height: 40px; font-size: 1.375rem; display: grid; } .console-heading[data-v-e696489e] { flex: 1; min-width: 0; } .console-heading h1[data-v-e696489e] { flex-wrap: wrap; align-items: baseline; gap: 10px; margin: 0; font-size: 1.25rem; font-weight: 650; line-height: 1.45; display: flex; } .console-brand[data-v-e696489e] { color: #64748b; letter-spacing: 0.04em; margin: 0 0 2px; font-size: 0.8125rem; line-height: 1.5; } .console-target[data-v-e696489e] { text-overflow: ellipsis; white-space: nowrap; margin: 3px 0 0; overflow: hidden; } .console-target[data-v-e696489e], .host-id[data-v-e696489e] { color: #64748b; font-size: 0.875rem; } .host-id[data-v-e696489e] { flex-shrink: 0; font-weight: 400; } .connection-state[data-v-e696489e] { color: #64748b; flex-shrink: 0; align-items: center; gap: 7px; font-size: 0.875rem; display: flex; } .state-dot[data-v-e696489e] { background: currentColor; border-radius: 50%; width: 7px; height: 7px; } .state-connected[data-v-e696489e] { color: #16803c; } .state-error[data-v-e696489e] { color: #c2413a; } .state-connecting[data-v-e696489e], .state-creating[data-v-e696489e] { color: var(--p-primary-color); } .console-toolbar[data-v-e696489e] { background: #f8fafc; border-block: 1px solid #e2e8f0; flex-shrink: 0; justify-content: space-between; gap: 10px; padding: 11px 20px; } .console-toolbar[data-v-e696489e], .toolbar-group[data-v-e696489e] { flex-wrap: wrap; align-items: center; display: flex; } .toolbar-group[data-v-e696489e] { gap: 8px; } .toolbar-message[data-v-e696489e] { color: #8a5900; flex-shrink: 0; margin: 0; padding: 9px 20px; font-size: 0.875rem; } /* 远控屏幕容器与覆盖层,连接/凭据状态由脚本驱动,不直接由CSS建立连接。 */ .console-display[data-v-e696489e] { background: #141b2b; flex: 1; min-height: 0; display: flex; position: relative; overflow: hidden; } .console-screen[data-v-e696489e] { width: 100%; min-width: 0; height: 100%; min-height: 0; position: absolute; inset: 0; } .console-overlay[data-v-e696489e] { color: #f8fafc; background: #141b2b; justify-content: center; align-items: center; padding: 24px; display: flex; position: absolute; inset: 0; overflow: auto; } .connection-message[data-v-e696489e] { text-align: center; max-width: 380px; } .state-icon[data-v-e696489e] { color: #9bb7e9; font-size: 1.875rem; } .connection-message h3[data-v-e696489e], .credential-form h3[data-v-e696489e] { margin: 18px 0 8px; font-size: 1.25rem; font-weight: 600; line-height: 1.4; } .connection-message p[data-v-e696489e], .credential-form p[data-v-e696489e] { color: #b6c3d9; margin: 0 0 22px; font-size: 0.9375rem; line-height: 1.8; } /* 仅在连接需要凭据时显示表单;输入生命周期和清理由组件负责。 */ .credential-form[data-v-e696489e] { flex-direction: column; gap: 10px; width: min(320px, 100%); margin: auto; display: flex; } .credential-form .state-icon[data-v-e696489e], .credential-form h3[data-v-e696489e], .credential-form > p[data-v-e696489e] { text-align: center; } .credential-form h3[data-v-e696489e] { margin: 8px 0 0; } .credential-form p[data-v-e696489e] { margin: 0 0 8px; } .credential-form label[data-v-e696489e] { font-size: 0.9375rem; } .credential-form .credential-error[data-v-e696489e] { color: #fca5a5; } .console-footer[data-v-e696489e] { color: #64748b; border-top: 1px solid #e2e8f0; flex-wrap: wrap; flex-shrink: 0; justify-content: space-between; gap: 8px; padding: 11px 20px; font-size: 0.875rem; line-height: 1.5; display: flex; } .remote-console[data-v-e696489e]:fullscreen { width: 100vw; height: 100dvh; } /* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .console-header[data-v-e696489e] { gap: 9px; padding: 14px 12px; } .console-mark[data-v-e696489e] { display: none; } .console-heading h1[data-v-e696489e] { gap: 7px; font-size: 1.125rem; } .connection-state[data-v-e696489e] { font-size: 0.8125rem; } .console-toolbar[data-v-e696489e] { padding: 10px; } .toolbar-group[data-v-e696489e] { gap: 6px; } .console-footer[data-v-e696489e] { padding: 10px 12px; font-size: 0.8125rem; } } /* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .pi-spin[data-v-e696489e] { animation: none; } }