Files
console-dev/app/assets/styles/RemoteConsole.DLmX5UZu.css
T

240 lines
5.1 KiB
CSS

/* 嵌入式远程控制台:连接状态、工具栏、屏幕容器与凭据表单。 */
/* 导入方: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: #0052d9;
background: #edf4ff;
border-radius: 10px;
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: #0052d9;
}
.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;
}
}