.scene-dashboard { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin-bottom: 14px; }
.metric-card { min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.metric-card span { display: block; color: var(--muted); font-size: 12px; }
.metric-card strong { display: block; margin-top: 6px; font-size: 22px; line-height: 1.1; }
.scene-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.map-control-with-tooltip { display: inline-flex; }
.scene-tabs-row {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
}
.scene-tabs { display: flex; gap: 8px; flex-wrap: wrap; }
.scene-tabs button {
  min-height: 32px;
  border-color: rgba(255, 255, 255, 0.11);
  background: rgba(255, 255, 255, 0.045);
  color: var(--muted);
  font-weight: 650;
}
.scene-tabs button:hover:not(:disabled) {
  border-color: rgba(34, 211, 238, 0.46);
  background: rgba(34, 211, 238, 0.08);
  color: var(--text);
}
.scene-tabs button.active {
  color: #061219;
  background: #dffbff;
  border-color: transparent;
}
.scene-detail-head {
  display: grid;
  gap: 12px;
  margin-bottom: 18px;
}
.scene-detail-head-main {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(520px, 720px);
  align-items: start;
  gap: 18px;
}
.scene-detail-title { display: grid; gap: 4px; }
.scene-title-line, .scene-subtitle-line {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
}
.scene-title-line h1 { min-width: 0; overflow-wrap: anywhere; }
.scene-subtitle-line { color: var(--muted); font-size: 14px; line-height: 1.45; }
.scene-subtitle-line span { min-width: 0; overflow-wrap: anywhere; }
.scene-meta-edit-button {
  width: 28px;
  min-height: 28px;
  flex: 0 0 auto;
  padding: 0;
  border-color: transparent;
  background: transparent;
  color: rgba(229, 240, 246, 0.62);
}
.scene-meta-edit-button svg { width: 15px; height: 15px; }
.scene-meta-edit-button:hover:not(:disabled) {
  border-color: transparent;
  background: rgba(255, 255, 255, 0.065);
  color: var(--text);
}
.scene-duty-card {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(180px, .85fr) minmax(0, 1.7fr);
  grid-template-areas: "robot main" "actions actions";
  align-items: center;
  gap: 8px 12px;
  padding: 9px 11px;
  border: 1px solid rgba(148, 163, 184, 0.4);
  border-radius: 8px;
  background: rgba(148, 163, 184, 0.06);
}
.scene-duty-card-robot { grid-area: robot; min-width: 0; display: grid; gap: 4px; }
.scene-duty-robot-line { min-width: 0; display: flex; align-items: center; gap: 6px; }
.scene-duty-card-robot select { width: 100%; min-width: 0; min-height: 30px; padding: 3px 7px; font-size: 11px; }
.scene-duty-robot-line select { flex: 1 1 auto; }
.scene-duty-robot-meta { min-width: 0; display: flex; align-items: center; flex-wrap: wrap; gap: 5px 7px; color: var(--muted); font-size: 10px; }
.scene-duty-status-tag { flex: 0 0 auto; min-height: 20px; padding: 2px 7px; display: inline-flex; align-items: center; border: 1px solid rgba(148, 163, 184, 0.34); border-radius: 999px; color: var(--muted); background: rgba(148, 163, 184, 0.1); font-size: 10px; font-weight: 700; line-height: 1; white-space: nowrap; }
.scene-duty-status-tag.ready { border-color: rgba(16, 185, 129, 0.46); color: #8ff0c5; background: rgba(16, 185, 129, 0.12); }
.scene-duty-status-tag.running { border-color: rgba(34, 211, 238, 0.46); color: #a9f3ff; background: rgba(34, 211, 238, 0.12); }
.scene-duty-status-tag.starting, .scene-duty-status-tag.warning { border-color: rgba(245, 158, 11, 0.5); color: #ffd78a; background: rgba(245, 158, 11, 0.12); }
.scene-duty-status-tag.danger { border-color: rgba(249, 115, 91, 0.5); color: #ffc0b5; background: rgba(249, 115, 91, 0.12); }
.scene-duty-status-tag.idle { border-color: rgba(148, 163, 184, 0.34); color: var(--muted); background: rgba(148, 163, 184, 0.1); }
.scene-duty-robot-meta > .scene-duty-battery-note { white-space: nowrap; }
.scene-duty-battery {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  min-height: 16px;
  color: var(--muted);
  vertical-align: middle;
}
.scene-duty-battery-shell {
  position: relative;
  width: 42px;
  height: 16px;
  overflow: hidden;
  border: 1px solid currentColor;
  border-radius: 4px;
  background: rgba(148, 163, 184, 0.16);
}
.scene-duty-battery-level {
  position: absolute;
  inset: 2px auto 2px 2px;
  min-width: 0;
  border-radius: 2px;
  background: var(--green);
  transition: width 180ms ease, background-color 180ms ease;
}
.scene-duty-battery-text {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #f8fafc;
  font-size: 9px;
  font-weight: 700;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(2, 6, 23, 0.72);
}
.scene-duty-battery-cap {
  width: 3px;
  height: 7px;
  margin-left: 2px;
  border-radius: 0 2px 2px 0;
  background: currentColor;
}
.scene-duty-battery-note { margin-left: 3px; color: var(--muted); }
.scene-duty-quality-indicators { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; }
.scene-duty-quality-button {
  width: 23px;
  height: 23px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 3px;
  border: 1px solid rgba(148, 163, 184, 0.42);
  border-radius: 6px;
  color: var(--muted);
  background: rgba(148, 163, 184, 0.08);
  cursor: pointer;
}
.scene-duty-quality-button svg { width: 14px; height: 14px; stroke: currentColor; }
.scene-duty-quality-button.ready { border-color: rgba(16, 185, 129, 0.52); color: #8ff0c5; background: rgba(16, 185, 129, 0.13); }
.scene-duty-quality-button.refreshable { border-color: rgba(34, 211, 238, 0.58); color: #9defff; background: rgba(34, 211, 238, 0.13); }
.scene-duty-quality-button.warning { border-color: rgba(245, 158, 11, 0.58); color: #ffd78a; background: rgba(245, 158, 11, 0.14); }
.scene-duty-quality-button.unknown { border-color: rgba(148, 163, 184, 0.42); color: #a8b7c0; background: rgba(148, 163, 184, 0.08); }
.scene-duty-quality-button:hover { border-color: rgba(34, 211, 238, 0.7); color: #e8fbff; background: rgba(34, 211, 238, 0.14); }
.scene-duty-quality-button:focus-visible { outline: 2px solid rgba(34, 211, 238, 0.58); outline-offset: 2px; }
.scene-duty-battery.low { color: var(--amber); }
.scene-duty-battery.low .scene-duty-battery-level { background: var(--amber); }
.scene-duty-battery.critical { color: var(--bad); }
.scene-duty-battery.critical .scene-duty-battery-level { background: var(--bad); }
.scene-duty-battery.unknown { color: var(--muted); }
.scene-duty-battery.unknown .scene-duty-battery-level { background: transparent; }
.scene-duty-card.ready { border-color: rgba(16, 185, 129, 0.48); background: rgba(16, 185, 129, 0.07); }
.scene-duty-card.running { border-color: rgba(34, 211, 238, 0.46); background: rgba(34, 211, 238, 0.07); }
.scene-duty-card.starting, .scene-duty-card.warning { border-color: rgba(245, 158, 11, 0.5); background: rgba(245, 158, 11, 0.07); }
.scene-duty-card.danger { border-color: rgba(249, 115, 91, 0.52); background: rgba(249, 115, 91, 0.07); }
.scene-duty-card-main { grid-area: main; min-width: 0; display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(110px, .8fr); gap: 12px; }
.scene-duty-card-main > div { min-width: 0; display: grid; gap: 2px; }
.scene-duty-card-main span { color: var(--muted); font-size: 10px; }
.scene-duty-card-main strong { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.scene-duty-card-title strong { color: var(--text); font-size: 14px; }
.scene-duty-current-node { min-width: 0; display: flex; align-items: center; gap: 7px; }
.scene-duty-current-node strong { flex: 1 1 auto; }
.scene-duty-run-control {
  flex: 0 0 auto;
  width: 28px;
  min-height: 28px;
  padding: 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-color: rgba(34, 211, 238, 0.38);
  color: #bdeffc;
  background: rgba(34, 211, 238, 0.08);
}
.scene-duty-run-control.primary { color: #dffbff; background: rgba(34, 211, 238, 0.17); }
.scene-duty-run-control.loading { cursor: wait; }
.scene-duty-run-control-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: sceneDutyRunControlSpin .7s linear infinite;
}
@keyframes sceneDutyRunControlSpin { to { transform: rotate(360deg); } }
.scene-duty-run-control svg { width: 14px; height: 14px; fill: currentColor; stroke: none; }
.scene-duty-run-control:hover:not(:disabled) { border-color: rgba(34, 211, 238, 0.72); color: #fff; background: rgba(34, 211, 238, 0.18); }
.scene-duty-card-side { grid-area: actions; min-width: 0; display: flex; align-items: center; justify-content: flex-end; padding-top: 7px; border-top: 1px solid rgba(148, 163, 184, 0.18); }
.scene-duty-robot-name { min-width: 0; max-width: 100%; color: var(--text); font-size: 12px; font-weight: 650; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scene-duty-card-actions { min-width: 0; width: 100%; display: flex; align-items: center; justify-content: flex-end; gap: 6px; }
.scene-duty-card-primary-actions { min-width: 0; display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 6px; }
.scene-duty-card-primary-actions > button, .scene-duty-card-primary-actions > .scene-duty-standby-menu { flex: 0 0 auto; white-space: nowrap; }
.scene-duty-more-menu { position: relative; flex: 0 0 auto; }
.scene-duty-more-trigger {
  width: 32px;
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 7px;
  border: 1px solid var(--line);
  border-radius: 7px;
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
  font-size: 14px;
  line-height: 1;
  list-style: none;
  cursor: pointer;
  user-select: none;
}
.scene-duty-more-trigger::-webkit-details-marker { display: none; }
.scene-duty-more-trigger:hover,
.scene-duty-more-menu[open] > .scene-duty-more-trigger { border-color: rgba(34, 211, 238, 0.48); background: rgba(255, 255, 255, 0.09); }
.scene-duty-more-trigger:focus-visible { outline: 2px solid rgba(34, 211, 238, 0.48); outline-offset: 2px; }
.scene-duty-more-popover {
  position: absolute;
  z-index: 24;
  right: 0;
  top: calc(100% + 7px);
  width: max-content;
  min-width: 148px;
  max-width: min(240px, calc(100vw - 32px));
  padding: 4px;
  display: grid;
  gap: 2px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  background: #0f1c26;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.42);
}
.scene-duty-quality-backdrop { z-index: 45; }
.scene-duty-quality-dialog { width: min(680px, 100%); }
.scene-duty-quality-body { display: grid; gap: 14px; padding: 0 14px 14px; }
.scene-duty-quality-summary { display: grid; gap: 4px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,0.035); }
.scene-duty-quality-summary strong { font-size: 15px; }
.scene-duty-quality-summary span { color: var(--muted); font-size: 12px; line-height: 1.45; }
.scene-duty-quality-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 12px; margin: 0; }
.scene-duty-quality-details > div { min-width: 0; display: grid; gap: 3px; padding-bottom: 7px; border-bottom: 1px solid rgba(148, 163, 184, 0.16); }
.scene-duty-quality-details dt { color: var(--muted); font-size: 10px; }
.scene-duty-quality-details dd { min-width: 0; margin: 0; overflow-wrap: anywhere; font-size: 12px; }
.scene-duty-quality-checks { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.scene-duty-quality-check { min-width: 0; display: grid; gap: 3px; padding: 8px 7px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255,255,255,0.03); }
.scene-duty-quality-check span { min-height: 25px; color: var(--muted); font-size: 10px; line-height: 1.25; }
.scene-duty-quality-check strong { font-size: 12px; }
.scene-duty-quality-check small { color: var(--muted); font-size: 10px; }
.scene-duty-quality-check.ready { border-color: rgba(16, 185, 129, 0.4); }
.scene-duty-quality-check.ready small { color: #9ce5b8; }
.scene-duty-quality-check.warning { border-color: rgba(245, 158, 11, 0.45); }
.scene-duty-quality-check.warning small { color: #ffd594; }
.scene-duty-quality-check.unknown { opacity: 0.76; }
.scene-duty-quality-secondary { display: flex; justify-content: space-between; gap: 8px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); font-size: 11px; }
.scene-duty-more-item {
  width: 100%;
  min-height: 34px;
  padding: 7px 9px;
  justify-content: flex-start;
  border-color: transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--text);
  text-align: left;
  box-shadow: none;
}
.scene-duty-more-item:hover:not(:disabled) { border-color: transparent; background: rgba(255, 255, 255, 0.08); box-shadow: none; }
.scene-duty-more-item.recovery { color: #ffd6ce; }
.scene-duty-more-separator { height: 1px; margin: 3px 5px; background: rgba(255, 255, 255, 0.12); }
.scene-duty-more-note { max-width: 210px; margin: 3px 7px 5px; color: var(--muted); font-size: 11px; line-height: 1.45; }
.scene-duty-standby-menu { position: relative; }
.scene-duty-standby-menu > summary {
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 10px;
  border: 1px solid var(--line);
  border-radius: 7px;
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
  font-size: 12px;
  line-height: 1;
  list-style: none;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}
.scene-duty-standby-menu > summary::-webkit-details-marker { display: none; }
.scene-duty-standby-menu > summary:hover,
.scene-duty-standby-menu[open] > summary { border-color: rgba(34, 211, 238, 0.48); background: rgba(255, 255, 255, 0.09); }
.scene-duty-standby-menu > summary:focus-visible { outline: 2px solid rgba(34, 211, 238, 0.48); outline-offset: 2px; }
.scene-duty-standby-chevron { width: 14px; height: 14px; display: inline-flex; align-items: center; justify-content: center; color: var(--muted); transition: transform 160ms ease; }
.scene-duty-standby-chevron svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.scene-duty-standby-menu[open] .scene-duty-standby-chevron { transform: rotate(180deg); }
.scene-duty-standby-popover {
  position: absolute;
  z-index: 24;
  right: 0;
  top: calc(100% + 7px);
  width: max-content;
  min-width: 0;
  max-width: min(240px, calc(100vw - 32px));
  max-height: min(70vh, 560px);
  padding: 4px;
  display: grid;
  gap: 2px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  background: #0f1c26;
  box-shadow: 0 18px 42px rgba(0, 0, 0, 0.42);
  overflow-y: auto;
}
.scene-duty-standby-option {
  width: 100%;
  min-width: 0;
  max-width: 100%;
  min-height: 36px;
  padding: 8px 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  border-color: transparent;
  border-radius: 5px;
  background: transparent;
  text-align: left;
  box-shadow: none;
}
.scene-duty-standby-option:hover:not(:disabled) { border-color: transparent; background: rgba(255, 255, 255, 0.08); box-shadow: none; }
.scene-duty-standby-option strong { min-width: 0; max-width: 100%; overflow: hidden; color: var(--text); font-size: 12px; font-weight: 650; line-height: 1.3; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.scene-duty-standby-option:disabled { background: rgba(255, 255, 255, 0.025); }
.standby-schedule-layout { display: grid; grid-template-columns: minmax(260px, .85fr) minmax(320px, 1.15fr); gap: 18px; }
.standby-weekdays { margin: 0; padding: 10px; display: flex; flex-wrap: wrap; gap: 8px; border: 1px solid var(--line); border-radius: 6px; }
.standby-weekdays legend { padding: 0 5px; color: var(--muted); font-size: 11px; }
.standby-weekdays label { display: flex; align-items: center; gap: 4px; }
.standby-schedule-list { display: grid; align-content: start; gap: 8px; }
.standby-schedule-row { padding: 10px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--line); }
.standby-schedule-row > div:first-child { min-width: 0; display: grid; gap: 3px; }
.standby-schedule-row span, .standby-schedule-row small { color: var(--muted); }
.standby-schedule-row > div:last-child { display: flex; gap: 6px; }
.standby-option-list { display: grid; gap: 10px; }
.standby-option-editor { padding: 10px; display: grid; gap: 9px; border: 1px solid var(--line); border-radius: 6px; }
.standby-source-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; }
.scene-duty-empty { grid-area: main; display: grid; gap: 3px; }
.scene-duty-empty span { color: var(--muted); font-size: 12px; }

.scene-runtime-log-window {
  position: fixed;
  z-index: 75;
  right: 22px;
  bottom: 22px;
  width: min(620px, calc(100vw - 32px));
  height: min(500px, calc(100vh - 110px));
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid rgba(34, 211, 238, 0.42);
  border-radius: 12px;
  background: #0b151e;
  box-shadow: 0 22px 60px rgba(0, 0, 0, 0.48);
}
.scene-runtime-log-window > header {
  min-height: 48px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 11px 8px 14px;
  border-bottom: 1px solid var(--line);
  background: rgba(34, 211, 238, 0.07);
  cursor: move;
  touch-action: none;
  user-select: none;
}
.scene-runtime-log-window > header > div { min-width: 0; display: flex; align-items: baseline; gap: 9px; }
.scene-runtime-log-window > header span { min-width: 0; color: var(--muted); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scene-runtime-log-resize-handle {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 2;
  width: 24px;
  height: 24px;
  cursor: nwse-resize;
  touch-action: none;
}
.scene-runtime-log-resize-handle::before,
.scene-runtime-log-resize-handle::after {
  content: "";
  position: absolute;
  right: 4px;
  bottom: 4px;
  border-right: 2px solid rgba(189, 239, 252, 0.72);
  border-bottom: 2px solid rgba(189, 239, 252, 0.72);
}
.scene-runtime-log-resize-handle::before { width: 10px; height: 10px; }
.scene-runtime-log-resize-handle::after { right: 9px; bottom: 9px; width: 4px; height: 4px; }
.scene-runtime-log-window.resizing { user-select: none; }
.scene-runtime-log-toolbar { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 12px; border-bottom: 1px solid var(--line); }
.scene-runtime-log-toolbar > span { color: var(--muted); font-size: 11px; }
.scene-runtime-log-toolbar > div { display: flex; gap: 6px; }
.scene-runtime-log-toolbar button.active { color: #061219; background: #dffbff; }
.scene-runtime-log-list { min-height: 0; overflow: auto; padding: 8px 12px 14px; }
.scene-runtime-log-row { display: grid; grid-template-columns: 76px 56px minmax(0, 1fr); gap: 8px; align-items: start; padding: 9px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.075); }
.scene-runtime-log-row time { color: var(--muted); font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace; }
.scene-runtime-log-status { width: fit-content; padding: 2px 6px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 10px; }
.scene-runtime-log-row.running .scene-runtime-log-status { color: #bdeffc; border-color: rgba(34, 211, 238, 0.42); }
.scene-runtime-log-row.success .scene-runtime-log-status { color: #b9f6cf; border-color: rgba(16, 185, 129, 0.46); }
.scene-runtime-log-row.danger .scene-runtime-log-status { color: #ffc3b7; border-color: rgba(249, 115, 91, 0.5); }
.scene-runtime-log-row.warning .scene-runtime-log-status { color: #ffd27a; border-color: rgba(245, 158, 11, 0.62); background: rgba(245, 158, 11, 0.12); }
.scene-runtime-log-row > div { min-width: 0; }
.scene-runtime-log-row strong { display: block; font-size: 12px; }
.scene-runtime-log-row p { margin: 3px 0 0; color: var(--muted); font-size: 11px; line-height: 1.45; overflow-wrap: anywhere; }
.scene-runtime-log-empty { padding: 36px 12px; color: var(--muted); text-align: center; font-size: 12px; }
.scene-card-meta { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
.scene-card-footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 12px; }
.scene-card-footer .scene-actions { justify-content: flex-end; }
.content-project-list { display: grid; gap: 10px; }
.content-project-card {
  position: relative;
  min-height: 106px;
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto auto 28px;
  grid-template-areas: "icon main stats update arrow";
  align-items: center;
  gap: 18px;
  padding: 15px 17px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.045);
  cursor: pointer;
  transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease;
}
.content-project-card::before { content: ""; position: absolute; top: 12px; bottom: 12px; left: 0; width: 3px; border-radius: 0 3px 3px 0; background: #38bdf8; opacity: 0.78; }
.content-project-card:hover, .content-project-card:focus-visible { border-color: rgba(56, 189, 248, 0.52); background: rgba(255, 255, 255, 0.075); box-shadow: 0 14px 34px rgba(0, 0, 0, 0.16); transform: translateX(2px); outline: none; }
.content-project-card-icon { grid-area: icon; width: 46px; height: 46px; display: grid; place-items: center; border: 1px solid rgba(56, 189, 248, 0.38); border-radius: 8px; color: #7dd3fc; background: rgba(56, 189, 248, 0.1); }
.content-project-card-icon svg { width: 24px; height: 24px; }
.content-project-card-main { grid-area: main; min-width: 0; }
.content-project-card-kind { display: block; margin-bottom: 3px; color: #7dd3fc; font-size: 10px; font-weight: 700; }
.content-project-card-main h2 { overflow: hidden; color: var(--text); font-size: 16px; text-overflow: ellipsis; white-space: nowrap; }
.content-project-card-main p { margin: 5px 0 0; overflow: hidden; color: var(--muted); font-size: 12px; line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.content-project-card-stats { grid-area: stats; display: flex; align-items: stretch; }
.content-project-card-stats > div { min-width: 76px; display: grid; gap: 2px; padding: 2px 14px; border-left: 1px solid rgba(255, 255, 255, 0.1); }
.content-project-card-stats strong { color: var(--text); font-size: 16px; font-variant-numeric: tabular-nums; }
.content-project-card-stats span { color: var(--muted); font-size: 10px; }
.content-project-card-update { grid-area: update; min-width: 132px; display: grid; justify-items: end; gap: 6px; color: var(--muted); font-size: 10px; }
.content-project-card-status { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); white-space: nowrap; }
.content-project-card-status::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #94a3b8; }
.content-project-card-status.ready { color: #86efac; }
.content-project-card-status.ready::before { background: #22c55e; }
.content-project-card-status.pending { color: #fcd34d; }
.content-project-card-status.pending::before { background: #f59e0b; }
.content-project-card-update time { white-space: nowrap; }
.content-project-card-arrow { grid-area: arrow; width: 28px; height: 28px; display: grid; place-items: center; color: rgba(229, 240, 246, 0.52); transition: color 180ms ease, transform 180ms ease; }
.content-project-card-arrow svg { width: 18px; height: 18px; }
.content-project-card:hover .content-project-card-arrow { color: #7dd3fc; transform: translateX(2px); }
.content-project-create-card { min-height: 74px; display: flex; align-items: center; justify-content: flex-start; gap: 13px; padding: 13px 17px; border: 1px dashed rgba(56, 189, 248, 0.42); border-radius: 8px; color: var(--muted); background: rgba(56, 189, 248, 0.025); text-align: left; }
.content-project-create-card:hover { border-color: rgba(56, 189, 248, 0.78); color: var(--text); background: rgba(56, 189, 248, 0.07); }
.content-project-create-icon { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid rgba(56, 189, 248, 0.35); border-radius: 8px; color: #7dd3fc; }
.content-project-create-icon svg { width: 20px; height: 20px; }
.content-project-create-card > span:last-child { min-width: 0; display: grid; gap: 4px; }
.content-project-create-card strong { color: var(--text); font-size: 13px; }
.content-project-create-card small { color: var(--muted); font-size: 11px; line-height: 1.4; }
.scene-builder-tabs { display: inline-flex; gap: 4px; padding: 4px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255, 255, 255, 0.035); }
.scene-builder-tabs button { min-height: 30px; border-color: transparent; background: transparent; font-size: 12px; }
.scene-builder-tabs button.active { color: #061219; background: #dffbff; border-color: transparent; font-weight: 700; }
.scene-builder-toolbar-actions {
  min-width: 0;
  margin-left: auto;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.scene-builder-toolbar-actions .run-strip {
  justify-content: flex-end;
  flex-wrap: wrap;
}
.scene-builder-toolbar-actions .run-error {
  max-width: 260px;
  overflow: hidden;
  color: #ffd1c8;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.scene-builder-toolbar-actions .run-error-link {
  min-height: 0;
  padding: 2px 4px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  font: inherit;
  text-align: left;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 3px;
  cursor: pointer;
}
.scene-builder-toolbar-actions .run-error-link:hover,
.scene-builder-toolbar-actions .run-error-link:focus-visible {
  color: #fff1ed;
  background: rgba(248, 113, 113, 0.12);
}
.scene-version-status {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 12px;
  padding: 12px;
  border: 1px solid rgba(34, 211, 238, 0.24);
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(8, 47, 56, 0.28), rgba(13, 24, 33, 0.72));
}
.scene-version-status > div { min-width: 0; display: grid; gap: 3px; }
.scene-version-status span { color: var(--muted); font-size: 11px; }
.scene-version-status strong { color: #ecfeff; font-size: 16px; }
.scene-version-status small { overflow: hidden; color: #9fb5bf; text-overflow: ellipsis; white-space: nowrap; }
.scene-version-status.warning { border-color: rgba(245, 158, 11, 0.52); background: linear-gradient(135deg, rgba(120, 53, 15, 0.24), rgba(13, 24, 33, 0.75)); }
.scene-version-status > p { grid-column: 1 / -1; margin: 0; color: #fcd34d; font-size: 12px; }
.scene-draft-changes-link { min-height: 0; margin-left: 8px; padding: 0; border: 0; color: #fde68a; background: transparent; font-size: 12px; font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.scene-draft-changes-link:hover:not(:disabled), .scene-draft-changes-link:focus-visible { border: 0; color: #fff7d6; background: transparent; }
.scene-draft-changes-dialog .panel-head { align-items: flex-start; }
.scene-draft-changes-dialog .panel-head h2 { margin: 0; }
.scene-draft-changes-dialog .panel-head p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.scene-draft-changes-body { padding: 0 18px 16px; }
.scene-draft-changes-summary { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--line); background: #0d1821; }
.scene-draft-changes-summary > strong { color: var(--text); font-size: 14px; }
.scene-draft-changes-summary > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.scene-draft-changes-summary span, .scene-draft-change-kind { padding: 2px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 10px; font-weight: 800; }
.scene-draft-changes-summary .added, .scene-draft-change-row.added .scene-draft-change-kind { border-color: rgba(16, 185, 129, 0.42); color: #a7f3d0; }
.scene-draft-changes-summary .removed, .scene-draft-change-row.removed .scene-draft-change-kind { border-color: rgba(248, 113, 113, 0.42); color: #fecaca; }
.scene-draft-changes-summary .changed, .scene-draft-change-row.changed .scene-draft-change-kind { border-color: rgba(245, 158, 11, 0.42); color: #fde68a; }
.scene-draft-changes-summary .reordered, .scene-draft-change-row.reordered .scene-draft-change-kind { border-color: rgba(34, 211, 238, 0.42); color: #a5f3fc; }
.scene-draft-change-list { display: grid; }
.scene-draft-change-row { display: grid; grid-template-columns: 28px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-width: 0; padding: 12px 0; border-bottom: 1px solid rgba(148, 163, 184, 0.18); }
.scene-draft-change-symbol { width: 26px; height: 26px; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; color: #cbd5e1; font-size: 16px; font-weight: 800; }
.scene-draft-change-row.added .scene-draft-change-symbol { border-color: rgba(16, 185, 129, 0.52); color: #6ee7b7; }
.scene-draft-change-row.removed .scene-draft-change-symbol { border-color: rgba(248, 113, 113, 0.52); color: #fca5a5; }
.scene-draft-change-row.changed .scene-draft-change-symbol { border-color: rgba(245, 158, 11, 0.52); color: #fcd34d; }
.scene-draft-change-row.reordered .scene-draft-change-symbol { border-color: rgba(34, 211, 238, 0.52); color: #67e8f9; }
.scene-draft-change-row > div { min-width: 0; display: grid; gap: 3px; }
.scene-draft-change-row small { color: var(--muted); font-size: 10px; }
.scene-draft-change-row strong { overflow-wrap: anywhere; color: var(--text); font-size: 13px; }
.scene-draft-change-row p { margin: 0; overflow-wrap: anywhere; color: #aebfc8; font-size: 11px; line-height: 1.45; }
.scene-draft-change-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }
.scene-draft-change-undo { min-height: 28px; padding: 4px 10px; border-color: rgba(148, 163, 184, 0.38); color: #dbe7ec; background: rgba(15, 29, 39, 0.82); }
.scene-draft-change-undo:hover:not(:disabled), .scene-draft-change-undo:focus-visible { border-color: rgba(34, 211, 238, 0.62); color: #ecfeff; background: rgba(22, 78, 99, 0.36); }
.scene-draft-changes-note { margin: 14px 0 0; padding: 10px 12px; border-left: 3px solid rgba(245, 158, 11, 0.65); color: #d8c89d; background: rgba(120, 53, 15, 0.16); font-size: 11px; line-height: 1.55; }
.scene-draft-changes-dialog > .dialog-actions { padding-top: 12px; border-top: 1px solid var(--line); }
.duty-workflow-overview { margin: 12px 0; border: 1px solid #29434d; border-radius: 12px; background: #09171d; overflow: hidden; }
.duty-workflow-overview > summary, .duty-subflow-overview > summary { cursor: pointer; display: flex; gap: 12px; align-items: baseline; padding: 12px 14px; background: #0d2028; }
.duty-workflow-overview summary span { color: var(--muted); font-size: 12px; }
.duty-workflow-flow { padding: 12px 14px; border-top: 1px solid #203740; }
.duty-workflow-flow header { display: flex; justify-content: space-between; margin-bottom: 10px; }
.duty-workflow-flow header span { color: var(--muted); font-size: 12px; }
.duty-workflow-nodes { display: flex; align-items: stretch; gap: 8px; overflow-x: auto; padding-bottom: 4px; }
.duty-workflow-node { min-width: 150px; padding: 10px; border: 1px solid #31515d; border-radius: 9px; background: #10262f; display: flex; flex-direction: column; gap: 4px; }
.duty-workflow-node.loop { border-color: #4f7cc8; background: #102743; }
.duty-workflow-node small, .duty-workflow-node span { color: var(--muted); font-size: 11px; }
.duty-workflow-arrow { align-self: center; color: #7699a7; font-size: 18px; }
.duty-subflow-overview { margin: 0 14px 12px; border: 1px dashed #3b6370; border-radius: 10px; overflow: hidden; }
.duty-subflow-overview .duty-workflow-nodes { padding: 12px; }
.scene-capability-warning {
  grid-column: 1 / -1;
  justify-self: start;
  min-height: 30px;
  padding: 5px 9px;
  border-color: rgba(248, 113, 113, 0.48);
  color: #fecaca;
  background: rgba(127, 29, 29, 0.22);
  font-size: 12px;
}
.scene-capability-warning:hover:not(:disabled) { background: rgba(127, 29, 29, 0.38); }
@media (max-width: 820px) { .scene-version-status { grid-template-columns: 1fr; } }
@media (max-width: 680px) {
  .scene-draft-changes-body { padding-inline: 14px; }
  .scene-draft-changes-summary { align-items: flex-start; flex-direction: column; }
  .scene-draft-changes-summary > div { justify-content: flex-start; }
  .scene-draft-change-row { grid-template-columns: 28px minmax(0, 1fr); }
  .scene-draft-change-actions { grid-column: 2; justify-content: flex-start; }
}
.scene-parameters-dialog-body {
  display: grid;
  align-content: start;
  gap: 14px;
}
.scene-parameter-tabs { justify-self: start; }
.scene-parameter-pane {
  display: grid;
  gap: 14px;
  min-width: 0;
}
.scene-parameter-pane-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.scene-parameter-pane-head h3 { margin: 0; font-size: 15px; }
.scene-resource-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 12px; }
.scene-editor-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); gap: 14px; align-items: start; margin-top: 14px; }
.scene-trigger-layout { display: grid; gap: 14px; }
.scene-trigger-row {
  display: grid;
  grid-template-columns: minmax(160px, 180px) minmax(0, 1fr);
  gap: 16px;
  align-items: center;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.scene-trigger-row:last-of-type { padding-bottom: 0; border-bottom: 0; }
.scene-trigger-fields { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr); gap: 12px; align-items: end; }
.checkline {
  width: fit-content;
  max-width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.035);
  color: var(--muted);
  font-size: 13px;
  font-weight: 650;
  line-height: 1.2;
  cursor: pointer;
}
.checkline input, .weekday-check input { position: absolute; opacity: 0; pointer-events: none; }
.checkline::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: rgba(229, 240, 246, 0.42);
  box-shadow: 0 0 0 4px rgba(229, 240, 246, 0.06);
}
.checkline:has(input:checked) {
  border-color: rgba(34, 211, 238, 0.55);
  background: rgba(34, 211, 238, 0.105);
  color: var(--text);
}
.checkline:has(input:checked)::before {
  background: var(--cyan);
  box-shadow: 0 0 0 4px rgba(34, 211, 238, 0.14);
}
.weekday-strip { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.weekday-check {
  min-width: 42px;
  min-height: 30px;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  padding: 0 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  cursor: pointer;
}
.weekday-check:has(input:checked) {
  border-color: rgba(16, 185, 129, 0.58);
  background: rgba(16, 185, 129, 0.12);
  color: var(--text);
}
.scene-mini-list { display: grid; gap: 8px; }
.scene-mini-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,0.035); }
.scene-mini-row strong { font-size: 13px; overflow-wrap: anywhere; }
.scene-mini-row span { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.step-list { display: grid; align-content: start; align-self: start; gap: 8px; min-width: 0; }
.step-list-toolbar { min-height: 42px; display: flex; align-items: center; gap: 10px; padding: 7px 9px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,0.025); }
.step-select-all { display: inline-flex; align-items: center; gap: 6px; color: var(--text); font-size: 12px; cursor: pointer; }
.step-select-all input, .step-select { width: 16px; height: 16px; margin: 0; accent-color: var(--cyan); }
.step-selection-count { color: var(--muted); font-size: 12px; }
.step-batch-delete { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; }
.step-batch-delete svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.step-boundary-row { display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; align-items: center; gap: 12px; min-width: 0; padding: 7px 10px; border: 0; background: transparent; cursor: pointer; }
.step-boundary-row:hover .step-boundary-marker { border-color: #8fa1aa; background: #16232b; }
.step-boundary-marker { width: 50px; height: 50px; display: grid; place-items: center; padding: 4px; border: 1px solid #60717c; border-radius: 50%; background: #111b22; color: var(--text); font-size: 11px; font-weight: 800; text-align: center; }
.step-boundary-row.start .step-boundary-marker { border-color: rgba(16, 185, 129, 0.72); }
.step-boundary-row.end .step-boundary-marker { border-color: rgba(245, 158, 11, 0.72); }
.step-boundary-row.active .step-boundary-marker { box-shadow: 0 0 0 3px rgba(165, 182, 191, 0.22); border-color: #a5b6bf; }
.step-boundary-copy, .step-boundary-meta { min-width: 0; display: grid; gap: 3px; }
.step-boundary-copy strong { overflow: hidden; color: var(--text); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.step-boundary-copy small, .step-boundary-meta small { color: var(--muted); font-size: 10px; }
.step-boundary-meta { justify-items: end; text-align: right; }
.step-boundary-meta strong { color: var(--muted); font-size: 12px; }
.step-row { position: relative; display: grid; grid-template-columns: 30px 20px 34px minmax(0, 1fr) auto; gap: 9px; align-items: center; min-width: 0; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255,255,255,0.035); cursor: pointer; }
.step-row.node-disabled { opacity: 0.48; filter: grayscale(1); }
.step-row.active { border-color: rgba(34, 211, 238, 0.72); background: rgba(34, 211, 238, 0.09); }
.step-row.multi-selected { border-color: rgba(16, 185, 129, 0.72); background: rgba(16, 185, 129, 0.09); }
.step-row.drop-before::before, .step-row.drop-after::after { content: ""; position: absolute; left: 8px; right: 8px; height: 2px; border-radius: 2px; background: #22d3ee; box-shadow: 0 0 8px rgba(34, 211, 238, 0.7); }
.step-row.drop-before::before { top: -5px; }
.step-row.drop-after::after { bottom: -5px; }
.step-row.step-dragging { opacity: 0.42; }
.step-drag-handle { width: 30px; height: 30px; min-height: 30px; display: inline-grid; place-items: center; padding: 0; border-color: transparent; background: transparent; color: var(--muted); cursor: grab; touch-action: none; }
.step-drag-handle:hover:not(:disabled), .step-drag-handle:focus-visible { border-color: var(--line); background: rgba(255,255,255,0.06); color: var(--text); }
.step-drag-handle:active { cursor: grabbing; }
.step-drag-handle svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; }
.step-row-main { min-width: 0; }
.step-row-main strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.step-row .step-index { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 6px; background: rgba(255,255,255,0.07); color: var(--muted); font-size: 12px; }
.step-row p { margin: 4px 0 0; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.validation-list { display: grid; gap: 7px; }
.validation-item { padding: 8px 10px; border: 1px solid var(--line); border-radius: 7px; color: var(--muted); background: rgba(255,255,255,0.035); font-size: 12px; }
.validation-item.error { color: #ffd1c8; border-color: rgba(249, 115, 91, 0.5); background: rgba(249, 115, 91, 0.08); }
.validation-item.success { color: #b9f6cf; border-color: rgba(16, 185, 129, 0.5); background: rgba(16, 185, 129, 0.08); }
.validation-item.warning { color: #ffe4b5; border-color: rgba(245, 158, 11, 0.45); background: rgba(245, 158, 11, 0.08); }
.node.audio, .node.tts { border-color: rgba(59, 130, 246, 0.5); }
.node.confirm, .node.qa, .node.dialog_mode { border-color: rgba(245, 158, 11, 0.42); }
.node.condition, .node.loop, .node.parallel { border-color: rgba(168, 85, 247, 0.48); }
.content-console { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 14px; align-items: start; }
.content-menu { position: sticky; top: 90px; display: grid; gap: 6px; padding: 10px; }
.content-menu button {
  min-height: 38px;
  justify-content: flex-start;
  padding: 0 10px;
  border-color: transparent;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  font-weight: 650;
}
.content-menu button.active {
  color: #061219;
  background: #dffbff;
  border-color: transparent;
}
.content-main { min-width: 0; display: grid; gap: 14px; }
.content-layout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; align-items: start; }
.content-page-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; }
.content-points-list { display: grid; align-content: start; gap: 10px; }
.content-point-empty, .content-audio-empty { padding: 24px 12px; }
.content-audio-layout { display: grid; grid-template-columns: 240px minmax(0, 1fr); min-height: 360px; }
.content-chapter-list { display: grid; align-content: start; gap: 8px; padding: 14px; border-right: 1px solid var(--line); }
.content-chapter-list-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 2px; }
.content-audio-detail { min-width: 0; align-self: start; padding: 14px; }
.content-chapter-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 1px; }
.content-chapter-actions { display: flex; align-items: center; gap: 0; }
.content-chapter-actions button {
  width: 22px;
  min-height: 26px;
  padding: 0;
  border-color: transparent;
  background: transparent;
  color: var(--muted);
  font-size: 13px;
  line-height: 1;
}
.content-chapter-actions button:hover:not(:disabled) { border-color: transparent; background: rgba(255, 255, 255, 0.055); color: var(--text); }
.content-chapter-actions button.danger { color: rgba(249, 115, 91, 0.92); background: transparent; border-color: transparent; }
.content-chapter-button {
  min-height: 34px;
  display: grid;
  align-content: center;
  justify-items: start;
  padding: 7px 9px;
  text-align: left;
}
.content-chapter-button.active { border-color: rgba(34, 211, 238, 0.64); background: rgba(34, 211, 238, 0.12); }
.content-chapter-button strong { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; font-weight: 650; }
.content-kb-lib-button { width: 100%; justify-items: start; text-align: left; }
.content-kb-lib-button strong { justify-self: start; }
.content-audio-list { display: grid; align-content: start; gap: 12px; }
.content-audio-card { padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: rgba(0,0,0,0.12); }
.content-audio-card p { margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
.content-audio-table .audio-drag { width: 42px; color: var(--muted); text-align: center; }
.content-point-table .point-drag { width: 42px; color: var(--muted); text-align: center; }
.content-audio-drag-handle { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 6px; cursor: grab; font-size: 18px; line-height: 1; user-select: none; }
.content-audio-drag-handle:hover { color: var(--text); background: rgba(255, 255, 255, 0.065); }
.content-audio-drag-handle:active { cursor: grabbing; }
.content-audio-row.dragging { opacity: 0.52; }
.content-audio-row.insert-before td { border-top: 2px solid rgba(34, 211, 238, 0.95); }
.content-audio-row.insert-after td { border-bottom: 2px solid rgba(34, 211, 238, 0.95); }
.content-audio-table .audio-title { min-width: 120px; }
.content-audio-table .audio-duration { width: 90px; white-space: nowrap; }
.content-audio-table .audio-player-cell { min-width: 220px; }
.content-audio-player { display: grid; grid-template-columns: auto minmax(90px, 1fr) 42px; align-items: center; gap: 8px; min-width: 210px; }
.content-audio-play { min-width: 44px; min-height: 28px; padding: 0 8px; font-size: 12px; white-space: nowrap; }
.content-audio-progress { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(255, 255, 255, 0.1); }
.content-audio-progress span { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--cyan), var(--green)); }
.content-audio-clock { color: var(--muted); font-size: 12px; text-align: right; white-space: nowrap; }
.content-audio-upload-field { display: grid; gap: 8px; }
.content-audio-upload-label { color: var(--muted); font-size: 12px; }
.content-audio-file-input { display: none; }
.content-audio-dropzone {
  min-height: 82px;
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
  padding: 14px;
  border: 1px dashed rgba(229, 240, 246, 0.22);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.035);
  cursor: pointer;
  transition: border-color .16s ease, background .16s ease, transform .16s ease;
}
.content-audio-dropzone:hover,
.content-audio-dropzone:focus-visible,
.content-audio-dropzone.drag-over {
  border-color: rgba(34, 211, 238, 0.66);
  background: rgba(34, 211, 238, 0.07);
  outline: none;
}
.content-audio-dropzone.drag-over { transform: translateY(-1px); }
.content-audio-dropzone.has-file { border-style: solid; border-color: rgba(16, 185, 129, 0.38); background: rgba(16, 185, 129, 0.055); }
.content-audio-drop-icon {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 8px;
  color: #061219;
  background: #dffbff;
  font-size: 13px;
  font-weight: 800;
}
.content-audio-drop-main { min-width: 0; display: grid; gap: 4px; }
.content-audio-drop-main strong { overflow: hidden; color: var(--text); font-size: 13px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
.content-audio-drop-main span,
.content-audio-form-note { color: var(--muted); font-size: 11px; line-height: 1.35; }
.content-audio-upload-preview {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.035);
}
.content-audio-upload-preview.hidden { display: none; }
.content-audio-upload-preview audio { width: 100%; min-width: 0; height: 32px; }
.content-audio-existing-file { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px; border: 1px solid var(--line); border-radius: 7px; background: rgba(255, 255, 255, 0.045); color: var(--muted); font-size: 11px; }
.inline-check { display: inline-flex; grid-auto-flow: column; align-items: center; gap: 6px; white-space: nowrap; }
.content-audio-table .audio-text { max-width: 360px; }
.content-point-table .point-title { min-width: 130px; }
.content-point-table .point-outline { max-width: 420px; }
.content-point-table .point-exhibits { max-width: 260px; }
.content-point-table .point-actions { width: 132px; white-space: nowrap; }
.content-audio-text-clamp {
  max-width: 360px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.content-audio-table .audio-actions { min-width: 150px; }
.content-audio-table button { min-height: 28px; padding: 0 8px; font-size: 12px; }
.content-point-table button { min-height: 28px; padding: 0 8px; font-size: 12px; }
.content-exhibit-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.content-exhibit-search { display: flex; align-items: center; gap: 8px; min-width: min(100%, 360px); }
.content-exhibit-search input { min-width: 220px; min-height: 30px; padding: 0 10px; font-size: 12px; }
.content-exhibit-search button { min-width: 48px; min-height: 30px; padding: 0 10px; font-size: 12px; white-space: nowrap; }
.content-exhibit-table .exhibit-cover { width: 72px; }
.content-exhibit-table .exhibit-cover img { width: 52px; height: 52px; display: block; border-radius: 7px; object-fit: cover; background: rgba(255,255,255,0.06); }
.content-exhibit-table .exhibit-title { min-width: 150px; }
.content-exhibit-table .exhibit-desc { max-width: 420px; }
.content-exhibit-table tbody tr { cursor: pointer; }
.content-exhibit-detail-media { margin-bottom: 12px; display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; }
.content-exhibit-detail-media img { width: 100%; max-height: 220px; object-fit: contain; border: 1px solid var(--line); border-radius: 8px; background: rgba(0,0,0,0.18); }
.content-project-siteid { color: var(--muted); font-size: 12px; }
.content-exhibit-ref-field { display: grid; gap: 8px; }
.content-exhibit-tags { min-height: 34px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 7px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255, 255, 255, 0.035); }
.content-exhibit-tag { min-height: 24px; display: inline-flex; align-items: center; gap: 5px; max-width: 100%; padding: 0 8px; border: 1px solid rgba(34, 211, 238, 0.46); border-radius: 5px; background: rgba(34, 211, 238, 0.035); color: var(--text); font-size: 12px; white-space: nowrap; }
.content-exhibit-tag span { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.content-exhibit-tag button { min-height: 18px; width: 18px; padding: 0; border-color: transparent; background: transparent; color: var(--muted); line-height: 1; }
.content-exhibit-tag button:hover { color: var(--text); background: rgba(255, 255, 255, 0.08); }
.content-exhibit-tag-add { min-height: 24px; padding: 0 8px; border: 1px dashed rgba(229, 240, 246, 0.34); border-radius: 5px; background: rgba(255, 255, 255, 0.035); color: var(--text); font-size: 12px; white-space: nowrap; }
.content-exhibit-tag-add:hover:not(:disabled) { border-color: rgba(34, 211, 238, 0.82); background: rgba(34, 211, 238, 0.08); color: var(--text); }
.content-exhibit-empty { color: var(--muted); font-size: 11px; line-height: 1.2; }
.content-exhibit-select-button { min-width: 48px; white-space: nowrap; }
.content-exhibit-selected-text { display: inline-flex; min-width: 48px; min-height: 28px; align-items: center; justify-content: center; color: var(--muted); font-size: 12px; white-space: nowrap; }
.content-exhibit-selector-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); height: min(640px, calc(100vh - 116px)); min-height: 360px; border-top: 1px solid var(--line); overflow: hidden; }
.content-exhibit-selector-list { min-height: 0; padding: 12px; border-right: 1px solid var(--line); display: grid; align-content: start; gap: 8px; overflow: auto; }
.content-exhibit-selector-main { min-width: 0; min-height: 0; padding: 12px; display: grid; align-content: start; gap: 10px; overflow: auto; }
.content-tree { display: grid; gap: 12px; }
.content-version, .content-chapter, .content-point {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.035);
}
.content-chapter { margin-left: 10px; }
.content-point { margin-left: 10px; border-color: rgba(34, 211, 238, 0.24); }
.content-row { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.content-row p { margin: 5px 0 0; }
.content-segments { display: grid; gap: 8px; }
.content-segment { padding: 10px; border: 1px solid var(--line); border-radius: 7px; background: rgba(0, 0, 0, 0.12); }
.content-segment p { margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.content-side { display: grid; gap: 14px; }
.content-kb-list { display: grid; gap: 10px; }
.content-mini-card { padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--panel-soft); }
.content-mini-card p { margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; }
.content-mini-card h3,
.content-point h3,
.content-chapter h3 { overflow-wrap: anywhere; }
.scene-type-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 8px; }
.scene-type-button {
  min-height: 58px;
  display: grid;
  align-content: center;
  justify-items: start;
  gap: 4px;
  padding: 10px;
  text-align: left;
}
.scene-type-button strong { font-size: 13px; }
.scene-type-button span { color: var(--muted); font-size: 11px; line-height: 1.25; }
.scene-type-button.active {
  border-color: rgba(34, 211, 238, 0.62);
  background: rgba(34, 211, 238, 0.12);
}
.scene-builder-fields { display: grid; grid-template-columns: minmax(180px, 260px) minmax(220px, 1fr); gap: 10px; }
.robot-lidar-layout { display: grid; grid-template-columns: minmax(260px, 360px) 1fr; gap: 18px; align-items: center; }.robot-lidar-layout canvas { display: block; width: min(100%, 360px); aspect-ratio: 1; border-radius: 12px; background: #08131b; }.robot-lidar-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; }.robot-lidar-facts div { padding: 10px 12px; border: 1px solid var(--border-subtle, #d9e3e8); border-radius: 10px; }.robot-lidar-facts dt { color: var(--text-muted, #6b7c86); font-size: 12px; }.robot-lidar-facts dd { margin: 4px 0 0; font-weight: 600; }.robot-teleop-pad { display: grid; grid-template-columns: repeat(3, minmax(72px, 110px)); gap: 8px; justify-content: center; }.robot-teleop-pad button { min-height: 42px; border: 1px solid var(--border-subtle, #d9e3e8); border-radius: 9px; background: var(--surface, #fff); font-weight: 600; touch-action: none; }.robot-teleop-pad button:first-child, .robot-teleop-pad button:last-child { grid-column: 2; }.robot-teleop-pad button:active { background: #d8f5ff; border-color: #20bfe8; }.map-lidar-panel { margin: 12px 0; }.map-lidar-layout { display: grid; grid-template-columns: minmax(220px, 280px) 1fr; gap: 18px; align-items: center; }.map-lidar-layout canvas { display: block; width: min(100%, 280px); aspect-ratio: 1; border-radius: 12px; background: #08131b; } @media (max-width: 700px) { .robot-lidar-layout, .map-lidar-layout { grid-template-columns: 1fr; } .robot-lidar-layout canvas, .map-lidar-layout canvas { margin: 0 auto; } }
.robot-teleop-panel .teleop-speed { display:flex; flex-wrap:wrap; justify-content:center; gap:6px; margin:10px 0; }
.robot-teleop-panel .teleop-speed button { min-width:48px; min-height:28px; border:1px solid var(--border-subtle, #d9e3e8); border-radius:7px; background:var(--surface, #fff); }
.robot-teleop-panel .teleop-speed button.active { color:#075985; border-color:#20bfe8; background:#d8f5ff; }
