Files
Cognitive_Agent/apps/web-console/console-v2.css
T

9749 lines
256 KiB
CSS

/* N7 web console ------------------------------------------------------------
Only the active remote-control layout lives here. */
.console-v2 {
--v2-accent: var(--primary);
--v2-accent-strong: color-mix(in oklch, var(--primary) 80%, var(--foreground));
--v2-accent-soft: color-mix(in oklch, var(--primary) 10%, var(--background));
--v2-sidebar: var(--sidebar);
--v2-sidebar-deep: var(--sidebar-accent);
--v2-ink: var(--foreground);
--v2-muted: var(--muted-foreground);
--v2-line: var(--border);
--v2-surface: var(--card);
--v2-canvas: var(--background);
--v2-shadow: 0 18px 50px oklch(0.145 0.008 326 / 10%);
--v2-module-title-block: clamp(12px, 2vh, 22px);
--v2-module-title-inline: clamp(20px, 2.3vw, 34px);
min-width: 1180px;
min-height: 620px;
overflow: hidden;
color: var(--v2-ink);
background: var(--v2-canvas);
font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
}
.console-v2 .v2-boot-screen {
position: fixed;
inset: 0;
z-index: 10000;
display: grid;
place-content: center;
justify-items: center;
gap: 10px;
color: var(--foreground);
background:
radial-gradient(circle at 50% 42%, color-mix(in oklch, var(--primary) 18%, transparent), transparent 18rem),
var(--background);
opacity: 1;
visibility: visible;
transition: opacity 160ms ease, visibility 160ms ease;
}
.console-v2.v2-ready .v2-boot-screen {
pointer-events: none;
opacity: 0;
visibility: hidden;
}
.console-v2 .v2-boot-screen strong {
font-size: 20px;
font-weight: 900;
letter-spacing: -0.03em;
}
.console-v2 .v2-boot-screen small {
color: var(--muted-foreground);
font-size: 11px;
font-weight: 700;
}
.console-v2 .v2-boot-mark {
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
margin-bottom: 4px;
border-radius: 15px;
background: linear-gradient(145deg, var(--v2-accent), var(--v2-accent-strong));
box-shadow: 0 12px 28px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2 .v2-boot-mark i {
width: 4px;
height: 4px;
border-radius: 999px;
background: var(--primary-foreground);
animation: v2-boot-pulse 900ms ease-in-out infinite alternate;
}
.console-v2 .v2-boot-mark i:nth-child(2) {
animation-delay: 150ms;
}
.console-v2 .v2-boot-mark i:nth-child(3) {
animation-delay: 300ms;
}
@keyframes v2-boot-pulse {
to {
height: 18px;
border-radius: 4px;
}
}
.console-v2 * {
scrollbar-color: var(--v2-accent) rgba(133, 151, 151, 0.14);
scrollbar-width: thin;
}
.console-v2 *::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.console-v2 *::-webkit-scrollbar-track {
background: rgba(133, 151, 151, 0.12);
border-radius: 999px;
}
.console-v2 *::-webkit-scrollbar-thumb {
background: color-mix(in srgb, var(--v2-accent) 74%, white);
border: 2px solid transparent;
border-radius: 999px;
background-clip: padding-box;
}
.console-v2 .workspace {
width: 100vw;
height: 100dvh;
min-height: 620px;
display: grid;
grid-template-columns: clamp(245px, 18.5vw, 310px) minmax(0, 1fr);
overflow: hidden;
opacity: 0;
background: var(--v2-canvas);
transition: opacity 180ms ease, grid-template-columns 180ms ease;
visibility: hidden;
}
.console-v2.v2-ready .workspace {
opacity: 1;
visibility: visible;
}
.console-v2.v2-sidebar-collapsed .workspace {
grid-template-columns: 72px minmax(0, 1fr);
}
/* Sidebar ----------------------------------------------------------------- */
.console-v2 .v2-sidebar {
min-width: 0;
height: 100dvh;
display: flex;
flex-direction: column;
gap: 0;
padding: clamp(20px, 2.5vh, 30px) clamp(18px, 2vw, 30px) 18px;
overflow: hidden;
color: var(--v2-ink);
background:
radial-gradient(circle at 14% 3%, color-mix(in oklch, var(--card) 82%, transparent), transparent 24%),
linear-gradient(158deg, var(--v2-sidebar) 0%, var(--sidebar-accent) 60%, var(--v2-sidebar-deep) 130%);
border-right: 1px solid var(--v2-line);
}
.v2-sidebar-toggle {
width: 29px;
height: 29px;
display: grid;
place-items: center;
padding: 0;
color: var(--v2-accent-strong);
background: rgba(255, 255, 255, 0.58);
border: 1px solid rgba(255, 255, 255, 0.82);
border-radius: 8px;
cursor: pointer;
transition: 150ms ease;
}
.v2-sidebar-toggle:hover {
background: rgba(255, 255, 255, 0.92);
box-shadow: 0 6px 16px rgba(35, 85, 85, 0.1);
}
.v2-sidebar-toggle svg {
width: 15px;
height: 15px;
}
.console-v2.v2-sidebar-collapsed .v2-sidebar {
align-items: center;
padding: 15px 9px;
}
.console-v2.v2-sidebar-collapsed .v2-sidebar-section,
.console-v2.v2-sidebar-collapsed .v2-sidebar-footer {
display: none;
}
.v2-sidebar-section {
min-width: 0;
}
.v2-section-heading span,
.v2-operation-heading .section-kicker,
.v2-output-heading small {
color: var(--v2-accent);
font-size: 8px;
font-weight: 900;
letter-spacing: 0.15em;
}
.v2-section-heading h2 {
margin: 3px 0 clamp(18px, 2.3vh, 26px);
color: var(--v2-accent-strong);
font-size: clamp(25px, 2vw, 31px);
font-weight: 900;
letter-spacing: -0.04em;
}
.v2-divider {
height: 1px;
margin-bottom: 15px;
background: linear-gradient(90deg, var(--v2-accent), transparent);
opacity: 0.32;
}
.console-v2 .v2-transport-field {
width: 100%;
min-width: 0;
max-width: 100%;
margin: 0;
overflow: hidden;
box-sizing: border-box;
padding: 8px;
background: rgba(255, 255, 255, 0.72);
border: 1px solid rgba(255, 255, 255, 0.78);
border-radius: 10px;
}
.console-v2 .v2-transport-field > .field-label {
display: block;
margin-top: 0;
margin-bottom: 6px;
color: #8a9999;
font-size: 10px;
font-weight: 700;
letter-spacing: 0.02em;
}
.console-v2 .v2-transport-field .vehicle-transport-options {
width: 100%;
min-width: 0;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 5px;
}
.console-v2 .v2-transport-field .mode-option {
min-width: 0;
min-height: 32px;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
padding: 5px 7px;
color: #657879;
background: rgba(246, 249, 248, 0.92);
border: 1px solid rgba(105, 137, 137, 0.16);
border-radius: 8px;
font-size: 10px;
font-weight: 850;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
cursor: pointer;
}
.console-v2 .v2-transport-field .mode-option svg {
width: 14px;
height: 14px;
flex: 0 0 auto;
}
.console-v2 .v2-transport-field .mode-option.active {
color: #fff;
background: linear-gradient(145deg, var(--v2-accent), var(--v2-accent-strong));
border-color: transparent;
box-shadow: 0 5px 13px color-mix(in srgb, var(--v2-accent) 20%, transparent);
}
.console-v2 .v2-transport-field > #vehicleTransportNote {
display: -webkit-box;
margin: 6px 1px 0;
overflow: hidden;
color: #809091;
font-size: 8px;
line-height: 1.35;
overflow-wrap: anywhere;
white-space: normal;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.v2-sidebar-footer {
min-height: 50px;
display: grid;
grid-template-columns: 10px minmax(0, 1fr) 34px;
align-items: center;
gap: 10px;
margin-top: auto;
padding-top: 12px;
border-top: 1px solid var(--v2-line);
}
.v2-live-dot {
width: 8px;
height: 8px;
background: #18a493;
border: 2px solid rgba(255, 255, 255, 0.9);
border-radius: 50%;
box-shadow: 0 0 0 4px rgba(24, 164, 147, 0.12);
}
.v2-sidebar-footer.offline .v2-live-dot {
background: #dc9343;
box-shadow: 0 0 0 4px rgba(220, 147, 67, 0.12);
}
.v2-sidebar-footer strong,
.v2-sidebar-footer small {
display: block;
}
.v2-sidebar-footer strong {
color: #284244;
font-size: 10px;
}
.v2-sidebar-footer small {
margin-top: 2px;
overflow: hidden;
color: #7b8e8e;
font-size: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-sidebar-footer button {
width: 32px;
height: 32px;
display: grid;
place-items: center;
color: #708486;
background: rgba(255, 255, 255, 0.55);
border: 1px solid rgba(255, 255, 255, 0.72);
border-radius: 8px;
cursor: pointer;
}
.v2-sidebar-footer button svg {
width: 14px;
height: 14px;
}
/* Main canvas -------------------------------------------------------------- */
.console-v2 .main-panel {
--v2-main-pad: clamp(12px, 1.5vw, 20px);
min-width: 0;
height: 100dvh;
display: grid;
grid-template-rows: 36px clamp(240px, 31.5dvh, 340px) minmax(0, 1fr);
gap: clamp(10px, 1.25vh, 14px);
padding: 0 var(--v2-main-pad) var(--v2-main-pad);
overflow: hidden;
background:
radial-gradient(circle at 40% -15%, rgba(255, 255, 255, 0.98), transparent 38%),
#f5f7f6;
}
.v2-operation-shell,
.v2-output-shell {
min-width: 0;
min-height: 0;
position: relative;
overflow: hidden;
background: rgba(255, 255, 255, 0.9);
border: 1px solid rgba(117, 145, 145, 0.14);
border-radius: clamp(17px, 1.4vw, 24px);
box-shadow: var(--v2-shadow);
}
.v2-operation-shell {
isolation: isolate;
}
.v2-operation-glow {
width: 280px;
height: 280px;
position: absolute;
top: -190px;
left: 45%;
z-index: -1;
background: var(--v2-accent-soft);
border-radius: 50%;
filter: blur(44px);
opacity: 0.62;
}
.v2-natural-panel,
.v2-gesture-panel {
width: 100%;
height: 100%;
}
.v2-natural-panel {
display: grid;
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto minmax(118px, 1fr) auto;
gap: 8px;
padding: var(--v2-module-title-block) var(--v2-module-title-inline) 15px;
}
.v2-operation-heading {
align-self: start;
min-width: 0;
margin: 0;
padding: 0;
}
.console-v2 .v2-operation-heading h2 {
max-width: none;
margin: 4px 0 3px;
color: #101f21;
font-size: clamp(23px, 2.05vw, 34px);
font-weight: 950;
line-height: 1.08;
letter-spacing: -0.045em;
}
.console-v2 .v2-operation-heading .panel-intro {
max-width: 560px;
margin: 0;
color: #8b9899;
font-size: clamp(10px, 0.86vw, 13px);
line-height: 1.55;
}
/* Shared title system for all five top-level capability modules. */
.console-v2 .v2-module-heading.v2-module-heading .section-kicker {
display: block;
margin: 0 0 5px;
color: var(--v2-accent-strong);
font: 850 9px/1.2 "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
letter-spacing: 0.16em;
}
.console-v2 .v2-module-heading.v2-module-heading h1,
.console-v2 .v2-module-heading.v2-module-heading h2 {
max-width: none;
margin: 0 0 4px;
color: var(--v2-ink);
font-size: clamp(24px, 2vw, 31px);
font-weight: 900;
line-height: 1.08;
letter-spacing: -0.04em;
}
.console-v2 .v2-module-heading.v2-module-heading > p,
.console-v2 .v2-module-heading.v2-module-heading .panel-intro {
display: block;
max-width: 660px;
margin: 0;
color: var(--v2-muted);
font-size: 11px;
line-height: 1.5;
}
.v2-natural-grid {
min-width: 0;
min-height: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) clamp(170px, 17vw, 230px);
align-items: center;
gap: 14px;
}
.console-v2 .v2-request-form {
min-width: 0;
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto 1fr;
gap: 0;
align-items: stretch;
margin: 0;
}
.console-v2 .v2-request-form .field-label-row {
grid-column: 1 / -1;
height: 0;
min-height: 0;
margin: 0;
}
.console-v2 .v2-request-form .field-label-row label {
display: none;
}
.console-v2 .v2-request-form .context-reset {
width: 24px;
height: 24px;
position: absolute;
top: 8px;
right: 8px;
z-index: 4;
color: var(--v2-accent);
background: transparent;
border: 0;
}
.console-v2 .v2-request-form .command-composer {
height: 118px;
min-height: 118px;
margin: 0;
overflow: hidden;
background: #fff;
border: 1px solid rgba(104, 136, 136, 0.18);
border-radius: 18px;
box-shadow: 0 12px 35px rgba(40, 76, 77, 0.08);
}
.console-v2 .v2-request-form #utterance {
height: 116px;
min-height: 116px;
padding: 18px 72px 28px 20px;
color: #23383a;
background: transparent;
border: 0;
font-size: clamp(13px, 1.05vw, 16px);
line-height: 1.5;
resize: none;
}
.console-v2 .v2-request-form #utterance:focus {
box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--v2-accent) 34%, white);
}
.console-v2 .v2-request-form .composer-hint {
right: 62px;
bottom: 9px;
color: #a0acad;
font-size: 8px;
}
.console-v2 .v2-request-form .primary-action {
width: 36px;
height: 36px;
min-height: 36px;
position: absolute;
right: 10px;
bottom: 10px;
z-index: 3;
display: grid;
place-items: center;
margin: 0;
padding: 0;
color: #fff;
background: linear-gradient(145deg, var(--v2-accent), var(--v2-accent-strong));
border: 0;
border-radius: 50%;
box-shadow: 0 7px 16px color-mix(in srgb, var(--v2-accent) 21%, transparent);
}
.console-v2 .v2-request-form .primary-action span {
display: none;
}
.console-v2 .v2-request-form .primary-action svg {
width: 17px;
height: 17px;
}
.console-v2 .v2-request-status {
min-width: 0;
height: 118px;
min-height: 118px;
display: grid;
grid-template-columns: minmax(0, 1fr);
align-content: center;
gap: 7px;
margin: 0;
padding: 16px;
color: #526465;
background: #f2f4f3;
border: 1px solid #ebeeee;
border-radius: 17px;
}
.console-v2 .v2-request-status .section-kicker,
.console-v2 .v2-request-status .matrix-stat {
display: none;
}
.console-v2 .v2-request-status .request-title-row {
display: grid;
gap: 7px;
}
.console-v2 .v2-request-status h2 {
margin: 0;
overflow: hidden;
color: #425557;
font-size: 13px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-request-status .run-status {
width: fit-content;
margin: 0;
padding: 4px 7px;
font-size: 7px;
}
.console-v2 .v2-request-status #requestMeta {
margin: 0;
overflow: hidden;
color: #899697;
font: 700 8px "SFMono-Regular", Consolas, monospace;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-mode-rail {
min-width: 0;
position: relative;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto auto;
align-items: center;
gap: 9px;
margin: 0;
padding: 0;
background: transparent;
border: 0;
}
.console-v2 .v2-mode-rail .mode-rail-heading {
display: contents;
}
.console-v2 .v2-mode-rail .mode-rail-heading > div {
display: block;
grid-column: 1;
grid-row: 1;
}
.console-v2 .v2-mode-rail .mode-rail-heading > div > span {
color: #8a9797;
font-size: 9px;
font-weight: 800;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-heading small {
display: none;
}
.console-v2 .v2-mode-rail #saveModeToggle {
grid-column: 4;
grid-row: 1;
min-height: 30px;
padding: 5px 9px;
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 70%, white);
border: 1px solid color-mix(in srgb, var(--v2-accent) 12%, white);
border-radius: 999px;
font-size: 9px;
font-weight: 850;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-controls {
grid-column: 3;
grid-row: 1;
gap: 5px;
margin: 0;
}
.console-v2 .v2-mode-rail .mode-rail-pager {
grid-template-columns: repeat(2, 24px);
gap: 1px;
padding: 2px;
border-color: rgba(70, 104, 105, 0.12);
border-radius: 999px;
}
.console-v2 .v2-mode-rail .mode-rail-page {
width: 24px;
height: 24px;
border-radius: 999px;
}
.console-v2 .v2-mode-rail .mode-gallery-toggle {
min-height: 30px;
padding: 4px 8px;
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 56%, white);
border-color: color-mix(in srgb, var(--v2-accent) 12%, white);
border-radius: 999px;
font-size: 9px;
}
.console-v2 .v2-mode-rail .mode-gallery-toggle strong {
min-width: 17px;
height: 17px;
padding: 0 4px;
background: var(--v2-accent);
font-size: 8px;
}
.console-v2 .v2-mode-rail .mode-chips {
min-width: 0;
grid-column: 2;
grid-row: 1;
display: flex;
gap: 8px;
padding: 2px;
overflow-x: auto;
scrollbar-width: none;
}
.console-v2 .v2-mode-rail .mode-chips::-webkit-scrollbar {
display: none;
}
.console-v2 .v2-mode-rail .mode-group-divider {
width: 1px;
height: 24px;
flex: 0 0 1px;
align-self: center;
margin: 0 4px;
background: rgba(21, 54, 56, 0.24);
border-radius: 999px;
}
.console-v2 .v2-mode-rail .mode-chips button {
min-width: clamp(92px, 9.5vw, 145px);
min-height: 34px;
flex: 0 0 auto;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 6px 13px;
color: #153638;
background: color-mix(in srgb, var(--v2-accent-soft) 80%, white);
border: 1px solid color-mix(in srgb, var(--v2-accent) 10%, white);
border-radius: 999px;
font-size: 11px;
font-weight: 800;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-chips button.v2-edge-fade-left {
-webkit-mask-image: linear-gradient(
90deg,
transparent var(--v2-edge-fade-start),
#000 var(--v2-edge-fade-end)
);
mask-image: linear-gradient(
90deg,
transparent var(--v2-edge-fade-start),
#000 var(--v2-edge-fade-end)
);
}
.console-v2 .v2-mode-rail .mode-chips button.v2-edge-fade-right {
-webkit-mask-image: linear-gradient(
90deg,
#000 var(--v2-edge-fade-start),
transparent var(--v2-edge-fade-end)
);
mask-image: linear-gradient(
90deg,
#000 var(--v2-edge-fade-start),
transparent var(--v2-edge-fade-end)
);
}
.console-v2 .v2-mode-rail .mode-chips button svg {
width: 13px;
height: 13px;
color: var(--v2-accent);
}
.console-v2 .v2-mode-rail .mode-chips button.running {
color: #294e9d;
background: #e5ecff;
border-color: rgba(66, 104, 194, 0.38);
box-shadow: 0 0 0 3px rgba(66, 104, 194, 0.1);
}
.console-v2 .v2-mode-rail .mode-chips button.succeeded {
color: #0d755f;
background: #ddf7ef;
border-color: rgba(18, 148, 115, 0.36);
box-shadow: 0 0 0 3px rgba(18, 148, 115, 0.09);
}
.console-v2 .v2-mode-rail .mode-chips button.failed {
color: #a84039;
background: #fde9e7;
border-color: rgba(201, 72, 62, 0.36);
}
.console-v2 .v2-mode-rail .mode-chips button:disabled {
cursor: wait;
}
.console-v2 .v2-mode-rail .mode-cycle-badge {
display: none;
}
.console-v2 .v2-mode-rail .save-mode-composer {
width: min(420px, 52vw);
position: absolute;
right: 0;
bottom: 40px;
z-index: 8;
grid-template-columns: minmax(0, 1.15fr) minmax(150px, 0.85fr);
padding: 11px;
border-color: rgba(70, 104, 105, 0.14);
box-shadow: 0 18px 42px rgba(31, 67, 69, 0.18);
}
.console-v2 .v2-mode-rail .save-mode-source {
grid-column: 1 / -1;
}
.console-v2 .v2-mode-rail .save-mode-actions {
grid-template-columns: auto minmax(92px, 1fr);
}
.console-v2[data-control-mode="gesture"] .v2-natural-panel,
.console-v2:not([data-control-mode="gesture"]) .v2-gesture-panel {
display: none;
}
/* Inline gesture control -------------------------------------------------- */
.console-v2 .v2-gesture-panel {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
gap: 8px;
padding: clamp(18px, 2vh, 24px) clamp(22px, 2.3vw, 34px) 15px;
}
.console-v2 .v2-inline-gesture,
.console-v2 .v2-inline-gesture.open {
width: 100%;
height: 100%;
position: static;
display: grid;
grid-template-columns:
minmax(180px, 0.72fr)
44px
minmax(270px, 1.58fr)
minmax(230px, 1fr);
grid-template-rows: minmax(0, 1fr);
gap: 12px;
padding: 0;
overflow: hidden;
visibility: visible;
transform: none;
color: var(--v2-ink);
background: transparent;
border: 0;
box-shadow: none;
}
.console-v2 .v2-inline-gesture .gesture-drawer-header {
display: none;
}
.console-v2 .v2-inline-gesture .gesture-close {
display: none;
}
.console-v2 .v2-inline-gesture .gesture-camera-stage {
width: 100%;
min-width: 0;
grid-column: 1;
grid-row: 1;
height: 100%;
min-height: 0;
margin: 0;
aspect-ratio: auto;
overflow: hidden;
background: linear-gradient(145deg, #263537, #111b1d);
border: 1px solid color-mix(in srgb, var(--v2-accent) 42%, transparent);
border-radius: 17px;
box-shadow: 0 12px 32px color-mix(in srgb, var(--v2-accent) 14%, transparent);
}
.v2-module-switcher {
min-width: 0;
min-height: 36px;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
align-items: stretch;
margin-inline: calc(0px - var(--v2-main-pad));
padding: 3px var(--v2-main-pad) 0;
overflow: hidden;
background: color-mix(in srgb, var(--v2-accent) 30%, var(--v2-accent-soft));
border: 0;
border-bottom: 1px solid color-mix(in srgb, var(--v2-accent) 28%, transparent);
border-radius: 0;
box-shadow: 0 6px 16px color-mix(in srgb, var(--v2-accent) 10%, transparent);
}
.v2-module-tab {
min-width: 0;
min-height: 32px;
position: relative;
display: grid;
place-items: center;
padding: 5px 10px 7px;
overflow: hidden;
color: color-mix(in srgb, var(--v2-accent-strong) 48%, #7c898a);
background: transparent;
border: 0;
border-radius: 0;
font: 650 clamp(11px, 0.92vw, 14px) Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
text-overflow: ellipsis;
transition: color 160ms ease, font-weight 160ms ease;
white-space: nowrap;
}
.v2-module-tab > span {
overflow: hidden;
text-overflow: ellipsis;
}
.v2-module-tab.active {
color: var(--v2-accent-strong);
background: transparent;
box-shadow: none;
font-weight: 800;
}
.v2-module-tab.active::after {
width: clamp(48px, 45%, 72px);
height: 3px;
position: absolute;
right: auto;
bottom: 0;
left: 50%;
content: "";
background: var(--v2-accent);
border-radius: 999px;
transform: translateX(-50%);
}
.v2-module-tab:disabled {
cursor: default;
opacity: 0.78;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle {
width: 42px;
height: 42px;
min-height: 42px;
grid-row: 3;
position: static;
z-index: 2;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0;
color: white;
border: 0;
border-radius: 50%;
background: var(--v2-accent);
box-shadow: 0 8px 20px color-mix(in srgb, var(--v2-accent) 24%, transparent);
cursor: pointer;
transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle:hover {
transform: translateY(-1px);
background: var(--v2-accent-strong);
box-shadow: 0 10px 24px color-mix(in srgb, var(--v2-accent) 32%, transparent);
}
.console-v2 .v2-inline-gesture .v2-camera-toggle:disabled {
cursor: not-allowed;
opacity: 1;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle svg {
width: 19px;
height: 19px;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle span {
width: 1px;
height: 1px;
position: absolute;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: nowrap;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle.active {
color: white;
background: var(--v2-accent);
}
.console-v2 .v2-inline-gesture .v2-camera-toggle.active svg {
display: none;
}
.console-v2 .v2-inline-gesture .v2-camera-toggle.active::before {
width: 13px;
height: 13px;
content: "";
border-radius: 3px;
background: currentColor;
}
.console-v2 .v2-inline-gesture .v2-gesture-action-rail {
grid-column: 2;
grid-row: 1;
align-self: stretch;
position: relative;
z-index: 8;
display: grid;
grid-template-rows: 42px 10px 42px;
align-content: end;
place-items: center;
gap: 0;
margin: 0;
}
.console-v2 .v2-inline-gesture #gestureStopButton {
display: none;
}
.console-v2 .v2-inline-gesture .gesture-footnote,
.console-v2 .v2-inline-gesture .gesture-progress {
display: none;
}
.console-v2 .v2-inline-gesture .v2-gesture-result-stack {
min-width: 0;
min-height: 0;
grid-column: 3;
grid-row: 1;
display: grid;
grid-template-rows: minmax(58px, 0.78fr) minmax(72px, 1.22fr);
gap: 9px;
}
.console-v2 .v2-inline-gesture .v2-gesture-recognition-card,
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot {
min-width: 0;
min-height: 0;
display: grid;
grid-template-rows: auto minmax(0, 1fr);
gap: 4px;
padding: 8px 10px;
overflow: hidden;
border: 1px solid var(--v2-line);
border-radius: 11px;
background: color-mix(in srgb, var(--v2-accent-soft) 24%, #f1f3f3);
}
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot {
background: color-mix(in srgb, var(--v2-accent-soft) 16%, #f4f5f5);
}
.console-v2 .v2-inline-gesture .v2-gesture-result-label {
color: color-mix(in srgb, var(--v2-accent-strong) 68%, #5f6d6e);
font-size: 10px;
font-weight: 850;
line-height: 1.2;
}
.console-v2 .v2-inline-gesture .gesture-status-strip {
display: none;
}
.console-v2 .v2-inline-gesture .gesture-now {
min-height: 0;
margin: 0;
padding: 4px 8px;
background: rgba(255, 255, 255, 0.66);
border: 1px solid color-mix(in srgb, var(--v2-accent) 8%, transparent);
border-radius: 8px;
}
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot .v2-request-status {
width: 100%;
height: 100%;
min-height: 0;
align-content: center;
gap: 4px;
padding: 2px 8px 0;
background: transparent;
border: 0;
border-radius: 0;
}
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot .v2-request-status .request-title-row {
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 8px;
}
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot .v2-request-status h2 {
color: var(--v2-ink);
font-size: 11px;
}
.console-v2 .v2-inline-gesture .v2-gesture-execution-slot .v2-request-status #requestMeta {
color: var(--v2-muted);
}
.console-v2 .v2-inline-gesture .gesture-guide-card {
min-width: 0;
min-height: 0;
grid-column: 4;
grid-row: 1;
align-self: stretch;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
padding: 9px 11px;
overflow: auto;
border: 1px solid var(--v2-line);
border-radius: 13px;
background: color-mix(in srgb, var(--v2-accent-soft) 35%, white);
}
.console-v2 .v2-inline-gesture .gesture-card-heading {
min-width: 0;
gap: 8px;
margin: 0 0 6px;
}
.console-v2 .v2-inline-gesture .gesture-card-heading > div {
min-width: 0;
}
.console-v2 .v2-inline-gesture .gesture-card-heading span {
color: #173b3a;
font-size: 12px;
}
.console-v2 .v2-inline-gesture .gesture-card-heading small {
overflow: hidden;
color: #718987;
font-size: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-inline-gesture .gesture-card-heading button {
flex: 0 0 auto;
min-height: 26px;
padding: 4px 7px;
color: var(--v2-accent-strong);
border: 1px solid color-mix(in srgb, var(--v2-accent) 18%, transparent);
border-radius: 8px;
background: color-mix(in srgb, var(--v2-accent-soft) 62%, white);
font-size: 8px;
}
.console-v2 .v2-inline-gesture .gesture-card-heading button svg {
width: 11px;
height: 11px;
}
.console-v2 .v2-inline-gesture .gesture-map-grid {
min-height: 0;
grid-template-columns: repeat(2, minmax(0, 1fr));
align-content: stretch;
gap: 4px 6px;
}
.console-v2 .v2-inline-gesture .gesture-map-grid > div {
min-height: 0;
padding: 3px 7px;
color: #637c79;
border: 1px solid rgba(43, 103, 102, 0.08);
border-radius: 7px;
background: rgba(255, 255, 255, 0.72);
font-size: 8px;
}
.console-v2 .v2-inline-gesture .gesture-map-grid i {
color: #8fa6a3;
}
.console-v2 .v2-inline-gesture .gesture-map-grid b {
color: var(--v2-accent-strong);
}
.console-v2 .v2-inline-gesture .gesture-customize {
margin-top: 7px;
padding-top: 7px;
border-color: var(--v2-line);
}
.console-v2 .v2-inline-gesture .gesture-guide-card:has(.gesture-customize:not([hidden])) .gesture-map-grid {
display: none;
}
.console-v2 .v2-inline-gesture .gesture-customize > div span {
color: #718987;
}
.console-v2 .v2-inline-gesture .gesture-customize > div strong {
color: #173b3a;
}
.console-v2 .v2-inline-gesture .gesture-customize select {
color: #173b3a;
border-color: var(--v2-line);
background: white;
}
.console-v2.gesture-open {
overflow: hidden;
}
/* Output pages ------------------------------------------------------------ */
.v2-output-shell {
display: grid;
grid-template-columns: minmax(0, 1fr) clamp(92px, 8vw, 124px);
grid-template-rows: 56px minmax(0, 1fr);
gap: 0;
padding: 0;
}
.console-v2 .v2-output-shell {
grid-template-columns: minmax(0, 1fr);
}
.v2-output-shell.v2-twin-active {
grid-template-rows: minmax(0, 1fr);
}
.v2-output-shell.v2-twin-active .v2-output-heading {
display: none;
}
.v2-output-shell.v2-twin-active .v2-output-content {
grid-row: 1;
margin-top: 9px;
}
.v2-output-heading {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 10px 18px 8px 22px;
border-bottom: 1px solid rgba(114, 140, 140, 0.12);
}
.v2-output-heading > div {
min-width: 0;
display: flex;
align-items: center;
gap: 12px;
}
.v2-output-heading > div > div {
min-width: 0;
display: flex;
align-items: center;
}
.v2-page-index {
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--v2-accent);
font: 900 23px/1 "SFMono-Regular", Consolas, monospace;
letter-spacing: -0.08em;
}
.console-v2 .v2-page-index {
display: none;
}
.v2-output-heading h2 {
margin: 0;
color: var(--v2-accent-strong);
font: 900 clamp(16px, 1.4vw, 21px)/1 Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
letter-spacing: -0.025em;
}
.v2-output-heading small {
display: none;
}
.v2-output-state {
display: inline-flex;
align-items: center;
gap: 7px;
color: #718080;
font: 850 8px "SFMono-Regular", Consolas, monospace;
white-space: nowrap;
}
.v2-output-state i {
width: 7px;
height: 7px;
background: var(--v2-accent);
border-radius: 50%;
box-shadow: 0 0 0 5px color-mix(in srgb, var(--v2-accent) 10%, transparent);
}
.v2-output-content {
min-width: 0;
min-height: 0;
position: relative;
grid-column: 1;
grid-row: 2;
margin: 5px 13px 13px;
overflow: hidden;
background: #f2f4f3;
border: 1px solid #edf0ef;
border-radius: 17px;
}
.console-v2 .v2-output-page {
position: absolute;
inset: 0;
display: none !important;
margin: 0;
overflow: auto;
}
.console-v2 .v2-output-page.v2-active-output {
display: block !important;
}
.console-v2 .result-workspace {
display: contents !important;
}
.console-v2 .result-workspace > .result-workspace-heading,
.console-v2 .result-workspace > .result-nav {
display: none !important;
}
.console-v2 .result-workspace .tab-panel {
min-height: 100%;
padding: clamp(16px, 1.6vw, 24px);
background: #f7f9f8;
border: 0;
border-radius: 0;
box-shadow: none;
}
.console-v2 .result-workspace .tab-panel.v2-scrollable::after {
content: "向下滚动查看更多";
display: block;
width: fit-content;
margin: 18px auto 0;
padding: 5px 9px;
color: #869696;
background: #edf2f1;
border-radius: 999px;
font-size: 8px;
}
.console-v2 .joint-twin-shell.v2-output-page {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: minmax(0, 1fr);
gap: 10px;
padding: 10px;
overflow: hidden;
background: #eef2f1;
border: 0;
border-radius: 0;
box-shadow: none;
}
.console-v2 .joint-twin-shell.v2-output-page.v2-active-output {
display: grid !important;
}
.console-v2 .v2-output-shell.v2-twin-active {
overflow: visible;
background: transparent;
border: 0;
border-radius: 0;
box-shadow: none;
}
.console-v2 .v2-output-shell.v2-twin-active .v2-output-content {
margin: 0;
background: transparent;
border: 0;
border-radius: 0;
}
.console-v2 .joint-twin-shell.v2-output-page {
gap: 12px;
padding: 0;
background: transparent;
}
.console-v2 .joint-twin-shell > .joint-twin-heading,
.console-v2 .joint-twin-shell > .joint-hardware-boundary {
display: none !important;
}
.console-v2 .joint-twin-shell > .twin-band,
.console-v2 .joint-twin-shell > .cabin-band {
min-width: 0;
height: 100%;
display: grid;
margin: 0;
overflow: hidden;
background: color-mix(in srgb, var(--v2-accent-soft) 8%, white);
border: 1px solid color-mix(in srgb, var(--v2-accent) 14%, transparent);
border-radius: 12px;
}
.console-v2 .joint-twin-shell > .twin-band {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: 62px minmax(0, 1fr);
container-type: inline-size;
}
.console-v2 .joint-twin-shell > .cabin-band {
grid-template-rows: 66px minmax(0, 1fr);
padding: 0;
position: relative;
}
.console-v2 .joint-twin-shell .twin-heading {
width: 100%;
min-width: 0;
min-height: 0;
padding: 9px 12px;
background:
linear-gradient(
105deg,
color-mix(in srgb, var(--v2-accent-soft) 86%, white),
color-mix(in srgb, var(--v2-accent-soft) 18%, white) 58%
),
white;
border-bottom: 1px solid color-mix(in srgb, var(--v2-accent) 14%, transparent);
}
.console-v2 .joint-twin-shell .twin-heading .section-kicker {
display: block;
color: var(--v2-accent-strong);
font-size: 7px;
letter-spacing: 0.12em;
}
.console-v2 .joint-twin-shell .twin-heading h3 {
display: block;
margin: 2px 0 0;
color: var(--v2-ink);
font-size: 16px;
}
.console-v2 .joint-twin-shell .twin-title-copy {
min-width: 0;
}
.console-v2 .joint-twin-shell .twin-toolbar {
width: auto;
min-width: 0;
justify-content: flex-end;
}
.console-v2 .joint-twin-shell .twin-focus-badge {
min-height: 24px;
padding: 3px 6px;
}
.console-v2 .joint-twin-shell .twin-reset {
width: 27px;
height: 27px;
min-height: 27px;
}
.console-v2 .joint-twin-shell .twin-stage {
width: 100%;
max-width: 100%;
min-width: 0;
height: 100% !important;
min-height: 0;
background:
radial-gradient(ellipse at 50% 82%, rgba(47, 128, 237, 0.14), transparent 40%),
linear-gradient(165deg, #f4f9ff 0%, #e5f1ff 100%);
}
.console-v2 .joint-twin-shell #seatTwinCanvas {
width: 100% !important;
height: 100% !important;
}
.console-v2 .joint-twin-shell .twin-readout {
display: none;
}
.console-v2 .joint-twin-shell .vehicle-system-hud {
top: 12px;
left: 12px;
transform: scale(0.88);
transform-origin: top left;
}
.console-v2 .joint-twin-shell .cabin-heading {
min-height: 0;
display: flex;
align-items: center;
margin: 0;
padding: 8px 10px;
background:
linear-gradient(
105deg,
color-mix(in srgb, var(--v2-accent-soft) 86%, white),
color-mix(in srgb, var(--v2-accent-soft) 18%, white) 58%
),
white;
border-bottom: 1px solid color-mix(in srgb, var(--v2-accent) 14%, transparent);
}
.console-v2 .joint-twin-shell .cabin-heading .section-kicker {
display: block;
color: var(--v2-accent-strong);
font-size: 6px;
letter-spacing: 0.12em;
}
.console-v2 .joint-twin-shell .cabin-heading h3 {
margin: 1px 0 0;
color: var(--v2-ink);
font-size: 13px;
}
.console-v2 .joint-twin-shell .cabin-title-copy {
min-width: 0;
}
.console-v2 .joint-twin-shell .cabin-title-copy p {
max-width: 420px;
margin: 2px 0 0;
overflow: hidden;
color: var(--v2-muted);
font-size: 7px;
line-height: 1.35;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .cabin-channel-legend {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4px;
margin-left: auto;
}
.console-v2 .joint-twin-shell .cabin-channel-legend > span:not(.simulation-label) {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 6px;
color: color-mix(in srgb, var(--v2-ink) 74%, var(--v2-muted));
background: color-mix(in srgb, var(--v2-accent-soft) 24%, white);
border: 1px solid color-mix(in srgb, var(--v2-accent) 14%, transparent);
border-radius: 999px;
font-size: 7px;
font-weight: 800;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .cabin-channel-legend i {
color: #fff;
background: var(--v2-accent);
border-radius: 999px;
padding: 2px 4px;
font: 900 6px "SFMono-Regular", Consolas, monospace;
font-style: normal;
}
.console-v2 .joint-twin-shell .cabin-heading .simulation-label {
display: none;
}
.console-v2 .joint-twin-shell .domain-grid {
min-height: 0;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: none;
grid-auto-rows: max-content;
align-content: start;
gap: 6px;
padding: 6px;
overflow-x: hidden;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: color-mix(in srgb, var(--v2-accent) 34%, transparent) transparent;
}
.console-v2 .joint-twin-shell .domain-panel {
min-width: 0;
min-height: 0;
position: relative;
padding: 6px;
overflow: hidden;
background:
linear-gradient(145deg, rgba(255, 255, 255, 0.98), rgba(246, 250, 249, 0.92));
border-color: rgba(78, 123, 120, 0.15);
border-radius: 10px;
box-shadow: 0 5px 16px rgba(32, 76, 73, 0.045);
}
.console-v2 .joint-twin-shell .domain-panel::before {
content: "";
width: 3px;
position: absolute;
inset: 8px auto 8px 0;
background: var(--v2-accent);
border-radius: 0 3px 3px 0;
opacity: 0.62;
}
.console-v2 .joint-twin-shell .domain-panel[data-device-channel="ch0"]::before {
background: var(--v2-accent);
}
.console-v2 .joint-twin-shell .domain-panel.active {
border-color: color-mix(in srgb, var(--v2-accent) 32%, #dce7e4);
box-shadow: 0 7px 18px color-mix(in srgb, var(--v2-accent) 9%, transparent);
}
.console-v2 .joint-twin-shell .domain-panel header {
grid-template-columns: 24px minmax(0, 1fr) auto;
gap: 4px;
}
.console-v2 .joint-twin-shell .domain-icon {
width: 24px;
height: 24px;
color: var(--v2-accent-strong);
background: var(--v2-accent-soft);
border: 1px solid color-mix(in srgb, var(--v2-accent) 16%, transparent);
}
.console-v2 .joint-twin-shell .domain-icon svg {
width: 13px;
height: 13px;
color: inherit;
stroke-width: 1.9;
}
.console-v2 .joint-twin-shell .domain-panel header strong {
font-size: 12px;
}
.console-v2 .joint-twin-shell .domain-panel header small {
font-size: 7.5px;
}
.console-v2 .joint-twin-shell .device-state {
padding: 3px 5px;
font-size: 9px;
}
.console-v2 .joint-twin-shell .domain-capability-line {
margin: 5px 0 0;
overflow: hidden;
color: #718585;
font-size: 7px;
font-weight: 700;
line-height: 1.35;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .domain-capability-line span {
margin-right: 5px;
padding: 2px 4px;
color: var(--v2-accent-strong);
background: var(--v2-accent-soft);
border-radius: 4px;
font-size: 6px;
font-weight: 900;
}
.console-v2 .joint-twin-shell .climate-display,
.console-v2 .joint-twin-shell .roof-visual,
.console-v2 .joint-twin-shell .ambient-visual {
min-height: 34px;
margin-top: 4px;
}
.console-v2 .joint-twin-shell .climate-display {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0;
padding: 0;
}
.console-v2 .joint-twin-shell .climate-direction-display {
margin-top: 3px;
}
.console-v2 .joint-twin-shell .climate-direction-display .zone-temperature {
background: rgba(243, 245, 244, 0.7);
border-top: 1px solid rgba(113, 141, 140, 0.13);
}
.console-v2 .joint-twin-shell .zone-temperature {
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
padding: 5px 7px;
text-align: left;
}
.console-v2 .joint-twin-shell .zone-temperature span {
color: #243d40;
font-size: 12px;
font-weight: 750;
}
.console-v2 .joint-twin-shell .zone-temperature strong {
margin: 0 0 0 auto;
font: 900 13px/1 Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
text-align: right;
}
.console-v2 .joint-twin-shell .airflow-visual {
display: none;
}
.console-v2 .joint-twin-shell .roof-visual {
padding: 3px 7px;
}
.console-v2 .joint-twin-shell .roof-glass {
height: 28px;
}
.console-v2 .joint-twin-shell .ambient-dashboard-sketch {
height: 28px;
top: 3px;
}
.console-v2 .joint-twin-shell .ambient-location-label {
display: none;
}
.console-v2 .joint-twin-shell .domain-readouts {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 5px;
margin-top: 5px;
}
.console-v2 .joint-twin-shell .domain-readouts > div {
min-width: 0;
min-height: 29px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
padding: 5px 7px;
background: #f3f5f4;
border: 1px solid rgba(113, 141, 140, 0.2);
border-radius: 8px;
font-size: 12px;
line-height: 1;
}
.console-v2 .joint-twin-shell .domain-readouts dt,
.console-v2 .joint-twin-shell .domain-readouts dd {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .domain-readouts dt {
flex: 0 0 auto;
color: #243d40;
font-weight: 750;
text-align: left;
}
.console-v2 .joint-twin-shell .domain-readouts dd {
flex: 0 1 auto;
margin: 0 0 0 auto;
color: var(--v2-ink);
font-family: "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
font-size: 13px;
font-weight: 900;
line-height: 1;
text-align: right;
}
.console-v2 .joint-twin-shell .domain-readouts .ambient-color-value {
font-size: 12px;
}
.console-v2 .joint-twin-shell .domain-readouts .color-swatch {
display: none;
}
.console-v2 .joint-twin-shell .domain-readouts.single-readout > div {
grid-column: 1 / -1;
}
.console-v2 .joint-twin-shell .window-panel,
.console-v2 .joint-twin-shell .lighting-panel {
min-height: 116px;
}
.console-v2 .joint-seat-panel > .simulation-label {
display: none;
}
.console-v2 .joint-seat-panel .seat-identity {
gap: 6px;
}
.console-v2 .joint-seat-panel .seat-identity > svg {
box-sizing: border-box;
width: 24px;
height: 24px;
padding: 5px;
color: var(--v2-accent-strong);
background: var(--v2-accent-soft);
border: 1px solid color-mix(in srgb, var(--v2-accent) 16%, transparent);
border-radius: 6px;
stroke-width: 1.9;
}
.console-v2 .joint-seat-panel .seat-identity strong {
font-size: 12px;
}
.console-v2 .joint-seat-panel .seat-identity span {
font-size: 7.5px;
}
.console-v2 .joint-seat-panel .dynamic-mode-state {
gap: 4px;
margin: 4px 0;
padding: 3px 5px;
color: #607878;
background: #edf3f1;
border-color: rgba(113, 141, 140, 0.16);
border-radius: 5px;
font-size: 12px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-seat-panel .dynamic-mode-state svg {
width: 12px;
height: 12px;
}
.console-v2 .joint-seat-panel .dynamic-mode-state b {
color: var(--v2-ink);
font-family: "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
font-size: 12px;
font-weight: 900;
line-height: 1;
}
.console-v2 .joint-seat-panel .thermal-states {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 4px;
margin-top: 4px;
}
.console-v2 .joint-seat-panel .thermal-states > span {
grid-template-columns: 10px minmax(0, 1fr) auto;
padding: 2px 5px;
color: #243d40;
font-size: 12px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-seat-panel .thermal-states svg {
width: 12px;
height: 12px;
}
.console-v2 .joint-seat-panel .thermal-states b {
color: var(--v2-ink);
font-family: "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
font-size: 13px;
font-weight: 900;
line-height: 1;
}
.console-v2 .joint-seat-panel .motion-state-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 5px;
margin-top: 5px;
padding-top: 5px;
}
.console-v2 .joint-seat-panel .motion-axis {
min-height: 29px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
padding: 5px 7px;
color: #243d40;
background: #f3f5f4;
border: 1px solid rgba(113, 141, 140, 0.2);
border-radius: 8px;
font-size: 12px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-seat-panel .motion-axis b {
color: var(--v2-ink);
font-family: "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
font-size: 13px;
font-weight: 900;
line-height: 1;
}
.console-v2 .joint-seat-panel .motion-axis::after,
.console-v2 .joint-seat-panel .motion-axis i {
display: none;
}
.v2-page-rail {
min-width: 0;
grid-column: 2;
grid-row: 1 / -1;
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: center;
gap: 3px;
padding: 13px 10px 13px 5px;
border-left: 1px solid rgba(114, 140, 140, 0.1);
}
.v2-page-rail[hidden] {
display: none !important;
}
.v2-page-button {
min-height: 49px;
display: grid;
grid-template-columns: 18px 12px minmax(0, 1fr);
align-items: center;
gap: 6px;
padding: 7px 6px;
color: #8d9b9c;
background: transparent;
border: 0;
border-radius: 9px;
text-align: left;
cursor: pointer;
transition: 150ms ease;
}
.v2-page-button:hover {
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 42%, white);
}
.v2-page-button > span {
font: 750 8px "SFMono-Regular", Consolas, monospace;
}
.v2-page-button > i {
width: 7px;
height: 7px;
justify-self: center;
background: #d7dddd;
border-radius: 50%;
transition: 150ms ease;
}
.v2-page-button > strong {
overflow: hidden;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.v2-page-button.active {
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 66%, white);
}
.v2-page-button.active > i {
width: 12px;
height: 12px;
background: var(--v2-accent);
box-shadow: 0 0 0 5px color-mix(in srgb, var(--v2-accent) 10%, transparent);
}
.console-v2 .toast {
right: 24px;
bottom: 22px;
border-radius: 10px;
}
/* Compact desktop heights ------------------------------------------------ */
@media (max-height: 820px) {
.console-v2 .workspace {
grid-template-columns: clamp(235px, 18vw, 280px) minmax(0, 1fr);
}
.console-v2.v2-sidebar-collapsed .workspace {
grid-template-columns: 66px minmax(0, 1fr);
}
.console-v2 .v2-sidebar {
padding-top: 14px;
padding-bottom: 10px;
}
.v2-section-heading span {
display: none;
}
.console-v2[data-module="self-extension"] .v2-extension-sidebar {
margin-top: 14px;
}
.v2-section-heading h2 {
margin: 0 0 10px;
font-size: 22px;
}
.v2-extension-sidebar > .v2-field-caption {
margin-bottom: 5px;
font-size: 11px;
}
.v2-extension-mode-switch button {
min-height: 41px;
grid-template-columns: 21px minmax(0, 1fr);
padding: 0 9px;
font-size: 10px;
}
.v2-extension-mode-switch button svg {
width: 17px;
height: 17px;
}
.v2-divider {
margin-bottom: 9px;
}
.v2-extension-config-card,
.v2-extension-metrics > div {
min-height: 38px;
}
.console-v2 .main-panel {
--v2-main-pad: 9px;
grid-template-rows: 36px clamp(236px, 33dvh, 246px) minmax(0, 1fr);
gap: 12px;
padding: 0 var(--v2-main-pad) var(--v2-main-pad);
}
.v2-natural-panel {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto minmax(102px, 1fr) auto;
gap: 5px;
padding: var(--v2-module-title-block) var(--v2-module-title-inline) 8px;
}
.console-v2 .v2-gesture-panel {
gap: 5px;
padding: 12px 20px 8px;
}
.console-v2 .v2-operation-heading h2 {
font-size: 24px;
}
.console-v2 .v2-operation-heading .panel-intro {
display: none;
}
.console-v2 .v2-request-form .command-composer,
.console-v2 .v2-request-form #utterance {
height: 102px;
min-height: 102px;
}
.console-v2 .v2-request-form #utterance {
height: 100px;
min-height: 100px;
padding: 13px 64px 25px 17px;
}
.console-v2 .v2-request-form .primary-action {
width: 32px;
height: 32px;
min-height: 32px;
right: 9px;
bottom: 9px;
}
.console-v2 .v2-request-form .composer-hint {
right: 48px;
bottom: 8px;
}
.console-v2 .v2-request-status {
height: 102px;
min-height: 102px;
padding: 12px;
}
.console-v2 .v2-mode-rail .mode-chips button {
min-width: 86px;
min-height: 29px;
padding: 4px 10px;
font-size: 9px;
}
.console-v2 .v2-inline-gesture .gesture-footnote {
display: none;
}
.v2-output-shell {
grid-template-rows: 49px minmax(0, 1fr);
}
.v2-output-heading {
padding-top: 6px;
padding-bottom: 5px;
}
.v2-output-content {
margin: 0 9px 9px;
}
.v2-output-shell.v2-twin-active .v2-output-content {
margin: 4px 8px;
}
.console-v2 .joint-twin-shell.v2-output-page {
gap: 8px;
padding: 3px 6px;
}
.v2-sidebar-footer {
min-height: 42px;
padding-top: 7px;
}
}
/* Interactive vehicle sync control layout -------------------------------- */
.console-v2.v2-interactive-sync .workspace {
grid-template-columns: clamp(250px, 19vw, 292px) minmax(0, 1fr);
}
.console-v2.v2-interactive-sync .main-panel {
grid-template-rows: 56px clamp(224px, 29dvh, 254px) minmax(0, 1fr);
gap: 10px;
padding-bottom: 10px;
}
.console-v2.v2-interactive-sync .v2-module-switcher {
min-height: 56px;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 18px;
}
.console-v2.v2-interactive-sync .v2-unified-brand-mark {
width: 34px;
height: 34px;
border-radius: 11px;
}
.console-v2.v2-interactive-sync .v2-unified-brand h1 {
margin-top: 2px;
font-size: clamp(15px, 1.3vw, 20px);
}
.console-v2 .v2-remote-control-state {
display: flex;
align-items: center;
gap: 7px;
padding: 7px 10px;
color: #52716f;
background: rgba(255, 255, 255, 0.72);
border: 1px solid rgba(15, 121, 115, 0.1);
border-radius: 999px;
font-size: 9px;
}
.console-v2 .v2-remote-control-state svg {
width: 13px;
color: var(--v2-accent);
}
.console-v2 .v2-remote-control-state strong {
color: #12806f;
}
.console-v2.v2-interactive-sync .v2-natural-panel {
grid-template-columns: minmax(390px, 0.95fr) minmax(390px, 1.05fr);
grid-template-rows: auto minmax(76px, 1fr) auto;
column-gap: 14px;
row-gap: 7px;
padding: 13px 16px;
}
.console-v2.v2-interactive-sync .v2-operation-heading h2 {
font-size: clamp(19px, 1.6vw, 25px);
}
.console-v2.v2-interactive-sync .v2-operation-heading .panel-intro {
max-width: 540px;
font-size: 9px;
}
.console-v2.v2-interactive-sync .v2-natural-grid {
display: grid;
grid-column: 1;
grid-row: 2;
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-interactive-sync .v2-request-form {
display: grid;
}
.console-v2.v2-interactive-sync .v2-request-status {
display: none;
}
.console-v2.v2-interactive-sync .v2-request-form .command-composer,
.console-v2.v2-interactive-sync .v2-request-form #utterance {
height: 76px;
min-height: 76px;
}
.console-v2.v2-interactive-sync .v2-request-form #utterance {
padding: 11px 60px 34px 14px;
font-size: 12px;
}
.console-v2.v2-interactive-sync .v2-request-form .primary-action {
width: 32px;
height: 32px;
min-height: 32px;
right: 8px;
bottom: 8px;
}
.console-v2.v2-interactive-sync .v2-request-form .context-reset {
top: 5px;
right: 7px;
}
.console-v2.v2-interactive-sync .v2-request-form .composer-hint {
right: 49px;
bottom: 8px;
}
.console-v2.v2-interactive-sync .v2-reasoning-trigger {
left: 10px;
bottom: 7px;
}
.console-v2.v2-interactive-sync .v2-mode-rail {
grid-column: 1;
grid-row: 3;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
gap: 10px;
padding: 0;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-rail-heading {
display: flex !important;
align-items: center;
margin: 0;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-rail-heading > div {
display: grid;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-rail-heading span {
color: #466664;
font-size: 10px;
font-weight: 850;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-rail-heading small,
.console-v2.v2-interactive-sync .v2-mode-rail #saveModeToggle,
.console-v2.v2-interactive-sync .v2-mode-rail .mode-rail-controls {
display: none !important;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-chips {
gap: 6px;
padding: 0;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-chips button {
min-height: 29px;
padding: 4px 10px;
cursor: pointer;
pointer-events: auto;
opacity: 1;
}
.console-v2.v2-interactive-sync .v2-mode-rail .mode-chips button:hover {
color: #fff;
background: linear-gradient(135deg, #0a6d68, #15988f);
border-color: transparent;
}
.console-v2.v2-interactive-sync .v2-task-overview {
grid-column: 2;
grid-row: 1 / 4;
gap: 9px;
padding: 13px 14px;
}
.console-v2.v2-interactive-sync .v2-task-copy strong {
font-size: clamp(12px, 1vw, 15px);
}
.console-v2.v2-interactive-sync .v2-task-timeline {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 5px;
}
.console-v2.v2-interactive-sync .v2-task-timeline span {
min-height: 35px;
padding: 5px 6px;
}
.console-v2.v2-interactive-sync .v2-sidebar {
padding: 18px 14px 12px;
}
.console-v2.v2-interactive-sync .v2-sync-sidebar {
gap: 10px;
}
.console-v2.v2-interactive-sync .v2-sync-sidebar-heading h2 {
margin: 4px 0 4px;
font-size: 21px;
}
.console-v2.v2-interactive-sync .v2-sync-sidebar-heading p {
font-size: 9px;
line-height: 1.55;
}
.console-v2 .v2-sync-log {
min-height: 0;
display: grid;
flex: 1;
grid-template-rows: auto minmax(0, 1fr);
overflow: hidden;
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(15, 112, 106, 0.11);
border-radius: 15px;
box-shadow: 0 10px 26px rgba(31, 87, 84, 0.06);
}
.console-v2 .v2-sync-log > header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 10px 10px 8px;
border-bottom: 1px solid rgba(30, 104, 100, 0.08);
}
.console-v2 .v2-sync-log header small {
color: #27827d;
font: 800 7px/1.2 "SFMono-Regular", Consolas, monospace;
letter-spacing: 0.1em;
}
.console-v2 .v2-sync-log h3 {
margin: 3px 0 0;
color: #173637;
font-size: 12px;
}
.console-v2 .v2-sync-log select {
height: 26px;
padding: 0 6px;
color: #55706f;
background: #f3f7f6;
border: 1px solid rgba(58, 107, 104, 0.1);
border-radius: 8px;
font-size: 8px;
}
.console-v2 .v2-sync-log ol {
min-height: 0;
margin: 0;
padding: 8px 9px 12px;
overflow: auto;
list-style: none;
scrollbar-width: thin;
}
.console-v2 .v2-sync-log li {
position: relative;
display: grid;
grid-template-columns: 38px 20px minmax(0, 1fr);
gap: 5px;
padding: 7px 0;
}
.console-v2 .v2-sync-log li:not(:last-child)::after {
width: 1px;
position: absolute;
top: 30px;
bottom: -6px;
left: 48px;
content: "";
background: rgba(55, 124, 119, 0.13);
}
.console-v2 .v2-sync-log time {
padding-top: 4px;
color: #8a9b9a;
font: 700 7px/1 "SFMono-Regular", Consolas, monospace;
}
.console-v2 .v2-sync-log li > span {
width: 19px;
height: 19px;
display: grid;
z-index: 1;
place-items: center;
color: #fff;
background: #4b91d9;
border-radius: 50%;
}
.console-v2 .v2-sync-log li[data-log-status="success"] > span {
background: #19a66f;
}
.console-v2 .v2-sync-log li[data-log-status="error"] > span {
background: #dc6f65;
}
.console-v2 .v2-sync-log li > span svg {
width: 10px;
}
.console-v2 .v2-sync-log li > div {
min-width: 0;
display: grid;
gap: 3px;
}
.console-v2 .v2-sync-log li strong {
overflow: hidden;
color: #263f40;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-sync-log li small {
display: -webkit-box;
overflow: hidden;
color: #738887;
font-size: 8px;
line-height: 1.45;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.console-v2 .v2-sync-log-empty {
grid-template-columns: 1fr !important;
text-align: center;
}
.console-v2.v2-interactive-sync .v2-sidebar-footer {
min-height: 34px;
margin-top: 7px;
padding-top: 7px;
}
.console-v2.v2-interactive-sync .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);
grid-template-rows: minmax(0, 1fr);
gap: 10px;
}
.console-v2.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-unified-right-rail {
display: none;
}
.console-v2.v2-interactive-sync .joint-twin-shell > .twin-band {
width: 100%;
max-width: 980px;
justify-self: center;
}
.console-v2.v2-interactive-sync .v2-unified-right-rail {
display: flex;
flex-direction: column;
gap: 8px;
overflow: hidden;
}
.console-v2 .v2-side-status-panel {
min-height: 0;
flex: 1 1 0;
}
.console-v2 .v2-side-status-panel[hidden] {
display: none !important;
}
.console-v2 .v2-device-sync-board {
grid-template-rows: auto minmax(0, 1fr);
padding: 9px;
}
.console-v2 .v2-device-sync-board > header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto 27px;
gap: 7px;
}
.console-v2 .v2-device-sync-board > header > button,
.console-v2 .v2-extension-sync-heading > button {
width: 26px;
height: 26px;
display: grid;
place-items: center;
color: #66817f;
background: #f1f6f5;
border: 0;
border-radius: 8px;
cursor: pointer;
}
.console-v2 .v2-device-sync-board > header > button svg,
.console-v2 .v2-extension-sync-heading > button svg {
width: 13px;
}
.console-v2 .v2-device-sync-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: none;
grid-auto-rows: minmax(76px, auto);
gap: 6px;
padding-right: 2px;
overflow: auto;
scrollbar-width: thin;
}
.console-v2 .v2-synced-device {
min-height: 76px;
display: grid;
grid-template-columns: 27px minmax(0, 1fr) 6px;
grid-template-rows: auto auto;
align-content: start;
text-align: left;
cursor: pointer;
}
.console-v2 .v2-synced-device:hover,
.console-v2 .v2-synced-device.active {
background: linear-gradient(145deg, #e9f7f4, #f5fbfa);
border-color: rgba(13, 126, 117, 0.22);
box-shadow: 0 8px 18px rgba(26, 99, 94, 0.09);
}
.console-v2 .v2-synced-device dl {
min-width: 0;
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 3px 6px;
margin: 5px 0 0;
padding-top: 5px;
border-top: 1px solid rgba(60, 113, 109, 0.08);
}
.console-v2 .v2-synced-device dl div {
min-width: 0;
display: flex;
justify-content: space-between;
gap: 4px;
}
.console-v2 .v2-synced-device dt,
.console-v2 .v2-synced-device dd {
overflow: hidden;
margin: 0;
font-size: 7px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-synced-device dt {
color: #8a9a99;
}
.console-v2 .v2-synced-device dd {
color: #385a58;
font-weight: 800;
}
.console-v2 .v2-extension-panel,
.console-v2 .v2-extension-sync-mount {
min-height: 0;
}
.console-v2 .v2-extension-panel {
overflow: hidden;
}
.console-v2 .v2-extension-sync-mount {
height: 100%;
overflow: auto;
scrollbar-width: thin;
}
.console-v2 .v2-extension-sync-heading {
display: grid;
grid-template-columns: minmax(0, 1fr) auto 27px;
align-items: center;
gap: 7px;
}
.console-v2 .v2-panel-visibility-controls {
display: flex;
align-items: center;
gap: 5px;
}
.console-v2 .v2-panel-visibility-controls button {
min-height: 27px;
display: inline-flex;
align-items: center;
gap: 5px;
padding: 0 8px;
color: #6c7f7e;
background: #f0f4f3;
border: 1px solid rgba(79, 110, 108, 0.09);
border-radius: 9px;
font-size: 8px;
font-weight: 800;
cursor: pointer;
}
.console-v2 .v2-panel-visibility-controls button.active {
color: #0a736d;
background: #def3ef;
border-color: rgba(15, 123, 115, 0.17);
}
.console-v2 .v2-panel-visibility-controls svg {
width: 12px;
}
.console-v2 .v2-twin-hotspots {
position: absolute;
inset: 0;
z-index: 14;
pointer-events: none;
}
.console-v2 .v2-twin-hotspots button {
--v2-hotspot-label-x: 0px;
--v2-hotspot-label-y: -52px;
--v2-hotspot-line-length: 52px;
--v2-hotspot-line-angle: -90deg;
--v2-hotspot-label-scale: 1;
width: 14px;
height: 14px;
position: absolute;
display: block;
padding: 0;
color: #ffffff;
background: transparent;
border: 0;
border-radius: 50%;
box-shadow: none;
cursor: pointer;
pointer-events: auto;
transform: translate(-50%, -50%);
overflow: visible;
}
.console-v2 .v2-twin-hotspots button::before {
content: "";
width: var(--v2-hotspot-line-length);
height: 1.5px;
position: absolute;
top: 50%;
left: 50%;
z-index: 0;
background: linear-gradient(90deg, #12a69b, rgba(18, 166, 155, 0.55));
box-shadow: 0 0 7px rgba(18, 166, 155, 0.24);
transform: rotate(var(--v2-hotspot-line-angle));
transform-origin: 0 50%;
pointer-events: auto;
transition: height 120ms ease, background 120ms ease, box-shadow 120ms ease;
}
.console-v2 .v2-twin-hotspots button::after {
content: "";
width: 8px;
height: 8px;
position: absolute;
top: 50%;
left: 50%;
z-index: 3;
background: #11b5aa;
border: 2px solid rgba(255, 255, 255, 0.94);
border-radius: 50%;
box-shadow: 0 0 0 3px rgba(17, 181, 170, 0.17), 0 2px 8px rgba(17, 105, 99, 0.28);
transform: translate(-50%, -50%);
transition: transform 120ms ease, background 120ms ease, box-shadow 120ms ease;
}
.console-v2 .v2-twin-hotspot-label {
width: 94px;
min-width: 94px;
max-width: 94px;
box-sizing: border-box;
min-height: 34px;
position: absolute;
top: calc(50% + var(--v2-hotspot-label-y));
left: calc(50% + var(--v2-hotspot-label-x));
z-index: 2;
display: grid;
grid-template-columns: 22px minmax(0, 1fr);
grid-template-rows: auto auto;
align-items: center;
gap: 1px 6px;
padding: 6px 8px;
color: #f4fffd;
background: linear-gradient(145deg, rgba(19, 66, 72, 0.96), rgba(12, 48, 54, 0.94));
border: 1px solid rgba(151, 232, 222, 0.24);
border-radius: 9px;
box-shadow: 0 8px 20px rgba(21, 70, 69, 0.2);
overflow: hidden;
text-align: left;
white-space: normal;
transform: translate(-50%, -50%) scale(var(--v2-hotspot-label-scale));
transform-origin: center;
backdrop-filter: blur(8px);
transition: transform 120ms ease, background 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}
.console-v2 .v2-twin-hotspot-label svg {
width: 16px;
height: 16px;
grid-column: 1;
grid-row: 1 / 3;
color: #77e1d6;
}
.console-v2 .v2-twin-hotspot-label b {
min-width: 0;
grid-column: 2;
grid-row: 1;
overflow: hidden;
font-size: 9px;
line-height: 1.15;
text-overflow: ellipsis;
white-space: nowrap;
}
@container (max-width: 420px) {
.console-v2 .joint-twin-shell .twin-title-copy {
display: none;
}
.console-v2 .joint-twin-shell .twin-toolbar {
width: 100%;
}
.console-v2 .joint-twin-shell .twin-selector {
min-width: 0;
flex: 1;
}
.console-v2 .joint-twin-shell .twin-seat-button {
min-width: 0;
flex: 1;
padding-inline: 5px;
overflow: hidden;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-twin-hotspot-label {
width: 84px;
min-width: 84px;
max-width: 84px;
grid-template-columns: 18px minmax(0, 1fr);
gap: 1px 4px;
padding: 5px 6px;
}
}
.console-v2 .v2-twin-hotspot-label small {
min-width: 0;
grid-column: 2;
grid-row: 2;
overflow: hidden;
color: rgba(221, 246, 242, 0.7);
font-size: 7px;
font-weight: 700;
line-height: 1.1;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-twin-hotspots button:hover,
.console-v2 .v2-twin-hotspots button:focus-visible,
.console-v2 .v2-twin-hotspots button.active {
z-index: 2;
outline: none;
--v2-hotspot-label-scale: 1.05;
}
.console-v2 .v2-twin-hotspots button:hover::before,
.console-v2 .v2-twin-hotspots button:focus-visible::before,
.console-v2 .v2-twin-hotspots button.active::before {
height: 2px;
background: #0d968d;
box-shadow: 0 0 9px rgba(13, 150, 141, 0.42);
}
.console-v2 .v2-twin-hotspots button:hover::after,
.console-v2 .v2-twin-hotspots button:focus-visible::after,
.console-v2 .v2-twin-hotspots button.active::after {
background: #087a73;
box-shadow: 0 0 0 5px rgba(8, 122, 115, 0.18), 0 2px 9px rgba(8, 93, 88, 0.34);
transform: translate(-50%, -50%) scale(1.18);
}
.console-v2 .v2-twin-hotspots button:hover .v2-twin-hotspot-label,
.console-v2 .v2-twin-hotspots button:focus-visible .v2-twin-hotspot-label,
.console-v2 .v2-twin-hotspots button.active .v2-twin-hotspot-label {
background: linear-gradient(145deg, #0c8b83, #08716b);
border-color: rgba(196, 255, 246, 0.48);
box-shadow: 0 11px 24px rgba(8, 103, 96, 0.28);
}
.console-v2 .v2-twin-device-popover {
width: min(360px, calc(100% - 34px));
max-height: min(190px, calc(100% - 78px));
position: absolute;
top: 12px;
left: 12px;
z-index: 25;
padding: 10px;
overflow: auto;
color: #243f40;
background: rgba(255, 255, 255, 0.97);
border: 1px solid rgba(10, 115, 108, 0.18);
border-radius: 14px;
box-shadow: 0 18px 42px rgba(27, 74, 72, 0.2);
transform: none;
transform-origin: center;
backdrop-filter: blur(14px);
will-change: left, top;
}
.console-v2 .v2-twin-device-popover[hidden] {
display: none;
}
.console-v2 .v2-twin-device-popover[data-pinned="false"] {
width: min(280px, calc(100% - 24px));
pointer-events: none;
}
.console-v2 .v2-twin-device-popover[data-pinned="false"] dl {
grid-template-columns: repeat(auto-fit, minmax(44px, 1fr));
}
.console-v2 .v2-twin-device-popover[data-pinned="false"] header {
grid-template-columns: 30px minmax(0, 1fr) auto;
}
.console-v2 .v2-twin-device-popover[data-pinned="false"] .v2-twin-popover-close {
display: none;
}
.console-v2 .v2-twin-device-popover header {
display: grid;
grid-template-columns: 30px minmax(0, 1fr) auto 28px;
align-items: center;
gap: 8px;
}
.console-v2 .v2-twin-device-popover header > span {
width: 30px;
height: 30px;
display: grid;
place-items: center;
color: #fff;
background: #0b807a;
border-radius: 10px;
}
.console-v2 .v2-twin-device-popover header svg {
width: 15px;
}
.console-v2 .v2-twin-device-popover header div {
display: grid;
gap: 2px;
}
.console-v2 .v2-twin-device-popover header small {
color: #4c8c88;
font: 800 7px/1 "SFMono-Regular", Consolas, monospace;
letter-spacing: 0.08em;
}
.console-v2 .v2-twin-device-popover header strong {
font-size: 13px;
}
.console-v2 .v2-twin-device-popover header > b {
color: #718583;
font-size: 8px;
}
.console-v2 .v2-twin-popover-close {
width: 28px;
height: 28px;
display: inline-grid;
place-items: center;
padding: 0;
color: #557471;
background: #f1f7f6;
border: 1px solid rgba(16, 111, 104, 0.12);
border-radius: 9px;
cursor: pointer;
transition: color 150ms ease, background 150ms ease, border-color 150ms ease, transform 150ms ease;
}
.console-v2 .v2-twin-popover-close:hover,
.console-v2 .v2-twin-popover-close:focus-visible {
color: #ffffff;
background: #118078;
border-color: #118078;
outline: none;
transform: scale(1.04);
}
.console-v2 .v2-twin-popover-close svg {
width: 14px;
height: 14px;
}
.console-v2 .v2-twin-device-popover dl {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 5px;
margin: 9px 0 0;
}
.console-v2 .v2-twin-device-popover dl div {
min-width: 0;
display: grid;
gap: 2px;
padding: 6px;
background: #f2f7f6;
border-radius: 8px;
}
.console-v2 .v2-twin-device-popover dt,
.console-v2 .v2-twin-device-popover dd {
overflow: hidden;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-twin-device-popover dt {
color: #819290;
font-size: 7px;
}
.console-v2 .v2-twin-device-popover dd {
color: #2c5351;
font-size: 9px;
font-weight: 850;
}
@media (max-width: 1366px) {
.console-v2.v2-interactive-sync .workspace {
grid-template-columns: 250px minmax(0, 1fr);
}
.console-v2.v2-interactive-sync .v2-natural-panel {
grid-template-columns: minmax(360px, 0.9fr) minmax(370px, 1.1fr);
}
.console-v2.v2-interactive-sync .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(0, 1fr) minmax(310px, 0.72fr);
}
.console-v2 .v2-synced-device dl {
grid-template-columns: minmax(0, 1fr);
}
}
@media (max-height: 760px) {
.console-v2.v2-interactive-sync .main-panel {
grid-template-rows: 52px 216px minmax(0, 1fr);
}
.console-v2.v2-interactive-sync .v2-module-switcher {
min-height: 52px;
}
.console-v2.v2-interactive-sync .v2-natural-panel {
padding-block: 10px;
}
.console-v2.v2-interactive-sync .v2-task-timeline span {
min-height: 31px;
}
}
/* Unified cockpit sync foundation ---------------------------------------- */
.console-v2.v2-passive-display {
--v2-accent: var(--primary);
--v2-accent-strong: color-mix(in oklch, var(--primary) 80%, var(--foreground));
--v2-accent-soft: color-mix(in oklch, var(--primary) 10%, var(--background));
--v2-sidebar: var(--sidebar);
--v2-sidebar-deep: var(--sidebar-accent);
background: var(--background);
}
.console-v2.v2-passive-display .workspace {
grid-template-columns: clamp(236px, 17vw, 278px) minmax(0, 1fr);
}
.console-v2.v2-passive-display .main-panel {
grid-template-rows: 68px clamp(210px, 25dvh, 252px) minmax(0, 1fr);
gap: 12px;
padding-bottom: 12px;
}
.console-v2.v2-passive-display .v2-sidebar {
padding: 26px 20px 18px;
background:
radial-gradient(circle at 20% 2%, color-mix(in oklch, var(--card) 96%, transparent), transparent 25%),
linear-gradient(160deg, var(--sidebar) 0%, var(--sidebar-accent) 64%, color-mix(in oklch, var(--sidebar-primary) 10%, var(--sidebar)) 145%);
}
.console-v2.v2-passive-display .v2-sidebar-toggle,
.console-v2.v2-passive-display .v2-sidebar-footer button {
display: none !important;
}
.console-v2 .v2-sync-sidebar {
min-width: 0;
max-width: 100%;
min-height: 0;
display: flex;
flex: 1;
flex-direction: column;
gap: 18px;
}
.console-v2 .v2-sync-sidebar-heading small,
.console-v2 .v2-unified-brand small,
.console-v2 .v2-device-sync-board header small,
.console-v2 .v2-sync-scope small {
color: #24847f;
font: 850 9px/1.2 "SFMono-Regular", Consolas, monospace;
letter-spacing: 0.14em;
}
.console-v2 .v2-sync-sidebar-heading h2 {
margin: 7px 0 8px;
color: #0b292a;
font-size: clamp(22px, 1.8vw, 28px);
font-weight: 950;
letter-spacing: -0.045em;
}
.console-v2 .v2-sync-sidebar-heading p {
margin: 0;
color: #688080;
font-size: 11px;
line-height: 1.75;
}
.console-v2 .v2-sync-scope {
padding: 15px;
background: linear-gradient(135deg, rgba(4, 89, 87, 0.92), rgba(17, 125, 117, 0.9));
border-radius: 16px;
box-shadow: 0 15px 32px rgba(10, 91, 88, 0.14);
}
.console-v2 .v2-sync-scope small {
color: #a9e9e1;
}
.console-v2 .v2-sync-scope p {
margin: 8px 0 0;
color: #f2fffd;
font-size: 11px;
font-weight: 650;
line-height: 1.8;
}
.console-v2.v2-passive-display .v2-sidebar-footer {
min-height: 45px;
margin-top: 16px;
padding: 10px 11px 0;
border-top: 1px solid rgba(27, 105, 101, 0.12);
}
.console-v2.v2-passive-display .v2-module-switcher {
min-height: 68px;
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto;
align-items: center;
gap: 24px;
margin-inline: calc(0px - var(--v2-main-pad));
padding: 0 var(--v2-main-pad);
overflow: visible;
background: linear-gradient(90deg, #f9fbfa, #edf7f5 70%, #def1ed);
border-bottom: 1px solid rgba(14, 112, 107, 0.12);
box-shadow: 0 8px 22px rgba(33, 83, 81, 0.05);
}
.console-v2 .v2-unified-brand {
min-width: 0;
display: flex;
align-items: center;
gap: 12px;
}
.console-v2 .v2-unified-brand-mark {
width: 40px;
height: 40px;
display: grid;
flex: 0 0 auto;
place-items: center;
color: white;
background: linear-gradient(135deg, #064b4b, #13978e);
border-radius: 13px;
box-shadow: 0 10px 22px rgba(10, 100, 96, 0.18);
}
.console-v2 .v2-unified-brand-mark svg {
width: 21px;
}
.console-v2 .v2-unified-brand h1 {
overflow: hidden;
margin: 4px 0 0;
color: #102d2e;
font-size: clamp(17px, 1.5vw, 23px);
font-weight: 950;
letter-spacing: -0.04em;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-unified-capabilities {
display: flex;
align-items: center;
gap: 6px;
}
.console-v2 .v2-unified-capabilities span {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
color: #2f6562;
background: rgba(255, 255, 255, 0.72);
border: 1px solid rgba(15, 121, 115, 0.1);
border-radius: 999px;
font-size: 10px;
font-weight: 800;
}
.console-v2 .v2-unified-capabilities i,
.console-v2 .v2-unified-live > i {
width: 6px;
height: 6px;
background: #19a886;
border-radius: 50%;
}
.console-v2 .v2-unified-live {
display: flex;
align-items: center;
gap: 7px;
color: #4b6e6c;
font: 800 9px/1 "SFMono-Regular", Consolas, monospace;
}
.console-v2 .v2-unified-live b {
min-width: 65px;
color: #173f3e;
font-size: 11px;
}
.console-v2.v2-passive-display .v2-natural-panel {
grid-template-columns: minmax(310px, 0.78fr) minmax(430px, 1.22fr);
grid-template-rows: auto 1fr auto;
column-gap: 18px;
padding: 18px 22px;
}
.console-v2.v2-passive-display .v2-operation-heading {
grid-column: 1;
grid-row: 1;
}
.console-v2.v2-passive-display .v2-operation-heading h2 {
font-size: clamp(21px, 1.8vw, 29px);
}
.console-v2.v2-passive-display .v2-natural-grid {
grid-column: 1;
grid-row: 2;
grid-template-columns: minmax(0, 1fr);
align-items: stretch;
}
.console-v2.v2-passive-display .v2-request-form {
display: none;
}
.console-v2.v2-passive-display .v2-request-status {
min-height: 0;
padding: 10px 0 0;
background: transparent;
border: 0;
box-shadow: none;
}
.console-v2.v2-passive-display .v2-request-status .matrix-stat {
display: none;
}
.console-v2.v2-passive-display .v2-request-status h2 {
font-size: 15px;
}
.console-v2.v2-passive-display .v2-mode-rail {
min-width: 0;
grid-column: 1;
grid-row: 3;
align-self: end;
padding: 8px 0 0;
background: transparent;
border: 0;
}
.console-v2.v2-passive-display .v2-mode-rail .mode-rail-heading,
.console-v2.v2-passive-display .v2-mode-rail .mode-rail-controls,
.console-v2.v2-passive-display .v2-mode-rail .save-mode-composer {
display: none !important;
}
.console-v2.v2-passive-display .v2-mode-rail .mode-chips {
gap: 6px;
padding: 0;
}
.console-v2.v2-passive-display .v2-mode-rail .mode-chips button {
min-height: 31px;
padding: 5px 10px;
cursor: default;
pointer-events: none;
opacity: 0.68;
}
.console-v2.v2-passive-display .v2-mode-rail .mode-chips button.v2-sync-active {
color: #fff;
background: linear-gradient(135deg, #0a6d68, #15988f);
border-color: transparent;
box-shadow: 0 8px 18px rgba(11, 119, 113, 0.2);
opacity: 1;
}
.console-v2 .v2-task-overview {
min-width: 0;
min-height: 0;
display: grid;
grid-column: 2;
grid-row: 1 / 4;
grid-template-columns: minmax(0, 1fr) auto;
grid-template-rows: auto minmax(0, 1fr);
gap: 13px;
padding: 16px 17px;
overflow: hidden;
background:
radial-gradient(circle at 88% 10%, rgba(57, 187, 169, 0.15), transparent 32%),
linear-gradient(145deg, #f5fbfa, #e9f5f2);
border: 1px solid rgba(15, 122, 115, 0.12);
border-radius: 17px;
}
.console-v2 .v2-task-copy {
min-width: 0;
display: grid;
gap: 5px;
}
.console-v2 .v2-task-copy span {
color: #31817c;
font-size: 9px;
font-weight: 900;
letter-spacing: 0.08em;
}
.console-v2 .v2-task-copy strong {
overflow: hidden;
color: #153435;
font-size: clamp(13px, 1.15vw, 17px);
line-height: 1.45;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-task-state {
align-self: start;
padding: 6px 9px;
color: #6d8280;
background: white;
border: 1px solid rgba(72, 116, 113, 0.13);
border-radius: 999px;
font-size: 9px;
font-weight: 850;
white-space: nowrap;
}
.console-v2 .v2-task-state[data-state="running"] {
color: #076f69;
background: #dff6f2;
}
.console-v2 .v2-task-state[data-state="succeeded"] {
color: #1d7b5f;
background: #e1f7ec;
}
.console-v2 .v2-task-state[data-state="partial"] {
color: #9b6b18;
background: #fff5dd;
}
.console-v2 .v2-task-state[data-state="failed"] {
color: #af504a;
background: #fff0ee;
}
.console-v2 .v2-task-timeline {
min-width: 0;
display: grid;
grid-column: 1 / -1;
grid-template-columns: repeat(4, minmax(0, 1fr));
align-self: end;
gap: 7px;
}
.console-v2 .v2-task-timeline span {
min-width: 0;
display: grid;
grid-template-columns: 25px minmax(0, 1fr);
align-items: center;
gap: 7px;
padding: 8px;
color: #557271;
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(15, 115, 109, 0.09);
border-radius: 11px;
}
.console-v2 .v2-task-timeline i {
width: 25px;
height: 25px;
display: grid;
place-items: center;
color: #fff;
background: #80a9a5;
border-radius: 8px;
font: 800 8px "SFMono-Regular", Consolas, monospace;
}
.console-v2 .v2-task-timeline .done i,
.console-v2 .v2-task-timeline .active i {
background: var(--v2-accent);
}
.console-v2 .v2-task-timeline .active i {
box-shadow: 0 0 0 5px rgba(14, 128, 122, 0.1);
}
.console-v2 .v2-task-timeline b {
overflow: hidden;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display .v2-output-shell,
.console-v2.v2-passive-display .v2-output-content {
min-height: 0;
}
.console-v2.v2-passive-display .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(480px, 1.16fr) minmax(360px, 0.84fr);
grid-template-rows: minmax(0, 1fr);
gap: 12px;
}
.console-v2.v2-passive-display .joint-twin-shell > .twin-band {
min-width: 0;
min-height: 0;
grid-column: 1;
grid-row: 1;
}
.console-v2 .v2-unified-right-rail {
min-width: 0;
min-height: 0;
display: grid;
grid-column: 2;
grid-row: 1;
grid-template-rows: minmax(240px, 1.25fr) minmax(160px, 0.75fr);
gap: 10px;
overflow: hidden;
}
.console-v2 .v2-source-state-only,
.console-v2.v2-passive-display .state-band {
display: none !important;
}
.console-v2 .v2-device-sync-board {
min-width: 0;
min-height: 0;
display: grid;
grid-template-rows: auto minmax(0, 1fr);
padding: 10px;
overflow: hidden;
background: #fff;
border: 1px solid rgba(71, 112, 110, 0.12);
border-radius: 18px;
box-shadow: 0 13px 34px rgba(41, 74, 75, 0.07);
}
.console-v2 .v2-device-sync-board > header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 1px 2px 7px;
}
.console-v2 .v2-device-sync-board h3 {
margin: 3px 0 0;
color: #183435;
font-size: 15px;
}
.console-v2 .v2-device-sync-board > header > span {
display: inline-flex;
align-items: center;
gap: 6px;
color: #5a7a78;
font-size: 8px;
font-weight: 800;
}
.console-v2 .v2-device-sync-board > header > span i {
width: 6px;
height: 6px;
background: #18a783;
border-radius: 50%;
}
.console-v2 .v2-device-sync-grid {
min-height: 0;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(4, minmax(38px, 1fr));
gap: 5px 7px;
}
.console-v2 .v2-synced-device {
min-width: 0;
display: grid;
grid-template-columns: 27px minmax(0, 1fr) 6px;
align-items: center;
gap: 8px;
padding: 4px 7px;
background: linear-gradient(145deg, #f7faf9, #eff5f4);
border: 1px solid rgba(75, 119, 116, 0.08);
border-radius: 12px;
}
.console-v2 .v2-synced-device > span {
width: 27px;
height: 27px;
display: grid;
place-items: center;
color: #236f6b;
background: #dff2ef;
border-radius: 10px;
}
.console-v2 .v2-synced-device > span svg {
width: 13px;
}
.console-v2 .v2-synced-device > div {
min-width: 0;
display: grid;
gap: 3px;
}
.console-v2 .v2-synced-device strong {
color: #1d3a3b;
font-size: 10px;
}
.console-v2 .v2-synced-device small {
overflow: hidden;
color: #7e908f;
font-size: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-device-signal {
width: 6px;
height: 6px;
background: #becac9;
border-radius: 50%;
}
.console-v2 .v2-synced-device[data-ready="true"] .v2-device-signal {
background: #18a783;
}
.console-v2 .v2-extension-sync-mount {
min-width: 0;
}
@media (max-height: 760px) {
.console-v2.v2-passive-display .main-panel {
grid-template-rows: 60px 198px minmax(0, 1fr);
}
.console-v2.v2-passive-display .v2-module-switcher {
min-height: 60px;
}
.console-v2.v2-passive-display .v2-natural-panel {
padding-block: 13px;
}
.console-v2 .v2-task-timeline span {
padding: 6px;
}
}
@media (max-width: 1280px) {
.console-v2.v2-passive-display .workspace {
grid-template-columns: 220px minmax(0, 1fr);
}
.console-v2.v2-passive-display .v2-sidebar {
padding-inline: 15px;
}
.console-v2 .v2-unified-capabilities {
display: none;
}
.console-v2.v2-passive-display .v2-natural-panel {
grid-template-columns: minmax(280px, 0.7fr) minmax(390px, 1.3fr);
}
.console-v2.v2-passive-display .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(440px, 1.1fr) minmax(330px, 0.9fr);
}
}
@media (max-width: 1366px) {
.console-v2 {
min-width: 1120px;
}
.console-v2 .workspace {
grid-template-columns: 245px minmax(0, 1fr);
}
.console-v2.v2-sidebar-collapsed .workspace {
grid-template-columns: 66px minmax(0, 1fr);
}
.v2-natural-panel {
grid-template-columns: minmax(0, 1fr);
}
.v2-natural-grid {
grid-template-columns: minmax(0, 1fr) 165px;
}
.v2-page-rail {
padding-right: 6px;
}
.v2-page-button {
grid-template-columns: 12px 10px minmax(0, 1fr);
gap: 4px;
}
}
@media (min-width: 2000px) {
.console-v2 .workspace {
grid-template-columns: 330px minmax(0, 1fr);
}
.console-v2.v2-sidebar-collapsed .workspace {
grid-template-columns: 76px minmax(0, 1fr);
}
.console-v2 .v2-sidebar {
padding-right: 34px;
padding-left: 34px;
}
.console-v2 .main-panel {
--v2-main-pad: 24px;
grid-template-rows: 42px 350px minmax(0, 1fr);
gap: 18px;
padding: 0 var(--v2-main-pad) var(--v2-main-pad);
}
.v2-operation-shell,
.v2-output-shell {
border-radius: 26px;
}
}
@media (prefers-reduced-motion: reduce) {
.console-v2 *,
.console-v2 *::before,
.console-v2 *::after {
scroll-behavior: auto !important;
transition-duration: 0.01ms !important;
}
}
/* Keep the digital twin and device state board equally weighted. */
.console-v2 .joint-twin-shell.v2-output-page {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.console-v2 .joint-twin-shell .twin-heading h3,
.console-v2 .joint-twin-shell .twin-seat-button {
white-space: nowrap;
}
.console-v2 .joint-twin-shell > .cabin-band {
grid-template-rows: 58px minmax(0, 1fr);
}
.console-v2 .joint-twin-shell .domain-grid {
grid-template-columns: repeat(8, minmax(0, 1fr));
grid-template-rows: repeat(2, minmax(0, 1fr));
grid-template-areas: none;
grid-auto-rows: minmax(0, 1fr);
align-content: stretch;
overflow: hidden;
}
.console-v2 .joint-twin-shell .domain-grid > .domain-panel {
grid-area: auto;
grid-column: span 2;
height: 100%;
box-sizing: border-box;
}
.console-v2 .joint-twin-shell .window-panel,
.console-v2 .joint-twin-shell .lighting-panel {
min-height: 0;
}
.console-v2 .joint-seat-panel .thermal-states {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.console-v2 .joint-seat-panel .motion-state-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.console-v2 .joint-seat-panel .thermal-states > span,
.console-v2 .joint-seat-panel .motion-axis {
min-width: 0;
}
.console-v2 .joint-seat-panel .motion-axis span {
line-height: 1.2;
}
.console-v2 .joint-seat-panel {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
grid-template-rows: auto auto auto minmax(0, 1fr);
align-content: start;
position: relative;
}
.console-v2 .joint-seat-panel .seat-identity {
min-width: 0;
grid-column: 1;
grid-row: 1;
}
.console-v2 .joint-seat-panel .seat-identity strong {
white-space: nowrap;
}
.console-v2 .joint-seat-panel .seat-channel-badge {
grid-column: 2;
grid-row: 1;
align-self: center;
white-space: nowrap;
}
.console-v2 .joint-seat-panel .dynamic-mode-state,
.console-v2 .joint-seat-panel .thermal-states,
.console-v2 .joint-seat-panel .motion-state-grid {
grid-column: 1 / -1;
}
.console-v2 .joint-seat-panel .seat-channel-badge {
width: fit-content;
max-width: 100%;
position: static;
margin: 0;
padding: 2px 5px;
overflow: hidden;
font-size: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-seat-panel .seat-identity {
max-width: 100%;
}
.console-v2 .joint-twin-shell .roof-panel .domain-readouts,
.console-v2 .joint-twin-shell .ambient-panel .domain-readouts,
.console-v2 .joint-twin-shell .window-panel .domain-readouts,
.console-v2 .joint-twin-shell .lighting-panel .domain-readouts {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(2, minmax(0, 1fr));
}
.console-v2 .joint-twin-shell .roof-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .ambient-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .window-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .lighting-panel .domain-readouts > div {
flex-direction: column;
align-items: flex-start;
justify-content: center;
gap: 2px;
}
.console-v2 .joint-twin-shell .roof-panel .domain-readouts dd,
.console-v2 .joint-twin-shell .ambient-panel .domain-readouts dd,
.console-v2 .joint-twin-shell .window-panel .domain-readouts dd,
.console-v2 .joint-twin-shell .lighting-panel .domain-readouts dd {
max-width: 100%;
margin-left: 0;
text-align: left;
}
.console-v2 .joint-twin-shell .domain-readouts dt,
.console-v2 .joint-twin-shell .domain-readouts dd {
line-height: 1.2;
}
.console-v2 .joint-twin-shell .zone-temperature span,
.console-v2 .joint-twin-shell .zone-temperature strong {
line-height: 1.2;
}
.console-v2 .joint-twin-shell .climate-panel .climate-display {
min-height: 50px;
}
.console-v2 .joint-twin-shell .climate-panel .zone-temperature {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-content: center;
gap: 2px 4px;
}
.console-v2 .joint-twin-shell .climate-panel .zone-temperature small {
min-width: 0;
grid-column: 1 / -1;
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
color: #718384;
font-size: 8px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-twin-shell .climate-panel .zone-temperature small b {
overflow: hidden;
color: #354f51;
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .domain-summary-visual {
min-width: 0;
height: 40px;
box-sizing: border-box;
display: flex;
align-items: center;
gap: 5px;
margin-top: 5px;
padding: 4px 6px;
overflow: hidden;
color: #748485;
background: linear-gradient(145deg, #f6f9f8, #edf3f1);
border: 1px solid rgba(93, 132, 129, 0.16);
border-radius: 7px;
font-size: 8px;
font-weight: 800;
line-height: 1;
}
.console-v2 .joint-twin-shell .shade-summary-visual > i {
min-width: 0;
height: 8px;
flex: 1;
position: relative;
overflow: hidden;
background: #dce7e4;
border-radius: 999px;
}
.console-v2 .joint-twin-shell .shade-summary-visual > i > b {
width: 0;
position: absolute;
inset: 0 auto 0 0;
background: linear-gradient(90deg, #74b6ae, var(--v2-accent));
border-radius: inherit;
transition: width 220ms ease;
}
.console-v2 .joint-twin-shell .ambient-summary-visual {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.console-v2 .joint-twin-shell .ambient-summary-visual > span {
min-width: 0;
display: grid;
grid-template-columns: 13px minmax(0, 1fr);
align-items: center;
gap: 5px;
}
.console-v2 .joint-twin-shell .ambient-summary-visual i {
width: 13px;
height: 13px;
display: block;
background: #b9c5c3;
border-radius: 50%;
box-shadow: 0 0 0 3px rgba(116, 217, 255, 0.08);
}
.console-v2 .joint-twin-shell .ambient-summary-visual b,
.console-v2 .joint-twin-shell .window-summary-visual b,
.console-v2 .joint-twin-shell .lighting-summary-visual b {
overflow: hidden;
color: #52696a;
font-size: 8px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .window-summary-visual,
.console-v2 .joint-twin-shell .lighting-summary-visual {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 4px;
padding-inline: 5px;
}
.console-v2 .joint-twin-shell .window-summary-visual > span,
.console-v2 .joint-twin-shell .lighting-summary-visual > span {
min-width: 0;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 3px;
}
.console-v2 .joint-twin-shell .window-summary-visual i {
width: 15px;
height: 10px;
position: relative;
overflow: hidden;
background: #dbe6e4;
border: 1px solid #9db2af;
border-radius: 2px 2px 4px 4px;
}
.console-v2 .joint-twin-shell .window-summary-visual i::after {
content: "";
height: var(--window-open, 0%);
position: absolute;
inset: auto 0 0;
background: linear-gradient(#8dcac4, var(--v2-accent));
transition: height 220ms ease;
}
.console-v2 .joint-twin-shell .window-summary-visual [data-state="closed"] i {
border-color: color-mix(in srgb, var(--v2-accent) 55%, #9db2af);
}
.console-v2 .joint-twin-shell .window-summary-visual [data-state="open"] i {
border-color: #d29a42;
box-shadow: 0 0 0 2px rgba(210, 154, 66, 0.12);
}
.console-v2 .joint-twin-shell .window-summary-visual [data-state="unknown"] i {
opacity: 0.48;
}
.console-v2 .joint-twin-shell .lighting-summary-visual i {
width: 8px;
height: 8px;
background: #b9c5c3;
border-radius: 50%;
transition: 180ms ease;
}
.console-v2 .joint-twin-shell .lighting-summary-visual [data-state="on"] i {
background: #f0b84a;
box-shadow: 0 0 7px rgba(240, 184, 74, 0.8);
}
.console-v2 .joint-twin-shell .vehicle-status-panel {
display: grid;
grid-template-rows: auto auto auto minmax(0, 1fr);
align-content: start;
}
.console-v2 .joint-twin-shell .vehicle-status-panel .readonly-state,
.console-v2 .joint-twin-shell .vehicle-status-panel.active .readonly-state {
color: #315f5b;
background: #e2efec;
}
.console-v2 .joint-twin-shell .readonly-capability span {
color: #526f71;
background: #edf2f1;
}
.console-v2 .joint-twin-shell .vehicle-primary-readout {
min-width: 0;
display: grid;
grid-template-columns: 0.72fr 1.28fr;
gap: 4px;
margin-top: 5px;
}
.console-v2 .joint-twin-shell .vehicle-primary-readout > div {
min-width: 0;
min-height: 46px;
display: flex;
flex-direction: column;
justify-content: center;
padding: 4px 6px;
background: linear-gradient(145deg, #eef5f3, #f8faf9);
border: 1px solid rgba(74, 119, 116, 0.16);
border-radius: 7px;
}
.console-v2 .joint-twin-shell .vehicle-primary-readout span {
color: #708282;
font-size: 8px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-twin-shell .vehicle-primary-readout strong {
margin-top: 3px;
overflow: hidden;
color: #193d3b;
font: 900 13px/1.15 "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .vehicle-primary-readout > div:first-child strong {
color: var(--v2-accent-strong);
font-size: 18px;
}
.console-v2 .joint-twin-shell .door-state-grid {
min-width: 0;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: repeat(2, minmax(0, 1fr));
gap: 3px;
margin-top: 4px;
}
.console-v2 .joint-twin-shell .door-state-grid > span {
min-width: 0;
min-height: 29px;
display: grid;
grid-template-columns: 6px minmax(0, 1fr);
grid-template-rows: repeat(2, auto);
align-items: center;
gap: 4px;
padding: 2px 5px;
color: #52696a;
background: #f3f5f4;
border: 1px solid rgba(113, 141, 140, 0.16);
border-radius: 5px;
font-size: 9px;
font-weight: 750;
line-height: 1;
}
.console-v2 .joint-twin-shell .door-state-grid i {
width: 6px;
height: 6px;
background: #aab6b5;
border-radius: 50%;
}
.console-v2 .joint-twin-shell .door-state-grid b {
grid-column: 2;
color: #607474;
font-size: 8px;
white-space: nowrap;
}
.console-v2 .joint-twin-shell .door-state-grid [data-state="lock"] i {
background: var(--v2-accent);
}
.console-v2 .joint-twin-shell .door-state-grid [data-state="lock"] b {
color: var(--v2-accent-strong);
}
.console-v2 .joint-twin-shell .door-state-grid [data-state="unlock"] i {
background: #d99a36;
}
.console-v2 .joint-twin-shell .door-state-grid [data-state="unlock"] b {
color: #9a6818;
}
@media (max-height: 820px) {
.console-v2 .joint-twin-shell > .cabin-band {
grid-template-rows: 50px minmax(0, 1fr);
}
.console-v2 .joint-twin-shell .cabin-heading {
padding: 5px 8px;
}
.console-v2 .joint-twin-shell .cabin-title-copy p {
display: none;
}
.console-v2 .joint-twin-shell .domain-grid {
gap: 6px;
padding: 6px;
}
.console-v2 .joint-twin-shell .domain-panel {
padding: 6px;
}
.console-v2 .joint-twin-shell .domain-panel header {
grid-template-columns: 24px minmax(0, 1fr) auto;
}
.console-v2 .joint-twin-shell .domain-icon,
.console-v2 .joint-seat-panel .seat-identity > svg {
width: 24px;
height: 24px;
padding: 5px;
}
.console-v2 .joint-twin-shell .domain-panel header strong,
.console-v2 .joint-seat-panel .seat-identity strong {
font-size: 11px;
}
.console-v2 .joint-twin-shell .domain-panel header small,
.console-v2 .joint-seat-panel .seat-identity span {
display: none;
}
.console-v2 .joint-twin-shell .domain-capability-line {
font-size: 8px;
}
.console-v2 .joint-twin-shell .domain-capability-line {
margin-top: 5px;
}
.console-v2 .joint-twin-shell .climate-display,
.console-v2 .joint-twin-shell .roof-visual,
.console-v2 .joint-twin-shell .ambient-visual {
min-height: 22px;
margin-top: 3px;
}
.console-v2 .joint-twin-shell .climate-direction-display {
margin-top: 3px;
}
.console-v2 .joint-twin-shell .zone-temperature,
.console-v2 .joint-twin-shell .domain-readouts > div {
min-height: 22px;
padding: 3px 5px;
}
.console-v2 .joint-twin-shell .zone-temperature span,
.console-v2 .joint-twin-shell .zone-temperature strong,
.console-v2 .joint-twin-shell .domain-readouts > div,
.console-v2 .joint-twin-shell .domain-readouts dd {
font-size: 10px;
}
.console-v2 .joint-twin-shell .domain-readouts {
gap: 4px;
margin-top: 4px;
}
.console-v2 .joint-twin-shell .roof-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .ambient-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .window-panel .domain-readouts > div,
.console-v2 .joint-twin-shell .lighting-panel .domain-readouts > div {
min-height: 30px;
}
.console-v2 .joint-twin-shell .climate-panel .zone-temperature,
.console-v2 .joint-twin-shell .climate-panel .domain-readouts > div {
min-height: 32px;
}
.console-v2 .joint-twin-shell .climate-panel .zone-temperature {
padding: 4px 5px;
}
.console-v2 .joint-seat-panel .dynamic-mode-state {
margin: 4px 0;
padding: 3px 4px;
font-size: 9px;
}
.console-v2 .joint-seat-panel .dynamic-mode-state b,
.console-v2 .joint-seat-panel .thermal-states b,
.console-v2 .joint-seat-panel .motion-axis b {
font-size: 10px;
}
.console-v2 .joint-seat-panel .thermal-states,
.console-v2 .joint-seat-panel .motion-state-grid {
gap: 4px;
margin-top: 4px;
}
.console-v2 .joint-seat-panel .thermal-states > span,
.console-v2 .joint-seat-panel .motion-axis {
min-height: 24px;
padding: 3px 4px;
font-size: 10px;
}
.console-v2 .joint-seat-panel .motion-state-grid {
padding-top: 4px;
}
.console-v2 .joint-seat-panel .thermal-states > span {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: repeat(2, auto);
justify-items: center;
gap: 0;
text-align: center;
}
.console-v2 .joint-seat-panel .thermal-states svg {
display: none;
}
.console-v2 .joint-seat-panel .motion-axis {
flex-direction: column;
justify-content: center;
gap: 1px;
text-align: center;
}
.console-v2 .joint-seat-panel .thermal-states b,
.console-v2 .joint-seat-panel .motion-axis b {
font-size: 10px;
}
}
.reasoning-segmented {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.reasoning-option > span > strong {
font: inherit;
}
.reasoning-option > span > small,
.reasoning-option > .reasoning-check {
display: none;
}
.reasoning-option:disabled {
cursor: not-allowed;
opacity: 0.45;
}
/* Market-style model intelligence picker: a compact composer pill expands
into an overlay only when the user needs to change the reasoning level. */
.console-v2 .v2-reasoning-field {
width: 320px;
min-width: 250px;
position: fixed;
z-index: 120;
margin: 0;
padding: 12px;
background: rgba(255, 255, 255, 0.98);
border: 1px solid color-mix(in srgb, var(--v2-accent) 18%, #e6eceb);
border-radius: 14px;
box-shadow: 0 16px 38px rgba(28, 61, 62, 0.2);
}
.console-v2 .v2-reasoning-field[hidden] {
display: none !important;
}
.console-v2 .v2-reasoning-field > .field-label {
margin: 0 0 8px;
color: #263b3d;
font-size: 11px;
font-weight: 850;
}
.console-v2 .v2-reasoning-field .reasoning-segmented {
width: 100%;
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 5px;
padding: 0;
background: transparent;
border: 0;
}
.console-v2 .v2-reasoning-field .reasoning-option {
width: 100%;
min-width: 0;
min-height: 42px;
display: grid;
grid-template-columns: 24px minmax(0, 1fr) 18px;
align-items: center;
justify-content: initial;
gap: 8px;
padding: 6px 9px;
color: #536466;
border: 1px solid transparent;
border-radius: 9px;
text-align: left;
}
.console-v2 .v2-reasoning-field .reasoning-option:hover {
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 38%, white);
}
.console-v2 .v2-reasoning-field .reasoning-option.active {
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 58%, white);
border-color: color-mix(in srgb, var(--v2-accent) 16%, transparent);
box-shadow: none;
}
.console-v2 .v2-reasoning-field .reasoning-option > svg:first-child {
width: 16px;
height: 16px;
justify-self: center;
}
.console-v2 .v2-reasoning-field .reasoning-option > span {
min-width: 0;
display: grid;
gap: 1px;
}
.console-v2 .v2-reasoning-field .reasoning-option > span > strong,
.console-v2 .v2-reasoning-field .reasoning-option > span > small {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Compact vehicle state board ------------------------------------------- */
.console-v2 .joint-twin-shell > .cabin-band.cabin-compact-board {
grid-template-rows: 62px 80px minmax(0, 1fr);
background: color-mix(in srgb, var(--v2-accent-soft) 7%, white);
}
.console-v2 .cabin-compact-board .cabin-heading {
padding: 9px 12px;
}
.console-v2 .cabin-compact-board .cabin-title-copy p,
.console-v2 .cabin-compact-board .cabin-channel-legend {
display: none;
}
.console-v2 .cabin-compact-board .cabin-heading .section-kicker {
font-size: 7px;
}
.console-v2 .cabin-compact-board .cabin-heading h3 {
margin-top: 2px;
font-size: 16px;
}
.console-v2 .cabin-heading-actions {
display: flex;
align-items: center;
gap: 10px;
margin-left: auto;
}
.console-v2 .cabin-live-status {
min-width: 0;
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--v2-accent-strong);
font-size: 12px;
white-space: nowrap;
}
.console-v2 .cabin-live-status > b {
overflow: hidden;
text-overflow: ellipsis;
}
.console-v2 .cabin-live-status > i {
width: 7px;
height: 7px;
flex: 0 0 7px;
background: var(--v2-accent);
border-radius: 50%;
box-shadow: 0 0 0 4px color-mix(in srgb, var(--v2-accent) 12%, transparent);
}
.console-v2 .cabin-live-status[data-state="connecting"] {
color: var(--v2-muted);
}
.console-v2 .cabin-live-status[data-state="connecting"] > i {
background: #d19836;
box-shadow: 0 0 0 4px rgba(209, 152, 54, 0.12);
}
.console-v2 .cabin-live-status[data-state="offline"] {
color: #a06455;
}
.console-v2 .cabin-live-status[data-state="offline"] > i {
background: #c67a68;
box-shadow: 0 0 0 4px rgba(198, 122, 104, 0.12);
}
.console-v2 .cabin-expand-button {
min-height: 34px;
display: inline-flex;
align-items: center;
gap: 6px;
padding: 0 11px;
color: var(--v2-accent-strong);
background: rgba(255, 255, 255, 0.82);
border: 1px solid color-mix(in srgb, var(--v2-accent) 27%, transparent);
border-radius: 9px;
font: 750 12px/1 Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
cursor: pointer;
transition: 160ms ease;
}
.console-v2 .cabin-expand-button:hover {
background: color-mix(in srgb, var(--v2-accent-soft) 55%, white);
border-color: color-mix(in srgb, var(--v2-accent) 45%, transparent);
}
.console-v2 .cabin-expand-button svg {
width: 14px;
height: 14px;
}
.console-v2 .cabin-board-toolbar {
min-width: 0;
display: grid;
grid-template-rows: 40px 32px;
gap: 4px;
padding: 8px 10px 0;
background: rgba(255, 255, 255, 0.78);
border-bottom: 1px solid var(--v2-line);
}
.console-v2 .cabin-vehicle-summary {
min-width: 0;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
margin: 0;
overflow: hidden;
background: color-mix(in srgb, var(--v2-accent-soft) 24%, #f3f6f5);
border-radius: 8px;
}
.console-v2 .cabin-vehicle-summary > div {
min-width: 0;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 0 10px;
border-left: 1px solid var(--v2-line);
}
.console-v2 .cabin-vehicle-summary > div:first-child {
border-left: 0;
}
.console-v2 .cabin-vehicle-summary dt {
overflow: hidden;
color: var(--v2-muted);
font-size: 10px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .cabin-vehicle-summary dd {
margin: 0;
overflow: hidden;
color: var(--v2-ink);
font-size: 13px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .cabin-vehicle-summary dd[data-state="healthy"] {
color: var(--v2-accent-strong);
}
.console-v2 .cabin-vehicle-summary dd[data-state="warning"] {
color: #a36a1b;
}
.console-v2 .cabin-carousel-controls {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
}
.console-v2 .cabin-carousel-count {
display: inline-flex;
align-items: baseline;
color: var(--v2-muted);
font-size: 11px;
font-style: normal;
}
.console-v2 .cabin-carousel-count b {
color: var(--v2-accent-strong);
font-size: 12px;
}
.console-v2 .cabin-carousel-count i {
margin-left: 3px;
font-style: normal;
}
.console-v2 .cabin-carousel-controls > div {
display: inline-flex;
overflow: hidden;
background: rgba(255, 255, 255, 0.82);
border: 1px solid color-mix(in srgb, var(--v2-accent) 22%, var(--v2-line));
border-radius: 9px;
}
.console-v2 .cabin-carousel-controls button {
width: 36px;
min-height: 29px;
display: inline-grid;
place-items: center;
padding: 0;
color: var(--v2-accent-strong);
background: transparent;
border: 0;
border-left: 1px solid var(--v2-line);
cursor: pointer;
transition: 160ms ease;
}
.console-v2 .cabin-carousel-controls button:first-child {
border-left: 0;
}
.console-v2 .cabin-carousel-controls button:hover:not(:disabled) {
background: color-mix(in srgb, var(--v2-accent-soft) 72%, white);
}
.console-v2 .cabin-carousel-controls button:disabled {
color: color-mix(in srgb, var(--v2-muted) 48%, white);
cursor: default;
}
.console-v2 .cabin-carousel-controls button svg {
width: 16px;
height: 16px;
}
.console-v2 .cabin-compact-board .domain-grid {
--cabin-cards-per-view: 2;
--cabin-card-gap: 10px;
min-width: 0;
display: flex;
align-items: stretch;
gap: var(--cabin-card-gap);
margin-inline: 10px;
padding: 10px 0;
overflow-x: auto;
overflow-y: hidden;
scroll-behavior: smooth;
scroll-snap-type: x mandatory;
scrollbar-width: none;
overscroll-behavior-inline: contain;
touch-action: pan-x;
}
.console-v2 .cabin-compact-board .domain-grid::-webkit-scrollbar {
display: none;
}
.console-v2 .cabin-compact-board .domain-grid > .domain-panel {
min-width: 0;
flex: 0 0 calc((100% - (var(--cabin-cards-per-view) - 1) * var(--cabin-card-gap)) / var(--cabin-cards-per-view));
scroll-snap-align: start;
}
.console-v2 .cabin-compact-board .domain-panel {
height: 100%;
padding: 13px 14px 52px;
background: rgba(255, 255, 255, 0.96);
border-color: color-mix(in srgb, var(--v2-accent) 13%, #dfe8e6);
border-radius: 11px;
box-shadow: 0 3px 10px rgba(31, 66, 67, 0.035);
}
.console-v2 .cabin-compact-board .device-power-entry {
min-width: 0;
height: 36px;
position: absolute;
inset: auto 14px 10px;
z-index: 2;
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 0 10px;
color: var(--v2-ink);
background: color-mix(in srgb, var(--v2-accent-soft) 34%, #f7f9f8);
border: 1px solid color-mix(in srgb, var(--v2-accent) 15%, var(--v2-line));
border-radius: 8px;
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
text-align: left;
}
.console-v2 .cabin-compact-board button.device-power-entry {
cursor: pointer;
transition: 160ms ease;
}
.console-v2 .cabin-compact-board button.device-power-entry:hover {
background: color-mix(in srgb, var(--v2-accent-soft) 65%, white);
border-color: color-mix(in srgb, var(--v2-accent) 36%, var(--v2-line));
box-shadow: 0 3px 10px color-mix(in srgb, var(--v2-accent) 9%, transparent);
}
.console-v2 .cabin-compact-board button.device-power-entry:focus-visible {
outline: 2px solid color-mix(in srgb, var(--v2-accent) 48%, transparent);
outline-offset: 2px;
}
.console-v2 .cabin-compact-board .device-power-copy {
min-width: 0;
display: inline-flex;
align-items: center;
gap: 7px;
}
.console-v2 .cabin-compact-board .device-power-copy > svg {
width: 15px;
height: 15px;
flex: 0 0 15px;
color: var(--v2-accent);
}
.console-v2 .cabin-compact-board .device-power-copy > span {
min-width: 0;
display: flex;
align-items: baseline;
gap: 7px;
}
.console-v2 .cabin-compact-board .device-power-copy small {
color: var(--v2-muted);
font-size: 10px;
white-space: nowrap;
}
.console-v2 .cabin-compact-board .device-power-copy b {
color: var(--v2-accent-strong);
font: 850 13px/1 "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
white-space: nowrap;
}
.console-v2 .cabin-compact-board .device-power-action {
display: inline-flex;
align-items: center;
gap: 2px;
color: var(--v2-accent-strong);
font-size: 10px;
font-weight: 750;
white-space: nowrap;
}
.console-v2 .cabin-compact-board .device-power-action svg {
width: 13px;
height: 13px;
}
.console-v2 .cabin-compact-board .device-power-entry.unavailable {
color: var(--v2-muted);
background: #f4f6f5;
border-color: var(--v2-line);
}
.console-v2 .cabin-compact-board .device-power-entry.unavailable .device-power-copy > svg,
.console-v2 .cabin-compact-board .device-power-entry.unavailable .device-power-copy b {
color: color-mix(in srgb, var(--v2-muted) 78%, white);
}
.console-v2 .cabin-compact-board .device-power-unavailable {
overflow: hidden;
color: color-mix(in srgb, var(--v2-muted) 78%, white);
font-size: 9px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .v2-reasoning-field .reasoning-option > span > strong {
color: inherit;
font-size: 10px;
font-weight: 850;
}
.console-v2 .v2-reasoning-field .reasoning-option > span > small {
color: #899697;
font-size: 8px;
font-weight: 600;
}
.console-v2 .v2-reasoning-field .reasoning-option > .reasoning-check {
width: 14px;
height: 14px;
display: block;
opacity: 0;
}
.console-v2 .v2-reasoning-field .reasoning-option.active > .reasoning-check {
opacity: 1;
}
.console-v2 .v2-reasoning-field > .provider-note {
min-height: 0;
margin: 8px 2px 0;
color: #829091;
font-size: 8px;
line-height: 1.45;
}
.console-v2 .v2-request-form .command-composer {
overflow: visible;
}
.console-v2 .v2-request-form #utterance {
padding-bottom: 42px;
border-radius: inherit;
}
.console-v2 .v2-reasoning-trigger {
max-width: 180px;
min-height: 26px;
position: absolute;
left: 14px;
bottom: 9px;
z-index: 12;
display: inline-grid;
grid-template-columns: 14px auto auto 12px;
align-items: center;
gap: 5px;
padding: 0 9px;
color: #526264;
background: rgba(241, 244, 243, 0.96);
border: 1px solid rgba(98, 127, 126, 0.11);
border-radius: 999px;
font-size: 9px;
font-weight: 700;
line-height: 1;
cursor: pointer;
}
.console-v2 .v2-reasoning-trigger:hover,
.console-v2 .v2-reasoning-trigger.open {
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 52%, white);
border-color: color-mix(in srgb, var(--v2-accent) 18%, transparent);
}
.console-v2 .v2-reasoning-trigger.unavailable {
opacity: 0.62;
}
.console-v2 .v2-reasoning-trigger > svg {
width: 12px;
height: 12px;
}
.console-v2 .v2-reasoning-trigger > strong {
color: var(--v2-accent-strong);
font-size: 9px;
}
.console-v2 .v2-reasoning-trigger > .v2-reasoning-caret {
transition: transform 150ms ease;
}
.console-v2 .v2-reasoning-trigger.open > .v2-reasoning-caret {
transform: rotate(180deg);
}
.console-v2 .v2-request-form .composer-hint {
max-width: 150px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
body.device-power-drawer-open {
overflow: hidden;
}
.console-v2 .device-power-backdrop {
position: fixed;
inset: 0;
z-index: 1200;
background: rgba(21, 42, 45, 0.32);
backdrop-filter: blur(1.5px);
}
.console-v2 .device-power-drawer {
width: min(470px, calc(100vw - 24px));
position: fixed;
inset: 10px 10px 10px auto;
z-index: 1210;
display: grid;
grid-template-rows: auto minmax(0, 1fr);
overflow: hidden;
color: var(--v2-ink);
background: rgba(255, 255, 255, 0.985);
border: 1px solid color-mix(in srgb, var(--v2-accent) 17%, var(--v2-line));
border-radius: 16px;
box-shadow: -18px 0 48px rgba(24, 55, 58, 0.17);
}
.console-v2 .device-power-backdrop[hidden],
.console-v2 .device-power-drawer[hidden] {
display: none !important;
}
.console-v2 .device-power-drawer-heading {
min-width: 0;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
padding: 18px 18px 13px;
border-bottom: 1px solid var(--v2-line);
}
.console-v2 .device-power-drawer-heading .section-kicker {
color: var(--v2-accent-strong);
font-size: 8px;
}
.console-v2 .device-power-drawer-heading h2 {
margin: 4px 0 5px;
color: var(--v2-ink);
font-size: 20px;
line-height: 1.2;
}
.console-v2 .device-power-drawer-heading p {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
color: var(--v2-muted);
font-size: 10px;
}
.console-v2 .device-power-drawer-heading p i {
width: 6px;
height: 6px;
flex: 0 0 6px;
background: var(--v2-accent);
border-radius: 50%;
box-shadow: 0 0 0 4px color-mix(in srgb, var(--v2-accent) 10%, transparent);
}
.console-v2 .device-power-drawer-heading > button {
width: 32px;
height: 32px;
flex: 0 0 32px;
display: inline-grid;
place-items: center;
padding: 0;
color: var(--v2-muted);
background: #f5f8f7;
border: 1px solid var(--v2-line);
border-radius: 9px;
cursor: pointer;
}
.console-v2 .device-power-drawer-heading > button:hover {
color: var(--v2-accent-strong);
background: var(--v2-accent-soft);
}
.console-v2 .device-power-drawer-heading > button svg {
width: 15px;
height: 15px;
}
.console-v2 .device-power-drawer-body {
min-height: 0;
display: grid;
align-content: start;
gap: 16px;
padding: 16px 18px 18px;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: color-mix(in srgb, var(--v2-accent) 28%, transparent) transparent;
}
.console-v2 .device-power-overview {
display: grid;
grid-template-columns: minmax(0, 1.55fr) minmax(126px, 0.9fr);
gap: 10px;
}
.console-v2 .device-power-total {
min-height: 116px;
display: flex;
flex-direction: column;
justify-content: center;
padding: 16px 18px;
color: #fff;
background: linear-gradient(135deg, var(--v2-accent), color-mix(in srgb, var(--v2-accent) 78%, #25aaa2));
border-radius: 13px;
box-shadow: 0 8px 20px color-mix(in srgb, var(--v2-accent) 17%, transparent);
}
.console-v2 .device-power-total small {
font-size: 11px;
font-weight: 650;
opacity: 0.86;
}
.console-v2 .device-power-total strong {
display: flex;
align-items: baseline;
gap: 6px;
margin-top: 6px;
font-family: "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
}
.console-v2 .device-power-total strong b {
font-size: 31px;
line-height: 1;
}
.console-v2 .device-power-total strong span {
font-size: 14px;
}
.console-v2 .device-power-total em {
margin-top: 10px;
font-size: 9px;
font-style: normal;
opacity: 0.72;
}
.console-v2 .device-power-energy-summary {
min-width: 0;
display: grid;
grid-template-rows: repeat(2, minmax(0, 1fr));
gap: 8px;
margin: 0;
}
.console-v2 .device-power-energy-summary > div {
min-width: 0;
display: flex;
flex-direction: column;
justify-content: center;
padding: 10px 12px;
background: #f6f9f8;
border: 1px solid var(--v2-line);
border-radius: 10px;
}
.console-v2 .device-power-energy-summary dt {
color: var(--v2-muted);
font-size: 10px;
}
.console-v2 .device-power-energy-summary dd {
margin: 4px 0 0;
overflow: hidden;
color: var(--v2-ink);
font: 850 15px/1.15 "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
text-overflow: ellipsis;
white-space: nowrap;
}
@media (max-height: 820px) {
.console-v2 .v2-reasoning-trigger {
bottom: 7px;
}
}
.console-v2 .device-power-components,
.console-v2 .device-power-trend {
min-width: 0;
}
.console-v2 .device-power-components > header,
.console-v2 .device-power-trend > header {
display: flex;
align-items: flex-end;
justify-content: space-between;
gap: 12px;
margin-bottom: 8px;
}
.console-v2 .device-power-components h3,
.console-v2 .device-power-trend h3 {
margin: 2px 0 0;
color: var(--v2-ink);
font-size: 14px;
}
.console-v2 .device-power-components .section-kicker,
.console-v2 .device-power-trend .section-kicker {
color: var(--v2-accent-strong);
font-size: 7px;
}
.console-v2 #devicePowerComponentTotal {
color: var(--v2-muted);
font-size: 10px;
white-space: nowrap;
}
.console-v2 .device-power-component-list {
overflow: hidden;
background: #fff;
border: 1px solid var(--v2-line);
border-radius: 11px;
}
.console-v2 .device-power-component-row {
min-width: 0;
min-height: 42px;
display: grid;
grid-template-columns: minmax(106px, 0.9fr) minmax(90px, 1.4fr) minmax(62px, auto);
align-items: center;
gap: 10px;
padding: 7px 12px;
border-top: 1px solid var(--v2-line);
}
.console-v2 .device-power-component-row:first-child {
border-top: 0;
}
.console-v2 .device-power-component-row > span {
overflow: hidden;
color: var(--v2-ink);
font-size: 11px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2 .device-power-component-row > i {
height: 5px;
position: relative;
overflow: hidden;
background: #e7efed;
border-radius: 999px;
}
.console-v2 .device-power-component-row > i b {
width: var(--power-share, 0%);
position: absolute;
inset: 0 auto 0 0;
background: var(--v2-accent);
border-radius: inherit;
transition: width 220ms ease;
}
.console-v2 .device-power-component-row > strong {
color: var(--v2-ink);
font: 850 11px/1 "SFMono-Regular", Consolas, "Microsoft YaHei", monospace;
text-align: right;
white-space: nowrap;
}
.console-v2 .device-power-components-empty {
min-height: 108px;
display: flex;
align-items: center;
gap: 13px;
padding: 18px;
background: color-mix(in srgb, var(--v2-accent-soft) 18%, #f7f9f8);
}
.console-v2 .device-power-components-empty > span {
width: 40px;
height: 40px;
flex: 0 0 40px;
display: grid;
place-items: center;
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 68%, white);
border-radius: 10px;
}
.console-v2 .device-power-components-empty svg {
width: 18px;
height: 18px;
}
.console-v2 .device-power-components-empty strong {
font-size: 13px;
}
.console-v2 .device-power-components-empty p {
margin: 5px 0 0;
color: var(--v2-muted);
font-size: 10px;
line-height: 1.5;
}
.console-v2 .device-power-trend-tabs {
display: inline-flex;
padding: 2px;
background: #f3f6f5;
border: 1px solid var(--v2-line);
border-radius: 9px;
}
.console-v2 .device-power-trend-tabs button {
min-height: 24px;
padding: 0 8px;
color: var(--v2-muted);
background: transparent;
border: 0;
border-radius: 6px;
font: 650 9px/1 Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
cursor: pointer;
}
.console-v2 .device-power-trend-tabs button.active {
color: var(--v2-accent-strong);
background: #fff;
box-shadow: 0 1px 5px rgba(34, 70, 72, 0.08);
}
.console-v2 .device-power-chart {
height: 190px;
position: relative;
padding: 8px 8px 24px;
overflow: hidden;
background: linear-gradient(180deg, color-mix(in srgb, var(--v2-accent-soft) 12%, white), #fff);
border: 1px solid var(--v2-line);
border-radius: 11px;
}
.console-v2 .device-power-chart svg {
width: 100%;
height: 154px;
display: block;
}
.console-v2 .device-power-chart-grid line {
stroke: #e5ecea;
stroke-width: 1;
}
.console-v2 .device-power-chart-area {
fill: color-mix(in srgb, var(--v2-accent) 12%, transparent);
}
.console-v2 .device-power-chart-line {
fill: none;
stroke: var(--v2-accent);
stroke-width: 3;
stroke-linecap: round;
stroke-linejoin: round;
}
.console-v2 .device-power-chart-y {
position: absolute;
left: 10px;
color: var(--v2-muted);
font-size: 8px;
}
.console-v2 .device-power-chart-y.top {
top: 15px;
}
.console-v2 .device-power-chart-y.bottom {
bottom: 25px;
}
.console-v2 .device-power-chart-empty {
position: absolute;
inset: 36px 18px 37px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 7px;
color: var(--v2-muted);
background: rgba(255, 255, 255, 0.74);
border: 1px dashed color-mix(in srgb, var(--v2-accent) 20%, var(--v2-line));
border-radius: 9px;
font-size: 10px;
}
.console-v2 .device-power-chart-empty[hidden] {
display: none;
}
.console-v2 .device-power-chart-empty svg {
width: 21px;
height: 21px;
color: var(--v2-accent);
}
.console-v2 .device-power-chart-axis {
position: absolute;
inset: auto 12px 7px 36px;
display: flex;
justify-content: space-between;
color: var(--v2-muted);
font-size: 8px;
}
.console-v2 .device-power-note {
display: flex;
align-items: flex-start;
gap: 7px;
padding-top: 2px;
color: var(--v2-muted);
font-size: 9px;
line-height: 1.5;
}
.console-v2 .device-power-note svg {
width: 13px;
height: 13px;
flex: 0 0 13px;
margin-top: 1px;
color: var(--v2-accent);
}
@media (max-width: 760px) {
.console-v2 .device-power-drawer {
width: calc(100vw - 16px);
inset: 8px;
}
.console-v2 .device-power-overview {
grid-template-columns: minmax(0, 1fr);
}
.console-v2 .device-power-energy-summary {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: none;
}
}
.console-v2 .cabin-compact-board .domain-panel::before {
display: none;
}
.console-v2 .cabin-compact-board .domain-panel header {
grid-template-columns: 34px minmax(0, 1fr) auto;
gap: 9px;
}
.console-v2 .cabin-compact-board .domain-icon,
.console-v2 .cabin-compact-board .joint-seat-panel .seat-identity > svg {
width: 34px;
height: 34px;
padding: 8px;
border: 0;
border-radius: 8px;
}
.console-v2 .cabin-compact-board .domain-panel header strong,
.console-v2 .cabin-compact-board .joint-seat-panel .seat-identity strong {
font-size: 15px;
line-height: 1.25;
}
.console-v2 .cabin-compact-board .domain-panel header small,
.console-v2 .cabin-compact-board .joint-seat-panel .seat-identity span {
color: var(--v2-muted);
font-size: 10px;
}
.console-v2 .cabin-compact-board .device-state,
.console-v2 .cabin-compact-board .seat-channel-badge {
padding: 5px 8px;
color: var(--v2-accent-strong);
background: color-mix(in srgb, var(--v2-accent-soft) 67%, white);
border-radius: 12px;
font-size: 10px;
}
.console-v2 .cabin-compact-board .domain-capability-line {
min-height: 32px;
display: flex;
align-items: center;
margin: 4px 0 0;
padding-bottom: 4px;
color: var(--v2-muted);
border-bottom: 1px solid var(--v2-line);
font-size: 10px;
}
.console-v2 .cabin-compact-board .domain-capability-line span {
display: none;
}
.console-v2 .cabin-compact-board .domain-readouts {
gap: 0 18px;
margin-top: 3px;
}
.console-v2 .cabin-compact-board .domain-readouts > div,
.console-v2 .cabin-compact-board .roof-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .ambient-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .window-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .lighting-panel .domain-readouts > div {
min-height: 40px;
flex-direction: row;
align-items: center;
justify-content: space-between;
gap: 8px;
padding: 5px 0;
background: transparent;
border: 0;
border-bottom: 1px solid var(--v2-line);
border-radius: 0;
}
.console-v2 .cabin-compact-board .domain-readouts dt {
color: var(--v2-muted);
font-size: 12px;
font-weight: 500;
}
.console-v2 .cabin-compact-board .domain-readouts dd,
.console-v2 .cabin-compact-board .roof-panel .domain-readouts dd,
.console-v2 .cabin-compact-board .ambient-panel .domain-readouts dd,
.console-v2 .cabin-compact-board .window-panel .domain-readouts dd,
.console-v2 .cabin-compact-board .lighting-panel .domain-readouts dd {
margin-left: auto;
color: var(--v2-ink);
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
font-size: 13px;
font-weight: 800;
text-align: right;
}
.console-v2 .cabin-compact-board .climate-display {
min-height: 68px;
margin-top: 3px;
border-bottom: 1px solid var(--v2-line);
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature {
min-height: 68px;
padding: 9px 10px;
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature:first-child {
border-right: 1px solid var(--v2-line);
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature span {
color: var(--v2-muted);
font-size: 11px;
font-weight: 500;
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature strong {
color: color-mix(in srgb, var(--v2-accent) 72%, #2a86b7);
font-size: 18px;
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature small,
.console-v2 .cabin-compact-board .climate-panel .zone-temperature small b {
font-size: 10px;
}
.console-v2 .cabin-compact-board .domain-summary-visual {
height: 38px;
margin-top: 5px;
padding: 4px 0;
background: transparent;
border: 0;
border-bottom: 1px solid var(--v2-line);
border-radius: 0;
}
.console-v2 .cabin-compact-board .joint-seat-panel {
grid-template-rows: 34px 34px 62px minmax(0, 1fr);
}
.console-v2 .cabin-compact-board .joint-seat-panel .dynamic-mode-state {
min-height: 34px;
margin: 2px 0 0;
padding: 5px 0;
color: var(--v2-muted);
background: transparent;
border: 0;
border-bottom: 1px solid var(--v2-line);
border-radius: 0;
font-size: 11px;
}
.console-v2 .cabin-compact-board .joint-seat-panel .dynamic-mode-state b {
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
font-size: 12px;
}
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states {
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 0;
margin: 0;
border-bottom: 1px solid var(--v2-line);
}
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states > span {
min-height: 31px;
grid-template-columns: minmax(0, 1fr);
grid-template-rows: auto auto;
justify-items: center;
gap: 4px;
padding: 5px;
color: var(--v2-muted);
background: transparent;
border: 0;
border-left: 1px solid var(--v2-line);
font-size: 11px;
text-align: center;
}
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states > span:first-child {
border-left: 0;
}
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states svg {
display: none;
}
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states b {
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
font-size: 12px;
}
.console-v2 .cabin-compact-board .joint-seat-panel .motion-state-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0 14px;
margin: 0;
padding: 0;
}
.console-v2 .cabin-compact-board .joint-seat-panel .motion-axis {
min-height: 31px;
padding: 3px 0;
color: var(--v2-muted);
background: transparent;
border: 0;
border-bottom: 1px solid var(--v2-line);
border-radius: 0;
font-size: 11px;
}
.console-v2 .cabin-compact-board .joint-seat-panel .motion-axis b {
font-family: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
font-size: 12px;
}
.console-v2 .cabin-telemetry-source[hidden] {
display: none !important;
}
.console-v2 .joint-twin-shell.cabin-expanded {
grid-template-columns: minmax(0, 1fr);
}
.console-v2 .joint-twin-shell.cabin-expanded > .twin-band {
display: none;
}
.console-v2 .joint-twin-shell.cabin-expanded > .cabin-band {
grid-column: 1 / -1;
}
@media (max-height: 820px) {
.console-v2 .joint-twin-shell > .twin-band {
grid-template-rows: 54px minmax(0, 1fr);
}
.console-v2 .joint-twin-shell > .cabin-band.cabin-compact-board {
grid-template-rows: 54px 74px minmax(0, 1fr);
}
.console-v2 .joint-twin-shell .twin-heading,
.console-v2 .cabin-compact-board .cabin-heading {
padding: 7px 10px;
}
.console-v2 .joint-twin-shell .twin-heading h3,
.console-v2 .cabin-compact-board .cabin-heading h3 {
font-size: 15px;
}
.console-v2 .cabin-board-toolbar {
grid-template-rows: 36px 29px;
padding: 7px 8px 0;
}
.console-v2 .cabin-compact-board .domain-grid {
--cabin-card-gap: 8px;
margin-inline: 8px;
padding: 8px 0;
}
.console-v2 .cabin-compact-board .domain-panel {
padding: 10px 12px 46px;
}
.console-v2 .cabin-compact-board .device-power-entry {
height: 32px;
inset: auto 12px 8px;
padding: 0 8px;
}
.console-v2 .cabin-compact-board .device-power-copy small,
.console-v2 .cabin-compact-board .device-power-action {
font-size: 9px;
}
.console-v2 .cabin-compact-board .device-power-copy b {
font-size: 12px;
}
.console-v2 .cabin-compact-board .domain-capability-line {
min-height: 26px;
margin-top: 2px;
padding-bottom: 2px;
}
.console-v2 .cabin-compact-board .domain-summary-visual {
height: 30px;
margin-top: 2px;
padding: 2px 0;
}
.console-v2 .cabin-compact-board .domain-readouts {
margin-top: 0;
}
.console-v2 .cabin-compact-board .domain-readouts > div,
.console-v2 .cabin-compact-board .roof-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .ambient-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .window-panel .domain-readouts > div,
.console-v2 .cabin-compact-board .lighting-panel .domain-readouts > div {
min-height: 34px;
padding: 3px 0;
}
.console-v2 .cabin-compact-board .climate-display,
.console-v2 .cabin-compact-board .climate-panel .zone-temperature {
min-height: 58px;
}
.console-v2 .cabin-compact-board .climate-panel .zone-temperature {
padding-block: 6px;
}
.console-v2 .cabin-compact-board .domain-panel header strong,
.console-v2 .cabin-compact-board .joint-seat-panel .seat-identity strong {
font-size: 14px;
}
.console-v2 .cabin-compact-board .domain-panel header small,
.console-v2 .cabin-compact-board .joint-seat-panel .seat-identity span {
display: block;
}
.console-v2 .cabin-compact-board .domain-capability-line,
.console-v2 .cabin-compact-board .domain-readouts dt,
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states > span,
.console-v2 .cabin-compact-board .joint-seat-panel .motion-axis {
font-size: 10px;
}
.console-v2 .cabin-compact-board .domain-readouts dd,
.console-v2 .cabin-compact-board .joint-seat-panel .thermal-states b,
.console-v2 .cabin-compact-board .joint-seat-panel .motion-axis b {
font-size: 11px;
}
}
/* Final cascade for the interactive sync workspace. */
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
grid-template-columns: clamp(250px, 19vw, 292px) minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel {
grid-template-rows: 56px clamp(224px, 29dvh, 254px) minmax(0, 1fr);
gap: 10px;
padding-bottom: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
min-height: 56px;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 18px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-panel {
grid-template-columns: minmax(390px, 0.95fr) minmax(390px, 1.05fr);
grid-template-rows: auto minmax(76px, 1fr) auto;
column-gap: 14px;
row-gap: 7px;
padding: 13px 16px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-grid {
display: grid;
grid-column: 1;
grid-row: 2;
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form {
display: grid;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-status {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail {
grid-column: 1;
grid-row: 3;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
align-items: center;
gap: 10px;
padding: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-heading {
display: flex !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button {
min-height: 29px;
padding: 4px 10px;
cursor: pointer;
pointer-events: auto;
opacity: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-task-overview {
grid-column: 2;
grid-row: 1 / 4;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(0, 1.25fr) minmax(320px, 0.75fr);
grid-template-rows: minmax(0, 1fr);
gap: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band {
width: 100%;
max-width: 980px;
grid-column: 1;
grid-row: 1;
justify-self: center;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
grid-template-rows: none;
grid-auto-rows: minmax(76px, auto);
overflow: auto;
}
@media (max-width: 1366px) {
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
grid-template-columns: 250px minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-panel {
grid-template-columns: minmax(360px, 0.9fr) minmax(370px, 1.1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(0, 1fr) minmax(310px, 0.72fr);
}
}
@media (max-height: 760px) {
.console-v2.v2-passive-display.v2-interactive-sync .main-panel {
grid-template-rows: 52px 216px minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
min-height: 52px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-panel {
padding-block: 10px;
}
}
/* Symmetric three-column twin workspace --------------------------------- */
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail {
grid-template-columns: auto minmax(0, 1fr) auto;
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips {
min-width: 0;
grid-column: 2;
display: flex;
padding: 1px;
overflow-x: auto;
scroll-behavior: smooth;
overscroll-behavior-x: contain;
touch-action: pan-x;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button {
min-width: 94px;
flex: 0 0 auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-controls {
display: flex !important;
grid-column: 3;
grid-row: 1;
align-items: center;
gap: 5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-pager {
display: grid;
grid-template-columns: repeat(2, 26px);
padding: 2px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-page {
width: 26px;
height: 26px;
display: grid;
place-items: center;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-gallery-toggle {
min-height: 30px;
display: inline-flex;
align-items: center;
gap: 5px;
padding: 4px 8px;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(198px, 0.52fr) minmax(420px, 1.25fr) minmax(198px, 0.52fr);
grid-template-rows: minmax(0, 1fr);
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="devices"] {
grid-template-columns: minmax(210px, 0.58fr) minmax(460px, 1.42fr) 42px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="extensions"] {
grid-template-columns: 42px minmax(460px, 1.42fr) minmax(210px, 0.58fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: 42px minmax(520px, 1fr) 42px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-right-rail,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-unified-right-rail {
display: contents !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band {
width: 100%;
max-width: none;
grid-column: 2;
grid-row: 1;
justify-self: stretch;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel {
grid-column: 1;
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel {
grid-column: 3;
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-panel {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header {
grid-template-columns: minmax(0, 1fr) auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header > span {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header > button,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading > button {
width: auto;
min-width: 52px;
height: 28px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 0 7px;
font-size: 8px;
font-weight: 800;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-grid {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: none;
grid-auto-rows: minmax(82px, auto);
gap: 6px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading {
grid-template-columns: minmax(0, 1fr) auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading > span {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-panel.is-collapsed {
display: grid !important;
grid-template-rows: minmax(0, 1fr) !important;
place-items: stretch;
padding: 0;
overflow: hidden;
background: linear-gradient(180deg, rgba(229, 245, 242, 0.96), rgba(203, 233, 228, 0.96));
border: 1px solid rgba(15, 116, 109, 0.15);
border-radius: 14px;
box-shadow: none;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header {
width: 100%;
height: 100%;
display: grid;
padding: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > div,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > span,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > .v2-device-sync-grid {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button {
width: 100%;
min-width: 0;
height: 100%;
min-height: 120px;
flex-direction: column;
gap: 8px;
padding: 10px 0;
color: #0b756f;
background: transparent;
border-radius: 13px;
writing-mode: vertical-rl;
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button:hover {
color: #fff;
background: #0b807a;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button svg,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button svg {
width: 16px;
height: 16px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-mount {
height: 100%;
display: grid;
grid-template-rows: minmax(0, 1fr);
padding: 0;
overflow: hidden;
background: linear-gradient(180deg, #143b3c, #0e2d2f);
border: 0;
border-radius: 13px;
box-shadow: none;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading {
height: 100%;
display: grid;
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > div,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > span,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-gateway,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-device-list,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-linkage {
display: none;
}
.console-v2 .v2-panel-visibility-controls button {
min-height: 30px;
}
.console-v2 .v2-panel-visibility-controls button b {
padding-left: 5px;
color: #74918e;
border-left: 1px solid rgba(46, 105, 101, 0.12);
font-size: 7px;
}
.console-v2 .v2-panel-visibility-controls button:not(.active) b {
color: #a07942;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-panel-visibility-controls {
display: none !important;
}
/* Boot-time fallbacks; WebGL projection replaces these values every frame. */
.console-v2 .v2-twin-hotspots [data-twin-device="windows"] { top: 50%; left: 42%; --v2-hotspot-label-x: -115px; --v2-hotspot-label-y: 0px; --v2-hotspot-line-length: 115px; --v2-hotspot-line-angle: 180deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="shade"] { top: 25%; left: 53%; --v2-hotspot-label-x: 0px; --v2-hotspot-label-y: -65px; --v2-hotspot-line-length: 65px; --v2-hotspot-line-angle: -90deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="driver"] { top: 45%; left: 62%; --v2-hotspot-label-x: 110px; --v2-hotspot-label-y: -70px; --v2-hotspot-line-length: 130px; --v2-hotspot-line-angle: -32deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="passenger"] { top: 57%; left: 52%; --v2-hotspot-label-x: -105px; --v2-hotspot-label-y: 55px; --v2-hotspot-line-length: 119px; --v2-hotspot-line-angle: 152deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="reading"] { top: 36%; left: 55%; --v2-hotspot-label-x: -120px; --v2-hotspot-label-y: -70px; --v2-hotspot-line-length: 139px; --v2-hotspot-line-angle: -150deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="ambient"] { top: 62%; left: 66%; --v2-hotspot-label-x: -30px; --v2-hotspot-label-y: 85px; --v2-hotspot-line-length: 90px; --v2-hotspot-line-angle: 109deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="headlight"] { top: 66%; left: 86%; --v2-hotspot-label-x: 15px; --v2-hotspot-label-y: 70px; --v2-hotspot-line-length: 72px; --v2-hotspot-line-angle: 78deg; }
.console-v2 .v2-twin-hotspots [data-twin-device="climate"] { top: 48%; left: 73%; --v2-hotspot-label-x: 94px; --v2-hotspot-label-y: 5px; --v2-hotspot-line-length: 94px; --v2-hotspot-line-angle: 3deg; }
@media (max-width: 1200px) {
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page {
grid-template-columns: minmax(180px, 0.48fr) minmax(390px, 1.3fr) minmax(180px, 0.48fr);
}
.console-v2 .v2-panel-visibility-controls button b {
display: none;
}
}
/* Cohesive light cockpit visual refresh --------------------------------- */
.console-v2.v2-passive-display.v2-interactive-sync {
--v2-canvas: var(--background);
--v2-line: var(--border);
--v2-shadow: 0 16px 40px oklch(0.145 0.008 326 / 9%);
background:
radial-gradient(circle at 76% -8%, color-mix(in oklch, var(--primary) 14%, transparent), transparent 34%),
linear-gradient(145deg, var(--background) 0%, var(--secondary) 56%, var(--muted) 100%);
}
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
background:
radial-gradient(circle at 73% -10%, color-mix(in oklch, var(--primary) 12%, transparent), transparent 34%),
linear-gradient(145deg, var(--background) 0%, var(--secondary) 58%, var(--muted) 100%);
}
.console-v2.v2-passive-display.v2-interactive-sync .command-panel.v2-sidebar {
background:
radial-gradient(circle at 12% 2%, color-mix(in oklch, var(--card) 92%, transparent), transparent 24%),
linear-gradient(158deg, var(--sidebar) 0%, var(--sidebar-accent) 58%, color-mix(in oklch, var(--sidebar-primary) 9%, var(--sidebar)) 132%);
border-right-color: var(--sidebar-border);
box-shadow: inset -1px 0 0 color-mix(in oklch, var(--card) 60%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
background: color-mix(in oklch, var(--card) 90%, transparent);
border-bottom: 1px solid var(--border);
box-shadow: 0 5px 20px oklch(0.145 0.008 326 / 5%);
backdrop-filter: blur(14px);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-panel {
background:
radial-gradient(circle at 88% 12%, color-mix(in oklch, var(--primary) 14%, transparent), transparent 28%),
linear-gradient(145deg, color-mix(in oklch, var(--card) 98%, transparent), color-mix(in oklch, var(--secondary) 96%, transparent));
border: 1px solid var(--border);
border-radius: 19px;
box-shadow: 0 12px 34px oklch(0.145 0.008 326 / 8%);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-task-overview {
background: linear-gradient(145deg, color-mix(in oklch, var(--card) 96%, transparent), color-mix(in oklch, var(--primary) 8%, var(--muted)));
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log {
background: color-mix(in oklch, var(--card) 80%, transparent);
border-color: var(--border);
box-shadow: 0 12px 28px oklch(0.145 0.008 326 / 6%);
backdrop-filter: blur(10px);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button {
color: var(--secondary-foreground);
background: color-mix(in oklch, var(--secondary) 94%, transparent);
border: 1px solid var(--border);
box-shadow: inset 0 1px 0 color-mix(in oklch, var(--card) 84%, transparent);
transition: color 160ms ease, background 160ms ease, border-color 160ms ease, transform 160ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button:focus-visible {
color: var(--primary);
background: color-mix(in oklch, var(--primary) 9%, var(--background));
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
transform: translateY(-1px);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button.active,
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button[aria-pressed="true"] {
color: var(--primary-foreground);
background: var(--primary);
border-color: transparent;
box-shadow: 0 7px 16px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
gap: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-mount {
border: 1px solid var(--border);
border-radius: 18px;
box-shadow:
0 14px 32px oklch(0.145 0.008 326 / 8%),
inset 0 1px 0 color-mix(in oklch, var(--card) 78%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band {
overflow: hidden;
background: linear-gradient(180deg, var(--card), var(--secondary));
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading {
background:
linear-gradient(90deg, color-mix(in oklch, var(--secondary) 98%, transparent), color-mix(in oklch, var(--card) 98%, transparent));
border-bottom-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-stage {
background:
radial-gradient(ellipse at 53% 57%, color-mix(in oklch, var(--primary) 12%, transparent), transparent 41%),
linear-gradient(165deg, var(--background) 0%, var(--muted) 100%);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel {
background: linear-gradient(180deg, color-mix(in oklch, var(--card) 98%, transparent), color-mix(in oklch, var(--secondary) 97%, transparent));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading {
min-height: 39px;
padding: 2px 2px 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header > button,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading > button {
color: var(--muted-foreground);
background: color-mix(in oklch, var(--card) 78%, transparent);
border: 1px solid var(--border);
box-shadow: 0 3px 9px oklch(0.145 0.008 326 / 6%);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading > button:hover {
color: var(--primary);
background: color-mix(in oklch, var(--primary) 9%, var(--background));
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device {
background: color-mix(in oklch, var(--card) 76%, transparent);
border: 1px solid var(--border);
box-shadow: 0 4px 12px oklch(0.145 0.008 326 / 5%);
transition: background 160ms ease, border-color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device.active {
background: linear-gradient(145deg, color-mix(in oklch, var(--primary) 8%, var(--background)), var(--card));
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
box-shadow: 0 8px 19px color-mix(in oklch, var(--primary) 9%, transparent);
transform: translateY(-1px);
}
/* The extension area now shares the same light surface hierarchy. */
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-mount {
background:
radial-gradient(circle at 84% 8%, color-mix(in oklch, var(--primary) 13%, transparent), transparent 30%),
linear-gradient(180deg, color-mix(in oklch, var(--card) 99%, transparent), color-mix(in oklch, var(--secondary) 98%, transparent));
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-heading small {
color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-heading h3 {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway {
background: color-mix(in oklch, var(--card) 74%, transparent);
border: 1px solid var(--border);
box-shadow: 0 5px 14px oklch(0.145 0.008 326 / 5%);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway > span {
color: var(--primary);
background: linear-gradient(145deg, color-mix(in oklch, var(--primary) 8%, var(--background)), var(--accent));
box-shadow: inset 0 0 0 1px color-mix(in oklch, var(--primary) 8%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway strong {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway small {
color: var(--muted-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway > b {
color: var(--primary);
background: var(--accent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device {
background: color-mix(in oklch, var(--card) 78%, transparent);
border: 1px solid var(--border);
box-shadow: 0 5px 14px oklch(0.145 0.008 326 / 5%);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header > span {
color: var(--primary);
background: var(--accent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header strong {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header small,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header b {
color: var(--muted-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device > div span {
color: var(--accent-foreground);
background: var(--accent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty {
min-height: 92px;
color: var(--muted-foreground);
background: color-mix(in oklch, var(--card) 52%, transparent);
border: 1px dashed var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty > svg {
color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty strong {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty span {
color: var(--muted-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage {
border-top-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage > svg {
color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage small {
color: var(--muted-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage strong {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage > span {
color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-mount {
background: linear-gradient(180deg, color-mix(in oklch, var(--secondary) 98%, transparent), color-mix(in oklch, var(--accent) 98%, transparent));
border: 0;
border-radius: 13px;
box-shadow: none;
}
@media (prefers-reduced-motion: reduce) {
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button,
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device {
transition: none;
}
}
/* Actionable vehicle device status cards -------------------------------- */
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-grid {
display: flex;
flex-direction: column;
align-content: start;
padding-right: 3px;
overflow-x: hidden;
overflow-y: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device {
flex: 0 0 auto;
min-height: 0;
display: block;
padding: 8px;
text-align: left;
cursor: default;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device.active {
transform: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device[data-control-open="true"] {
background: linear-gradient(155deg, color-mix(in oklch, var(--primary) 8%, var(--background)), var(--card));
border-color: color-mix(in oklch, var(--primary) 26%, var(--border));
box-shadow: 0 9px 22px color-mix(in oklch, var(--primary) 10%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device[data-has-draft="true"] {
border-color: color-mix(in oklch, var(--chart-1) 34%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus {
min-width: 0;
display: grid;
grid-template-columns: 28px minmax(0, 1fr) 6px;
align-items: center;
gap: 7px;
padding: 0;
color: inherit;
background: transparent;
border: 0;
text-align: left;
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus > span:first-child {
width: 28px;
height: 28px;
display: grid;
place-items: center;
color: var(--primary);
background: var(--accent);
border-radius: 9px;
transition: color 150ms ease, background 150ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus:hover > span:first-child,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus:focus-visible > span:first-child {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus svg {
width: 14px;
height: 14px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus > span:nth-child(2) {
min-width: 0;
display: grid;
gap: 2px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus strong {
color: var(--foreground);
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus small {
overflow: hidden;
color: var(--muted-foreground);
font-size: 7px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device[data-has-draft="true"] .v2-device-card-focus small {
color: color-mix(in oklch, var(--chart-1) 70%, var(--foreground));
font-weight: 800;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus .v2-device-signal {
width: 6px;
height: 6px;
background: var(--muted-foreground);
border-radius: 50%;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device[data-ready="true"] .v2-device-card-focus .v2-device-signal {
background: var(--primary);
box-shadow: 0 0 0 3px color-mix(in oklch, var(--primary) 10%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle {
min-width: 43px;
height: 25px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 3px;
padding: 0 6px;
color: var(--muted-foreground);
background: var(--secondary);
border: 1px solid var(--border);
border-radius: 8px;
font-size: 7px;
font-weight: 850;
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle[aria-expanded="true"] {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle svg {
width: 11px;
height: 11px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 4px;
margin: 7px 0 0;
padding: 7px 0 0;
border-top: 1px solid var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl div {
min-width: 0;
display: grid;
gap: 2px;
padding: 5px 6px;
background: color-mix(in oklch, var(--muted) 72%, transparent);
border-radius: 7px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl div:only-child {
grid-column: 1 / -1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dt,
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dd {
min-width: 0;
overflow: hidden;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dt {
color: var(--muted-foreground);
font-size: 6.5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dd {
color: var(--foreground);
font-size: 8px;
font-weight: 850;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls {
display: grid;
gap: 7px;
margin-top: 8px;
padding: 8px;
background: linear-gradient(155deg, color-mix(in oklch, var(--primary) 7%, var(--muted)), color-mix(in oklch, var(--secondary) 96%, transparent));
border: 1px solid var(--border);
border-radius: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls[hidden] {
display: none !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls-intro {
display: grid;
gap: 2px;
padding-bottom: 6px;
border-bottom: 1px solid var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls-intro span {
color: var(--primary);
font-size: 8px;
font-weight: 900;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls-intro small {
color: var(--muted-foreground);
font-size: 6.5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
align-items: center;
gap: 4px 7px;
color: var(--foreground);
font-size: 7px;
font-weight: 800;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row output {
color: var(--primary);
font: 850 7px/1 "SFMono-Regular", Consolas, monospace;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row input[type="range"] {
width: 100%;
height: 15px;
grid-column: 1 / -1;
margin: 0;
accent-color: var(--primary);
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row > small {
grid-column: 1 / -1;
color: var(--muted-foreground);
font-size: 6px;
font-weight: 650;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-select select {
width: 82px;
height: 25px;
padding: 0 5px;
color: var(--foreground);
background: color-mix(in oklch, var(--background) 80%, transparent);
border: 1px solid var(--input);
border-radius: 7px;
outline: none;
font-size: 7px;
font-weight: 800;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-select select:focus {
border-color: var(--ring);
box-shadow: 0 0 0 2px color-mix(in oklch, var(--ring) 14%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-apply {
width: 100%;
min-height: 29px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 5px;
margin-top: 1px;
color: var(--primary-foreground);
background: var(--primary);
border: 0;
border-radius: 8px;
box-shadow: 0 6px 14px color-mix(in oklch, var(--primary) 18%, transparent);
font-size: 8px;
font-weight: 900;
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-apply:hover:not(:disabled) {
background: color-mix(in oklch, var(--primary) 86%, var(--foreground));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-apply:disabled {
color: var(--muted-foreground);
background: var(--muted);
box-shadow: none;
cursor: wait;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-apply svg {
width: 12px;
height: 12px;
}
/* Readability and final layout alignment -------------------------------- */
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .command-composer {
height: 88px;
min-height: 88px;
position: relative;
overflow: hidden;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form #utterance {
height: 88px;
min-height: 88px;
padding: 11px 72px 36px 14px;
font-size: 13px;
line-height: 1.5;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .primary-action {
width: 36px;
height: 36px;
min-height: 36px;
top: 50%;
right: 10px;
bottom: auto;
transform: translateY(-50%);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .primary-action:hover:not(:disabled),
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .primary-action:focus-visible {
transform: translateY(-50%) scale(1.04);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .context-reset {
top: 7px;
right: 52px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-request-form .composer-hint {
right: 56px;
bottom: 8px;
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-reasoning-trigger {
min-height: 28px;
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-reasoning-trigger > strong {
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-natural-panel {
grid-template-rows: auto minmax(88px, 1fr) auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log header small,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log time {
font-size: 8.5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log select {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log li strong {
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-log li small {
font-size: 9px;
line-height: 1.4;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading .section-kicker,
.console-v2.v2-passive-display.v2-interactive-sync .twin-orientation,
.console-v2.v2-passive-display.v2-interactive-sync .twin-seat-switch button {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="devices extensions"] {
grid-template-columns: minmax(234px, 0.56fr) minmax(460px, 1.5fr) minmax(234px, 0.56fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="devices"] {
grid-template-columns: minmax(224px, 0.58fr) minmax(460px, 1.42fr) 48px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="extensions"] {
grid-template-columns: 48px minmax(460px, 1.42fr) minmax(224px, 0.58fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: 48px minmax(520px, 1fr) 48px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device {
padding: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-header {
gap: 7px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus {
grid-template-columns: 30px minmax(0, 1fr) 6px;
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus > span:first-child {
width: 30px;
height: 30px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus strong {
font-size: 11px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus small {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle {
min-width: 48px;
height: 29px;
padding: 0 7px;
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-adjust-toggle svg {
width: 12px;
height: 12px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl {
gap: 6px;
margin-top: 9px;
padding-top: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dl div {
gap: 3px;
min-height: 38px;
padding: 7px 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dt {
font-size: 9px;
line-height: 1.2;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device dd {
font-size: 10px;
line-height: 1.25;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls {
gap: 9px;
margin-top: 10px;
padding: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls-intro span {
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-controls-intro small,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row output {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-row > small {
font-size: 8.5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-select select {
width: 92px;
height: 30px;
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-control-apply {
min-height: 34px;
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-heading small,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway > b,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header small,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header b,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device > div span,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage small,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage > span {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway strong,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header strong {
font-size: 11px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway small,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty span {
font-size: 9px;
line-height: 1.4;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-empty strong,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-linkage strong {
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-panel.is-collapsed {
padding: 0;
overflow: hidden;
background: rgba(250, 253, 252, 0.96);
border: 1px solid rgba(17, 112, 105, 0.14);
border-radius: 16px;
box-shadow: 0 8px 20px rgba(35, 78, 75, 0.06);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed {
border-radius: 16px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-mount,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading {
width: 100%;
height: 100%;
min-height: 0;
margin: 0;
padding: 0;
overflow: hidden;
background: transparent;
border: 0;
border-radius: 15px;
box-shadow: none;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: minmax(0, 1fr);
place-items: stretch;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
margin: 0;
padding: 12px 0;
color: #216f6a;
background: transparent;
border: 0;
border-radius: 15px;
writing-mode: horizontal-tb;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button {
grid-column: 1;
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button span,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button span {
font-size: 10px;
font-weight: 850;
letter-spacing: 0.16em;
writing-mode: vertical-rl;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button:hover {
color: #0b756f;
background: #e6f5f2;
}
@media (max-width: 1120px) {
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="devices extensions"] {
grid-template-columns: minmax(210px, 0.58fr) minmax(420px, 1.35fr) minmax(210px, 0.58fr);
}
}
/* Expanded function-mode grid and reusable natural-language mode creator. */
.console-v2 .v2-mode-rail > .mode-rail-bar {
grid-template-columns: auto minmax(0, 1fr) auto;
}
.console-v2 .v2-mode-rail .mode-rail-actions {
min-width: 0;
display: flex;
align-items: center;
gap: 8px;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button {
min-height: 38px;
display: inline-flex !important;
align-items: center;
justify-content: center;
gap: 7px;
padding: 7px 11px;
color: var(--primary);
background: var(--card);
border: 1px solid color-mix(in oklch, var(--primary) 24%, var(--border));
border-radius: var(--radius);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button:hover,
.console-v2 .v2-mode-rail .mode-rail-actions > button:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--ring);
outline: none;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button svg {
width: 16px;
height: 16px;
flex: 0 0 auto;
}
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-gallery-toggle strong {
min-width: 20px;
min-height: 20px;
display: inline-grid;
place-items: center;
padding: 0 5px;
color: var(--primary-foreground);
background: var(--primary);
border-radius: 999px;
}
.console-v2 .v2-mode-rail > .mode-rail-content {
display: block;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
gap: 8px;
padding: 0;
overflow: visible;
scroll-behavior: auto;
overscroll-behavior: auto;
touch-action: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips > button {
width: 100%;
min-width: 0;
min-height: 38px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-group-divider {
width: auto;
height: 1px;
grid-column: 1 / -1;
margin: 1px 0;
}
/* AI assistant light-blue semantic layer -------------------------------- */
.console-v2 {
--v2-accent: var(--primary);
--v2-accent-strong: color-mix(in oklch, var(--primary) 78%, var(--heading-foreground));
--v2-accent-soft: var(--status-info-soft);
--v2-ink: var(--body-foreground);
--v2-muted: var(--subtle-foreground);
--v2-shadow: 0 16px 42px color-mix(in oklch, var(--foreground) 10%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync,
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
color: var(--body-foreground);
background:
radial-gradient(circle at 76% -10%, color-mix(in oklch, var(--primary) 13%, transparent), transparent 32%),
linear-gradient(145deg, var(--background), var(--secondary));
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel {
color: var(--body-foreground);
background:
radial-gradient(circle at 42% -12%, color-mix(in oklch, var(--card) 92%, transparent), transparent 37%),
linear-gradient(150deg, var(--background), color-mix(in oklch, var(--secondary) 78%, var(--background)));
}
.console-v2.v2-passive-display.v2-interactive-sync .command-panel.v2-sidebar {
color: var(--body-foreground);
background:
radial-gradient(circle at 12% 2%, color-mix(in oklch, var(--card) 88%, transparent), transparent 24%),
linear-gradient(158deg, var(--sidebar), var(--sidebar-accent));
border-right-color: var(--sidebar-border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher,
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 88%, var(--accent));
border-color: var(--border);
box-shadow: 0 6px 20px color-mix(in oklch, var(--foreground) 7%, transparent);
}
.console-v2 .v2-unified-title,
.console-v2 .v2-sidebar-title,
.console-v2 .v2-operation-heading h2,
.console-v2 .v2-output-heading h2,
.console-v2 .joint-twin-shell .twin-heading h3,
.console-v2 .v2-device-sync-board > header h3,
.console-v2 .v2-extension-sync-heading h3,
.console-v2 .workspace-panel-title h3,
.console-v2 .config-panel-heading h3 {
color: var(--heading-foreground);
}
.console-v2 .v2-unified-subtitle,
.console-v2 .v2-operation-heading p,
.console-v2 .v2-output-heading p,
.console-v2 .provider-note,
.console-v2 .v2-task-timeline,
.console-v2 .v2-device-sync-board > header small,
.console-v2 .v2-extension-sync-heading small {
color: var(--subtle-foreground);
}
.console-v2 .v2-module-tab {
color: var(--subtle-foreground);
background: transparent;
border-color: transparent;
}
.console-v2 .v2-module-tab:hover,
.console-v2 .v2-module-tab:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--border);
}
.console-v2 .v2-module-tab.active,
.console-v2 .v2-module-tab[aria-selected="true"] {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
box-shadow: 0 5px 14px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 88%, var(--secondary));
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--ring);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.active,
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button[aria-pressed="true"],
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.running {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.succeeded {
color: var(--status-success-foreground);
background: var(--status-success-soft);
border-color: color-mix(in oklch, var(--status-success) 38%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.failed {
color: var(--status-error-foreground);
background: var(--status-error-soft);
border-color: color-mix(in oklch, var(--status-error) 38%, var(--border));
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-icon {
color: var(--primary);
background: var(--status-info-soft);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-summary,
.console-v2 .main-panel > .v2-mode-rail .mode-chip-run,
.console-v2 .main-panel > .v2-mode-rail .mode-group-label {
color: var(--subtle-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-mount {
color: var(--body-foreground);
background:
radial-gradient(circle at 82% 0%, color-mix(in oklch, var(--primary) 8%, transparent), transparent 18rem),
var(--card);
border-color: var(--border);
box-shadow: 0 14px 32px color-mix(in oklch, var(--foreground) 8%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading {
background: linear-gradient(90deg, var(--secondary), color-mix(in oklch, var(--card) 92%, var(--accent)));
border-bottom-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-stage {
background:
radial-gradient(ellipse at 53% 57%, color-mix(in oklch, var(--primary) 13%, transparent), transparent 41%),
linear-gradient(165deg, var(--card), var(--secondary));
}
/* Body-level portal: the horizontal mode rail clips its own overflow. */
.mode-chip-action-popover {
width: min(430px, calc(100vw - 24px));
max-height: min(68vh, 520px);
position: fixed;
z-index: 1900;
display: grid;
grid-template-rows: auto minmax(0, 1fr);
gap: 9px;
padding: 11px;
overflow: hidden;
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 96%, var(--primary));
border: 1px solid color-mix(in oklch, var(--primary) 24%, var(--border));
border-radius: 14px;
box-shadow:
0 16px 42px color-mix(in oklch, var(--foreground) 18%, transparent),
0 0 0 1px color-mix(in oklch, var(--card) 65%, transparent) inset;
backdrop-filter: blur(16px);
transform-origin: top center;
animation: mode-action-popover-in 140ms ease-out;
}
.mode-chip-action-popover[hidden] {
display: none !important;
}
.mode-chip-action-popover.is-above {
transform-origin: bottom center;
}
.mode-chip-action-popover > header,
.mode-chip-action-popover > header > span {
min-width: 0;
display: flex;
}
.mode-chip-action-popover > header {
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 0 2px;
}
.mode-chip-action-popover > header > span {
align-items: flex-start;
flex-direction: column;
gap: 1px;
}
.mode-chip-action-popover > header small {
color: var(--muted-foreground);
font-size: 8px;
font-weight: 760;
letter-spacing: 0.08em;
}
.mode-chip-action-popover > header strong {
max-width: 330px;
overflow: hidden;
color: var(--heading-foreground);
font-size: 13px;
text-overflow: ellipsis;
white-space: nowrap;
}
.mode-chip-action-popover > header b {
min-width: 38px;
min-height: 22px;
display: inline-grid;
place-items: center;
padding: 3px 7px;
color: var(--primary);
background: color-mix(in oklch, var(--primary) 10%, var(--card));
border-radius: 999px;
font-size: 9px;
}
.mode-chip-action-popover ol {
min-height: 0;
display: grid;
gap: 5px;
margin: 0;
padding: 0 3px 0 0;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
list-style: none;
}
.mode-chip-action-popover li {
min-width: 0;
display: grid;
grid-template-columns: 24px minmax(0, 1fr);
align-items: start;
gap: 8px;
padding: 7px 8px;
color: var(--body-foreground);
background: color-mix(in oklch, var(--secondary) 66%, var(--card));
border: 1px solid var(--border);
border-radius: 10px;
}
.mode-chip-action-step {
width: 22px;
height: 22px;
display: inline-grid;
place-items: center;
color: var(--primary);
background: color-mix(in oklch, var(--primary) 9%, var(--card));
border-radius: 7px;
font-size: 8px;
font-weight: 850;
}
.mode-chip-action-copy {
min-width: 0;
display: grid;
gap: 4px;
}
.mode-chip-action-copy > strong {
overflow: hidden;
color: var(--heading-foreground);
font-size: 10px;
line-height: 1.3;
text-overflow: ellipsis;
white-space: nowrap;
}
.mode-chip-action-copy > small {
min-width: 0;
display: flex;
flex-wrap: wrap;
gap: 3px 10px;
color: var(--muted-foreground);
font-size: 8px;
line-height: 1.45;
}
.mode-chip-action-copy > small > span {
min-width: 0;
overflow-wrap: anywhere;
}
.mode-chip-action-copy > small b {
margin-right: 3px;
color: var(--primary);
font-size: 7px;
font-weight: 850;
}
.mode-chip-action-empty {
display: block !important;
padding: 13px !important;
color: var(--muted-foreground) !important;
font-size: 9px;
text-align: center;
}
@keyframes mode-action-popover-in {
from {
opacity: 0;
transform: translateY(-3px) scale(0.985);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@media (max-width: 560px) {
.mode-chip-action-popover {
max-height: min(58vh, 430px);
padding: 9px;
}
.mode-chip-action-copy > small {
display: grid;
gap: 2px;
}
}
@media (prefers-reduced-motion: reduce) {
.mode-chip-action-popover {
animation: none;
}
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 82%, var(--secondary));
border-color: var(--border);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
}
/* Unified top-right panel controls ---------------------------------------
All four workspace panels share one stable icon dock. */
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
position: relative;
z-index: 150;
grid-template-columns: minmax(0, 1fr) auto auto auto;
gap: 10px;
}
.console-v2 .v2-panel-control-dock {
min-width: 0;
display: inline-flex;
align-items: center;
justify-content: flex-end;
gap: 6px;
padding: 3px;
background: color-mix(in oklch, var(--card) 74%, var(--secondary));
border: 1px solid color-mix(in oklch, var(--primary) 12%, var(--border));
border-radius: 14px;
box-shadow: inset 0 1px 0 color-mix(in oklch, var(--card) 82%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button,
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > #v2SidebarToggle.v2-panel-control-button {
width: 38px !important;
height: 38px !important;
min-width: 38px !important;
min-height: 38px !important;
position: relative !important;
inset: auto !important;
display: inline-grid !important;
grid-column: auto !important;
grid-row: auto !important;
place-items: center;
flex-direction: row !important;
gap: 0 !important;
margin: 0 !important;
padding: 0 !important;
color: var(--muted-foreground);
background: color-mix(in oklch, var(--card) 92%, var(--secondary));
border: 1px solid transparent;
border-radius: 11px !important;
box-shadow: none;
opacity: 1 !important;
visibility: visible !important;
pointer-events: auto !important;
transform: none !important;
cursor: pointer;
transition: color 150ms ease, background 150ms ease, border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease !important;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button:focus-visible {
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
box-shadow: 0 5px 14px color-mix(in oklch, var(--primary) 14%, transparent);
outline: 3px solid color-mix(in oklch, var(--ring) 14%, transparent);
outline-offset: 1px;
transform: translateY(-1px) !important;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button.active,
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button[aria-pressed="true"] {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
box-shadow: 0 7px 17px color-mix(in oklch, var(--primary) 24%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button svg {
width: 18px;
height: 18px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button > span {
width: 1px !important;
height: 1px !important;
position: absolute !important;
overflow: hidden !important;
clip: rect(0 0 0 0) !important;
clip-path: inset(50%) !important;
white-space: nowrap !important;
}
/* A collapsed left panel and empty right rail must consume no canvas width. */
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .workspace {
grid-template-columns: 0 minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .command-panel.v2-sidebar {
width: 0;
min-width: 0;
padding: 0;
overflow: hidden;
border: 0;
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] {
grid-template-columns: minmax(360px, 1fr) clamp(320px, 27vw, 402px);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(0, 1fr);
gap: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-right-rail,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] .v2-unified-right-rail {
grid-template-columns: minmax(0, 1fr);
gap: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-right-rail[hidden],
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-right-rail.is-collapsed,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-unified-right-rail {
display: none !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock {
display: none !important;
}
@media (max-width: 1180px) {
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-remote-control-state {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] {
grid-template-columns: minmax(300px, 1fr) clamp(288px, 35vw, 342px);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(0, 1fr);
}
}
@media (max-width: 760px) {
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher {
grid-template-columns: minmax(0, 1fr) auto;
gap: 6px;
padding-inline: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-live {
display: none;
}
.console-v2 .v2-panel-control-dock {
gap: 3px;
padding: 2px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button,
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > #v2SidebarToggle.v2-panel-control-button {
width: 36px !important;
height: 36px !important;
min-width: 36px !important;
min-height: 36px !important;
}
}
@media (max-width: 460px) {
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-brand h1 {
max-width: 108px;
overflow: hidden;
font-size: 12px;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-brand-mark {
width: 30px;
height: 30px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > .v2-panel-control-button,
.console-v2.v2-passive-display.v2-interactive-sync #v2PanelControlDock > #v2SidebarToggle.v2-panel-control-button {
width: 32px !important;
height: 32px !important;
min-width: 32px !important;
min-height: 32px !important;
}
}
.console-v2 .workspace-panel-state.succeeded,
.console-v2 .execution-summary.succeeded,
.console-v2 .v2-sync-log li[data-log-status="success"] > span {
color: var(--status-success-foreground);
background: var(--status-success-soft);
border-color: color-mix(in oklch, var(--status-success) 34%, var(--border));
}
.console-v2 .workspace-panel-state.partial,
.console-v2 .execution-summary.partial,
.console-v2 .validation-item:not(.error) {
color: var(--status-warning-foreground);
background: var(--status-warning-soft);
border-color: color-mix(in oklch, var(--status-warning) 34%, var(--border));
}
.console-v2 .workspace-panel-state.failed,
.console-v2 .execution-summary.failed,
.console-v2 .validation-item.error,
.console-v2 .v2-sync-log li[data-log-status="error"] > span {
color: var(--status-error-foreground);
background: var(--status-error-soft);
border-color: color-mix(in oklch, var(--status-error) 34%, var(--border));
}
/* Compact function-mode strip ------------------------------------------- */
.visually-hidden {
width: 1px !important;
height: 1px !important;
position: absolute !important;
margin: -1px !important;
padding: 0 !important;
overflow: hidden !important;
clip: rect(0 0 0 0) !important;
clip-path: inset(50%) !important;
white-space: nowrap !important;
border: 0 !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail {
min-width: 0;
min-height: 54px;
position: relative;
z-index: 16;
display: block;
margin: 0;
padding: 0;
}
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar {
width: 100%;
min-height: 54px;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 10px;
padding: 5px 7px;
overflow: hidden;
color: var(--card-foreground);
background:
linear-gradient(100deg, color-mix(in oklch, var(--primary) 5%, var(--card)), var(--card) 34%),
var(--card);
border: 1px solid var(--border);
border-radius: 14px;
box-shadow: 0 8px 22px color-mix(in oklch, var(--foreground) 6%, transparent);
}
.console-v2 .v2-mode-rail .mode-rail-identity {
min-width: 122px;
display: flex;
align-items: center;
gap: 8px;
padding: 0 5px 0 2px;
}
.console-v2 .v2-mode-rail .mode-rail-mark {
width: 32px;
height: 32px;
flex: 0 0 32px;
display: grid;
place-items: center;
color: var(--primary);
background: color-mix(in oklch, var(--primary) 10%, var(--card));
border: 1px solid color-mix(in oklch, var(--primary) 15%, var(--border));
border-radius: 10px;
}
.console-v2 .v2-mode-rail .mode-rail-mark svg {
width: 15px;
height: 15px;
}
.console-v2 .v2-mode-rail .mode-rail-identity > span:last-child {
min-width: 0;
display: grid;
gap: 2px;
}
.console-v2 .v2-mode-rail .mode-rail-title {
color: var(--foreground);
font-size: 11px;
font-weight: 850;
line-height: 1.05;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-identity small {
color: var(--muted-foreground);
font-size: 8px;
font-weight: 650;
line-height: 1.1;
white-space: nowrap;
}
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar > .mode-rail-content {
width: auto;
min-width: 0;
max-height: none;
position: static;
inset: auto;
display: block;
margin: 0;
padding: 0;
overflow: hidden;
color: inherit;
background: transparent;
border: 0;
border-radius: 0;
box-shadow: none;
}
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar > .mode-rail-content[hidden] {
display: none !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips {
width: 100%;
min-width: 0;
display: flex;
align-items: center;
gap: 6px;
padding: 1px 2px;
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: none;
scroll-behavior: smooth;
overscroll-behavior-x: contain;
touch-action: pan-x;
cursor: grab;
outline: none;
transition: box-shadow 150ms ease;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips::-webkit-scrollbar {
display: none;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips:focus-visible {
box-shadow: inset 0 0 0 2px color-mix(in oklch, var(--primary) 34%, transparent);
border-radius: 12px;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips.is-overflowing.can-scroll-right {
box-shadow: inset -14px 0 12px -14px color-mix(in oklch, var(--foreground) 48%, transparent);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips.is-overflowing.can-scroll-left {
box-shadow: inset 14px 0 12px -14px color-mix(in oklch, var(--foreground) 48%, transparent);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips.is-overflowing.can-scroll-left.can-scroll-right {
box-shadow:
inset 14px 0 12px -14px color-mix(in oklch, var(--foreground) 48%, transparent),
inset -14px 0 12px -14px color-mix(in oklch, var(--foreground) 48%, transparent);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips.is-dragging {
cursor: grabbing;
scroll-behavior: auto;
user-select: none;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips.is-dragging > * {
pointer-events: none;
}
.console-v2 .main-panel > .v2-mode-rail .mode-group-label {
flex: 0 0 auto;
padding: 0 1px 0 3px;
color: var(--muted-foreground);
font-size: 8px;
font-weight: 800;
letter-spacing: 0.04em;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-group-divider {
width: 1px;
height: 26px;
flex: 0 0 1px;
align-self: center;
margin: 0 2px;
background: var(--border);
border-radius: 999px;
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button {
width: auto;
min-width: 116px;
max-width: 154px;
min-height: 40px;
height: 40px;
flex: 0 0 auto;
display: grid;
grid-template-columns: 25px minmax(55px, 1fr) 13px;
grid-template-rows: 1fr 1fr;
align-items: center;
justify-content: stretch;
column-gap: 6px;
row-gap: 0;
padding: 4px 8px 4px 5px;
overflow: hidden;
text-align: left;
white-space: nowrap;
border-radius: 11px;
box-shadow: none;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-icon {
width: 25px;
height: 25px;
grid-column: 1;
grid-row: 1 / 3;
align-self: center;
padding: 6px;
color: var(--primary);
background: color-mix(in oklch, var(--primary) 10%, var(--card));
border-radius: 8px;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-label {
min-width: 0;
grid-column: 2;
grid-row: 1;
align-self: end;
overflow: hidden;
font-size: 10px;
font-weight: 820;
line-height: 1.15;
text-overflow: ellipsis;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-summary {
min-width: 0;
grid-column: 2;
grid-row: 2;
align-self: start;
overflow: hidden;
color: var(--muted-foreground);
font-size: 7.5px;
font-weight: 650;
line-height: 1.15;
text-overflow: ellipsis;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chip-run {
width: 12px;
height: 12px;
grid-column: 3;
grid-row: 1 / 3;
align-self: center;
color: var(--muted-foreground);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button:hover .mode-chip-run,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button:focus-visible .mode-chip-run {
color: var(--primary);
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button.active .mode-chip-icon,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button[aria-pressed="true"] .mode-chip-icon,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button.active .mode-chip-summary,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button[aria-pressed="true"] .mode-chip-summary,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button.active .mode-chip-run,
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button[aria-pressed="true"] .mode-chip-run {
color: currentColor;
}
.console-v2 .main-panel > .v2-mode-rail .mode-cycle-badge {
display: none;
}
.console-v2 .v2-mode-rail .mode-rail-actions {
min-width: max-content;
display: flex;
align-items: center;
gap: 5px;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button,
.console-v2 .v2-mode-rail #saveModeToggle {
min-width: 0;
min-height: 34px;
height: 34px;
display: inline-flex !important;
align-items: center;
justify-content: center;
gap: 5px;
grid-column: auto;
grid-row: auto;
padding: 5px 9px;
color: var(--foreground);
background: color-mix(in oklch, var(--secondary) 86%, var(--card));
border: 1px solid var(--border);
border-radius: 10px;
box-shadow: none;
font-size: 9px;
font-weight: 800;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-create-toggle,
.console-v2 .v2-mode-rail #saveModeToggle {
color: var(--primary);
background: color-mix(in oklch, var(--primary) 8%, var(--card));
border-color: color-mix(in oklch, var(--primary) 20%, var(--border));
}
.console-v2 .v2-mode-rail .mode-rail-actions > button:hover,
.console-v2 .v2-mode-rail .mode-rail-actions > button:focus-visible {
color: var(--primary);
background: color-mix(in oklch, var(--primary) 11%, var(--card));
border-color: color-mix(in oklch, var(--primary) 30%, var(--border));
outline: none;
transform: none;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button svg {
width: 14px;
height: 14px;
}
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-gallery-toggle strong {
min-width: 17px;
min-height: 17px;
height: 17px;
padding: 0 4px;
font-size: 8px;
}
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-rail-toggle {
width: 32px;
padding: 0;
}
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-rail-toggle svg,
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-rail-toggle[aria-expanded="true"] svg:last-child {
transform: none !important;
}
.console-v2 .main-panel > .v2-mode-rail.is-collapsed > .mode-rail-bar {
grid-template-columns: minmax(0, 1fr) auto;
}
.console-v2 .main-panel > .v2-mode-rail.is-collapsed .mode-rail-identity {
min-width: 0;
}
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button.just-created {
border-color: color-mix(in oklch, var(--primary) 58%, var(--border));
box-shadow: 0 0 0 3px color-mix(in oklch, var(--primary) 13%, transparent),
0 8px 18px color-mix(in oklch, var(--primary) 12%, transparent);
animation: v2-mode-created-pulse 900ms ease-out 2;
}
@keyframes v2-mode-created-pulse {
0%, 100% { transform: translateY(0); }
45% { transform: translateY(-2px); }
}
@media (max-width: 1180px) {
.console-v2 .v2-mode-rail .mode-rail-identity {
min-width: 36px;
}
.console-v2 .v2-mode-rail .mode-rail-identity > span:last-child {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button {
min-width: 108px;
}
}
@media (max-width: 760px) {
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar {
gap: 6px;
padding-inline: 5px;
}
.console-v2 .v2-mode-rail .mode-rail-mark {
width: 30px;
height: 30px;
flex-basis: 30px;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button span,
.console-v2 .v2-mode-rail .mode-rail-actions > .mode-gallery-toggle strong {
display: none;
}
.console-v2 .v2-mode-rail .mode-rail-actions > button {
width: 32px;
padding: 0;
}
}
@media (prefers-reduced-motion: reduce) {
.console-v2 .main-panel > .v2-mode-rail .mode-chips > button.just-created {
animation: none;
}
}
/* Fixed side-panel dock: buttons never move while panel content expands. */
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] {
grid-template-columns: minmax(420px, 1fr) clamp(330px, 27vw, 402px);
grid-template-rows: minmax(0, 1fr);
gap: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(420px, 1fr) 52px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band {
min-width: 0;
grid-column: 1;
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-unified-right-rail,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] .v2-unified-right-rail {
min-width: 0;
min-height: 0;
display: grid !important;
grid-column: 2;
grid-row: 1;
grid-template-columns: minmax(0, 1fr) 52px;
grid-template-rows: minmax(0, 1fr) !important;
gap: 8px;
overflow: hidden;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-unified-right-rail {
grid-template-columns: 52px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack {
min-width: 0;
min-height: 0;
display: grid;
grid-column: 1;
grid-row: 1;
grid-template-columns: minmax(0, 1fr);
grid-template-rows: minmax(0, 1fr);
overflow: hidden;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="devices extensions"] .v2-side-status-stack {
grid-template-rows: minmax(0, 1fr) minmax(0, 1fr);
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-side-status-stack {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack #v2DevicePanel,
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack #v2ExtensionPanel {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
grid-column: 1;
align-self: stretch;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack #v2DevicePanel {
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack #v2ExtensionPanel {
grid-row: 2;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="extensions"] .v2-side-status-stack #v2ExtensionPanel {
grid-row: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-stack .v2-side-status-panel.is-collapsed {
display: none !important;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock {
min-width: 0;
min-height: 0;
display: grid;
grid-column: 2;
grid-row: 1;
grid-auto-rows: 52px;
align-content: start;
gap: 8px;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-side-panel-dock {
grid-column: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock button {
width: 52px;
height: 52px;
min-width: 52px;
min-height: 52px;
display: grid;
place-items: center;
padding: 0;
color: var(--muted-foreground);
background: color-mix(in oklch, var(--card) 94%, transparent);
border: 1px solid var(--border);
border-radius: 15px;
box-shadow: 0 8px 20px color-mix(in oklch, var(--foreground) 7%, transparent);
cursor: pointer;
transition: color 160ms ease, background 160ms ease, border-color 160ms ease, box-shadow 160ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock button:hover,
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock button:focus-visible {
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 26%, var(--border));
outline: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock button.active {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
box-shadow: 0 10px 24px color-mix(in oklch, var(--primary) 24%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-panel-dock button svg {
width: 20px;
height: 20px;
}
@media (max-width: 1180px) {
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] {
grid-template-columns: minmax(320px, 1fr) clamp(292px, 36vw, 342px);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(320px, 1fr) 52px;
}
}
.console-v2 .mode-gallery-add-card {
padding-right: 9px;
border-style: dashed;
border-color: color-mix(in oklch, var(--primary) 42%, var(--border));
color: var(--card-foreground);
background: color-mix(in oklch, var(--primary) 5%, var(--card));
}
.console-v2 .mode-gallery-add-card .mode-gallery-card-icon {
color: var(--primary);
background: color-mix(in oklch, var(--primary) 12%, var(--card));
}
.console-v2 .mode-gallery-add-card:hover,
.console-v2 .mode-gallery-add-card:focus-visible {
border-color: var(--primary);
background: var(--accent);
}
@media (max-width: 980px) {
.console-v2 .v2-mode-rail > .mode-rail-bar {
grid-template-columns: auto minmax(0, 1fr);
}
.console-v2 .v2-mode-rail .mode-rail-actions {
grid-column: 1 / -1;
justify-content: flex-end;
}
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-gallery-toggle strong,
.console-v2.v2-passive-display.v2-interactive-sync .v2-task-timeline i,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-seat-label small,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-callout span,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-callout small,
.console-v2.v2-passive-display.v2-interactive-sync .v2-twin-hotspots button,
.console-v2.v2-passive-display.v2-interactive-sync .v2-twin-device-popover header > b,
.console-v2.v2-passive-display.v2-interactive-sync .v2-twin-device-popover dt {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-twin-device-popover header small {
font-size: 8.5px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-twin-device-popover dd {
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sidebar-footer small,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header > button,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading > button {
font-size: 9px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway small {
overflow: visible;
text-overflow: clip;
white-space: normal;
}
/* Collapsible left sync rail aligned with the lower workspace ------------ */
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
transition: grid-template-columns 180ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .command-panel.v2-sidebar {
--v2-sync-log-top: 291px;
position: relative;
display: block;
padding: 0 15px 13px;
overflow: hidden;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar {
width: 100%;
height: 100%;
display: grid;
grid-template-rows: calc(var(--v2-sync-log-top) - 10px) minmax(0, 1fr);
gap: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-overview {
width: 100%;
min-width: 0;
max-width: 100%;
min-height: 0;
display: grid;
grid-auto-rows: max-content;
align-content: start;
gap: 10px;
padding-top: 26px;
overflow: hidden;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field {
width: 100%;
min-width: 0;
min-height: max-content;
max-width: 100%;
align-self: start;
overflow: visible;
padding: 7px;
background: rgba(255, 255, 255, 0.86);
border-color: rgba(19, 105, 99, 0.14);
box-shadow: 0 5px 14px rgba(37, 84, 80, 0.06);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-simulation-fault-field {
width: 100%;
min-width: 0;
max-width: 100%;
margin: 0;
padding: 7px;
overflow: visible;
align-self: start;
background: rgba(255, 255, 255, 0.86);
border: 1px solid rgba(19, 105, 99, 0.14);
border-radius: 10px;
box-shadow: 0 5px 14px rgba(37, 84, 80, 0.06);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field > .field-label,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-simulation-fault-field > .field-label {
display: block;
margin: 0 0 6px;
color: #466664;
font-size: 10px;
font-weight: 850;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .execution-mode-options {
width: 100%;
min-width: 0;
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 4px;
padding: 3px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option {
min-width: 0;
min-height: 34px;
display: grid;
grid-template-columns: 13px minmax(0, auto);
align-items: center;
justify-content: center;
gap: 3px;
padding: 4px;
overflow: hidden;
font-size: 9px;
line-height: 1.15;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option svg {
width: 13px;
height: 13px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option.active {
color: #fff;
background: linear-gradient(145deg, var(--v2-accent), var(--v2-accent-strong));
border-color: transparent;
box-shadow: 0 4px 11px color-mix(in srgb, var(--v2-accent) 18%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option:disabled {
color: #7c8d8d;
background: rgba(235, 240, 239, 0.92);
opacity: 0.72;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .provider-note {
min-height: 0;
margin: 5px 1px 0;
overflow: hidden;
color: #809091;
font-size: 8px;
line-height: 1.35;
overflow-wrap: anywhere;
white-space: normal;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field #hardwareNote {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field #hardwareAliasNote {
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-simulation-fault-field select {
min-height: 34px;
padding: 0 8px;
border-radius: 8px;
font-size: 10px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel {
width: 100%;
min-width: 0;
align-self: start;
overflow: hidden;
background: rgba(255, 255, 255, 0.86);
border: 1px solid rgba(19, 105, 99, 0.14);
border-radius: 10px;
box-shadow: 0 5px 14px rgba(37, 84, 80, 0.06);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary {
min-height: 38px;
display: grid;
grid-template-columns: minmax(0, 1fr) auto 14px;
align-items: center;
gap: 7px;
padding: 7px 9px;
color: #315e5b;
cursor: pointer;
list-style: none;
user-select: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary::-webkit-details-marker {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary > span {
min-width: 0;
display: flex;
align-items: center;
gap: 6px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary > span svg {
width: 14px;
height: 14px;
color: var(--v2-accent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary b {
overflow: hidden;
font-size: 10px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary > strong {
min-width: 22px;
padding: 2px 6px;
color: #687f7d;
background: #edf4f3;
border-radius: 999px;
font: 850 9px/1.5 "SFMono-Regular", Consolas, monospace;
text-align: center;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel[data-state="ready"] summary > strong {
color: #08766f;
background: #d9f3ef;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary > svg {
width: 14px;
height: 14px;
transition: transform 160ms ease;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel[open] summary > svg {
transform: rotate(180deg);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list {
max-height: min(24dvh, 190px);
padding: 7px;
overflow: auto;
border-top: 1px solid rgba(19, 105, 99, 0.1);
scrollbar-width: thin;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list p {
margin: 0;
padding: 8px 6px;
color: #819190;
font-size: 9px;
line-height: 1.45;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list ol {
display: grid;
gap: 6px;
margin: 0;
padding: 0;
list-style: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li {
min-width: 0;
display: grid;
gap: 3px;
padding: 6px 7px;
background: #f3f8f7;
border-radius: 7px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li > span {
display: flex;
align-items: center;
gap: 5px;
color: #718684;
font-size: 8px;
font-weight: 800;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-channel {
flex: 0 0 auto;
min-width: 33px;
padding: 1px 5px;
color: #0b6f68;
background: #d9f1ed;
border: 1px solid rgba(11, 111, 104, 0.12);
border-radius: 999px;
font: 850 7px/1.5 "SFMono-Regular", Consolas, monospace;
letter-spacing: 0.02em;
text-align: center;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source {
flex: 0 0 auto;
padding: 1px 5px;
color: #2366a1;
background: #e4f0fb;
border: 1px solid rgba(35, 102, 161, 0.14);
border-radius: 999px;
font-size: 7px;
font-weight: 850;
line-height: 1.5;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source[data-parse-source="local_rule"] {
color: #08766f;
background: #d9f3ef;
border-color: rgba(8, 118, 111, 0.14);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source[data-parse-source="direct_control"] {
color: #7a4b00;
background: #fff0c7;
border-color: rgba(122, 75, 0, 0.16);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-delivery {
flex: 0 0 auto;
padding: 1px 5px;
color: #687776;
background: #e8eceb;
border: 1px solid rgba(91, 107, 105, 0.14);
border-radius: 999px;
font-size: 7px;
font-weight: 900;
line-height: 1.5;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-delivery[data-delivery-state="submitted"] {
color: #087048;
background: #d9f3e5;
border-color: rgba(8, 112, 72, 0.16);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-category {
min-width: 0;
overflow: hidden;
font-style: normal;
text-overflow: ellipsis;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="CAN0"] {
background: #f7f4ec;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="CAN0"] .v2-can-command-channel {
color: #8a5a10;
background: #f8e9c9;
border-color: rgba(138, 90, 16, 0.13);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] {
background: #f5f1fb;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] .v2-can-command-channel {
color: #6c3aa1;
background: #eadcf8;
border-color: rgba(108, 58, 161, 0.14);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] code,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] .v2-can-command-frame {
color: #664086;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li code {
color: #075f5a;
font: 750 9px/1.45 "SFMono-Regular", Consolas, monospace;
overflow-wrap: anywhere;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-frame {
display: block;
color: #8a6b36;
font: 700 7px/1.45 "SFMono-Regular", Consolas, monospace;
overflow-wrap: anywhere;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field > .field-label {
color: #466664;
font-size: 10px;
font-weight: 850;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field .mode-option {
min-height: 34px;
font-size: 11px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-heading {
min-width: 0;
display: grid;
grid-template-columns: minmax(0, 1fr) 32px;
grid-template-rows: auto auto auto;
column-gap: 7px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-heading > small,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-heading > h2 {
min-width: 0;
grid-column: 1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-heading > p {
grid-column: 1 / -1;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-heading h2 {
font-size: 19px;
white-space: nowrap;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle {
width: 32px;
height: 28px;
min-width: 32px;
grid-column: 2;
grid-row: 1 / 3;
align-self: start;
display: inline-flex !important;
align-items: center;
justify-content: center;
gap: 3px;
padding: 0;
color: #3d716e;
background: rgba(255, 255, 255, 0.78);
border: 1px solid rgba(19, 105, 99, 0.12);
border-radius: 9px;
box-shadow: 0 3px 9px rgba(37, 84, 80, 0.055);
cursor: pointer;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle:focus-visible {
color: #0b756f;
background: #e3f4f1;
border-color: rgba(13, 126, 117, 0.21);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle svg {
width: 14px;
height: 14px;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle span {
display: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar-overview > .v2-sidebar-footer {
width: 100%;
margin: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-sidebar > .v2-sync-log {
min-height: 0;
grid-row: 2;
flex: none;
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .workspace {
grid-template-columns: 64px minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .command-panel.v2-sidebar {
padding: 3px 8px 13px;
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar-overview,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar-heading {
width: 100%;
height: 100%;
display: block;
margin: 0;
padding: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar-heading > small,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar-heading > h2,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-sidebar-heading > p,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-transport-field,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-execution-field,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-simulation-fault-field,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-can-command-panel,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sidebar-footer,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .v2-sync-log {
display: none !important;
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed #v2SidebarToggle {
width: 100%;
height: 100%;
min-width: 0;
display: flex !important;
flex-direction: column;
gap: 10px;
color: #216f6a;
background: rgba(250, 253, 252, 0.92);
border-radius: 16px;
box-shadow: 0 8px 20px rgba(35, 78, 75, 0.06);
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed #v2SidebarToggle span {
display: block;
font-size: 10px;
font-weight: 850;
letter-spacing: 0.16em;
writing-mode: vertical-rl;
}
/* Final semantic theme cascade -------------------------------------------
This must remain last: older delivery-state layers contain fixed teal
values for the twin, icon tiles and nested control surfaces. */
.console-v2 .v2-unified-brand-mark,
.console-v2 .v2-sidebar-brand-mark,
.console-v2 .v2-boot-mark {
color: var(--primary-foreground);
background: var(--primary);
border-color: color-mix(in oklch, var(--primary) 32%, var(--border));
box-shadow: 0 10px 24px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2 .v2-remote-control-state,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-simulation-fault-field,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel {
color: var(--card-foreground);
background: color-mix(in oklch, var(--card) 88%, transparent);
border-color: var(--border);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
}
.console-v2 .v2-remote-control-state,
.console-v2 .v2-remote-control-state strong,
.console-v2 .v2-remote-control-state svg {
color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field > .field-label,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-simulation-fault-field > .field-label,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field > .field-label,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .provider-note,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list p,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li > span {
color: var(--muted-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option.active,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field .mode-option.active {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
box-shadow: 0 4px 11px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option:disabled {
color: var(--muted-foreground);
background: var(--muted);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list {
border-top-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="CAN0"],
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] {
color: var(--foreground);
background: var(--muted);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel summary > strong,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-panel[data-state="ready"] summary > strong,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-channel,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source[data-parse-source="local_rule"],
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-source[data-parse-source="direct_control"],
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-delivery,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-delivery[data-delivery-state="submitted"] {
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 18%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="CAN0"] .v2-can-command-channel,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] .v2-can-command-channel,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] code,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel="IR"] .v2-can-command-frame,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li code,
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-frame {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle,
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed #v2SidebarToggle {
color: var(--primary);
background: color-mix(in oklch, var(--card) 86%, transparent);
border-color: var(--sidebar-border);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2SidebarToggle:focus-visible {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell.v2-output-page,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] {
color: var(--foreground);
background: transparent;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-mount,
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-panel.is-collapsed {
color: var(--card-foreground);
background:
radial-gradient(circle at 78% 0%, color-mix(in oklch, var(--primary) 8%, transparent), transparent 18rem),
var(--card);
border-color: var(--border);
box-shadow: 0 14px 32px color-mix(in oklch, var(--foreground) 8%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading {
color: var(--foreground);
background: linear-gradient(90deg, var(--secondary), var(--card));
border-bottom-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading .section-kicker,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header h3,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading h3 {
color: var(--foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-focus-badge,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-reset,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-seat-switch,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-seat-switch button {
color: var(--primary);
background: var(--accent);
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-seat-switch button.active,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-reset:hover,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-reset:focus-visible {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-stage {
background:
radial-gradient(ellipse at 53% 57%, color-mix(in oklch, var(--primary) 12%, transparent), transparent 41%),
linear-gradient(165deg, var(--background), var(--muted));
}
.console-v2 .v2-twin-hotspots button::before {
background: color-mix(in oklch, var(--primary) 72%, var(--border));
box-shadow: 0 0 7px color-mix(in oklch, var(--primary) 28%, transparent);
}
.console-v2 .v2-twin-hotspots button::after {
background: var(--primary);
border-color: var(--primary-foreground);
box-shadow:
0 0 0 3px color-mix(in oklch, var(--primary) 17%, transparent),
0 2px 8px color-mix(in oklch, var(--primary) 28%, transparent);
}
.console-v2 .v2-twin-hotspot-label {
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 94%, transparent);
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
box-shadow: 0 8px 20px color-mix(in oklch, var(--foreground) 18%, transparent);
}
.console-v2 .v2-twin-hotspot-label svg,
.console-v2 .v2-twin-hotspot-label small {
color: var(--primary);
}
.console-v2 .v2-twin-hotspots button:hover::before,
.console-v2 .v2-twin-hotspots button:focus-visible::before,
.console-v2 .v2-twin-hotspots button.active::before,
.console-v2 .v2-twin-hotspots button:hover::after,
.console-v2 .v2-twin-hotspots button:focus-visible::after,
.console-v2 .v2-twin-hotspots button.active::after {
background: var(--primary);
box-shadow: 0 0 0 5px color-mix(in oklch, var(--primary) 18%, transparent);
}
.console-v2 .v2-twin-hotspots button:hover .v2-twin-hotspot-label,
.console-v2 .v2-twin-hotspots button:focus-visible .v2-twin-hotspot-label,
.console-v2 .v2-twin-hotspots button.active .v2-twin-hotspot-label {
color: var(--primary-foreground);
background: var(--primary);
border-color: color-mix(in oklch, var(--primary-foreground) 36%, transparent);
box-shadow: 0 11px 24px color-mix(in oklch, var(--primary) 28%, transparent);
}
.console-v2 .v2-twin-hotspots button:hover .v2-twin-hotspot-label svg,
.console-v2 .v2-twin-hotspots button:hover .v2-twin-hotspot-label small,
.console-v2 .v2-twin-hotspots button:focus-visible .v2-twin-hotspot-label svg,
.console-v2 .v2-twin-hotspots button:focus-visible .v2-twin-hotspot-label small,
.console-v2 .v2-twin-hotspots button.active .v2-twin-hotspot-label svg,
.console-v2 .v2-twin-hotspots button.active .v2-twin-hotspot-label small {
color: var(--primary-foreground);
}
.console-v2 .twin-callout {
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 94%, transparent);
border-color: var(--primary);
box-shadow: 0 6px 18px color-mix(in oklch, var(--foreground) 18%, transparent);
}
.console-v2 .twin-callout b,
.console-v2 .twin-callout small,
.console-v2 .twin-orientation,
.console-v2 .twin-seat-label,
.console-v2 .twin-seat-label small {
color: var(--primary);
}
.console-v2 .v2-twin-device-popover {
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 96%, transparent);
border-color: color-mix(in oklch, var(--primary) 24%, var(--border));
box-shadow: 0 18px 42px color-mix(in oklch, var(--foreground) 20%, transparent);
}
.console-v2 .v2-twin-device-popover header > span {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2 .v2-twin-device-popover header small,
.console-v2 .v2-twin-device-popover header > b,
.console-v2 .v2-twin-device-popover dt {
color: var(--muted-foreground);
}
.console-v2 .v2-twin-device-popover dl div,
.console-v2 .v2-twin-popover-close {
color: var(--foreground);
background: var(--muted);
border-color: var(--border);
}
.console-v2 .v2-twin-device-popover dd {
color: var(--foreground);
}
.console-v2 .v2-twin-popover-close:hover,
.console-v2 .v2-twin-popover-close:focus-visible {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-card-focus > span:first-child,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway > span,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device header > span {
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 18%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-side-status-panel.is-collapsed,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-mount {
background: linear-gradient(180deg, var(--secondary), var(--accent));
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button {
color: var(--primary);
background: transparent;
}
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel.is-collapsed > header > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel.is-collapsed .v2-extension-sync-heading > button:hover {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2 .v2-reasoning-field {
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 98%, transparent);
border-color: var(--border);
box-shadow: 0 16px 38px color-mix(in oklch, var(--foreground) 20%, transparent);
}
.console-v2 .v2-reasoning-field > .field-label {
color: var(--foreground);
}
.console-v2 .v2-reasoning-field .reasoning-option {
color: var(--muted-foreground);
}
.console-v2 .v2-reasoning-field .reasoning-option:hover,
.console-v2 .v2-reasoning-field .reasoning-option.active {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--border);
}
.console-v2 .v2-reasoning-trigger {
color: var(--muted-foreground);
background: color-mix(in oklch, var(--muted) 96%, transparent);
border-color: var(--border);
}
.console-v2 .v2-reasoning-trigger:hover,
.console-v2 .v2-reasoning-trigger.open {
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 22%, var(--border));
}
.console-v2 .device-power-backdrop {
background: color-mix(in oklch, var(--foreground) 38%, transparent);
}
.console-v2 .device-power-drawer {
color: var(--popover-foreground);
background: color-mix(in oklch, var(--popover) 98%, transparent);
border-color: var(--border);
box-shadow: -18px 0 48px color-mix(in oklch, var(--foreground) 18%, transparent);
}
.console-v2 .device-power-drawer-heading {
background: var(--popover);
border-bottom-color: var(--border);
}
.console-v2 .device-power-drawer-heading > button,
.console-v2 .device-power-energy-summary > div,
.console-v2 .device-power-components,
.console-v2 .device-power-chart,
.console-v2 .device-power-unavailable {
color: var(--foreground);
background: var(--muted);
border-color: var(--border);
}
.console-v2 .device-power-drawer-heading > button:hover {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2 .device-power-total {
color: var(--primary-foreground);
background: var(--primary);
box-shadow: 0 8px 20px color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2 .toast {
color: var(--popover-foreground);
background: var(--popover);
border: 1px solid var(--border);
box-shadow: 0 14px 36px color-mix(in oklch, var(--foreground) 16%, transparent);
}
.console-v2 .v2-transport-field .mode-option {
color: var(--muted-foreground);
background: var(--secondary);
border-color: var(--border);
}
.console-v2 .v2-transport-field .mode-option.active,
.console-v2 .v2-request-form .primary-action {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2 .v2-sync-log > header,
.console-v2.v2-interactive-sync .v2-sidebar-footer {
background: color-mix(in oklch, var(--card) 88%, transparent);
border-color: var(--border);
}
.console-v2 .v2-sync-log header small {
color: var(--primary);
}
.console-v2 .v2-sync-log h3,
.console-v2 .v2-sync-log li strong {
color: var(--foreground);
}
.console-v2 .v2-sync-log select {
color: var(--foreground);
background: var(--background);
border-color: var(--input);
}
.console-v2 .v2-sync-log time,
.console-v2 .v2-sync-log li small {
color: var(--muted-foreground);
}
.console-v2 .v2-sync-log li:not(:last-child)::after {
background: var(--border);
}
.console-v2 .v2-sync-log li > span {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2 .v2-sync-log li[data-log-status="success"] > span {
color: var(--primary-foreground);
background: var(--chart-3);
}
.console-v2 .v2-sync-log li[data-log-status="error"] > span {
color: var(--primary-foreground);
background: var(--destructive);
}
/* Result modules: trace, configuration, CAN plan and execution feedback. */
.console-v2 .result-workspace .tab-panel,
.console-v2 .result-workspace .tab-panel[hidden] {
color: var(--card-foreground);
background: var(--card);
border-color: var(--border);
box-shadow: 0 6px 18px color-mix(in oklch, var(--foreground) 6%, transparent);
}
.console-v2 .result-workspace #panel-config.config-panel {
background: var(--muted);
}
.console-v2 .workspace-panel-title,
.console-v2 .result-workspace .config-panel-heading,
.console-v2 .decision-list li,
.console-v2 .config-card-header,
.console-v2 .config-object-block,
.console-v2 .config-parameters-block,
.console-v2 .config-hardware-block {
border-color: var(--border);
}
.console-v2 .workspace-panel-state,
.console-v2 .result-workspace .tab-panel.v2-scrollable::after,
.console-v2 .config-domain-badge,
.console-v2 .config-signal-list code,
.console-v2 .result-item code {
color: var(--primary);
background: var(--accent);
}
.console-v2 .workspace-panel-state.succeeded {
color: color-mix(in oklch, var(--chart-3) 76%, var(--foreground));
background: color-mix(in oklch, var(--chart-1) 16%, var(--card));
}
.console-v2 .workspace-panel-state.partial,
.console-v2 .validation-item {
color: color-mix(in oklch, var(--chart-4) 76%, var(--foreground));
background: color-mix(in oklch, var(--chart-1) 12%, var(--card));
border-color: var(--chart-4);
}
.console-v2 .workspace-panel-state.failed,
.console-v2 .validation-item.error {
color: var(--destructive);
background: color-mix(in oklch, var(--destructive) 9%, var(--card));
border-color: var(--destructive);
}
.console-v2 .decision-list li,
.console-v2 .trace-event span,
.console-v2 .validation-item code,
.console-v2 .config-empty strong,
.console-v2 .config-object-name,
.console-v2 .config-route-node strong {
color: var(--foreground);
}
.console-v2 .detail-heading span,
.console-v2 .trace-event small,
.console-v2 .empty-line,
.console-v2 .config-panel-heading p,
.console-v2 .config-card-identity small,
.console-v2 .config-block-label,
.console-v2 .config-object-path,
.console-v2 .config-parameter > span,
.console-v2 .config-route-node small,
.console-v2 .config-card-footer {
color: var(--muted-foreground);
}
.console-v2 .decision-list li::before,
.console-v2 .trace-event code,
.console-v2 .result-item > svg,
.console-v2 .config-route-arrow,
.console-v2 .config-signal-list .config-signal-more {
color: var(--primary);
}
.console-v2 .trace-list {
border-color: var(--border);
}
.console-v2 .trace-event::before {
background: var(--primary);
border-color: var(--card);
}
.console-v2 .trace-event.failed::before {
background: var(--destructive);
}
.console-v2 .validation-block,
.console-v2 .result-item {
border-color: var(--border);
}
.console-v2 .config-action,
.console-v2 .config-empty,
.console-v2 .config-card,
.console-v2 .config-parameter,
.console-v2 .config-route-node {
color: var(--foreground);
background: var(--card);
border-color: var(--border);
}
.console-v2 .config-action:hover,
.console-v2 .config-action:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--ring);
}
.console-v2 .config-empty svg,
.console-v2 .config-card-icon,
.console-v2 .config-scene-icon {
color: var(--primary);
}
.console-v2 .config-scene-summary {
color: var(--primary-foreground);
background: var(--primary);
}
.console-v2 .config-scene-icon {
background: color-mix(in oklch, var(--primary-foreground) 12%, transparent);
border-color: color-mix(in oklch, var(--primary-foreground) 20%, transparent);
}
.console-v2 .config-scene-copy span,
.console-v2 .config-scene-stats small,
.console-v2 .config-scene-stats b {
color: var(--primary-foreground);
}
.console-v2 .config-card.config-seat { --config-accent: var(--primary); }
.console-v2 .config-card.config-climate { --config-accent: var(--chart-2); }
.console-v2 .config-card.config-ambient { --config-accent: var(--chart-3); }
.console-v2 .config-card.config-roof { --config-accent: var(--chart-4); }
.console-v2 .config-card-icon,
.console-v2 .config-domain-badge {
background: color-mix(in oklch, var(--config-accent) 10%, var(--card));
}
.console-v2 .config-parameter,
.console-v2 .config-card-footer,
.console-v2 .config-hardware-block {
background: var(--muted);
}
.console-v2 .config-source-details,
.console-v2 .code-panel,
.console-v2 pre,
.console-v2 .plan-panel .frame-summary,
.console-v2 .frame-summary {
color: var(--primary-foreground);
background: color-mix(in oklch, var(--foreground) 90%, var(--background));
border-color: color-mix(in oklch, var(--primary) 24%, transparent);
}
.console-v2 .config-source-details summary,
.console-v2 .code-toolbar {
color: var(--primary-foreground);
background: color-mix(in oklch, var(--foreground) 82%, var(--background));
border-color: color-mix(in oklch, var(--primary) 20%, transparent);
}
.console-v2 .config-source-details summary svg,
.console-v2 .frame-summary code {
color: var(--chart-1);
}
.console-v2 .config-source-details summary small,
.console-v2 .frame-summary span {
color: color-mix(in oklch, var(--primary-foreground) 68%, transparent);
}
.console-v2 .execution-summary {
color: var(--foreground);
background: var(--muted);
border-color: var(--border);
}
.console-v2 .execution-summary.succeeded {
background: color-mix(in oklch, var(--chart-1) 14%, var(--card));
border-color: var(--chart-3);
}
.console-v2 .execution-summary.partial {
background: color-mix(in oklch, var(--chart-2) 12%, var(--card));
border-color: var(--chart-4);
}
.console-v2 .execution-summary.failed {
background: color-mix(in oklch, var(--destructive) 9%, var(--card));
border-color: var(--destructive);
}
/* Control clarity and collapsible function modes ------------------------ */
.console-v2.v2-passive-display.v2-interactive-sync .v2-operation-shell {
z-index: 20;
overflow: visible;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail {
min-width: 0;
position: relative;
display: block;
grid-column: 1;
grid-row: 3;
padding: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-heading {
min-width: 0;
display: flex !important;
grid-column: 1 / -1;
grid-row: 1;
justify-content: flex-end;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail #saveModeToggle {
display: inline-flex !important;
min-height: 36px;
align-items: center;
gap: 6px;
padding: 7px 10px;
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 22%, var(--border));
border-radius: var(--radius);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips {
min-width: 0;
display: flex;
grid-column: 1;
grid-row: 2;
gap: 7px;
padding: 1px;
overflow-x: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-chips button {
min-width: 98px;
min-height: 36px;
padding: 7px 11px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-rail-controls {
min-width: max-content;
display: flex !important;
grid-column: 2;
grid-row: 2;
align-items: center;
gap: 6px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .mode-gallery-toggle {
min-height: 36px;
padding: 6px 10px;
color: var(--primary);
background: var(--accent);
border-color: color-mix(in oklch, var(--primary) 22%, var(--border));
border-radius: var(--radius);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail .save-mode-composer {
grid-column: 1 / -1;
grid-row: 3;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .execution-mode-options {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-transport-field .mode-option,
.console-v2.v2-passive-display.v2-interactive-sync .v2-sync-execution-field .mode-option {
min-height: 38px;
font-size: var(--text-control);
}
.console-v2 button,
.console-v2 button span,
.console-v2 button strong,
.console-v2 button small,
.console-v2 button b {
font-size: var(--text-control) !important;
}
.console-v2 input,
.console-v2 textarea,
.console-v2 select {
font-size: var(--text-input) !important;
}
.console-v2 label,
.console-v2 .field-label,
.console-v2 dt {
font-size: var(--text-label) !important;
}
.console-v2 .provider-note,
.console-v2 .composer-hint,
.console-v2 .v2-sidebar-footer small,
.console-v2 .v2-task-timeline i {
font-size: var(--text-caption) !important;
}
.console-v2 .device-state,
.console-v2 .workspace-panel-state,
.console-v2 .v2-task-state,
.console-v2 .simulation-label,
.console-v2 .seat-channel-badge {
font-size: var(--text-caption);
}
/* Inline function-mode collapsible and semantic command fields ---------- */
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail {
min-width: 0;
position: relative;
display: block;
grid-column: 1;
grid-row: 3;
padding: 0;
}
.console-v2 .v2-mode-rail > .mode-rail-bar {
width: 100%;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 9px;
}
.console-v2 .v2-mode-rail .mode-rail-title {
color: var(--foreground);
font-size: var(--text-label);
font-weight: 850;
white-space: nowrap;
}
.console-v2 .v2-mode-rail .mode-rail-toggle,
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle {
min-width: 0;
min-height: 38px;
display: inline-flex;
align-items: center;
gap: 7px;
padding: 7px 11px;
color: var(--foreground);
background: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
}
.console-v2 .v2-mode-rail .mode-rail-toggle {
justify-content: space-between;
}
.console-v2 .v2-mode-rail .mode-rail-toggle:hover,
.console-v2 .v2-mode-rail .mode-rail-toggle:focus-visible,
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle:hover,
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--ring);
outline: none;
}
.console-v2 .v2-mode-rail .mode-rail-toggle svg,
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle svg {
width: 16px;
height: 16px;
flex: 0 0 auto;
}
.console-v2 .v2-mode-rail .mode-rail-toggle svg:last-child {
transition: transform 160ms ease;
}
.console-v2 .v2-mode-rail .mode-rail-toggle[aria-expanded="true"] svg:last-child {
transform: rotate(180deg);
}
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle {
color: var(--primary);
white-space: nowrap;
}
.console-v2 .v2-mode-rail > .mode-rail-bar > .mode-gallery-toggle strong {
min-width: 20px;
min-height: 20px;
display: inline-grid;
place-items: center;
padding: 0 5px;
color: var(--primary-foreground);
background: var(--primary);
border-radius: 999px;
}
.console-v2 .v2-mode-rail > .mode-rail-content[hidden] {
display: none !important;
}
.console-v2 .v2-mode-rail > .mode-rail-content {
min-width: 0;
position: static;
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 9px;
margin-top: 8px;
padding: 10px;
color: var(--card-foreground);
background: var(--card);
border: 1px solid var(--border);
border-radius: var(--radius);
box-shadow: 0 12px 28px color-mix(in oklch, var(--foreground) 10%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-rail-heading {
min-width: 0;
display: flex !important;
grid-column: 1 / -1;
justify-content: flex-end;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips {
min-width: 0;
display: flex;
grid-column: 1;
grid-row: auto;
gap: 7px;
padding: 1px;
overflow-x: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-rail-controls {
min-width: max-content;
display: flex !important;
grid-column: 2;
grid-row: auto;
align-items: center;
gap: 6px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .save-mode-composer {
width: auto;
position: static;
grid-column: 1 / -1;
grid-row: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-channel {
color: var(--command-channel);
background: color-mix(in oklch, var(--command-channel) 12%, var(--card));
border-color: color-mix(in oklch, var(--command-channel) 30%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-source {
color: var(--command-source);
background: color-mix(in oklch, var(--command-source) 12%, var(--card));
border-color: color-mix(in oklch, var(--command-source) 30%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-delivery {
color: var(--command-pending);
background: var(--muted);
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-delivery[data-delivery-state="submitted"] {
color: var(--command-delivered);
background: color-mix(in oklch, var(--command-delivered) 12%, var(--card));
border-color: color-mix(in oklch, var(--command-delivered) 30%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-category {
color: var(--command-category);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] code {
color: var(--command-control);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-can-command-list li[data-can-channel] .v2-can-command-frame {
color: var(--command-frame);
}
@media (max-width: 1120px) {
.console-v2 .v2-mode-rail > .mode-rail-bar {
grid-template-columns: auto minmax(150px, 1fr) auto;
}
.console-v2 .v2-mode-rail > .mode-rail-content {
grid-template-columns: minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips,
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-rail-controls {
grid-column: 1;
}
}
/* Final cascade: show every mode in a floating, vertically scrollable grid. */
.console-v2 .v2-mode-rail > .mode-rail-content {
width: 100%;
max-height: clamp(180px, calc(100dvh - 210px), 420px);
position: absolute;
top: calc(100% + 8px);
right: 0;
left: 0;
display: block;
grid-template-columns: none;
margin-top: 0;
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-gutter: stable;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(112px, 1fr));
grid-column: auto;
gap: 8px;
padding: 0;
overflow: visible;
scroll-behavior: auto;
overscroll-behavior: auto;
touch-action: auto;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-chips > button {
width: 100%;
min-width: 0;
min-height: 38px;
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-mode-rail > .mode-rail-content .mode-group-divider {
width: auto;
height: 1px;
grid-column: 1 / -1;
margin: 1px 0;
}
/* AI assistant light-blue final override --------------------------------
This is the actual final color layer; layout rules above remain intact. */
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .workspace {
grid-template-columns: 0 minmax(0, 1fr);
}
.console-v2.v2-passive-display.v2-interactive-sync.v2-sidebar-collapsed .command-panel.v2-sidebar {
width: 0;
min-width: 0;
padding: 0;
overflow: hidden;
border: 0;
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] {
grid-template-columns: minmax(0, 1fr);
gap: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] .v2-unified-right-rail {
grid-template-columns: minmax(0, 1fr);
gap: 0;
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels="none"] .v2-unified-right-rail,
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] .v2-unified-right-rail[hidden],
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell[data-open-panels] .v2-unified-right-rail.is-collapsed {
display: none !important;
}
@media (max-width: 1180px) {
.console-v2.v2-passive-display.v2-interactive-sync {
min-width: 0;
}
}
.console-v2.v2-passive-display.v2-interactive-sync,
.console-v2.v2-passive-display.v2-interactive-sync .workspace {
color: var(--body-foreground);
background:
radial-gradient(circle at 76% -10%, color-mix(in oklch, var(--primary) 13%, transparent), transparent 32%),
linear-gradient(145deg, var(--background), var(--secondary));
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel {
color: var(--body-foreground);
background:
radial-gradient(circle at 42% -12%, color-mix(in oklch, var(--card) 92%, transparent), transparent 37%),
linear-gradient(150deg, var(--background), color-mix(in oklch, var(--secondary) 78%, var(--background)));
}
.console-v2.v2-passive-display.v2-interactive-sync .command-panel.v2-sidebar {
color: var(--body-foreground);
background:
radial-gradient(circle at 12% 2%, color-mix(in oklch, var(--card) 88%, transparent), transparent 24%),
linear-gradient(158deg, var(--sidebar), var(--sidebar-accent));
border-right-color: var(--sidebar-border);
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-module-switcher,
.console-v2 .main-panel > .v2-mode-rail > .mode-rail-bar {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 88%, var(--accent));
border-color: var(--border);
box-shadow: 0 6px 20px color-mix(in oklch, var(--foreground) 7%, transparent);
}
.console-v2 .v2-unified-title,
.console-v2 .v2-sidebar-title,
.console-v2 .v2-operation-heading h2,
.console-v2 .v2-output-heading h2,
.console-v2 .joint-twin-shell .twin-heading h3,
.console-v2 .v2-device-sync-board > header h3,
.console-v2 .v2-extension-sync-heading h3,
.console-v2 .workspace-panel-title h3,
.console-v2 .config-panel-heading h3 {
color: var(--heading-foreground);
}
.console-v2 .v2-unified-subtitle,
.console-v2 .v2-operation-heading p,
.console-v2 .v2-output-heading p,
.console-v2 .provider-note,
.console-v2 .v2-task-timeline,
.console-v2 .v2-device-sync-board > header small,
.console-v2 .v2-extension-sync-heading small {
color: var(--subtle-foreground);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 88%, var(--secondary));
border-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button:hover,
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button:focus-visible {
color: var(--accent-foreground);
background: var(--accent);
border-color: var(--ring);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.active,
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button[aria-pressed="true"],
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.running {
color: var(--primary-foreground);
background: var(--primary);
border-color: var(--primary);
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.succeeded {
color: var(--status-success-foreground);
background: var(--status-success-soft);
border-color: color-mix(in oklch, var(--status-success) 38%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .main-panel > .v2-mode-rail .mode-chips > button.failed {
color: var(--status-error-foreground);
background: var(--status-error-soft);
border-color: color-mix(in oklch, var(--status-error) 38%, var(--border));
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell > .twin-band,
.console-v2.v2-passive-display.v2-interactive-sync #v2DevicePanel,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-sync-mount {
color: var(--body-foreground);
background:
radial-gradient(circle at 82% 0%, color-mix(in oklch, var(--primary) 8%, transparent), transparent 18rem),
var(--card);
border-color: var(--border);
box-shadow: 0 14px 32px color-mix(in oklch, var(--foreground) 8%, transparent);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-heading,
.console-v2.v2-passive-display.v2-interactive-sync .v2-device-sync-board > header,
.console-v2.v2-passive-display.v2-interactive-sync .v2-extension-sync-heading {
color: var(--heading-foreground);
background: linear-gradient(90deg, var(--secondary), color-mix(in oklch, var(--card) 92%, var(--accent)));
border-bottom-color: var(--border);
}
.console-v2.v2-passive-display.v2-interactive-sync .joint-twin-shell .twin-stage {
background:
radial-gradient(ellipse at 53% 57%, color-mix(in oklch, var(--primary) 13%, transparent), transparent 41%),
linear-gradient(165deg, var(--card), var(--secondary));
}
.console-v2.v2-passive-display.v2-interactive-sync .v2-synced-device,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-gateway,
.console-v2.v2-passive-display.v2-interactive-sync #v2ExtensionPanel .v2-extension-synced-device {
color: var(--body-foreground);
background: color-mix(in oklch, var(--card) 82%, var(--secondary));
border-color: var(--border);
box-shadow: 0 5px 14px color-mix(in oklch, var(--foreground) 6%, transparent);
}