* { box-sizing: border-box; }

:root {
  --panel-table-max-height: min(62vh, 680px);
  --planning-scheme-rail-height: auto;
  --optimization-scheme-rail-height: 100%;
  --time-table-height: clamp(220px, 38vh, 520px);
  --summary-panel-height: min(72vh, 960px);
  --summary-table-height: min(72vh, 960px);
  --summary-histogram-grid-height: min(72vh, 960px);
  --summary-histogram-svg-height: min(32vh, 360px);
  --optimization-log-height: 24vh;
  --comparison-table-height: clamp(240px, 36vh, 480px);
}

body {
  margin: 0;
  height: 100vh;
  overflow: hidden;
  color: #172033;
  background:
    radial-gradient(circle at 14% 12%, rgba(49, 121, 112, 0.18), transparent 28%),
    linear-gradient(135deg, #eef5f4, #dfece8 45%, #f6f1e7);
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
}

button,
input,
select,
textarea { font: inherit; }

.i18n-fit-text {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

button {
  -webkit-appearance: none;
  appearance: none;
  border: 0;
  cursor: pointer;
}

button:disabled {
  cursor: not-allowed;
  opacity: 0.55;
}

.planning-shell {
  height: 100vh;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  overflow: hidden;
}

.topbar {
  display: flex;
  align-items: center;
  gap: 22px;
  padding: 0 26px;
  min-height: 72px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.78);
  border-bottom: 1px solid rgba(46, 70, 80, 0.16);
  backdrop-filter: blur(14px);
}

.brand {
  color: #102b2a;
  text-decoration: none;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.main-nav {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  flex-wrap: wrap;
}

.main-nav a,
.main-nav button,
.primary,
.scheme-actions button,
.pager button,
.add-row {
  padding: 10px 14px;
  border-radius: 12px;
  background: #edf4f2;
  color: #24413d;
  text-decoration: none;
  font-weight: 700;
}

.main-nav .active,
.primary {
  background: #0d5c59;
  color: #fff;
  box-shadow: 0 12px 28px rgba(13, 92, 89, 0.24);
}

.danger {
  background: #fdecea !important;
  color: #92352d !important;
  box-shadow: none !important;
}

.secondary {
  background: linear-gradient(180deg, #dff1ee, #cfe7e2) !important;
  color: #185652 !important;
  border: 1px solid rgba(13, 92, 89, 0.22) !important;
  box-shadow: 0 10px 24px rgba(13, 92, 89, 0.14) !important;
}

.workspace {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  grid-template-rows: minmax(150px, var(--planning-scheme-rail-height, auto)) 8px minmax(0, 1fr);
  column-gap: 18px;
  row-gap: 5px;
  padding: 18px;
  min-height: 0;
  overflow: hidden;
}

.workspace > .scheme-rail {
  grid-column: 1;
  grid-row: 1;
  overflow: hidden;
}

.workspace > .summary-rail {
  grid-column: 1;
  grid-row: 3;
}

.workspace > .editor-panel {
  grid-column: 2;
  grid-row: 1 / 4;
}

.scheme-rail,
.summary-rail,
.editor-panel,
.optimization-panel,
.comparison-panel,
.comparison-tab-bar,
.comparison-table-card,
.comparison-curve-board,
.chart-card,
.table-card,
.device-card,
.optimization-command-card,
.optimization-result-card,
.optimization-log-card,
.summary-section {
  background: rgba(255, 255, 255, 0.84);
  border: 1px solid rgba(34, 64, 72, 0.13);
  border-radius: 24px;
  box-shadow: 0 20px 50px rgba(32, 54, 68, 0.11);
}

.scheme-rail,
.summary-rail {
  min-height: 0;
  padding: 18px;
  overflow: auto;
}

.rail-title {
  font-size: 18px;
  font-weight: 900;
  margin-bottom: 14px;
}

.scheme-list,
.validation-list,
.summary-box {
  display: grid;
  gap: 10px;
}

.scheme-list-items {
  position: relative;
  display: grid;
  grid-auto-rows: max-content;
  align-content: start;
  gap: 4px;
  margin: 0;
  padding: 2px 0 2px 12px;
  list-style: none;
}

.scheme-list-items::before {
  content: "";
  position: absolute;
  top: 7px;
  bottom: 7px;
  left: 13px;
  width: 1px;
  background: rgba(13, 92, 89, 0.26);
}

.planning-scheme-rail-layout {
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
  gap: 10px;
}

.planning-scheme-rail-layout .scheme-list-title {
  margin: 0;
}

.planning-scheme-rail-layout .scheme-list {
  min-height: 0;
  overflow: auto;
}

.scheme-rail.scheme-list-capped .planning-scheme-rail-layout {
  height: 100%;
  grid-template-rows: auto auto minmax(0, 1fr) auto;
}

.scheme-rail.scheme-list-capped .scheme-list {
  overflow: auto;
}

.scheme-list-resize-handle {
  position: relative;
  min-height: 8px;
  cursor: row-resize;
  border-radius: 999px;
  z-index: 2;
}

.workspace > .scheme-list-resize-handle {
  grid-column: 1;
  grid-row: 2;
  align-self: stretch;
}

.scheme-list-resize-handle::before {
  content: "";
  position: absolute;
  left: 10px;
  right: 10px;
  top: 2px;
  height: 4px;
  border-radius: 999px;
  background: rgba(13, 92, 89, 0.46);
  transition: background 0.16s ease, box-shadow 0.16s ease;
}

.scheme-list-resize-handle:hover::before,
.scheme-list-resize-handle.dragging::before,
.scheme-list-resize-handle:focus-visible::before {
  background: #0d5c59;
  box-shadow: 0 0 0 3px rgba(13, 92, 89, 0.12);
}

.scheme-list-resize-handle:focus-visible {
  outline: none;
}

.scheme-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-left: auto;
  flex-wrap: nowrap;
  overflow-x: auto;
  white-space: nowrap;
}

.scheme-actions button {
  flex: 0 0 auto;
}

.scheme-actions-rail {
  width: 100%;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-left: 0;
  overflow: visible;
}

.scheme-actions-rail-bottom {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.scheme-actions-rail button {
  width: 100%;
  min-width: 0;
  padding: 9px 10px;
}

.scheme-list-title {
  margin: 0 0 14px;
  color: #102b2a;
  font-size: 18px;
  font-weight: 900;
}

.scheme-item {
  position: relative;
  width: 100%;
  text-align: left;
  min-height: 34px;
  padding: 7px 10px 7px 30px;
  border: 0;
  border-bottom: 1px solid rgba(34, 64, 72, 0.1);
  border-radius: 0;
  background: transparent;
  color: #24413d;
  line-height: 1.25;
  cursor: pointer;
  user-select: none;
  transition: border-color 0.16s ease, background 0.16s ease, color 0.16s ease, box-shadow 0.16s ease;
}

.scheme-item::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 2px;
  width: 18px;
  height: 1px;
  background: rgba(13, 92, 89, 0.34);
}

.scheme-item::after {
  content: "";
  position: absolute;
  top: calc(50% - 4px);
  left: 18px;
  width: 7px;
  height: 7px;
  border: 1px solid rgba(13, 92, 89, 0.5);
  border-radius: 50%;
  background: rgba(248, 251, 250, 0.92);
  box-shadow: 0 0 0 2px rgba(248, 251, 250, 0.84);
}

.scheme-item-content {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.scheme-item-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.scheme-access-label {
  flex: 0 0 auto;
  padding: 2px 5px;
  border-radius: 4px;
  background: rgba(113, 81, 159, 0.12);
  color: #6c4b97;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.2;
}

.scheme-item.active {
  background: transparent;
  color: #0f3431;
  font-weight: 900;
}

.scheme-item.active::before,
.scheme-item:hover::before,
.scheme-item:focus-visible::before {
  background: #0d5c59;
}

.scheme-item.active::after {
  border-color: #0d5c59;
  background: #0d5c59;
  box-shadow: 0 0 0 3px rgba(13, 92, 89, 0.14);
}

.scheme-item:hover,
.scheme-item:focus-visible {
  outline: none;
  background: rgba(13, 92, 89, 0.05);
  color: #102b2a;
}

.scheme-item:hover::after,
.scheme-item:focus-visible::after {
  border-color: #0d5c59;
}

.editor-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto 1fr;
  overflow: hidden;
}

.optimization-workspace {
  grid-template-columns: 260px minmax(0, 1fr);
  grid-template-rows: minmax(150px, var(--optimization-scheme-rail-height, 1fr)) 8px minmax(0, 1fr);
}

.optimization-workspace > .scheme-rail {
  grid-column: 1;
  grid-row: 1;
}

.optimization-workspace > .optimization-panel {
  grid-column: 2;
  grid-row: 1 / 4;
}

.optimization-workspace:not(.evaluation-workspace) > .scheme-rail {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.optimization-workspace:not(.evaluation-workspace) > .scheme-rail .scheme-list {
  min-height: 0;
  overflow: auto;
}

.evaluation-workspace {
  grid-template-columns: minmax(0, var(--evaluation-result-rail-width, 340px)) 10px minmax(0, 1fr);
  grid-template-rows: minmax(150px, var(--evaluation-scheme-rail-height, 30vh)) 8px minmax(260px, 1fr);
}

.evaluation-result-rail {
  grid-column: 1;
  grid-row: 3;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: 14px;
  padding: 18px;
  overflow: hidden;
}

.evaluation-workspace:not(.frequency-workspace) .evaluation-result-rail {
  grid-template-rows: minmax(0, 1fr) auto;
}

.frequency-workspace .evaluation-result-rail {
  grid-template-rows: minmax(0, 1fr) auto;
}

.evaluation-workspace > .scheme-rail {
  grid-column: 1;
  grid-row: 1;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.evaluation-workspace > .scheme-rail .scheme-list {
  min-height: 0;
  overflow: auto;
}

.evaluation-scheme-tree {
  padding-left: 0;
}

.scheme-tree-node {
  position: relative;
  list-style: none;
}

.scheme-tree-parent {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  align-items: center;
  gap: 4px;
}

.scheme-tree-caret {
  position: relative;
  z-index: 1;
  width: 18px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 5px;
  color: #0d5c59;
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
  cursor: pointer;
}

.scheme-tree-caret:hover,
.scheme-tree-parent:focus-visible .scheme-tree-caret {
  background: rgba(13, 92, 89, 0.08);
}

.scheme-tree-label,
.scheme-result-item span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.scheme-result-list {
  position: relative;
  margin: 0;
  padding: 0 0 4px 30px;
  list-style: none;
}

.scheme-result-list::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 8px;
  left: 20px;
  width: 1px;
  background: rgba(13, 92, 89, 0.22);
}

.scheme-result-item,
.scheme-result-empty {
  position: relative;
  min-height: 30px;
  display: flex;
  align-items: center;
  min-width: 0;
  padding: 6px 8px 6px 24px;
  border-bottom: 1px solid rgba(34, 64, 72, 0.08);
  color: #3a5d59;
  font-size: 13px;
  font-weight: 750;
  line-height: 1.25;
}

.scheme-result-item {
  cursor: pointer;
  user-select: none;
  transition: background 0.16s ease, color 0.16s ease, opacity 0.16s ease;
}

.scheme-result-item::before,
.scheme-result-empty::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 16px;
  height: 1px;
  background: rgba(13, 92, 89, 0.26);
}

.scheme-result-item::after {
  content: "";
  position: absolute;
  top: calc(50% - 3px);
  left: 13px;
  width: 6px;
  height: 6px;
  border: 1px solid rgba(13, 92, 89, 0.42);
  border-radius: 50%;
  background: rgba(248, 251, 250, 0.96);
}

.scheme-result-item:hover,
.scheme-result-item:focus-visible {
  outline: none;
  background: rgba(13, 92, 89, 0.05);
  color: #102b2a;
}

.scheme-result-item.active {
  color: #0f3431;
  font-weight: 900;
}

.scheme-result-item.active::before,
.scheme-result-item:hover::before,
.scheme-result-item:focus-visible::before {
  background: #0d5c59;
}

.scheme-result-item.active::after {
  border-color: #0d5c59;
  background: #0d5c59;
  box-shadow: 0 0 0 3px rgba(13, 92, 89, 0.12);
}

.scheme-result-item.unreadable {
  opacity: 0.58;
}

.scheme-result-empty {
  color: #738b88;
  cursor: default;
}

.evaluation-workspace > .evaluation-main-resize-handle {
  grid-column: 2;
  grid-row: 1 / 4;
}

.evaluation-workspace > .optimization-panel {
  grid-column: 3;
  grid-row: 1 / 4;
}

.evaluation-workspace > .optimization-panel {
  grid-template-rows: max-content minmax(220px, 1fr);
}

.evaluation-result-actions {
  display: grid;
  gap: 10px;
  min-width: 0;
}

.evaluation-workspace:not(.frequency-workspace) .evaluation-result-actions {
  align-self: end;
}

.evaluation-result-actions select {
  width: 100%;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid rgba(34, 64, 72, 0.18);
  border-radius: 12px;
  background: #f8fbfa;
  color: #24413d;
  font-weight: 800;
}

.result-file-warnings {
  display: grid;
  gap: 6px;
  min-width: 0;
}

.result-file-warnings[hidden] {
  display: none;
}

.result-file-warnings .validation-item {
  padding: 8px 10px;
  border-radius: 8px;
  font-size: 12px;
  line-height: 1.35;
}

.evaluation-result-action-buttons {
  display: flex;
  flex-wrap: nowrap;
  gap: 6px;
  min-width: 0;
  overflow-x: auto;
}

.evaluation-result-action-buttons button {
  flex: 1 0 50px;
  min-width: 50px;
  padding: 10px 4px;
  border-radius: 12px;
  background: #edf4f2;
  color: #24413d;
  font-size: 13px;
  font-weight: 800;
  line-height: 1.1;
  white-space: nowrap;
  transition: background 0.16s ease, box-shadow 0.16s ease, color 0.16s ease, opacity 0.16s ease;
}

.evaluation-result-action-buttons button.is-disabled {
  opacity: 0.42;
  filter: grayscale(0.25);
  box-shadow: none;
}

.evaluation-planning-result-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.evaluation-planning-result-title {
  color: #102b2a;
  font-size: 17px;
  font-weight: 900;
}

.evaluation-planning-result-table {
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  overflow-x: hidden;
}

.evaluation-planning-result-table table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}

.evaluation-planning-result-table th,
.evaluation-planning-result-table td {
  padding-left: 8px;
  padding-right: 8px;
  white-space: nowrap;
}

.evaluation-planning-result-table th:nth-child(1),
.evaluation-planning-result-table td:nth-child(1) {
  width: 42%;
}

.evaluation-planning-result-table th:nth-child(2),
.evaluation-planning-result-table td:nth-child(2) {
  width: 30%;
}

.evaluation-planning-result-table th:nth-child(3),
.evaluation-planning-result-table td:nth-child(3) {
  width: 28%;
}

.evaluation-planning-result-table input {
  width: 100%;
  min-width: 0;
  max-width: 86px;
}

.comparison-workspace {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
}

.tasks-workspace {
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
}

.tasks-panel {
  position: relative;
  min-width: 0;
  min-height: 0;
  height: 100%;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 12px;
  padding: 18px;
  overflow: hidden;
}

.tasks-workspace > .tasks-panel {
  grid-column: 1;
  grid-row: 1;
}

.tasks-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-width: 0;
}

.tasks-toolbar h1 {
  margin: 0 0 6px;
  font-size: 22px;
}

.tasks-toolbar p {
  margin: 0;
  color: #6c817d;
  font-weight: 700;
}

.tasks-panel .task-table {
  max-height: none;
  min-height: 0;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
}

.task-type-tabs {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  min-height: 38px;
  min-width: 0;
  overflow-x: auto;
  white-space: nowrap;
}

.task-type-tab {
  flex: 0 0 auto;
  min-width: 132px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 16px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  box-shadow: none;
}

.task-type-tab:hover,
.task-type-tab:focus-visible {
  border-color: rgba(13, 92, 89, 0.22);
  background: #d8ebe6;
  outline: none;
}

.task-type-tab.active,
.task-type-tab[aria-selected="true"] {
  border-color: #0d5c59;
  background: #0d5c59;
  color: #fff;
}

.tasks-panel .status-error {
  position: absolute;
  z-index: 2;
  top: 18px;
  right: 18px;
  left: 18px;
}

.task-table table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}

.task-col-scheme { width: 11%; }
.task-col-result { width: 11%; }
.task-col-status { width: 8%; }
.task-col-process { width: 8%; }
.task-col-start { width: 12%; }
.task-col-end { width: 12%; }
.task-col-elapsed { width: 8%; }
.task-col-log { width: 14%; }
.task-col-actions { width: 16%; }

.task-table th,
.task-table td {
  overflow: hidden;
  text-overflow: ellipsis;
}

.task-actions-cell {
  overflow: visible;
  text-overflow: clip;
}

.task-section {
  min-height: 0;
  display: none;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.task-section[hidden] {
  display: none !important;
}

.task-section.active {
  display: grid;
  grid-row: 2;
  height: 100%;
}

.task-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-width: 0;
}

.task-section-head h2 {
  margin: 0;
  font-size: 16px;
}

.task-section-evaluation .task-section-head,
.task-section-frequency .task-section-head {
  justify-content: flex-start;
  gap: 14px;
}

.task-scheme-filter {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  color: #486966;
  font-size: 13px;
  font-weight: 800;
}

.task-scheme-filter select {
  min-width: 160px;
  max-width: 240px;
  height: 34px;
  padding: 0 32px 0 12px;
  border: 1px solid rgba(21, 211, 255, 0.34);
  border-radius: 8px;
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(237, 246, 245, 0.92));
  color: #173936;
  font-weight: 800;
  outline: none;
}

.task-scheme-filter select:focus {
  border-color: rgba(21, 211, 255, 0.72);
  box-shadow: 0 0 0 3px rgba(21, 211, 255, 0.14);
}

.task-log-cell {
  min-width: 0;
  max-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.task-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  white-space: normal;
}

.task-actions button {
  padding: 8px 10px;
}

.task-actions button:not(.primary):not(.danger) {
  border: 1px solid rgba(21, 211, 255, 0.48);
  border-radius: 8px;
  background: #edf4f2;
  color: #24413d;
  font-weight: 800;
}

.task-status-pill {
  display: inline-flex;
  min-width: 54px;
  justify-content: center;
  padding: 4px 8px;
  border-radius: 999px;
  font-weight: 900;
}

.task-status-pill.running {
  background: rgba(13, 92, 89, 0.14);
  color: #0d5c59;
}

.task-status-pill.queued {
  background: rgba(216, 163, 26, 0.16);
  color: #8a650d;
}

.task-status-pill.dequeued {
  background: rgba(87, 119, 142, 0.16);
  color: #31536b;
}

.task-status-pill.completed {
  background: rgba(42, 157, 143, 0.16);
  color: #17786d;
}

.task-status-pill.interrupted {
  background: rgba(186, 94, 37, 0.16);
  color: #9d4b18;
}

.task-status-pill.failed {
  background: rgba(205, 55, 75, 0.16);
  color: #a42738;
}

.task-status-pill.timeout {
  background: rgba(147, 91, 190, 0.16);
  color: #7347a0;
}

.task-status-pill.idle {
  background: rgba(108, 129, 125, 0.16);
  color: #536763;
}

.task-status-pill em {
  margin-left: 4px;
  font-style: normal;
  opacity: 0.78;
}

.task-empty {
  padding: 28px;
  color: #6c817d;
  font-weight: 800;
}

.comparison-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(108px, auto) minmax(0, var(--comparison-table-height, 30vh)) 12px minmax(0, 1fr);
  gap: 14px;
  padding: 16px;
  overflow: hidden;
}

.comparison-workspace > .comparison-panel {
  grid-column: 1;
  grid-row: 1;
}

.comparison-tab-bar {
  min-width: 0;
  min-height: 108px;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 10px;
  padding: 10px;
  overflow: hidden;
}

.comparison-result-warnings {
  max-height: 68px;
  overflow: auto;
}

.comparison-tabs {
  min-width: 0;
  min-height: 88px;
  display: flex;
  flex: 1 1 auto;
  align-items: stretch;
  gap: 10px;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 2px;
}

.comparison-tab {
  flex: 0 0 min(356px, 45vw);
  min-width: 270px;
  min-height: 84px;
  display: grid;
  grid-template-rows: auto auto;
  gap: 8px;
  padding: 10px;
  border: 1px solid rgba(34, 64, 72, 0.13);
  border-radius: 12px;
  background: #f8fbfa;
  cursor: grab;
}

.comparison-tab:active {
  cursor: grabbing;
}

.comparison-tab.active {
  border-color: #0d5c59;
  box-shadow: 0 10px 24px rgba(13, 92, 89, 0.16);
}

.comparison-tab-head {
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.comparison-tab-head strong {
  min-width: 0;
  color: #102b2a;
  font-size: 15px;
  font-weight: 900;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.comparison-tab-head button {
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 8px;
  background: #edf4f2;
  color: #24413d;
  font-size: 18px;
  font-weight: 900;
}

.comparison-tab-selectors {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 8px;
}

.comparison-tab-selectors select {
  width: 100%;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid rgba(34, 64, 72, 0.18);
  border-radius: 10px;
  background: #fff;
  color: #24413d;
  font-weight: 800;
}

.comparison-add-tab {
  flex: 0 0 auto;
  align-self: stretch;
  min-width: 92px;
  padding: 0 14px;
  border-radius: 10px;
  background: #edf4f2;
  color: #24413d;
  font-weight: 900;
}

.comparison-table-grid {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, var(--comparison-capacity-table-width, 1fr)) 10px minmax(0, var(--comparison-energy-table-width, 1fr)) 10px minmax(0, var(--comparison-safety-table-width, 1fr));
  gap: 10px;
  overflow: hidden;
}

.comparison-table-card {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  padding: 12px;
  overflow: hidden;
}

.comparison-table-card h2 {
  margin: 0;
  color: #102b2a;
  font-size: 17px;
  font-weight: 900;
}

.comparison-table {
  min-height: 0;
  max-height: none;
  overflow: auto;
}

.comparison-table table {
  table-layout: fixed;
  min-width: 0;
}

.comparison-table th,
.comparison-table td {
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.35;
}

.comparison-table-curve-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 14px;
  border-radius: 999px;
  cursor: row-resize;
  touch-action: none;
}

.comparison-table-column-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 10px;
  border-radius: 999px;
  cursor: col-resize;
  touch-action: none;
}

.comparison-table-column-resize-handle::before {
  content: "";
  width: 4px;
  height: 96px;
  border-radius: 999px;
  background: #9db4ae;
}

.comparison-table-column-resize-handle:hover::before,
.comparison-table-column-resize-handle.dragging::before,
.comparison-table-column-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.comparison-table-column-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.comparison-table-curve-resize-handle::before {
  content: "";
  width: 96px;
  height: 4px;
  border-radius: 999px;
  background: #9db4ae;
}

.comparison-table-curve-resize-handle:hover::before,
.comparison-table-curve-resize-handle.dragging::before,
.comparison-table-curve-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.comparison-table-curve-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.comparison-curve-board {
  min-width: 0;
  min-height: 0;
  height: 100%;
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 14px;
  padding: 12px;
  overflow: hidden;
}

.comparison-curve-list-panel,
.comparison-curve-chart-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.comparison-curve-list-panel {
  grid-template-rows: auto minmax(0, 1fr);
}

.comparison-curve-chart-panel {
  grid-template-rows: minmax(0, 1fr);
}

.comparison-curve-title {
  color: #102b2a;
  font-size: 17px;
  font-weight: 900;
}

.comparison-curve-name-list {
  min-height: 0;
  overflow: auto;
}

.curve-group-tabs {
  position: sticky;
  top: 0;
  z-index: 5;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
  padding-bottom: 8px;
  margin-bottom: 8px;
  background: rgba(246, 250, 249, 0.96);
  pointer-events: none;
}

.curve-group-tab {
  pointer-events: auto;
  min-width: 0;
  min-height: 30px;
  padding: 6px 8px;
  border-radius: 6px;
  background: #e7f2ef;
  color: #0d5c59;
  font-size: 12px;
  font-weight: 900;
  line-height: 1.2;
  white-space: nowrap;
  cursor: pointer;
}

.curve-group-tab.active {
  background: #0d5c59;
  color: #ffffff;
}

.curve-group-tab:hover,
.curve-group-tab:focus-visible {
  outline: none;
  background: rgba(13, 92, 89, 0.16);
  color: #102b2a;
}

.comparison-curve-name-list ul {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.comparison-curve-name-item {
  min-height: 30px;
  display: flex;
  align-items: center;
  padding: 6px 8px 6px 14px;
  border-left: 3px solid transparent;
  border-radius: 4px;
  color: #24413d;
  font-size: 14px;
  font-weight: 800;
  line-height: 1.25;
  cursor: pointer;
  user-select: none;
}

.comparison-curve-name-item.active {
  border-left-color: #0d5c59;
  background: rgba(13, 92, 89, 0.12);
  color: #102b2a;
}

.comparison-curve-name-item:hover,
.comparison-curve-name-item:focus-visible {
  outline: none;
  border-left-color: #0d5c59;
  background: rgba(13, 92, 89, 0.12);
  color: #102b2a;
}

.comparison-curve-chart {
  position: relative;
  width: 100%;
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.comparison-curve-chart > .axis-range-controls + .comparison-chart-frame,
.optimization-curve-chart > .axis-range-controls + .comparison-chart-frame {
  grid-row: 1 / -1;
  width: 100%;
  height: 100%;
  align-self: stretch;
  justify-self: stretch;
}

.comparison-chart-frame {
  position: relative;
  min-width: 0;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}

.comparison-curve-chart > .comparison-chart-frame:only-child,
.optimization-curve-chart > .comparison-chart-frame:only-child {
  grid-row: 1 / -1;
  width: 100%;
  height: 100%;
  align-self: stretch;
  justify-self: stretch;
}

.comparison-curve-chart svg {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: block;
}

.annual-stat-table {
  min-width: 0;
  min-height: 0;
  height: 100%;
  width: 100%;
  overflow: auto;
}

.annual-stat-table table {
  width: 100%;
  height: 100%;
  min-width: 560px;
  table-layout: fixed;
}

.annual-view-switch {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 8px;
  align-content: start;
}

.annual-view-toggle {
  width: 100%;
  min-height: 34px;
  padding: 8px 10px;
  border: 1px solid #d7e4e0;
  border-radius: 8px;
  background: #edf4f2;
  color: #24413d;
  font-size: 13px;
  font-weight: 900;
  text-align: center;
}

.annual-view-toggle.active {
  border-color: #0d5c59;
  background: #0d5c59;
  color: #ffffff;
}

.annual-view-toggle:hover,
.annual-view-toggle:focus-visible {
  outline: none;
  border-color: #0d5c59;
  background: rgba(13, 92, 89, 0.14);
  color: #102b2a;
}

.annual-comparison-grid {
  position: relative;
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: minmax(0, var(--annual-grid-left, 1fr)) minmax(0, var(--annual-grid-right, 1fr));
  grid-template-rows: minmax(0, var(--annual-grid-top, 1fr)) minmax(0, var(--annual-grid-bottom, 1fr));
  gap: 10px;
  overflow: hidden;
}

.annual-grid-resizer {
  position: absolute;
  z-index: 8;
  border: 0;
  border-radius: 999px;
  background: transparent;
  touch-action: none;
}

.annual-grid-resizer::before {
  content: "";
  position: absolute;
  border-radius: 999px;
  background: rgba(13, 92, 89, 0.34);
  opacity: 0.78;
  transition: background 0.16s ease, opacity 0.16s ease, box-shadow 0.16s ease;
}

.annual-grid-resizer-col {
  top: 0;
  bottom: 0;
  left: calc(var(--annual-grid-col-position, 50%) - 5px);
  width: 10px;
  cursor: col-resize;
}

.annual-grid-resizer-col::before {
  top: 8px;
  bottom: 8px;
  left: 4px;
  width: 2px;
}

.annual-grid-resizer-row {
  left: 0;
  right: 0;
  top: calc(var(--annual-grid-row-position, 50%) - 5px);
  height: 10px;
  cursor: row-resize;
}

.annual-grid-resizer-row::before {
  left: 8px;
  right: 8px;
  top: 4px;
  height: 2px;
}

.annual-grid-resizer:hover::before,
.annual-grid-resizer:focus-visible::before,
.annual-grid-resizer.dragging::before {
  background: #0d5c59;
  opacity: 1;
  box-shadow: 0 0 0 3px rgba(13, 92, 89, 0.12);
}

.annual-grid-resizer:focus-visible {
  outline: none;
}

.annual-comparison-card {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 6px;
  padding: 10px;
  border: 1px solid #d7e4e0;
  border-radius: 12px;
  background: #f8fbfa;
}

.annual-comparison-head {
  min-width: 0;
  display: grid;
  grid-template-columns: max-content minmax(0, 1fr) max-content;
  align-items: center;
  gap: 10px;
}

.annual-comparison-head h3 {
  margin: 0;
  color: #102b2a;
  font-size: 14px;
  font-weight: 900;
  white-space: nowrap;
}

.annual-axis-note {
  min-width: 0;
  color: #5a716e;
  font-size: 11px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.annual-head-actions {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.annual-comparison-chart {
  position: relative;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  isolation: isolate;
}

.annual-comparison-chart svg {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: block;
}

.annual-axis-line {
  stroke: #224048;
  stroke-width: 1.2;
  vector-effect: non-scaling-stroke;
}

.annual-grid-line {
  stroke: #c8d8d3;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.annual-bar {
  opacity: 0.82;
  cursor: pointer;
}

.annual-bar:hover {
  opacity: 1;
}

.annual-line {
  fill: none;
  stroke: #ff6bcb;
  stroke-width: 2.6;
  vector-effect: non-scaling-stroke;
}

.annual-line-points {
  position: absolute;
  inset: 0;
  z-index: 4;
  pointer-events: none;
}

.annual-line-point {
  position: absolute;
  width: 8px;
  height: 8px;
  border: 1.5px solid #ffffff;
  border-radius: 50%;
  background: #ff6bcb;
  box-shadow: 0 0 0 2px rgba(255, 107, 203, 0.22);
  cursor: pointer;
  pointer-events: auto;
  transform: translate(-50%, -50%);
}

.annual-line-point:hover {
  box-shadow: 0 0 0 4px rgba(255, 107, 203, 0.28);
  transform: translate(-50%, -50%) scale(1.14);
}

.annual-chart-axis-labels,
.annual-chart-x-axis {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}

.annual-chart-axis-label,
.annual-chart-x-axis span {
  position: absolute;
  color: #5a716e;
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  white-space: nowrap;
  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.72);
}

.annual-chart-axis-label {
  max-width: 64px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.annual-chart-axis-label-left {
  text-align: right;
  transform: translate(calc(-100% - 8px), -50%);
}

.annual-chart-axis-label-right {
  text-align: left;
  transform: translate(8px, -50%);
}

.annual-chart-x-axis span {
  max-width: var(--annual-x-label-width, 12%);
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
  transform: translate(-50%, -50%);
}

.annual-comparison-legend {
  display: flex;
  align-items: center;
  gap: 6px 10px;
  min-width: 0;
  overflow-x: auto;
  flex-wrap: nowrap;
  color: #405b58;
  font-size: 11px;
  font-weight: 800;
  pointer-events: auto !important;
  scrollbar-width: thin;
}

.annual-comparison-legend span,
.annual-comparison-legend button {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  white-space: nowrap;
}

.annual-comparison-legend button {
  position: relative;
  z-index: 1;
  padding: 2px 6px;
  min-height: 22px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.62);
  color: inherit;
  cursor: pointer;
  line-height: 1.1;
  pointer-events: auto !important;
}

.annual-comparison-legend button:hover,
.annual-comparison-legend button:focus-visible {
  outline: none;
  border-color: rgba(13, 92, 89, 0.24);
  background: rgba(13, 92, 89, 0.1);
}

.annual-comparison-legend button.is-hidden {
  opacity: 0.46;
  text-decoration: line-through;
}

.annual-comparison-legend i {
  width: 9px;
  height: 9px;
  flex: 0 0 auto;
  border-radius: 2px;
}

.annual-comparison-legend i.line {
  height: 3px;
  border-radius: 999px;
}

.annual-chart-tooltip {
  z-index: 12;
}

.comparison-curve-chart > .annual-stat-table,
.optimization-curve-chart > .annual-stat-table {
  grid-row: 1 / -1;
  width: 100%;
  height: 100%;
  max-height: none;
  align-self: stretch;
  justify-self: stretch;
}

.comparison-curve-chart > .annual-comparison-grid,
.optimization-curve-chart > .annual-comparison-grid {
  grid-row: 1 / -1;
  width: 100%;
  height: 100%;
  align-self: stretch;
  justify-self: stretch;
}

.comparison-curve-chart > .empty-summary,
.optimization-curve-chart > .empty-summary {
  grid-row: 1 / -1;
  min-height: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.comparison-chart-axis {
  stroke: #224048;
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
}

.comparison-chart-grid {
  stroke: #c8d8d3;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.comparison-series-line {
  fill: none;
  stroke-width: 2.4;
  vector-effect: non-scaling-stroke;
}

.comparison-chart-x-axis,
.comparison-chart-y-axis {
  position: absolute;
  color: #5a716e;
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
  pointer-events: none;
}

.comparison-chart-x-axis {
  left: var(--comparison-chart-left, 5.4%);
  right: var(--comparison-chart-right, 2.2%);
  bottom: 4px;
  height: 18px;
}

.comparison-chart-x-axis span {
  position: absolute;
  bottom: 0;
  transform: translateX(-50%);
  white-space: nowrap;
}

.comparison-chart-y-axis {
  top: var(--comparison-chart-top, 5%);
  bottom: var(--comparison-chart-bottom, 8%);
  left: 6px;
  width: calc(var(--comparison-chart-left, 5.4%) - 10px);
  min-width: 48px;
}

.comparison-chart-y-axis span {
  position: absolute;
  right: 0;
  transform: translateY(50%);
  white-space: nowrap;
}

.comparison-curve-stats {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 6;
  max-width: min(640px, calc(100% - 92px));
  max-height: calc(100% - 62px);
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  overflow: auto;
  pointer-events: none;
}

.comparison-curve-stats section {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(120px, 1fr) repeat(4, auto);
  align-items: center;
  gap: 8px;
  padding: 7px 10px;
  border: 1px solid rgba(34, 64, 72, 0.13);
  border-radius: 10px;
  background: rgba(248, 251, 250, 0.88);
  backdrop-filter: blur(4px);
  white-space: nowrap;
}

.comparison-curve-stats strong {
  min-width: 0;
  color: #102b2a;
  font-size: 13px;
  font-weight: 900;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.comparison-curve-stats span {
  min-width: 0;
  color: #405b58;
  font-size: 12px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.result-curve-legend {
  position: absolute;
  top: 10px;
  left: calc(var(--comparison-chart-left, 5.4%) + 8px);
  z-index: 7;
  max-width: min(780px, calc(100% - 150px));
  max-height: calc(100% - 64px);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 6px;
  overflow: auto;
  pointer-events: auto;
  cursor: grab;
  user-select: none;
  touch-action: none;
}

.result-curve-legend button {
  min-width: 0;
  min-height: 30px;
  display: grid;
  grid-template-columns: 34px minmax(140px, 1fr) repeat(4, auto);
  align-items: center;
  gap: 6px;
  padding: 5px 9px;
  border: 1px solid rgba(16, 43, 42, 0.16);
  border-radius: 7px;
  background: rgba(248, 251, 250, 0.9);
  color: #102b2a;
  font-size: 12px;
  font-weight: 850;
  white-space: nowrap;
  cursor: pointer;
  backdrop-filter: blur(4px);
}

.result-curve-legend.dragging,
.result-curve-legend.dragging button {
  cursor: grabbing;
}

.result-curve-legend.stats-hidden button {
  grid-template-columns: 34px minmax(140px, 1fr);
}

.result-curve-legend-label,
.result-curve-legend-stat {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.result-curve-legend-label {
  text-align: left;
}

.result-curve-legend-stat {
  color: #405b58;
  font-size: 11px;
  font-weight: 800;
}

.result-curve-legend.stats-hidden .result-curve-legend-stat {
  display: none;
}

.result-curve-legend button:hover,
.result-curve-legend button:focus-visible {
  border-color: rgba(16, 43, 42, 0.34);
  background: rgba(255, 255, 255, 0.96);
}

.result-curve-legend button.is-hidden {
  opacity: 0.46;
  color: #6a7d7a;
}

.result-curve-legend button.is-hidden .result-curve-legend-stat {
  color: #7f918e;
}

.result-curve-legend button.is-hidden .result-curve-legend-swatch {
  filter: grayscale(0.7);
}

.result-curve-legend-swatch {
  width: 34px;
  height: 10px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
}

.result-curve-legend-swatch svg {
  width: 100%;
  height: 100%;
  display: block;
}

.result-curve-legend-swatch line {
  stroke-width: 2.4;
  stroke-linecap: round;
}

.result-curve-context-menu {
  position: absolute;
  z-index: 18;
  min-width: 150px;
  display: grid;
  gap: 4px;
  padding: 6px;
  border: 1px solid rgba(16, 43, 42, 0.18);
  border-radius: 8px;
  background: rgba(248, 251, 250, 0.96);
  color: #102b2a;
  box-shadow: 0 14px 34px rgba(16, 43, 42, 0.2);
}

.result-curve-context-menu[hidden] {
  display: none;
}

.result-curve-context-menu button {
  min-height: 30px;
  padding: 6px 9px;
  border-radius: 6px;
  background: transparent;
  color: inherit;
  text-align: left;
  font-weight: 850;
}

.result-curve-context-menu button:hover,
.result-curve-context-menu button:focus-visible {
  background: rgba(13, 92, 89, 0.12);
}

.result-curve-empty-overlay {
  position: absolute;
  inset: 50% auto auto 50%;
  z-index: 5;
  transform: translate(-50%, -50%);
  padding: 8px 12px;
  border: 1px solid rgba(16, 43, 42, 0.14);
  border-radius: 8px;
  background: rgba(248, 251, 250, 0.86);
  color: #405b58;
  font-size: 13px;
  font-weight: 850;
  pointer-events: none;
}

.result-curve-tooltip-swatch {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  display: inline-block;
  margin-right: 6px;
  border-radius: 999px;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.16);
}

.comparison-chart-hover-line {
  stroke: #102b2a;
  stroke-width: 1.3;
  stroke-dasharray: 5 5;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}

.comparison-chart-hover-capture {
  fill: transparent;
  cursor: crosshair;
  pointer-events: all;
}

.comparison-chart-tooltip {
  position: absolute;
  z-index: 8;
  min-width: 190px;
  max-width: min(340px, calc(100% - 20px));
  padding: 10px 12px;
  border: 1px solid var(--chart-tooltip-border, rgba(16, 43, 42, 0.18));
  border-radius: 10px;
  background: var(--chart-tooltip-bg, rgba(16, 43, 42, 0.94));
  color: var(--chart-tooltip-text, #effcf9);
  box-shadow: var(--chart-tooltip-shadow, 0 12px 30px rgba(16, 43, 42, 0.22));
  pointer-events: none;
}

.comparison-chart-tooltip[hidden] {
  display: none;
}

.comparison-chart-tooltip h3 {
  margin: 0 0 8px;
  color: var(--chart-tooltip-strong, #fff);
  font-size: 13px;
  font-weight: 900;
}

.comparison-chart-tooltip div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 3px 0;
  font-size: 12px;
  font-weight: 800;
}

.comparison-chart-tooltip span {
  min-width: 0;
  color: var(--chart-tooltip-muted, #b9d8d2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.comparison-chart-tooltip strong {
  color: var(--chart-tooltip-strong, #fff);
  font-weight: 900;
  white-space: nowrap;
}

.optimization-panel {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: max-content minmax(220px, 1fr);
  gap: 16px;
  padding: 16px;
  overflow: hidden;
}

.optimization-command-card,
.optimization-result-card,
.optimization-log-card {
  min-height: 0;
  padding: 16px;
}

.optimization-command-card {
  display: block;
}

.optimization-command-row {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
  min-width: 0;
}

.optimization-actions {
  display: flex;
  gap: 10px;
  flex: 0 0 auto;
}

.optimization-actions button {
  padding: 10px 14px;
  border-radius: 12px;
  font-weight: 800;
  transition: background 0.16s ease, box-shadow 0.16s ease, color 0.16s ease, opacity 0.16s ease;
}

.optimization-actions .queue-action {
  background: rgba(5, 34, 70, 0.56) !important;
  color: #b7d8d6 !important;
  border: 1px solid rgba(108, 147, 160, 0.28) !important;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 2px 8px rgba(4, 18, 42, 0.12) !important;
}

.optimization-actions .queue-action:hover,
.optimization-actions .queue-action:focus-visible {
  background: rgba(8, 47, 76, 0.72) !important;
  color: #e0f4f2 !important;
  border-color: rgba(108, 238, 255, 0.34) !important;
  outline: none;
}

.optimization-actions button.is-active {
  opacity: 1;
  box-shadow: 0 10px 22px rgba(13, 92, 89, 0.18);
}

.optimization-actions .queue-action.is-active {
  box-shadow:
    inset 0 0 0 1px rgba(108, 238, 255, 0.18),
    0 4px 10px rgba(4, 18, 42, 0.14) !important;
}

.optimization-actions button.is-disabled {
  opacity: 0.42;
  filter: grayscale(0.25);
  box-shadow: none;
}

.optimization-current-scheme {
  flex: 0 1 220px;
  min-width: 150px;
  color: #405b58;
  font-weight: 900;
  overflow: hidden;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.optimization-status-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(86px, 1fr));
  gap: 6px;
  flex: 1 1 auto;
  min-width: 0;
}

.status-tile {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
  min-width: 0;
  padding: 8px 9px;
  border: 1px solid #d7e4e0;
  border-radius: 14px;
  background: #f8fbfa;
}

.status-tile span {
  flex: 0 0 auto;
  color: #5a716e;
  font-size: 11px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: clip;
  white-space: nowrap;
}

.status-tile strong {
  flex: 1 1 auto;
  min-width: 0;
  color: #102b2a;
  font-size: 15px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.optimization-result-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.result-tabs {
  flex: 0 0 auto;
  display: flex;
  gap: 8px;
  min-height: 38px;
  margin-bottom: 12px;
  overflow-x: auto;
  white-space: nowrap;
}

.result-tab {
  flex: 0 0 auto;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 13px;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-weight: 800;
}

.result-tab.active {
  background: #0d5c59;
  color: #fff;
}

.result-panel {
  min-height: 0;
  overflow: hidden;
}

.result-panel.active {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  overflow: auto;
}

.optimization-result-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(260px, 34%) minmax(0, 1fr);
  gap: 14px;
}

.optimization-overview-grid {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, var(--overview-left-column-width, 1fr)) 10px minmax(0, 1.35fr);
  gap: 14px;
}

.overview-column-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 10px;
  border-radius: 999px;
  cursor: col-resize;
  touch-action: none;
}

.overview-column-resize-handle::before {
  content: "";
  width: 4px;
  height: 96px;
  border-radius: 999px;
  background: #9db4ae;
}

.overview-column-resize-handle:hover::before,
.overview-column-resize-handle.dragging::before,
.overview-column-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.overview-column-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.overview-composition-stack,
.overview-table-card {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 12px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.overview-composition-stack {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-auto-rows: minmax(0, 1fr);
  gap: 12px;
  overflow: auto;
  padding: 0;
  border: 0;
  background: transparent;
}

.overview-table-card h2 {
  flex: 0 0 auto;
  margin: 0 0 10px;
  font-size: 17px;
}

.composition-bar-card {
  flex: 1 1 0;
  min-height: 128px;
  display: grid;
  grid-template-rows: auto auto;
  align-content: center;
  gap: 10px;
  padding: 14px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.composition-bar-card h2 {
  margin: 0;
  font-size: 16px;
  line-height: 1.2;
}

.composition-bar-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(86px, 1fr));
  gap: 6px;
}

.composition-bar-card.multi-segment {
  gap: 8px;
}

.composition-bar-card.multi-segment .composition-bar-summary {
  grid-template-columns: repeat(auto-fit, minmax(68px, 1fr));
}

.composition-bar-summary span {
  min-width: 0;
  display: grid;
  gap: 2px;
  color: #405b58;
  font-size: 12px;
  font-weight: 800;
}

.composition-bar-summary-label {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  overflow: hidden;
  color: inherit;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.composition-bar-summary-dot {
  width: 8px;
  height: 8px;
  flex: 0 0 auto;
  border-radius: 50%;
}

.composition-bar-summary strong {
  color: #102b2a;
  overflow: hidden;
  font-size: 14px;
  font-weight: 900;
  line-height: 1.08;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.composition-bar-percent {
  color: #627d79;
  font-size: 11px;
  font-weight: 900;
  line-height: 1;
}

.composition-bar-track {
  width: 100%;
  height: 22px;
  display: flex;
  overflow: hidden;
  border: 1px solid rgba(16, 43, 42, 0.12);
  border-radius: 999px;
  background: #e8f0ee;
}

.composition-bar-segment {
  position: relative;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  min-height: 0 !important;
  max-height: 100%;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: var(--composition-segment-color, #0d5c59);
  box-shadow: none !important;
  color: #ffffff;
  transition: width 0.2s ease;
}

.composition-bar-segment.primary {
  background: var(--composition-segment-color, #0d5c59) !important;
}

.composition-bar-segment.secondary {
  background: var(--composition-segment-color, #d8b35d) !important;
}

.composition-bar-segment span {
  position: absolute;
  top: 50%;
  left: 50%;
  min-height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: 1px 5px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.72);
  color: #fff;
  font-size: 12px;
  font-weight: 900;
  line-height: 1;
  text-shadow: none;
  transform: translate(-50%, -50%);
  white-space: nowrap;
}

.composition-bar-segment[style^="width:0"] span,
.composition-bar-segment[style^="width:0."] span,
.composition-bar-segment[style^="width:1."] span,
.composition-bar-segment[style^="width:2."] span,
.composition-bar-segment[style^="width:3."] span,
.composition-bar-segment[style^="width:4."] span {
  display: none;
}

.composition-bar-legend {
  width: 100%;
  display: grid;
  gap: 6px;
  color: #405b58;
  font-size: 12px;
  font-weight: 800;
}

.composition-bar-legend div {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  gap: 6px;
  min-width: 0;
  text-align: left;
}

.composition-bar-legend strong {
  color: #102b2a;
  font-size: 12px;
  text-align: right;
  white-space: nowrap;
}

.legend-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.primary-dot { background: #0d5c59; }
.secondary-dot { background: #d8b35d; }

.optimization-overview-table {
  flex: 1 1 auto;
  max-height: none;
  background: #fff;
}

.optimization-overview-table table {
  min-width: 480px;
}

.optimization-overview-table th,
.optimization-overview-table td {
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.35;
}

.optimization-result-chart,
.optimization-result-table {
  min-height: 0;
}

.optimization-result-table {
  max-height: none;
}

.mini-bar-chart {
  height: 100%;
  min-height: 220px;
  display: flex;
  align-items: end;
  justify-content: space-around;
  gap: 10px;
  padding: 14px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.mini-bar-item {
  min-width: 42px;
  flex: 1 1 0;
  display: grid;
  grid-template-rows: auto minmax(120px, 1fr) auto;
  gap: 7px;
  color: #405b58;
  font-size: 12px;
  font-weight: 800;
  text-align: center;
}

.mini-bar-value,
.mini-bar-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mini-bar-track {
  display: flex;
  align-items: end;
  justify-content: center;
  min-height: 120px;
  border-radius: 999px;
  background: #e5eeeb;
}

.mini-bar-track span {
  width: 60%;
  border-radius: 999px 999px 0 0;
  background: #0d5c59;
}

.green-result-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, var(--green-result-table-width, 34%)) 10px minmax(0, 1fr);
  gap: 12px;
  overflow: hidden;
}

.green-chart-card {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  padding: 12px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.green-daily-chart {
  overflow: hidden;
}

.green-chart-viewport,
.safety-chart-viewport {
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
  overflow: hidden;
}

.green-chart-legend,
.safety-chart-legend {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 10px 14px;
  flex-wrap: wrap;
  color: #405b58;
  font-size: 12px;
  font-weight: 800;
}

.green-chart-legend button,
.safety-chart-legend button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid #cbdad5;
  border-radius: 999px;
  background: #fff;
  color: #405b58;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  font: inherit;
}

.green-chart-legend button:hover,
.green-chart-legend button:focus-visible,
.safety-chart-legend button:hover,
.safety-chart-legend button:focus-visible {
  border-color: #0d5c59;
  background: rgba(13, 92, 89, 0.08);
  outline: none;
}

.green-chart-legend button.is-hidden,
.safety-chart-legend button.is-hidden {
  opacity: 0.46;
  background: #f3f7f6;
}

.green-chart-legend button i,
.safety-chart-legend button i {
  width: 10px;
  height: 10px;
  border-radius: 50%;
}

.green-chart-svg {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: auto;
  min-height: 0;
  display: block;
  overflow: visible;
}

.green-stack-area {
  opacity: 0.74;
}

.green-axis-line,
.green-zero-line {
  stroke: #224048;
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
}

.green-grid-line,
.green-x-tick {
  stroke: #c8d8d3;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.green-x-tick {
  stroke-dasharray: 4 7;
}

.green-tick-label,
.green-x-label {
  fill: #5a716e;
  font-size: 14px;
  font-weight: 800;
}

.green-tick-label {
  text-anchor: end;
  dominant-baseline: central;
}

.green-x-label {
  text-anchor: middle;
}

.green-result-table {
  min-height: 0;
  max-height: none;
  overflow: auto;
  background: #fff;
}

.green-result-table table {
  min-width: 520px;
}

.safety-result-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, var(--safety-result-table-width, 34%)) 10px minmax(0, 1fr);
  gap: 12px;
  overflow: hidden;
}

.safety-chart-card {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  padding: 12px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
  overflow: hidden;
}

.safety-chart-svg {
  flex: 1 1 auto;
  min-width: 0;
  width: 100%;
  height: auto;
  min-height: 0;
  display: block;
  overflow: visible;
}

.safety-axis-line,
.safety-center-line {
  stroke: #224048;
  stroke-width: 1.4;
  vector-effect: non-scaling-stroke;
}

.safety-center-line {
  stroke-width: 1.8;
}

.safety-grid-line,
.safety-x-tick {
  stroke: #c8d8d3;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.safety-x-tick {
  stroke-dasharray: 4 7;
}

.safety-frequency-line {
  fill: none;
  stroke-width: 2.4;
  vector-effect: non-scaling-stroke;
}

.safety-frequency-line.up {
  stroke: #c7504a;
}

.safety-frequency-line.down {
  stroke: #4d7fd1;
}

.safety-frequency-area {
  opacity: 0.18;
}

.safety-frequency-area.up {
  fill: #c7504a;
}

.safety-frequency-area.down {
  fill: #4d7fd1;
}

.safety-tick-label,
.safety-x-label {
  fill: #5a716e;
  font-size: 14px;
  font-weight: 800;
}

.safety-tick-label {
  text-anchor: end;
  dominant-baseline: central;
}

.safety-x-label {
  text-anchor: middle;
}

.safety-result-table {
  min-height: 0;
  max-height: none;
  overflow: auto;
  background: #fff;
}

.safety-result-table table {
  min-width: 520px;
}

.frequency-metrics-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(240px, var(--frequency-metrics-table-width, 360px)) 10px minmax(0, 1fr);
  gap: 0;
}

.frequency-metrics-layout > .data-table {
  max-height: none;
}

.frequency-8760-curve-board {
  position: relative;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 12px;
  overflow: hidden;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.frequency-8760-chart-frame {
  flex: 1 1 auto;
  width: 100%;
  height: auto;
  min-width: 0;
  min-height: 0;
}

.frequency-8760-svg {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
}

.frequency-8760-line {
  fill: none;
  stroke-width: 2.2;
  vector-effect: non-scaling-stroke;
}

.frequency-8760-grid,
.frequency-8760-x-grid {
  stroke: #dce9e5;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.frequency-8760-x-grid {
  stroke-dasharray: 5 6;
}

.frequency-8760-series-label {
  fill: #25413f;
  font-size: 13px;
  font-weight: 800;
  text-anchor: end;
  dominant-baseline: central;
}

.frequency-8760-value-label,
.frequency-8760-x-label {
  fill: #61726f;
  font-size: 11px;
}

.frequency-8760-x-label {
  text-anchor: middle;
}

.frequency-8760-stats {
  max-width: min(720px, calc(100% - 100px));
}

.frequency-8760-stats section {
  grid-template-columns: minmax(130px, 1fr) repeat(4, auto);
}

.frequency-8760-hover-capture {
  pointer-events: all;
}

.frequency-time-curve-panel {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 12px;
}

.frequency-time-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 10px;
}

.frequency-time-controls label {
  display: grid;
  gap: 5px;
  color: #536762;
  font-size: 12px;
  font-weight: 800;
}

.frequency-time-controls input {
  width: 92px;
  height: 36px;
  border: 1px solid #cbded8;
  border-radius: 10px;
  padding: 0 10px;
  color: #173431;
  font-weight: 800;
  background: #fff;
}

.frequency-time-controls button {
  height: 36px;
}

.frequency-time-result-layout {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(220px, var(--frequency-time-info-width, 360px)) 10px minmax(0, 1fr);
  gap: 0;
}

.frequency-time-result-layout > .data-table {
  max-height: none;
}

.frequency-time-curve-chart {
  min-height: 0;
  height: 100%;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: 10px;
}

.frequency-time-curve-chart > .safety-chart-svg {
  width: 100%;
  height: 100%;
  min-height: 0;
}

.chart-hover-line {
  stroke: #102b2a;
  stroke-width: 1.4;
  stroke-dasharray: 6 5;
  vector-effect: non-scaling-stroke;
  pointer-events: none;
}

.chart-hover-capture {
  fill: transparent;
  cursor: crosshair;
  pointer-events: all;
}

.chart-hover-tooltip {
  position: absolute;
  z-index: 8;
  min-width: 178px;
  max-width: min(280px, calc(100% - 16px));
  padding: 10px 12px;
  border: 1px solid var(--chart-tooltip-border, rgba(16, 43, 42, 0.18));
  border-radius: 12px;
  background: var(--chart-tooltip-bg, rgba(16, 43, 42, 0.92));
  color: var(--chart-tooltip-text, #effcf9);
  box-shadow: var(--chart-tooltip-shadow, 0 12px 30px rgba(16, 43, 42, 0.22));
  pointer-events: none;
}

.chart-hover-tooltip h3 {
  margin: 0 0 8px;
  color: var(--chart-tooltip-strong, #fff);
  font-size: 13px;
  font-weight: 900;
}

.chart-hover-tooltip div {
  display: grid;
  grid-template-columns: minmax(86px, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 3px 0;
  font-size: 12px;
  font-weight: 800;
}

.chart-hover-tooltip span {
  color: var(--chart-tooltip-muted, #b9d8d2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.chart-hover-tooltip strong {
  color: var(--chart-tooltip-strong, #fff);
  font-weight: 900;
  white-space: nowrap;
}

.result-column-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 10px;
  border-radius: 999px;
  cursor: col-resize;
  touch-action: none;
}

.evaluation-main-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 10px;
  border-radius: 999px;
  cursor: col-resize;
  touch-action: none;
}

.result-column-resize-handle::before,
.evaluation-main-resize-handle::before {
  content: "";
  width: 4px;
  height: 96px;
  border-radius: 999px;
  background: #9db4ae;
}

.result-column-resize-handle:hover::before,
.result-column-resize-handle.dragging::before,
.result-column-resize-handle:focus-visible::before,
.evaluation-main-resize-handle:hover::before,
.evaluation-main-resize-handle.dragging::before,
.evaluation-main-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.result-column-resize-handle:focus-visible,
.evaluation-main-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.optimization-log-resize-handle {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 14px;
  border-radius: 999px;
  cursor: row-resize;
  touch-action: none;
}

.optimization-log-resize-handle::before {
  content: "";
  width: 96px;
  height: 4px;
  border-radius: 999px;
  background: #9db4ae;
}

.optimization-log-resize-handle:hover::before,
.optimization-log-resize-handle.dragging::before,
.optimization-log-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.optimization-log-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.optimization-log-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.log-view-tabs {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 38px;
  margin-bottom: 10px;
  overflow-x: auto;
  white-space: nowrap;
}

.optimization-log-title {
  flex: 0 0 auto;
  margin-bottom: 10px;
  color: #102b2a;
  font-size: 18px;
  font-weight: 900;
}

.log-view-tab {
  flex: 0 0 auto;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 13px;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-weight: 800;
}

.log-view-tab.active {
  background: #0d5c59;
  color: #fff;
}

.log-view-panel {
  min-width: 0;
  min-height: 0;
  display: none;
}

.log-view-panel.active {
  flex: 1 1 auto;
  display: flex;
  overflow: hidden;
}

.optimization-log-result-panel.active {
  overflow: hidden;
}

.optimization-logs {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 10px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #102b2a;
  color: #dff4ef;
  font-family: Consolas, "Microsoft YaHei", monospace;
  font-size: 13px;
}

.log-context-menu {
  position: fixed;
  z-index: 80;
  min-width: 176px;
  padding: 6px;
  border: 1px solid rgba(20, 190, 255, 0.42);
  border-radius: 10px;
  background: rgba(1, 18, 45, 0.96);
  box-shadow: 0 14px 34px rgba(0, 8, 28, 0.42), inset 0 0 18px rgba(24, 175, 255, 0.12);
}

.log-context-menu[hidden] {
  display: none;
}

.log-context-menu button {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 9px 10px;
  border-radius: 8px;
  background: transparent;
  color: #dff7ff;
  font-size: 14px;
  font-weight: 800;
  text-align: left;
}

.log-context-menu button:hover,
.log-context-menu button:focus-visible {
  background: rgba(33, 213, 255, 0.16);
  color: #ffffff;
}

.optimization-curve-panel {
  min-width: 0;
  min-height: 0;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 12px;
}

.optimization-curve-panel.active {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  height: 100%;
  overflow: hidden;
}

.optimization-curve-name-list {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  padding: 6px;
  border: 1px solid #d7e4e0;
  border-radius: 12px;
  background: #f8fbfa;
}

.optimization-curve-name-list ul {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.optimization-curve-chart {
  min-width: 0;
  min-height: 0;
  position: relative;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 10px;
  overflow: hidden;
}

.optimization-curve-chart svg {
  width: 100%;
  height: 100%;
  min-height: 0;
  display: block;
}

@media (max-width: 980px) {
  .comparison-curve-board,
  .optimization-curve-panel.active {
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: minmax(120px, 32%) minmax(0, 1fr);
  }
}

@media (max-height: 760px) {
  .comparison-curve-board,
  .optimization-curve-panel.active {
    gap: 8px;
    padding: 8px;
  }

  .optimization-curve-name-list {
    padding: 4px;
  }

  .comparison-curve-chart,
  .optimization-curve-chart {
    gap: 6px;
  }

  .result-curve-legend {
    top: 8px;
    gap: 4px;
    max-height: calc(100% - 48px);
  }

  .result-curve-legend button {
    min-height: 26px;
    padding: 4px 7px;
  }
}

.log-line {
  display: flex;
  gap: 10px;
  padding: 4px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.log-line span {
  flex: 0 0 154px;
  color: #9bc6bf;
}

.log-line strong {
  color: #effcf9;
  font-weight: 700;
}

.log-line.ok strong {
  color: #82e7b5;
}

.log-line.warn strong {
  color: #ffc67a;
}

.editor-header {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 14px;
  flex-wrap: wrap;
  padding: 14px;
  border-bottom: 1px solid rgba(34, 64, 72, 0.12);
}

.planning-command-card {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: nowrap;
  padding: 12px 14px;
  border-radius: 14px;
}

.planning-command-card .current-scheme-panel {
  flex: 0 1 auto;
}

.planning-command-card .tabs {
  flex: 1 1 auto;
  min-width: 0;
  flex-wrap: nowrap;
  overflow-x: auto;
}

.planning-command-card .scheme-actions {
  flex: 0 0 auto;
}

.tabs {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  flex: 1 1 auto;
}

.tab {
  padding: 10px 14px;
  border-radius: 999px;
  background: transparent;
  color: #405b58;
  font-weight: 800;
}

.tab.active {
  background: #0d5c59;
  color: #fff;
}

.current-scheme-panel {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  flex: 0 0 auto;
  min-width: 0;
  max-width: 100%;
  flex-wrap: nowrap;
  overflow-x: auto;
}

.current-scheme {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
  gap: 4px;
  color: #405b58;
  text-align: left;
  white-space: nowrap;
}

.current-scheme span {
  font-size: 15px;
  font-weight: 800;
}

.current-scheme strong {
  display: inline-block;
  color: #0d5c59;
  font-size: 16px;
  max-width: 240px;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: bottom;
}

.tab-panel {
  display: none;
  min-height: 0;
  overflow: hidden;
  padding: 16px;
}

.tab-panel.active {
  display: flex;
  flex-direction: column;
}

.chart-card,
.table-card,
.device-card,
.device-filter-card,
.planning-parameters-card,
.summary-section {
  padding: 16px;
  margin-bottom: 16px;
}

.device-tables {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
  padding-right: 4px;
}

.summary-page {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  max-height: none;
  overflow: hidden;
  padding-right: 4px;
}

.summary-switcher {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#limitsTab .summary-section.summary-switcher {
  padding: 0;
  margin-bottom: 0;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}

.summary-tabs {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  overflow-x: auto;
  white-space: nowrap;
}

.summary-tab {
  flex: 0 0 auto;
  padding: 9px 13px;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-weight: 800;
}

.summary-tab.active {
  background: #0d5c59;
  color: #fff;
}

.summary-tab-panel {
  min-height: 0;
  overflow: hidden;
}

.summary-tab-panel.active {
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
  overflow: auto;
}

#limitsTab .summary-tab-panel.active .data-table {
  flex: 1 1 auto;
  height: var(--summary-table-height, min(72vh, 960px));
  max-height: none;
}

#quantitySummary table,
#planningSummary table {
  table-layout: fixed;
  min-width: 760px;
}

#quantitySummary th,
#quantitySummary td,
#planningSummary th,
#planningSummary td {
  height: 48px;
  min-height: 48px;
  padding: 12px 12px;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  line-height: 1.45;
  vertical-align: top;
}

.panel-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

h1,
h2 {
  margin: 0;
  color: #102b2a;
}

h1 { font-size: 24px; }
h2 { font-size: 19px; }

.curve-buttons {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.curve-button {
  min-width: 82px;
  height: 32px;
  padding: 0 14px;
  border: 1px solid #cbdcd7;
  border-radius: 8px;
  background: #f8fbfa;
  color: #415f5c;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}

.curve-button:hover {
  border-color: #88aaa2;
  background: #eef7f5;
}

.curve-button.active,
.curve-button[aria-pressed="true"] {
  border-color: #0d5c59;
  background: #0d5c59;
  color: #ffffff;
  box-shadow: 0 8px 18px rgba(13, 92, 89, 0.18);
}

.time-chart-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
  margin: 0 0 10px;
  overflow-x: auto;
  overflow-y: hidden;
  padding-bottom: 2px;
}

.weather-import-bar {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  flex: 1 1 auto;
  flex-wrap: nowrap;
  min-width: 0;
  margin: 0;
  overflow-x: auto;
  overflow-y: hidden;
}

.weather-import-bar label {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 6px;
  color: #405b58;
  font-size: 13px;
  font-weight: 800;
}

.weather-import-bar input {
  width: 118px;
  border: 1px solid #d7e4e0;
  border-radius: 10px;
  padding: 7px 8px;
  background: #f8fbfa;
  color: #172033;
}

#weatherLatitude,
#weatherLongitude,
#weatherYear {
  width: 94px;
}

#weatherPlace {
  width: 150px;
}

.weather-import-bar button {
  flex: 0 0 auto;
  padding: 8px 11px;
  border-radius: 10px;
  background: #edf4f2;
  color: #24413d;
  font-weight: 800;
}

.weather-import-status {
  flex: 0 0 auto;
  min-width: 86px;
  max-width: 150px;
  color: #5a716e;
  font-size: 13px;
  font-weight: 800;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.weather-import-status.error {
  color: #92352d;
}

.weather-import-status.ok {
  color: #0d5c59;
}

.curve-switch-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex: 0 0 auto;
  flex-wrap: nowrap;
  min-width: max-content;
  margin: 0 0 0 auto;
}

.curve-switch-row .curve-buttons,
.curve-switch-row #timeChartRange {
  flex-wrap: nowrap;
}

.curve-range-filter,
.time-chart-range {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  min-width: 0;
  padding: 5px 7px;
  border: 1px solid var(--control-border);
  border-radius: 8px;
  background: var(--hud-surface-soft);
  box-shadow: inset 0 0 14px rgba(24, 175, 255, 0.08);
  color: var(--hud-muted);
}

.curve-range-scope,
.time-chart-range-scope {
  display: inline-flex;
  gap: 4px;
  padding: 2px;
  border: 1px solid rgba(20, 190, 255, 0.24);
  border-radius: 7px;
  background: rgba(1, 14, 42, 0.48);
}

.curve-range-scope button,
.time-chart-range-scope button {
  height: 28px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--hud-muted-strong);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
  text-shadow: none;
  transition: border-color 0.16s ease, background 0.16s ease, color 0.16s ease;
}

.curve-range-scope button.active,
.time-chart-range-scope button.active {
  border-color: rgba(108, 238, 255, 0.42);
  background: rgba(33, 213, 255, 0.12);
  color: var(--hud-text);
  box-shadow: inset 0 0 10px rgba(24, 175, 255, 0.12);
}

.curve-range-scope button:disabled,
.time-chart-range-scope button:disabled {
  cursor: not-allowed;
  color: rgba(155, 184, 207, 0.58);
}

.curve-range-filter label,
.time-chart-range label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--hud-muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.curve-range-filter select,
.time-chart-range select {
  height: 30px;
  min-width: 74px;
  border: 1px solid rgba(20, 190, 255, 0.32);
  border-radius: 7px;
  background: var(--input-bg);
  color: var(--hud-text);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
  font-weight: 800;
}

.curve-range-filter select:disabled,
.time-chart-range select:disabled {
  opacity: 0.58;
}

.axis-range-controls {
  position: relative;
  z-index: 8;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
  margin: 0 0 8px;
  color: var(--hud-muted);
}

.curve-range-filter .axis-range-controls,
.annual-head-actions .axis-range-controls {
  margin: 0;
}

.green-chart-viewport > .axis-range-controls,
.safety-chart-viewport > .axis-range-controls,
.frequency-8760-curve-board > .axis-range-controls,
.frequency-time-curve-chart > .axis-range-controls,
.comparison-curve-chart > .axis-range-controls,
.optimization-curve-chart > .axis-range-controls {
  position: absolute;
  top: 8px;
  right: 10px;
  margin: 0;
}

.axis-range-panel {
  position: absolute;
  top: calc(100% + 6px);
  left: 0;
  z-index: 20;
  display: none;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  width: max-content;
  max-width: min(620px, calc(100vw - 48px));
  padding: 8px;
  border: 1px solid var(--control-border);
  border-radius: 8px;
  background: var(--hud-surface-soft);
  box-shadow: 0 12px 28px rgba(4, 18, 38, 0.18), inset 0 0 14px rgba(24, 175, 255, 0.08);
  color: var(--hud-muted);
}

.axis-range-controls:hover .axis-range-panel,
.axis-range-controls:focus-within .axis-range-panel {
  display: flex;
}

.axis-range-controls label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--hud-muted);
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.axis-range-controls input {
  width: 92px;
  height: 30px;
  border: 1px solid rgba(20, 190, 255, 0.32);
  border-radius: 7px;
  background: var(--input-bg);
  color: var(--hud-text);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
  font-weight: 800;
}

.axis-range-controls button {
  height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(20, 190, 255, 0.32);
  border-radius: 7px;
  background: rgba(33, 213, 255, 0.08);
  color: var(--hud-text);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.axis-range-toggle {
  min-width: 92px;
}

.annual-axis-range-controls {
  margin-bottom: 2px;
}

.annual-axis-range-controls fieldset {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.annual-axis-range-controls legend {
  margin: 0;
  padding: 0;
  color: var(--hud-muted);
  font-size: 12px;
  font-weight: 900;
  white-space: nowrap;
}

.map-picker-modal {
  position: fixed;
  inset: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  overflow: auto;
  background: rgba(13, 32, 38, 0.44);
}

.map-picker-modal[hidden] {
  display: none;
}

body.modal-open {
  overflow: hidden;
}

.map-picker-dialog {
  width: min(920px, 94vw);
  height: min(680px, 88vh);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 24px 70px rgba(13, 32, 38, 0.28);
}

.coordinate-picker-dialog {
  width: min(1120px, 96vw);
  height: min(820px, calc(100vh - 40px));
}

.load-generator-dialog {
  width: min(980px, 94vw);
  height: min(620px, calc(100vh - 48px));
  border: 1px solid var(--hud-cyan-border);
  background: var(--hud-panel-strong);
  box-shadow: var(--hud-shadow);
  color: var(--hud-text);
}

.time-series-import-dialog {
  width: min(1080px, 94vw);
  height: min(760px, calc(100vh - 48px));
  border: 1px solid var(--hud-cyan-border);
  background: var(--hud-panel-strong);
  box-shadow: var(--hud-shadow);
  color: var(--hud-text);
}

.load-generator-dialog .map-picker-head,
.load-generator-dialog .map-picker-foot,
.load-generator-dialog .load-generator-grid,
.time-series-import-dialog .map-picker-head,
.time-series-import-dialog .map-picker-foot,
.time-series-import-toolbar {
  border-color: rgba(20, 190, 255, 0.34);
  background: rgba(2, 18, 50, 0.72);
}

.load-generator-dialog .map-picker-head h2,
.time-series-import-dialog .map-picker-head h2 {
  color: var(--hud-text);
  text-shadow: 0 0 14px rgba(44, 183, 255, 0.62);
}

.map-picker-head,
.coordinate-control-row,
.coordinate-search-row,
.coordinate-weather-row,
.coordinate-map-hint,
.map-picker-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid #e5eeeb;
}

.coordinate-control-row {
  justify-content: flex-start;
  flex-wrap: nowrap;
  align-items: center;
  overflow-x: auto;
}

.coordinate-control-row .coordinate-search-row,
.coordinate-control-row .coordinate-weather-row {
  padding: 0;
  border-bottom: 0;
  background: transparent;
}

.coordinate-control-row .coordinate-search-row {
  flex: 0 0 auto;
}

.coordinate-control-row .coordinate-weather-row {
  flex: 1 1 auto;
  min-width: 0;
}

.map-provider-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-bottom: 1px solid #e5eeeb;
  background: #f6fbfa;
}

.curve-generator-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  border-bottom: 1px solid rgba(20, 190, 255, 0.34);
  background: rgba(2, 18, 50, 0.72);
}

.map-provider-tab {
  padding: 7px 14px;
  border: 1px solid #d7e4e0;
  border-radius: 10px;
  background: #edf4f2;
  color: #24413d;
  font-size: 13px;
  font-weight: 900;
}

.curve-generator-tab {
  min-width: 108px;
  height: 34px;
  padding: 0 14px;
  border: 1px solid rgba(20, 190, 255, 0.34);
  border-radius: 8px;
  background: rgba(2, 20, 48, 0.72);
  color: var(--hud-muted-strong);
  font-size: 13px;
  font-weight: 900;
  cursor: pointer;
}

.map-provider-tab.active {
  border-color: #21a8c7;
  background: #dff7fb;
  color: #0d5263;
}

.curve-generator-tab.active {
  border-color: rgba(108, 238, 255, 0.72);
  background: rgba(6, 62, 108, 0.78);
  color: var(--hud-text);
}

.map-provider-tab.disabled {
  opacity: 0.55;
}

.map-picker-foot {
  border-top: 1px solid #e5eeeb;
  border-bottom: 0;
}

.map-picker-head button,
.coordinate-header-actions button,
.coordinate-search-row button,
.coordinate-weather-row button,
.weather-preview-legend button,
.map-picker-foot button {
  padding: 8px 12px;
  border-radius: 10px;
  background: #edf4f2;
  color: #24413d;
  font-weight: 800;
}

.coordinate-search-row {
  justify-content: flex-start;
  flex-wrap: nowrap;
}

.coordinate-weather-row {
  justify-content: flex-start;
  flex-wrap: wrap;
  row-gap: 10px;
  background: #fbfdfc;
}

.load-generator-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 12px;
  padding: 14px;
  border-bottom: 1px solid #e5eeeb;
}

.time-series-import-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid #e5eeeb;
}

.time-series-import-chart-panel {
  display: flex;
  flex: 0 0 auto;
  flex-direction: column;
  min-height: 0;
  padding: 12px 14px 0;
  gap: 10px;
}

.time-series-import-chart-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}

.time-series-import-chart-head strong {
  flex: 0 0 auto;
  color: #dffbff;
  font-size: 14px;
  font-weight: 900;
  letter-spacing: 0;
  white-space: nowrap;
}

.time-series-import-curve-toggles {
  display: flex;
  flex: 1 1 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.time-series-import-curve-toggle {
  padding: 6px 10px;
  border: 1px solid rgba(20, 190, 255, 0.34);
  border-radius: 10px;
  background: rgba(8, 31, 67, 0.72);
  color: #9ed8ea;
  font-size: 12px;
  font-weight: 800;
}

.time-series-import-curve-toggle.active,
.time-series-import-curve-toggle[aria-pressed="true"] {
  border-color: #21d5ff;
  background: rgba(33, 213, 255, 0.16);
  color: #e9fdff;
}

.time-series-import-curve-toggle:hover,
.time-series-import-curve-toggle:focus-visible {
  border-color: #74ecff;
  color: #ffffff;
}

.time-series-import-chart {
  width: 100%;
  height: var(--time-series-import-chart-height, clamp(180px, 24vh, 280px));
  display: block;
  border: 1px solid rgba(20, 190, 255, 0.28);
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(9, 26, 61, 0.78), rgba(5, 14, 34, 0.94));
  cursor: crosshair;
  user-select: none;
  touch-action: none;
}

.time-series-import-chart.editing {
  cursor: ns-resize;
}

.time-series-import-resize-handle {
  flex: 0 0 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 2px 4px 6px;
  border-radius: 999px;
  cursor: row-resize;
  touch-action: none;
}

.time-series-import-resize-handle::before {
  content: "";
  width: 96px;
  height: 4px;
  border-radius: 999px;
  background: rgba(161, 221, 233, 0.68);
}

.time-series-import-resize-handle:hover::before,
.time-series-import-resize-handle.dragging::before,
.time-series-import-resize-handle:focus-visible::before {
  background: #21d5ff;
}

.time-series-import-resize-handle:focus-visible {
  outline: 2px solid #74ecff;
  outline-offset: 2px;
}

.coordinate-search-row label,
.coordinate-weather-row label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #405b58;
  font-size: 13px;
  font-weight: 800;
}

.load-generator-grid label {
  display: grid;
  gap: 6px;
  color: #405b58;
  font-size: 13px;
  font-weight: 800;
}

.coordinate-search-row input {
  width: 220px;
  border: 1px solid #d7e4e0;
  border-radius: 10px;
  padding: 7px 8px;
  background: #f8fbfa;
  color: #172033;
}

.coordinate-weather-row input {
  width: 94px;
  border: 1px solid #d7e4e0;
  border-radius: 10px;
  padding: 7px 8px;
  background: #f8fbfa;
  color: #172033;
}

.coordinate-weather-row .weather-import-status {
  flex: 1 1 160px;
  min-width: 140px;
  max-width: none;
}

.coordinate-map-hint {
  justify-content: flex-start;
  padding-block: 8px;
  color: #5a716e;
  font-size: 13px;
  font-weight: 800;
}

.coordinate-picker-dialog .map-picker-canvas {
  flex: 1 1 42%;
  min-height: 180px;
}

.weather-preview-panel {
  flex: 0 0 var(--weather-preview-panel-height, clamp(190px, 25vh, 280px));
  display: flex;
  flex-direction: column;
  min-height: 0;
  gap: 10px;
  padding: 10px 14px;
  border-top: 1px solid #e5eeeb;
  background: #fbfdfc;
}

.weather-preview-resize-handle {
  flex: 0 0 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: row-resize;
  touch-action: none;
}

.weather-preview-resize-handle::before {
  content: "";
  width: 96px;
  height: 4px;
  border-radius: 999px;
  background: rgba(120, 154, 148, 0.58);
}

.weather-preview-resize-handle:hover::before,
.weather-preview-resize-handle.dragging::before,
.weather-preview-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.weather-preview-resize-handle:focus-visible {
  outline: 2px solid #21a8c7;
  outline-offset: 2px;
}

.weather-preview-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}

.weather-preview-head strong {
  color: #102b2a;
  font-size: 14px;
  font-weight: 900;
  white-space: nowrap;
}

.weather-preview-legend {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}

.weather-preview-legend button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  font-size: 12px;
}

.weather-preview-legend button span {
  width: 16px;
  height: 3px;
  border-radius: 999px;
  background: var(--curve-color, #21d5ff);
}

.weather-preview-legend button.active,
.weather-preview-legend button[aria-pressed="true"] {
  border-color: #0d5c59;
  background: #0d5c59;
  color: #ffffff;
}

.weather-preview-chart {
  flex: 1 1 auto;
  width: 100%;
  min-height: 120px;
  border: 1px solid #d7e4e0;
  border-radius: 12px;
  background: linear-gradient(180deg, #f9fcfb, #edf6f3);
}

.weather-preview-stats {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  min-height: 34px;
  color: #405b58;
}

.weather-preview-stat-empty {
  grid-column: 1 / -1;
  align-self: center;
  color: #5a716e;
  font-size: 12px;
  font-weight: 800;
}

.weather-preview-stat-item {
  min-width: 0;
  display: grid;
  grid-template-columns: auto repeat(3, minmax(0, 1fr));
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  border: 1px solid #d7e4e0;
  border-left: 4px solid var(--curve-color, #21d5ff);
  border-radius: 10px;
  background: rgba(248, 251, 250, 0.88);
  font-size: 12px;
  font-weight: 800;
}

.weather-preview-stat-item strong,
.weather-preview-stat-item span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.weather-preview-stat-item strong {
  color: #102b2a;
}

.coordinate-header-actions {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
}

.load-generator-grid input,
.load-generator-grid select {
  width: 100%;
  border: 1px solid #d7e4e0;
  border-radius: 10px;
  padding: 8px;
  background: #f8fbfa;
  color: #172033;
}

.load-generator-preview {
  flex: 1 1 auto;
  min-height: min(240px, 32vh);
  width: calc(100% - 28px);
  margin: 14px;
  border: 1px solid #d7e4e0;
  border-radius: 12px;
  background: linear-gradient(180deg, #f9fcfb, #edf6f3);
  cursor: crosshair;
  touch-action: none;
  user-select: none;
}

.load-generator-preview.editing {
  cursor: ns-resize;
}

.time-series-import-preview {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  width: calc(100% - 28px);
  margin: 14px;
}

.time-series-import-preview table {
  min-width: 760px;
}

.time-series-import-preview .empty-summary {
  min-height: 220px;
}

.map-picker-canvas {
  flex: 1 1 auto;
  min-height: 360px;
  background: #edf4f2;
}

.amap-tile-map {
  position: relative;
  overflow: hidden;
  cursor: grab;
  user-select: none;
  touch-action: none;
}

.amap-tile-map.dragging {
  cursor: grabbing;
}

.amap-tile-layer {
  position: absolute;
  inset: 0;
  overflow: hidden;
}

.amap-map-tile {
  position: absolute;
  width: 256px;
  height: 256px;
  max-width: none;
  pointer-events: none;
  user-select: none;
}

.amap-coordinate-marker {
  position: absolute;
  z-index: 3;
  width: 24px;
  height: 36px;
  pointer-events: none;
}

.amap-coordinate-marker::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  width: 20px;
  height: 20px;
  transform: translateX(-50%) rotate(45deg);
  border: 2px solid #ffffff;
  border-radius: 14px 14px 14px 2px;
  background: #d93535;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
}

.amap-coordinate-marker span {
  position: absolute;
  left: 50%;
  top: 7px;
  width: 7px;
  height: 7px;
  transform: translateX(-50%);
  border-radius: 50%;
  background: #ffffff;
}

.amap-map-controls {
  position: absolute;
  right: 12px;
  top: 12px;
  z-index: 4;
  display: grid;
  gap: 6px;
}

.amap-map-controls button {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(13, 82, 99, 0.28);
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.92);
  color: #0d5263;
  font-size: 18px;
  font-weight: 900;
  box-shadow: 0 8px 20px rgba(16, 43, 42, 0.16);
}

.amap-map-attribution {
  position: absolute;
  right: 12px;
  bottom: 10px;
  z-index: 4;
  padding: 3px 7px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.82);
  color: #405b58;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.3;
  box-shadow: 0 5px 14px rgba(16, 43, 42, 0.12);
}

#mapPickerHint {
  color: #405b58;
  font-size: 13px;
  font-weight: 800;
}

#loadGeneratorHint.error {
  color: #c2362b;
}

#loadGeneratorHint.ok {
  color: #1b7c4d;
}

#loadGeneratorHint.warning {
  color: #ffd27a;
}

#timeSeriesImportHint.error {
  color: #ff9b9b;
}

#timeSeriesImportHint.ok {
  color: #8df5cf;
}

#timeSeriesImportHint.warning {
  color: #ffd27a;
}

.time-chart {
  width: 100%;
  height: var(--time-chart-height, clamp(180px, 28vh, 300px));
  display: block;
  background: linear-gradient(180deg, #f9fcfb, #edf6f3);
  border-radius: 18px;
  cursor: crosshair;
  touch-action: none;
  user-select: none;
}

.time-chart.editing {
  cursor: ns-resize;
}

.time-resize-handle {
  flex: 0 0 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 2px 4px 8px;
  border-radius: 999px;
  cursor: row-resize;
  touch-action: none;
}

.time-resize-handle::before {
  content: "";
  width: 92px;
  height: 4px;
  border-radius: 999px;
  background: #9db4ae;
}

.time-resize-handle:hover::before,
.time-resize-handle.dragging::before,
.time-resize-handle:focus-visible::before {
  background: #0d5c59;
}

.time-resize-handle:focus-visible {
  outline: 2px solid #72b7ad;
  outline-offset: 2px;
}

.chart-tip {
  position: absolute;
  z-index: 40;
  max-width: min(220px, calc(100vw - 24px));
  padding: 8px 10px;
  border: 1px solid var(--chart-tooltip-border, rgba(33, 213, 255, 0.52));
  border-radius: 10px;
  color: var(--chart-tooltip-text, #fff);
  background: var(--chart-tooltip-bg, rgba(11, 39, 38, 0.92));
  box-shadow: var(--chart-tooltip-shadow, 0 0 24px rgba(0, 166, 255, 0.24));
  pointer-events: none;
  font-size: 12px;
  white-space: nowrap;
}

.chart-cursor line {
  stroke: #173f3b;
  stroke-width: 1.5;
  stroke-dasharray: 4 4;
}

.chart-cursor circle {
  stroke: #fff;
  stroke-width: 2;
}

.histogram-bar {
  cursor: crosshair;
}

.pager {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #405b58;
  font-weight: 800;
}

.time-table-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: nowrap;
  margin-bottom: 12px;
  min-width: 0;
}

.page-info {
  flex: 0 0 auto;
  margin-left: auto;
  color: #405b58;
  font-weight: 800;
  text-align: right;
  white-space: nowrap;
}

.month-tabs {
  display: flex;
  justify-content: flex-start;
  gap: 8px;
  flex: 1 1 auto;
  min-width: 0;
  overflow-x: auto;
  padding: 2px 0;
  white-space: nowrap;
}

.month-tab {
  flex: 0 0 auto;
  padding: 8px 11px;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-weight: 800;
}

.month-tab.active {
  background: #0d5c59;
  color: #fff;
}

.data-table {
  overflow: auto;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  max-height: var(--panel-table-max-height, min(62vh, 680px));
}

.comparison-curve-chart > .annual-stat-table,
.optimization-curve-chart > .annual-stat-table {
  max-height: none;
}

#timeTab .chart-card {
  position: relative;
  flex: 0 0 auto;
  margin-bottom: 0;
}

#timeTab.tab-panel.active {
  overflow: hidden;
}

#timeTab .table-card {
  flex: 1 1 0;
  min-height: 0;
  height: 100%;
  display: flex;
  flex-direction: column;
  margin-bottom: 0;
}

#timeTab #timeTable {
  flex: 1 1 auto;
  min-height: 0;
  height: var(--time-table-height, clamp(220px, 38vh, 520px));
  max-height: none;
}

#devicesTab .device-filter-card {
  flex: 0 0 auto;
  margin-bottom: 12px;
}

#planningTab .planning-parameters-card {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  margin-bottom: 0;
}

#planningTab #planningParametersTable {
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.planning-parameter-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
  height: 100%;
  overflow: hidden;
}

.planning-parameter-grid.summary {
  height: auto;
  gap: 12px;
  align-items: start;
}

.planning-parameter-tabs {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding: 0;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}

.planning-parameter-tab {
  min-width: 132px;
  height: 36px;
  padding: 0 14px;
  border: 1px solid #cadeda;
  border-radius: 8px 8px 0 0;
  background: #eef6f4;
  color: #335b56;
  font-size: 13px;
  font-weight: 900;
  cursor: pointer;
}

.planning-parameter-tab.active {
  border-color: #0d5c59;
  background: #0d5c59;
  color: #fff;
}

.planning-parameter-panel {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: flex;
}

.planning-parameter-group {
  min-width: 0;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
  overflow: auto;
  border: 1px solid #d7e6e2;
  border-radius: 8px;
  background: #fff;
}

.planning-parameter-group h3 {
  position: sticky;
  top: 0;
  z-index: 2;
  margin: 0;
  padding: 9px 10px;
  display: flex;
  align-items: center;
  gap: 10px;
  border-bottom: 1px solid #d7e6e2;
  background: #e8f4f1;
  color: #24413d;
  font-size: 13px;
  font-weight: 900;
}

.planning-parameter-group h3 span {
  min-width: 0;
}

.planning-parameter-group-status {
  margin-left: auto;
  color: #607c77;
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.planning-parameter-group.disabled {
  opacity: 0.62;
}

.planning-parameter-group.disabled td input,
.planning-parameter-group.disabled td select {
  cursor: not-allowed;
}

.planning-parameter-switch {
  flex: 0 0 auto;
  position: relative;
  width: 42px;
  height: 22px;
}

.planning-parameter-switch input {
  position: absolute;
  opacity: 0;
  inset: 0;
  margin: 0;
  cursor: pointer;
}

.planning-parameter-switch span {
  position: absolute;
  inset: 0;
  border: 1px solid #9bb8b2;
  border-radius: 999px;
  background: #d9e7e3;
  transition: background 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease;
}

.planning-parameter-switch span::before {
  content: "";
  position: absolute;
  width: 16px;
  height: 16px;
  left: 2px;
  top: 2px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
  transition: transform 0.16s ease;
}

.planning-parameter-switch input:checked + span {
  border-color: #0d5c59;
  background: #0d5c59;
}

.planning-parameter-switch input:checked + span::before {
  transform: translateX(20px);
}

.planning-parameter-group table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
}

.planning-parameter-name-col {
  width: 42%;
}

.planning-parameter-value-col {
  width: 24%;
}

.planning-parameter-range-col {
  width: 34%;
}

.planning-parameter-group th,
.planning-parameter-group td {
  padding: 7px 8px;
  white-space: normal;
  overflow-wrap: anywhere;
  vertical-align: middle;
}

.planning-parameter-group th {
  top: 35px;
}

#devicesTab .device-card:last-child,
#planningTab .planning-parameters-card:last-child,
#limitsTab .summary-section:last-child {
  margin-bottom: 0;
}

table {
  width: 100%;
  border-collapse: collapse;
  min-width: 720px;
  background: #fff;
}

th,
td {
  border-bottom: 1px solid #e5eeeb;
  padding: 8px 10px;
  text-align: left;
  white-space: nowrap;
}

th {
  position: sticky;
  top: 0;
  background: #eff7f4;
  color: #294944;
  z-index: 1;
}

td input,
td select {
  width: 100%;
  min-width: 80px;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 7px 8px;
  background: #f8fbfa;
  color: #172033;
}

td input:focus,
td select:focus {
  outline: 2px solid #72b7ad;
  background: #fff;
}

td input[type="checkbox"] {
  width: auto;
  min-width: 0;
}

.planning-bool-select {
  width: 108px;
  min-width: 108px;
  font-weight: 800;
}

.planning-parameters-table table {
  min-width: 760px;
}

.planning-parameters-table .planning-parameter-group table {
  min-width: 0;
}

.switch-cell {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #24413d;
  font-weight: 800;
}

.device-filter-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: nowrap;
  overflow: hidden;
  padding-bottom: 2px;
}

.device-jump {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  flex: 1 1 auto;
  flex-wrap: nowrap;
  min-width: 0;
  margin-left: auto;
  overflow-x: auto;
}

.device-filters {
  display: flex;
  gap: 10px;
  flex: 0 0 auto;
  flex-wrap: nowrap;
}

.device-filter {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 7px;
  padding: 8px 11px;
  border-radius: 999px;
  background: #e7f2ef;
  color: #0d5c59;
  font-weight: 800;
}

.filter-hint {
  color: #5a716e;
  font-size: 13px;
  font-weight: 700;
}

.device-jump a {
  flex: 0 0 auto;
  padding: 8px 11px;
  border-radius: 999px;
  color: #0d5c59;
  background: #e7f2ef;
  text-decoration: none;
  font-weight: 800;
}

.delete-row {
  padding: 7px 10px;
  border-radius: 10px;
  color: #92352d;
  background: #fdecea;
}

.overview-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(140px, 1fr));
  gap: 12px;
}

.overview-item {
  display: grid;
  gap: 6px;
  min-height: 86px;
  padding: 14px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.overview-item span,
.histogram-head span,
.histogram-meta {
  color: #5a716e;
  font-size: 13px;
  font-weight: 700;
}

.overview-item strong {
  color: #102b2a;
  font-size: 22px;
}

.histogram-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(260px, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 14px;
  height: var(--summary-histogram-grid-height, min(72vh, 960px));
  min-height: 0;
  overflow: auto;
}

.histogram-panel {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 12px;
  border: 1px solid #d7e4e0;
  border-radius: 16px;
  background: #f8fbfa;
}

.histogram-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

.histogram-head strong {
  color: #102b2a;
}

.histogram-svg {
  width: 100%;
  height: var(--summary-histogram-svg-height, 180px);
  min-height: 110px;
  flex: 1 1 auto;
  display: block;
}

.histogram-meta {
  margin-top: 8px;
}

.empty-summary {
  padding: 14px;
  color: #5a716e;
  background: #f8fbfa;
}

.status-ok {
  color: #215f3c;
  font-weight: 800;
}

.status-error {
  color: #92352d;
  font-weight: 800;
}

.validation-item {
  padding: 10px;
  border-radius: 12px;
  background: #eef7f4;
  color: #294944;
}

.validation-item.error {
  background: #fdecea;
  color: #92352d;
}

.validation-item.warning {
  background: #fff4d6;
  color: #7a4e00;
}

.validation-item.ok {
  background: #e8f6ef;
  color: #215f3c;
}

@media (max-width: 1100px) {
  body {
    height: auto;
    min-height: 100vh;
    overflow: auto;
  }
  .planning-shell {
    height: auto;
    min-height: 100vh;
    grid-template-rows: auto 1fr;
    overflow: visible;
  }
  .topbar { align-items: flex-start; flex-direction: column; padding: 16px; }
  .editor-header { align-items: flex-start; flex-direction: column; }
  .current-scheme-panel { justify-content: flex-start; }
  .scheme-actions { justify-content: flex-end; margin-left: 0; width: 100%; }
  .current-scheme { text-align: left; }
  .workspace {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    overflow: visible;
  }
  .workspace > .scheme-rail,
  .workspace > .summary-rail,
  .workspace > .editor-panel,
  .workspace > .scheme-list-resize-handle,
  .optimization-workspace > .scheme-rail,
  .optimization-workspace > .optimization-panel {
    grid-column: 1;
    grid-row: auto;
  }
  .optimization-panel {
    min-height: 76vh;
    grid-template-rows: max-content minmax(420px, 1fr);
    overflow: visible;
  }
  .optimization-status-grid,
  .optimization-overview-grid,
  .optimization-result-layout,
  .green-result-layout,
  .safety-result-layout {
    grid-template-columns: 1fr;
  }
  .result-column-resize-handle {
    display: none;
  }
  .frequency-metrics-layout,
  .frequency-time-result-layout {
    grid-template-columns: minmax(220px, var(--frequency-metrics-table-width, 340px)) 10px minmax(320px, 1fr);
    overflow-x: auto;
  }
  .frequency-time-result-layout {
    grid-template-columns: minmax(220px, var(--frequency-time-info-width, 340px)) 10px minmax(320px, 1fr);
  }
  .frequency-metrics-layout > .result-column-resize-handle,
  .frequency-time-result-layout > .result-column-resize-handle {
    display: block;
  }
  .overview-column-resize-handle {
    display: none;
  }
  .evaluation-main-resize-handle {
    display: none;
  }
  .evaluation-workspace > .scheme-rail,
  .evaluation-workspace > .evaluation-result-rail,
  .evaluation-workspace > .optimization-panel {
    grid-column: 1;
    grid-row: auto;
  }
  .optimization-command-row {
    align-items: flex-start;
    flex-direction: column;
  }
  .planning-command-card {
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .planning-command-card .tabs {
    width: 100%;
  }
  .planning-command-card .scheme-actions {
    width: auto;
    margin-left: auto;
  }
  .optimization-current-scheme {
    margin-left: 0;
    text-align: left;
  }
  .editor-panel {
    min-height: 70vh;
  }
  .overview-grid,
  .histogram-grid,
  .annual-comparison-grid { grid-template-columns: 1fr; }
  .histogram-grid {
    grid-template-rows: none;
    height: auto;
    max-height: none;
  }
  .annual-comparison-grid {
    grid-template-rows: none;
    height: auto;
  }
  .annual-grid-resizer {
    display: none;
  }
  .scheme-rail,
  .summary-rail { max-height: none; }
  .weather-import-bar {
    flex-wrap: wrap;
    overflow-x: visible;
  }
}

/* Dark HUD theme aligned with the main dashboard. */
:root {
  --hud-cyan: #21d5ff;
  --hud-cyan-soft: rgba(33, 213, 255, 0.14);
  --hud-cyan-border: rgba(20, 190, 255, 0.64);
  --hud-blue: #4f8cff;
  --hud-green: #41e39b;
  --hud-yellow: #ffd166;
  --hud-red: #ff6b6b;
  --hud-text: #eff8ff;
  --hud-muted: #9bb8cf;
  --hud-muted-strong: #bdeaff;
  --hud-panel:
    radial-gradient(circle at 50% 0%, rgba(36, 210, 255, 0.13), transparent 46%),
    linear-gradient(180deg, rgba(3, 35, 84, 0.78), rgba(1, 14, 42, 0.92));
  --hud-panel-strong:
    radial-gradient(circle at 50% 0%, rgba(36, 210, 255, 0.18), transparent 48%),
    linear-gradient(180deg, rgba(3, 50, 112, 0.86), rgba(2, 18, 50, 0.96));
  --hud-surface: rgba(4, 20, 48, 0.82);
  --hud-surface-soft: rgba(8, 40, 80, 0.58);
  --hud-line: rgba(20, 190, 255, 0.34);
  --hud-line-bright: rgba(47, 221, 255, 0.78);
  --hud-shadow:
    inset 0 0 0 1px rgba(69, 223, 255, 0.14),
    inset 0 0 34px rgba(0, 143, 255, 0.18),
    0 0 28px rgba(0, 166, 255, 0.22),
    0 18px 60px rgba(0, 8, 28, 0.38);
  --hud-shadow-soft:
    inset 0 0 0 1px rgba(69, 223, 255, 0.08),
    0 12px 34px rgba(0, 8, 28, 0.28);
  --hud-inner-surface: rgba(4, 20, 48, 0.42);
  --hud-inner-line: rgba(20, 190, 255, 0.18);
  --chart-tooltip-bg: rgba(2, 13, 32, 0.94);
  --chart-tooltip-text: var(--hud-text);
  --chart-tooltip-muted: var(--hud-muted);
  --chart-tooltip-strong: #ffffff;
  --chart-tooltip-border: rgba(33, 213, 255, 0.52);
  --chart-tooltip-shadow: 0 0 24px rgba(0, 166, 255, 0.28);
}

body {
  color: var(--hud-text);
  background-color: #030b18;
  background-image:
    linear-gradient(180deg, rgba(0, 16, 45, 0.44), rgba(0, 10, 30, 0.76) 62%, rgba(0, 7, 20, 0.9)),
    radial-gradient(circle at 50% 43%, rgba(13, 116, 204, 0.32), transparent 44%),
    linear-gradient(90deg, rgba(2, 10, 22, 0.88), rgba(2, 10, 22, 0.28) 24%, rgba(2, 10, 22, 0.38) 76%, rgba(2, 10, 22, 0.88)),
    url("main-dashboard-bg.png?v=20260513-bg-refresh");
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  background-attachment: fixed;
}

.topbar {
  background:
    linear-gradient(90deg, rgba(3, 18, 39, 0.9), rgba(5, 34, 70, 0.68), rgba(3, 18, 39, 0.9));
  border-bottom-color: var(--hud-cyan-border);
  box-shadow:
    inset 0 -1px 0 rgba(47, 221, 255, 0.28),
    0 8px 28px rgba(0, 12, 32, 0.42);
}

.brand {
  color: var(--hud-text);
  text-shadow: 0 0 16px rgba(44, 183, 255, 0.78);
}

.main-nav a,
.main-nav button,
.primary,
.tab,
.scheme-actions button,
.evaluation-result-action-buttons button,
.log-view-tab,
.comparison-add-tab,
.comparison-tab-head button,
.pager button,
.add-row,
.month-tab,
.summary-tab,
.result-tab,
.device-filter,
.device-jump a,
.curve-button,
.weather-import-bar button,
.time-series-import-toolbar button,
.map-picker-head button,
.coordinate-search-row button,
.coordinate-weather-row button,
.weather-preview-legend button,
.coordinate-weather-actions button,
.map-picker-foot button,
.annual-view-toggle,
.task-actions button:not(.primary):not(.danger) {
  border: 1px solid rgba(21, 211, 255, 0.48);
  border-radius: 8px;
  background: linear-gradient(180deg, rgba(5, 34, 70, 0.72), rgba(4, 19, 42, 0.62));
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 16px rgba(24, 175, 255, 0.16);
  text-shadow: 0 0 10px rgba(44, 183, 255, 0.34);
}

.main-nav .active,
.primary,
.scheme-actions .primary,
.month-tab.active,
.summary-tab.active,
.result-tab.active,
.log-view-tab.active,
.tab.active,
.comparison-tab.active,
.curve-button.active,
.curve-button[aria-pressed="true"],
.annual-view-toggle.active {
  border-color: rgba(108, 238, 255, 0.94);
  background:
    radial-gradient(circle at 50% 0%, rgba(44, 225, 255, 0.28), transparent 48%),
    linear-gradient(180deg, rgba(4, 76, 140, 0.86), rgba(3, 34, 86, 0.82));
  color: #ffffff;
  box-shadow:
    inset 0 0 22px rgba(24, 175, 255, 0.48),
    0 0 28px rgba(0, 190, 255, 0.3);
}

.main-nav a:hover,
.main-nav button:hover:not(:disabled),
.tab:hover,
.scheme-actions button:hover:not(:disabled),
.evaluation-result-action-buttons button:hover:not(:disabled),
.log-view-tab:hover,
.comparison-add-tab:hover:not(:disabled),
.comparison-tab-head button:hover,
.pager button:hover:not(:disabled),
.add-row:hover,
.month-tab:hover,
.summary-tab:hover,
.result-tab:hover,
.device-filter:hover,
.device-jump a:hover,
.curve-button:hover,
.weather-import-bar button:hover,
.time-series-import-toolbar button:hover,
.map-picker-head button:hover,
.coordinate-header-actions button:hover,
.coordinate-search-row button:hover,
.coordinate-weather-row button:hover,
.weather-preview-legend button:hover,
.map-picker-foot button:hover,
.annual-view-toggle:hover,
.annual-view-toggle:focus-visible {
  border-color: rgba(108, 238, 255, 0.94);
  color: #ffffff;
  box-shadow:
    inset 0 0 22px rgba(24, 175, 255, 0.42),
    0 0 24px rgba(0, 190, 255, 0.24);
}

.danger,
.delete-row {
  border-color: rgba(255, 107, 107, 0.55) !important;
  background: linear-gradient(180deg, rgba(108, 32, 48, 0.8), rgba(54, 14, 30, 0.68)) !important;
  color: #ffd6d6 !important;
}

.workspace {
  background: transparent;
}

.scheme-rail,
.summary-rail,
.editor-panel,
.optimization-panel,
.comparison-panel,
.comparison-tab-bar,
.tasks-panel {
  color: var(--hud-text);
  border-color: rgba(20, 190, 255, 0.42);
  border-radius: 10px;
  background: var(--hud-panel);
  box-shadow: var(--hud-shadow-soft);
  backdrop-filter: blur(6px);
}

.evaluation-result-rail,
.evaluation-planning-result-panel,
.comparison-tab,
.comparison-table-card,
.comparison-curve-board,
.comparison-curve-stats section,
.chart-card,
.table-card,
.device-card,
.device-filter-card,
.planning-parameters-card,
.optimization-command-card,
.optimization-result-card,
.optimization-log-card,
.summary-section,
.overview-table-card,
.composition-bar-card,
.green-chart-card,
.safety-chart-card,
.annual-comparison-card,
.mini-bar-chart,
.overview-item,
.histogram-panel,
.status-tile {
  color: var(--hud-text);
  border-color: var(--hud-inner-line);
  border-radius: 8px;
  background: var(--hud-inner-surface);
  box-shadow: none;
  backdrop-filter: none;
}

.editor-header {
  border-bottom-color: rgba(20, 190, 255, 0.28);
  background:
    linear-gradient(90deg, rgba(3, 18, 39, 0.72), rgba(5, 34, 70, 0.42), rgba(3, 18, 39, 0.66));
}

.rail-title,
.scheme-list-title,
.optimization-log-title,
.evaluation-planning-result-title,
.comparison-tab-head strong,
.comparison-table-card h2,
.comparison-curve-title,
.comparison-curve-stats strong,
.annual-comparison-head h3,
.panel-heading h1,
.panel-heading h2,
h1,
h2,
.overview-table-card h2,
.composition-bar-card h2,
.histogram-head strong {
  color: var(--hud-text);
  text-shadow: 0 0 14px rgba(44, 183, 255, 0.62);
}

.current-scheme,
.optimization-current-scheme,
.page-info,
.pager,
.weather-import-bar label,
.load-generator-grid label,
.coordinate-search-row label,
.coordinate-weather-row label,
.weather-import-status,
.coordinate-map-hint,
.filter-hint,
.overview-item span,
.histogram-head span,
.histogram-meta,
.annual-comparison-head span,
.annual-comparison-legend,
.tasks-toolbar p,
.task-empty,
.composition-bar-summary,
.composition-bar-legend,
.status-tile span,
#mapPickerHint,
#timeSeriesImportHint,
#timeSeriesImportSummary,
#loadGeneratorHint {
  color: var(--hud-muted);
}

.composition-bar-summary span,
.composition-bar-summary-label,
.composition-bar-percent,
.composition-bar-legend div {
  color: var(--hud-muted-strong);
}

.current-scheme strong,
.weather-import-status.ok,
.status-ok,
.status-tile strong,
.task-status-pill.running,
.overview-item strong,
.composition-bar-summary strong,
.composition-bar-legend strong {
  color: var(--hud-cyan);
}

.composition-bar-segment.secondary span,
.composition-bar-segment.segment-2 span {
  color: #ffffff;
  text-shadow: none;
}

.time-series-import-chart text,
.load-generator-preview text,
#timeChart text,
.histogram-svg text {
  fill: var(--hud-muted-strong);
}

.task-status-pill.running {
  border: 1px solid rgba(96, 255, 185, 0.42);
  background: rgba(21, 144, 109, 0.24);
}

.task-status-pill.queued {
  border: 1px solid rgba(255, 210, 95, 0.44);
  background: rgba(150, 102, 20, 0.22);
  color: #ffe3a3;
}

.task-status-pill.dequeued {
  border: 1px solid rgba(150, 198, 232, 0.34);
  background: rgba(75, 105, 130, 0.22);
  color: #ccecff;
}

.task-status-pill.completed {
  border: 1px solid rgba(96, 255, 185, 0.42);
  background: rgba(21, 144, 109, 0.2);
  color: #a5ffd3;
}

.task-status-pill.interrupted {
  border: 1px solid rgba(255, 173, 96, 0.34);
  background: rgba(150, 82, 34, 0.2);
  color: #ffc096;
}

.task-status-pill.failed {
  border: 1px solid rgba(255, 119, 132, 0.36);
  background: rgba(146, 38, 54, 0.22);
  color: #ffb3bd;
}

.task-status-pill.timeout {
  border: 1px solid rgba(205, 159, 255, 0.34);
  background: rgba(92, 55, 132, 0.22);
  color: #d7b8ff;
}

.task-status-pill.idle {
  border: 1px solid rgba(189, 234, 255, 0.24);
  background: rgba(104, 128, 152, 0.18);
  color: rgba(189, 234, 255, 0.76);
}

.scheme-item,
.curve-group-tab,
.validation-item,
.empty-summary {
  border: 1px solid rgba(20, 190, 255, 0.24);
  background: linear-gradient(180deg, rgba(5, 34, 70, 0.56), rgba(4, 19, 42, 0.54));
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 16px rgba(24, 175, 255, 0.1);
}

.curve-group-tabs {
  background: var(--hud-surface);
}

.scheme-item {
  border-width: 0 0 1px 0;
  border-bottom-color: rgba(20, 190, 255, 0.18);
  background: transparent;
  box-shadow: none;
}

.scheme-item.active {
  border-color: rgba(20, 190, 255, 0.18);
  background: transparent;
  color: #ffffff;
  box-shadow: none;
}

.scheme-list-items::before,
.scheme-item::before {
  background: rgba(33, 213, 255, 0.34);
}

.scheme-item::after {
  border-color: rgba(33, 213, 255, 0.58);
  background: rgba(4, 20, 48, 0.96);
  box-shadow: 0 0 0 2px rgba(4, 20, 48, 0.86);
}

.scheme-item.active::before,
.scheme-item:hover::before,
.scheme-item:focus-visible::before {
  background: var(--hud-cyan);
}

.scheme-item.active::after {
  border-color: var(--hud-cyan);
  background: var(--hud-cyan);
  box-shadow: 0 0 0 3px rgba(33, 213, 255, 0.16);
}

.scheme-tree-caret {
  color: var(--hud-cyan);
}

.scheme-tree-caret:hover,
.scheme-tree-parent:focus-visible .scheme-tree-caret {
  background: rgba(33, 213, 255, 0.12);
}

.scheme-result-list::before,
.scheme-result-item::before,
.scheme-result-empty::before {
  background: rgba(33, 213, 255, 0.24);
}

.scheme-result-item,
.scheme-result-empty {
  border-bottom-color: rgba(20, 190, 255, 0.12);
  color: var(--hud-muted-strong);
}

.scheme-result-item::after {
  border-color: rgba(33, 213, 255, 0.52);
  background: rgba(4, 20, 48, 0.96);
}

.scheme-result-item:hover,
.scheme-result-item:focus-visible {
  background: rgba(33, 213, 255, 0.1);
  color: #ffffff;
}

.scheme-result-item.active {
  color: #ffffff;
}

.scheme-result-item.active::before,
.scheme-result-item:hover::before,
.scheme-result-item:focus-visible::before,
.scheme-result-item.active::after {
  border-color: var(--hud-cyan);
  background: var(--hud-cyan);
}

.curve-group-tab.active {
  border-color: rgba(108, 238, 255, 0.9);
  background:
    radial-gradient(circle at 0 0, rgba(44, 225, 255, 0.22), transparent 50%),
    linear-gradient(180deg, rgba(4, 76, 140, 0.78), rgba(3, 34, 86, 0.82));
  color: #ffffff;
  box-shadow:
    inset 0 0 18px rgba(24, 175, 255, 0.42),
    0 0 20px rgba(0, 190, 255, 0.24);
}

.scheme-item:hover,
.scheme-item:focus-visible,
.curve-group-tab:hover,
.curve-group-tab:focus-visible {
  border-color: rgba(108, 238, 255, 0.72);
  background: rgba(33, 213, 255, 0.12);
  color: #ffffff;
  box-shadow:
    inset 0 0 14px rgba(24, 175, 255, 0.24),
    0 0 18px rgba(0, 190, 255, 0.16);
}

.scheme-item:hover,
.scheme-item:focus-visible {
  border-left-color: var(--hud-cyan);
}

.validation-item.ok {
  border-color: rgba(65, 227, 155, 0.5);
  background: rgba(18, 82, 70, 0.52);
  color: #a5ffd3;
}

.validation-item.error,
.weather-import-status.error,
.status-error {
  color: #ffb3b3;
}

.validation-item.error {
  border-color: rgba(255, 107, 107, 0.5);
  background: rgba(88, 30, 42, 0.58);
}

.data-table,
.task-table,
.comparison-table,
.annual-stat-table,
.optimization-overview-table,
.green-result-table,
.safety-result-table,
.optimization-result-table {
  border-color: var(--hud-inner-line);
  background: rgba(4, 18, 42, 0.34);
  box-shadow: none;
}

table {
  background: transparent;
  color: var(--hud-text);
}

th {
  background: rgba(5, 34, 70, 0.58);
  color: #bdeaff;
}

th,
td {
  border-bottom-color: rgba(20, 190, 255, 0.14);
}

td {
  color: #dceaff;
}

td input,
td select,
.weather-import-bar input,
.load-generator-grid input,
.load-generator-grid select,
.evaluation-result-actions select,
.comparison-tab-selectors select,
.coordinate-search-row input,
.coordinate-weather-row input {
  border-color: rgba(20, 190, 255, 0.32);
  background: rgba(1, 14, 42, 0.82);
  color: var(--hud-text);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
}

td input:focus,
td select:focus,
.weather-import-bar input:focus,
.load-generator-grid input:focus,
.load-generator-grid select:focus,
.evaluation-result-actions select:focus,
.comparison-tab-selectors select:focus,
.coordinate-search-row input:focus,
.coordinate-weather-row input:focus {
  outline: 2px solid rgba(33, 213, 255, 0.66);
  background: rgba(3, 28, 68, 0.94);
}

td input::placeholder,
.weather-import-bar input::placeholder,
.load-generator-grid input::placeholder,
.evaluation-result-actions select::placeholder,
.comparison-tab-selectors select::placeholder,
.coordinate-search-row input::placeholder,
.coordinate-weather-row input::placeholder {
  color: rgba(189, 234, 255, 0.52);
}

.switch-cell {
  color: var(--hud-muted-strong);
}

.time-chart,
.map-picker-canvas,
.load-generator-preview,
.weather-preview-chart,
.comparison-curve-chart svg {
  background:
    linear-gradient(rgba(33, 213, 255, 0.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(33, 213, 255, 0.07) 1px, transparent 1px),
    linear-gradient(180deg, rgba(2, 16, 42, 0.96), rgba(5, 34, 70, 0.82));
  background-size: 36px 36px, 36px 36px, 100% 100%;
  border: 1px solid var(--hud-inner-line);
  border-radius: 8px;
  box-shadow: none;
}

.time-chart text,
.load-generator-preview text,
.histogram-svg text,
.green-chart-svg text,
.safety-chart-svg text,
.comparison-curve-chart text {
  fill: #bdeaff;
}

.time-chart line,
.load-generator-preview line,
.histogram-svg line {
  stroke: rgba(116, 207, 239, 0.44);
}

.time-chart path {
  filter: drop-shadow(0 0 6px rgba(33, 213, 255, 0.5));
}

.histogram-svg,
.green-chart-svg,
.safety-chart-svg {
  border-radius: 8px;
}

.green-axis-line,
.green-zero-line,
.safety-axis-line,
.safety-center-line,
.comparison-chart-axis {
  stroke: rgba(189, 234, 255, 0.76);
}

.green-grid-line,
.green-x-tick,
.safety-grid-line,
.safety-x-tick,
.comparison-chart-grid {
  stroke: rgba(116, 207, 239, 0.26);
}

.green-tick-label,
.green-x-label,
.safety-tick-label,
.safety-x-label,
.green-chart-legend,
.safety-chart-legend,
.comparison-chart-x-axis,
.comparison-chart-y-axis {
  color: var(--hud-muted-strong);
  fill: var(--hud-muted-strong);
}

.comparison-curve-stats span {
  color: var(--hud-muted);
}

.comparison-curve-name-item {
  color: var(--hud-muted-strong);
}

.comparison-curve-name-item.active {
  border-left-color: var(--hud-cyan);
  background: rgba(33, 213, 255, 0.12);
  color: #ffffff;
}

.comparison-curve-name-item:hover,
.comparison-curve-name-item:focus-visible {
  border-left-color: var(--hud-cyan);
  background: rgba(33, 213, 255, 0.12);
  color: #ffffff;
}

.result-curve-legend button {
  border-color: rgba(20, 190, 255, 0.32);
  background: rgba(2, 16, 42, 0.84);
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
}

.result-curve-legend button:hover,
.result-curve-legend button:focus-visible {
  border-color: rgba(108, 238, 255, 0.54);
  background: rgba(7, 42, 82, 0.9);
  color: var(--hud-text);
}

.result-curve-legend button.is-hidden {
  color: rgba(155, 184, 207, 0.58);
  opacity: 0.48;
}

.result-curve-legend-stat {
  color: var(--hud-muted);
}

.result-curve-empty-overlay {
  border-color: rgba(20, 190, 255, 0.32);
  background: rgba(2, 16, 42, 0.84);
  color: var(--hud-muted-strong);
}

.planning-parameter-group {
  border-color: var(--hud-inner-line);
  background: rgba(4, 18, 42, 0.34);
  box-shadow: none;
}

.planning-parameter-tabs {
  border-bottom-color: rgba(20, 190, 255, 0.22);
}

.planning-parameter-tab {
  border-color: rgba(20, 190, 255, 0.24);
  background: rgba(2, 20, 48, 0.72);
  color: var(--hud-muted-strong);
}

.planning-parameter-tab.active {
  border-color: rgba(108, 238, 255, 0.72);
  background: rgba(6, 62, 108, 0.78);
  color: var(--hud-text);
}

.planning-parameter-group h3 {
  border-bottom-color: rgba(20, 190, 255, 0.16);
  background: rgba(5, 34, 70, 0.36);
  color: var(--hud-text);
}

.planning-parameter-group-status {
  color: var(--hud-muted);
}

.planning-parameter-group.disabled {
  opacity: 0.55;
  filter: grayscale(0.18);
}

.planning-parameter-switch span {
  border-color: rgba(20, 190, 255, 0.32);
  background: rgba(1, 14, 42, 0.82);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
}

.planning-parameter-switch span::before {
  background: var(--hud-muted-strong);
}

.planning-parameter-switch input:checked + span {
  border-color: rgba(108, 238, 255, 0.94);
  background: linear-gradient(180deg, rgba(4, 76, 140, 0.86), rgba(3, 34, 86, 0.82));
  box-shadow:
    inset 0 0 18px rgba(24, 175, 255, 0.42),
    0 0 16px rgba(0, 190, 255, 0.22);
}

.chart-hover-line,
.chart-cursor line,
.comparison-chart-hover-line {
  stroke: var(--hud-yellow);
}

.chart-cursor circle {
  stroke: #031227;
}

.chart-tip,
.chart-hover-tooltip,
.comparison-chart-tooltip {
  border: 1px solid var(--chart-tooltip-border);
  background: var(--chart-tooltip-bg);
  color: var(--chart-tooltip-text);
  box-shadow: var(--chart-tooltip-shadow);
  text-shadow: none;
}

.chart-hover-tooltip h3,
.chart-hover-tooltip strong,
.comparison-chart-tooltip h3,
.comparison-chart-tooltip strong {
  color: var(--chart-tooltip-strong);
}

.chart-hover-tooltip span,
.comparison-chart-tooltip span {
  color: var(--chart-tooltip-muted);
}

.primary-dot {
  background: var(--hud-cyan);
}

.secondary-dot {
  background: var(--hud-yellow);
}

.mini-bar-track {
  background: rgba(33, 213, 255, 0.1);
}

.mini-bar-track span {
  background: linear-gradient(180deg, var(--hud-cyan), var(--hud-blue));
  box-shadow: 0 0 16px rgba(33, 213, 255, 0.4);
}

.map-picker-modal {
  background: rgba(0, 8, 24, 0.76);
  backdrop-filter: blur(6px);
}

.map-picker-dialog {
  border: 1px solid rgba(20, 190, 255, 0.62);
  border-radius: 10px;
  background:
    radial-gradient(circle at 50% 0%, rgba(36, 210, 255, 0.12), transparent 46%),
    linear-gradient(180deg, rgba(3, 35, 84, 0.96), rgba(1, 14, 42, 0.98));
  box-shadow:
    inset 0 0 36px rgba(24, 175, 255, 0.2),
    0 24px 80px rgba(0, 8, 28, 0.58);
}

.map-picker-head,
.coordinate-control-row,
.coordinate-search-row,
.coordinate-weather-row,
.coordinate-map-hint,
.map-picker-foot {
  border-color: rgba(20, 190, 255, 0.26);
  background: rgba(2, 18, 50, 0.72);
  color: var(--hud-text);
}

.weather-preview-panel {
  border-color: rgba(20, 190, 255, 0.26);
  background: rgba(2, 18, 50, 0.72);
  color: var(--hud-text);
}

.weather-preview-head strong {
  color: var(--hud-text);
}

.weather-preview-stat-item {
  border-color: rgba(20, 190, 255, 0.24);
  background: rgba(4, 20, 48, 0.48);
  color: var(--hud-muted-strong);
}

.weather-preview-stat-item strong {
  color: var(--hud-text);
}

.weather-preview-stat-empty {
  color: var(--hud-muted);
}

.time-resize-handle::before,
.optimization-log-resize-handle::before,
.result-column-resize-handle::before,
.overview-column-resize-handle::before,
.evaluation-main-resize-handle::before,
.weather-preview-resize-handle::before,
.comparison-table-column-resize-handle::before,
.comparison-table-curve-resize-handle::before {
  background: rgba(33, 213, 255, 0.52);
  box-shadow: 0 0 12px rgba(33, 213, 255, 0.56);
}

.time-resize-handle:hover::before,
.time-resize-handle.dragging::before,
.time-resize-handle:focus-visible::before,
.optimization-log-resize-handle:hover::before,
.optimization-log-resize-handle.dragging::before,
.optimization-log-resize-handle:focus-visible::before,
.result-column-resize-handle:hover::before,
.result-column-resize-handle.dragging::before,
.result-column-resize-handle:focus-visible::before,
.overview-column-resize-handle:hover::before,
.overview-column-resize-handle.dragging::before,
.overview-column-resize-handle:focus-visible::before,
.evaluation-main-resize-handle:hover::before,
.evaluation-main-resize-handle.dragging::before,
.evaluation-main-resize-handle:focus-visible::before,
.weather-preview-resize-handle:hover::before,
.weather-preview-resize-handle.dragging::before,
.weather-preview-resize-handle:focus-visible::before,
.comparison-table-column-resize-handle:hover::before,
.comparison-table-column-resize-handle.dragging::before,
.comparison-table-column-resize-handle:focus-visible::before,
.comparison-table-curve-resize-handle:hover::before,
.comparison-table-curve-resize-handle.dragging::before,
.comparison-table-curve-resize-handle:focus-visible::before {
  background: var(--hud-cyan);
}

.optimization-logs {
  border-color: rgba(20, 190, 255, 0.34);
  background: rgba(1, 12, 30, 0.92);
  color: #dff7ff;
}

.optimization-curve-name-list {
  border-color: rgba(20, 190, 255, 0.34);
  background: rgba(1, 12, 30, 0.82);
}

.optimization-curve-chart svg {
  background:
    linear-gradient(rgba(33, 213, 255, 0.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(33, 213, 255, 0.07) 1px, transparent 1px),
    linear-gradient(180deg, rgba(2, 16, 42, 0.96), rgba(5, 34, 70, 0.82));
  background-size: 36px 36px, 36px 36px, 100% 100%;
  border: 1px solid rgba(20, 190, 255, 0.34);
  border-radius: 10px;
  box-shadow: inset 0 0 24px rgba(24, 175, 255, 0.18);
}

.log-line {
  border-bottom-color: rgba(20, 190, 255, 0.16);
}

.log-line span {
  color: #8bdfff;
}

.log-line strong {
  color: #eff8ff;
}

.log-line.ok strong {
  color: var(--hud-green);
}

.log-line.warn strong {
  color: var(--hud-yellow);
}

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: rgba(3, 18, 39, 0.72);
}

::-webkit-scrollbar-thumb {
  border: 2px solid rgba(3, 18, 39, 0.72);
  border-radius: 999px;
  background: rgba(33, 213, 255, 0.46);
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(33, 213, 255, 0.7);
}

/* Slightly larger typography for the planning console. */
body {
  font-size: 17px;
}

.brand {
  font-size: 24px;
}

.main-nav a,
.main-nav button,
.scheme-actions button,
.optimization-actions button,
.tab,
.result-tab,
.log-view-tab,
.summary-tab,
.month-tab,
.curve-button,
.comparison-add-tab,
.comparison-tab-head button,
.weather-import-bar button,
.time-series-import-toolbar button {
  font-size: 16px;
}

table {
  font-size: 15.5px;
}

th,
td {
  padding: 10px 12px;
}

.status-tile span,
.weather-import-bar label,
.coordinate-search-row label,
.coordinate-weather-row label,
.green-chart-legend,
.safety-chart-legend,
.histogram-meta,
.overview-item span {
  font-size: 14px;
}

.status-tile strong,
.overview-item strong {
  font-size: 20px;
}

.user-status {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: 360px;
  padding: 8px 10px;
  border: 0;
  border-radius: 8px;
  background:
    radial-gradient(circle at 50% 0%, rgba(33, 213, 255, 0.14), transparent 66%),
    linear-gradient(180deg, rgba(5, 34, 70, 0.42), rgba(4, 19, 42, 0.3));
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 14px rgba(24, 175, 255, 0.1);
  font-size: 15px;
  font-weight: 800;
  white-space: nowrap;
}

.user-status[hidden],
[data-admin-only][hidden] {
  display: none !important;
}

.user-status strong {
  color: var(--hud-cyan);
  overflow: hidden;
  text-overflow: ellipsis;
}

.user-status em {
  color: var(--hud-muted);
  font-style: normal;
}

.user-status button {
  padding: 6px 9px;
  border: 1px solid rgba(21, 211, 255, 0.44);
  border-radius: 8px;
  background: rgba(5, 34, 70, 0.72);
  color: var(--hud-text);
  font: inherit;
}

.language-switch {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 180px;
  padding: 8px 10px;
  border: 1px solid rgba(21, 211, 255, 0.34);
  border-radius: 8px;
  background:
    radial-gradient(circle at 50% 0%, rgba(33, 213, 255, 0.12), transparent 66%),
    linear-gradient(180deg, rgba(5, 34, 70, 0.38), rgba(4, 19, 42, 0.28));
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 14px rgba(24, 175, 255, 0.1);
  font-size: 14px;
  font-weight: 800;
  white-space: nowrap;
}

.language-switch select {
  min-width: 88px;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}

.auth-card .language-switch {
  justify-self: end;
}

.auth-shell {
  min-height: 100vh;
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 12px;
  padding: 24px;
}

.auth-shell > .language-switch {
  justify-self: end;
  width: min(420px, 100%);
  max-width: 420px;
  justify-content: flex-end;
}

.auth-card {
  width: min(420px, 100%);
  display: grid;
  gap: 16px;
  padding: 28px;
  border: 1px solid var(--hud-cyan-border);
  border-radius: 10px;
  background: var(--hud-panel);
  box-shadow: var(--hud-shadow);
}

.auth-card label {
  display: grid;
  gap: 8px;
  color: var(--hud-muted-strong);
  font-weight: 800;
}

.auth-card input {
  width: 100%;
  border: 1px solid rgba(20, 190, 255, 0.34);
  border-radius: 8px;
  padding: 11px 12px;
  background: rgba(1, 14, 42, 0.82);
  color: var(--hud-text);
  font: inherit;
}

.auth-links a {
  color: var(--hud-cyan);
  font-weight: 800;
}

.auth-status {
  min-height: 22px;
  color: var(--hud-yellow);
  font-weight: 800;
}

.user-management-workspace {
  grid-template-columns: minmax(0, 1fr);
}

.user-management-panel {
  max-width: 1120px;
  width: 100%;
  margin: 0 auto;
}

.users-table select {
  min-width: 120px;
}

/* Unified control polish: keep late-page controls on the same HUD system. */
:root {
  --control-border: rgba(21, 211, 255, 0.42);
  --control-border-hover: rgba(108, 238, 255, 0.74);
  --control-bg: linear-gradient(180deg, rgba(5, 34, 70, 0.68), rgba(4, 19, 42, 0.62));
  --control-bg-hover:
    radial-gradient(circle at 50% 0%, rgba(44, 225, 255, 0.16), transparent 54%),
    linear-gradient(180deg, rgba(6, 47, 86, 0.76), rgba(4, 24, 58, 0.68));
  --control-primary-bg:
    radial-gradient(circle at 50% 0%, rgba(44, 225, 255, 0.28), transparent 48%),
    linear-gradient(180deg, rgba(4, 76, 140, 0.86), rgba(3, 34, 86, 0.82));
  --control-danger-bg: linear-gradient(180deg, rgba(108, 32, 48, 0.8), rgba(54, 14, 30, 0.68));
  --control-muted-bg: linear-gradient(180deg, rgba(5, 34, 70, 0.48), rgba(4, 19, 42, 0.48));
  --input-bg: rgba(1, 14, 42, 0.82);
}

.main-nav a,
.main-nav button,
.primary,
.secondary,
.tab,
.scheme-actions button,
.evaluation-result-action-buttons button,
.optimization-actions button,
.log-view-tab,
.comparison-add-tab,
.comparison-tab-head button,
.pager button,
.add-row,
.month-tab,
.summary-tab,
.result-tab,
.device-filter,
.device-jump a,
.curve-button,
.weather-import-bar button,
.time-series-import-toolbar button,
.map-picker-head button,
.coordinate-search-row button,
.coordinate-weather-row button,
.weather-preview-legend button,
.coordinate-weather-actions button,
.map-picker-foot button,
.map-provider-tab,
.time-series-import-curve-toggle,
.amap-map-controls button,
.user-status button,
.annual-view-toggle,
.task-actions button {
  min-height: 34px;
  border: 1px solid var(--control-border);
  border-radius: 8px;
  background: var(--control-bg);
  color: var(--hud-muted-strong);
  box-shadow: inset 0 0 16px rgba(24, 175, 255, 0.16);
  text-shadow: 0 0 10px rgba(44, 183, 255, 0.34);
  transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease, color 0.16s ease, opacity 0.16s ease;
}

.main-nav .active,
.primary,
.scheme-actions .primary,
.month-tab.active,
.summary-tab.active,
.result-tab.active,
.log-view-tab.active,
.tab.active,
.comparison-tab.active,
.curve-button.active,
.curve-button[aria-pressed="true"],
.map-provider-tab.active,
.time-series-import-curve-toggle.active,
.time-series-import-curve-toggle[aria-pressed="true"],
.annual-view-toggle.active {
  border-color: rgba(108, 238, 255, 0.94);
  background: var(--control-primary-bg);
  color: #ffffff;
  box-shadow:
    inset 0 0 22px rgba(24, 175, 255, 0.48),
    0 0 24px rgba(0, 190, 255, 0.24);
}

.secondary,
.optimization-actions .queue-action {
  border-color: rgba(108, 147, 160, 0.28) !important;
  background: var(--control-muted-bg) !important;
  color: rgba(189, 234, 255, 0.78) !important;
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08) !important;
  text-shadow: none !important;
}

.danger,
.delete-row {
  border-color: rgba(255, 107, 107, 0.55) !important;
  background: var(--control-danger-bg) !important;
  color: #ffd6d6 !important;
}

.main-nav a:hover,
.main-nav button:hover:not(:disabled),
.tab:hover,
.scheme-actions button:hover:not(:disabled),
.evaluation-result-action-buttons button:hover:not(:disabled),
.optimization-actions button:hover:not(:disabled),
.log-view-tab:hover,
.comparison-add-tab:hover:not(:disabled),
.comparison-tab-head button:hover,
.pager button:hover:not(:disabled),
.add-row:hover,
.month-tab:hover,
.summary-tab:hover,
.result-tab:hover,
.device-filter:hover,
.device-jump a:hover,
.curve-button:hover,
.weather-import-bar button:hover,
.time-series-import-toolbar button:hover,
.map-picker-head button:hover,
.coordinate-search-row button:hover,
.coordinate-weather-row button:hover,
.weather-preview-legend button:hover,
.coordinate-weather-actions button:hover,
.map-picker-foot button:hover,
.map-provider-tab:hover,
.time-series-import-curve-toggle:hover,
.time-series-import-curve-toggle:focus-visible,
.amap-map-controls button:hover,
.user-status button:hover:not(:disabled),
.annual-view-toggle:hover,
.annual-view-toggle:focus-visible,
.task-actions button:hover:not(:disabled) {
  border-color: var(--control-border-hover);
  background: var(--control-bg-hover);
  color: #ffffff;
  box-shadow:
    inset 0 0 22px rgba(24, 175, 255, 0.42),
    0 0 20px rgba(0, 190, 255, 0.2);
}

button:focus-visible,
a:focus-visible,
select:focus-visible,
input:focus-visible,
textarea:focus-visible {
  outline: 2px solid rgba(33, 213, 255, 0.6);
  outline-offset: 2px;
}

td input,
td select,
.auth-card input,
.users-table select,
.language-switch select,
.task-scheme-filter select,
.weather-import-bar input,
.load-generator-grid input,
.load-generator-grid select,
.evaluation-result-actions select,
.comparison-tab-selectors select,
.coordinate-search-row input,
.coordinate-weather-row input {
  border-color: rgba(20, 190, 255, 0.32);
  background: var(--input-bg);
  color: var(--hud-text);
  box-shadow: inset 0 0 12px rgba(24, 175, 255, 0.08);
  accent-color: var(--hud-cyan);
}

td input:focus,
td select:focus,
.auth-card input:focus,
.users-table select:focus,
.language-switch select:focus,
.task-scheme-filter select:focus,
.weather-import-bar input:focus,
.load-generator-grid input:focus,
.load-generator-grid select:focus,
.evaluation-result-actions select:focus,
.comparison-tab-selectors select:focus,
.coordinate-search-row input:focus,
.coordinate-weather-row input:focus {
  border-color: rgba(108, 238, 255, 0.74);
  outline: 2px solid rgba(33, 213, 255, 0.42);
  outline-offset: 1px;
  background: rgba(3, 28, 68, 0.94);
}

.task-scheme-filter {
  color: var(--hud-muted);
}

.task-scheme-filter span {
  color: var(--hud-cyan);
}

.task-scheme-filter select {
  min-width: 160px;
  max-width: 240px;
  height: 34px;
  padding: 0 32px 0 12px;
}

.map-provider-tabs {
  border-bottom-color: rgba(20, 190, 255, 0.26);
  background: rgba(2, 18, 50, 0.72);
}

.amap-map-controls button {
  background: rgba(5, 34, 70, 0.78);
  color: var(--hud-text);
  box-shadow:
    inset 0 0 14px rgba(24, 175, 255, 0.14),
    0 8px 20px rgba(0, 8, 28, 0.28);
}

body[data-home-theme] {
  --theme-accent: var(--hud-cyan);
  --theme-accent-2: var(--hud-yellow);
  --theme-page-bg: radial-gradient(circle at 50% 20%, rgba(20, 190, 255, 0.22), transparent 30%), linear-gradient(135deg, #031227, #061936 55%, #020817);
  --theme-panel-bg: rgba(4, 18, 42, 0.76);
  --theme-panel-line: rgba(20, 190, 255, 0.36);
  --theme-control-bg: rgba(5, 34, 70, 0.78);
  --theme-text: #eaf8ff;
  --theme-control-text: var(--theme-text);
  --theme-log-bg: var(--theme-control-bg);
  --theme-log-text: var(--theme-control-text);
  --theme-active-bg: color-mix(in srgb, var(--theme-accent) 34%, var(--theme-control-bg));
  --theme-active-text: #ffffff;
}

body[data-home-theme="fresh"] {
  --theme-accent: #55f0c8;
  --theme-accent-2: #b6ffda;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(85, 240, 200, 0.22), transparent 28%), linear-gradient(135deg, #042b37, #064b59 55%, #021d2a);
  --theme-panel-bg: rgba(2, 43, 55, 0.9);
  --theme-panel-line: rgba(80, 238, 201, 0.36);
  --theme-control-bg: rgba(3, 65, 75, 0.92);
  --theme-text: #ffffff;
  --theme-active-bg: #0b686b;
}

body[data-home-theme="bright"] {
  --theme-accent: #1476a6;
  --theme-accent-2: #4da3d9;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(255, 255, 255, 0.72), transparent 28%), linear-gradient(135deg, #dceefa, #b8d8ee 55%, #eaf5fb);
  --theme-panel-bg: rgba(239, 249, 255, 0.82);
  --theme-panel-line: rgba(112, 184, 229, 0.42);
  --theme-control-bg: rgba(225, 244, 255, 0.92);
  --theme-text: #17384d;
  --theme-control-text: #17384d;
  --theme-log-bg: color-mix(in srgb, var(--theme-panel-bg) 92%, #ffffff);
  --theme-log-text: #17384d;
  --theme-active-bg: #1476a6;
}

body[data-home-theme="sci-fi"] {
  --theme-accent: #7ef5ff;
  --theme-accent-2: #a679ff;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(166, 121, 255, 0.26), transparent 28%), linear-gradient(135deg, #060421, #170d43 55%, #020817);
  --theme-panel-bg: rgba(18, 12, 64, 0.7);
  --theme-panel-line: rgba(166, 121, 255, 0.46);
  --theme-control-bg: rgba(30, 20, 82, 0.78);
}

body[data-home-theme="solemn"] {
  --theme-accent: #c7d2df;
  --theme-accent-2: #8fa1b4;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(122, 136, 154, 0.18), transparent 28%), linear-gradient(135deg, #10151c, #252d38 55%, #07090d);
  --theme-panel-bg: rgba(25, 31, 40, 0.76);
  --theme-panel-line: rgba(176, 188, 204, 0.28);
  --theme-control-bg: rgba(33, 40, 52, 0.84);
}

body[data-home-theme="minimal"] {
  --theme-accent: #c8d7e4;
  --theme-accent-2: #8da1b3;
  --theme-page-bg: linear-gradient(135deg, #08121d, #101b28 55%, #050b12);
  --theme-panel-bg: rgba(9, 21, 34, 0.7);
  --theme-panel-line: rgba(203, 216, 226, 0.2);
  --theme-control-bg: rgba(14, 27, 42, 0.82);
}

body[data-home-theme="dark"] {
  --theme-accent: #91b5df;
  --theme-accent-2: #5d84b6;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(91, 130, 178, 0.14), transparent 28%), linear-gradient(135deg, #020409, #0d1118 55%, #000000);
  --theme-panel-bg: rgba(5, 8, 14, 0.82);
  --theme-panel-line: rgba(86, 114, 150, 0.42);
  --theme-control-bg: rgba(12, 17, 26, 0.88);
}

body[data-home-theme="illustration"] {
  --theme-accent: #096d8f;
  --theme-accent-2: #f4a261;
  --theme-page-bg: linear-gradient(135deg, #cceaf6, #6fb6cf 55%, #1c5a75);
  --theme-panel-bg: rgba(237, 249, 255, 0.76);
  --theme-panel-line: rgba(255, 255, 255, 0.7);
  --theme-control-bg: rgba(255, 255, 255, 0.82);
  --theme-text: #143747;
  --theme-control-text: #143747;
  --theme-log-bg: color-mix(in srgb, var(--theme-panel-bg) 92%, #ffffff);
  --theme-log-text: #143747;
  --theme-active-bg: #096d8f;
}

body[data-home-theme="flat"] {
  --theme-accent: #1b998b;
  --theme-accent-2: #f4d35e;
  --theme-page-bg: linear-gradient(135deg, #0b3142, #126782 55%, #315f72);
  --theme-panel-bg: #0b3142;
  --theme-panel-line: transparent;
  --theme-control-bg: #082936;
  --theme-text: #ffffff;
  --theme-active-bg: #0b5f58;
}

body[data-home-theme="neon-future"] {
  --theme-accent: #00e7ff;
  --theme-accent-2: #ff00a8;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(255, 0, 168, 0.2), transparent 28%), linear-gradient(135deg, #05001c, #0d063f 55%, #020414);
  --theme-panel-bg: rgba(8, 4, 36, 0.78);
  --theme-panel-line: rgba(0, 231, 255, 0.58);
  --theme-control-bg: rgba(18, 8, 52, 0.86);
}

body[data-home-theme="glassmorphism"] {
  --theme-accent: #1f6f94;
  --theme-accent-2: #2d5972;
  --theme-page-bg: radial-gradient(circle at 20% 12%, rgba(255, 255, 255, 0.34), transparent 28%), linear-gradient(135deg, #dcecf6, #7899ad 55%, #1c3445);
  --theme-panel-bg: rgba(236, 247, 253, 0.82);
  --theme-panel-line: rgba(255, 255, 255, 0.62);
  --theme-control-bg: rgba(245, 251, 255, 0.9);
  --theme-text: #183247;
  --theme-control-text: #183247;
  --theme-log-bg: color-mix(in srgb, var(--theme-panel-bg) 92%, #ffffff);
  --theme-log-text: #183247;
  --theme-active-bg: #1f6f94;
}

body[data-home-theme="material"] {
  --theme-accent: #42a5f5;
  --theme-accent-2: #26a69a;
  --theme-page-bg: linear-gradient(135deg, #0d47a1, #1565c0 55%, #00897b);
  --theme-panel-bg: rgba(8, 55, 124, 0.9);
  --theme-panel-line: transparent;
  --theme-control-bg: #0b3d91;
  --theme-text: #ffffff;
  --theme-active-bg: #0b3d91;
}

body[data-home-theme="magazine"] {
  --theme-accent: #c1121f;
  --theme-accent-2: #ffffff;
  --theme-page-bg: linear-gradient(135deg, #111820, #28323c 55%, #05080b);
  --theme-panel-bg: rgba(247, 249, 252, 0.86);
  --theme-panel-line: rgba(255, 255, 255, 0.7);
  --theme-control-bg: rgba(17, 24, 32, 0.82);
  --theme-text: #111820;
  --theme-control-text: #ffffff;
  --theme-log-bg: color-mix(in srgb, var(--theme-panel-bg) 92%, #ffffff);
  --theme-log-text: #111820;
  --theme-active-bg: #c1121f;
}

body[data-home-theme="dynamic"] {
  --theme-accent: #7cf1ff;
  --theme-accent-2: #ffd166;
  --theme-page-bg: repeating-linear-gradient(115deg, rgba(33, 213, 255, 0.1) 0 2px, transparent 2px 74px), linear-gradient(135deg, #041a3c, #062f6f 55%, #020817);
  --theme-panel-bg: rgba(4, 26, 60, 0.72);
  --theme-panel-line: rgba(124, 241, 255, 0.46);
  --theme-control-bg: rgba(4, 35, 80, 0.84);
}

body[data-home-theme]:not([data-home-theme="default"]) {
  --hud-text: var(--theme-text);
  --hud-muted: color-mix(in srgb, var(--theme-text) 78%, var(--theme-panel-bg));
  --hud-muted-strong: var(--theme-text);
  --hud-cyan: var(--theme-accent);
  --hud-cyan-border: color-mix(in srgb, var(--theme-accent) 46%, transparent);
  --hud-line: var(--theme-panel-line);
  --hud-line-bright: color-mix(in srgb, var(--theme-accent) 64%, transparent);
  --hud-inner-line: var(--theme-panel-line);
  --hud-inner-surface: color-mix(in srgb, var(--theme-panel-bg) 76%, transparent);
  --hud-surface: color-mix(in srgb, var(--theme-panel-bg) 86%, transparent);
  --hud-surface-soft: color-mix(in srgb, var(--theme-panel-bg) 68%, transparent);
  --control-border: color-mix(in srgb, var(--theme-accent) 42%, transparent);
  --control-border-hover: color-mix(in srgb, var(--theme-accent) 64%, transparent);
  --control-bg: var(--theme-control-bg);
  --control-bg-hover: color-mix(in srgb, var(--theme-accent) 14%, var(--theme-control-bg));
  --control-primary-bg: var(--theme-active-bg);
  --control-danger-bg: #a42738;
  --control-muted-bg: color-mix(in srgb, var(--theme-control-bg) 74%, transparent);
  --input-bg: var(--theme-control-bg);
  --chart-tooltip-bg: color-mix(in srgb, var(--theme-control-bg) 94%, transparent);
  --chart-tooltip-text: var(--theme-control-text);
  --chart-tooltip-muted: color-mix(in srgb, var(--theme-control-text) 74%, transparent);
  --chart-tooltip-strong: var(--theme-control-text);
  --chart-tooltip-border: color-mix(in srgb, var(--theme-accent) 54%, transparent);
  --chart-tooltip-shadow: 0 16px 36px rgba(0, 0, 0, 0.24);
  color: var(--theme-text);
  background: var(--theme-page-bg);
}

body[data-home-theme]:not([data-home-theme="default"]) .topbar,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-rail,
body[data-home-theme]:not([data-home-theme="default"]) .summary-rail,
body[data-home-theme]:not([data-home-theme="default"]) .editor-panel,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-panel,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-panel,
body[data-home-theme]:not([data-home-theme="default"]) .tasks-panel,
body[data-home-theme]:not([data-home-theme="default"]) .auth-card,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-bar,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table-card,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-board,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-command-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-result-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-log-card,
body[data-home-theme]:not([data-home-theme="default"]) .planning-parameters-card,
body[data-home-theme]:not([data-home-theme="default"]) .device-card,
body[data-home-theme]:not([data-home-theme="default"]) .table-card,
body[data-home-theme]:not([data-home-theme="default"]) .chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-curve-name-list {
  border-color: var(--theme-panel-line);
  background: var(--theme-panel-bg);
  color: var(--theme-text);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.22);
}

body[data-home-theme]:not([data-home-theme="default"]) .brand,
body[data-home-theme]:not([data-home-theme="default"]) h1,
body[data-home-theme]:not([data-home-theme="default"]) h2,
body[data-home-theme]:not([data-home-theme="default"]) .rail-title,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-title,
body[data-home-theme]:not([data-home-theme="default"]) .panel-heading h1,
body[data-home-theme]:not([data-home-theme="default"]) .panel-heading h2 {
  color: var(--theme-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .main-nav a,
body[data-home-theme]:not([data-home-theme="default"]) .main-nav button,
body[data-home-theme]:not([data-home-theme="default"]) .primary,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .task-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab,
body[data-home-theme]:not([data-home-theme="default"]) .log-view-tab,
body[data-home-theme]:not([data-home-theme="default"]) .result-tab,
body[data-home-theme]:not([data-home-theme="default"]) .curve-group-tab,
body[data-home-theme]:not([data-home-theme="default"]) .annual-view-toggle {
  border-color: color-mix(in srgb, var(--theme-accent) 46%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab,
body[data-home-theme]:not([data-home-theme="default"]) .validation-item,
body[data-home-theme]:not([data-home-theme="default"]) .empty-summary {
  border-color: color-mix(in srgb, var(--theme-accent) 30%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 56%, transparent);
  color: var(--theme-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item:hover,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-item:focus-visible,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item:hover,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item:focus-visible,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter:hover,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter:focus-visible,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab:hover,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab:focus-visible {
  border-color: color-mix(in srgb, var(--theme-accent) 58%, transparent);
  background: color-mix(in srgb, var(--theme-accent) 12%, var(--theme-control-bg));
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .main-nav .active,
body[data-home-theme]:not([data-home-theme="default"]) .primary,
body[data-home-theme]:not([data-home-theme="default"]) .result-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab[aria-selected="true"],
body[data-home-theme]:not([data-home-theme="default"]) .log-view-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-group-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .annual-view-toggle.active {
  background: var(--theme-active-bg);
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item.active,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item.active,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter.active,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab.active {
  background: transparent;
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-items::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-item::before {
  background: color-mix(in srgb, var(--theme-accent) 42%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item::after {
  border-color: color-mix(in srgb, var(--theme-accent) 58%, transparent);
  background: var(--theme-control-bg);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item.active::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-item:hover::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-item:focus-visible::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-item.active::after {
  background: var(--theme-accent);
  border-color: var(--theme-accent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-tree-caret {
  color: var(--theme-accent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-tree-caret:hover,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-tree-parent:focus-visible .scheme-tree-caret {
  background: color-mix(in srgb, var(--theme-accent) 12%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-list::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-empty::before {
  background: color-mix(in srgb, var(--theme-accent) 32%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-empty {
  border-bottom-color: color-mix(in srgb, var(--theme-accent) 16%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item::after {
  border-color: color-mix(in srgb, var(--theme-accent) 48%, transparent);
  background: var(--theme-control-bg);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:hover,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:focus-visible {
  background: color-mix(in srgb, var(--theme-accent) 10%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item.active {
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item.active::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:hover::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:focus-visible::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item.active::after {
  background: var(--theme-accent);
  border-color: var(--theme-accent);
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-modal {
  background: color-mix(in srgb, var(--theme-control-bg) 28%, rgba(0, 0, 0, 0.68));
  backdrop-filter: blur(8px);
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-dialog,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-dialog,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-dialog {
  border-color: var(--theme-panel-line);
  background: var(--theme-panel-bg);
  color: var(--theme-text);
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.32);
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-head,
body[data-home-theme]:not([data-home-theme="default"]) .map-picker-foot,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-control-row,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-map-hint,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-panel,
body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tabs,
body[data-home-theme]:not([data-home-theme="default"]) .curve-generator-tabs,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-toolbar,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-chart-panel {
  border-color: var(--theme-panel-line);
  background: color-mix(in srgb, var(--theme-control-bg) 58%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-head h2,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-head strong,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-chart-head strong,
body[data-home-theme]:not([data-home-theme="default"]) #mapPickerHint,
body[data-home-theme]:not([data-home-theme="default"]) #loadGeneratorHint,
body[data-home-theme]:not([data-home-theme="default"]) #timeSeriesImportHint,
body[data-home-theme]:not([data-home-theme="default"]) #timeSeriesImportSummary,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-status {
  color: var(--theme-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-head button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-header-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row button,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-legend button,
body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tab,
body[data-home-theme]:not([data-home-theme="default"]) .curve-generator-tab,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-toolbar button,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle,
body[data-home-theme]:not([data-home-theme="default"]) .amap-map-controls button,
body[data-home-theme]:not([data-home-theme="default"]) .map-picker-foot button {
  border-color: color-mix(in srgb, var(--theme-accent) 46%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-generator-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-legend button.active,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-legend button[aria-pressed="true"],
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle[aria-pressed="true"] {
  border-color: var(--theme-accent);
  background: var(--theme-active-bg);
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-foot button.primary {
  border-color: var(--theme-accent);
  background: var(--theme-active-bg);
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid input,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid select,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row input,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row input {
  border-color: color-mix(in srgb, var(--theme-accent) 36%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 76%, transparent);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid input::placeholder,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row input::placeholder,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row input::placeholder {
  color: color-mix(in srgb, var(--theme-control-text) 58%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid label,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row label,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row label {
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) #loadGeneratorHint.error,
body[data-home-theme]:not([data-home-theme="default"]) #timeSeriesImportHint.error,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-status.error {
  color: #ff9b9b;
}

body[data-home-theme]:not([data-home-theme="default"]) #loadGeneratorHint.ok,
body[data-home-theme]:not([data-home-theme="default"]) #timeSeriesImportHint.ok,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-status.ok {
  color: #8df5cf;
}

body[data-home-theme]:not([data-home-theme="default"]) #loadGeneratorHint.warning,
body[data-home-theme]:not([data-home-theme="default"]) #timeSeriesImportHint.warning {
  color: #ffd27a;
}

body[data-home-theme]:not([data-home-theme="default"]) .map-picker-canvas,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-chart,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-preview,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-chart,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview {
  border-color: color-mix(in srgb, var(--theme-accent) 32%, transparent);
  background:
    linear-gradient(color-mix(in srgb, var(--theme-accent) 8%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--theme-accent) 8%, transparent) 1px, transparent 1px),
    color-mix(in srgb, var(--theme-control-bg) 86%, transparent);
  background-size: 36px 36px, 36px 36px, 100% 100%;
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview table,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview th,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview td,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview .empty-summary {
  color: var(--theme-control-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-stat-item {
  border-color: color-mix(in srgb, var(--theme-accent) 28%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 72%, transparent);
  color: var(--theme-control-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-stat-item strong,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-stat-empty {
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview th {
  background: var(--theme-control-bg);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview td {
  border-bottom-color: color-mix(in srgb, var(--theme-accent) 22%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-preview td input {
  color: var(--theme-control-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-chart text,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-preview text,
body[data-home-theme]:not([data-home-theme="default"]) #timeChart text,
body[data-home-theme]:not([data-home-theme="default"]) .histogram-svg text {
  fill: var(--theme-control-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-resize-handle::before {
  background: color-mix(in srgb, var(--theme-accent) 62%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-resize-handle::before {
  background: color-mix(in srgb, var(--theme-accent) 62%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .amap-map-attribution {
  background: color-mix(in srgb, var(--theme-panel-bg) 86%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .log-context-menu {
  border-color: var(--theme-panel-line);
  background: var(--theme-panel-bg);
  color: var(--theme-text);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.32);
}

body[data-home-theme]:not([data-home-theme="default"]) .log-context-menu button {
  background: transparent;
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .log-context-menu button:hover,
body[data-home-theme]:not([data-home-theme="default"]) .log-context-menu button:focus-visible {
  background: color-mix(in srgb, var(--theme-accent) 14%, var(--theme-control-bg));
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs {
  border-color: var(--theme-panel-line);
  background: var(--theme-log-bg);
  color: var(--theme-log-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs .log-line {
  border-bottom-color: color-mix(in srgb, var(--theme-accent) 22%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs .log-line span,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs .log-line strong,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs .log-line.ok strong,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-logs .log-line.warn strong {
  color: var(--theme-log-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-card {
  border-color: var(--theme-panel-line);
  background: color-mix(in srgb, var(--theme-control-bg) 50%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-head h3,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-head span,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend {
  color: var(--theme-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-axis-line,
body[data-home-theme]:not([data-home-theme="default"]) .annual-grid-line {
  stroke: color-mix(in srgb, var(--theme-accent) 34%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-grid-resizer::before {
  background: color-mix(in srgb, var(--theme-accent) 52%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-grid-resizer:hover::before,
body[data-home-theme]:not([data-home-theme="default"]) .annual-grid-resizer:focus-visible::before,
body[data-home-theme]:not([data-home-theme="default"]) .annual-grid-resizer.dragging::before {
  background: var(--theme-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--theme-accent) 18%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-axis-label,
body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-x-axis span {
  color: var(--theme-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .language-switch,
body[data-home-theme]:not([data-home-theme="default"]) .user-status {
  border-color: color-mix(in srgb, var(--theme-accent) 38%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .language-switch span,
body[data-home-theme]:not([data-home-theme="default"]) .user-status span,
body[data-home-theme]:not([data-home-theme="default"]) .user-status strong,
body[data-home-theme]:not([data-home-theme="default"]) .user-status em {
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .language-switch select,
body[data-home-theme]:not([data-home-theme="default"]) .user-status button {
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .tab,
body[data-home-theme]:not([data-home-theme="default"]) .summary-tab,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-bar button,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-action-buttons button,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-add-tab,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-head button,
body[data-home-theme]:not([data-home-theme="default"]) .pager button,
body[data-home-theme]:not([data-home-theme="default"]) .add-row,
body[data-home-theme]:not([data-home-theme="default"]) .device-jump a,
body[data-home-theme]:not([data-home-theme="default"]) .secondary {
  border-color: color-mix(in srgb, var(--theme-accent) 42%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .secondary,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-actions .queue-action {
  border-color: color-mix(in srgb, var(--theme-accent) 34%, transparent) !important;
  background: var(--control-muted-bg) !important;
  color: var(--theme-control-text) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .summary-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .result-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .log-view-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button[aria-pressed="true"],
body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-generator-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle[aria-pressed="true"] {
  border-color: var(--theme-accent);
  background: var(--theme-active-bg);
  color: var(--theme-active-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .danger,
body[data-home-theme]:not([data-home-theme="default"]) .delete-row {
  border-color: color-mix(in srgb, #ff8f9b 56%, transparent) !important;
  background: var(--control-danger-bg) !important;
  color: #ffffff !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .optimization-actions button.is-disabled,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-action-buttons button.is-disabled,
body[data-home-theme]:not([data-home-theme="default"]) button:disabled {
  opacity: 0.72;
}

body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-rail,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-planning-result-panel,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab,
body[data-home-theme]:not([data-home-theme="default"]) .editor-header,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-stats section,
body[data-home-theme]:not([data-home-theme="default"]) .summary-section,
body[data-home-theme]:not([data-home-theme="default"]) .overview-table-card,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-card,
body[data-home-theme]:not([data-home-theme="default"]) .green-chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .safety-chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .mini-bar-chart,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item,
body[data-home-theme]:not([data-home-theme="default"]) .histogram-panel,
body[data-home-theme]:not([data-home-theme="default"]) .status-tile,
body[data-home-theme]:not([data-home-theme="default"]) .planning-parameter-group {
  border-color: var(--theme-panel-line);
  background: var(--theme-panel-bg);
  color: var(--theme-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .planning-parameter-tabs {
  border-bottom-color: var(--theme-panel-line);
}

body[data-home-theme]:not([data-home-theme="default"]) .planning-parameter-tab {
  border-color: var(--theme-panel-line);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .planning-parameter-tab.active {
  border-color: var(--theme-accent);
  background: var(--theme-control-primary-bg);
  color: var(--theme-control-primary-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .current-scheme,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-current-scheme,
body[data-home-theme]:not([data-home-theme="default"]) .page-info,
body[data-home-theme]:not([data-home-theme="default"]) .pager,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-bar label,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-grid label,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row label,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row label,
body[data-home-theme]:not([data-home-theme="default"]) .filter-hint,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item span,
body[data-home-theme]:not([data-home-theme="default"]) .histogram-head span,
body[data-home-theme]:not([data-home-theme="default"]) .histogram-meta,
body[data-home-theme]:not([data-home-theme="default"]) .tasks-toolbar p,
body[data-home-theme]:not([data-home-theme="default"]) .task-empty,
body[data-home-theme]:not([data-home-theme="default"]) .task-scheme-filter,
body[data-home-theme]:not([data-home-theme="default"]) .task-scheme-filter span,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary span,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary-label,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-percent,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend div,
body[data-home-theme]:not([data-home-theme="default"]) .status-tile span,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-head strong,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table-card h2,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-title,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-stats span,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-stats strong {
  color: var(--theme-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .editor-header {
  border-bottom-color: var(--theme-panel-line);
  background: color-mix(in srgb, var(--theme-control-bg) 36%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .current-scheme strong,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-status.ok,
body[data-home-theme]:not([data-home-theme="default"]) .status-ok,
body[data-home-theme]:not([data-home-theme="default"]) .status-tile strong,
body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.running,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item strong,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary strong,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend strong {
  color: var(--theme-accent);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary strong,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend strong {
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .auth-card label,
body[data-home-theme]:not([data-home-theme="default"]) .auth-status {
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .auth-links a {
  color: var(--theme-text);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .data-table,
body[data-home-theme]:not([data-home-theme="default"]) .task-table,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table,
body[data-home-theme]:not([data-home-theme="default"]) .annual-stat-table,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-overview-table,
body[data-home-theme]:not([data-home-theme="default"]) .green-result-table,
body[data-home-theme]:not([data-home-theme="default"]) .safety-result-table,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-result-table {
  border-color: var(--theme-panel-line);
  background: color-mix(in srgb, var(--theme-panel-bg) 78%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) table,
body[data-home-theme]:not([data-home-theme="default"]) td {
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) th {
  border-bottom-color: color-mix(in srgb, var(--theme-accent) 24%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
}

body[data-home-theme]:not([data-home-theme="default"]) td {
  border-bottom-color: color-mix(in srgb, var(--theme-accent) 18%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) td input,
body[data-home-theme]:not([data-home-theme="default"]) td select,
body[data-home-theme]:not([data-home-theme="default"]) .auth-card input,
body[data-home-theme]:not([data-home-theme="default"]) .users-table select,
body[data-home-theme]:not([data-home-theme="default"]) .task-scheme-filter select,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-bar input,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row input,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-actions select,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-selectors select {
  border-color: color-mix(in srgb, var(--theme-accent) 36%, transparent);
  background: var(--input-bg);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-filter select,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range select {
  border-color: color-mix(in srgb, var(--theme-accent) 36%, transparent);
  background: var(--input-bg);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-frame {
  background: var(--theme-control-bg);
}

body[data-home-theme]:not([data-home-theme="default"]) .time-chart,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-chart svg,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-curve-chart svg,
body[data-home-theme]:not([data-home-theme="default"]) .green-chart-svg,
body[data-home-theme]:not([data-home-theme="default"]) .safety-chart-svg,
body[data-home-theme]:not([data-home-theme="default"]) .histogram-svg {
  border-color: color-mix(in srgb, var(--theme-accent) 32%, transparent);
  background-color: var(--theme-control-bg);
  background:
    linear-gradient(color-mix(in srgb, var(--theme-accent) 8%, transparent) 1px, transparent 1px),
    linear-gradient(90deg, color-mix(in srgb, var(--theme-accent) 8%, transparent) 1px, transparent 1px),
    var(--theme-control-bg);
  background-size: 36px 36px, 36px 36px, 100% 100%;
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .time-chart text,
body[data-home-theme]:not([data-home-theme="default"]) .green-chart-svg text,
body[data-home-theme]:not([data-home-theme="default"]) .safety-chart-svg text,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-chart text,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-curve-chart text,
body[data-home-theme]:not([data-home-theme="default"]) .green-chart-legend,
body[data-home-theme]:not([data-home-theme="default"]) .safety-chart-legend,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-x-axis,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-y-axis {
  color: var(--theme-control-text);
  fill: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.idle {
  border-color: color-mix(in srgb, var(--theme-accent) 24%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 58%, transparent);
  color: var(--theme-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-legend button,
body[data-home-theme]:not([data-home-theme="default"]) .result-curve-empty-overlay {
  border-color: color-mix(in srgb, var(--theme-accent) 32%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 92%, transparent);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-context-menu {
  border-color: color-mix(in srgb, var(--theme-accent) 38%, transparent);
  background: color-mix(in srgb, var(--theme-control-bg) 96%, transparent);
  color: var(--theme-control-text);
  box-shadow: 0 14px 34px rgba(0, 0, 0, 0.28);
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-context-menu button {
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-context-menu button:hover,
body[data-home-theme]:not([data-home-theme="default"]) .result-curve-context-menu button:focus-visible {
  background: color-mix(in srgb, var(--theme-accent) 14%, var(--theme-control-bg));
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-legend-stat {
  color: color-mix(in srgb, var(--theme-control-text) 76%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-filter,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range,
body[data-home-theme]:not([data-home-theme="default"]) .curve-range-scope,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range-scope {
  border-color: color-mix(in srgb, var(--theme-accent) 28%, transparent);
  background: var(--theme-control-bg);
  color: var(--theme-control-text);
  box-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-scope button,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range-scope button,
body[data-home-theme]:not([data-home-theme="default"]) .curve-range-filter label,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range label {
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-scope button.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range-scope button.active {
  border-color: var(--theme-accent);
  background: var(--theme-active-bg);
  color: var(--theme-active-text);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-resize-handle::before {
  background: color-mix(in srgb, var(--theme-accent) 72%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-resize-handle:hover::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-resize-handle.dragging::before,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-resize-handle:focus-visible::before {
  background: var(--theme-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--theme-accent) 20%, transparent);
}

body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-segment span {
  padding: 1px 5px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--theme-control-bg) 78%, rgba(0, 0, 0, 0.38));
  color: var(--theme-control-text);
  text-shadow: none;
}

body[data-home-theme="glassmorphism"] .topbar,
body[data-home-theme="glassmorphism"] .scheme-rail,
body[data-home-theme="glassmorphism"] .summary-rail,
body[data-home-theme="glassmorphism"] .editor-panel,
body[data-home-theme="glassmorphism"] .optimization-panel,
body[data-home-theme="glassmorphism"] .comparison-panel,
body[data-home-theme="glassmorphism"] .tasks-panel {
  backdrop-filter: blur(18px) saturate(1.12);
  box-shadow:
    inset 0 0 0 1px rgba(255, 255, 255, 0.18),
    0 22px 54px rgba(0, 18, 38, 0.26);
}

/* Theme contrast guard: keep non-default themes readable across pages. */
body[data-home-theme]:not([data-home-theme="default"]) .topbar,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-rail,
body[data-home-theme]:not([data-home-theme="default"]) .summary-rail,
body[data-home-theme]:not([data-home-theme="default"]) .editor-panel,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-panel,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-panel,
body[data-home-theme]:not([data-home-theme="default"]) .tasks-panel,
body[data-home-theme]:not([data-home-theme="default"]) .auth-card,
body[data-home-theme]:not([data-home-theme="default"]) .map-picker-dialog,
body[data-home-theme]:not([data-home-theme="default"]) .load-generator-dialog,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-dialog,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-command-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-result-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-log-card,
body[data-home-theme]:not([data-home-theme="default"]) .planning-parameters-card,
body[data-home-theme]:not([data-home-theme="default"]) .device-card,
body[data-home-theme]:not([data-home-theme="default"]) .table-card,
body[data-home-theme]:not([data-home-theme="default"]) .chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .overview-table-card,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-card,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table-card,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-board,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-bar,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-card,
body[data-home-theme]:not([data-home-theme="default"]) .green-chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .safety-chart-card,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-curve-name-list,
body[data-home-theme]:not([data-home-theme="default"]) .status-tile {
  border-color: var(--theme-panel-line) !important;
  background: var(--theme-panel-bg) !important;
  color: var(--theme-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .brand,
body[data-home-theme]:not([data-home-theme="default"]) h1,
body[data-home-theme]:not([data-home-theme="default"]) h2,
body[data-home-theme]:not([data-home-theme="default"]) h3,
body[data-home-theme]:not([data-home-theme="default"]) label,
body[data-home-theme]:not([data-home-theme="default"]) .rail-title,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-list-title,
body[data-home-theme]:not([data-home-theme="default"]) .current-scheme,
body[data-home-theme]:not([data-home-theme="default"]) .current-scheme strong,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-current-scheme,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-current-scheme strong,
body[data-home-theme]:not([data-home-theme="default"]) .page-info,
body[data-home-theme]:not([data-home-theme="default"]) .filter-hint,
body[data-home-theme]:not([data-home-theme="default"]) .task-empty,
body[data-home-theme]:not([data-home-theme="default"]) .task-scheme-filter,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item span,
body[data-home-theme]:not([data-home-theme="default"]) .overview-item strong,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary span,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary strong,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-summary-label,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-percent,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend div,
body[data-home-theme]:not([data-home-theme="default"]) .composition-bar-legend strong,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-head strong,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table-card h2,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-title,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-stats,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-head h3,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-head span,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend,
body[data-home-theme]:not([data-home-theme="default"]) .auth-card label,
body[data-home-theme]:not([data-home-theme="default"]) .auth-status {
  color: var(--theme-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .main-nav a,
body[data-home-theme]:not([data-home-theme="default"]) .main-nav button,
body[data-home-theme]:not([data-home-theme="default"]) .tab,
body[data-home-theme]:not([data-home-theme="default"]) .summary-tab,
body[data-home-theme]:not([data-home-theme="default"]) .result-tab,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab,
body[data-home-theme]:not([data-home-theme="default"]) .log-view-tab,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button,
body[data-home-theme]:not([data-home-theme="default"]) .curve-group-tab,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab,
body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tab,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle,
body[data-home-theme]:not([data-home-theme="default"]) .weather-import-bar button,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-action-buttons button,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-add-tab,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-head button,
body[data-home-theme]:not([data-home-theme="default"]) .pager button,
body[data-home-theme]:not([data-home-theme="default"]) .add-row,
body[data-home-theme]:not([data-home-theme="default"]) .device-jump a,
body[data-home-theme]:not([data-home-theme="default"]) .map-picker-head button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-header-actions button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-search-row button,
body[data-home-theme]:not([data-home-theme="default"]) .coordinate-weather-row button,
body[data-home-theme]:not([data-home-theme="default"]) .weather-preview-legend button,
body[data-home-theme]:not([data-home-theme="default"]) .map-picker-foot button,
body[data-home-theme]:not([data-home-theme="default"]) .annual-view-toggle,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend button,
body[data-home-theme]:not([data-home-theme="default"]) .task-actions button {
  border-color: color-mix(in srgb, var(--theme-accent) 46%, transparent) !important;
  background: var(--theme-control-bg) !important;
  color: var(--theme-control-text) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .secondary,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-actions .queue-action {
  border-color: color-mix(in srgb, var(--theme-accent) 34%, transparent) !important;
  background: var(--theme-panel-bg) !important;
  color: var(--theme-text) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .main-nav .active,
body[data-home-theme]:not([data-home-theme="default"]) .primary,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-actions .primary,
body[data-home-theme]:not([data-home-theme="default"]) .tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .summary-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .result-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .task-type-tab[aria-selected="true"],
body[data-home-theme]:not([data-home-theme="default"]) .log-view-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-button[aria-pressed="true"],
body[data-home-theme]:not([data-home-theme="default"]) .curve-group-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .month-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .map-provider-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .curve-generator-tab.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-series-import-curve-toggle[aria-pressed="true"],
body[data-home-theme]:not([data-home-theme="default"]) .annual-view-toggle.active {
  border-color: var(--theme-accent) !important;
  background: var(--theme-active-bg) !important;
  color: var(--theme-active-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend button:hover,
body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend button:focus-visible {
  border-color: var(--theme-accent) !important;
  background: var(--theme-active-bg) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .annual-comparison-legend button.is-hidden {
  opacity: 0.48;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter,
body[data-home-theme]:not([data-home-theme="default"]) .validation-item,
body[data-home-theme]:not([data-home-theme="default"]) .empty-summary {
  border-color: color-mix(in srgb, var(--theme-accent) 22%, transparent) !important;
  background: transparent !important;
  color: var(--theme-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-item.active,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-curve-name-item.active,
body[data-home-theme]:not([data-home-theme="default"]) .device-filter.active {
  border-color: color-mix(in srgb, var(--theme-accent) 22%, transparent) !important;
  background: transparent !important;
  color: var(--theme-active-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-empty {
  background: transparent !important;
  color: var(--theme-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:hover,
body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item:focus-visible {
  background: color-mix(in srgb, var(--theme-accent) 10%, transparent) !important;
  color: var(--theme-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .scheme-result-item.active {
  color: var(--theme-active-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) input,
body[data-home-theme]:not([data-home-theme="default"]) select,
body[data-home-theme]:not([data-home-theme="default"]) textarea,
body[data-home-theme]:not([data-home-theme="default"]) td input,
body[data-home-theme]:not([data-home-theme="default"]) td select,
body[data-home-theme]:not([data-home-theme="default"]) .users-table select,
body[data-home-theme]:not([data-home-theme="default"]) .task-scheme-filter select,
body[data-home-theme]:not([data-home-theme="default"]) .evaluation-result-actions select,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-tab-selectors select {
  border-color: color-mix(in srgb, var(--theme-accent) 36%, transparent) !important;
  background: var(--theme-control-bg) !important;
  color: var(--theme-control-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .data-table,
body[data-home-theme]:not([data-home-theme="default"]) .task-table,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-table,
body[data-home-theme]:not([data-home-theme="default"]) .annual-stat-table,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-overview-table,
body[data-home-theme]:not([data-home-theme="default"]) .green-result-table,
body[data-home-theme]:not([data-home-theme="default"]) .safety-result-table,
body[data-home-theme]:not([data-home-theme="default"]) .optimization-result-table,
body[data-home-theme]:not([data-home-theme="default"]) table,
body[data-home-theme]:not([data-home-theme="default"]) td {
  border-color: var(--theme-panel-line) !important;
  color: var(--theme-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) th {
  border-color: var(--theme-panel-line) !important;
  background: var(--theme-control-bg) !important;
  color: var(--theme-control-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-filter label,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range label,
body[data-home-theme]:not([data-home-theme="default"]) .curve-range-scope button,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range-scope button {
  color: var(--theme-control-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .curve-range-scope button.active,
body[data-home-theme]:not([data-home-theme="default"]) .time-chart-range-scope button.active {
  border-color: var(--theme-accent) !important;
  background: var(--theme-active-bg) !important;
  color: var(--theme-active-text) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .language-switch,
body[data-home-theme]:not([data-home-theme="default"]) .user-status {
  border-color: color-mix(in srgb, var(--theme-accent) 38%, transparent) !important;
  background: var(--theme-control-bg) !important;
  color: var(--theme-control-text) !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .language-switch span,
body[data-home-theme]:not([data-home-theme="default"]) .language-switch select,
body[data-home-theme]:not([data-home-theme="default"]) .user-status span,
body[data-home-theme]:not([data-home-theme="default"]) .user-status strong,
body[data-home-theme]:not([data-home-theme="default"]) .user-status em,
body[data-home-theme]:not([data-home-theme="default"]) .user-status button {
  color: var(--theme-control-text) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill {
  border: 1px solid transparent !important;
  box-shadow: none !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.running {
  border-color: #72cfbc !important;
  background: #d0f4ea !important;
  color: #064f45 !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.queued {
  border-color: #e7b85b !important;
  background: #ffe7b0 !important;
  color: #684600 !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.dequeued {
  border-color: #8fb3cd !important;
  background: #d9edf8 !important;
  color: #24485f !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.completed {
  border-color: #70d8a5 !important;
  background: #c9f4dc !important;
  color: #0d5e3f !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.interrupted {
  border-color: #e8a171 !important;
  background: #ffd8bf !important;
  color: #793507 !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.failed {
  border-color: #ed8b9b !important;
  background: #ffd6dd !important;
  color: #8f1830 !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.timeout {
  border-color: #c9a6ed !important;
  background: #eadbff !important;
  color: #5f338a !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .task-status-pill.idle {
  border-color: #96bad2 !important;
  background: #dcecf6 !important;
  color: #27485c !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .chart-tip,
body[data-home-theme]:not([data-home-theme="default"]) .chart-hover-tooltip,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-tooltip,
body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-tooltip {
  border-color: var(--chart-tooltip-border) !important;
  background: var(--chart-tooltip-bg) !important;
  color: var(--chart-tooltip-text) !important;
  box-shadow: var(--chart-tooltip-shadow) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .chart-hover-tooltip h3,
body[data-home-theme]:not([data-home-theme="default"]) .chart-hover-tooltip strong,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-tooltip h3,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-tooltip strong,
body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-tooltip h3,
body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-tooltip strong {
  color: var(--chart-tooltip-strong) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .chart-hover-tooltip span,
body[data-home-theme]:not([data-home-theme="default"]) .comparison-chart-tooltip span,
body[data-home-theme]:not([data-home-theme="default"]) .annual-chart-tooltip span {
  color: var(--chart-tooltip-muted) !important;
  text-shadow: none !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .result-curve-tooltip-swatch {
  box-shadow: 0 0 0 1px var(--chart-tooltip-border);
}

/* Compact editable device tables. */
#devicesTab .device-card {
  padding: 0;
  margin: 0 0 22px;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
}

#devicesTab .device-card .panel-heading {
  padding: 0 2px 10px;
  margin-bottom: 0;
}

#devicesTab .device-data-table {
  max-height: none;
  overflow-x: hidden;
  overflow-y: visible;
  border-radius: 10px;
}

.device-parameter-table {
  width: 100%;
  min-width: 0;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
}

.device-parameter-table th,
.device-parameter-table td {
  height: auto;
  min-width: 0;
  padding: 0;
  vertical-align: middle;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.device-parameter-table th {
  min-height: 48px;
  padding: 7px 6px;
  font-size: 12px;
  line-height: 1.16;
}

.device-empty-heading,
.device-empty-cell {
  color: transparent;
  pointer-events: none;
}

.device-heading-label {
  display: block;
  white-space: nowrap;
  overflow: visible;
  overflow-wrap: normal;
  word-break: normal;
}

.device-sticky-col {
  position: static;
  z-index: auto;
  width: auto;
  min-width: 0;
  background: transparent;
  background-clip: padding-box;
  box-shadow: none;
}

.device-parameter-table th.device-sticky-col {
  z-index: auto;
  background: rgb(5, 34, 70);
}

.device-sticky-1 {
  left: 0;
}

.device-sticky-2 {
  left: 168px;
}

.device-sticky-3 {
  left: 336px;
}

.device-cell {
  background: transparent;
  cursor: pointer;
  transition: background 0.14s ease, box-shadow 0.14s ease;
}

.device-cell.device-sticky-col {
  background: rgb(4, 18, 42);
}

.device-input {
  display: none;
  width: 100%;
  min-width: 0;
  height: 44px;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 8px;
  background: transparent !important;
  caret-color: transparent;
  color: inherit !important;
  cursor: pointer;
  font-size: 14px;
  box-shadow: none !important;
}

.device-input:focus {
  outline: 0 !important;
}

.device-input[readonly] {
  pointer-events: none;
  user-select: none;
}

.device-cell.editing {
  background: rgba(33, 213, 255, 0.12);
  box-shadow: inset 0 0 0 2px rgba(108, 238, 255, 0.88);
}

.device-cell.editing .device-input {
  display: block;
  caret-color: auto;
  cursor: text;
  pointer-events: auto;
  user-select: text;
}

.device-cell-display {
  display: -webkit-box;
  min-height: 44px;
  padding: 8px 6px;
  font-size: 14px;
  line-height: 1.24;
  white-space: normal;
  overflow: hidden;
  overflow-wrap: anywhere;
  word-break: break-word;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.device-cell.editing .device-cell-display {
  display: none;
}

.device-cell.editing .device-input:focus {
  background: rgba(33, 213, 255, 0.10) !important;
  box-shadow: inset 0 0 0 2px rgba(108, 238, 255, 0.88) !important;
}

.device-row:hover .device-cell {
  background: rgba(33, 213, 255, 0.06);
}

.device-row:hover .device-sticky-col {
  background: rgb(5, 34, 70);
}

.device-row:hover .device-cell.editing {
  background: rgba(33, 213, 255, 0.12);
}

.device-row.selected .device-cell {
  background: rgba(255, 214, 102, 0.13);
  box-shadow: inset 0 0 0 1px rgba(255, 214, 102, 0.50);
}

.device-row.selected .device-sticky-col {
  background: rgb(9, 46, 76);
}

.device-row.selected .device-cell.editing {
  background: rgba(33, 213, 255, 0.12);
  box-shadow: inset 0 0 0 2px rgba(108, 238, 255, 0.88);
}

.device-context-menu {
  position: fixed;
  z-index: 3000;
  min-width: 96px;
  padding: 6px;
  border: 1px solid rgba(108, 238, 255, 0.58);
  border-radius: 8px;
  background: rgba(2, 16, 40, 0.96);
  box-shadow: 0 14px 34px rgba(0, 8, 28, 0.36), inset 0 0 16px rgba(24, 175, 255, 0.14);
}

.device-context-menu[hidden] {
  display: none;
}

.device-context-menu button {
  width: 100%;
  padding: 8px 10px;
  border-radius: 6px;
  background: transparent;
  color: #ffd6d6;
  font-weight: 800;
  text-align: left;
}

.device-context-menu button:hover,
.device-context-menu button:focus-visible {
  outline: none;
  background: rgba(255, 107, 107, 0.18);
}

body[data-home-theme]:not([data-home-theme="default"]) .device-row.selected .device-cell {
  background: var(--theme-active-bg) !important;
  box-shadow: inset 0 0 0 1px var(--theme-accent) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-cell.editing {
  background: var(--theme-active-bg) !important;
  box-shadow: inset 0 0 0 2px var(--theme-accent) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-cell.editing .device-input:focus {
  background: var(--theme-active-bg) !important;
  box-shadow: inset 0 0 0 2px var(--theme-accent) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-sticky-col {
  background: var(--theme-panel-bg) !important;
  box-shadow: 1px 0 0 var(--theme-panel-line) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-parameter-table th.device-sticky-col {
  background: var(--theme-control-bg) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-row.selected .device-sticky-col,
body[data-home-theme]:not([data-home-theme="default"]) .device-row:hover .device-cell.editing,
body[data-home-theme]:not([data-home-theme="default"]) .device-cell.device-sticky-col.editing {
  background: var(--theme-active-bg) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .device-context-menu {
  border-color: var(--theme-panel-line) !important;
  background: var(--theme-panel-bg) !important;
  color: var(--theme-text) !important;
}

/* Compact editable time-series table. */
#timeTab #timeTable {
  border-radius: 10px;
}

#timeTab #timeTable table {
  width: 100%;
  min-width: 720px;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 0;
}

#timeTab #timeTable th,
#timeTab #timeTable td {
  height: auto;
  min-width: 0;
  vertical-align: middle;
}

#timeTab #timeTable th {
  padding: 8px 14px;
  font-size: 14px;
}

#timeTab #timeTable td {
  padding: 0;
}

#timeTab #timeTable td:first-child {
  width: 96px;
  padding: 0 14px;
  font-weight: 800;
}

.time-cell {
  cursor: pointer;
  transition: background 0.14s ease, box-shadow 0.14s ease;
}

.time-cell-display {
  display: block;
  min-height: 40px;
  padding: 9px 14px;
  overflow: hidden;
  color: inherit;
  font-size: 14px;
  line-height: 1.28;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.time-cell-input {
  display: none;
  width: 100%;
  min-width: 0;
  height: 40px;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 0 14px;
  background: transparent !important;
  box-shadow: none !important;
  color: inherit !important;
  caret-color: transparent;
  cursor: pointer;
  font-size: 14px;
}

.time-cell-input:focus {
  outline: 0 !important;
}

.time-cell-input[readonly] {
  pointer-events: none;
  user-select: none;
}

#timeTab #timeTable tbody tr:hover td {
  background: rgba(33, 213, 255, 0.05);
}

.time-cell.editing {
  background: rgba(33, 213, 255, 0.12) !important;
  box-shadow: inset 0 0 0 2px rgba(108, 238, 255, 0.86);
}

.time-cell.editing .time-cell-display {
  display: none;
}

.time-cell.editing .time-cell-input {
  display: block;
  caret-color: auto;
  cursor: text;
  pointer-events: auto;
  user-select: text;
}

.time-cell.editing .time-cell-input:focus {
  background: rgba(33, 213, 255, 0.08) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .time-cell.editing {
  background: var(--theme-active-bg) !important;
  box-shadow: inset 0 0 0 2px var(--theme-accent) !important;
}

body[data-home-theme]:not([data-home-theme="default"]) .time-cell.editing .time-cell-input:focus {
  background: var(--theme-active-bg) !important;
}
