:root { --bg: #f2f5f4; --surface: #ffffff; --surface-muted: #f7f9f8; --ink: #17232b; --muted: #67747b; --line: #d9e1de; --line-strong: #bbc8c4; --teal: #08766e; --teal-dark: #075c57; --teal-soft: #dcefeb; --blue: #3269a8; --blue-soft: #e5eef8; --amber: #b86f0b; --amber-soft: #fff1d9; --red: #bd3f49; --red-soft: #fbe7e8; --shadow: 0 8px 24px rgba(25, 43, 49, 0.07); font-family: Inter, "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif; color: var(--ink); background: var(--bg); letter-spacing: 0; } /* Unified natural-language + gesture experience */ :root { --accent: #0a8178; --accent-bright: #16a394; --accent-ink: #075b56; --accent-wash: #e7f6f2; --soft-shadow: 0 18px 50px rgba(27, 58, 58, 0.09); } html { scroll-behavior: smooth; } body { background: radial-gradient(circle at 84% -8%, rgba(59, 183, 166, 0.12), transparent 27rem), linear-gradient(180deg, #f6f9f8 0, #eef3f2 100%); } body.gesture-open { overflow: hidden; } .topbar { min-height: 76px; padding: 12px clamp(18px, 2.4vw, 38px); background: rgba(255, 255, 255, 0.86); border-bottom-color: rgba(15, 72, 68, 0.1); backdrop-filter: blur(18px) saturate(150%); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8); } .brand-mark { border-radius: 14px; background: linear-gradient(145deg, #0b8d82, #07655f); box-shadow: 0 9px 22px rgba(8, 118, 110, 0.24); } .runtime-badges { gap: 9px; } .gesture-entry { min-height: 38px; display: inline-flex; align-items: center; gap: 8px; padding: 0 14px; border: 1px solid rgba(8, 118, 110, 0.2); border-radius: 999px; color: var(--accent-ink); background: linear-gradient(180deg, #f5fffc, #e8f7f3); font-weight: 750; cursor: pointer; transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease; } .gesture-entry:hover { transform: translateY(-1px); border-color: rgba(8, 118, 110, 0.42); box-shadow: 0 8px 20px rgba(8, 118, 110, 0.12); } .gesture-entry-dot, .gesture-state-pill > i, .gesture-live-badge > i { width: 7px; height: 7px; border-radius: 50%; background: #19a889; box-shadow: 0 0 0 4px rgba(25, 168, 137, 0.12); } .workspace { grid-template-columns: minmax(330px, 388px) minmax(0, 1fr); max-width: 1920px; margin: 0 auto; } .command-panel { padding: 27px 24px 40px; background: rgba(255, 255, 255, 0.82); border-right-color: rgba(18, 69, 65, 0.1); backdrop-filter: blur(14px); } .panel-heading h2 { margin-bottom: 5px; font-size: clamp(25px, 2.1vw, 31px); letter-spacing: -0.04em; } .panel-intro { margin: 0 0 20px; color: var(--muted); font-size: 13px; line-height: 1.7; } .mode-rail { margin-bottom: 18px; padding: 14px; border: 1px solid rgba(8, 118, 110, 0.14); border-radius: 16px; background: linear-gradient(145deg, rgba(231, 246, 242, 0.95), rgba(249, 253, 252, 0.95)); } .mode-rail-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; font-size: 12px; font-weight: 800; color: var(--accent-ink); } .mode-rail-heading button, .gesture-card-heading button { display: inline-flex; align-items: center; gap: 5px; padding: 5px 8px; border: 0; border-radius: 8px; color: var(--accent-ink); background: rgba(255, 255, 255, 0.72); font-size: 11px; cursor: pointer; } .mode-rail-heading svg, .gesture-card-heading svg { width: 14px; height: 14px; } .mode-chips { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .mode-chips button { min-width: 0; display: flex; align-items: center; justify-content: center; gap: 5px; padding: 9px 6px; border: 1px solid rgba(8, 118, 110, 0.12); border-radius: 10px; background: rgba(255, 255, 255, 0.86); color: #26423f; font-size: 12px; font-weight: 700; cursor: pointer; transition: transform 150ms ease, background 150ms ease; } .mode-chips button:hover { transform: translateY(-1px); background: #fff; } .mode-chips svg { width: 15px; height: 15px; color: var(--accent); } .save-mode-composer { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; margin-top: 10px; } .save-mode-composer[hidden] { display: none; } .save-mode-composer input, .gesture-customize select { min-width: 0; border: 1px solid rgba(8, 118, 110, 0.2); border-radius: 9px; padding: 9px 10px; background: #fff; color: var(--ink); font: inherit; } .save-mode-composer button { border: 0; border-radius: 9px; padding: 0 12px; color: #fff; background: var(--accent); font-weight: 750; cursor: pointer; } .command-composer { position: relative; margin-bottom: 18px; } #utterance { min-height: 132px; padding: 17px 17px 36px; border-color: rgba(27, 77, 73, 0.19); border-radius: 16px; background: rgba(255, 255, 255, 0.92); box-shadow: 0 12px 30px rgba(28, 61, 58, 0.06); font-size: 15px; line-height: 1.65; resize: vertical; transition: border-color 180ms ease, box-shadow 180ms ease; } #utterance:focus { border-color: rgba(8, 118, 110, 0.58); box-shadow: 0 15px 35px rgba(8, 118, 110, 0.12); } .composer-hint { position: absolute; right: 12px; bottom: 10px; color: #8a9895; font-size: 10px; pointer-events: none; } .primary-action { min-height: 50px; border-radius: 14px; background: linear-gradient(135deg, #0d8c81, #086c65); box-shadow: 0 13px 28px rgba(8, 118, 110, 0.2); transition: transform 180ms ease, box-shadow 180ms ease; } .primary-action:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 17px 34px rgba(8, 118, 110, 0.26); } .example-group { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; } .example-group > .field-label { grid-column: 1 / -1; } .example-command { min-width: 0; min-height: 44px; padding: 8px 9px; border: 1px solid rgba(37, 79, 75, 0.09); border-radius: 11px; background: rgba(255, 255, 255, 0.7); } .example-command span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; } .example-command > svg:last-child { display: none; } .main-panel { padding: 25px clamp(20px, 2.4vw, 38px) 60px; } .request-header, .pipeline, .joint-twin-shell, .result-workspace { border-radius: 18px; } .request-header { padding: 18px 20px; background: rgba(255, 255, 255, 0.72); border: 1px solid rgba(24, 70, 67, 0.09); } .pipeline { padding: 11px; background: rgba(255, 255, 255, 0.72); border: 1px solid rgba(24, 70, 67, 0.09); box-shadow: var(--soft-shadow); } .pipeline-step { border-radius: 12px; } .domain-panel, .seat-card, .result-workspace, .joint-twin-shell { border-color: rgba(24, 70, 67, 0.1); box-shadow: 0 14px 36px rgba(27, 58, 58, 0.05); } .gesture-backdrop { position: fixed; inset: 0; z-index: 80; background: rgba(9, 23, 25, 0.32); opacity: 0; backdrop-filter: blur(3px); transition: opacity 220ms ease; } .gesture-backdrop.visible { opacity: 1; } .gesture-drawer { position: fixed; top: 0; right: 0; z-index: 90; width: min(470px, 100vw); height: 100dvh; display: flex; flex-direction: column; gap: 14px; padding: 22px; overflow: auto; color: #e9fbf6; background: radial-gradient(circle at 70% 0, rgba(40, 184, 159, 0.22), transparent 20rem), linear-gradient(165deg, #102727 0%, #0b1c1e 62%, #071416 100%); border-left: 1px solid rgba(133, 235, 210, 0.15); box-shadow: -28px 0 70px rgba(3, 15, 16, 0.32); transform: translateX(105%); visibility: hidden; transition: transform 280ms cubic-bezier(.22, .75, .2, 1), visibility 280ms; } .gesture-drawer.open { transform: translateX(0); visibility: visible; } .gesture-drawer-header, .gesture-card-heading, .gesture-status-strip, .gesture-actions, .gesture-now, .gesture-footnote { display: flex; align-items: center; } .gesture-drawer-header { justify-content: space-between; gap: 18px; } .gesture-drawer-header h2 { margin: 2px 0 3px; color: #fff; font-size: 28px; letter-spacing: -0.04em; } .gesture-drawer-header p { margin: 0; color: #9db9b4; font-size: 12px; } .gesture-close { width: 38px; height: 38px; display: grid; place-items: center; flex: 0 0 auto; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 50%; color: #dff7f1; background: rgba(255, 255, 255, 0.06); cursor: pointer; } .gesture-status-strip { justify-content: space-between; gap: 12px; min-height: 35px; color: #9db9b4; font-size: 11px; } .gesture-state-pill { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 999px; color: #c4d8d4; background: rgba(255, 255, 255, 0.05); } .gesture-state-pill.armed, .gesture-state-pill.moving { color: #8cf5d5; border-color: rgba(66, 224, 184, 0.26); background: rgba(30, 174, 139, 0.11); } .gesture-state-pill.moving > i { animation: gesturePulse 1s infinite; } @keyframes gesturePulse { 50% { box-shadow: 0 0 0 8px rgba(25, 168, 137, 0); } } .gesture-camera-stage { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border: 1px solid rgba(142, 239, 216, 0.15); border-radius: 19px; background: #071112; box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.28); } .gesture-camera-stage video, .gesture-camera-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transform: scaleX(-1); } .gesture-camera-stage canvas { z-index: 2; pointer-events: none; } .gesture-camera-empty { position: absolute; inset: 0; z-index: 3; display: grid; place-content: center; justify-items: center; gap: 8px; padding: 28px; text-align: center; background: radial-gradient(circle at 50% 45%, rgba(28, 126, 113, 0.16), transparent 10rem); } .gesture-camera-empty[hidden] { display: none; } .gesture-camera-empty > span { width: 54px; height: 54px; display: grid; place-items: center; border: 1px solid rgba(125, 238, 212, 0.22); border-radius: 18px; color: #74e3c7; background: rgba(46, 176, 148, 0.09); } .gesture-camera-empty > span svg { width: 27px; height: 27px; } .gesture-camera-empty strong { color: #eafffa; } .gesture-camera-empty p { margin: 0; color: #7f9e98; font-size: 11px; } .gesture-live-badge { position: absolute; top: 11px; left: 11px; z-index: 4; display: flex; align-items: center; gap: 7px; padding: 5px 8px; border-radius: 999px; color: #d7fff4; background: rgba(7, 20, 21, 0.72); font-size: 9px; font-weight: 800; letter-spacing: .11em; backdrop-filter: blur(8px); } .gesture-live-badge[hidden] { display: none; } .gesture-now { display: grid; grid-template-columns: 1fr auto 1fr; gap: 12px; padding: 12px 14px; border: 1px solid rgba(255, 255, 255, 0.09); border-radius: 14px; background: rgba(255, 255, 255, 0.04); } .gesture-now > div { display: grid; gap: 3px; } .gesture-now > div:last-child { text-align: right; } .gesture-now span { color: #799891; font-size: 10px; } .gesture-now strong { overflow: hidden; color: #ebfff9; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; } .gesture-now > svg { color: #52766f; } .gesture-progress { height: 4px; overflow: hidden; border-radius: 999px; background: rgba(255, 255, 255, 0.07); } .gesture-progress i { width: 100%; height: 100%; display: block; border-radius: inherit; background: linear-gradient(90deg, #3bc9a7, #a4f2da); transform: scaleX(0); transform-origin: left; transition: transform 90ms linear; } .gesture-actions { display: grid; grid-template-columns: 1.35fr 1fr 1fr; gap: 8px; } .gesture-actions button, .gesture-customize button { min-height: 42px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid rgba(255, 255, 255, 0.11); border-radius: 11px; color: #cbe2dc; background: rgba(255, 255, 255, 0.05); font-weight: 700; cursor: pointer; } .gesture-actions button:disabled { opacity: .38; cursor: not-allowed; } .gesture-actions .gesture-primary { color: #072b27; border: 0; background: linear-gradient(135deg, #75e5c7, #32b99c); } .gesture-actions .gesture-primary.active { color: #ffd9d9; border: 1px solid rgba(255, 145, 145, 0.2); background: rgba(190, 54, 62, 0.16); } .gesture-guide-card { padding: 14px; border: 1px solid rgba(255, 255, 255, 0.09); border-radius: 16px; background: rgba(255, 255, 255, 0.035); } .gesture-card-heading { justify-content: space-between; margin-bottom: 11px; } .gesture-card-heading > div { display: grid; gap: 2px; } .gesture-card-heading span { color: #effffb; font-size: 13px; font-weight: 800; } .gesture-card-heading small { color: #78958f; font-size: 9px; } .gesture-card-heading button { color: #9adfce; background: rgba(64, 193, 163, 0.08); } .gesture-card-heading button.active { color: #d9fff4; background: rgba(64, 193, 163, 0.2); } .gesture-map-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; } .gesture-map-grid > div { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 5px; padding: 8px 9px; border-radius: 9px; color: #9db8b2; background: rgba(255, 255, 255, 0.035); font-size: 9px; } .gesture-map-grid span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .gesture-map-grid i { color: #486c64; font-style: normal; } .gesture-map-grid b { color: #8de6cf; } .gesture-customize { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(255, 255, 255, 0.08); } .gesture-customize[hidden] { display: none; } .gesture-customize > div { display: grid; gap: 2px; } .gesture-customize > div span { color: #78958f; font-size: 9px; } .gesture-customize > div strong { color: #e5faf4; font-size: 11px; } .gesture-customize select { color: #dff8f1; border-color: rgba(255, 255, 255, 0.12); background: #17302f; font-size: 10px; } .gesture-customize button { min-height: 34px; font-size: 10px; } .gesture-footnote { gap: 8px; margin-top: auto; padding: 10px 12px; border-radius: 11px; color: #84a69e; background: rgba(47, 133, 116, 0.08); font-size: 10px; line-height: 1.5; } .gesture-footnote svg { flex: 0 0 auto; color: #59caae; } @media (max-width: 1180px) { .workspace { grid-template-columns: 330px minmax(0, 1fr); } .runtime-badges .status-badge:not(#executionBadge) { display: none; } } @media (max-width: 820px) { .topbar { position: sticky; padding: 10px 14px; } .brand-block p, .status-badge { display: none; } .gesture-entry { min-height: 36px; padding: 0 10px; font-size: 11px; } .workspace { display: block; } .command-panel { position: static; width: auto; padding: 22px 16px; border-right: 0; border-bottom: 1px solid var(--line); } .main-panel { padding: 18px 12px 45px; } .example-group { grid-template-columns: 1fr 1fr; } .gesture-drawer { width: 100vw; padding: 18px 15px; border-left: 0; } } @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; } } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; min-height: 100vh; background: var(--bg); } button, textarea { font: inherit; letter-spacing: 0; } button { color: inherit; } button:focus-visible, textarea:focus-visible { outline: 3px solid rgba(50, 105, 168, 0.2); outline-offset: 2px; } svg { width: 18px; height: 18px; stroke-width: 1.8; } .topbar { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 12px 24px; background: var(--surface); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 20; } .brand-block, .brand-mark, .runtime-badges, .status-badge, .request-title-row, .matrix-stat, .section-title-row, .seat-identity, .thermal-states, .detail-heading, .code-toolbar, .frame-summary, .execution-summary, .result-item, .safety-strip, .example-command, .primary-action, .segment, .tab { display: flex; align-items: center; } .brand-block { gap: 12px; } .brand-mark { width: 42px; height: 42px; justify-content: center; color: white; background: var(--teal); border-radius: 6px; } .brand-mark svg { width: 25px; height: 25px; } .brand-block h1 { margin: 0; font-size: 19px; line-height: 1.25; } .brand-block p { margin: 4px 0 0; color: var(--muted); font-size: 10px; font-weight: 800; } .brand-block p span { padding: 0 5px; color: var(--line-strong); } .runtime-badges { flex-wrap: wrap; justify-content: flex-end; gap: 8px; } .status-badge { min-height: 30px; gap: 6px; padding: 5px 9px; border: 1px solid #b8d8d3; border-radius: 5px; background: var(--teal-soft); color: var(--teal-dark); font-size: 11px; font-weight: 800; white-space: nowrap; } .auth-logout { min-width: 31px; justify-content: center; padding: 5px; color: var(--muted); background: var(--surface-muted); border: 1px solid var(--line); cursor: pointer; } .auth-logout:hover { color: var(--red); border-color: #e1b7bb; } .auth-logout[hidden] { display: none; } .status-badge svg { width: 14px; height: 14px; } .status-badge.neutral { color: #42545e; background: #eef2f3; border-color: #d6dee1; } .status-badge.danger { color: var(--red); background: var(--red-soft); border-color: #efc6c9; } .workspace { min-height: calc(100vh - 70px); display: grid; grid-template-columns: 350px minmax(0, 1fr); } .command-panel { padding: 24px; background: var(--surface); border-right: 1px solid var(--line); overflow-y: auto; } .panel-heading { margin-bottom: 20px; } .section-kicker { display: block; margin-bottom: 5px; color: var(--teal); font-size: 10px; font-weight: 800; } .panel-heading h2, .request-header h2, .section-title-row h3, .coverage-section h3, .detail-heading h3 { margin: 0; } .panel-heading h2 { font-size: 21px; } label, .field-label { display: block; margin-bottom: 8px; color: #3d4b52; font-size: 12px; font-weight: 750; } .field-label-row { min-height: 32px; display: flex; align-items: center; justify-content: space-between; gap: 8px; } .field-label-row label { margin-bottom: 0; } .context-reset { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); background: transparent; border: 0; border-radius: 4px; cursor: pointer; } .context-reset:hover { color: var(--blue); background: var(--blue-soft); } .context-reset svg { width: 17px; height: 17px; } textarea { width: 100%; height: 122px; resize: vertical; padding: 13px 14px; color: var(--ink); background: var(--surface-muted); border: 1px solid var(--line-strong); border-radius: 6px; font-size: 14px; line-height: 1.65; } textarea:focus { border-color: var(--blue); background: white; } .field-group { margin-top: 18px; } .vehicle-select-control { min-height: 40px; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 9px; padding: 0 11px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-muted); } .vehicle-select-control svg { width: 17px; height: 17px; color: var(--teal); } .vehicle-select-control select { min-width: 0; width: 100%; height: 38px; border: 0; outline: 0; background: transparent; color: var(--ink); font: inherit; font-size: 13px; font-weight: 750; } .segmented { display: grid; grid-template-columns: 1fr 1fr; padding: 3px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface-muted); } .segment, .mode-option { min-height: 36px; justify-content: center; gap: 7px; border: 0; border-radius: 4px; background: transparent; color: var(--muted); font-size: 12px; font-weight: 700; cursor: pointer; } .segment.active, .mode-option.active { color: var(--ink); background: white; box-shadow: 0 1px 4px rgba(20, 41, 47, 0.1); } .segment:disabled, .mode-option:disabled { cursor: not-allowed; opacity: 0.48; } .approval-field input { width: 100%; min-height: 40px; margin-top: 8px; padding: 9px 11px; color: var(--ink); background: white; border: 1px solid var(--line-strong); border-radius: 6px; font: inherit; } .approval-field input:focus { outline: 0; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(38, 102, 159, 0.12); } .provider-note { min-height: 32px; margin: 8px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; } .primary-action { width: 100%; min-height: 45px; justify-content: center; gap: 9px; margin-top: 14px; color: white; background: var(--teal); border: 1px solid var(--teal); border-radius: 6px; font-weight: 750; cursor: pointer; } .primary-action:hover { background: var(--teal-dark); } .primary-action:disabled { cursor: wait; opacity: 0.7; } .primary-action.loading svg { animation: spin 0.9s linear infinite; } .example-group { margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--line); } .example-command { width: 100%; min-height: 42px; gap: 9px; padding: 8px 0; border: 0; border-bottom: 1px solid #e9eeec; background: transparent; text-align: left; cursor: pointer; } .example-command span { flex: 1; min-width: 0; font-size: 12px; } .example-command svg:first-child { color: var(--teal); } .example-command svg:last-child { width: 15px; color: #9aa7ac; } .warning-example svg:first-child { color: var(--amber); } .safety-strip { align-items: flex-start; gap: 10px; margin-top: 22px; padding: 12px; color: #6c4b12; background: var(--amber-soft); border-left: 3px solid var(--amber); } .safety-strip svg { flex: 0 0 auto; margin-top: 1px; } .safety-strip strong, .safety-strip span { display: block; } .safety-strip strong { margin-bottom: 3px; font-size: 12px; } .safety-strip span { font-size: 11px; line-height: 1.5; } .main-panel { min-width: 0; padding: 24px 28px 40px; overflow: auto; } .request-header { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-bottom: 18px; } .request-title-row { flex-wrap: wrap; gap: 10px; } .request-header h2 { font-size: 22px; } .request-header p { margin: 7px 0 0; color: var(--muted); font-family: "SFMono-Regular", Consolas, monospace; font-size: 11px; } .run-status { padding: 4px 7px; border-radius: 4px; font-size: 10px; font-weight: 850; } .run-status.idle { color: var(--muted); background: #e7eceb; } .run-status.processing { color: var(--blue); background: var(--blue-soft); } .run-status.succeeded { color: var(--teal-dark); background: var(--teal-soft); } .run-status.failed { color: var(--red); background: var(--red-soft); } .matrix-stat { flex: 0 0 auto; gap: 10px; padding-left: 22px; border-left: 1px solid var(--line); } .matrix-stat > svg { width: 24px; height: 24px; color: var(--blue); } .matrix-stat strong, .matrix-stat span { display: block; } .matrix-stat strong { font-size: 15px; } .matrix-stat span { margin-top: 2px; color: var(--muted); font-size: 9px; } .pipeline { min-height: 92px; display: grid; grid-template-columns: repeat(5, minmax(84px, 1fr) 18px) minmax(84px, 1fr); align-items: stretch; padding: 11px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow); overflow-x: auto; } .pipeline-step { min-width: 84px; min-height: 68px; display: grid; grid-template-columns: 20px 1fr; grid-template-rows: 1fr auto; align-items: center; gap: 2px 7px; padding: 8px; border-radius: 5px; color: var(--muted); } .pipeline-step span { grid-row: 1 / 3; align-self: start; color: #a0aaae; font: 700 9px "SFMono-Regular", Consolas, monospace; } .pipeline-step svg { width: 20px; height: 20px; } .pipeline-step b { align-self: end; font-size: 10px; white-space: nowrap; } .pipeline-step.active { color: var(--blue); background: var(--blue-soft); } .pipeline-step.succeeded { color: var(--teal-dark); background: var(--teal-soft); } .pipeline-step.failed { color: var(--red); background: var(--red-soft); } .pipeline-arrow { align-self: center; justify-self: center; width: 15px; color: #b4bfbb; } .cabin-band { margin-top: 22px; padding: 20px 0 22px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); } .cabin-heading h3 { margin: 0; font-size: 16px; } .domain-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .domain-panel { min-width: 0; min-height: 262px; padding: 15px; background: var(--surface); border: 1px solid var(--line); border-radius: 6px; overflow: hidden; } .domain-panel header { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: center; gap: 9px; } .domain-icon { width: 34px; height: 34px; display: grid; place-items: center; color: var(--teal); background: var(--teal-soft); border-radius: 5px; } .domain-icon svg { width: 18px; height: 18px; } .roof-panel .domain-icon { color: var(--blue); background: var(--blue-soft); } .ambient-panel .domain-icon { color: var(--amber); background: var(--amber-soft); } .domain-panel header strong, .domain-panel header small { display: block; } .domain-panel header strong { font-size: 13px; } .domain-panel header small { margin-top: 2px; color: var(--muted); font: 8px "SFMono-Regular", Consolas, monospace; } .device-state { padding: 4px 5px; color: var(--muted); background: #edf1f0; border-radius: 3px; font: 800 8px "SFMono-Regular", Consolas, monospace; } .domain-panel.active .device-state { color: var(--teal-dark); background: var(--teal-soft); } .climate-display { min-height: 96px; display: grid; grid-template-columns: 1fr 66px 1fr; align-items: center; gap: 7px; margin-top: 13px; padding: 8px 5px; background: #f3f8fa; border: 1px solid #dce6e9; } .zone-temperature { text-align: center; } .zone-temperature span, .zone-temperature strong { display: block; } .zone-temperature span { color: var(--muted); font-size: 9px; } .zone-temperature strong { margin-top: 3px; color: #216a8b; font: 700 25px "SFMono-Regular", Consolas, monospace; } .zone-temperature sup { font-size: 9px; } .passenger-temperature { border-left: 1px solid #dce6e9; } .airflow-visual { height: 56px; display: flex; align-items: flex-end; justify-content: center; gap: 3px; } .airflow-visual i { width: 5px; height: 13px; background: #d7e1e4; border-radius: 2px 2px 0 0; } .airflow-visual i:nth-child(2) { height: 18px; } .airflow-visual i:nth-child(3) { height: 24px; } .airflow-visual i:nth-child(4) { height: 31px; } .airflow-visual i:nth-child(5) { height: 38px; } .airflow-visual i:nth-child(6) { height: 45px; } .airflow-visual i:nth-child(7) { height: 52px; } .airflow-visual[data-level="1"] i:nth-child(-n + 1), .airflow-visual[data-level="2"] i:nth-child(-n + 2), .airflow-visual[data-level="3"] i:nth-child(-n + 3), .airflow-visual[data-level="4"] i:nth-child(-n + 4), .airflow-visual[data-level="5"] i:nth-child(-n + 5), .airflow-visual[data-level="6"] i:nth-child(-n + 6), .airflow-visual[data-level="7"] i { background: #3d91b5; animation: feedback-pulse 1.4s ease-in-out infinite; } .roof-visual { min-height: 96px; display: grid; place-items: center; margin-top: 13px; padding: 11px 15px; background: #eef2f3; border: 1px solid #dae1e3; } .roof-glass { width: min(100%, 230px); height: 67px; position: relative; overflow: hidden; background: rgba(105, 160, 185, 0.28); border: 3px solid #75868d; border-radius: 18px 18px 7px 7px; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35); } .roof-glass > i { width: 2px; height: 100%; position: absolute; top: 0; background: rgba(86, 105, 113, 0.5); } .roof-glass > i:nth-of-type(1) { left: 25%; } .roof-glass > i:nth-of-type(2) { left: 50%; } .roof-glass > i:nth-of-type(3) { left: 75%; } .roof-shade { width: 100%; height: 100%; position: absolute; right: 0; top: 0; z-index: 1; background: #c9cecc; border-left: 3px solid #8a9491; transition: width 320ms ease; } .ambient-visual { min-height: 96px; position: relative; display: grid; place-items: center; margin-top: 13px; background: #282d31; border: 1px solid #42494d; color: #b9c3c7; overflow: hidden; } .ambient-dashboard-sketch { width: 88%; height: 58px; position: absolute; top: 11px; left: 6%; border: 1px solid #5c676c; border-top: 5px solid #768287; border-radius: 16px 16px 5px 5px; background: linear-gradient(180deg, #333a3e 0 43%, #22282c 44% 100%); } .ambient-dashboard-top { width: 88%; height: 1px; position: absolute; top: 15px; left: 6%; background: #667176; } .ambient-center-screen { width: 24%; height: 25px; position: absolute; top: 20px; left: 8%; border: 2px solid #657177; border-radius: 3px; background: #131a1e; } .ambient-glovebox { width: 52%; height: 23px; position: absolute; top: 25px; right: 6%; border: 1px solid #505b60; border-radius: 2px 2px 7px 7px; background: #252c30; } .ambient-glovebox-lamp { width: 50%; position: absolute; top: 19px; right: 7%; z-index: 2; display: grid; grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 3px; } .ambient-line { height: 4px; display: block; background: #74d9ff; border-radius: 2px; box-shadow: 0 0 8px #74d9ff; } .ambient-location-label { position: absolute; right: 10%; bottom: 5px; color: #c9d4d8; font-size: 7px; font-weight: 750; letter-spacing: 0.04em; } .domain-readouts { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; margin: 10px 0 0; } .domain-readouts > div { min-width: 0; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 0; border-bottom: 1px solid #e6ebe9; font-size: 9px; } .domain-readouts dt { color: var(--muted); } .domain-readouts dd { min-width: 0; display: flex; align-items: center; gap: 5px; margin: 0; font-weight: 750; text-align: right; overflow-wrap: anywhere; } .color-swatch { width: 10px; height: 10px; flex: 0 0 auto; display: inline-block; background: #74d9ff; border: 1px solid rgba(23, 35, 43, 0.25); border-radius: 2px; } .twin-band { margin: 24px -28px 0; overflow: hidden; background: #eef3f1; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); } .twin-heading { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 15px 28px 10px; position: relative; z-index: 4; } .twin-heading h3 { margin: 0; font-size: 17px; } .preset-indicator { display: flex; align-items: center; gap: 5px; margin-top: 6px; color: var(--teal-dark); font-size: 9px; font-weight: 750; } .preset-indicator svg { width: 12px; height: 12px; } .preset-indicator[hidden] { display: none; } .twin-toolbar, .twin-selector { display: flex; align-items: center; } .twin-toolbar { gap: 8px; } .twin-selector { padding: 3px; background: rgba(255, 255, 255, 0.72); border: 1px solid #cbd7d3; border-radius: 6px; } .twin-seat-button { min-width: 58px; height: 31px; padding: 0 12px; color: var(--muted); background: transparent; border: 0; border-radius: 4px; font-size: 11px; font-weight: 750; cursor: pointer; } .twin-seat-button.active { color: var(--ink); background: white; box-shadow: 0 1px 5px rgba(24, 42, 48, 0.12); } .icon-button.twin-reset { color: #526269; background: rgba(255, 255, 255, 0.62); border: 1px solid #cbd7d3; } .icon-button.twin-reset:hover { color: var(--teal-dark); background: white; } .twin-stage { height: clamp(420px, 44vw, 560px); min-height: 420px; position: relative; overflow: hidden; cursor: grab; touch-action: none; user-select: none; } .twin-stage.dragging { cursor: grabbing; } #seatTwinCanvas { width: 100%; height: 100%; display: block; } .twin-seat-label { display: flex; align-items: center; gap: 6px; position: absolute; bottom: 26px; z-index: 2; color: #3b4c53; font-size: 10px; font-weight: 800; pointer-events: none; } .twin-seat-label.driver { left: 52%; } .twin-seat-label.passenger { left: 25%; } .twin-seat-label small { margin-left: 2px; color: #78878d; font: 7px "SFMono-Regular", Consolas, monospace; } .twin-seat-label i, .twin-feedback i { width: 7px; height: 7px; display: inline-block; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 4px rgba(8, 118, 110, 0.12); } .twin-seat-label.passenger i { background: var(--blue); box-shadow: 0 0 0 4px rgba(50, 105, 168, 0.12); } .twin-callout-layer { --callout-color: var(--teal); position: absolute; inset: 0; z-index: 4; overflow: hidden; pointer-events: none; } .twin-stage[data-selected-seat="passenger"] .twin-callout-layer { --callout-color: var(--blue); } .twin-callout { --leader-start-x: 0px; --leader-start-y: 0px; --leader-length: 0px; --leader-angle: 0rad; --leader-dx: 0px; --leader-dy: 0px; min-width: 78px; display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 2px 7px; position: absolute; padding: 6px 8px; color: white; background: rgba(27, 42, 48, 0.91); border-left: 2px solid var(--callout-color); border-radius: 3px; box-shadow: 0 4px 12px rgba(24, 39, 44, 0.16); transform: translate(-50%, -50%); white-space: nowrap; } .twin-callout::after { content: ""; width: var(--leader-length); height: 1px; position: absolute; top: calc(50% + var(--leader-start-y)); left: calc(50% + var(--leader-start-x)); background: var(--callout-color); box-shadow: 0 0 5px color-mix(in srgb, var(--callout-color) 72%, transparent); transform: rotate(var(--leader-angle)); transform-origin: left center; } .twin-callout::before { content: ""; width: 6px; height: 6px; position: absolute; top: calc(50% + var(--leader-dy) - 3px); left: calc(50% + var(--leader-dx) - 3px); border-radius: 50%; background: var(--callout-color); box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.62); } .twin-callout span { font-size: 8px; font-weight: 700; } .twin-callout b { color: #a8ded8; font: 750 10px "SFMono-Regular", Consolas, monospace; } .twin-stage[data-selected-seat="passenger"] .twin-callout b { color: #b9d5f2; } .twin-callout small { grid-column: 1 / -1; color: #9cabb0; font: 7px "SFMono-Regular", Consolas, monospace; } .twin-callout[hidden] { display: none; } .included-angle-callout { border-left-color: var(--amber); } .included-angle-callout b, .twin-stage[data-selected-seat="passenger"] .included-angle-callout b { color: #ffd28d; } .twin-orientation { display: flex; align-items: center; gap: 5px; position: absolute; right: 28px; bottom: 25px; z-index: 2; color: #64747a; font-size: 8px; font-weight: 750; pointer-events: none; } .twin-orientation svg { width: 13px; height: 13px; } .twin-readout { width: 238px; position: absolute; top: 22px; right: 28px; z-index: 3; padding: 15px 0 15px 18px; background: linear-gradient(90deg, rgba(238, 243, 241, 0.12), rgba(238, 243, 241, 0.94) 18%); border-left: 1px solid rgba(174, 189, 184, 0.72); pointer-events: none; } .twin-stage[data-selected-seat="driver"] .twin-readout { right: auto; left: 28px; padding: 15px 18px 15px 0; background: linear-gradient(270deg, rgba(238, 243, 241, 0.12), rgba(238, 243, 241, 0.94) 18%); border-right: 1px solid rgba(174, 189, 184, 0.72); border-left: 0; } .twin-readout-heading, .twin-thermal-row > span { display: flex; align-items: center; } .twin-readout-heading { justify-content: space-between; gap: 10px; padding-bottom: 13px; border-bottom: 1px solid rgba(174, 189, 184, 0.7); } .twin-readout-heading strong, .twin-readout-heading span { display: block; } .twin-readout-heading strong { font-size: 14px; } .twin-readout-heading > div span { margin-top: 2px; color: var(--muted); font: 9px "SFMono-Regular", Consolas, monospace; } .twin-readout-heading .twin-feedback { display: flex; align-items: center; gap: 7px; color: var(--teal-dark); font: 750 8px "SFMono-Regular", Consolas, monospace; } .twin-feedback i { width: 6px; height: 6px; animation: feedback-pulse 1.8s ease-in-out infinite; } .twin-axis-list { padding-top: 6px; } .twin-axis-list > div { --value: 0%; min-height: 40px; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 6px; position: relative; color: var(--muted); font-size: 10px; } .twin-axis-list b { color: var(--blue); font: 700 10px "SFMono-Regular", Consolas, monospace; } .twin-axis-list > div > i { grid-column: 1 / -1; width: 100%; height: 2px; position: relative; overflow: hidden; background: rgba(159, 176, 171, 0.34); } .twin-axis-list > div > i::after { content: ""; width: var(--value); height: 100%; display: block; background: var(--blue); transition: width 260ms ease; } .twin-axis-list > div.fault span, .twin-axis-list > div.fault b { color: var(--red); } .twin-axis-list > div.fault > i::after { background: var(--red); } .twin-thermal-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding-top: 12px; border-top: 1px solid rgba(174, 189, 184, 0.7); } .twin-thermal-row > span { min-width: 0; display: grid; grid-template-columns: 17px 1fr auto; align-items: center; gap: 6px; height: 42px; padding: 0 8px; color: var(--muted); background: rgba(255, 255, 255, 0.58); border: 1px solid rgba(203, 215, 211, 0.8); border-radius: 4px; font-size: 9px; } .twin-thermal-row > span > svg { width: 15px; height: 15px; } .twin-thermal-copy { min-width: 0; display: grid; gap: 2px; } .twin-thermal-copy small { color: inherit; font-size: 8px; } .twin-thermal-copy b { color: inherit; font: 700 9px "SFMono-Regular", Consolas, monospace; } .twin-level-meter { height: 12px; display: flex; align-items: end; gap: 2px; } .twin-level-meter i { width: 3px; height: 4px; display: block; background: #c8d2cf; border-radius: 1px 1px 0 0; } .twin-level-meter i:nth-child(2) { height: 7px; } .twin-level-meter i:nth-child(3) { height: 10px; } .twin-thermal-row span.on[data-twin-function="ventilation"] { color: #257bb5; background: rgba(226, 242, 250, 0.94); border-color: rgba(85, 166, 211, 0.5); } .twin-thermal-row span.on[data-twin-function="heating"] { color: #ce5535; background: rgba(255, 235, 226, 0.94); border-color: rgba(222, 112, 75, 0.52); } .twin-thermal-row span.on[data-level="1"] .twin-level-meter i:nth-child(1), .twin-thermal-row span.on[data-level="2"] .twin-level-meter i:nth-child(-n + 2), .twin-thermal-row span.on[data-level="3"] .twin-level-meter i { background: currentColor; } .twin-fallback { display: flex; align-items: center; gap: 8px; position: absolute; left: 28px; bottom: 24px; z-index: 5; color: var(--muted); font-size: 10px; } .twin-fallback svg { width: 14px; height: 14px; animation: spin 0.9s linear infinite; } .twin-fallback.error { color: var(--red); } .twin-fallback.error svg { animation: none; } .twin-fallback[hidden] { display: none; } .state-band { display: grid; grid-template-columns: minmax(0, 1fr) 260px; gap: 28px; margin-top: 20px; padding: 22px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); } .section-title-row { justify-content: space-between; gap: 16px; margin-bottom: 13px; } .section-title-row h3, .coverage-section h3 { font-size: 15px; } .simulation-label { color: var(--muted); font: 700 9px "SFMono-Regular", Consolas, monospace; } .seat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } .seat-card { min-height: 240px; padding: 15px; background: var(--surface); border: 1px solid var(--line); border-radius: 6px; } .motion-state-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; margin-top: 15px; padding-top: 13px; border-top: 1px solid var(--line); } .motion-axis { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; padding-bottom: 7px; overflow: hidden; color: var(--muted); font-size: 10px; } .motion-axis b { color: var(--blue); font-family: "SFMono-Regular", Consolas, monospace; } .motion-axis::after, .motion-axis i { content: ""; position: absolute; bottom: 0; left: 0; height: 3px; border-radius: 2px; } .motion-axis::after { width: 100%; background: #e3e9e7; } .motion-axis i { z-index: 1; width: 0; background: var(--blue); transition: width 240ms ease; } .motion-axis.fault b, .motion-axis.fault span { color: var(--red); } .motion-axis.fault i { background: var(--red); } .seat-identity { gap: 10px; } .seat-identity > svg { width: 31px; height: 31px; color: var(--blue); stroke-width: 1.5; } .seat-identity strong, .seat-identity span { display: block; } .seat-identity strong { font-size: 14px; } .seat-identity span { margin-top: 2px; color: var(--muted); font: 10px "SFMono-Regular", Consolas, monospace; } .thermal-states { gap: 7px; margin-top: 15px; } .thermal-states > span { min-width: 0; flex: 1; display: grid; grid-template-columns: 14px 1fr auto; align-items: center; gap: 4px; padding: 6px 7px; color: var(--muted); background: var(--surface-muted); border: 1px solid #e7ecea; border-radius: 4px; font-size: 10px; } .thermal-states svg { width: 13px; height: 13px; } .thermal-states b { color: var(--muted); } .thermal-states > span.on[data-function="ventilation"] { color: var(--blue); background: var(--blue-soft); border-color: #c4d8ee; } .thermal-states > span.on[data-function="heating"] { color: var(--amber); background: var(--amber-soft); border-color: #f0d4a2; } .thermal-states > span.on b { color: inherit; } .coverage-section { padding-left: 25px; border-left: 1px solid var(--line); } .coverage-section dl { margin: 12px 0 0; } .coverage-section dl div { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid #e4e9e7; font-size: 11px; } .coverage-section dt { color: var(--muted); } .coverage-section dd { margin: 0; font-weight: 750; } .coverage-section dd.available { color: var(--teal); } .coverage-section dd.simulated { color: var(--blue); } .coverage-section dd.blocked { color: var(--red); } .detail-section { margin-top: 20px; background: var(--surface); border: 1px solid var(--line); box-shadow: var(--shadow); } .tabs { min-height: 48px; display: flex; gap: 2px; padding: 0 14px; border-bottom: 1px solid var(--line); overflow-x: auto; } .tab { min-height: 48px; gap: 7px; padding: 0 13px; color: var(--muted); background: transparent; border: 0; border-bottom: 2px solid transparent; font-size: 11px; font-weight: 750; white-space: nowrap; cursor: pointer; } .tab.active { color: var(--teal-dark); border-bottom-color: var(--teal); } .tab-panel { min-height: 360px; padding: 20px; } .trace-layout { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 28px; } .detail-heading { justify-content: space-between; gap: 12px; margin-bottom: 12px; } .detail-heading h3 { font-size: 13px; } .detail-heading span { color: var(--muted); font: 10px "SFMono-Regular", Consolas, monospace; } .decision-list { margin: 0; padding: 0; list-style: none; counter-reset: decision; } .decision-list li { counter-increment: decision; display: grid; grid-template-columns: 24px 1fr; gap: 9px; padding: 9px 0; border-bottom: 1px solid #e7ecea; color: #3e4d54; font-size: 12px; line-height: 1.55; } .decision-list li::before { content: counter(decision, decimal-leading-zero); color: var(--teal); font: 750 10px "SFMono-Regular", Consolas, monospace; } .trace-list { border-left: 1px solid var(--line-strong); } .trace-event { position: relative; display: grid; grid-template-columns: 92px 1fr auto; gap: 10px; padding: 7px 0 7px 15px; font-size: 11px; } .trace-event::before { content: ""; position: absolute; left: -4px; top: 13px; width: 7px; height: 7px; background: var(--teal); border: 2px solid white; border-radius: 50%; } .trace-event.failed::before { background: var(--red); } .trace-event code { color: var(--blue); font-size: 10px; } .trace-event span { color: #415159; line-height: 1.45; } .trace-event small { color: var(--muted); } .validation-block { margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); } .validation-list { display: grid; gap: 7px; } .validation-item { display: grid; grid-template-columns: 62px 180px minmax(0, 1fr); gap: 10px; align-items: start; padding: 8px 10px; border-left: 3px solid var(--amber); background: var(--amber-soft); font-size: 11px; } .validation-item.error { border-left-color: var(--red); background: var(--red-soft); } .validation-item b { color: var(--amber); } .validation-item.error b { color: var(--red); } .validation-item code { overflow-wrap: anywhere; color: #55636a; } .empty-line { padding: 18px 0; color: #899499; font-size: 11px; } .code-panel { padding: 0; background: #17232b; } .code-toolbar { min-height: 48px; justify-content: space-between; gap: 12px; padding: 0 15px; color: #d7e0e3; background: #213039; border-bottom: 1px solid #31424b; } .code-toolbar > div { display: flex; align-items: center; gap: 8px; } .code-toolbar strong { font: 11px "SFMono-Regular", Consolas, monospace; } .file-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); } .file-dot.can { background: #3ea8a0; } .icon-button { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; color: #b8c5c9; background: transparent; border: 0; border-radius: 4px; cursor: pointer; } .icon-button:hover { color: white; background: #31424b; } pre { min-height: 312px; max-height: 520px; margin: 0; padding: 18px; overflow: auto; color: #d8e2e5; background: #17232b; font: 11px/1.65 "SFMono-Regular", Consolas, monospace; tab-size: 2; white-space: pre; } .frame-summary { min-height: 48px; gap: 11px; padding: 9px 15px; color: #d7e0e3; background: #101b21; border-bottom: 1px solid #31424b; font-size: 10px; overflow-x: auto; } .frame-summary span { color: #83959d; } .frame-summary b, .frame-summary code { margin-right: 12px; white-space: nowrap; } .frame-summary code { color: #83d1c9; } .execution-summary { gap: 13px; min-height: 68px; padding: 13px 15px; background: var(--surface-muted); border-left: 4px solid var(--line-strong); } .execution-summary.succeeded { background: var(--teal-soft); border-left-color: var(--teal); } .execution-summary.failed { background: var(--red-soft); border-left-color: var(--red); } .execution-summary > svg { width: 27px; height: 27px; } .execution-summary strong, .execution-summary span { display: block; } .execution-summary strong { font-size: 13px; } .execution-summary span { margin-top: 3px; color: var(--muted); font-size: 11px; } .result-list { margin-top: 14px; } .result-item { align-items: flex-start; gap: 12px; padding: 13px 4px; border-bottom: 1px solid var(--line); } .result-item > svg { flex: 0 0 auto; color: var(--teal); } .result-item > div { flex: 1; min-width: 0; } .result-item strong, .result-item span { display: block; } .result-item strong { font-size: 12px; } .result-item span { margin-top: 4px; color: var(--muted); font-size: 11px; overflow-wrap: anywhere; } .result-item code { flex: 0 0 auto; padding: 4px 6px; color: var(--blue); background: var(--blue-soft); border-radius: 3px; font-size: 10px; } .toast { position: fixed; right: 20px; bottom: 20px; max-width: min(360px, calc(100vw - 40px)); padding: 10px 13px; color: white; background: #213039; border-radius: 5px; box-shadow: var(--shadow); font-size: 11px; opacity: 0; transform: translateY(10px); pointer-events: none; transition: 160ms ease; z-index: 50; } .toast.show { opacity: 1; transform: translateY(0); } /* Compact joint vehicle twin ------------------------------------------------ */ .joint-twin-shell { display: grid; grid-template-columns: minmax(430px, 1.1fr) minmax(360px, 0.9fr); gap: 14px; margin-top: 22px; padding: 18px; background: linear-gradient(145deg, #eef4f2 0%, #f7f9f8 52%, #edf3f5 100%); border: 1px solid #cfdad6; border-radius: 9px; box-shadow: 0 9px 28px rgba(28, 49, 54, 0.06); } .joint-twin-heading { grid-column: 1 / -1; display: flex; align-items: end; justify-content: space-between; gap: 22px; padding: 1px 2px 4px; } .joint-twin-heading h3 { margin: 0; font-size: 18px; } .joint-twin-heading p { margin: 6px 0 0; color: var(--muted); font-size: 11px; } .joint-scope { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; justify-content: flex-end; } .joint-scope > span { min-height: 28px; display: inline-flex; align-items: center; gap: 5px; padding: 5px 7px; color: #3c565b; background: rgba(255, 255, 255, 0.78); border: 1px solid #d4dfdc; border-radius: 5px; font-size: 9px; font-weight: 800; } .joint-scope svg { width: 13px; height: 13px; color: var(--teal); } .joint-scope > svg { width: 10px; height: 10px; color: #96a5a1; } .joint-twin-shell > .twin-band, .joint-twin-shell > .cabin-band { min-width: 0; margin: 0; background: rgba(255, 255, 255, 0.82); border: 1px solid #d4dedb; border-radius: 7px; overflow: hidden; } .joint-twin-shell > .twin-band { align-self: stretch; } .joint-twin-shell .twin-heading { min-height: 58px; padding: 12px 14px 9px; background: rgba(255, 255, 255, 0.76); border-bottom: 1px solid #d8e1de; } .joint-twin-shell .twin-heading h3 { font-size: 15px; } .twin-focus-badge { min-height: 27px; display: inline-flex; align-items: center; gap: 5px; padding: 4px 7px; color: #2f659c; background: var(--blue-soft); border: 1px solid #c7d9ec; border-radius: 4px; font: 750 8px "SFMono-Regular", Consolas, monospace; } .twin-focus-badge svg { width: 13px; height: 13px; } .joint-twin-shell .twin-stage { height: 430px; min-height: 430px; background: #e8eeec; } .joint-twin-shell .twin-readout { display: none; } .joint-twin-shell .twin-seat-label.passenger { left: 18px; bottom: 18px; } .vehicle-system-hud { display: grid; gap: 6px; position: absolute; top: 14px; left: 14px; z-index: 5; pointer-events: none; } .vehicle-system-hud > span { min-width: 132px; display: grid; grid-template-columns: 18px minmax(0, 1fr); align-items: center; gap: 1px 7px; padding: 7px 9px; color: #d5e0e3; background: rgba(24, 39, 45, 0.82); border: 1px solid rgba(145, 171, 178, 0.24); border-left: 2px solid #72888e; border-radius: 4px; box-shadow: 0 5px 14px rgba(20, 34, 40, 0.14); backdrop-filter: blur(7px); } .vehicle-system-hud > span.active { border-left-color: #49b8ae; background: rgba(17, 55, 58, 0.88); } .vehicle-system-hud svg { width: 15px; height: 15px; grid-row: 1 / 3; color: #9cc9d5; } .vehicle-system-hud small, .vehicle-system-hud b { display: block; } .vehicle-system-hud small { color: #91a4aa; font-size: 7px; font-weight: 800; } .vehicle-system-hud b { overflow: hidden; color: white; font: 700 8px "SFMono-Regular", Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; } .joint-twin-shell .twin-orientation { right: 16px; bottom: 18px; } .joint-twin-shell [data-callout="legrest_extension"] { display: none !important; } .seat-axis-unavailable { display: none !important; } .joint-twin-shell .twin-callout { min-width: 67px; padding: 5px 6px; background: rgba(24, 39, 45, 0.82); } .joint-twin-shell .twin-callout span, .joint-twin-shell .twin-callout small { font-size: 7px; } .joint-twin-shell .twin-callout b { font-size: 9px; } .joint-twin-shell > .cabin-band { padding: 12px; border-top: 1px solid #d4dedb; border-bottom: 1px solid #d4dedb; } .joint-twin-shell .cabin-heading { align-items: center; margin-bottom: 9px; } .joint-twin-shell .cabin-heading h3 { font-size: 14px; } .joint-twin-shell .cabin-heading .simulation-label { max-width: 210px; text-align: right; font-size: 7px; } .joint-twin-shell .domain-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; } .joint-twin-shell .domain-panel { min-height: 190px; padding: 11px; border-radius: 6px; box-shadow: 0 2px 8px rgba(25, 43, 49, 0.025); } .joint-twin-shell .domain-panel header { grid-template-columns: 30px minmax(0, 1fr) auto; gap: 7px; } .joint-twin-shell .domain-icon { width: 30px; height: 30px; } .joint-twin-shell .climate-display, .joint-twin-shell .roof-visual, .joint-twin-shell .ambient-visual { min-height: 56px; margin-top: 8px; } .joint-twin-shell .climate-display { grid-template-columns: 1fr 58px 1fr; padding: 4px; } .joint-twin-shell .zone-temperature strong { font-size: 20px; } .joint-twin-shell .airflow-visual { height: 43px; } .joint-twin-shell .airflow-visual i:nth-child(1) { height: 8px; } .joint-twin-shell .airflow-visual i:nth-child(2) { height: 12px; } .joint-twin-shell .airflow-visual i:nth-child(3) { height: 17px; } .joint-twin-shell .airflow-visual i:nth-child(4) { height: 22px; } .joint-twin-shell .airflow-visual i:nth-child(5) { height: 27px; } .joint-twin-shell .airflow-visual i:nth-child(6) { height: 33px; } .joint-twin-shell .airflow-visual i:nth-child(7) { height: 39px; } .joint-twin-shell .roof-visual { padding: 6px 12px; } .joint-twin-shell .roof-glass { height: 45px; border-radius: 13px 13px 5px 5px; } .joint-twin-shell .ambient-dashboard-sketch { height: 36px; top: 7px; border-top-width: 3px; border-radius: 10px 10px 4px 4px; } .joint-twin-shell .ambient-dashboard-top { top: 9px; } .joint-twin-shell .ambient-center-screen { height: 16px; top: 12px; border-width: 1px; } .joint-twin-shell .ambient-glovebox { height: 14px; top: 16px; } .joint-twin-shell .ambient-glovebox-lamp { top: 12px; gap: 2px; } .joint-twin-shell .ambient-line { height: 3px; } .joint-twin-shell .ambient-location-label { right: 8%; bottom: 2px; font-size: 6px; } .joint-twin-shell .domain-readouts { gap: 0 10px; margin-top: 5px; } .joint-twin-shell .domain-readouts > div { padding: 4px 0; font-size: 8px; } .joint-seat-panel { position: relative; } .joint-seat-panel > .simulation-label { display: block; margin-bottom: 8px; color: #2f659c; font-size: 7px; text-align: right; } .joint-seat-panel .seat-identity > svg { width: 26px; height: 26px; } .joint-seat-panel .seat-identity strong { font-size: 13px; } .joint-seat-panel .thermal-states { margin-top: 9px; } .joint-seat-panel .thermal-states > span { padding: 5px 6px; font-size: 8px; } .joint-seat-panel .motion-state-grid { gap: 7px 10px; margin-top: 9px; padding-top: 8px; } .joint-seat-panel .motion-axis { gap: 5px; padding-bottom: 6px; font-size: 8px; } .joint-hardware-boundary { grid-column: 1 / -1; display: grid; grid-template-columns: 170px minmax(0, 1fr); gap: 18px; align-items: center; padding: 12px 14px; background: rgba(255, 255, 255, 0.62); border: 1px solid #d4dedb; border-radius: 6px; } .joint-hardware-boundary h3 { font-size: 13px; } .joint-hardware-boundary > .section-kicker, .joint-hardware-boundary > h3 { grid-column: 1; grid-row: 1; align-self: start; } .joint-hardware-boundary > h3 { margin-top: 18px; } .joint-hardware-boundary dl { grid-column: 2; grid-row: 1; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 0; } .joint-hardware-boundary dl div { min-width: 0; display: grid; gap: 5px; align-content: center; padding: 8px 9px; background: #f7f9f8; border: 1px solid #e0e7e4; border-radius: 4px; font-size: 8px; } /* Human-readable configuration cards --------------------------------------- */ #panel-config.config-panel { padding: 20px; background: #f6f8f7; } .config-panel-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; margin-bottom: 16px; } .config-panel-heading h3 { margin: 0; font-size: 17px; } .config-panel-heading p { margin: 5px 0 0; color: var(--muted); font-size: 10px; } .config-actions { display: flex; gap: 7px; } .config-action { min-height: 32px; display: inline-flex; align-items: center; gap: 6px; padding: 6px 9px; color: #3e5359; background: white; border: 1px solid #ccd8d4; border-radius: 4px; font-size: 9px; font-weight: 750; cursor: pointer; } .config-action:hover { color: var(--teal-dark); border-color: #94bdb7; } .config-action svg { width: 13px; height: 13px; } .config-card-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .config-empty { grid-column: 1 / -1; min-height: 190px; display: grid; place-items: center; align-content: center; gap: 7px; color: var(--muted); background: white; border: 1px dashed #c8d4d0; border-radius: 6px; text-align: center; } .config-empty svg { width: 28px; height: 28px; color: #8da19c; } .config-empty strong { color: #3c4e54; font-size: 13px; } .config-empty span { max-width: 430px; font-size: 10px; } .config-scene-summary { grid-column: 1 / -1; min-height: 62px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 10px 12px; color: white; background: linear-gradient(108deg, #19353a, #28545a); border-radius: 6px; } .config-scene-copy, .config-scene-stats, .config-card-identity, .config-hardware-route { display: flex; align-items: center; } .config-scene-copy { gap: 10px; } .config-scene-icon { width: 36px; height: 36px; display: grid; place-items: center; color: #bce7e1; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 5px; } .config-scene-copy strong, .config-scene-copy span { display: block; } .config-scene-copy strong { font-size: 12px; } .config-scene-copy span { margin-top: 3px; color: #aac2c5; font-size: 8px; } .config-scene-stats { gap: 20px; } .config-scene-stats > span { display: grid; justify-items: end; gap: 2px; } .config-scene-stats b { color: #bce7e1; font: 750 15px "SFMono-Regular", Consolas, monospace; } .config-scene-stats small { color: #aac2c5; font-size: 7px; } .config-card { --config-accent: var(--teal); min-width: 0; overflow: hidden; background: white; border: 1px solid #d6dfdc; border-top: 3px solid var(--config-accent); border-radius: 6px; box-shadow: 0 4px 14px rgba(25, 43, 49, 0.045); } .config-card.config-seat { --config-accent: #3269a8; } .config-card.config-climate { --config-accent: #08766e; } .config-card.config-ambient { --config-accent: #c07316; } .config-card.config-roof { --config-accent: #687a96; } .config-card-header { min-height: 57px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border-bottom: 1px solid #e5ebe9; } .config-card-identity { min-width: 0; gap: 9px; } .config-card-icon { width: 32px; height: 32px; flex: 0 0 auto; display: grid; place-items: center; color: var(--config-accent); background: color-mix(in srgb, var(--config-accent) 10%, white); border-radius: 5px; } .config-card-icon svg { width: 16px; height: 16px; } .config-card-identity small, .config-card-identity strong { display: block; } .config-card-identity small { margin-bottom: 3px; color: var(--muted); font: 7px "SFMono-Regular", Consolas, monospace; } .config-card-identity strong { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } .config-domain-badge { flex: 0 0 auto; padding: 4px 6px; color: var(--config-accent); background: color-mix(in srgb, var(--config-accent) 9%, white); border-radius: 3px; font-size: 8px; font-weight: 800; } .config-object-block, .config-parameters-block, .config-hardware-block { padding: 10px 12px; border-bottom: 1px solid #e8edeb; } .config-block-label { display: block; margin-bottom: 7px; color: #82908d; font-size: 8px; font-weight: 800; } .config-object-name, .config-object-path { display: block; } .config-object-name { font-size: 13px; } .config-object-path { margin-top: 4px; color: #71807d; font: 8px "SFMono-Regular", Consolas, monospace; } .config-parameter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .config-parameter { min-width: 0; display: grid; gap: 3px; padding: 7px 8px; background: #f6f8f7; border: 1px solid #e4eae8; border-radius: 4px; } .config-parameter > span { color: var(--muted); font-size: 8px; } .config-parameter > strong { display: flex; align-items: center; gap: 5px; color: var(--config-accent); font: 750 11px "SFMono-Regular", Consolas, monospace; overflow-wrap: anywhere; } .config-color-swatch { width: 10px; height: 10px; flex: 0 0 auto; border: 1px solid rgba(23, 35, 43, 0.22); border-radius: 2px; } .config-hardware-block { background: #fbfcfc; } .config-hardware-route { gap: 7px; } .config-route-node { min-width: 0; flex: 1; padding: 7px 8px; background: white; border: 1px solid #dce5e2; border-radius: 4px; } .config-route-node.target { border-color: color-mix(in srgb, var(--config-accent) 34%, #dce5e2); } .config-route-node small, .config-route-node strong { display: block; } .config-route-node small { margin-bottom: 3px; color: var(--muted); font-size: 7px; } .config-route-node strong { overflow: hidden; font: 700 8px "SFMono-Regular", Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; } .config-route-arrow { width: 16px; flex: 0 0 auto; color: var(--config-accent); } .config-route-arrow > svg { width: 14px; height: 14px; } .config-signal-list { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 7px; } .config-signal-list code { padding: 3px 4px; color: #40575c; background: #edf2f0; border-radius: 2px; font-size: 7px; } .config-signal-list .config-signal-more { color: var(--config-accent); } .config-unmapped-note { color: var(--amber); font-size: 8px; } .config-card-footer { min-height: 35px; display: flex; align-items: center; gap: 6px; padding: 7px 12px; color: #768480; background: #f7f9f8; font-size: 7px; } .config-card-footer span { padding-right: 6px; border-right: 1px solid #dce3e1; } .config-card-footer span:last-child { padding-right: 0; border-right: 0; } .config-source-details { margin-top: 14px; overflow: hidden; background: #17232b; border: 1px solid #31424b; border-radius: 6px; } .config-source-details summary { min-height: 44px; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 8px 12px; color: #d7e0e3; background: #213039; cursor: pointer; list-style: none; } .config-source-details summary::-webkit-details-marker { display: none; } .config-source-details summary > span { display: inline-flex; align-items: center; gap: 7px; font-size: 9px; font-weight: 750; } .config-source-details summary svg { width: 13px; height: 13px; color: #83d1c9; } .config-source-details summary small { color: #93a4aa; font: 8px "SFMono-Regular", Consolas, monospace; } .config-source-details:not([open]) #configCode { display: none; } /* One-page orchestration result workspace ---------------------------------- */ .main-panel { overflow: visible; } .result-workspace.detail-section { margin-top: 22px; background: transparent; border: 0; box-shadow: none; } .result-workspace-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 22px; margin-bottom: 12px; padding: 2px; } .result-workspace-heading h3, .workspace-panel-title h3 { margin: 0; } .result-workspace-heading h3 { font-size: 18px; } .result-workspace-heading p, .workspace-panel-title p { margin: 5px 0 0; color: var(--muted); font-size: 10px; } .result-workspace-badge { min-height: 29px; display: inline-flex; align-items: center; gap: 6px; padding: 5px 8px; color: #456066; background: white; border: 1px solid #cedad6; border-radius: 5px; font: 750 8px "SFMono-Regular", Consolas, monospace; } .result-workspace-badge svg { width: 13px; height: 13px; color: var(--teal); } .result-nav.tabs { min-height: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; position: sticky; top: 78px; z-index: 12; padding: 9px; background: rgba(244, 247, 246, 0.94); border: 1px solid #d3ddda; border-radius: 7px; box-shadow: 0 6px 20px rgba(25, 43, 49, 0.07); backdrop-filter: blur(12px); overflow: visible; } .result-nav .tab { min-width: 0; min-height: 60px; display: grid; grid-template-columns: 21px 22px minmax(0, 1fr) 13px; align-items: center; gap: 7px; padding: 8px 9px; color: #53656b; background: white; border: 1px solid #dce4e1; border-radius: 5px; text-align: left; transition: border-color 160ms ease, background 160ms ease, transform 160ms ease; } .result-nav .tab:hover { color: var(--teal-dark); border-color: #a9c9c3; transform: translateY(-1px); } .result-nav .tab.active { color: var(--teal-dark); background: #edf7f5; border-color: #8fc0b8; border-bottom-color: #8fc0b8; } .result-nav .tab-index { color: #94a29e; font: 750 8px "SFMono-Regular", Consolas, monospace; } .result-nav .tab > svg { width: 16px; height: 16px; } .result-nav .tab > svg:last-child { width: 11px; height: 11px; color: #99a6a2; } .tab-copy { min-width: 0; display: grid; gap: 3px; } .tab-copy strong { overflow: hidden; color: inherit; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; } .tab-copy small { overflow: hidden; color: #7c8a87; font: 7px "SFMono-Regular", Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; } .result-workspace .tab-panel, .result-workspace .tab-panel[hidden] { min-height: 0; display: block; margin-top: 12px; padding: 20px; background: white; border: 1px solid #d7e0dd; border-radius: 7px; box-shadow: 0 6px 18px rgba(25, 43, 49, 0.045); scroll-margin-top: 160px; transition: border-color 180ms ease, box-shadow 180ms ease; } .result-workspace .tab-panel.navigation-focus { border-color: #70aaa1; box-shadow: 0 0 0 3px rgba(8, 118, 110, 0.1), 0 8px 22px rgba(25, 43, 49, 0.07); } .workspace-panel-title { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 17px; padding-bottom: 13px; border-bottom: 1px solid #e1e7e5; } .workspace-panel-title h3 { font-size: 16px; } .workspace-panel-state { flex: 0 0 auto; padding: 5px 7px; color: #64747a; background: #edf1f0; border-radius: 4px; font: 800 8px "SFMono-Regular", Consolas, monospace; } .workspace-panel-state.succeeded { color: var(--teal-dark); background: var(--teal-soft); } .workspace-panel-state.failed { color: var(--red); background: var(--red-soft); } .result-workspace #panel-config.config-panel { padding: 20px; background: #f6f8f7; } .result-workspace .config-panel-heading { padding-bottom: 13px; border-bottom: 1px solid #dfe6e3; } .plan-panel .frame-summary { min-height: 50px; border: 1px solid #31424b; border-radius: 5px; } .plan-source-details { margin-top: 10px; } .result-panel .execution-summary { border-radius: 5px; } @keyframes spin { to { transform: rotate(360deg); } } @keyframes feedback-pulse { 50% { opacity: 0.42; } } @media (max-width: 1050px) { .workspace { grid-template-columns: 310px minmax(0, 1fr); } .state-band { grid-template-columns: 1fr; } .domain-grid { grid-template-columns: 1fr 1fr; } .ambient-panel { grid-column: 1 / -1; } .coverage-section { padding: 0; border-left: 0; } .trace-layout { grid-template-columns: 1fr; } .joint-twin-shell { grid-template-columns: 1fr; } .joint-twin-shell > .twin-band, .joint-twin-shell > .cabin-band { grid-column: 1; } .joint-hardware-boundary dl { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 760px) { .topbar { align-items: flex-start; padding: 11px 14px; } .runtime-badges .status-badge.neutral { display: none; } .brand-block h1 { font-size: 16px; } .workspace { display: block; } .command-panel { padding: 20px 16px; border-right: 0; border-bottom: 1px solid var(--line); } .main-panel { padding: 20px 14px 32px; } .joint-twin-shell { gap: 11px; margin-top: 18px; padding: 11px; } .joint-twin-heading, .config-panel-heading, .result-workspace-heading, .workspace-panel-title { align-items: flex-start; flex-direction: column; } .joint-scope { justify-content: flex-start; } .joint-twin-shell .twin-stage { height: 350px; min-height: 350px; display: block; } .joint-twin-shell #seatTwinCanvas { height: 100%; min-height: 350px; flex-basis: auto; } .vehicle-system-hud { top: 10px; left: 10px; gap: 4px; } .vehicle-system-hud > span { min-width: 116px; padding: 5px 7px; } .joint-twin-shell .domain-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .joint-hardware-boundary { grid-template-columns: 1fr; } .joint-hardware-boundary dl { grid-column: 1; grid-row: 2; grid-template-columns: repeat(2, minmax(0, 1fr)); } #panel-config.config-panel { padding: 14px; } .config-actions { width: 100%; } .config-action { flex: 1; justify-content: center; } .config-card-grid { grid-template-columns: 1fr; } .result-nav.tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); top: 68px; } .result-workspace .tab-panel, .result-workspace #panel-config.config-panel { padding: 14px; scroll-margin-top: 220px; } .twin-band { margin-right: -14px; margin-left: -14px; } .twin-heading { padding-right: 14px; padding-left: 14px; } .twin-stage { height: auto; min-height: 0; display: flex; flex-direction: column; } #seatTwinCanvas { height: 370px; flex: 0 0 370px; } .twin-stage[data-selected-seat] .twin-readout { width: auto; position: static; right: auto; left: auto; margin: 0 14px 14px; padding: 12px; background: rgba(238, 243, 241, 0.92); border: 1px solid rgba(174, 189, 184, 0.82); } .twin-callout { min-width: 64px; padding: 5px 6px; } .twin-callout span { font-size: 7px; } .twin-callout b { font-size: 9px; } .twin-callout small { font-size: 6px; } .included-angle-callout { top: 38px !important; transform: none; } [data-callout="backrest_included_angle"] { left: 14px !important; } [data-callout="legrest_included_angle"] { right: 14px; left: auto !important; } .included-angle-callout::before, .included-angle-callout::after { display: none; } .twin-orientation { top: 10px; right: 12px; bottom: auto; } .twin-axis-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 8px 0 10px; } .twin-axis-list > div { min-height: 58px; display: grid; grid-template-columns: 1fr; align-content: space-between; gap: 3px; } .twin-axis-list > div > i { grid-column: 1; } .twin-seat-label { display: none; } .request-header { align-items: flex-start; } .domain-grid { grid-template-columns: 1fr; } .ambient-panel { grid-column: auto; } .matrix-stat { padding-left: 12px; } .seat-grid { grid-template-columns: 1fr; } .tabs { padding: 0 5px; } .tab { padding: 0 9px; } .tab-panel { padding: 15px; } .code-panel { padding: 0; } .validation-item { grid-template-columns: 56px 1fr; } .validation-item span { grid-column: 1 / -1; } .result-item { display: grid; grid-template-columns: 20px 1fr; } .result-item code { grid-column: 2; justify-self: start; } } @media (max-width: 460px) { .topbar { gap: 10px; } .brand-mark { width: 36px; height: 36px; } .runtime-badges { gap: 4px; } .status-badge { padding: 5px 6px; font-size: 9px; } .status-badge svg { display: none; } .request-header { display: block; } .twin-heading { align-items: flex-start; } .twin-heading h3 { font-size: 15px; } .joint-twin-heading p { line-height: 1.5; } .joint-scope > svg { display: none; } .result-workspace-badge { max-width: 100%; white-space: normal; } .result-nav .tab { min-height: 54px; grid-template-columns: 18px 18px minmax(0, 1fr); padding: 7px; } .result-nav .tab > svg:last-child { display: none; } .joint-twin-shell .domain-grid { grid-template-columns: 1fr; } .joint-hardware-boundary dl { grid-template-columns: 1fr; } .config-scene-summary { align-items: flex-start; flex-direction: column; } .config-scene-stats { width: 100%; justify-content: space-between; } .config-scene-stats > span { justify-items: start; } .twin-seat-button { min-width: 46px; padding: 0 8px; } .twin-stage { height: auto; min-height: 0; } #seatTwinCanvas { height: 350px; flex-basis: 350px; } .twin-readout-heading .twin-feedback { font-size: 7px; } .twin-axis-list > div { font-size: 9px; } .matrix-stat { margin-top: 14px; padding: 10px 0 0; border-left: 0; border-top: 1px solid var(--line); } .thermal-states { display: grid; grid-template-columns: 1fr 1fr; } .trace-event { grid-template-columns: 80px 1fr; } .trace-event small { grid-column: 2; } }