/* 2026-05-26 - FIRETRACE - Header 스타일 (UI 개편 #60 — 슬림 다크바) */
/* 파일 위치: frontend/src/components/Header/Header.module.css */

._header_1z0hm_4 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 16px;
  background: var(--surf);
  border-bottom: 1px solid var(--bord);
  min-height: 44px;
}

._left_1z0hm_14 {
  display: flex;
  align-items: center;
  gap: 10px;
}

._logo_1z0hm_20 {
  width: 28px;
  height: 28px;
  border: 2px solid var(--danger);
  border-radius: 6px;
  display: grid;
  place-items: center;
  flex: none;
}

._brand_1z0hm_30 {
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 2px;
  color: var(--t1);
}

._brandFire_1z0hm_37 {
  color: var(--danger);
}

._right_1z0hm_41 {
  display: flex;
  align-items: center;
  gap: 10px;
  position: relative;
}

._btn_1z0hm_48 {
  padding: 4px 12px;
  border-radius: 4px;
  border: 1px solid var(--bord);
  background: transparent;
  color: var(--t2);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
}

._btn_1z0hm_48:hover {
  border-color: var(--teal);
  color: var(--teal);
}

._adminBtn_1z0hm_66 {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 14px;
  border-radius: 4px;
  border: 1px solid var(--teal);
  background: transparent;
  color: var(--teal);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s ease;
  white-space: nowrap;
}

._adminBtn_1z0hm_66:hover {
  background: var(--teal);
  color: #fff;
}

._status_1z0hm_87 {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 1px solid var(--bord);
  border-radius: 6px;
  padding: 4px 10px;
  font-size: 12px;
}

._dot_1z0hm_97 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
}

._statusText_1z0hm_104 {
  color: var(--t2);
}

._clock_1z0hm_108 {
  font-family: var(--mono);
  font-size: 15px;
  color: var(--t1);
}

._clockLabel_1z0hm_114 {
  font-size: 10px;
  color: var(--t3);
}

._themeBtn_1z0hm_119 {
  width: 28px;
  height: 28px;
  border-radius: 6px;
  border: 1px solid var(--bord);
  background: transparent;
  color: var(--t2);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
}

._themeBtn_1z0hm_119:hover {
  border-color: var(--warn);
  color: var(--warn);
}

._helpBtn_1z0hm_138 {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  border: 1px solid var(--bord);
  background: transparent;
  color: var(--t2);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s ease;
}

._helpBtn_1z0hm_138:hover {
  border-color: var(--teal);
  color: var(--teal);
}

._helpPanel_1z0hm_159 {
  position: absolute;
  top: 40px;
  right: 0;
  width: 340px;
  background: var(--elev);
  border: 1px solid var(--bord2);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
  z-index: 10000;
}

._helpHeader_1z0hm_171 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--bord);
}

._helpHeader_1z0hm_171 h3 {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--t1);
}

._closeButton_1z0hm_186 {
  width: 20px;
  height: 20px;
  border: none;
  background: none;
  font-size: 18px;
  color: var(--t3);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}

._closeButton_1z0hm_186:hover {
  color: var(--t1);
}

._helpContent_1z0hm_203 {
  padding: 12px 16px;
}

._helpSection_1z0hm_207 {
  margin-bottom: 12px;
}

._helpSection_1z0hm_207:last-child {
  margin-bottom: 0;
}

._helpSection_1z0hm_207 h4 {
  margin: 0 0 6px 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--teal);
}

._helpSection_1z0hm_207 ul {
  margin: 0;
  padding-left: 16px;
  list-style-type: none;
}

._helpSection_1z0hm_207 li {
  margin-bottom: 4px;
  font-size: 12px;
  color: var(--t2);
  line-height: 1.5;
  position: relative;
}

._helpSection_1z0hm_207 li::before {
  content: '•';
  position: absolute;
  left: -12px;
  color: var(--t3);
}

._helpSection_1z0hm_207 li strong {
  color: var(--t1);
  font-weight: 500;
}
/* 2026-05-26 - FIRETRACE - FloorPlan 스타일 (UI 개편 #60 — 다크 테마) */
/* 파일 위치: frontend/src/components/FloorPlan/FloorPlan.module.css */

._container_3gooj_4 {
  width: 100%;
  height: 100%;
  background: linear-gradient(135deg, #0C1626, #0A1320);
}

._canvas_3gooj_10 {
  width: 100%;
  height: 100%;
  cursor: grab;
}

._canvas_3gooj_10:active {
  cursor: grabbing;
}

._canvasAdjustMode_3gooj_20 {
  width: 100%;
  height: 100%;
  cursor: crosshair;
}

._canvasAdjustMode_3gooj_20:active {
  cursor: move;
}
/* 2026-05-26 - FIRETRACE - 소방관 현황 리스트 패널 (UI 개편 #60) */
/* 파일 위치: frontend/src/components/FirefighterListPanel/FirefighterListPanel.module.css */

._panel_vtiy9_4 {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 6px;
  overflow: hidden;
}

._header_vtiy9_14 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  background: var(--elev);
  border-bottom: 1px solid var(--bord);
  flex: none;
}

._ptitle_vtiy9_24 {
  font-size: 13px;
  font-weight: 700;
  color: var(--t1);
}

._badge_vtiy9_30 {
  font-size: 11px;
  color: var(--t2);
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 10px;
  padding: 1px 8px;
}

._list_vtiy9_39 {
  flex: 1;
  overflow-y: auto;
  padding: 6px;
}

._empty_vtiy9_45 {
  text-align: center;
  color: var(--t3);
  font-size: 12px;
  padding: 20px 0;
}

._card_vtiy9_52 {
  background: var(--bg1);
  border: 1px solid var(--bord);
  border-left: 3px solid var(--bord);
  border-radius: 4px;
  padding: 7px 10px;
  margin-bottom: 5px;
  cursor: pointer;
  transition: background 0.1s ease;
}

._card_vtiy9_52:hover {
  background: var(--elev);
}

._card_vtiy9_52._selected_vtiy9_67 {
  background: var(--elev);
  border-color: var(--bord2);
}

._row1_vtiy9_72 {
  display: flex;
  align-items: center;
  gap: 6px;
}

._dot_vtiy9_78 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
}

._ffId_vtiy9_85 {
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 500;
  color: var(--t1);
}

._statusText_vtiy9_92 {
  font-size: 11px;
  margin-left: auto;
}

._row2_vtiy9_97 {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 4px;
  font-size: 11px;
  color: var(--t2);
}

._coord_vtiy9_106 {
  font-family: var(--mono);
  font-size: 11px;
}

._sensor_vtiy9_111 {
  font-size: 11px;
}

._elapsed_vtiy9_115 {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--t3);
}
/* 2026-05-26 - FIRETRACE - 앵커 현황 패널 (UI 개편 #60 — 고정 Grid 패널) */
/* 파일 위치: frontend/src/components/AnchorPanel/AnchorPanel.module.css */

._panel_ps0fd_4 {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 6px;
  overflow: hidden;
}

._header_ps0fd_14 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  background: var(--elev);
  border-bottom: 1px solid var(--bord);
  flex: none;
}

._ptitle_ps0fd_24 {
  font-size: 13px;
  font-weight: 700;
  color: var(--t1);
}

._badge_ps0fd_30 {
  font-size: 11px;
  color: var(--t2);
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 10px;
  padding: 1px 8px;
}

._list_ps0fd_39 {
  flex: 1;
  overflow-y: auto;
  padding: 6px;
}

._empty_ps0fd_45 {
  text-align: center;
  color: var(--t3);
  font-size: 12px;
  padding: 20px 0;
}

._card_ps0fd_52 {
  background: var(--bg1);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 6px 10px;
  margin-bottom: 4px;
}

._row1_ps0fd_60 {
  display: flex;
  align-items: center;
  gap: 6px;
}

._dot_ps0fd_66 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
}

._anchorId_ps0fd_73 {
  font-family: var(--mono);
  font-size: 13px;
  font-weight: 500;
  color: var(--t1);
}

._statusBadge_ps0fd_80 {
  margin-left: auto;
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 3px;
}

._statusBadge_ps0fd_80._active_ps0fd_87 {
  background: rgba(34, 197, 94, 0.15);
  color: var(--ok);
}

._statusBadge_ps0fd_80._inactive_ps0fd_92 {
  background: rgba(239, 68, 68, 0.15);
  color: var(--danger);
}

._row2_ps0fd_97 {
  margin-top: 3px;
}

._coord_ps0fd_101 {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--t2);
}

._footer_ps0fd_107 {
  padding: 4px 12px;
  border-top: 1px solid var(--bord);
  font-family: var(--mono);
  font-size: 10px;
  color: var(--t3);
  text-align: right;
  flex: none;
}
/* 2026-05-26 - FIRETRACE - 조작 모드 바 (UI 개편 #60 — 하단 수평 바) */
/* 파일 위치: frontend/src/components/ModeControlPanel/ModeControlPanel.module.css */

._bar_13l7i_4 {
  display: flex;
  align-items: center;
  gap: 4px;
}

._btn_13l7i_10 {
  padding: 4px 10px;
  border-radius: 4px;
  border: 1px solid var(--bord);
  background: transparent;
  color: var(--t2);
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.12s ease;
  white-space: nowrap;
}

._btn_13l7i_10:hover {
  border-color: var(--teal);
  color: var(--teal);
}

._btn_13l7i_10._active_13l7i_28 {
  background: rgba(47, 184, 166, 0.15);
  border-color: var(--teal);
  color: var(--teal);
}

._sep_13l7i_34 {
  width: 1px;
  height: 18px;
  background: var(--bord);
  margin: 0 4px;
}
/* 2026-05-26 - FIRETRACE - 통신/신호 상태 패널 (UI 개편 #60 — 고정 Grid 패널) */
/* 파일 위치: frontend/src/components/ReceptionStatusPanel/ReceptionStatusPanel.module.css */

._panel_1hb9k_4 {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 6px;
  overflow: hidden;
}

._header_1hb9k_14 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  background: var(--elev);
  border-bottom: 1px solid var(--bord);
  flex: none;
}

._ptitle_1hb9k_24 {
  font-size: 13px;
  font-weight: 700;
  color: var(--t1);
}

._connChip_1hb9k_30 {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  color: var(--t2);
  border: 1px solid var(--bord);
  border-radius: 6px;
  padding: 2px 8px;
}

._dot_1hb9k_41 {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
}

._list_1hb9k_48 {
  flex: 1;
  overflow-y: auto;
  padding: 8px 10px;
}

._section_1hb9k_54 {
  margin-bottom: 10px;
}

._section_1hb9k_54:last-child {
  margin-bottom: 0;
}

._sectionTitle_1hb9k_62 {
  font-size: 11px;
  font-weight: 600;
  color: var(--t3);
  margin-bottom: 4px;
  padding-bottom: 3px;
  border-bottom: 1px solid var(--bord);
}

._row_1hb9k_71 {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 0;
}

._itemId_1hb9k_78 {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--t1);
  min-width: 36px;
}

._elapsed_1hb9k_85 {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 11px;
}

._empty_1hb9k_91 {
  color: var(--t3);
  font-size: 11px;
  padding: 4px 0;
}
/* 2026-05-26 - FIRETRACE - 열화상 패널 (UI 개편 #60 — 고정 Grid 패널) */
/* 파일 위치: frontend/src/components/ThermalPanel/ThermalPanel.module.css */

._panel_ulu8d_4 {
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 6px;
  overflow: hidden;
}

._header_ulu8d_14 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  background: var(--elev);
  border-bottom: 1px solid var(--bord);
  flex: none;
}

._ptitle_ulu8d_24 {
  font-size: 13px;
  font-weight: 700;
  color: var(--t1);
}

._ffId_ulu8d_30 {
  font-family: var(--mono);
  font-size: 12px;
  color: var(--teal);
}

._body_ulu8d_36 {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: 8px;
  min-height: 0;
}

._placeholder_ulu8d_44 {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--t3);
  font-size: 12px;
}

._canvasContainer_ulu8d_53 {
  position: relative;
  width: 100%;
  flex: 1;
  min-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

._canvas_ulu8d_53 {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  image-rendering: pixelated;
  border-radius: 4px;
  background: #000;
}

._noDataOverlay_ulu8d_73 {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.6);
  color: var(--t3);
  font-size: 12px;
}

._legend_ulu8d_84 {
  margin-top: 6px;
  flex: none;
}

._legendBar_ulu8d_89 {
  width: 100%;
  height: 8px;
  border-radius: 3px;
  border: 1px solid var(--bord);
}

._legendTicks_ulu8d_96 {
  display: flex;
  justify-content: space-between;
  margin-top: 2px;
}

._legendTick_ulu8d_96 {
  font-family: var(--mono);
  font-size: 9px;
  font-variant-numeric: tabular-nums;
  color: var(--t3);
}

._stats_ulu8d_109 {
  display: flex;
  justify-content: space-around;
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid var(--bord);
  flex: none;
}

._statItem_ulu8d_118 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

._statLabel_ulu8d_125 {
  font-size: 10px;
  color: var(--t3);
}

._statValue_ulu8d_130 {
  font-family: var(--mono);
  font-size: 12px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--t1);
}

._statHigh_ulu8d_138 {
  color: var(--danger);
}

._footer_ulu8d_142 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 4px;
  padding-top: 4px;
  border-top: 1px solid var(--bord);
  flex: none;
}

._dataSource_ulu8d_152 {
  font-size: 10px;
  color: var(--teal);
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
}

._dataSource_ulu8d_152:hover {
  color: var(--info);
}

._timestamp_ulu8d_165 {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--t3);
}
/* 2026-05-26 - FIRETRACE - Dashboard 스타일 (UI 개편 #60 — 고정 Grid 레이아웃) */
/* 파일 위치: frontend/src/pages/Dashboard.module.css */

._layout_zlnzw_4 {
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

._main_zlnzw_11 {
  display: grid;
  grid-template-columns: 280px 1fr 320px;
  grid-template-rows: 1fr 1fr;
  gap: 8px;
  flex: 1;
  padding: 8px;
  min-height: 0;
}

._leftTop_zlnzw_21 {
  grid-area: 1 / 1 / 2 / 2;
  overflow: hidden;
  min-height: 0;
}

._leftBottom_zlnzw_27 {
  grid-area: 2 / 1 / 3 / 2;
  overflow: hidden;
  min-height: 0;
}

._center_zlnzw_33 {
  grid-area: 1 / 2 / 3 / 3;
  overflow: hidden;
  min-height: 0;
  border-radius: 6px;
  border: 1px solid var(--bord);
}

._rightTop_zlnzw_41 {
  grid-area: 1 / 3 / 2 / 3;
  overflow: hidden;
  min-height: 0;
}

._rightBottom_zlnzw_47 {
  grid-area: 2 / 3 / 3 / 3;
  overflow: hidden;
  min-height: 0;
}

._bottomBar_zlnzw_53 {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 16px;
  background: var(--surf);
  border-top: 1px solid var(--bord);
}
/* 2026-06-08 - FIRETRACE - JSON 뷰어 스타일 (#65 — 테마 연동·구문 색상) */
/* 파일 위치: frontend/src/components/JsonViewer/JsonViewer.module.css */

._container_1lhom_4 {
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  overflow: hidden;
}

._toolbar_1lhom_13 {
  display: flex;
  gap: 4px;
  padding: 8px;
  background: var(--elev);
  border-bottom: 1px solid var(--bord);
}

._toolbar_1lhom_13 button {
  padding: 4px 12px;
  background: var(--surf);
  color: var(--t2);
  border: 1px solid var(--bord);
  border-radius: 3px;
  cursor: pointer;
  font-size: 12px;
  transition: background 0.2s;
}

._toolbar_1lhom_13 button:hover {
  background: var(--elev);
  border-color: var(--teal);
}

._toolbar_1lhom_13 button._active_1lhom_37 {
  background: var(--teal);
  color: var(--bg0);
  border-color: var(--teal);
}

._content_1lhom_43 {
  flex: 1;
  margin: 0;
  padding: 8px;
  background: var(--bg1);
  color: var(--t1);
  font-family: var(--mono), 'Consolas', 'Monaco', 'Courier New', monospace;
  font-size: 10px;
  line-height: 1.5;
  overflow: auto;
  white-space: pre-wrap;
  word-wrap: break-word;
  height: 250px;
  max-height: 250px;
}

._empty_1lhom_59 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 250px;
  text-align: center;
  color: var(--t3);
  font-size: 14px;
}

/* 구문 색상 토큰 (다크 테마 기준) */
._tokKey_1lhom_70 {
  color: var(--teal);
}

._tokString_1lhom_74 {
  color: var(--ok);
}

._tokNumber_1lhom_78 {
  color: var(--warn);
}

._tokLiteral_1lhom_82 {
  color: var(--blue);
}

._tokBrace_1lhom_86 {
  color: var(--t3);
  font-weight: 600;
}

._tokBracket_1lhom_91 {
  color: var(--info);
  font-weight: 600;
}

._tokPunct_1lhom_96 {
  color: var(--t3);
}

/* 라이트 테마 가독성 보정 */
[data-theme='light'] ._tokString_1lhom_74 {
  color: #1a7f37;
}

[data-theme='light'] ._tokNumber_1lhom_78 {
  color: #b35309;
}

[data-theme='light'] ._tokBracket_1lhom_91 {
  color: #0969da;
}
/* 2026-05-25 - FIRETRACE - MQTT 설정 패널 스타일 (#59) */
/* 파일 위치: frontend/src/components/MqttSettingsPanel/MqttSettingsPanel.module.css */

/* 바깥 브로커 정보 카드 안에 들어가므로 자체 카드 스타일 제거 (한 겹으로) */
._panelInline_z2br8_5 {
  position: static;
  width: 100%;
  background: transparent;
  border: none;
  border-radius: 0;
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

._content_z2br8_15 {
  padding: 0;
}

._section_z2br8_19 {
  margin-bottom: 16px;
}

._section_z2br8_19:last-child {
  margin-bottom: 0;
}

._sectionTitle_z2br8_27 {
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

._modeGroup_z2br8_36 {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 8px;
}

._modeOption_z2br8_43 {
  flex: 1;
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px;
  min-height: 120px;
  border-radius: 6px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  cursor: pointer;
  transition: all 0.2s;
}

._brokerInputs_z2br8_56 {
  margin-top: 10px;
}

._modeOption_z2br8_43:hover {
  border-color: rgba(24, 144, 255, 0.4);
}

._modeOptionActive_z2br8_64 {
  border-color: rgba(24, 144, 255, 0.6);
  background: rgba(24, 144, 255, 0.08);
}

._radio_z2br8_69 {
  accent-color: #1890ff;
  width: 16px;
  height: 16px;
  cursor: pointer;
  margin-top: 2px;
}

._modeInfo_z2br8_77 {
  flex: 1;
}

._modeName_z2br8_81 {
  font-size: 14px;
  font-weight: 500;
  color: var(--t1);
  margin-bottom: 2px;
}

._modeDesc_z2br8_88 {
  font-size: 12px;
  color: var(--t3);
}

._inputRow_z2br8_93 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 13px;
}

._inputLabel_z2br8_101 {
  width: 50px;
  color: var(--t3);
  flex-shrink: 0;
}

._textInput_z2br8_107 {
  flex: 1;
  padding: 6px 10px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  color: var(--t1);
  font-size: 13px;
}

._textInput_z2br8_107:focus {
  outline: none;
  border-color: #1890ff;
}

._textInput_z2br8_107:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

._numberInput_z2br8_127 {
  width: 80px;
  padding: 6px 10px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  color: var(--t1);
  font-size: 13px;
  text-align: right;
}

._numberInput_z2br8_127:focus {
  outline: none;
  border-color: #1890ff;
}

._numberInput_z2br8_127:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

._statusRow_z2br8_148 {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.05);
  border-radius: 6px;
  font-size: 13px;
}

._statusDot_z2br8_158 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

._statusDotConnected_z2br8_165 {
  background: #52c41a;
  box-shadow: 0 0 6px rgba(82, 196, 26, 0.5);
}

._statusDotDisconnected_z2br8_170 {
  background: #ff4d4f;
}

._statusText_z2br8_174 {
  color: var(--t3);
}

._statusBroker_z2br8_178 {
  color: #1890ff;
  font-family: monospace;
}

._applyButton_z2br8_183 {
  width: 100%;
  padding: 10px;
  background: rgba(24, 144, 255, 0.2);
  border: 1px solid rgba(24, 144, 255, 0.5);
  border-radius: 6px;
  color: #1890ff;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

._applyButton_z2br8_183:hover:not(:disabled) {
  background: rgba(24, 144, 255, 0.3);
}

._applyButton_z2br8_183:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

._message_z2br8_205 {
  margin-top: 8px;
  padding: 8px 12px;
  border-radius: 4px;
  font-size: 13px;
}

._messageSuccess_z2br8_212 {
  background: rgba(82, 196, 26, 0.15);
  border: 1px solid rgba(82, 196, 26, 0.3);
  color: #52c41a;
}

._messageError_z2br8_218 {
  background: rgba(255, 77, 79, 0.15);
  border: 1px solid rgba(255, 77, 79, 0.3);
  color: #ff4d4f;
}
/* 2026-05-26 - FIRETRACE - 현장 관리 페이지 스타일 (#62 테마 변수 전환) */
/* 파일 위치: frontend/src/pages/SiteManagement.module.css */

._layout_11u0q_4 {
  display: flex;
  flex-direction: column;
  height: 100vh;
  background: linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 100%);
  color: var(--t1);
}

._embedded_11u0q_12 {
  display: flex;
  flex-direction: column;
  flex: 1;
  color: var(--t1);
  min-height: 0;
}

._content_11u0q_20 {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow-y: auto;
  padding: 16px;
  gap: 16px;
}

/* MQTT 모니터 카드 안에 임베드될 때는 카드 패딩을 사용 (이중 패딩 방지) */
._embedded_11u0q_12 ._content_11u0q_20 {
  padding: 0;
}

._siteDetails_11u0q_34 {
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 16px;
}

._siteDetails_11u0q_34 h3 {
  margin: 0 0 12px 0;
  font-size: 16px;
  color: var(--t1);
  font-weight: 600;
}

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

._detailsHeader_11u0q_48 h3 {
  margin: 0;
}

._refreshControl_11u0q_59 {
  display: flex;
  align-items: center;
  gap: 8px;
}

._refreshIcon_11u0q_65 {
  width: 20px;
  height: 20px;
  display: inline-block;
  color: var(--teal);
}

._refreshIcon_11u0q_65._spinning_11u0q_72 {
  animation: _spin_11u0q_72 2s linear infinite;
}

@keyframes _spin_11u0q_72 {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

._intervalSelect_11u0q_81 {
  padding: 4px 8px;
  font-size: 13px;
  border: 1px solid var(--bord);
  border-radius: 4px;
  background: var(--surf);
  color: var(--t1);
  cursor: pointer;
}

._intervalSelect_11u0q_81:hover {
  border-color: var(--teal);
}

._refreshToggle_11u0q_95 {
  padding: 4px 12px;
  font-size: 16px;
  border: 1px solid var(--bord);
  border-radius: 4px;
  background: var(--surf);
  color: var(--t1);
  cursor: pointer;
  transition: all 0.2s;
}

._refreshToggle_11u0q_95:hover {
  background: var(--elev);
  border-color: var(--teal);
}

._stats_11u0q_111 {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  font-size: 14px;
  color: var(--t2);
}

._stats_11u0q_111 div {
  padding: 8px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 3px;
}

._connRow_11u0q_126 {
  display: flex;
  align-items: center;
  gap: 8px;
}

._statusDot_11u0q_132 {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--t3);
}

._statusDotConnected_11u0q_140 {
  background: var(--ok);
  box-shadow: 0 0 6px var(--ok);
}

._settings_11u0q_145 {
  margin-top: 12px;
  padding: 12px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: 12px;
}

._settings_11u0q_145 label {
  font-size: 14px;
  color: var(--t1);
  font-weight: 500;
}

._modeSelect_11u0q_162 {
  padding: 6px 12px;
  font-size: 14px;
  border: 1px solid var(--bord);
  border-radius: 4px;
  background: var(--surf);
  color: var(--t1);
  cursor: pointer;
  transition: all 0.2s;
}

._modeSelect_11u0q_162:hover {
  border-color: var(--teal);
}

._modeSelect_11u0q_162:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 2px rgba(47, 184, 166, 0.2);
}

/* MQTT Monitor */
._mqttMonitor_11u0q_184 {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

._mqttSection_11u0q_190 {
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 16px;
  overflow: visible;
}

._sectionHeader_11u0q_200 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

._sectionHeader_11u0q_200 h4 {
  margin: 0;
  font-size: 13px;
  color: var(--t1);
  font-weight: 500;
  flex: 1;
}

._emptyMessage_11u0q_215 {
  padding: 40px;
  text-align: center;
  color: var(--t3);
  font-size: 14px;
}

/* Button Group */
._buttonGroup_11u0q_223 {
  display: flex;
  gap: 4px;
  flex-wrap: nowrap;
  min-width: 0;
  overflow-x: auto;
}

._idButton_11u0q_231 {
  padding: 4px 12px;
  background: var(--surf);
  color: var(--t2);
  border: 1px solid var(--bord);
  border-radius: 4px;
  cursor: pointer;
  font-size: 13px;
  flex-shrink: 0;
  transition: all 0.2s;
}

._idButton_11u0q_231:hover {
  background: var(--elev);
  border-color: var(--teal);
}

._idButton_11u0q_231._active_11u0q_248 {
  background: var(--teal);
  color: #fff;
  border-color: var(--teal);
}

._customIdInput_11u0q_254 {
  width: 72px;
  padding: 4px 8px;
  font-size: 13px;
  font-family: monospace;
  border: 1px solid var(--teal);
  border-radius: 4px;
  outline: none;
  background: var(--surf);
  color: var(--t1);
  box-shadow: 0 0 0 2px rgba(47, 184, 166, 0.2);
}

._messageInfo_11u0q_267 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  padding: 8px;
  background: var(--elev);
  border-radius: 4px;
  font-size: 12px;
  color: var(--t2);
}

/* Topic Viewer */
._topicViewer_11u0q_280 {
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 16px;
  gap: 8px;
  flex-shrink: 0;
}

._topicInputRow_11u0q_291 {
  display: flex;
  gap: 8px;
}

._topicInputField_11u0q_296 {
  width: 80%;
  padding: 6px 10px;
  font-size: 13px;
  font-family: monospace;
  border: 1px solid var(--bord);
  border-radius: 4px;
  background: var(--surf);
  color: var(--t1);
  outline: none;
}

._topicInputField_11u0q_296:focus {
  border-color: var(--teal);
  box-shadow: 0 0 0 2px rgba(47, 184, 166, 0.2);
}

._topicWatchButton_11u0q_313 {
  padding: 6px 16px;
  font-size: 13px;
  background: var(--teal);
  color: #fff;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
}

._topicWatchButton_11u0q_313:hover {
  opacity: 0.85;
}

._topicCopyButton_11u0q_328 {
  padding: 6px 12px;
  font-size: 13px;
  background: var(--surf);
  color: var(--t2);
  border: 1px solid var(--bord);
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
}

._topicCopyButton_11u0q_328:hover {
  background: var(--elev);
  border-color: var(--teal);
}

._topicCopyButton_11u0q_328._copied_11u0q_344 {
  background: var(--elev);
  border-color: var(--ok);
  color: var(--ok);
}

._topicWatching_11u0q_350 {
  font-size: 12px;
  color: var(--teal);
  font-family: monospace;
}

._topicTime_11u0q_356 {
  font-size: 12px;
  color: var(--t2);
}

._topicRaw_11u0q_361 {
  margin: 0;
  padding: 12px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
  font-size: 12px;
  line-height: 1.5;
  color: var(--t1);
  white-space: pre-wrap;
  word-wrap: break-word;
  overflow-y: auto;
  max-height: calc(12px * 1.5 * 5 + 24px);
  min-height: 40px;
}

/* ===== #65 통합 레이아웃 ===== */

/* 상단 2열: 현장 정보(좌) + MQTT 설정(우) */
._topRow_11u0q_381 {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
  gap: 16px;
  align-items: stretch;
}

@media (max-width: 1100px) {
  ._topRow_11u0q_381 {
    grid-template-columns: 1fr;
  }
}

._siteCard_11u0q_394,
._mqttCard_11u0q_395 {
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 16px;
  min-width: 0;
}

._siteCard_11u0q_394 h3,
._mqttCard_11u0q_395 h3 {
  margin: 0 0 12px 0;
  font-size: 16px;
  color: var(--t1);
  font-weight: 600;
}

/* 하단 MQTT 뷰어 카드 */
._viewerCard_11u0q_412 {
  display: flex;
  flex-direction: column;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 16px;
  gap: 12px;
}

._viewerToolbar_11u0q_422 {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}

._viewerTitle_11u0q_429 {
  font-size: 15px;
  font-weight: 600;
  color: var(--t1);
}

._modeButtons_11u0q_435 {
  display: flex;
  gap: 4px;
}

._modeButton_11u0q_435 {
  padding: 4px 14px;
  background: var(--surf);
  color: var(--t2);
  border: 1px solid var(--bord);
  border-radius: 3px;
  cursor: pointer;
  font-size: 12px;
  transition: all 0.2s;
}

._modeButton_11u0q_435:hover {
  background: var(--elev);
  border-color: var(--teal);
}

._modeButton_11u0q_435._active_11u0q_248 {
  background: var(--teal);
  color: var(--bg0);
  border-color: var(--teal);
}

/* 리프레시 컨트롤을 툴바 우측으로 */
._viewerToolbar_11u0q_422 ._refreshControl_11u0q_59 {
  margin-left: auto;
}

/* 2×2 뷰어 그리드 */
._viewerGrid_11u0q_468 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

@media (max-width: 1100px) {
  ._viewerGrid_11u0q_468 {
    grid-template-columns: 1fr;
  }
}

._viewerCell_11u0q_480 {
  display: flex;
  flex-direction: column;
  gap: 4px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  padding: 6px;
  min-width: 0;
}

._cellHeader_11u0q_491 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  min-height: 30px;
}

._cellTitle_11u0q_499 {
  display: flex;
  align-items: baseline;
  gap: 8px;
  min-width: 0;
  flex: 1;
}

._cellTitle_11u0q_499 h4 {
  margin: 0;
  font-size: 13px;
  color: var(--t1);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

._recvTime_11u0q_517 {
  font-size: 11px;
  color: var(--t3);
  white-space: nowrap;
  flex-shrink: 0;
}

._topicPlaceholder_11u0q_524 {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 250px;
  text-align: center;
  color: var(--t3);
  font-size: 12px;
  background: var(--bg1);
  border: 1px solid var(--bord);
  border-radius: 4px;
}

/* Topic 뷰어 헤더 입력창 (토픽명 자리) */
._topicHeaderInput_11u0q_538 {
  flex: 1;
  min-width: 0;
  padding: 3px 8px;
  font-size: 12px;
  font-family: var(--mono), monospace;
  border: 1px solid var(--bord);
  border-radius: 4px;
  background: var(--surf);
  color: var(--t1);
  outline: none;
}

._topicHeaderInput_11u0q_538:focus {
  border-color: var(--teal);
}
/* 2026-01-23 - FIRETRACE - 칼만필터 설정 패널 스타일 */
/* 파일 위치: frontend/src/components/KalmanSettingsPanel/KalmanSettingsPanel.module.css */

._panel_dwg24_4 {
  position: fixed;
  right: 20px;
  top: 80px;
  width: 320px;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  z-index: 1000;
  backdrop-filter: blur(10px);
}

/* 설정 페이지 내 인라인 표시용 */
._panelInline_dwg24_20 {
  position: static;
  width: 100%;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  backdrop-filter: blur(10px);
}

._panelInline_dwg24_20 ._header_dwg24_31 {
  display: none;
}

._panelInline_dwg24_20 ._content_dwg24_35 {
  max-height: none;
  overflow-y: visible;
}

._header_dwg24_31 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: rgba(0, 0, 0, 0.3);
  border-bottom: 1px solid var(--bord);
  border-radius: 8px 8px 0 0;
  cursor: move;
  user-select: none;
}

._title_dwg24_52 {
  font-size: 14px;
  font-weight: 600;
  color: var(--t1);
}

._closeButton_dwg24_58 {
  background: none;
  border: none;
  color: var(--t1);
  font-size: 18px;
  cursor: pointer;
  padding: 0;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background 0.2s;
}

._closeButton_dwg24_58:hover {
  background: var(--bord);
}

._content_dwg24_35 {
  padding: 16px;
  max-height: 610px;
  overflow-y: auto;
}

._section_dwg24_84 {
  margin-bottom: 20px;
}

._section_dwg24_84:last-child {
  margin-bottom: 0;
}

._sectionTitle_dwg24_92 {
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

._toggleContainer_dwg24_101 {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 0;
}

._toggleLabel_dwg24_108 {
  font-size: 13px;
  color: var(--t1);
}

._toggle_dwg24_101 {
  position: relative;
  width: 48px;
  height: 24px;
  background: var(--bord);
  border-radius: 12px;
  cursor: pointer;
  transition: background 0.3s;
}

._toggle_dwg24_101._active_dwg24_123 {
  background: #52c41a;
}

._toggleSwitch_dwg24_127 {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 20px;
  height: 20px;
  background: white;
  border-radius: 50%;
  transition: transform 0.3s;
}

._toggle_dwg24_101._active_dwg24_123 ._toggleSwitch_dwg24_127 {
  transform: translateX(24px);
}

._sliderContainer_dwg24_142 {
  margin-bottom: 16px;
}

._sliderLabel_dwg24_146 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  font-size: 13px;
}

._sliderName_dwg24_154 {
  color: var(--t1);
}

._sliderValue_dwg24_158 {
  color: #52c41a;
  font-weight: 600;
}

._slider_dwg24_142 {
  width: 100%;
  height: 6px;
  border-radius: 3px;
  background: var(--bord);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

._slider_dwg24_142::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #52c41a;
  cursor: pointer;
  transition: background 0.2s;
}

._slider_dwg24_142::-webkit-slider-thumb:hover {
  background: #73d13d;
}

._slider_dwg24_142::-moz-range-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #52c41a;
  cursor: pointer;
  border: none;
  transition: background 0.2s;
}

._slider_dwg24_142::-moz-range-thumb:hover {
  background: #73d13d;
}

._description_dwg24_202 {
  font-size: 11px;
  color: var(--t3);
  margin-top: 4px;
  line-height: 1.4;
}

/* 슬라이더 좌/우 힌트: 좌측은 좌측 정렬, 우측은 우측 정렬 */
._rangeHint_dwg24_210 {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  font-size: 11px;
  color: var(--t3);
  margin-top: 4px;
  line-height: 1.4;
}

._rangeHint_dwg24_210 span:last-child {
  text-align: right;
}

._resetButton_dwg24_224 {
  width: 100%;
  padding: 10px;
  background: rgba(82, 196, 26, 0.2);
  border: 1px solid rgba(82, 196, 26, 0.5);
  border-radius: 6px;
  color: #52c41a;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

._resetButton_dwg24_224:hover {
  background: rgba(82, 196, 26, 0.3);
  border-color: #52c41a;
}

/* 인라인(설정 카드) 모드: 초기화 버튼을 카드 하단에 정렬 (좌우 카드 줄맞춤) */
._panelInline_dwg24_20 {
  display: flex;
  flex-direction: column;
}

._panelInline_dwg24_20 ._content_dwg24_35 {
  display: flex;
  flex-direction: column;
  flex: 1;
}

._panelInline_dwg24_20 ._content_dwg24_35 > ._section_dwg24_84:last-child {
  margin-top: auto;
}
/* 2026-02-25 - FIRETRACE - PDR 설정 패널 스타일 */
/* 파일 위치: frontend/src/components/PdrSettingsPanel/PdrSettingsPanel.module.css */

._panel_b3k6d_4 {
  position: fixed;
  right: 360px;
  top: 80px;
  width: 300px;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  z-index: 1000;
  backdrop-filter: blur(10px);
}

/* 설정 페이지 내 인라인 표시용 */
._panelInline_b3k6d_20 {
  position: static;
  width: 100%;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  backdrop-filter: blur(10px);
}

._panelInline_b3k6d_20 ._header_b3k6d_31 {
  display: none;
}

._panelInline_b3k6d_20 ._content_b3k6d_35 {
  max-height: none;
  overflow-y: visible;
}

._header_b3k6d_31 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: rgba(0, 0, 0, 0.3);
  border-bottom: 1px solid var(--bord);
  border-radius: 8px 8px 0 0;
}

._title_b3k6d_50 {
  font-size: 14px;
  font-weight: 600;
}

._closeButton_b3k6d_55 {
  background: none;
  border: none;
  color: var(--t1);
  font-size: 18px;
  cursor: pointer;
  padding: 0;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
}

._closeButton_b3k6d_55:hover {
  background: var(--bord);
}

._content_b3k6d_35 {
  padding: 16px;
  max-height: 500px;
  overflow-y: auto;
}

._section_b3k6d_80 {
  margin-bottom: 16px;
}

._section_b3k6d_80:last-child {
  margin-bottom: 0;
}

._sectionTitle_b3k6d_88 {
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

._sliderContainer_b3k6d_97 {
  margin-bottom: 14px;
}

._sliderLabel_b3k6d_101 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
  font-size: 13px;
}

._sliderName_b3k6d_109 {
  color: var(--t1);
}

._sliderValue_b3k6d_113 {
  color: #1890ff;
  font-weight: 600;
}

._slider_b3k6d_97 {
  width: 100%;
  height: 6px;
  border-radius: 3px;
  background: var(--bord);
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

._slider_b3k6d_97::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #1890ff;
  cursor: pointer;
}

._slider_b3k6d_97::-moz-range-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: #1890ff;
  cursor: pointer;
  border: none;
}

._infoRow_b3k6d_147 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  font-size: 13px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

._infoLabel_b3k6d_156 {
  color: var(--t3);
}

._infoValue_b3k6d_160 {
  color: var(--t1);
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

._resetButton_b3k6d_166 {
  width: 100%;
  padding: 8px;
  background: rgba(24, 144, 255, 0.2);
  border: 1px solid rgba(24, 144, 255, 0.5);
  border-radius: 6px;
  color: #1890ff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

._resetButton_b3k6d_166:hover {
  background: rgba(24, 144, 255, 0.3);
}

._refreshButton_b3k6d_183 {
  background: none;
  border: 1px solid var(--bord);
  color: var(--t3);
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 4px;
  cursor: pointer;
}

._refreshButton_b3k6d_183:hover {
  border-color: rgba(255, 255, 255, 0.4);
  color: var(--t1);
}

._description_b3k6d_198 {
  font-size: 11px;
  color: var(--t3);
  margin-top: 4px;
}

/* 인라인(설정 카드) 모드: 초기화 버튼을 카드 하단에 정렬 (좌우 카드 줄맞춤) */
._panelInline_b3k6d_20 {
  display: flex;
  flex-direction: column;
}

._panelInline_b3k6d_20 ._content_b3k6d_35 {
  display: flex;
  flex-direction: column;
  flex: 1;
}

._panelInline_b3k6d_20 ._content_b3k6d_35 > ._section_b3k6d_80:last-child {
  margin-top: auto;
}
/* 2026-03-19 - FIRETRACE - 열화상 설정 패널 스타일 */
/* 파일 위치: frontend/src/components/ThermalSettingsPanel/ThermalSettingsPanel.module.css */

._panel_r6k4d_4 {
  position: fixed;
  right: 360px;
  top: 80px;
  width: 300px;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  z-index: 1000;
  backdrop-filter: blur(10px);
}

._panelInline_r6k4d_19 {
  position: static;
  width: 100%;
  background: var(--surf);
  border: 1px solid var(--bord);
  border-radius: 8px;
  color: var(--t1);
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
  backdrop-filter: blur(10px);
}

._panelInline_r6k4d_19 ._header_r6k4d_30 {
  display: none;
}

._panelInline_r6k4d_19 ._content_r6k4d_34 {
  max-height: none;
  overflow-y: visible;
}

._header_r6k4d_30 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  background: rgba(0, 0, 0, 0.3);
  border-bottom: 1px solid var(--bord);
  border-radius: 8px 8px 0 0;
}

._title_r6k4d_49 {
  font-size: 14px;
  font-weight: 600;
}

._closeButton_r6k4d_54 {
  background: none;
  border: none;
  color: var(--t1);
  font-size: 18px;
  cursor: pointer;
  padding: 0;
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
}

._closeButton_r6k4d_54:hover {
  background: var(--bord);
}

._content_r6k4d_34 {
  padding: 16px;
  max-height: 500px;
  overflow-y: auto;
}

._section_r6k4d_79 {
  margin-bottom: 16px;
}

._section_r6k4d_79:last-child {
  margin-bottom: 0;
}

._sectionTitle_r6k4d_87 {
  font-size: 12px;
  font-weight: 600;
  color: var(--t2);
  margin-bottom: 10px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

._radioGroup_r6k4d_96 {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

._radioLabel_r6k4d_102 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 6px;
  border: 1px solid transparent;
  transition: border-color 0.15s;
}

._radioLabelActive_r6k4d_114 {
  border-color: rgba(24, 144, 255, 0.6);
  background: rgba(24, 144, 255, 0.08);
}

._paletteOption_r6k4d_119 {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
}

/* 팔레트 직접 클릭 선택 (텍스트 좌 + 색상바 우) */
._paletteList_r6k4d_127 {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

._paletteItem_r6k4d_133 {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 6px 10px;
  border-radius: 6px;
  border: 1px solid var(--bord);
  background: var(--surf);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

._paletteItem_r6k4d_133:hover {
  border-color: var(--teal);
}

._paletteItemActive_r6k4d_149 {
  border-color: var(--teal);
  background: var(--elev);
}

._paletteName_r6k4d_154 {
  flex-shrink: 0;
  width: 84px;
  text-align: left;
  font-size: 13px;
  color: var(--t1);
}

._paletteBar_r6k4d_162 {
  height: 16px;
  border-radius: 4px;
  flex: 1;
}

/* 온도 구간 참조 바 (선택 팔레트보다 크게) */
._tempRefBar_r6k4d_169 {
  height: 28px;
  border-radius: 4px;
  width: 100%;
  border: 1px solid var(--bord);
}

/* 눈금 트랙 (절대 위치 라벨 기준) */
._refTrack_r6k4d_177 {
  position: relative;
  height: 16px;
  margin: 3px 0;
}

._refTickTop_r6k4d_183,
._refTickBottom_r6k4d_184 {
  position: absolute;
  top: 0;
  font-size: 11px;
  font-family: var(--mono), monospace;
  white-space: nowrap;
}

._refTickTop_r6k4d_183 {
  color: var(--t1);
}

._refTickBottom_r6k4d_184 {
  color: var(--t3);
}

/* 표시 구간: Raw / 온도 좌우 + 점선 연결 */
._boundTable_r6k4d_201 {
  display: grid;
  grid-template-columns: 40px 1fr 56px 1fr;
  row-gap: 10px;
  column-gap: 8px;
  align-items: center;
}

._boundHeaderRow_r6k4d_209 {
  display: contents;
}

._boundHeaderRow_r6k4d_209 ._sectionTitle_r6k4d_87 {
  margin: 0;
}

._boundRow_r6k4d_217 {
  display: contents;
}

._boundLabel_r6k4d_221 {
  font-size: 12px;
  color: var(--t2);
  font-weight: 500;
}

._boundCell_r6k4d_227 {
  display: flex;
  align-items: center;
  gap: 6px;
}

._connector_r6k4d_233 {
  align-self: center;
  border-top: 1px dashed var(--t3);
  height: 0;
}

/* 표시 구간 세로 배치 */
._rangeGroup_r6k4d_240 {
  margin-bottom: 12px;
}

._rangeGroup_r6k4d_240:last-child {
  margin-bottom: 0;
}

._rangeInline_r6k4d_248 {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

._paletteLabel_r6k4d_255 {
  font-size: 12px;
  color: var(--t3);
}

._radio_r6k4d_96 {
  accent-color: #1890ff;
  width: 14px;
  height: 14px;
  cursor: pointer;
}

._inputRow_r6k4d_267 {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: 13px;
}

._inputLabel_r6k4d_275 {
  width: 30px;
  color: var(--t3);
}

._numberInput_r6k4d_280 {
  width: 80px;
  padding: 4px 8px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  color: var(--t1);
  font-size: 13px;
  text-align: right;
}

._numberInput_r6k4d_280:focus {
  outline: none;
  border-color: #1890ff;
}

._inputUnit_r6k4d_296 {
  color: var(--t3);
  font-size: 12px;
}

._resetButton_r6k4d_301 {
  width: 100%;
  padding: 8px;
  background: rgba(24, 144, 255, 0.2);
  border: 1px solid rgba(24, 144, 255, 0.5);
  border-radius: 6px;
  color: #1890ff;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

._resetButton_r6k4d_301:hover {
  background: rgba(24, 144, 255, 0.3);
}
/* 2026-05-26 - FIRETRACE - 설정 페이지 스타일 (#62 테마 변수 전환) */
/* 파일 위치: frontend/src/pages/Settings.module.css */

._layout_nu1mq_4 {
  display: flex;
  flex-direction: column;
  height: 100vh;
  background: linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 100%);
  color: var(--t1);
}

._content_nu1mq_12 {
  flex: 1;
  padding: 32px 48px;
  overflow-y: auto;
}

._backButton_nu1mq_18 {
  padding: 6px 16px;
  border-radius: 4px;
  border: 1px solid var(--bord);
  background: var(--surf);
  color: var(--t2);
  font-size: 14px;
  cursor: pointer;
  transition: all 0.2s ease;
  margin-bottom: 24px;
}

._backButton_nu1mq_18:hover {
  border-color: var(--teal);
  color: var(--teal);
}

._title_nu1mq_35 {
  font-size: 22px;
  font-weight: 600;
  color: var(--t1);
  margin: 0 0 24px 0;
}

._tabs_nu1mq_42 {
  display: flex;
  gap: 12px;
  margin-bottom: 32px;
}

._tab_nu1mq_42 {
  padding: 8px 24px;
  border-radius: 4px;
  border: 1px solid var(--teal);
  background: var(--surf);
  color: var(--teal);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: all 0.2s ease;
}

._tab_nu1mq_42:hover {
  background: var(--elev);
}

._tab_nu1mq_42._active_nu1mq_64 {
  background: var(--teal);
  color: #ffffff;
}

._panelArea_nu1mq_69 {
  position: relative;
}

._placeholder_nu1mq_73 {
  padding: 32px;
  background: var(--surf);
  border: 1px dashed var(--bord);
  border-radius: 8px;
  color: var(--t3);
  font-size: 16px;
  text-align: center;
}
/* 2026-01-29 - FIRETRACE - IMU 모니터 스타일 */
/* 파일 위치: frontend/src/components/ImuMonitor/ImuMonitor.module.css */

._container_iamuz_4 {
  padding: 16px;
}

._chartWrapper_iamuz_8 {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

._chartContainer_iamuz_14 {
  background: var(--surf);
  padding: 16px;
  border-radius: 8px;
  border: 1px solid var(--bord);
}

._chartContainer_iamuz_14 h3 {
  margin: 0 0 12px 0;
  font-size: 16px;
  font-weight: 600;
  color: var(--t1);
}

/* recharts 텍스트/격자 테마 연동 */
._chartContainer_iamuz_14 .recharts-text {
  fill: var(--t2);
}

._chartContainer_iamuz_14 .recharts-cartesian-grid line {
  stroke: var(--bord);
}

._chartContainer_iamuz_14 .recharts-legend-item-text {
  color: var(--t1) !important;
}

/* 자세/방향 정보 박스 */
._postureBox_iamuz_42 {
  margin-bottom: 16px;
  padding: 12px;
  background: var(--elev);
  border: 1px solid var(--bord);
  border-radius: 4px;
  color: var(--t1);
}
/* 2026-05-26 - FIRETRACE - 관리자 화면 스타일 (#61) */
/* 파일 위치: frontend/src/pages/AdminView.module.css */

._layout_omcbn_4 {
  display: flex;
  flex-direction: column;
  height: 100vh;
  background: linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 100%);
  color: var(--t1);
}

._body_omcbn_12 {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
}

._tabBar_omcbn_19 {
  flex-shrink: 0;
  background: var(--surf);
  border-bottom: 1px solid var(--bord);
  display: flex;
  flex-direction: row;
  gap: 4px;
  padding: 0 16px;
  overflow-x: auto;
}

._tabItem_omcbn_30 {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px;
  border: none;
  border-bottom: 3px solid transparent;
  background: transparent;
  color: var(--t2);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  text-align: left;
  transition: all 0.15s ease;
  white-space: nowrap;
}

._tabItem_omcbn_30:hover {
  color: var(--t1);
}

._tabItem_omcbn_30._active_omcbn_51 {
  color: var(--teal);
  border-bottom-color: var(--teal);
}

._menuIcon_omcbn_56 {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

._menuIcon_omcbn_56 svg {
  width: 16px;
  height: 16px;
  fill: currentColor;
}

._cardGrid2_omcbn_71 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 24px;
  align-items: stretch;
}

._gridCard_omcbn_78 {
  min-width: 0;
  display: flex;
  flex-direction: column;
}

/* 카드 내부 패널이 카드 높이를 채워 좌우 카드 높이를 동일하게 */
._gridCard_omcbn_78 > :last-child {
  flex: 1;
}

._contentTitle_omcbn_89 {
  flex: 0 0 auto;
}

._thermalRow_omcbn_93 {
  margin-top: 24px;
}

/* 센서 모니터링 화면: MQTT 모니터 / IMU 모니터 (둘 다 카드 없이 제목 + 내용으로 통일) */
._monitorCard_omcbn_98 {
  margin-bottom: 24px;
}

._imuSection_omcbn_102 {
  margin-top: 24px;
}

@media (max-width: 1100px) {
  ._cardGrid2_omcbn_71 {
    grid-template-columns: 1fr;
  }
}

._content_omcbn_89 {
  flex: 1;
  overflow-y: auto;
  padding: 24px 32px;
  min-height: 0;
}

._contentTitle_omcbn_89 {
  font-size: 18px;
  font-weight: 600;
  color: var(--t1);
  margin: 0 0 20px 0;
}

._placeholder_omcbn_126 {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 200px;
  background: var(--surf);
  border: 1px dashed var(--bord);
  border-radius: 8px;
  color: var(--t3);
  font-size: 15px;
}
/* 2026-05-26 - FIRETRACE - 글로벌 스타일 (다크/라이트 테마 #62) */
/* 파일 위치: frontend/src/App.css */

:root,
[data-theme="dark"] {
  --bg0: #0A0F1A;
  --bg1: #0F1A2B;
  --surf: #131D2E;
  --elev: #1A2740;
  --bord: #2A3A55;
  --bord2: #38506F;
  --teal: #2FB8A6;
  --blue: #4F86C6;
  --ok: #22C55E;
  --warn: #F2B33D;
  --danger: #EF4444;
  --info: #38BDF8;
  --t1: #E6ECF5;
  --t2: #9FB0C7;
  --t3: #64748B;
  --mono: 'IBM Plex Mono', monospace;
  --shadow: rgba(0, 0, 0, 0.4);
}

[data-theme="light"] {
  --bg0: #EEF1F6;
  --bg1: #E4E8F0;
  --surf: #FFFFFF;
  --elev: #F3F5F9;
  --bord: #C8D1DE;
  --bord2: #A8B5C8;
  --teal: #0F9D8A;
  --blue: #3B6FAD;
  --ok: #16A34A;
  --warn: #D97706;
  --danger: #DC2626;
  --info: #0284C7;
  --t1: #1A2332;
  --t2: #475569;
  --t3: #94A3B8;
  --mono: 'IBM Plex Mono', monospace;
  --shadow: rgba(0, 0, 0, 0.1);
}

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  font-family: 'IBM Plex Sans KR', 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif;
  background: linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 100%);
  color: var(--t1);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-size: 14px;
}

#root {
  width: 100%;
  height: 100vh;
}

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

::-webkit-scrollbar-track {
  background: var(--bg1);
}

::-webkit-scrollbar-thumb {
  background: var(--bord2);
  border-radius: 3px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--t3);
}
