:root {
  --v2-bg: var(--color-dark, #1c1c1c);
  --v2-sidebar: #151719;
  --v2-panel: #232527;
  --v2-panel-2: #181a1c;
  --v2-surface: #151719;
  --v2-surface-raised: #292b2e;
  --v2-border: #3a3d40;
  --v2-border-soft: #303235;
  --v2-text: #f2f2f2;
  --v2-muted: #9ca3aa;
  --v2-orange: var(--color-main, #ff6b00);
  --v2-blue: var(--v2-orange);
  --v2-cyan: #2fc1d8;
  --v2-green: #46c987;
  --v2-amber: #e3a948;
  --v2-red: #e65b64;
}

.lab-page-body { background: var(--v2-bg); }
.lab-page-body > main { max-width: none; padding: 0; }
.lab-page-body > footer { display: none; }
.lab-shell-v2, .lab-shell-v2 * { box-sizing: border-box; }
.lab-shell-v2 {
  min-height: calc(100vh - 66px);
  display: grid;
  grid-template-columns: 218px minmax(0, 1fr);
  background: var(--v2-bg);
  color: var(--v2-text);
  font-family: Inter, "Segoe UI", sans-serif;
}
.lab-shell-v2 button, .lab-shell-v2 input { font: inherit; }
.lab-shell-v2 button:focus-visible, .lab-shell-v2 a:focus-visible,
.lab-shell-v2 input:focus-visible, .lab-shell-v2 summary:focus-visible {
  outline: 2px solid #ff9a52;
  outline-offset: 2px;
}

.lab-sidebar-v2 {
  position: sticky; top: 66px; height: calc(100vh - 66px);
  display: flex; flex-direction: column; gap: 12px;
  padding: 18px 14px 12px;
  background: linear-gradient(180deg, #181a1c, #111315);
  border-right: 1px solid var(--v2-border);
  overflow-y: auto;
  z-index: 40;
}
.lab-nav-v2 { display: grid; gap: 3px; }
.lab-nav-v2 a, .lab-nav-v2 > span {
  min-height: 34px; display: grid; grid-template-columns: 20px 1fr auto; align-items: center; gap: 8px;
  padding: 7px 9px; border-left: 2px solid transparent; border-radius: 2px;
  color: #a8b5c0; font-size: .76rem; text-decoration: none;
}
.lab-nav-v2 a:hover { background: #292b2e; color: #fff; }
.lab-nav-v2 a.is-active { color: #fff; background: rgba(255, 107, 0, .14); border-left-color: var(--v2-orange); }
.lab-nav-v2 .is-disabled { color: #53616d; cursor: not-allowed; }
.lab-nav-v2 small { font-size: .48rem; text-transform: uppercase; color: #6e7b86; }
.sidebar-title-v2 { display: block; color: #617483; font-size: .56rem; letter-spacing: .12em; font-weight: 800; }
.sidebar-quick-v2 { display: grid; gap: 5px; padding-top: 4px; }
.sidebar-quick-v2 button { padding: 6px 8px; border: 1px solid var(--v2-border); background: #1d1f21; color: #b8bdc2; text-align: left; font-size: .68rem; border-radius: 2px; }
.sidebar-quick-v2 button:hover { border-color: var(--v2-orange); color: #fff; }
.system-card-v2 { margin-top: auto; padding: 10px; background: var(--v2-surface); border: 1px solid var(--v2-border-soft); }
.system-card-v2 dl { display: grid; gap: 3px; margin: 8px 0 0; }
.system-card-v2 dl div { display: flex; justify-content: space-between; gap: 10px; }
.system-card-v2 dt, .system-card-v2 dd { margin: 0; font-size: .61rem; }
.system-card-v2 dt { color: #647584; } .system-card-v2 dd { color: #b8c3cb; font-weight: 700; }
.sidebar-overlay-v2 { display: none; }

.lab-main-v2 { min-width: 0; padding: 0 14px 12px; }
.lab-topbar-v2 {
  min-height: 67px; display: grid; grid-template-columns: minmax(300px, 1fr) auto auto; align-items: center; gap: 18px;
  margin: 0 -14px; padding: 9px 16px; background: rgba(21, 23, 25, .97); border-bottom: 1px solid var(--v2-border);
}
.topbar-title-v2 { display: flex; align-items: center; gap: 10px; min-width: 0; }
.topbar-title-v2 > div { min-width: 0; }
.topbar-title-v2 span { display: block; color: #ff8a38; font-size: .56rem; font-weight: 700; letter-spacing: .1em; }
.topbar-title-v2 h1 { margin: 2px 0 0; color: #eef4f8; font-size: 1.02rem; font-weight: 650; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar-toggle-v2 { display: none; width: 34px; height: 34px; border: 1px solid var(--v2-border); background: var(--v2-surface-raised); color: #e4e6e8; }
.lab-modes-v2 { display: flex; gap: 2px; padding: 3px; background: var(--v2-surface); border: 1px solid var(--v2-border-soft); }
.lab-modes-v2 button { min-height: 30px; padding: 5px 9px; border: 0; background: transparent; color: #788997; font-size: .65rem; }
.lab-modes-v2 button.is-active { background: rgba(255, 107, 0, .16); color: #fff3eb; box-shadow: inset 0 -2px var(--v2-orange); }
.lab-modes-v2 button:disabled { opacity: .45; cursor: not-allowed; }
.lab-modes-v2 small { display: block; font-size: .43rem; }
.general-state-v2 { display: flex; align-items: center; gap: 8px; min-width: 110px; }
.general-state-v2 > span:last-child { display: grid; }
.general-state-v2 small { color: #667987; font-size: .49rem; letter-spacing: .12em; }
.general-state-v2 strong { color: #dfeaf0; font: 700 .72rem/1.2 Consolas, monospace; }
.lab-message-v2 { position: fixed; top: 76px; right: 18px; z-index: 60; max-width: 420px; padding: 10px 14px; border: 1px solid #2f718f; background: #102737; color: #dff5ff; box-shadow: 0 12px 35px rgba(0,0,0,.3); font-size: .72rem; }
.lab-message-v2.is-error { border-color: #a5444b; background: #32181b; color: #ffe5e7; }

.education-panel-v2 {
  position: relative;
  width: auto;
  max-height: none;
  margin-top: 9px;
  overflow-y: visible;
  border: 1px solid #4b4e51;
  background: linear-gradient(180deg, #242628, #191b1d);
  box-shadow: 0 12px 32px rgba(0, 0, 0, .32);
}
.education-panel-v2[hidden] { display: none; }
.education-panel-v2__header {
  min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 8px 11px; border-bottom: 1px solid var(--v2-border); background: #292b2e;
}
.education-panel-v2__header > span { display: grid; }
.education-panel-v2__header small { color: #ff8a38; font-size: .5rem; letter-spacing: .12em; font-weight: 800; }
.education-panel-v2__header strong { color: #e4eef3; font-size: .74rem; letter-spacing: .06em; }
.education-panel-v2__header button { width: 30px; height: 30px; border: 1px solid #4a4d50; background: var(--v2-surface); color: #b7bcc1; font-size: 1.1rem; }
.exercise-selector-v2 { display: grid; grid-template-columns: 1fr auto; gap: 5px 8px; padding: 10px 11px; border-bottom: 1px solid var(--v2-border-soft); }
.exercise-selector-v2 label { grid-column: 1 / span 2; color: #607b8d; font-size: .48rem; letter-spacing: .11em; font-weight: 800; }
.exercise-selector-v2 select { min-width: 0; height: 32px; padding: 4px 7px; border: 1px solid #505356; background: #131517; color: #e5e7e9; font-size: .64rem; }
.exercise-selector-v2 > span { display: grid; place-items: center; padding: 0 7px; border: 1px solid #62532e; background: #251f10; color: #dcb95c; font: 700 .48rem Consolas, monospace; }
.exercise-brief-v2 { padding: 10px 11px; }
.exercise-brief-v2 > small, .exercise-restrictions-v2 > span { color: #e37a33; font-size: .48rem; letter-spacing: .1em; font-weight: 800; }
.exercise-brief-v2 h2 { margin: 3px 0 5px; color: #eff5f8; font-size: .93rem; }
.exercise-brief-v2 p { margin: 0 0 8px; color: #8ea1ad; font-size: .61rem; line-height: 1.45; }
.exercise-brief-v2 > div { padding: 7px 8px; border-left: 2px solid var(--v2-orange); background: #1a1c1e; }
.exercise-brief-v2 > div strong { color: #c8dce7; font-size: .62rem; line-height: 1.35; }
.exercise-restrictions-v2 { margin: 0 11px 8px; padding: 7px 8px; border: 1px solid var(--v2-border); background: #17191b; }
.exercise-restrictions-v2 p { margin: 3px 0 0; color: #8295a1; font-size: .56rem; line-height: 1.35; }
.exercise-stats-v2 { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 11px 9px; border: 1px solid var(--v2-border); }
.exercise-stats-v2 span { display: grid; gap: 2px; padding: 6px; border-right: 1px solid var(--v2-border); color: #858b90; font-size: .43rem; text-align: center; }
.exercise-stats-v2 span:last-child { border-right: 0; }
.exercise-stats-v2 strong { color: #d5e2e9; font: 700 .65rem Consolas, monospace; }
.hints-v2 { margin: 0 11px 9px; padding: 8px; border: 1px solid #493f28; background: #1d190f; }
.hints-v2 > div { display: flex; justify-content: space-between; gap: 8px; color: #d8b85f; font-size: .5rem; }
.hints-v2 > div span { color: #89784c; }
.hints-v2 ol { display: grid; gap: 4px; margin: 6px 0; padding-left: 17px; color: #b9a878; font-size: .55rem; line-height: 1.35; }
.hints-v2 button { width: 100%; padding: 5px; border: 1px solid #6b592f; background: #2c2515; color: #d8bd6c; font-size: .54rem; }
.exercise-actions-v2 { display: grid; grid-template-columns: 1.2fr 1fr; gap: 6px; margin: 0 11px 10px; }
.exercise-actions-v2 button { min-height: 34px; border: 1px solid #ff7a1a; background: #c95100; color: #fff; font-size: .59rem; font-weight: 700; }
.exercise-actions-v2 button:last-child { border-color: #4a4d50; background: #202224; color: #aeb3b7; }
.validation-result-v2 { margin: 0 11px 11px; border: 1px solid var(--v2-border); background: #151719; }
.validation-result-v2[hidden] { display: none; }
.score-v2 { display: flex; justify-content: space-between; align-items: center; padding: 8px; border-bottom: 1px solid var(--v2-border); }
.score-v2 > span { display: grid; color: #647b89; font-size: .46rem; }
.score-v2 > span strong { color: #7bd9a6; font-size: .65rem; }
.score-v2 > b { color: #eef6f8; font: 800 1.6rem Consolas, monospace; }
.score-v2 > b small { color: #68808e; font-size: .55rem; }
.validation-result-v2 ul { display: grid; gap: 3px; margin: 7px 8px; padding: 0; list-style: none; }
.validation-result-v2 li { display: grid; grid-template-columns: 15px 1fr auto; gap: 5px; color: #9cabb5; font-size: .53rem; }
.validation-result-v2 li.is-passed > i { color: var(--v2-green); }
.validation-result-v2 li.is-warning > i { color: var(--v2-amber); }
.validation-result-v2 li.is-failed > i { color: var(--v2-red); }
.validation-result-v2 li i { font-style: normal; }
.validation-result-v2 li small { color: #647987; }
.validation-result-v2 details { padding: 7px 8px; border-top: 1px solid var(--v2-border); color: #ff9a52; font-size: .55rem; }
.validation-result-v2 details p { margin: 6px 0 0; color: #8fa2ae; line-height: 1.4; }
.parameter-row-v2.is-locked { background: rgba(30, 43, 52, .5); }
.parameter-row-v2.is-locked input, .load-control-v2.is-locked input { cursor: not-allowed; opacity: .55; }
.parameter-lock-v2 { display: block; margin-top: 2px; color: #b69a55; font-size: .42rem; line-height: 1; }
.parameter-lock-v2[hidden] { display: none; }

.lab-dashboard-v2 {
  display: grid;
  grid-template-columns: 310px minmax(340px, 1fr) 292px;
  grid-template-rows: minmax(396px, max-content) minmax(348px, max-content);
  gap: 9px;
  padding-top: 9px;
}
.v2-panel { min-width: 0; overflow: hidden; background: linear-gradient(180deg, var(--v2-panel), #1a1c1e); border: 1px solid var(--v2-border); box-shadow: inset 0 1px rgba(255,255,255,.025); }
.v2-heading { min-height: 40px; display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 8px 11px; border-bottom: 1px solid var(--v2-border-soft); background: #202224; }
.v2-heading > span:first-child { display: grid; gap: 1px; }
.v2-heading small { color: #ff8a38; font-size: .49rem; letter-spacing: .11em; font-weight: 700; }
.v2-heading strong { color: #dfe8ee; font-size: .72rem; letter-spacing: .05em; }
.state-chip-v2, .classification-v2, .event-count-v2 { padding: 3px 6px; border: 1px solid #2b654c; background: #10251d; color: #64d79a; font: 700 .54rem Consolas, monospace; }
.icon-action { border: 1px solid #4a4d50; background: var(--v2-surface); color: #b1b6ba; }

.drive-console-panel { grid-column: 1; grid-row: 1; }
.virtual-drive-v2 { width: 232px; height: 284px; margin: 8px auto; padding: 11px 14px 9px; border: 1px solid #43505b; border-radius: 5px 5px 2px 2px; background: linear-gradient(105deg, #222c34 0, #111920 40%, #1b252e 100%); box-shadow: 14px 12px 0 #080c10, 15px 12px 0 #303a42; position: relative; }
.virtual-drive-v2::before { content: ""; position: absolute; inset: 5px auto 5px -8px; width: 7px; background: repeating-linear-gradient(#303c45 0 4px,#121a20 4px 7px); }
.drive-brand-v2 { height: 25px; display: grid; grid-template-columns: 25px 1fr; grid-template-rows: 13px 10px; align-items: center; }
.drive-brand-v2 > span { grid-row: span 2; display: grid; place-items: center; width: 20px; height: 20px; background: #6b2f09; color: #ffb27c; font-size: .58rem; font-weight: 900; }
.drive-brand-v2 strong { font-size: .66rem; letter-spacing: .08em; }.drive-brand-v2 small { color: #6f808d; font-size: .42rem; letter-spacing: .08em; }
.lcd-v2 { height: 72px; padding: 5px 8px; border: 4px solid #090d10; background: linear-gradient(135deg,#aebc9d,#7f957b); color: #16251c; box-shadow: inset 0 0 12px rgba(22,43,27,.28); font: 700 .56rem Consolas, monospace; }
.lcd-v2__top, .lcd-v2__current, .lcd-v2__bottom { display: flex; justify-content: space-between; align-items: center; }
.lcd-v2__value { height: 31px; display: flex; align-items: baseline; justify-content: center; gap: 5px; }
.lcd-v2__value strong { font-size: 1.75rem; line-height: 1; letter-spacing: .04em; }.lcd-v2__value small { font-size: .65rem; }
.lcd-v2__bottom { margin-top: 2px; padding-top: 2px; border-top: 1px solid rgba(22,37,28,.28); }
.drive-keypad-v2 { width: 142px; margin: 7px auto 6px; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: 30px 30px; gap: 3px; }
.drive-keypad-v2 button { border: 1px solid #59656d; background: linear-gradient(#39454d,#202a31); color: #d8e0e5; font: 700 .56rem Consolas,monospace; border-radius: 2px; }
.drive-keypad-v2 [data-keypad-key="UP"], .drive-keypad-v2 [data-keypad-key="DOWN"] { touch-action: none; user-select: none; }
.drive-keypad-v2 button:active { transform: translateY(1px); background: #241b15; color: #ffb27c; box-shadow: inset 0 0 0 1px var(--v2-orange); }
.drive-keypad-v2 button:focus-visible { outline: 2px solid #ff9a52; outline-offset: 1px; }
.drive-keypad-v2 button:first-child { grid-column: 2; }.drive-keypad-v2 button:nth-child(2) { grid-column: 1; grid-row: 2; }.drive-keypad-v2 button:nth-child(3) { grid-column: 2; grid-row: 2; border-radius: 50%; }.drive-keypad-v2 button:nth-child(4) { grid-column: 3; grid-row: 2; }.drive-keypad-v2 button:nth-child(5) { grid-column: 2; grid-row: 3; }
.drive-command-row-v2 { display: grid; grid-template-columns: repeat(3,1fr); gap: 5px; margin-top: 7px; }
.drive-command-row-v2 button { height: 33px; border: 1px solid #4d5961; background: #27323a; color: #edf2f5; font-size: .57rem; font-weight: 800; border-radius: 2px; }
.drive-command-row-v2 button span { display: block; font-size: .66rem; }
.drive-command-row-v2 .drive-run-v2 { border-color: #378b61; color: #7ee1a8; }.drive-command-row-v2 .drive-stop-v2 { border-color: #963f47; color: #ff9299; }
.direction-row-v2 { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; margin-top: 5px; }
.direction-row-v2 button { height: 23px; border: 1px solid #4a4d50; background: #1b1d1f; color: #858b90; font-size: .48rem; font-weight: 800; }
.direction-row-v2 button.is-active { border-color: var(--v2-orange); background: rgba(255, 107, 0, .16); color: #ffb27c; }
.drive-model-v2 { display: flex; justify-content: space-between; align-items: end; margin-top: 6px; color: #72838f; font-size: .39rem; }.drive-model-v2 strong { color: #cbd6dc; font-size: .61rem; }

.parameters-panel-v2 { grid-column: 2; grid-row: 1; }
.reference-compare-v2 { display: grid; grid-template-columns: 1fr 18px 1fr; align-items: center; gap: 5px; margin: 8px 10px 5px; padding: 6px 9px; background: #151719; border: 1px solid var(--v2-border); }
.reference-compare-v2 span { display: grid; color: #668296; font-size: .48rem; letter-spacing: .08em; }.reference-compare-v2 strong { margin-top: 1px; color: #60cdf5; font: 700 .78rem Consolas,monospace; }.reference-compare-v2 i { color: #4b7088; font-style: normal; text-align: center; }
.parameter-table-v2 { margin: 0 10px; border-top: 1px solid var(--v2-border-soft); }
.parameter-row-v2 { min-height: 35px; display: grid; grid-template-columns: 43px minmax(120px,1fr) 88px 80px; align-items: center; gap: 7px; border-bottom: 1px solid var(--v2-border-soft); }
.parameter-code-v2 { color: #58bce5; font: 700 .62rem Consolas,monospace; }
.parameter-row-v2 label { color: #cfdae1; font-size: .63rem; line-height: 1.1; }.parameter-row-v2 label small { display: block; margin-top: 2px; color: #607381; font-size: .48rem; }
.parameter-row-v2 > small { color: #5f707d; font: .49rem Consolas,monospace; text-align: right; }
.parameter-input-v2 { height: 27px; display: grid; grid-template-columns: 1fr 25px; border: 1px solid #505356; background: #111315; }
.parameter-input-v2 input { min-width: 0; width: 100%; padding: 3px 6px; border: 0; outline: 0; background: transparent; color: #f2f6f8; font: 700 .68rem Consolas,monospace; text-align: right; }
.parameter-input-v2 i { display: grid; place-items: center; border-left: 1px solid var(--v2-border); color: #8d9499; font: normal .51rem Consolas,monospace; }
.parameter-input-v2 input.is-invalid { box-shadow: inset 0 0 0 1px var(--v2-red); }
.validation-message { margin: 5px 10px; padding: 5px 7px; border-left: 2px solid var(--v2-red); background: #2b1518; color: #ffb1b6; font-size: .56rem; }
.load-control-v2 { margin: 8px 10px 0; }.load-control-v2 label { display: flex; justify-content: space-between; color: #788b99; font-size: .51rem; letter-spacing: .06em; }.load-control-v2 label strong { color: #e0edf4; }
.load-control-v2 input[type="range"] { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 18px; margin: 2px 0; background: transparent; cursor: pointer; }
.load-control-v2 input[type="range"]::-webkit-slider-runnable-track { height: 4px; border: 1px solid #555b5e; border-radius: 999px; background: #303436; }
.load-control-v2 input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 14px; height: 14px; margin-top: -6px; border: 2px solid #ffd0ad; border-radius: 50%; background: var(--v2-orange); box-shadow: 0 0 0 2px rgba(255, 107, 0, .16); }
.load-control-v2 input[type="range"]::-moz-range-track { height: 4px; border: 1px solid #555b5e; border-radius: 999px; background: #303436; }
.load-control-v2 input[type="range"]::-moz-range-progress { height: 4px; border-radius: 999px; background: var(--v2-orange); }
.load-control-v2 input[type="range"]::-moz-range-thumb { width: 14px; height: 14px; border: 2px solid #ffd0ad; border-radius: 50%; background: var(--v2-orange); box-shadow: 0 0 0 2px rgba(255, 107, 0, .16); }
.load-control-v2 input[type="range"]:focus-visible { outline: 1px solid var(--v2-orange); outline-offset: 2px; }
.load-control-v2 > span { display: flex; justify-content: space-between; color: #8b9296; font-size: .48rem; }
.motor-preset-v2 { margin: 5px 10px 0; color: #778b99; font-size: .52rem; }.motor-preset-v2 summary { cursor: pointer; }.motor-preset-v2 dl { display: flex; gap: 10px; margin: 4px 0 0; }.motor-preset-v2 dl div { display: flex; gap: 3px; }.motor-preset-v2 dt { color: #556a79; }.motor-preset-v2 dd { margin: 0; color: #a8bac5; }

.connections-panel-v2 { grid-column: 3; grid-row: 1; }
.classification-v2 { border-color: #4d4930; background: #242113; color: #d5b95f; font-size: .43rem; }
.connection-flow-v2 { display: grid; justify-items: center; gap: 3px; padding: 9px 12px 5px; }
.connection-flow-v2 > i { color: #377ca7; font-style: normal; font-size: .75rem; }
.connection-node-v2 { width: 166px; padding: 5px 8px; border: 1px solid #31485a; background: #0d1b25; text-align: center; }.connection-node-v2 small,.connection-node-v2 span { display: block; color: #668095; font-size: .44rem; }.connection-node-v2 strong { display: block; color: #d4e2ea; font: 700 .6rem Consolas,monospace; }
.connection-node-v2--motor { border-color: #315646; }
.mini-drive-v2 { width: 94px; height: 83px; display: grid; align-content: center; justify-items: center; border: 1px solid #53616a; background: linear-gradient(110deg,#25313a,#111a21); box-shadow: 5px 4px #06090c; }.mini-drive-v2 > span { display: grid; place-items:center; width: 21px; height: 16px; background:#16466a; color:#72cef5; font-size:.47rem;font-weight:800; }.mini-drive-v2 strong { color:#e1e8ec;font-size:.65rem; }.mini-drive-v2 small { color:#788994;font-size:.43rem; }.mini-drive-v2 b { margin-top:5px;padding:2px 5px;background:#0b1115;color:#6fa0bb;font-size:.42rem;letter-spacing:.1em; }
.io-list-v2 { margin: 4px 10px; border-top: 1px solid #1d303d; }.io-list-v2 div { min-height: 28px; display:grid; grid-template-columns: 24px 1fr auto;align-items:center;gap:6px;border-bottom:1px solid #182833; }.io-list-v2 span { color:#5ec1e8;font:700 .55rem Consolas,monospace; }.io-list-v2 strong { color:#b9c7cf;font-size:.53rem; }.io-list-v2 small { color:#647988;font-size:.43rem; }.io-list-v2 .is-muted { opacity:.45; }
.io-power-strip-v2 { display:grid;grid-template-columns:1fr 12px 48px 12px 1fr;align-items:center;gap:4px;margin:7px 9px 5px;padding:5px 7px;border:1px solid #233b4a;background:#0b1720;text-align:center; }.io-power-strip-v2 span{display:grid}.io-power-strip-v2 small{color:#557182;font-size:.39rem}.io-power-strip-v2 strong{color:#b9cbd5;font:700 .48rem Consolas,monospace}.io-power-strip-v2 i{color:#347fa8;font-style:normal}.io-power-strip-v2 b{padding:3px;border:1px solid #436176;background:#172936;color:#71d0f3;font-size:.48rem}
.io-source-grid-v2 { display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:0 9px 5px; }.io-source-grid-v2 label{display:grid;gap:2px;color:#6f8492;font-size:.42rem}.io-source-grid-v2 select{width:100%;height:24px;padding:0 4px;border:1px solid #314a5a;background:#09141c;color:#c6d5de;font:600 .48rem Consolas,monospace}.io-source-grid-v2 select:focus-visible{outline:2px solid #4caada;outline-offset:1px}
.io-section-v2 { margin:0 9px 5px;border:1px solid #223743;background:#0a151d; }.io-section-v2__title{display:flex;justify-content:space-between;align-items:center;padding:4px 6px;border-bottom:1px solid #1d313d}.io-section-v2__title strong{color:#7fcce9;font-size:.45rem;letter-spacing:.08em}.io-section-v2__title small{color:#536a78;font-size:.38rem}
.io-digital-grid-v2{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:4px}.io-digital-grid-v2 button{min-width:0;height:34px;display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:3px;padding:3px;border:1px solid #2b4352;background:#101e28;color:#849aa8;text-align:left}.io-digital-grid-v2 button>i,.io-output-grid-v2>span>i{width:7px;height:7px;border:1px solid #526776;border-radius:50%;background:#17232b;box-shadow:0 0 0 2px rgba(0,0,0,.25)}.io-digital-grid-v2 button span{display:grid;color:#77c9e7;font:700 .45rem Consolas,monospace}.io-digital-grid-v2 button small{color:#647986;font:400 .35rem Arial,sans-serif}.io-digital-grid-v2 button b{color:#718694;font:700 .39rem Consolas,monospace}.io-digital-grid-v2 button[aria-pressed="true"]{border-color:#327b5c;background:#10271f}.io-digital-grid-v2 button[aria-pressed="true"]>i{border-color:#71dfa5;background:#42c681;box-shadow:0 0 7px rgba(66,198,129,.65)}.io-digital-grid-v2 button:disabled{cursor:not-allowed;opacity:.38}
.io-analog-input-v2{display:grid;grid-template-columns:72px 1fr 90px;align-items:center;gap:5px;padding:3px 5px 5px;color:#70c9e9;font:700 .43rem Consolas,monospace}.io-analog-input-v2>span{display:grid}.io-analog-input-v2 small{color:#5e7482;font:400 .35rem Arial,sans-serif}.io-analog-input-v2 input{width:100%;height:4px;accent-color:#2fa6d7}.io-analog-input-v2 strong{text-align:right;color:#c8d8df;font-size:.43rem}.io-analog-input-v2 input:disabled{opacity:.3}
.io-section-v2--outputs{margin-bottom:7px}.io-output-grid-v2{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:4px}.io-output-grid-v2>span{min-width:0;height:31px;display:grid;grid-template-columns:8px 1fr;grid-template-rows:1fr 1fr;align-items:center;column-gap:3px;padding:3px;border:1px solid #20333e;background:#0d1921}.io-output-grid-v2>span>i{grid-row:1 / span 2}.io-output-grid-v2 b{color:#71c9e9;font:700 .42rem Consolas,monospace}.io-output-grid-v2 small{overflow:hidden;color:#607580;font-size:.34rem;text-overflow:ellipsis}.io-output-grid-v2>span.is-active>i{border-color:#70dfa4;background:#44c983;box-shadow:0 0 7px rgba(68,201,131,.6)}.io-output-grid-v2>span.is-fault>i{border-color:#ff8e95;background:#e64c58;box-shadow:0 0 7px rgba(230,76,88,.65)}.io-analog-output-v2{grid-template-columns:1fr!important;grid-template-rows:1fr 1fr!important}.io-analog-output-v2 b,.io-analog-output-v2 small{display:none}.io-analog-output-v2 strong{grid-row:1 / span 2;align-self:center;color:#e0b967;font:700 .53rem Consolas,monospace;text-align:center}
.drive-command-row-v2 button:disabled,.direction-row-v2 button:disabled{cursor:not-allowed;opacity:.38;filter:saturate(.25)}

.monitoring-panel-v2 { grid-column: 1 / span 2; grid-row: 2; }
.monitor-state-v2 { display:flex;gap:6px;align-items:center; }.monitor-state-v2 span,.monitor-state-v2 strong { padding:3px 6px;border:1px solid #314654;background:#0c1720;color:#8da3b2;font:700 .5rem Consolas,monospace; }.monitor-state-v2 strong { color:#5dd69b;border-color:#2d6048; }
.monitor-metrics-v2 { display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--v2-border-soft); }.monitor-metrics-v2 > div { min-width:0;height:57px;padding:7px 9px;border-right:1px solid #1d2c37;display:grid;align-content:start; }.monitor-metrics-v2 > div:last-of-type { border-right:0; }.monitor-metrics-v2 small { color:#617788;font-size:.45rem;letter-spacing:.08em; }.monitor-metrics-v2 strong { color:#d8e3e9;font:700 .73rem Consolas,monospace;white-space:nowrap; }.meter-v2 { display:block;height:3px;margin:3px 0;background:#24323b; }.meter-v2 i { display:block;height:100%;width:0;background:var(--v2-cyan); }.meter-v2--torque i { background:var(--v2-amber); }.hidden-metric-v2 { display:none; }
.monitor-content-v2 { height:250px;display:grid;grid-template-columns:minmax(0,1fr) 222px; }
.trend-area-v2 { min-width:0;padding:6px 9px; }
.subtabs-v2 { display:flex;gap:12px;align-items:center;min-height:22px;border-bottom:1px solid var(--v2-border-soft);color:#737b80;font-size:.49rem; }
.subtabs-v2 > strong { align-self:stretch;display:flex;align-items:center;color:#ff9a52;border-bottom:2px solid var(--v2-orange); }
.trend-header-actions-v2 { display:flex;align-items:center;gap:5px;margin-left:auto; }
.trend-header-actions-v2 button { min-height:19px;margin:0;padding:2px 6px;border:1px solid #4a4d50;background:#17191b;color:#aeb3b7;font:700 .44rem Consolas,monospace; }
.trend-header-actions-v2 button:hover { border-color:var(--v2-orange);color:#fff; }
.trend-header-actions-v2 button.is-frozen { border-color:#ba762d;background:#2a1e12;color:#ffc071; }
.trend-live-state-v2 { padding:2px 5px;border:1px solid #2d6048;background:#14241c;color:#5dd69b;font:700 .43rem Consolas,monospace;letter-spacing:.06em; }
.trend-live-state-v2.is-frozen { border-color:#8a5f2c;background:#2a1e12;color:#ffc071; }
.trend-toolbar-v2 { min-height:29px;display:flex;align-items:center;gap:6px;color:#80878c;font:700 .43rem Consolas,monospace; }
.trend-window-selector-v2 { display:flex;gap:2px; }
.trend-window-selector-v2 button { min-width:29px;padding:2px 4px;border:1px solid #414548;background:#17191b;color:#90979b;font:700 .42rem Consolas,monospace; }
.trend-window-selector-v2 button:hover { color:#fff;border-color:#a95b27; }
.trend-window-selector-v2 button.is-active { border-color:var(--v2-orange);background:rgba(255,107,0,.13);color:#ffad73; }
.trend-toolbar-v2 > small { margin-left:auto;color:#737a7f;font:400 .42rem Inter,"Segoe UI",sans-serif;text-align:right; }
.trend-legend-v2 { min-height:32px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;align-items:center; }
.trend-legend-v2 label { min-width:0;display:grid;grid-template-columns:10px 9px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:3px;color:#969da2;font-size:.43rem;cursor:pointer;white-space:nowrap; }
.trend-legend-v2 input { grid-row:1 / span 2;width:10px;height:10px;margin:0;accent-color:var(--v2-orange); }
.trend-legend-v2 i { width:8px;height:2px;background:#fff; }
.trend-legend-v2 label > strong { grid-column:2 / span 2;overflow:hidden;color:#e3e7e9;font:700 .49rem Consolas,monospace;text-overflow:ellipsis; }
.trend-legend-v2 label:has(input:not(:checked)) { opacity:.42; }
.signal-ref{background:#ffb547!important}.signal-output{background:#2fc1d8!important}.signal-rpm{background:#78df9f!important}.signal-current{background:#dc70ee!important}.signal-torque{background:#ff8a52!important}
.trend-canvas-wrap-v2 { position:relative;height:135px;overflow:hidden;border:1px solid var(--v2-border-soft);background:#111315; }
.trend-canvas-wrap-v2 canvas { width:100%;height:100%;display:block;touch-action:none;cursor:crosshair; }
.trend-tooltip-v2 { position:absolute;z-index:4;width:174px;max-width:calc(100% - 12px);padding:6px 7px;border:1px solid #696e72;background:rgba(18,20,22,.96);box-shadow:0 8px 22px rgba(0,0,0,.42);color:#dfe4e7;font:500 .44rem Consolas,monospace;pointer-events:none; }
.trend-tooltip-v2[hidden] { display:none; }
.trend-tooltip-v2 > strong { display:block;margin-bottom:4px;color:#fff;font-size:.49rem; }
.trend-tooltip-v2 dl { display:grid;gap:1px;margin:0; }
.trend-tooltip-v2 dl div { display:flex;justify-content:space-between;gap:8px; }
.trend-tooltip-v2 dt { color:#8f979c;font-weight:400; }.trend-tooltip-v2 dd { margin:0;color:#e7eaec;font-weight:700; }
.trend-tooltip-event-v2 { display:grid;gap:2px;margin-top:4px;padding-top:4px;border-top:1px solid #4a4d50; }
.trend-tooltip-event-v2[hidden] { display:none; }.trend-tooltip-event-v2 strong { color:#ff9a52; }.trend-tooltip-event-v2 span { overflow:hidden;color:#b7bdc1;text-overflow:ellipsis;white-space:nowrap; }
.trend-footer-v2 { min-height:13px;display:flex;justify-content:space-between;gap:8px;color:#737b80;font-size:.43rem; }.trend-footer-v2 b { color:#aeb5b9; }
.motor-area-v2 { border-left:1px solid #1d303d;padding:5px 8px;overflow:hidden; }.motor-state-line-v2 { display:flex;justify-content:space-between;color:#718795;font-size:.49rem; }.motor-state-line-v2 span { color:#63cf96;font-family:Consolas,monospace; }.motor-area-v2 .motor-svg { display:block;width:100%;height:129px;margin:-3px 0; }.motor-readouts-v2 { display:flex;justify-content:space-between;color:#718594;font-size:.45rem; }.motor-readouts-v2 strong { color:#cfe0e8;font:700 .57rem Consolas,monospace; }

.events-panel-v2 { grid-column:3;grid-row:2; }
.event-count-v2 { min-width:22px;text-align:center;border-color:#345166;background:#102331;color:#74c8ed; }
.fault-card-v2 { margin:7px 9px 0;padding:7px;border:1px solid #7b343b;background:#2a1417;display:grid;gap:2px; }.fault-card-v2[hidden]{display:none}.fault-card-v2>span{color:#ff7f87;font-size:.47rem;font-weight:800}.fault-card-v2 strong{color:#ffd9dc;font-size:.58rem}.fault-card-v2 small{color:#b77d82;font-size:.43rem}.fault-card-v2 button{justify-self:start;margin-top:4px;border:1px solid #a84750;background:#411b20;color:#ffc0c5;font-size:.48rem}
.event-list-v2 { height:103px;margin:7px 8px;padding:0;list-style:none;overflow:auto; }.event-list-v2 li { display:grid;grid-template-columns:50px 1fr;gap:6px;padding:4px 2px;border-bottom:1px solid #192934;color:#aab9c2;font-size:.49rem; }.event-list-v2 time { color:#526b7b;font-family:Consolas,monospace; }.event-list-v2 li.is-command span{color:#74c8ed}.event-list-v2 li.is-fault span{color:#ff848c}
.event-actions-v2 { display:flex;gap:5px;margin:0 8px 6px; }.event-actions-v2 button { flex:1;padding:4px;border:1px solid #314653;background:#101c25;color:#8196a4;font-size:.46rem; }.event-actions-v2 button:first-child{border-color:#6e4b28;color:#d9ad71}
.process-note-v2 { margin:0 8px;padding:6px 8px;border-left:2px solid #286f9a;background:#0c1922; }.process-note-v2 small{display:block;color:#55778d;font-size:.43rem}.process-note-v2 strong{display:block;color:#bcd4e1;font-size:.55rem}.process-note-v2 p{margin:2px 0 0;color:#6f8492;font-size:.47rem;line-height:1.25}
.dev-panel-v2{margin-top:8px;padding:8px;border:1px solid #314554;background:#0e1922;color:#b5c6cf;font-size:.6rem}.dev-panel-v2 dl{display:flex;gap:12px;flex-wrap:wrap;margin:5px 0}.dev-panel-v2 dl div{display:flex;gap:3px}.dev-panel-v2 dd{margin:0;color:#73c9eb}
.lab-legal-v2 { display:flex;gap:12px;align-items:center;padding:8px 2px 0;color:#52626d;font-size:.48rem; }.lab-legal-v2 span{white-space:nowrap;color:#657a88;font-weight:700}.lab-legal-v2 p{margin:0}

/* IngeControl charcoal palette: orange for interaction, cyan for live data. */
.lab-message-v2 { background: #1b2427; }
.education-panel-v2__header button:hover,
.icon-action:hover { border-color: var(--v2-orange); color: #fff; }
.exercise-actions-v2 button:first-child:hover { background: var(--v2-orange); }
.parameter-row-v2.is-locked { background: rgba(255, 255, 255, .025); }

.connection-node-v2,
.io-power-strip-v2,
.io-section-v2,
.validation-result-v2 { background: var(--v2-surface); border-color: var(--v2-border); }
.mini-drive-v2 { background: linear-gradient(110deg, #303235, #17191b); }
.mini-drive-v2 > span { background: #6b2f09; color: #ffb27c; }
.io-power-strip-v2 b { background: #182326; }
.io-source-grid-v2 select { border-color: #505356; background: #111315; color: #d8dbde; }
.io-source-grid-v2 select:focus-visible { outline-color: #ff9a52; }
.io-section-v2__title { border-bottom-color: var(--v2-border-soft); }
.io-section-v2__title strong { color: #ff8a38; }
.io-digital-grid-v2 button,
.io-output-grid-v2 > span { border-color: #3e4144; background: #1c1e20; }
.io-digital-grid-v2 button > i,
.io-output-grid-v2 > span > i { border-color: #61686d; background: #232629; }
.io-digital-grid-v2 button[aria-pressed="true"] { border-color: #327b5c; background: #1a2821; }
.io-analog-input-v2 input { accent-color: var(--v2-cyan); }

.monitor-state-v2 span,
.monitor-state-v2 strong { border-color: #4a4d50; background: var(--v2-surface); }
.monitor-metrics-v2 > div { border-right-color: var(--v2-border-soft); }
.meter-v2 { background: #3a3d40; }
.subtabs-v2 { border-bottom-color: var(--v2-border-soft); }
.subtabs-v2 strong { color: #ff9a52; border-bottom-color: var(--v2-orange); }
.motor-area-v2 { border-left-color: var(--v2-border-soft); }
.event-count-v2 { border-color: #9a4b16; background: #2a1b12; color: #ff9a52; }
.event-list-v2 li { border-bottom-color: var(--v2-border-soft); }
.event-actions-v2 button { border-color: #4a4d50; background: var(--v2-surface); color: #a9afb3; }
.event-actions-v2 button:first-child { border-color: #a95b27; color: #f0a46f; }
.process-note-v2 { border-left-color: var(--v2-orange); background: var(--v2-surface); }
.dev-panel-v2 { border-color: var(--v2-border); background: var(--v2-surface); }

/*
 * Keep the training panel in the document flow so practice and diagnostic
 * controls never cover the simulator. On wide screens it becomes a docked
 * fourth column; on narrower screens it sits above the dashboard.
 */
@media (min-width: 1650px) {
  .lab-shell-v2.education-active .lab-main-v2 {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 390px;
    column-gap: 9px;
    align-content: start;
  }
  .lab-shell-v2.education-active .lab-topbar-v2 { grid-column: 1 / -1; grid-row: 1; }
  .lab-shell-v2.education-active .education-panel-v2 {
    position: sticky;
    top: 75px;
    z-index: 20;
    grid-column: 2;
    grid-row: 2;
    align-self: start;
    width: auto;
    max-height: calc(100vh - 87px);
    overflow-y: auto;
    box-shadow: -8px 12px 28px rgba(0, 0, 0, .32);
  }
  .lab-shell-v2.education-active .lab-dashboard-v2 { grid-column: 1; grid-row: 2; }
  .lab-shell-v2.education-active .dev-panel-v2,
  .lab-shell-v2.education-active .lab-legal-v2 { grid-column: 1 / -1; }
}

@media (max-width: 1199.98px) {
  .lab-shell-v2 { grid-template-columns: 1fr; }
  .lab-sidebar-v2 { position:fixed;top:0;left:0;height:100vh;width:230px;transform:translateX(-105%);transition:transform .2s ease;box-shadow:12px 0 35px rgba(0,0,0,.45); }
  .lab-shell-v2.sidebar-open .lab-sidebar-v2 { transform:translateX(0); }
  .lab-shell-v2.sidebar-open .sidebar-overlay-v2 { display:block;position:fixed;inset:0;z-index:35;border:0;background:rgba(2,7,11,.68); }
  .sidebar-toggle-v2 { display:block; }
  .lab-dashboard-v2 { grid-template-columns:300px minmax(340px,1fr);grid-template-rows:minmax(396px,max-content) auto auto; }
  .drive-console-panel{grid-column:1;grid-row:1}.parameters-panel-v2{grid-column:2;grid-row:1}.monitoring-panel-v2{grid-column:1 / span 2;grid-row:2}.events-panel-v2{grid-column:1;grid-row:3}.connections-panel-v2{grid-column:2;grid-row:3}
}
@media (max-width: 850px) {
  .lab-main-v2{padding:0 9px 10px}.lab-topbar-v2{margin:0 -9px;padding:8px 11px;grid-template-columns:minmax(0,1fr) auto}.lab-modes-v2{grid-column:1 / span 2;order:3}.general-state-v2{justify-self:end}.lab-dashboard-v2{grid-template-columns:1fr;grid-template-rows:auto}
  .drive-console-panel,.parameters-panel-v2,.connections-panel-v2,.monitoring-panel-v2,.events-panel-v2{grid-column:1;grid-row:auto}
  .drive-console-panel{order:1}.parameters-panel-v2{order:2}.monitoring-panel-v2{order:3}.events-panel-v2{order:4}.connections-panel-v2{order:5}
  .monitor-content-v2{height:auto;grid-template-columns:1fr}.trend-legend-v2{grid-template-columns:repeat(3,minmax(0,1fr))}.trend-canvas-wrap-v2{height:170px}.motor-area-v2{border-left:0;border-top:1px solid var(--v2-border-soft)}.motor-area-v2 .motor-svg{height:150px}
}
@media (max-width: 575.98px) {
  .lab-shell-v2{min-height:100vh}.lab-main-v2{padding:0 6px 8px}.lab-topbar-v2{position:sticky;top:0;z-index:25;margin:0 -6px;padding:7px 8px;gap:7px}.topbar-title-v2 h1{font-size:.79rem}.topbar-title-v2 span{font-size:.43rem}.general-state-v2{min-width:auto}.general-state-v2 small{display:none}.lab-modes-v2{overflow-x:auto}.lab-modes-v2 button{flex:0 0 auto;padding:4px 7px}.lab-dashboard-v2{gap:7px;padding-top:7px}
  .virtual-drive-v2{margin:8px auto 18px}.parameter-row-v2{grid-template-columns:38px minmax(100px,1fr) 85px}.parameter-row-v2>small{display:none}.motor-preset-v2{display:none}
  .monitor-metrics-v2{grid-template-columns:repeat(2,1fr)}.monitor-metrics-v2>div{height:54px}.monitor-metrics-v2>div:last-of-type{grid-column:1 / span 2}.trend-toolbar-v2{flex-wrap:wrap;padding:3px 0}.trend-toolbar-v2>small{flex-basis:100%;margin-left:0;text-align:left}.trend-legend-v2{grid-template-columns:repeat(2,minmax(0,1fr));padding:3px 0}.trend-canvas-wrap-v2{height:180px}
  .events-panel-v2,.connections-panel-v2{min-height:280px}.event-list-v2{height:125px}.lab-legal-v2{display:block}.lab-legal-v2 span{display:block;margin-bottom:3px}
  .education-panel-v2 { max-height: none; }
}
