d1-simulator / studio.css
Jaward's picture
Update studio.css
e5f4d9d verified
Raw History Blame Contribute Delete
89.4 kB
:root {
color-scheme: dark;
--bg: #101516;
--card: #1a2224;
--line: #2d393c;
--muted: #99aaad;
--accent: #c0eb9d;
--text: #edf3ee
}
* {
box-sizing: border-box
}
body {
margin: 0;
background: var(--bg);
color: var(--text);
font: 14px/1.5 system-ui, -apple-system, sans-serif
}
aside {
width: 235px;
position: fixed;
inset: 0 auto 0 0;
background: #151c1e;
border-right: 1px solid var(--line);
padding: 30px 20px;
display: flex;
flex-direction: column
}
a {
color: inherit;
text-decoration: none
}
.brand {
font-size: 18px;
font-weight: 650;
display: flex;
gap: 9px;
align-items: center;
flex-wrap: wrap
}
.brand small {
margin-left: 44px;
font: 10px monospace;
letter-spacing: .25em;
color: var(--muted)
}
.mark {
border: 1px solid var(--accent);
color: var(--accent);
padding: 5px;
border-radius: 8px;
font-size: 15px
}
nav {
display: grid;
gap: 7px;
/* margin-top: 50px */
}
nav a {
padding: 12px;
border-radius: 8px;
color: var(--muted);
display: flex;
gap: 15px
}
nav a.active,
nav a:hover {
background: #26322c;
color: var(--accent)
}
.sidebar-bottom {
margin-top: auto;
color: var(--muted);
font-size: 12px
}
.dot {
display: inline-block;
width: 6px;
height: 6px;
background: var(--accent);
border-radius: 50%;
margin-right: 6px
}
main {
margin-left: 235px;
padding: 40px 48px;
max-width: 1800px
}
.eyebrow {
font: 11px monospace;
letter-spacing: .17em;
color: var(--accent);
text-transform: uppercase
}
h1 {
font-size: 38px;
line-height: 1.15;
letter-spacing: -1.2px;
margin: 14px 0
}
h2 {
font-size: 20px;
font-weight: 550
}
h3 {
font-size: 17px;
font-weight: 550
}
p {
color: var(--muted)
}
.hero {
padding: 24px 0 32px
}
.search {
width: 100%;
padding: 17px 20px;
margin-top: 20px;
background: var(--card);
border: 1px solid var(--line);
border-radius: 12px;
color: var(--text);
font-size: 15px
}
.section-head {
display: flex;
align-items: center;
gap: 20px;
justify-content: space-between;
margin: 30px 0 12px
}
.section-head a {
color: var(--accent);
font-size: 13px
}
.tabs {
display: flex;
gap: 10px;
margin: 12px 0 20px
}
.tabs button {
border: 0;
background: transparent;
color: var(--muted);
padding: 8px 18px
}
.tabs button.active {
background: #29362d;
color: var(--accent)
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(245px, 1fr));
gap: 16px
}
.card {
background: var(--card);
border: 1px solid var(--line);
border-radius: 13px;
padding: 24px;
display: flex;
flex-direction: column;
min-height: 200px
}
.card .tag {
padding-top: 18px;
font: 14px monospace;
color: var(--accent);
text-transform: uppercase
}
.card p {
font-size: 13px;
flex: 1;
margin: 0 0 20px
}
.card h3 {
margin: 18px 0 8px
}
.actions {
display: flex;
gap: 8px;
align-items: center;
flex-wrap: wrap
}
button,
.button,
select,
input {
font: inherit;
border-radius: 7px;
border: 1px solid var(--line);
padding: 9px 13px;
background: #253034;
color: var(--text)
}
button,
.button {
cursor: pointer
}
button:hover,
.button:hover {
border-color: var(--accent)
}
button:disabled {
opacity: .4;
cursor: not-allowed
}
.primary {
background: var(--accent);
border-color: var(--accent);
color: #1b291b;
font-weight: 600
}
.danger {
color: #ffb4ad;
border-color: #663c3b
}
input[type=range] {
padding: 0;
width: 100%;
accent-color: var(--accent)
}
input:not([type=range]) {
min-width: 0
}
select {
min-width: 110px
}
.empty {
padding: 35px;
border: 1px dashed var(--line);
border-radius: 12px;
color: var(--muted)
}
.stats {
display: flex;
gap: 30px;
padding: 20px 0;
color: var(--muted);
flex-wrap: wrap
}
.stats strong {
color: var(--text);
font-size: 24px;
display: block
}
.note {
border-left: 2px solid var(--accent);
padding: 12px 18px;
background: var(--card);
color: var(--muted);
margin: 20px 0
}
dialog {
width: min(900px, 90vw);
max-height: 88vh;
background: var(--bg);
color: var(--text);
border: 1px solid var(--line);
border-radius: 15px;
padding: 25px
}
dialog::backdrop {
background: #000a
}
dialog header {
display: flex;
justify-content: space-between;
align-items: center
}
pre {
white-space: pre-wrap;
overflow-wrap: anywhere;
background: #0c1112;
padding: 20px;
border-radius: 8px;
font: 12px/1.7 ui-monospace, monospace;
max-height: 65vh;
overflow: auto
}
label {
display: grid;
gap: 7px;
color: var(--muted);
font-size: 13px
}
.form {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 16px
}
.form label input {
width: 100%
}
.sim-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 15px;
flex-wrap: wrap
}
.views {
height: 65vh;
min-height: 420px;
background: var(--card);
border-radius: 14px;
overflow: hidden;
position: relative;
border: 1px solid var(--line);
margin: 18px 0
}
.views canvas {
width: 100%;
height: 100%;
display: block
}
.view-label {
position: absolute;
top: 15px;
left: 15px;
background: #172326cc;
padding: 5px 9px;
border-radius: 5px;
font: 10px monospace;
pointer-events: none
}
.loading {
position: absolute;
inset: 0;
display: grid;
place-content: center;
text-align: center;
background: var(--card);
gap: 20px
}
.spinner {
width: 34px;
height: 34px;
border: 2px solid var(--line);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin 1s linear infinite;
margin: auto
}
@keyframes spin {
to {
transform: rotate(360deg)
}
}
.controls {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px
}
.joints label {
grid-template-columns: 140px 1fr 45px;
align-items: center;
gap: 12px;
margin: 12px 0
}
.joints summary {
cursor: pointer;
color: var(--accent);
padding: 12px 0
}
#toast {
position: fixed;
right: 30px;
bottom: 30px;
background: #314538;
border: 1px solid var(--accent);
border-radius: 10px;
padding: 16px;
z-index: 50;
max-width: 500px
}
table {
width: 100%;
border-collapse: collapse
}
td,
th {
text-align: left;
padding: 12px;
border-bottom: 1px solid var(--line)
}
td {
color: var(--muted)
}
.file-list {
display: flex;
gap: 10px;
flex-wrap: wrap
}
.file-list a {
color: var(--accent);
border: 1px solid var(--line);
padding: 7px
}
.recipe {
margin-top: 20px
}
.muted {
color: var(--muted)
}
@media(max-width:900px) {
aside {
width: 75px;
padding: 20px 10px
}
.brand {
font-size: 0
}
.brand small,
nav span,
.sidebar-bottom {
display: none
}
nav a {
justify-content: center;
padding: 10px
}
main {
margin-left: 75px;
padding: 25px 20px
}
h1 {
font-size: 29px
}
.views {
height: 55vh
}
}
@media(prefers-reduced-motion:reduce) {
.spinner {
animation: none
}
}
/* Match the established D1 workspace rather than introducing a new visual theme. */
:root {
--bg: #101519;
--card: #192126;
--line: #2d383d;
--muted: #92a6aa;
--accent: #a3e5c3;
--text: #edf3f2
}
body {
font: 14px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif
}
main {
padding: 24px 30px;
max-width: none
}
h1 {
font-size: 23px;
letter-spacing: 0;
line-height: 1.4
}
.hero h1 {
font-size: 30px
}
.eyebrow {
font: 10px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
color: var(--muted);
font-weight: 700;
letter-spacing: .14em
}
.card {
border-radius: 12px;
padding: 20px;
min-height: 0
}
button,
.button,
select,
input {
background: #263238;
border-radius: 9px;
padding: 11px 15px
}
.primary {
background: var(--accent);
color: #14291f
}
.brand-logo {
width: 150px;
object-fit: contain
}
.brand small {
margin-left: 0;
letter-spacing: 0;
font: 12px sans-serif
}
.brand-title {
display: flex;
gap: 8px;
align-items: center;
font-size: 20px
}
.brand-title img {
width: 160px
}
.brand-title span {
color: var(--muted);
font-size: 14px
}
.sim-head {
margin-bottom: 24px
}
.runtime-pill {
font: 10px monospace;
letter-spacing: .06em;
color: var(--muted)
}
.runtime-pill span {
margin-left: 14px
}
.task-line {
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 0 20px
}
.task-line h1 {
font-size: 18px;
font-weight: 600;
margin: 6px 0
}
.sim-studio {
display: grid;
grid-template-columns: minmax(0, 1fr) 340px;
gap: 18px;
align-items: start
}
.sim-workspace {
min-width: 0
}
.views {
margin: 0;
border: 0;
border-radius: 12px;
height: clamp(400px, 53vw, 690px);
min-height: 0
}
.camera-labels {
position: absolute;
inset: 0;
display: grid;
grid-template-columns: 69% 1fr;
grid-template-rows: 1fr 1fr;
gap: 12px;
pointer-events: none
}
.camera-pane {
position: relative;
min-height: 0;
border: 1px solid #52606455;
border-radius: 12px;
overflow: hidden
}
.pane-0 {
grid-row: span 2
}
.view-label {
top: 12px;
left: 12px;
background: #182329dd;
padding: 6px 9px;
border-radius: 4px;
font: 10px monospace;
letter-spacing: .06em
}
.camera-pane small {
position: absolute;
right: 12px;
top: 12px;
padding: 5px 7px;
background: #182329bb;
color: white;
border-radius: 4px;
font-size: 10px
}
.camera-buttons {
position: absolute;
bottom: 12px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 3px;
padding: 5px;
background: #19262dcc;
border-radius: 9px;
pointer-events: auto;
white-space: nowrap
}
.camera-buttons button {
padding: 5px 8px;
border: 0;
border-radius: 4px;
font-size: 13px
}
.sim-telemetry {
display: flex;
gap: 20px;
flex-wrap: wrap;
align-items: center;
padding: 16px;
margin: 14px 0 0;
border: 1px solid var(--line);
border-radius: 12px
}
.sim-telemetry label {
font-size: 10px;
letter-spacing: .06em
}
.sim-telemetry output {
display: block;
font: 12px monospace;
margin-top: 9px
}
.sim-telemetry select {
padding: 5px 9px;
font: 12px monospace
}
.sim-status {
color: var(--accent);
font: 12px monospace;
padding: 15px 0 24px
}
.sim-bottom {
display: grid;
grid-template-columns: minmax(0, 1fr) 385px;
gap: 18px
}
.controls {
display: block
}
.controls .card {
margin-bottom: 18px
}
.card-title {
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
font-weight: 650;
margin-bottom: 18px
}
.card-title small {
font-weight: 400;
color: var(--muted)
}
.controls h3 {
font-size: 11px;
letter-spacing: .06em;
color: var(--muted);
margin-top: 22px
}
.controls .actions button {
flex: 1;
min-width: 85px;
padding: 16px 12px
}
.controls details {
border-top: 1px solid var(--line)
}
.controls #reset {
width: 100%
}
.saved-panel article {
border-top: 1px solid var(--line);
padding: 16px 0
}
.saved-panel article a {
display: block;
color: var(--accent);
margin-top: 9px
}
.sim-chat {
position: sticky;
top: 18px;
height: 800px;
display: flex;
flex-direction: column;
padding: 16px
}
.sim-chat #chat-log {
flex: 1;
overflow: auto;
min-height: 120px
}
.chat-empty {
height: 100%;
min-height: 200px;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 16px
}
.chat-empty img {
width: 180px
}
.chat-empty small {
color: var(--muted);
font-size: 11px
}
.sim-chat form {
padding: 10px;
border: 1px solid var(--line);
border-radius: 15px;
background: #11191d
}
.sim-chat textarea {
width: 100%;
resize: vertical;
background: transparent;
border: 0;
color: var(--text);
font: 13px/1.5 inherit;
min-height: 80px;
outline: none
}
.chat-actions {
display: flex;
gap: 8px;
align-items: center
}
.chat-actions select {
flex: 1;
min-width: 0;
padding: 7px;
font-size: 12px
}
.chat-actions button {
padding: 6px 10px
}
.sim-chat summary {
font-size: 10px;
color: var(--muted);
cursor: pointer;
padding-top: 8px
}
.sim-chat details select {
max-width: 100%;
font-size: 12px;
margin-top: 8px
}
.sim-chat>small {
font-size: 10px;
margin-top: 10px
}
.chat-message {
white-space: pre-wrap;
line-height: 1.6;
margin: 12px 0;
font-size: 13px
}
.chat-message.user {
background: #263238;
border-radius: 12px;
padding: 12px
}
.chat-message.action {
color: var(--muted);
border-left: 2px solid var(--accent);
padding-left: 12px;
font-size: 12px
}
.agent-active {
background: var(--accent) !important;
color: #14291f !important
}
#navToggle {
position: fixed;
left: 12px;
top: 12px;
z-index: 45;
padding: 7px 10px
}
#studioNav {
padding-top: 60px;
transition: transform .15s
}
body.nav-closed #studioNav {
transform: translateX(-100%)
}
body.nav-closed>main {
margin-left: 0;
padding-left: 60px
}
.example-frame {
width: 100%;
height: calc(100vh - 140px);
border: 0;
border-radius: 12px
}
.native-views {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px
}
.native-view {
position: relative;
border-radius: 12px;
overflow: hidden;
min-height: 350px;
background: var(--card)
}
.native-view img {
width: 100%;
height: 100%;
object-fit: contain
}
.native-view span {
position: absolute;
top: 15px;
left: 15px;
background: #182329dd;
padding: 8px;
border-radius: 5px;
font: 11px monospace
}
.native-view p {
position: absolute;
top: 45%;
width: 100%;
text-align: center
}
.native-view[hidden] {
display: none
}
@media(min-width:1900px) {
.sim-studio {
grid-template-columns: minmax(0, 1fr) 420px
}
.views {
height: 750px
}
}
@media(max-width:1250px) {
.sim-studio {
grid-template-columns: minmax(0, 1fr) 300px
}
.sim-bottom {
grid-template-columns: 1fr
}
.views {
height: 460px
}
.camera-pane small {
display: none
}
.camera-buttons button {
padding: 5px
}
.sim-telemetry {
gap: 10px
}
}
@media(max-width:1000px) {
.sim-studio {
grid-template-columns: 1fr
}
.sim-chat {
position: relative;
height: 550px
}
.views {
height: 540px
}
.native-views {
grid-template-columns: 1fr
}
}
@media(prefers-reduced-motion:reduce) {
#studioNav {
transition: none
}
}
.manual-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 16px;
margin: 18px 0
}
.manual-grid button {
font-size: 12px;
/* padding: 14px 8px */
}
.manual-grid button small {
display: block;
color: var(--muted);
font: 10px monospace;
margin-top: 7px
}
.direction-pad {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: repeat(3, 1fr);
gap: 6px
}
.direction-forward {
grid-column: 2
}
.direction-left {
grid-column: 1;
grid-row: 2
}
.direction-right {
grid-column: 3;
grid-row: 2
}
.direction-back {
grid-column: 2;
grid-row: 3
}
.hand-pad {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 7px
}
.hand-pad .wide {
grid-column: span 2
}
.wrist-pad {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 7px
}
.wrist-pad>small {
grid-column: span 2;
color: var(--muted);
font-size: 10px
}
.controls #reset {
padding: 11px
}
.sim-chat textarea {
font-family: inherit;
font-size: 13px;
line-height: 1.5
}
@media(max-width:1600px) {
.manual-grid {
grid-template-columns: 1fr 1fr
}
.wrist-pad {
grid-column: span 2;
grid-template-columns: repeat(6, 1fr)
}
.wrist-pad>small {
grid-column: span 6
}
}
@media(max-width:900px) {
.brand-logo {
width: 45px
}
body.nav-closed>main {
padding-left: 48px
}
.camera-buttons {
gap: 1px
}
.camera-buttons button {
padding: 5px 6px
}
}
/* ---- 2026-10 layout corrections ---- */
aside {
width: 272px;
padding: 26px 18px 22px
}
.brand {
flex-wrap: nowrap;
gap: 10px
}
.brand small {
margin-left: 0;
white-space: nowrap
}
main {
margin-left: 272px !important;
width: calc(100vw - 272px);
max-width: none;
padding: 28px 34px 40px
}
.centered-hero {
text-align: center;
display: flex;
flex-direction: column;
align-items: center
}
.centered-hero p {
max-width: 760px;
margin: 0 auto;
color: var(--muted)
}
.compact-search {
max-width: 980px;
width: min(980px, 100%);
margin: 22px auto 0
}
.section-head {
margin: 32px 0 14px
}
.example-grid {
grid-template-columns: repeat(5, minmax(0, 1fr));
gap: 18px;
align-items: stretch
}
.training-grid {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
.example-card {
padding: 0;
overflow: hidden
}
.card-media {
aspect-ratio: 16/10;
background: #0e1417;
border-bottom: 1px solid var(--line);
overflow: hidden
}
.card-media img {
width: 100%;
height: 100%;
object-fit: cover;
display: block
}
.card-body {
padding: 18px 18px 16px;
display: flex;
flex-direction: column;
min-height: 214px
}
.card-body .tag {
display: block;
margin-bottom: 10px
}
.card-body h3 {
margin: 8px 0 8px
}
.card-body p {
margin: 0 0 16px;
flex: 1
}
.grid#homeData {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.sim-studio {
max-width: 1560px;
margin: 0 auto
}
.sim-head,
.task-line,
.sim-telemetry,
.sim-bottom {
max-width: 1560px;
margin-left: auto;
margin-right: auto
}
.saved-panel {
min-width: 235px
}
.search {
font-size: 15px
}
@media (max-width:1700px) {
.example-grid {
grid-template-columns: repeat(4, minmax(0, 1fr))
}
}
@media (max-width:1380px) {
.example-grid {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.grid#homeData {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media (max-width:1100px) {
aside {
width: 86px
}
.brand-logo {
width: 46px
}
.brand small,
nav span,
.sidebar-bottom {
display: none
}
main {
margin-left: 86px !important;
width: calc(100vw - 86px);
padding: 24px 20px
}
.example-grid,
.training-grid,
.grid#homeData {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media (max-width:760px) {
main {
margin-left: 0 !important;
width: 100vw;
padding: 72px 14px 24px
}
.example-grid,
.training-grid,
.grid#homeData {
grid-template-columns: 1fr
}
.compact-search {
max-width: 100%
}
}
.chat-tools {
display: flex;
/* justify-content: space-between; */
gap: 10px;
flex-wrap: wrap;
padding: 6px 2px 10px;
color: var(--muted);
font-size: 12px
}
.chat-tools label {
display: flex;
align-items: center;
gap: 6px;
cursor: pointer
}
.chat-tools input {
padding: 0
}
.chat-meta {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-bottom: 6px;
font-size: 11px;
color: var(--muted)
}
.chat-edit {
padding: 4px 8px;
border-radius: 8px;
font-size: 11px;
background: #1b2529
}
.chat-message.user>div:last-child {
color: var(--text)
}
/* ---- 2026-10 follow-up parity / layout pass ---- */
aside {
width: 296px;
padding: 26px 20px 22px
}
.brand {
display: flex;
align-items: center;
gap: 10px;
white-space: nowrap;
flex-wrap: nowrap
}
.brand-logo {
width: 164px;
max-width: 100%;
flex: 0 0 auto
}
.brand small {
display: block;
white-space: nowrap
}
main {
margin-left: 296px !important;
width: auto !important;
max-width: none !important;
padding: 28px 30px 40px
}
.hero,
.section-head,
.tabs,
.example-grid,
#homeData,
.training-grid,
.sim-studio,
.sim-head,
.task-line,
.sim-telemetry,
.sim-bottom,
.native-views {
max-width: 1600px;
margin-left: auto;
margin-right: auto
}
.centered-hero {
padding-top: 18px
}
.compact-search {
max-width: 860px;
width: min(860px, 100%);
margin: 20px auto 0
}
.example-grid {
grid-template-columns: repeat(4, minmax(280px, 1fr));
gap: 20px
}
.example-card .card-body {
min-height: 160px
}
.grid#homeData {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.sim-studio {
max-width: 1500px
}
.sim-head,
.task-line,
.sim-telemetry,
.sim-bottom {
max-width: 1500px
}
.sim-chat {
max-width: 360px
}
@media (max-width:1720px) {
.example-grid {
grid-template-columns: repeat(4, minmax(270px, 1fr))
}
}
@media (max-width:1440px) {
.example-grid {
grid-template-columns: repeat(3, minmax(250px, 1fr))
}
.grid#homeData {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media (max-width:1180px) {
aside {
width: 92px
}
.brand-logo {
width: 46px
}
main {
margin-left: 92px !important;
padding: 24px 18px
}
.example-grid,
.training-grid,
.grid#homeData {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media (max-width:760px) {
main {
margin-left: 0 !important;
padding: 72px 14px 24px
}
.example-grid,
.training-grid,
.grid#homeData {
grid-template-columns: 1fr
}
.compact-search {
max-width: 100%
}
}
/* Restored transcript/trace styling from the established Studio chat flow. */
.trace-entry {
display: grid;
grid-template-columns: 22px minmax(0, 1fr);
column-gap: 8px;
padding: 9px 3px;
border-bottom: 1px solid #263238;
color: var(--muted);
font-size: 12px
}
.trace-icon {
grid-row: 1 / span 2;
color: var(--accent);
font-size: 13px;
line-height: 1.7;
text-align: center
}
.trace-heading {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 8px;
color: var(--text)
}
.trace-heading time {
color: var(--muted);
font-size: 9px;
white-space: nowrap
}
.trace-entry details {
grid-column: 2;
margin-top: 5px
}
.trace-entry summary {
color: var(--muted);
font-size: 10px;
padding: 0;
cursor: pointer
}
.trace-details {
white-space: pre-wrap;
font: 10px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace;
color: var(--muted);
padding: 6px 0 0
}
.chat-copy.collapsed {
max-height: 8.5em;
overflow: hidden;
position: relative
}
.chat-expand {
padding: 3px 7px;
margin-top: 5px;
font-size: 10px;
background: transparent
}
.chat-message.assistant {
padding: 5px 2px;
color: var(--text)
}
.chat-tools .disabled-option {
opacity: .45;
cursor: not-allowed
}
/* ---- v5: original Studio activity timeline + collapsed-nav centering ---- */
body.nav-closed>main {
margin-left: 0 !important;
width: 100% !important;
padding-left: 64px !important;
padding-right: 64px !important;
}
body.nav-closed .hero,
body.nav-closed .section-head,
body.nav-closed .tabs,
body.nav-closed .example-grid,
body.nav-closed #homeData,
body.nav-closed .training-grid,
body.nav-closed .sim-studio,
body.nav-closed .sim-head,
body.nav-closed .task-line,
body.nav-closed .sim-telemetry,
body.nav-closed .sim-bottom,
body.nav-closed .native-views {
margin-left: auto;
margin-right: auto
}
.sim-chat #chat-log {
gap: 0;
padding: 12px 0 22px
}
.chat-entry {
position: relative;
background: none;
margin: 12px 0;
padding: 10px 4px;
white-space: normal;
font-size: 13px;
line-height: 1.6
}
.chat-entry.user {
background: #293237;
border: 1px solid #39454b;
border-radius: 14px;
margin: 8px 0 22px 20px;
padding: 14px 40px 14px 14px
}
.chat-entry.assistant {
padding: 10px 4px;
color: var(--text)
}
.chat-copy {
white-space: pre-wrap;
overflow-wrap: anywhere
}
.chat-copy.collapsed {
max-height: 130px;
overflow: hidden;
mask-image: linear-gradient(#000 70%, transparent)
}
.chat-expand {
border: 0;
background: none;
padding: 8px 0 0;
font-size: 11px;
color: var(--accent)
}
.chat-edit {
position: absolute;
right: 8px;
top: 8px;
width: 28px;
height: 28px;
padding: 5px;
border: 0;
background: transparent;
color: var(--muted)
}
.chat-edit:hover {
color: var(--accent)
}
.chat-edit svg {
width: 16px;
height: 16px;
fill: none;
stroke: currentColor;
stroke-width: 1.7;
stroke-linecap: round;
stroke-linejoin: round
}
.trace-entry {
position: relative;
display: block;
margin: 0 0 0 8px;
padding: 10px 0 13px 25px;
border: 0;
border-left: 1px solid #3b4a50;
color: var(--muted);
font-size: 11px;
line-height: 1.6
}
.trace-icon {
position: absolute;
left: -10px;
top: 10px;
width: 19px;
text-align: center;
background: var(--card);
color: #a9c2c1;
font-size: 14px;
line-height: 1.4
}
.trace-heading {
display: flex;
align-items: baseline;
gap: 8px;
color: var(--muted)
}
.trace-heading span {
flex: 1;
white-space: pre-wrap;
overflow-wrap: anywhere
}
.trace-heading time {
font-size: 9px;
white-space: nowrap;
color: #71888e
}
.trace-entry details {
margin: 6px 0 0
}
.trace-entry summary {
margin: 0;
font-size: 10px;
font-weight: 500;
color: var(--accent);
padding: 0
}
.trace-details {
margin-top: 7px;
padding: 8px;
border-radius: 7px;
background: #111a1f;
white-space: pre-wrap;
overflow-wrap: anywhere;
font: 10px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace
}
.trace-entry[data-stage=verified] .trace-icon {
color: var(--accent)
}
.trace-entry[data-stage=stopped] .trace-icon {
color: #ff9c96
}
.chat-live-progress {
position: relative;
margin: 0 0 12px 8px;
padding: 10px 0 10px 25px;
border-left: 1px solid #3b4a50;
color: var(--accent);
font-size: 11px;
line-height: 1.5;
white-space: pre-wrap
}
.chat-live-progress::before {
content: '';
position: absolute;
left: -7px;
top: 11px;
width: 12px;
height: 12px;
border: 2px solid #3b4a50;
border-top-color: var(--accent);
border-radius: 50%;
background: var(--card);
box-shadow: 0 0 0 4px var(--card);
animation: spin 1s linear infinite
}
.readme-rendered {
max-width: 820px;
color: var(--text);
line-height: 1.7
}
.readme-rendered h1,
.readme-rendered h2,
.readme-rendered h3 {
margin: 1.3em 0 .55em;
color: var(--text)
}
.readme-rendered h1 {
font-size: 28px
}
.readme-rendered h2 {
font-size: 21px
}
.readme-rendered h3 {
font-size: 17px
}
.readme-rendered p,
.readme-rendered li {
color: var(--muted)
}
.readme-rendered ul,
.readme-rendered ol {
padding-left: 24px
}
.readme-rendered code {
font: 12px ui-monospace, SFMono-Regular, Menlo, monospace;
background: #11191d;
border: 1px solid var(--line);
border-radius: 5px;
padding: 2px 5px
}
.readme-rendered pre {
max-height: none;
margin: 14px 0;
overflow: auto
}
.readme-rendered pre code {
display: block;
border: 0;
padding: 0;
background: transparent;
color: inherit
}
.readme-rendered a {
color: var(--accent);
text-decoration: underline
}
.readme-rendered blockquote {
margin: 14px 0;
border-left: 2px solid var(--accent);
padding: 4px 14px;
color: var(--muted)
}
@media(max-width:760px) {
body.nav-closed>main {
padding-left: 14px !important;
padding-right: 14px !important
}
}
/* ---- v6: exact legacy chat timeline + collapsed-nav centering ---- */
body.nav-closed>main {
margin-left: 0 !important;
width: 100% !important;
padding-left: 60px !important;
padding-right: 60px !important;
}
body.nav-closed .hero,
body.nav-closed .section-head,
body.nav-closed .tabs,
body.nav-closed .example-grid,
body.nav-closed #homeData,
body.nav-closed .training-grid,
body.nav-closed .sim-studio,
body.nav-closed .sim-head,
body.nav-closed .task-line,
body.nav-closed .sim-telemetry,
body.nav-closed .sim-bottom,
body.nav-closed .native-views {
margin-left: auto !important;
margin-right: auto !important
}
.trace-entry {
position: relative;
display: block;
margin: 0 0 0 8px;
padding: 10px 0 13px 25px;
border-left: 1px solid #3b4a50;
border-bottom: 0;
color: var(--muted);
font-size: 11px;
line-height: 1.6;
}
.trace-icon {
position: absolute;
left: -10px;
top: 10px;
width: 19px;
text-align: center;
background: var(--card);
color: #a9c2c1;
font-size: 14px;
line-height: 1.5;
}
.trace-heading {
display: flex;
align-items: baseline;
gap: 8px;
color: var(--muted)
}
.trace-heading span {
flex: 1;
white-space: pre-wrap;
overflow-wrap: anywhere
}
.trace-heading time {
font-size: 9px;
white-space: nowrap;
color: #71888e
}
.trace-entry details {
margin: 6px 0 0;
grid-column: auto
}
.trace-entry summary {
margin: 0;
font-size: 10px;
font-weight: 500;
color: var(--accent);
padding: 0
}
.trace-details {
margin-top: 7px;
padding: 8px;
border-radius: 7px;
background: #111a1f;
white-space: pre-wrap;
overflow-wrap: anywhere;
font: 10px/1.5 ui-monospace, SFMono-Regular, Menlo, monospace
}
.trace-entry[data-stage="verified"] .trace-icon {
color: var(--accent)
}
.trace-entry[data-stage="stopped"] .trace-icon {
color: #ff9b93
}
.chat-live-progress {
position: relative;
margin: 0 0 12px 8px;
padding: 10px 0 10px 25px;
border-left: 1px solid #3b4a50;
color: var(--accent);
font-size: 11px;
line-height: 1.5;
white-space: pre-wrap;
}
.chat-live-progress::before {
content: '';
position: absolute;
left: -7px;
top: 11px;
width: 12px;
height: 12px;
border: 2px solid #3b4a50;
border-top-color: var(--accent);
border-radius: 50%;
background: var(--card);
box-shadow: 0 0 0 4px var(--card);
animation: spin 1s linear infinite;
}
.chat-entry.user {
background: #263238;
border-radius: 12px;
padding: 12px;
margin: 12px 0;
position: relative
}
.chat-entry.assistant {
padding: 8px 2px 12px;
margin: 0;
color: var(--text)
}
.chat-entry .chat-edit {
position: absolute;
right: 8px;
bottom: 8px;
width: 28px;
height: 28px;
padding: 5px;
display: grid;
place-items: center
}
.chat-entry .chat-edit svg {
width: 14px;
height: 14px;
fill: none;
stroke: currentColor;
stroke-width: 1.6
}
.readme-rendered {
color: var(--text);
line-height: 1.65
}
.readme-rendered h1,
.readme-rendered h2,
.readme-rendered h3,
.readme-rendered h4 {
margin: 1.15em 0 .45em;
line-height: 1.3
}
.readme-rendered h1 {
font-size: 28px
}
.readme-rendered h2 {
font-size: 21px
}
.readme-rendered h3 {
font-size: 17px
}
.readme-rendered p {
color: var(--muted);
margin: .65em 0 1em
}
.readme-rendered ul,
.readme-rendered ol {
padding-left: 1.5rem;
color: var(--muted)
}
.readme-rendered li {
margin: .3em 0
}
.readme-rendered code {
font: 12px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace;
background: #11191d;
border: 1px solid var(--line);
padding: 2px 5px;
border-radius: 5px;
color: #d7e7e4
}
.readme-rendered pre {
max-height: none;
margin: 12px 0 18px
}
.readme-rendered pre code {
background: transparent;
border: 0;
padding: 0;
color: inherit
}
.readme-rendered blockquote {
border-left: 2px solid var(--accent);
margin: 12px 0;
padding: 3px 14px;
color: var(--muted)
}
.readme-rendered a {
color: var(--accent);
text-decoration: underline;
text-underline-offset: 2px
}
.readme-rendered hr {
border: 0;
border-top: 1px solid var(--line);
margin: 22px 0
}
.readme-rendered table {
margin: 14px 0 20px
}
@media(max-width:760px) {
body.nav-closed>main {
padding-left: 14px !important;
padding-right: 14px !important
}
}
/* ---- v7 parity fixes: joint housing, shell alignment, softer actions ---- */
.sim-shell {
max-width: 1500px;
margin: 0 auto;
width: 100%
}
.sim-shell>.sim-head,
.sim-shell>.task-line,
.sim-shell>.sim-studio {
max-width: none;
width: 100%;
margin-left: 0;
margin-right: 0
}
body.nav-closed>main {
margin-left: 0 !important;
width: 100% !important;
padding-left: 30px !important;
padding-right: 30px !important
}
body.nav-closed .sim-shell {
margin-left: auto !important;
margin-right: auto !important
}
.example-card .primary {
background: #8fcfb0;
border-color: #8fcfb0;
color: #15251d
}
.example-card .primary:hover {
background: #9ad9ba;
border-color: #9ad9ba
}
.joints details {
border-top: 1px solid var(--line);
margin-top: 14px
}
.joints summary {
cursor: pointer;
color: var(--accent);
padding: 14px 0 10px;
font-weight: 600
}
.joint-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 8px;
padding-bottom: 8px
}
.joint-row {
display: grid !important;
grid-template-columns: minmax(0, 1fr) 34px 52px 34px !important;
gap: 5px !important;
align-items: center !important;
border: 1px solid var(--line);
border-radius: 8px;
padding: 8px !important;
margin: 0 !important
}
.joint-name {
font-size: 11px;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.joint-name small {
display: block;
color: var(--muted);
font-size: 9px;
margin-top: 3px
}
.joint-key {
min-height: 32px;
padding: 4px !important;
font-size: 17px
}
.joint-angle {
text-align: center;
font: 11px ui-monospace, SFMono-Regular, Menlo, monospace;
color: var(--text)
}
@media(max-width:1300px) {
.joint-grid {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media(max-width:760px) {
body.nav-closed>main {
padding-left: 14px !important;
padding-right: 14px !important
}
.joint-grid {
grid-template-columns: 1fr
}
}
/* ---- 2026-10 grasp/camera follow-up ---- */
.sim-shell {
max-width: 1680px
}
.sim-studio {
max-width: none;
grid-template-columns: minmax(0, 1fr) 330px
}
.views {
height: clamp(440px, 55vw, 780px)
}
@media(min-width:1900px) {
.sim-shell {
max-width: 1870px
}
.sim-studio {
grid-template-columns: minmax(0, 1fr) 420px
}
.views {
height: 600px
}
}
@media(max-width:1250px) {
.sim-studio {
grid-template-columns: minmax(0, 1fr) 295px
}
}
/* Pick-place MuJoCo example: operator drag hint + one-click authored task. */
.pick-place-web-hint {
position: absolute;
left: 14px;
bottom: 58px;
z-index: 8;
padding: 7px 10px;
border-radius: 7px;
background: #182329dd;
color: #dfe9e5;
font-size: 11px;
pointer-events: none
}
.pick-place-web-run {
position: absolute;
right: 14px;
bottom: 14px;
z-index: 9;
pointer-events: auto;
box-shadow: 0 8px 22px #0006
}
/* ---- Studio navigation + catalog cleanup ---- */
#studioNav {
width: 286px;
padding: 18px 16px 22px;
transform: none !important;
transition: width .16s ease;
padding .16s ease
}
.nav-head {
height: 54px;
display: flex;
align-items: center;
gap: 12px;
min-width: 0
}
#navToggle {
position: static;
flex: 0 0 42px;
width: 42px;
height: 42px;
padding: 0;
display: grid;
place-items: center;
font-size: 18px;
border-radius: 12px
}
.nav-head .brand {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
flex-wrap: nowrap;
overflow: hidden
}
.nav-head .brand-logo {
width: 184px;
max-width: 184px;
flex: 0 0 184px
}
.nav-head .brand small {
margin: 0;
white-space: nowrap;
flex: 0 0 auto;
color: var(--muted);
font-size: 13px
}
#studioNav nav {
margin-top: 38px
}
#studioNav nav a {
height: 52px;
align-items: center;
gap: 16px;
font-size: 22px;
padding: 0 15px;
white-space: nowrap;
overflow: hidden
}
#studioNav nav a>span {
transition: opacity .12s ease
}
body.nav-closed #studioNav {
width: 74px;
padding-left: 10px;
padding-right: 10px
}
body.nav-closed .nav-head {
justify-content: center
}
body.nav-closed .nav-head .brand {
display: none
}
body.nav-closed #studioNav nav a {
justify-content: center;
padding: 0;
font-size: 20px
}
body.nav-closed #studioNav nav a>span {
display: none
}
body.nav-closed>main {
margin-left: 74px !important;
width: calc(100vw - 74px) !important;
padding-left: 30px !important;
padding-right: 30px !important
}
body:not(.nav-closed)>main {
margin-left: 286px !important;
width: calc(100vw - 286px) !important
}
.tool-grid {
grid-template-columns: repeat(auto-fill, minmax(280px, 360px));
margin: 16px 0 28px
}
@media(max-width:760px) {
#studioNav {
width: 74px;
padding-left: 10px;
padding-right: 10px
}
.nav-head .brand,
#studioNav nav a>span {
display: none
}
#studioNav nav a {
justify-content: center;
padding: 0;
font-size: 20px
}
body>main,
body.nav-closed>main,
body:not(.nav-closed)>main {
margin-left: 74px !important;
width: calc(100vw - 74px) !important;
padding: 20px 14px !important
}
}
/* Final sidebar sizing: toggle + BeingBeyond + / D1 Studio stay on one row. */
#studioNav {
width: 330px
}
.nav-head .brand-logo {
width: 166px;
max-width: 166px;
flex-basis: 166px
}
body:not(.nav-closed)>main {
margin-left: 330px !important;
width: calc(100vw - 330px) !important
}
body.nav-closed #studioNav {
width: 74px
}
body.nav-closed>main {
margin-left: 74px !important;
width: calc(100vw - 74px) !important
}
@media(max-width:760px) {
#studioNav {
width: 74px
}
body>main,
body.nav-closed>main,
body:not(.nav-closed)>main {
margin-left: 74px !important;
width: calc(100vw - 74px) !important
}
}
/* ---- Shared Studio page frame ---- */
main {
max-width: none !important
}
.page-shell {
width: min(1700px, 100%);
margin: 0 auto;
min-width: 0
}
.page-shell>.hero,
.page-shell>.section-head,
.page-shell>.tabs,
.page-shell>.example-grid,
.page-shell>.training-grid,
.page-shell>.sim-studio,
.page-shell>.sim-head,
.page-shell>.task-line,
.page-shell>.sim-telemetry,
.page-shell>.sim-bottom,
.page-shell>.native-views {
max-width: none;
width: 100%;
margin-left: 0;
margin-right: 0
}
.page-shell--sim {
width: min(1900px, 100%)
}
.page-search {
margin: 22px 0 8px;
width: 100%
}
.home-data-grid {
display: grid;
grid-template-columns: minmax(280px, 360px) minmax(0, 1fr);
gap: 18px;
align-items: stretch
}
.home-data-card {
min-height: 190px
}
#homeData {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 18px;
min-width: 0
}
#dataGrid {
margin-top: 0
}
@media(max-width:900px) {
.home-data-grid {
grid-template-columns: 1fr
}
}
/* ---- execution-category tags + VLM example details ---- */
.tag-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
align-items: center;
margin-bottom: 2px
}
.tag-row .tag {
margin: 0
}
.tag-required {}
.example-detail {
padding-top: 10px
}
.back-link {
display: inline-block;
margin-bottom: 20px;
color: var(--muted)
}
.detail-grid {
display: grid;
grid-template-columns: minmax(280px, 520px) minmax(0, 1fr);
gap: 42px;
align-items: start
}
.detail-image {
width: 100%;
max-height: 420px;
object-fit: cover;
border: 1px solid var(--line);
border-radius: 14px;
background: #d8dcdd
}
.detail-grid h1 {
margin: 14px 0 8px;
font-size: 34px
}
.detail-grid>div>p {
max-width: 760px;
color: var(--muted);
line-height: 1.6
}
.detail-prompt {
margin: 24px 0;
padding: 18px;
border: 1px solid var(--line);
border-radius: 12px;
background: var(--card)
}
.detail-prompt p {
margin: 6px 0 0;
color: var(--text);
font-size: 16px;
line-height: 1.55
}
.script-option {
display: flex;
align-items: flex-start;
gap: 12px;
margin: 18px 0 22px;
padding: 16px;
border: 1px solid var(--line);
border-radius: 12px;
background: #141e22;
cursor: pointer
}
.script-option input {
width: 18px;
height: 18px;
margin-top: 2px;
accent-color: var(--accent)
}
.script-option span {
display: grid;
gap: 4px
}
.script-option small {
color: var(--muted);
line-height: 1.45
}
.detail-requirements {
margin: 20px 0
}
.detail-requirements ul {
color: var(--muted)
}
@media(max-width:900px) {
.detail-grid {
grid-template-columns: 1fr;
gap: 22px
}
.detail-image {
max-height: 330px
}
}
/* ---- Studio content pages: section rail + inline documentation ---- */
.page-intro {
/* max-width: 900px; */
color: var(--muted);
line-height: 1.65;
margin: 6px 0 28px
}
.doc-layout {
display: grid;
grid-template-columns: 280px minmax(0, 1fr);
gap: 38px;
align-items: start;
margin-top: 50px;
}
.section-nav {
position: sticky;
top: 24px;
display: flex;
flex-direction: column;
gap: 4px;
padding: 2px 0
}
.section-nav a {
color: var(--muted);
text-decoration: none;
padding: 7px 0;
border: 0;
background: none;
font-size: 13px
}
.section-nav a.active {
color: var(--text);
font-weight: 650
}
.doc-content {
min-width: 0;
/* max-width: 1100px */
}
.doc-content>section {
scroll-margin-top: 24px;
padding: 0 0 42px;
margin: 0 0 30px;
border-bottom: 1px solid var(--line)
}
.doc-content>section:last-child {
border-bottom: 0
}
.doc-content h2 {
font-size: 25px;
margin: 0 0 13px
}
.doc-content h3 {
margin: 15px 0 7px
}
.doc-content p,
.doc-content li {
color: var(--muted);
line-height: 1.7
}
.doc-content pre {
max-height: none;
white-space: pre-wrap
}
.doc-content .example-grid {
grid-template-columns: repeat(auto-fill, minmax(280px, 340px))
}
.studio-overview {
max-width: 1100px;
margin: 20px 0 38px
}
.studio-overview h2 {
font-size: 28px;
margin: 8px 0 14px
}
.studio-overview p {
font-size: 15px;
line-height: 1.75;
color: var(--muted);
max-width: 1050px
}
.studio-overview b {
color: var(--text)
}
.text-button {
padding: 0;
border: 0;
background: transparent;
color: var(--accent);
font-weight: 650
}
.text-button:hover {
background: transparent;
color: var(--text)
}
#overviewExtra {
margin-top: 12px
}
@media(max-width:900px) {
.doc-layout {
grid-template-columns: 1fr;
gap: 14px
}
.section-nav {
position: static;
flex-direction: row;
flex-wrap: wrap;
gap: 12px;
border-bottom: 1px solid var(--line);
padding-bottom: 10px
}
.section-nav a {
padding: 4px 0
}
}
/* ---- Accessibility / navigation refinement ---- */
:root[data-theme="light"] {
color-scheme: light;
--bg: #f2f2f2;
--card: #ffffff;
--line: #d4dedb;
--muted: #667a7e;
--accent: #28795b;
--text: #172126
}
:root[data-theme="light"] body {
background: var(--bg);
color: var(--text)
}
:root[data-theme="light"] #studioNav {
background: #f4f6f5;
border-color: var(--line)
}
:root[data-theme="light"] button,
:root[data-theme="light"] .button,
:root[data-theme="light"] select,
:root[data-theme="light"] input,
:root[data-theme="light"] textarea {
background: #fff;
color: var(--text);
border-color: var(--line)
}
:root[data-theme="light"] button:hover,
:root[data-theme="light"] .button:hover {
background: #e0f3ea
}
:root[data-theme="light"] .primary {
background: #8fd7b6;
border-color: #8fd7b6;
color: #123326
}
:root[data-theme="light"] .card,
:root[data-theme="light"] .sim-telemetry,
:root[data-theme="light"] dialog {
background: #fff
}
:root[data-theme="light"] pre,
:root[data-theme="light"] .trace-details {
background: #f1f4f3;
color: #23302e
}
:root[data-theme="light"] .chat-entry.user {
background: #eef3f1
}
:root[data-theme="light"] .tabs button.active,
:root[data-theme="light"] #studioNav nav a.active {
background: #dcebe3;
color: #23684f
}
:root[data-theme="light"] .empty {
background: #f6f8f7
}
#studioNav {
display: flex;
flex-direction: column
}
#studioNav nav {
flex: 0 0 auto
}
.nav-theme-toggle {
margin-top: auto;
width: 100%;
display: flex;
align-items: center;
gap: 13px;
justify-content: flex-start;
padding: 11px 14px;
background: transparent;
border-color: transparent;
color: var(--muted)
}
.nav-theme-toggle:hover {
color: var(--accent);
background: #26322c
}
.theme-icon {
font-size: 18px;
width: 20px;
text-align: center
}
.theme-label {
white-space: nowrap
}
body.nav-closed .nav-theme-toggle {
justify-content: center;
padding: 11px 0
}
.nav-closed .theme-label {
display: none
}
:root[data-theme="light"] .nav-theme-toggle:hover {
background: #dcebe3
}
.breadcrumbs {
display: flex;
align-items: center;
gap: 10px;
margin: 0 0 18px;
color: var(--muted);
font-size: 20px;
min-height: 24px
}
.breadcrumbs a {
color: var(--muted)
}
.breadcrumbs a:hover {
color: var(--accent)
}
.breadcrumbs b {
font-weight: 400;
color: var(--line)
}
.breadcrumbs span {
color: var(--text)
}
/* Documentation section rail is in-page navigation only. */
.section-nav button {
appearance: none;
border: 0;
background: transparent;
color: var(--muted);
text-align: left;
padding: 7px 0;
border-radius: 0;
font-size: 20px;
line-height: 1.35
}
.section-nav button:hover {
background: transparent;
color: var(--text)
}
.section-nav button.active {
color: var(--text);
font-weight: 700
}
:root[data-theme="light"] .section-nav button,
:root[data-theme="light"] .section-nav button:hover {
background: transparent
}
/* Readable content typography. */
.page-shell p,
.page-shell li {
font-size: 16px;
line-height: 1.75
}
.doc-content p,
.doc-content li,
.studio-overview p {
font-size: 17px;
line-height: 1.8
}
.card p {
font-size: 15px;
line-height: 1.6
}
.readme-rendered p,
.readme-rendered li {
font-size: 16px;
line-height: 1.75
}
.studio-overview {
width: 100%;
max-width: none;
margin: 20px 0 38px
}
.studio-overview p {
max-width: none
}
.compact-search {
display: block;
width: min(900px, 100%);
margin-left: auto !important;
margin-right: auto !important
}
/* Telemetry should fit all status fields without hiding important state. */
.sim-telemetry {
display: grid !important;
grid-template-columns: repeat(8, minmax(120px, 1fr));
gap: 12px !important;
align-items: end
}
.sim-telemetry>div,
.sim-telemetry>label {
min-width: 0
}
.sim-telemetry label {
display: block
}
.sim-telemetry output {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.sim-telemetry select {
width: 100%;
min-width: 0
}
@media(max-width:1500px) {
.sim-telemetry {
grid-template-columns: repeat(4, minmax(150px, 1fr))
}
}
@media(max-width:850px) {
.sim-telemetry {
grid-template-columns: repeat(2, minmax(130px, 1fr))
}
.page-shell p,
.page-shell li,
.doc-content p,
.doc-content li,
.studio-overview p {
font-size: 16px
}
}
/* Only the selected three-camera observation is mounted in the chat stack. */
#snapshot-stack {
flex: none;
border-bottom: 1px solid var(--line);
padding-bottom: 10px;
margin-bottom: 10px
}
#snapshot-stack[hidden] {
display: none
}
#snapshot-step {
width: 100%;
min-width: 0;
font-size: 11px;
padding: 6px
}
#snapshot-images {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 5px;
margin-top: 8px
}
#snapshot-images figure {
margin: 0;
min-width: 0
}
#snapshot-images img {
width: 100%;
aspect-ratio: 4/3;
object-fit: contain;
border-radius: 6px;
background: var(--bg)
}
#snapshot-images figcaption {
font-size: 10px;
color: var(--muted);
text-align: center
}
/* ---- Final UI polish: complete light theme, larger copy, cleaner controls ---- */
/* Eyebrow/kicker labels are intentionally removed from Studio content. */
.eyebrow {
display: none !important
}
/* Larger readable copy across content and cards. */
.page-shell p,
.page-shell li {
font-size: 18px;
line-height: 1.78
}
.page-intro,
.doc-content p,
.doc-content li {
font-size: 18px;
line-height: 1.8
}
.card p,
.readme-rendered p,
.readme-rendered li {
font-size: 17px;
line-height: 1.72
}
.hero>p {
font-size: 18px;
line-height: 1.7
}
.sim-chat,
.controls,
.sim-telemetry {
font-size: 15px
}
/* Search belongs only on searchable catalog views and uses a softer pill shape. */
.search {
border-radius: 20px
}
.compact-search {
border-radius: 22px;
box-shadow: 0 2px 12px rgba(0, 0, 0, .08)
}
/* Light theme must not inherit dark component surfaces. */
:root[data-theme="light"] #studioNav nav a:hover {
background: #e6efe9 !important;
color: #21694f !important
}
:root[data-theme="light"] #studioNav nav a.active {
background: #dcebe3 !important;
color: #21694f !important
}
:root[data-theme="light"] .sim-chat,
:root[data-theme="light"] .controls,
:root[data-theme="light"] .saved-panel,
:root[data-theme="light"] .sim-telemetry,
:root[data-theme="light"] .sim-bottom .card {
background: #fff !important;
color: var(--text)
}
:root[data-theme="light"] .sim-chat form {
background: #f7faf8 !important;
border-color: #cfd9d5 !important;
box-shadow: 0 3px 14px rgba(25, 45, 36, .10)
}
:root[data-theme="light"] .sim-chat textarea {
background: transparent !important;
color: #18231f !important
}
:root[data-theme="light"] .sim-chat textarea::placeholder,
:root[data-theme="light"] input::placeholder {
color: #7e8d87 !important
}
:root[data-theme="light"] .chat-actions select,
:root[data-theme="light"] .sim-chat details select,
:root[data-theme="light"] .sim-telemetry select {
background: #fff !important;
color: #172126 !important;
border-color: #cbd6d1 !important
}
:root[data-theme="light"] .chat-tools,
:root[data-theme="light"] .sim-chat summary,
:root[data-theme="light"] .sim-chat>small {
color: #64756f !important
}
/* Controls need tactile separation from white surfaces. */
:root[data-theme="light"] button,
:root[data-theme="light"] .button,
:root[data-theme="light"] select,
:root[data-theme="light"] input:not([type="checkbox"]):not([type="radio"]) {
box-shadow: 0 2px 7px rgba(24, 44, 35, .10)
}
:root[data-theme="light"] button:hover,
:root[data-theme="light"] .button:hover {
background: #edf6f1 !important;
border-color: #9fbeb0 !important;
box-shadow: 0 4px 12px rgba(24, 44, 35, .16)
}
:root[data-theme="light"] .camera-buttons {
background: rgba(255, 255, 255, .92) !important;
border: 1px solid #d0d9d5;
box-shadow: 0 4px 14px rgba(22, 35, 30, .18)
}
:root[data-theme="light"] .camera-buttons button {
background: #fff !important;
color: #26342f !important;
border: 1px solid #d3ddd8 !important;
box-shadow: 0 2px 5px rgba(22, 35, 30, .13)
}
:root[data-theme="light"] .camera-buttons button:hover {
background: #eaf4ef !important;
}
:root[data-theme="light"] .manual-grid button,
:root[data-theme="light"] .direction-pad button,
:root[data-theme="light"] .controls button,
:root[data-theme="light"] .saved-panel button {
background: #f2f2f2 !important;
color: #1d2925 !important;
/* border-color:#cbd6d1!important; */
/* box-shadow:0 3px 10px rgba(20,38,30,.12) */
}
:root[data-theme="light"] .manual-grid button:hover,
:root[data-theme="light"] .direction-pad button:hover,
:root[data-theme="light"] .controls button:hover,
:root[data-theme="light"] .saved-panel button:hover {
background: #edf6f1 !important;
box-shadow: 0 5px 14px rgba(20, 38, 30, .17)
}
:root[data-theme="light"] .chat-entry.assistant,
:root[data-theme="light"] .chat-message.assistant {
color: #1d2925 !important
}
/* Keep the search centered on Home / Examples. */
.compact-search {
display: block;
width: min(920px, 100%);
margin-left: auto !important;
margin-right: auto !important
}
/* Finish simulator light surfaces: camera chrome and status overlays. */
:root[data-theme="light"] .view-label,
:root[data-theme="light"] .camera-pane small,
:root[data-theme="light"] .runtime-pill {
background: rgba(255, 255, 255, .90) !important;
color: #34433e !important;
border: 1px solid #d5ddda !important;
box-shadow: 0 2px 8px rgba(25, 40, 34, .10)
}
:root[data-theme="light"] .sim-status {
color: #2f6f57 !important
}
/* semantic sidebar icons */
#studioNav nav a {
display: flex;
align-items: center;
gap: 13px
}
.nav-icon {
width: 19px;
height: 19px;
flex: 0 0 19px;
fill: none;
stroke: currentColor;
stroke-width: 1.7;
stroke-linecap: round;
stroke-linejoin: round
}
body.nav-collapsed #studioNav nav a {
justify-content: center;
gap: 0
}
body.nav-collapsed .nav-icon {
width: 20px;
height: 20px
}
/* VLM observation carousel */
#snapshot-stack {
overflow: visible
}
.snapshot-carousel {
position: relative;
display: grid;
grid-template-columns: 34px minmax(0, 1fr) 34px;
align-items: center;
gap: 6px;
margin-top: 8px
}
.snapshot-image-open {
padding: 0;
border: 0;
background: transparent;
box-shadow: none;
min-width: 0;
cursor: zoom-in;
border-radius: 9px;
overflow: hidden
}
.snapshot-image-open:hover {
background: transparent;
transform: none;
box-shadow: none
}
#snapshot-image {
display: block;
width: 100%;
max-height: 220px;
aspect-ratio: 4/3;
object-fit: contain;
background: var(--bg);
border-radius: 9px;
border: 1px solid var(--line)
}
.snapshot-image-nav {
width: 32px;
height: 52px;
padding: 0;
border-radius: 9px;
font-size: 25px;
display: grid;
place-items: center;
box-shadow: 0 3px 12px #0002
}
.snapshot-image-nav:disabled {
visibility: hidden
}
.snapshot-image-meta {
display: flex;
justify-content: space-between;
gap: 8px;
padding: 5px 40px 0;
color: var(--muted);
font-size: 11px
}
#snapshot-image-position {
font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
white-space: nowrap
}
.sim-observation-dialog {
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
margin: 0;
padding: 46px 58px 38px;
width: min(1180px, 94vw);
max-width: 94vw;
max-height: 94vh;
overflow: hidden;
background: var(--panel);
color: var(--ink);
border: 1px solid var(--line);
border-radius: 16px;
box-shadow: 0 28px 80px #0008
}
.sim-observation-dialog::backdrop {
background: #05090cb8;
backdrop-filter: blur(3px)
}
.sim-observation-dialog img {
display: block;
margin: 0 auto;
max-width: 84vw;
max-height: 78vh;
object-fit: contain;
border-radius: 10px;
background: var(--bg)
}
.sim-observation-close {
position: absolute;
right: 12px;
top: 10px;
width: 34px;
height: 34px;
padding: 0;
border-radius: 9px;
font-size: 22px
}
.sim-observation-nav {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 42px;
height: 60px;
padding: 0;
display: grid;
place-items: center;
font-size: 30px;
border-radius: 10px;
box-shadow: 0 4px 18px #0004
}
.sim-observation-nav.prev {
left: 10px
}
.sim-observation-nav.next {
right: 10px
}
.sim-observation-nav:disabled {
visibility: hidden
}
.sim-observation-position {
position: absolute;
left: 50%;
top: 15px;
transform: translateX(-50%);
font: 12px ui-monospace, SFMono-Regular, Menlo, monospace;
color: var(--muted)
}
.sim-observation-caption {
text-align: center;
color: var(--muted);
font-size: 13px;
padding-top: 9px
}
:root[data-theme="light"] .snapshot-image-nav,
:root[data-theme="light"] .sim-observation-nav,
:root[data-theme="light"] .sim-observation-close {
background: #fff;
color: #243138;
border-color: #cad5d8;
box-shadow: 0 3px 12px #26383f1a
}
:root[data-theme="light"] .sim-observation-dialog {
background: #fff;
border-color: #cbd4d6;
box-shadow: 0 28px 80px #34444b33
}
/* Chat observation strip: keep all camera thumbnails visible, matching the earlier Studio viewer. */
.snapshot-toolbar {
display: grid;
grid-template-columns: 34px minmax(0, 1fr) 34px;
gap: 6px;
align-items: center;
margin-bottom: 8px
}
.snapshot-toolbar #snapshot-step {
width: 100%;
min-width: 0;
margin: 0
}
.snapshot-step-nav {
width: 34px;
height: 34px;
padding: 0;
display: grid;
place-items: center;
border-radius: 9px;
font-size: 22px;
line-height: 1
}
.snapshot-step-nav:disabled {
opacity: .35;
cursor: default
}
#snapshot-images.snapshot-images {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 6px;
margin-top: 0
}
.snapshot-thumb {
position: relative;
display: block;
min-width: 0;
padding: 0;
overflow: hidden;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--bg);
cursor: zoom-in;
box-shadow: none
}
.snapshot-thumb:hover {
transform: none;
box-shadow: 0 3px 10px rgba(0, 0, 0, .12)
}
.snapshot-thumb img {
display: block;
width: 100%;
aspect-ratio: 4/3;
object-fit: cover;
background: var(--bg)
}
.snapshot-thumb span {
display: block;
padding: 4px 5px;
font-size: 10px;
line-height: 1.2;
color: var(--muted);
text-align: center;
background: var(--panel)
}
:root[data-theme="light"] .snapshot-thumb {
background: #fff;
border-color: #d4ddda
}
:root[data-theme="light"] .snapshot-thumb span {
background: #fff;
color: #61716b
}
:root[data-theme="light"] .snapshot-step-nav {
background: #fff;
color: #243138;
border-color: #cad5d8;
box-shadow: 0 2px 8px rgba(38, 56, 63, .12)
}
@media(max-width:1100px) {
#snapshot-images.snapshot-images {
grid-template-columns: repeat(3, minmax(76px, 1fr))
}
.snapshot-thumb span {
font-size: 9px
}
}
/* Example-card width cleanup: at most four cards per row. */
.page-shell>.example-grid,
.doc-content .example-grid,
#exampleGrid.example-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 20px
}
@media(max-width:1400px) {
.page-shell>.example-grid,
.doc-content .example-grid,
#exampleGrid.example-grid {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
}
@media(max-width:1040px) {
.page-shell>.example-grid,
.doc-content .example-grid,
#exampleGrid.example-grid {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media(max-width:700px) {
.page-shell>.example-grid,
.doc-content .example-grid,
#exampleGrid.example-grid {
grid-template-columns: 1fr
}
}
.sim-shell button.control-active {
background: rgba(166, 231, 197, .22) !important;
color: var(--ink) !important;
border-color: #a6e7c5 !important;
box-shadow: 0 0 0 2px #a6e7c533
}
#chess-winner {
position: absolute;
top: 48px;
left: 50%;
transform: translateX(-50%);
z-index: 5;
padding: 10px 20px;
border-radius: 10px;
background: #a6e7c5;
color: #10291f;
font-weight: 700;
white-space: nowrap;
pointer-events: none
}
#chess-winner[hidden] {
display: none
}
.sim-shell [data-joint-step]:active,
.sim-shell [data-rotate]:active {
background: rgba(166, 231, 197, .22) !important;
color: var(--ink) !important
}
/* Size grids against their available workspace, including the open navigation. */
.sim-workspace,
.sim-bottom,
.sim-bottom>*,
.sim-chat,
.controls {
min-width: 0;
max-width: 100%
}
.sim-telemetry {
grid-template-columns: repeat(auto-fit, minmax(min(130px, 100%), 1fr))
}
.sim-telemetry output {
display: block
}
.sim-chat select {
min-width: 0;
max-width: 100%
}
.sim-status,
.trace-details,
.chat-message {
overflow-wrap: anywhere
}
#chess-winner {
max-width: 90%;
white-space: normal;
text-align: center
}
@media(max-width:1000px) {
.sim-studio {
grid-template-columns: minmax(0, 1fr)
}
.sim-bottom {
grid-template-columns: minmax(0, 1fr)
}
}
@media(max-width:600px) {
.camera-buttons {
gap: 1px
}
.camera-buttons button {
min-width: 0;
width: 25px;
padding: 3px
}
.sim-head {
flex-wrap: wrap
}
}
.camera-labels {
grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr)
}
@media(max-width:600px) {
.manual-grid {
grid-template-columns: minmax(0, 1fr)
}
.manual-grid>* {
min-width: 0
}
.camera-labels {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: 2fr 1fr 1fr
}
.pane-0 {
grid-row: auto
}
.views {
height: 760px
}
.camera-buttons {
max-width: 100%
}
}
/* Native hardware sessions live inside the main Studio shell. */
.session-toolbar {
display: flex;
justify-content: space-between;
align-items: center;
gap: 20px;
margin: 8px 0 18px
}
.session-toolbar h1 {
margin: 0 0 5px
}
.session-state {
margin: 0;
font-size: 15px
}
.hardware-view-shell {
position: relative;
min-height: 420px;
border: 1px solid var(--line);
border-radius: 14px;
overflow: hidden;
background: var(--card);
box-shadow: 0 8px 24px rgba(0, 0, 0, .08)
}
.integrated-frame {
display: block;
height: calc(100vh - 205px);
min-height: 650px;
border-radius: 0;
background: transparent
}
.hardware-loading {
min-height: 360px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
gap: 12px
}
.hardware-loading-overlay {
position: absolute;
z-index: 20;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 12px;
background: var(--bg);
color: var(--text)
}
.hardware-loading-overlay[hidden] {
display: none
}
.view-spinner {
width: 28px;
height: 28px;
border: 3px solid var(--line);
border-top-color: var(--accent);
border-radius: 50%;
animation: viewSpin .75s linear infinite
}
@keyframes viewSpin {
to {
transform: rotate(360deg)
}
}
.native-web-controls {
margin-top: 18px
}
.native-web-controls h2 {
margin-bottom: 10px
}
.native-control-grid {
display: grid;
grid-template-columns: repeat(6, minmax(0, 1fr));
gap: 8px
}
.native-control {
min-height: 42px;
box-shadow: 0 3px 10px rgba(0, 0, 0, .08)
}
.session-output {
margin-top: 16px
}
.native-view p {
position: absolute;
inset: 0;
display: flex;
align-items: center;
justify-content: center;
margin: 0;
font-size: 16px
}
@media(max-width:1000px) {
.native-control-grid {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
.integrated-frame {
min-height: 760px
}
}
/* Prevent layout rounding/embedded hardware surfaces from creating a horizontal page scrollbar. */
html,
body {
max-width: 100%;
overflow-x: hidden
}
main,
.page-shell,
.hardware-view-shell,
.integrated-frame {
min-width: 0;
max-width: 100%;
box-sizing: border-box
}
/* Readability and card action alignment. */
body {
font-size: 20px
}
p,
.page-intro,
.doc-content p,
.doc-content li,
.markdown-body p,
.markdown-body li {
font-size: 22px !important;
line-height: 1.65
}
.example-card {
display: flex;
flex-direction: column
}
.example-card .card-body {
flex: 1;
min-height: 190px;
padding-bottom: 18px
}
.example-card .card-body h3 {
font-size: 21px;
line-height: 1.3
}
.example-card .actions {
margin-top: auto;
padding-top: 18px;
display: flex;
align-items: flex-end;
gap: 8px
}
.example-card .actions button {
background: #253034;
color: var(--text);
border-color: var(--line);
box-shadow: none
}
.example-card .actions button:hover {
background: #487461af
}
:root[data-theme="light"] .example-card .actions button {
background: #fff;
color: #243138;
border-color: #cad5d8
}
:root[data-theme="light"] .example-card .actions button:hover {
background: #edf6f1;
border-color: #9fcbb7
}
/* ---- saved-demo auto recording + replay ---- */
.saved-panel {
display: flex;
flex-direction: column;
gap: 12px
}
.saved-demo-row {
display: flex;
flex-direction: column;
gap: 10px;
border-top: 1px solid var(--line);
padding: 14px 0
}
.saved-demo-row:first-child {
border-top: 0
}
.saved-demo-actions {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap
}
.saved-demo-actions button {
padding: 8px 11px
}
.saved-demo-actions a {
color: var(--accent);
font-size: 14px
}
.demo-replay {
border: 1px solid var(--line);
border-radius: 12px;
padding: 12px;
background: var(--panel, var(--card))
}
.demo-replay-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
margin-bottom: 10px
}
.demo-replay-head b {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap
}
.demo-replay-controls {
display: grid;
grid-template-columns: 42px minmax(0, 1fr) 76px;
gap: 8px;
align-items: center
}
.demo-replay-controls button {
width: 42px;
height: 38px;
padding: 0
}
.demo-replay-controls input[type=range] {
min-width: 0
}
.demo-replay-controls select {
min-width: 0;
padding: 7px 8px
}
.demo-replay>small {
display: block;
margin-top: 7px;
color: var(--muted);
font-variant-numeric: tabular-nums
}
/* Manual/simulator controls use the same translucent green hover in both themes. */
.sim-shell .manual-grid button:hover,
.sim-shell [data-joint-step]:hover,
.sim-shell [data-rotate]:hover,
.sim-shell .camera-buttons button:hover {
background: rgba(166, 231, 197, .18) !important;
border-color: #a6e7c5 !important;
color: var(--text) !important;
box-shadow: 0 2px 8px rgba(61, 116, 89, .12)
}
:root[data-theme="light"] .sim-shell .manual-grid button:hover,
:root[data-theme="light"] .sim-shell [data-joint-step]:hover,
:root[data-theme="light"] .sim-shell [data-rotate]:hover,
:root[data-theme="light"] .sim-shell .camera-buttons button:hover {
background: rgba(154, 217, 186, .24) !important;
border-color: #9fcbb7 !important;
color: #20322b !important
}
/* Documentation pages are deliberately narrower without changing the shared shell. */
.page-shell--docs {
width: min(1320px, 100%)
}
.page-shell--docs .page-intro {
max-width: 960px
}
.page-shell--docs .doc-layout {
grid-template-columns: 230px minmax(0, 1fr);
gap: 34px;
width: 100%;
max-width: 1320px;
margin-left: auto;
margin-right: auto
}
.page-shell--docs .doc-content {
max-width: 960px
}
@media(max-width:900px) {
.page-shell--docs {
width: 100%
}
.page-shell--docs .doc-layout {
grid-template-columns: 1fr
}
.page-shell--docs .doc-content {
max-width: none
}
}
/* ---- docs/detail header alignment ---- */
.page-shell--docs {
width: min(1450px, 100%);
padding-top: 24px;
}
.page-shell--docs .doc-layout {
width: 100%;
max-width: 1450px;
grid-template-columns: 230px minmax(0, 1fr);
gap: 38px;
margin-left: auto;
margin-right: auto;
}
.page-shell--docs .doc-content {
max-width: 1120px;
}
.page-shell--docs .page-intro {
max-width: 1120px;
}
.detail-page-head {
width: 100%;
margin: 6px 0 20px;
}
.page-shell--docs .detail-page-head {
margin-top: 0;
}
.content-brand {
display: inline-flex;
align-items: center;
gap: 9px;
color: var(--text);
margin: 0 0 18px;
text-decoration: none;
}
.content-brand img {
width: 150px;
height: auto;
display: block;
}
.content-brand span {
color: var(--muted);
font-size: 14px;
white-space: nowrap;
}
.content-brand:hover {
background: transparent !important;
color: var(--text);
}
.breadcrumbs {
margin: 0;
}
.breadcrumbs a:hover {
background: transparent !important;
color: var(--text) !important;
}
.breadcrumbs a:focus-visible {
background: transparent !important;
}
.sim-head-runtime-only {
justify-content: flex-end;
}
@media(max-width:900px) {
.page-shell--docs {
width: 100%;
padding-top: 14px
}
.page-shell--docs .doc-layout {
grid-template-columns: 1fr;
max-width: none
}
.page-shell--docs .doc-content {
max-width: none
}
.content-brand img {
width: 132px
}
}
\n\n
/* ---- header scale, inline runtime, and simulator control readability ---- */
.content-brand {
gap: 12px;
margin-bottom: 20px
}
.content-brand img {
width: 195px
}
.content-brand span {
font-size: 19px;
font-weight: 500
}
.breadcrumbs {
font-size: 20px;
line-height: 1.35
}
.breadcrumbs .runtime-pill-inline {
margin-left: auto;
font: inherit;
font-size: 20px;
letter-spacing: 0;
color: var(--muted);
white-space: nowrap;
}
.breadcrumbs .runtime-pill-inline #runState {
margin-left: 8px;
color: var(--text);
font: inherit
}
.sim-shell .controls button,
.sim-shell .manual-grid button,
.sim-shell .joints button,
.sim-shell .camera-buttons button,
.sim-shell .pick-place-web-run {
font-size: 12px
}
.sim-shell .manual-grid button small {
font-size: 14px
}
.sim-shell .joint-row button {
font-size: 17px
}
@media(max-width:900px) {
.content-brand img {
width: 165px
}
.content-brand span {
font-size: 17px
}
.breadcrumbs .runtime-pill-inline {
font-size: 17px
}
}
/* ---- Saved MuJoCo episodes: PyBullet-style cards + replay transport ---- */
.saved-panel {
gap: 14px
}
.saved-panel .card-title {
display: flex;
align-items: center;
justify-content: space-between
}
.saved-demo-list {
display: grid;
grid-template-columns: 1fr;
gap: 14px
}
.saved-demo-card {
overflow: hidden;
border: 1px solid var(--line);
border-radius: 12px;
background: var(--bg);
padding: 0 !important
}
.saved-demo-card>img {
display: block;
width: 100%;
aspect-ratio: 1.95/1;
object-fit: cover;
background: #263238
}
.saved-demo-copy {
padding: 15px
}
.saved-demo-card h3 {
font-size: 18px;
margin: 0 0 7px;
color: var(--text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.saved-demo-card p {
font-size: 16px;
line-height: 1.45;
margin: 0 0 14px;
color: var(--muted);
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden
}
.saved-demo-actions {
display: flex;
gap: 8px;
align-items: stretch
}
.saved-demo-actions .saved-demo-play {
flex: 1;
width: auto;
min-height: 48px;
font-size: 17px
}
.saved-demo-actions .saved-demo-delete {
flex: 0 0 48px;
width: 48px;
min-height: 48px;
padding: 10px;
display: grid;
place-items: center;
color: var(--muted)
}
.saved-demo-delete svg {
width: 19px;
height: 19px;
fill: none;
stroke: currentColor;
stroke-width: 1.7;
stroke-linecap: round;
stroke-linejoin: round
}
.saved-demo-delete:hover {
color: #ffb4ad;
border-color: #85564d
}
.replay-under-views {
margin: 12px 0 0;
border: 1px solid var(--line);
border-radius: 12px;
padding: 14px 18px;
background: var(--card);
text-align: center
}
.replay-under-views .demo-replay-head {
display: flex;
justify-content: center;
align-items: center;
gap: 14px;
margin: 0 0 10px
}
.replay-under-views .demo-replay-head b {
font-size: 14px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}
.demo-replay-timeline {
display: flex;
align-items: center;
gap: 12px;
margin: 0 0 10px
}
.demo-replay-timeline input[type=range] {
flex: 1;
min-width: 80px
}
.demo-replay-timeline small {
min-width: 86px;
text-align: right;
color: var(--muted);
font-variant-numeric: tabular-nums
}
.replay-under-views .demo-replay-controls {
display: flex;
justify-content: center;
align-items: center;
gap: 8px
}
.replay-under-views .demo-replay-controls button {
width: 42px;
height: 38px;
padding: 0;
display: grid;
place-items: center
}
.replay-under-views .demo-replay-controls label {
display: flex;
grid-template-columns: none;
align-items: center;
gap: 8px;
margin-left: 8px;
font-size: 13px
}
.replay-under-views .demo-replay-controls select {
min-width: 74px;
padding: 7px 8px
}
:root[data-theme="light"] .saved-demo-card {
background: #fff
}
:root[data-theme="light"] .replay-under-views {
background: #fff
}
/* Saved episode thumbnails must come from the recorded task, never generic scene art. */
.saved-demo-image-missing {
display: grid;
place-items: center;
width: 100%;
aspect-ratio: 1.95/1;
background: var(--card);
color: var(--muted);
font-size: 14px;
}
\n\n
/* ---- docs readability + saved demos bounded column + custom delete modal ---- */
\n.page-shell--docs .page-intro,
\n.page-shell--docs .doc-content p {
\n font-size: 24px !important;
\n line-height: 1.72;
\n
}
\n.page-shell--docs .doc-content li {
\n font-size: 22px !important;
\n line-height: 1.68;
\n
}
\n.saved-demo-list {
\n max-height: 690px;
\n overflow-y: auto;
\n overflow-x: hidden;
\n padding-right: 6px;
\n scrollbar-gutter: stable;
\n
}
\n.saved-demo-list::-webkit-scrollbar {
width: 8px;
}
\n.saved-demo-list::-webkit-scrollbar-thumb {
background: var(--line);
border-radius: 999px;
}
\n.saved-demo-list::-webkit-scrollbar-track {
background: transparent;
}
\n.saved-demo-confirm {
\n width: min(520px, calc(100vw - 32px));
\n max-width: 520px;
\n padding: 0;
\n border: 1px solid var(--line);
\n border-radius: 16px;
\n background: var(--card);
\n color: var(--text);
\n box-shadow: 0 22px 70px rgba(0, 0, 0, .38);
\n
}
\n.saved-demo-confirm::backdrop {
background: rgba(3, 9, 11, .68);
backdrop-filter: blur(3px);
}
\n.saved-demo-confirm-copy {
padding: 24px 24px 14px;
}
\n.saved-demo-confirm h3 {
margin: 0 0 10px;
font-size: 22px;
}
\n.saved-demo-confirm p {
margin: 0 0 8px;
font-size: 17px !important;
line-height: 1.5;
}
\n.saved-demo-confirm #saved-demo-confirm-name {
color: var(--text);
font-weight: 650;
}
\n.saved-demo-confirm-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
padding: 14px 24px 22px;
}
\n.saved-demo-confirm-actions button {
min-width: 96px;
font-size: 16px;
}
\n:root[data-theme="light"] .saved-demo-confirm {
background: #fff;
}
\n@media(max-width:900px) {
\n .page-shell--docs .page-intro,
\n .page-shell--docs .doc-content p {
font-size: 21px !important;
}
\n .page-shell--docs .doc-content li {
font-size: 20px !important;
}
\n .saved-demo-list {
max-height: 620px;
}
\n
}
\n
/* ---- data cards: 4-column home fit, title-first hierarchy, wider inspector ---- */
.home-data-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 18px;
width: 100%;
max-width: 100%;
align-items: stretch;
}
#homeData {
display: contents
}
.home-data-grid>.card,
.home-data-grid #homeData>.card {
min-width: 0;
width: 100%
}
.data-card {
min-width: 0;
display: flex;
flex-direction: column;
overflow: hidden
}
.data-card h3 {
margin: 0 0 10px;
font-size: 20px;
line-height: 1.28;
overflow-wrap: anywhere
}
.data-card .tag {
display: block;
margin: 0 0 14px;
padding-top: 0;
color: var(--text);
overflow-wrap: anywhere
}
.data-card p {
margin: 0 0 18px;
flex: 1
}
.data-card-actions {
display: grid;
grid-template-columns: minmax(0, 1fr) 48px;
gap: 10px;
margin-top: auto
}
.data-card-actions button {
min-width: 0;
font-size: 16px
}
.data-delete {
padding: 10px !important;
color: #ffb4ad
}
.data-delete:hover {
background: rgba(255, 120, 112, .11) !important;
border-color: #8b4d4a !important
}
.example-card .card-body h3 {
order: 0;
margin: 8px 0 10px
}
.example-card .tag-row {
order: 1;
margin: 0 0 14px
}
.example-card .actions {
order: 2
}
.modal-data-inspect {
width: min(1280px, 94vw) !important;
max-width: 1280px !important;
max-height: 90vh
}
.modal-data-inspect #modalBody {
max-height: calc(90vh - 90px);
overflow: auto
}
.modal-confirm {
width: min(560px, calc(100vw - 32px)) !important;
max-width: 560px !important
}
.data-delete-confirm p {
font-size: 17px !important;
margin: 0 0 12px
}
.data-delete-confirm strong {
display: block;
font-size: 18px;
overflow-wrap: anywhere
}
.data-delete-confirm-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 24px
}
:root[data-theme="light"] .data-card .tag {
color: var(--text) !important
}
@media(max-width:1450px) {
.home-data-grid {
grid-template-columns: repeat(3, minmax(0, 1fr))
}
}
@media(max-width:1050px) {
.home-data-grid {
grid-template-columns: repeat(2, minmax(0, 1fr))
}
}
@media(max-width:700px) {
.home-data-grid {
grid-template-columns: 1fr
}
}
/* Native app scale. This does not override browser-controlled site zoom. */
html,
body {
zoom: 100%
}
/* ---- vNEXT: hardware surface follows the parent page; Data categories ---- */
.page-shell .hardware-view-shell{
width:100%;
height:auto!important;
min-height:0!important;
max-height:none!important;
overflow:visible!important
}
.page-shell .integrated-frame{
display:block;
width:100%;
height:auto;
min-height:420px;
max-height:none!important;
overflow:hidden!important;
border:0;
border-radius:0
}
@media(max-width:1000px){
.page-shell .integrated-frame{min-height:420px}
}
.dataset-tabs{
display:flex;
align-items:center;
gap:8px;
margin:18px 0 18px;
padding-bottom:10px;
border-bottom:1px solid var(--line)
}
.dataset-tabs button{
border:0;
background:transparent;
color:var(--muted);
padding:9px 16px;
border-radius:9px
}
.dataset-tabs button.active{
background:color-mix(in srgb,var(--accent) 14%,var(--card));
color:var(--text)
}
.data-dataset-grid{
grid-template-columns:repeat(3,minmax(0,1fr));
align-items:stretch
}
.data-card{overflow:hidden;padding:0}
.data-card-thumb{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--card);border-bottom:1px solid var(--line)}
.data-card-copy{padding:18px;display:flex;flex-direction:column;min-height:190px}
.data-card-copy p{flex:1}
.data-add-card{
min-height:260px;
display:flex;
flex-direction:column;
align-items:center;
justify-content:center;
gap:10px;
border:1px dashed var(--line)!important;
background:color-mix(in srgb,var(--card) 86%,transparent)!important;
color:var(--muted)!important
}
.data-add-card:hover{
color:var(--accent)!important;
border-color:var(--accent)!important;
background:color-mix(in srgb,var(--accent) 7%,var(--card))!important
}
.data-add-plus{font-size:52px;line-height:1;font-weight:300}
@media(max-width:1200px){.data-dataset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.data-dataset-grid{grid-template-columns:1fr}}
/* ---- task-bundle data browser + full-width hardware parent ---- */
.page-shell--hardware{
width:min(1950px,100%);
}
.bundle-card-actions{
grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.bundle-card-actions button{min-width:0}
.modal-data-bundle{
width:min(1220px,94vw)!important;
max-width:1220px!important;
max-height:90vh;
}
.modal-data-bundle #modalBody{
max-height:calc(90vh - 92px);
overflow:auto;
}
.bundle-view-head{
margin-bottom:18px;
padding-bottom:14px;
border-bottom:1px solid var(--line)
}
.bundle-view-head .tag{
position:static;
display:inline-block;
margin-bottom:8px;
color:var(--text);
background:transparent;
border:0;
padding:0;
}
.bundle-view-head p{margin:0}
.bundle-demo-grid{
display:grid;
grid-template-columns:repeat(3,minmax(0,1fr));
gap:14px;
}
.bundle-demo-card{
min-width:0;
overflow:hidden;
border:1px solid var(--line);
border-radius:12px;
background:var(--card)
}
.bundle-demo-thumb{
display:block;
width:100%;
aspect-ratio:16/9;
object-fit:cover;
border-bottom:1px solid var(--line)
}
.bundle-demo-card>div{padding:14px}
.bundle-demo-card h3{margin:0 0 7px;font-size:17px}
.bundle-demo-card p{font-size:15px!important;margin:0 0 12px}
.bundle-demo-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:1000px){.bundle-demo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.bundle-demo-grid{grid-template-columns:1fr}}
/* ---- 2026-10-21 compact Home data bundles + Agent delete action ---- */
.home-data-grid {
grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
align-items: start !important;
}
#homeData { display: contents !important; }
.home-data-grid > .home-data-card,
.home-data-grid #homeData > .data-bundle-card {
min-height: 330px !important;
height: 330px !important;
width: 100% !important;
align-self: start !important;
}
.home-data-grid #homeData > .data-bundle-card .data-card-thumb {
height: 145px !important;
aspect-ratio: auto !important;
flex: 0 0 145px;
}
.home-data-grid #homeData > .data-bundle-card .data-card-copy {
min-height: 0 !important;
height: 185px;
padding: 15px 16px !important;
}
.home-data-grid #homeData > .data-bundle-card .data-card-copy h3 {
font-size: 17px !important;
margin-bottom: 6px !important;
}
.home-data-grid #homeData > .data-bundle-card .data-card-copy p {
font-size: 15px !important;
margin-bottom: 10px !important;
}
.agent-bundle-actions { grid-template-columns: minmax(0,1fr) 46px !important; }
.data-delete-bundle {
width: 46px;
min-width: 46px !important;
padding: 10px !important;
color: #ffb4ad;
display: grid;
place-items: center;
}
.data-delete-bundle svg { width: 19px; height: 19px; }
.data-delete-bundle:hover {
background: rgba(255,120,112,.11) !important;
border-color: #8b4d4a !important;
}
@media(max-width:1450px){.home-data-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media(max-width:1050px){.home-data-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:700px){.home-data-grid{grid-template-columns:1fr!important}.home-data-grid>.home-data-card,.home-data-grid #homeData>.data-bundle-card{height:auto!important;min-height:300px!important}}
/* Hardware launch preflight: Linux support and a real D1 connection are distinct. */
.hardware-preflight{
margin:14px 0 6px;
padding:10px 12px;
border:1px solid var(--line);
border-radius:9px;
background:color-mix(in srgb,var(--panel) 92%,var(--bg));
font-size:13px;
line-height:1.45;
}
.hardware-preflight.is-ready{font-weight:600}
.hardware-preflight.is-waiting{color:var(--muted)}
.hardware-missing{margin:0 0 12px;color:var(--muted);font-size:11px;line-height:1.4}
/* ACT real-policy launcher */
.act-launch-config{
margin:14px 0 6px;
padding:14px;
border:1px solid var(--line);
border-radius:10px;
background:color-mix(in srgb,var(--panel) 94%,var(--bg));
}
.act-launch-config h3{margin:0 0 12px}
.act-launch-config .form{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.act-launch-config input,.act-launch-config select{width:100%}
.act-reset-ready{display:flex;align-items:center;gap:8px;margin-top:12px}
.act-reset-ready input{width:auto}
.act-launch-note{margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.45}
@media(max-width:700px){.act-launch-config .form{grid-template-columns:1fr}}
/* ---- 2026-10-22 data modal media/navigation + docs top-row breadcrumbs ---- */
.modal-data-inspect,
.modal-data-bundle {
background: var(--card) !important;
}
.modal-data-inspect > header,
.modal-data-bundle > header {
display: grid;
grid-template-columns: minmax(90px, 1fr) auto minmax(90px, 1fr);
align-items: center;
gap: 12px;
min-height: 44px;
}
.modal-data-inspect > header #modalTitle,
.modal-data-bundle > header #modalTitle {
grid-column: 2;
grid-row: 1;
margin: 0;
text-align: center;
justify-self: center;
}
.modal-data-inspect > header #closeModal,
.modal-data-bundle > header #closeModal {
grid-column: 3;
grid-row: 1;
justify-self: end;
}
.modal-back-button {
grid-column: 1;
grid-row: 1;
justify-self: start;
display: inline-flex;
align-items: center;
gap: 7px;
min-width: 0;
padding: 8px 10px;
border-color: transparent;
background: transparent;
color: var(--muted);
}
.modal-back-button:hover {
background: color-mix(in srgb, var(--line) 35%, transparent);
color: var(--text);
}
.modal-data-inspect #modalBody,
.modal-data-bundle #modalBody {
scrollbar-width: thin;
scrollbar-color: var(--line) var(--card);
}
.modal-data-inspect #modalBody::-webkit-scrollbar,
.modal-data-bundle #modalBody::-webkit-scrollbar {
width: 5px;
}
.modal-data-inspect #modalBody::-webkit-scrollbar-track,
.modal-data-bundle #modalBody::-webkit-scrollbar-track {
background: var(--card);
}
.modal-data-inspect #modalBody::-webkit-scrollbar-thumb,
.modal-data-bundle #modalBody::-webkit-scrollbar-thumb {
background: var(--line);
border-radius: 999px;
}
.data-recording-video {
display: block;
width: calc(100% + 50px);
max-width: none;
max-height: 58vh;
margin: 14px -25px 24px;
object-fit: contain;
background: #000;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
}
.data-recording-fallback {
aspect-ratio: 16 / 9;
object-fit: contain;
}
.modal-data-inspect #modalBody > h3,
.modal-data-bundle .bundle-view-head,
.modal-data-bundle .bundle-demo-card h3 {
text-align: center;
}
.modal-data-bundle .bundle-view-head .tag {
display: block;
width: max-content;
margin-left: auto;
margin-right: auto;
}
/* Documentation pages: logo left, breadcrumb trail on the same top row right. */
.page-shell--docs .detail-page-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
width: 100%;
margin-bottom: 22px;
}
.page-shell--docs .detail-page-head .content-brand {
margin: 0;
flex: 0 0 auto;
}
.page-shell--docs .detail-page-head .breadcrumbs {
margin: 0 0 0 auto;
justify-content: flex-end;
text-align: right;
min-width: 0;
}
@media(max-width:760px) {
.page-shell--docs .detail-page-head {
align-items: flex-start;
flex-direction: column;
gap: 10px;
}
.page-shell--docs .detail-page-head .breadcrumbs {
margin-left: 0;
justify-content: flex-start;
text-align: left;
}
.data-recording-video {
width: calc(100% + 32px);
margin-left: -16px;
margin-right: -16px;
}
}
/* ---- 2026-10-22 reliable Data recording playback ---- */
.data-video-host,
.data-frame-player {
width: calc(100% + 50px);
margin: 14px -25px 24px;
background: #000;
border-top: 1px solid var(--line);
border-bottom: 1px solid var(--line);
overflow: hidden;
}
.data-video-host .data-recording-video {
width: 100%;
margin: 0;
border: 0;
}
.data-video-frame-fallback[hidden] { display: none !important; }
.data-video-frame-fallback .data-frame-player { width: 100%; margin: 0; border: 0; }
.data-frame-stage {
display: grid;
place-items: center;
width: 100%;
min-height: 260px;
max-height: 58vh;
aspect-ratio: 16 / 9;
background: #000;
}
.data-frame-stage img {
width: 100%;
height: 100%;
max-height: 58vh;
object-fit: contain;
background: #000;
}
.data-replay-timeline {
display: grid;
grid-template-columns: minmax(0,1fr) auto;
align-items: center;
gap: 12px;
padding: 10px 14px 6px;
background: var(--card);
}
.data-replay-timeline input { width: 100%; }
.data-replay-timeline small { color: var(--muted); white-space: nowrap; }
.data-replay-controls {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 6px 14px 12px;
background: var(--card);
}
.data-replay-controls button { min-width: 42px; }
.data-replay-controls label { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); }
.data-replay-controls select { min-width: 82px; }
@media(max-width:760px) {
.data-video-host,
.data-frame-player { width: calc(100% + 32px); margin-left: -16px; margin-right: -16px; }
.data-replay-controls { flex-wrap: wrap; }
}
/* ---- 2026-10-22 docs content refresh ---- */
.page-shell--docs .doc-summary-grid {
display:grid;
grid-template-columns:repeat(3,minmax(0,1fr));
gap:14px;
margin:18px 0 22px;
}
.page-shell--docs .doc-summary-card {
border:1px solid var(--line);
background:var(--card);
border-radius:14px;
padding:18px;
min-width:0;
}
.page-shell--docs .doc-summary-card h3 {
margin:8px 0 8px;
font-size:18px;
}
.page-shell--docs .doc-summary-card p {
margin:0;
font-size:15px;
line-height:1.6;
}
.page-shell--docs .doc-summary-card a {
display:inline-block;
margin-top:12px;
}
.page-shell--docs .doc-contract {
display:grid;
grid-template-columns:repeat(4,minmax(0,1fr));
gap:1px;
overflow:hidden;
margin:18px 0 22px;
border:1px solid var(--line);
border-radius:14px;
background:var(--line);
}
.page-shell--docs .doc-contract > div {
display:flex;
flex-direction:column;
gap:6px;
min-width:0;
padding:15px 16px;
background:var(--card);
}
.page-shell--docs .doc-contract b {
font-size:12px;
letter-spacing:.06em;
text-transform:uppercase;
color:var(--text);
}
.page-shell--docs .doc-contract span {
color:var(--muted);
font-size:14px;
line-height:1.45;
}
.page-shell--docs .doc-step-grid {
display:grid;
grid-template-columns:repeat(2,minmax(0,1fr));
gap:14px;
margin:18px 0 22px;
}
.page-shell--docs .doc-step-grid > div {
position:relative;
border:1px solid var(--line);
background:var(--card);
border-radius:14px;
padding:18px 18px 18px 58px;
min-height:112px;
}
.page-shell--docs .doc-step-grid > div > span:first-child {
position:absolute;
left:17px;
top:18px;
display:grid;
place-items:center;
width:27px;
height:27px;
border-radius:50%;
border:1px solid var(--line);
font-weight:700;
font-size:12px;
color:var(--text);
background:var(--bg);
}
.page-shell--docs .doc-step-grid h3 {
margin:0 0 6px;
font-size:17px;
}
.page-shell--docs .doc-step-grid p {
margin:0;
font-size:15px;
line-height:1.6;
}
.page-shell--docs .doc-checklist {
display:grid;
gap:8px;
margin:16px 0 0;
padding-left:22px;
}
.page-shell--docs .doc-real-grid {
margin-top:14px;
}
@media(max-width:1100px){
.page-shell--docs .doc-summary-grid {grid-template-columns:1fr 1fr;}
.page-shell--docs .doc-contract {grid-template-columns:1fr 1fr;}
}
@media(max-width:700px){
.page-shell--docs .doc-summary-grid,
.page-shell--docs .doc-contract,
.page-shell--docs .doc-step-grid {grid-template-columns:1fr;}
}