* {
  border-radius: 0px !important;
}

/* Modern Toggle Switch for isDemoOn */
.demo-toggle-container {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 10px 0;
  justify-content: space-between;
}

.demo-toggle-label {
  font-size: 14px;
  font-weight: 500;
  color: var(--smcw-color-text, #333);
}

.demo-toggle-switch {
  position: relative;
  width: 50px;
  height: 26px;
  background-color: #ccc;
  border-radius: 26px;
  cursor: pointer;
  transition: background-color 0.3s ease;
  border: none;
  outline: none;
  border-radius: 50px !important;
}

.demo-toggle-switch.active {
  background-color: #007bff;
}

.demo-toggle-switch::before {
  content: '';
  position: absolute;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background-color: white;
  top: 2px;
  left: 2px;
  transition: transform 0.3s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.demo-toggle-switch.active::before {
  transform: translateX(24px);
}

.demo-toggle-switch:hover {
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}

.demo-toggle-switch:focus {
  box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.5);
}

/* Context menu integration */
.context-menu-demo-toggle {
  padding: 8px 12px;
  border-bottom: 1px solid #eee;
}

.context-menu-demo-toggle:last-child {
  border-bottom: none;
}

body {
  font-size: 14px;
  line-height: 16px;
  touch-action: manipulation;
}

.modal-md {
  max-width: 400px;
}

.modal {
  z-index: 100000;
}

#alert-modal {
  z-index: 1000001;
}

#confirm-modal {
  z-index: 1000000;
}

#custom-modal {
  z-index: 1000000;
}

.cursor {
  cursor: pointer;
}

.nav {
  background-color: var(--smcw-color-head);
  position: absolute;
  width: 100vw;
  height: 60px;
  display: flex;
  align-items: center;
  border-bottom: 1px solid var(--smcw-color-border);
}

#gowix {
  color: var(--smcw-color-title);
  font-weight: bold;
  margin: 0px;
  margin-left: 10px;
  font-size: 18px;
  align-self: center;
}

.head-area {
  display: flex;
  align-items: center;
  width: 100%;
  height: 60px;
  background: black;
  justify-content: space-around;
}

.logo-area {
  display: flex;
}

.language-area {
  display: flex;
  margin: 0;
}

.language-area-label {
  width: 20px;
  height: 20px;
  margin-top: 3px;
}

.language-change {
  background: black;
  color: white;
  font-size: 18px;
}

.language-change option {
  color: var(--smcw-color-select-text-color);
  background: var(--smcw-color-popup-background);
}

.bottom-area {
  bottom: 0px !important;
  position: absolute;
  display: flex;
  align-items: center;
  width: 100%;
  height: 70px;
  background: black;
  justify-content: space-around;
}

#search-institution-input {
  border: 1px solid var(--smcw-color-signup-input-search-button);
  color: var(--smcw-color-signup-input-search-button);
  font-size: 18px;
  margin-bottom: 15px;
}

.institution-no-data {
  font-weight: bold;
  font-size: 18px;
  text-align: center;
}

.use-institution {
  width: 100%;
}

.institution-search-list {
  font-weight: bold;
  font-size: 14px;
  cursor: pointer;
}

.institution-search-list:hover {
  color: #05c3a7;
}

#url-name,
#url-host {
  color: #05c3a7;
}

.impossible-name {
  color: red !important;
}

.disable,
.disabled {
  pointer-events: none;
  opacity: 0.5;
}

.icon-button {
  border: none;
  background-color: transparent;
}

.logo {
  cursor: pointer;
  margin-left: 20px;
}

.title img {
  position: static;
  width: 40px;
  height: 48px;
  left: 5px;
  top: 0px;
  flex: none;
  order: 0;
  align-self: flex-start;
  flex-grow: 0;
  margin: 0px 0px;
}

.new-worklist {
  vertical-align: middle;

  margin: 0px;
  background: transparent;
  margin-left: -8px !important;
}

.new-worklist svg {
  fill: currentColor;
}

.side-button {
  display: flex;
  flex-direction: row;
  align-items: center;
  padding: 0px 0px 0px 10px;
  position: absolute;
  height: 48px;
  right: 15px;
  height: 100%;
  z-index: 1000;
}

.information-dropdown {
  left: auto !important;
  right: 0 !important;
  transform: translateX(0px) !important;
  transform: translateY(45px) !important;
  background-color: var(--smcw-color-popup-background);
  /* viewer-right-drawer(z-index:1040) 위에 표시 (modal 1050 보다는 아래).
     ⚠️ 이 1045 는 drawer 가 nav 와 동일 stacking context(#viewer-fixed-root) 안에
     마운트되어 있을 때만 의미가 있다. drawer 를 body 직속으로 되돌리면(다른 root
     stacking context) z-index 비교가 무효화되어 다시 drawer 뒤로 가려진다.
     참조: public/js/viewer/ui/viewer-right-drawer.mjs ensureDrawerMounted(). */
  z-index: 1045 !important;
}

.information-dropdown a {
  color: var(--smcw-color-popup-text);
}

.information-dropdown a:hover {
  color: var(--smcw-color-popup-hover-text);
  background-color: var(--smcw-color-popup-hover);
}

.information-dropdown .dropdown-divider {
  border: 1px solid var(--smcw-color-popup-divider);
}

.information-dropdown .head-item {
  font-weight: 600;
  font-size: 13px;
  line-height: 20px;
  color: var(--smcw-color-popup-head-text);
}

.information-dropdown .body-item {
  font-size: 14px;
  line-height: 16px;
  text-align: start;
}

.information-dropdown .foot-item {
  font-size: 14px;
  line-height: 16px;
  text-align: right;
}

.notice-alert-container {
  /* position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 9999; */
  display: flex;
  flex-direction: column;
  align-items: center;
  position: absolute;
  bottom: 0px;
  z-index: 99999;
  width: 100%;
}
.notice-alert-wrapper {
  width: 100%;
  display: flex;
  flex-direction: column;
}

.notice-alert {
  border: 0px;
  font-size: 26px;
  line-height: 1;
  display: flex;
  align-items: center;
  position: relative;
  width: 100%;
  margin: 0px;
  padding: 10px;
  /* border-radius: 5px !important; */
  font-weight: bold;
}

.notice-closebtn {
  margin-left: 15px;
  background: transparent;
  border: 0px;
  font-weight: bold;
  font-size: 34px;
  line-height: 20px;
}

.notice-dropdown {
  left: auto !important;
  right: 0 !important;
  transform: translateX(0px) !important;
  transform: translateY(45px) !important;
  background-color: var(--smcw-color-popup-background);
  max-height: calc(100vh - 300px);
  overflow: auto;
}

#information:after {
  content: '';
  position: absolute;
  top: 0px;
  right: 3px;
  width: 8px;
  height: 8px;
  background-color: red;
  border-radius: 50%;
  display: none;
}

#information.active:after {
  display: block;
}

.config-title {
  font-weight: 600;
  font-size: 13px;
  line-height: 30px;
  color: var(--smcw-color-popup-text);
  white-space: nowrap;
}

.config-title.link:hover {
  color: skyblue !important;
  text-decoration: underline;
  cursor: pointer;
}

.close,
.close:hover {
  font-size: 20px;
  color: var(--smcw-color-popup-text);
  padding: 1rem !important;
  margin: -70px -1rem 0rem auto !important;
}

.theme-div,
.font-div,
.language-div,
.emergency-first-order-div,
.tool-color-div,
.tool-custom-div,
.tool-text-color-div,
.tool-active-color-div,
.anonymous-upload-div,
.similar-scroll-div,
.multiframe-autoplay-div,
.report-auto-run-div,
.scroll-series-loop-div,
.multiframe-autoplay-switch-div,
.report-auto-run-switch-div,
.worklist-auto-refresh-switch-div .cache-usage-bar,
.freeze-current-measure-div,
.scale-overlay-div,
.use-webworker-div,
.expand-preview-div,
.window-preset-div,
.shortcut-preset-div,
.report-keyword-div,
.screen-mode-div,
.demography-div,
.stack-loop-div,
.default-stack-mode-div,
.delay-approve-div,
.tool-text-size-div,
.lazy-cache-count-div,
.worklist-auto-refresh-time-div,
.image-cache-div,
.cache-usage-row,
.multiframe-scroll-next-image-div,
.multiframe-fps-div,
.worklist-report-sync-div,
.radial-menu-div,
.measure-preview-div {
  display: flex;
  position: relative;
  padding: 12px 8px;
  min-height: 44px;
  align-items: center;
  border-bottom: 1px solid rgba(100, 120, 150, 0.1);
  transition: background-color 0.15s ease;
}

.setting-row:hover {
  background-color: rgba(255, 255, 255, 0.08);
  border-radius: 6px;
}

#theme-select,
#font-select,
#worklist-type-select,
#language-select,
#multiframe-fps-select {
  position: absolute;
  right: 0px;
  width: 50%;
  height: 30px;
  color: var(--smcw-color-window-preset-button-text);
  background: var(--smcw-color-select-theme);
  border: none;
  padding-left: 10px;
  border: 1px solid var(--smcw-color-filter-border-color);
  font-weight: bold;
}

.tool-custom-select,
.tool-color-select {
  right: 0px;
  width: 50%;
  position: absolute;
  background: var(--smcw-color-popup-background);
}

.tool-custom-color-dropdown,
#tool-color-dropdown,
#tool-text-color-dropdown,
#tool-active-color-dropdown {
  width: 100%;
  height: 30px;
  color: var(--smcw-color-custom-search-color);
  background: var(--smcw-color-select-theme);
  border: 1px solid var(--smcw-color-filter-border-color);
  text-align: left;
  padding-left: 30px;
  font-weight: bold;
  color: var(--smcw-color-window-preset-button-text);
}

.tool-custom-buttons {
  margin-top: 20px;
  float: right;
}

.tool-color-palette {
  width: 10px;
  height: 10px;
  position: absolute;
  left: 15px;
  margin-top: 3px;
}

.demography-size,
.tool-text-size {
  position: absolute;
  right: calc(43% + 12px);
  font-size: 13px;
  top: 8px;
  min-width: 24px;
  text-align: center;
}

#demography-slider,
#tool-text-slider {
  position: absolute;
  right: 0px;
  width: 43%;
  height: 30px;
  padding: 0 5px;
  color: var(--smcw-color-filter-text-color);
  border: none;
  font-weight: bold;
}

#theme-select option,
#font-select option,
#language-select option,
#worklist-type-select option,
#tool-color-select option,
#tool-text-color-select option {
  color: var(--smcw-color-filter-text-color);
  background: var(--smcw-color-filter-background);
  border: none;
  padding-left: 10px;
}

.worklist-column-config {
  position: absolute;
  width: 83%;
  height: 130px;
  padding-top: 3px;
  cursor: pointer;
  overflow: auto;
}

.worklist-filter-button-div {
  position: relative;
  background: var(--smcw-color-worklist-preview);
  display: flex;
  flex-wrap: wrap;
  width: 850px;
  padding: 10px;
}

.filter-management-dropdown {
  background: var(--smcw-color-worklist-preview-button);
  color: var(--smcw-color-worklist-preview-button-text);
  width: 100%;
}

.filter-select-label {
  margin: 0px;
  color: var(--smcw-color-window-preset-button-text);
  margin-bottom: 5px;
  font-weight: bold;
}

.filter-management-sub-div {
  width: 210px;
  margin: 5px;
}

.filter-management-checkbox-menu {
  color: var(--smcw-color-popup-text) !important;
  max-height: 600px;
  overflow: auto;
}

.filter-management-checkbox-li {
  cursor: pointer;
}

.filter-management-select {
  color: var(--smcw-color-window-preset-button-text);
  background: var(--smcw-color-select-theme);
  border: none;
  border: 1px solid var(--smcw-color-filter-border-color);
  font-weight: bold;
}

.windowing-preset {
  width: 500px;
  margin-left: -170px;
}

.report-keyword-preset {
  max-width: 1000px;
}

.my-report-keyword-area {
  width: 100%;
}

.windowing-preset-config,
.report-keyword-config,
.screen-mode-change,
.shortcut-preset-config {
  position: absolute;
  width: 50%;
  height: 30px;
  right: 0;
  text-align: left;
  padding-left: 10px;
  background: var(--smcw-color-select-theme);
  color: var(--smcw-color-window-preset-button-text);
  border: none;
  font-weight: bold;
}

.worklist-div {
  height: 170px;
  text-align: left;
}

.filter-management-div {
  height: 220px;
  margin-top: 30px;
  text-align: left;
}

.filter-management-checkbox-label {
  width: 100%;
  cursor: pointer;
}

.order-card {
  cursor: pointer;
  margin-top: 5px;
  margin-bottom: 0px;
  padding-left: 10px;
  padding: 1px 0;
  background: rgba(255, 255, 255, 0.1);
  color: var(--smcw-color-popup-text);
}

.window-preset-all-reset {
  position: static;
  /* width: 70px; */
  height: 28px;
  right: 0px;
  top: 0px;
  background: var(--smcw-color-window-preset-reset);
  flex: none;
  order: 0;
  align-self: flex-end;
  flex-grow: 0;
  margin: 0px;
  color: var(--smcw-color-window-preset-reset-text);
  border: none;
}

.shortcut-preset-all-reset {
  position: static;
  width: 70px;
  height: 30px;
  right: 0px;
  top: 0px;
  background: var(--smcw-color-window-preset-reset);
  flex: none;
  order: 0;
  align-self: flex-end;
  flex-grow: 0;
  margin: -20px -10px 10px 0px;
  color: var(--smcw-color-window-preset-reset-text);
  border: none;
}

.window-preset-reset {
  padding: 6px;
}

.shortcut-preset-reset {
  position: relative;
  left: 25px;
  top: 8px;
}

.worklist-order-reset {
  position: static;
  width: 63px;
  height: 28px;
  right: 0px;
  top: 0px;
  background: var(--smcw-color-window-preset-reset);
  flex: none;
  order: 0;
  align-self: flex-end;
  flex-grow: 0;
  margin: 0px;
  color: var(--smcw-color-window-preset-reset-text);
  border: none;
}

.window-preset-all-reset,
.window-preset-reset,
.shortcut-preset-all-reset,
.shortcut-preset-reset {
  cursor: pointer;
}

.window-preset-input {
  height: 14px;
  font-size: 14px;
  width: 105px;
  color: #454b5b;
  border: 1px solid var(--smcw-color-filter-border-color);
}

.shortcut-preset-input {
  height: 14px;
  font-size: 14px;
  width: 60px;
  color: #454b5b;
  border: 1px solid var(--smcw-color-filter-border-color);
  position: relative;
  top: -5px;
}

.emergency-first-order-switch-div,
.anonymous-switch-div,
.similar-scroll-switch-div,
.multiframe-autoplay-switch-div,
.report-auto-run-switch-div,
.cache-usage-bar,
.freeze-current-measure-switch-div,
.scale-overlay-switch-div,
.use-webworker-switch-div,
.expand-preview-switch-div,
.stack-loop-switch-div,
.default-stack-mode-switch-div,
.delay-approve-switch-div,
.scroll-series-loop-switch-div,
.lazy-cache-count-input-div,
.worklist-auto-refresh-time-input-div,
.multiframe-scroll-next-image-switch-div,
.worklist-report-sync-switch-div,
.image-cache-switch-div,
.radial-menu-switch-div,
.measure-preview-switch-div {
  padding: 5px 0px 0px 0px;
  position: absolute;
  right: 15px;
  border: none;
}

/* 프로필 모달(views/common/modal.html)의 비밀번호 변경 입력 전용.
   ⚠ ID 셀렉터라 특이도가 높다 — 다른 화면에서 같은 id 를 쓰면 그쪽 스타일이 통째로 씹힌다.
   (비밀번호 재설정 화면은 이 때문에 id 를 reset-new-password 로 분리했다) */
#new-password {
  height: 14px;
  font-size: 14px;
}

.anony-input {
  height: 14px;
  font-size: 14px;
}

th {
  font-weight: 600;
  font-size: 13px;
  line-height: 20px;
  color: #a0a5b9;
  /* color: var(--smcw-color-table-text); */
  flex: none;
  order: 2;
  align-self: center;
  flex-grow: 0;
  margin: 5px 0px;
  font-weight: 700;
}

td {
  color: var(--smcw-color-table-text);
  flex: none;
  order: 3;
  align-self: center;
  flex-grow: 0;
  margin: 5px 0px;
  font-weight: 400;
  border-bottom: 1px solid var(--smcw-color-table-border) !important;
}

table.dataTable thead th {
  border: none !important;
  border-right: 1px solid var(--smcw-color-table-th-border-right) !important;
  border-bottom: 1px solid var(--smcw-color-table-th-border-bottom) !important;
  color: var(--smcw-color-table-th-text) !important;
}

.even {
  background-color: var(--smcw-color-table-even) !important;
}

.even:hover,
.odd:hover {
  background-color: var(--smcw-color-table-hover) !important;
}

.odd {
  background-color: var(--smcw-color-table-odd) !important;
}

.brush-tool svg * {
  fill: var(--smcw-color-custom-active-button);
}

.select-type {
  position: absolute;
  top: 8px;
  left: 190px;
  display: flex;
}

.spleen-radio {
  margin-left: 40px;
}

#usage-modal {
  z-index: 10000000000000000;
}

#usage-modal .modal-dialog-centered {
  margin-top: 0px;
  max-width: 800px;
}

#usage-modal .modal-body {
  text-align: -webkit-center;
}

#usage-modal .modal-content {
  min-width: 300px;
  height: 300px;
}

.aside-message {
  font-size: 22px;
  margin: 0px;
  width: 100%;
  height: 100%;
  display: flex;
  /* justify-content: center; */
  align-items: center;
}

.notice-link {
  color: #007bff !important;
  border-bottom: 2px solid #007bff !important;
  cursor: pointer;
  top: -2px;
  position: relative;
}

.modal-body {
  max-width: 98%;
  max-height: 85vh;
  overflow: auto;
}

.label-div {
  margin: 0px;
}

#label-div {
  text-align: center;
}

#label-image {
  border: 2px solid black;
}

.code-div {
  display: flex;
  position: absolute;
  left: 20px;
}

.GoStitching-label {
  top: 330px;
}

.GoWIX-label {
  top: 240px;
}

#label-barcode {
  width: 470px;
}

#label-qr {
  width: 85px;
}

#label-project-version,
#label-update-date {
  position: absolute;
  color: black !important;
}

#label-project-version {
  top: 23px;
  margin-left: 290px;
  font-size: 18px;
}

#label-update-date {
  top: 60px;
  margin-left: 138px;
  font-size: 15px;
}

.report-keyword-text,
.report-keyword-textarea,
.report-keyword-name {
  font-size: 15px;
}

.report-keyword-num {
  height: 15px !important;
  width: 30px;
  margin-top: 3px;
}

.report-keyword-text,
.report-keyword-name {
  height: 15px !important;
  width: 230px !important;
  padding: 5px 2px;
}

.report-keyword-text {
  margin-left: 20px;
}

.report-keyword-name {
  margin-left: 10px;
  width: 120px !important;
}

.report-keyword-textarea {
  margin-left: 20px;
  height: 150px !important;
  padding: 0px 2px;
  resize: none;
}

.key-name {
  color: var(--smcw-color-modal-text);
  margin-left: 30px;
}

.key-title {
  color: var(--smcw-color-modal-text);
  margin-left: 125px;
}

.value-title {
  color: var(--smcw-color-modal-text);
  margin-left: 165px;
}

/* ============================================================ */
/* 컨텍스트 메뉴 공통 스타일 (스크롤바 없음, viewport 기반)       */
/* ============================================================ */
.context-menu-list {
  font-size: 14px !important;
  z-index: 1000005 !important;
  padding: 4px 0 !important;
  background-color: var(--smcw-color-popup-background, #1a1a2e) !important;
  border: 1px solid var(--smcw-color-popup-border, #3a3a5e) !important;
  border-radius: 8px !important;
  box-shadow:
    0 8px 32px rgba(0, 0, 0, 0.4),
    0 2px 8px rgba(0, 0, 0, 0.2) !important;
  min-width: 180px !important;
  max-height: none !important;
  overflow: visible !important;
}

/* 컨텍스트 메뉴 아이템 */
.context-menu-item {
  padding: 8px 14px !important;
  font-size: 13px !important;
  color: var(--smcw-color-popup-text, #e0e0e0) !important;
  background-color: transparent !important;
  transition: background-color 0.15s ease !important;
  border-radius: 0 !important;
}

.context-menu-item:hover,
.context-menu-item.context-menu-hover {
  background-color: var(--smcw-color-hover, rgba(255, 255, 255, 0.08)) !important;
}

.context-menu-item > span {
  color: inherit !important;
}

/* 서브메뉴 화살표 */
.context-menu-item.context-menu-submenu > span::after {
  border-left-color: var(--smcw-color-popup-text, #e0e0e0) !important;
}

/* 구분선 */
.context-menu-separator {
  border-bottom: 1px solid var(--smcw-color-popup-border, #3a3a5e) !important;
  margin: 4px 8px !important;
  padding: 0 !important;
}

/* 아이콘 */
.context-menu-item .context-menu-icon {
  color: var(--smcw-color-text-muted, #8888a8) !important;
}

.context-menu-item:hover .context-menu-icon,
.context-menu-item.context-menu-hover .context-menu-icon {
  color: var(--smcw-color-popup-text, #e0e0e0) !important;
}

/* 비활성화된 아이템 */
.context-menu-item.context-menu-disabled {
  opacity: 0.5 !important;
  cursor: not-allowed !important;
}

.context-menu-item.context-menu-disabled:hover {
  background-color: transparent !important;
}

/* 서브메뉴 */
.context-menu-list .context-menu-list {
  background-color: var(--smcw-color-popup-background, #1a1a2e) !important;
  border: 1px solid var(--smcw-color-popup-border, #3a3a5e) !important;
  border-radius: 8px !important;
  box-shadow:
    0 8px 32px rgba(0, 0, 0, 0.4),
    0 2px 8px rgba(0, 0, 0, 0.2) !important;
}

/* 라이트 테마 지원 */
[data-theme='light'] .context-menu-list,
.light-theme .context-menu-list {
  background-color: var(--smcw-color-popup-background, #ffffff) !important;
  border-color: var(--smcw-color-popup-border, #d0d0d0) !important;
  box-shadow:
    0 4px 16px rgba(0, 0, 0, 0.15),
    0 2px 4px rgba(0, 0, 0, 0.1) !important;
}

[data-theme='light'] .context-menu-item,
.light-theme .context-menu-item {
  color: var(--smcw-color-popup-text, #333333) !important;
}

[data-theme='light'] .context-menu-item:hover,
[data-theme='light'] .context-menu-item.context-menu-hover,
.light-theme .context-menu-item:hover,
.light-theme .context-menu-item.context-menu-hover {
  background-color: var(--smcw-color-hover, rgba(0, 0, 0, 0.05)) !important;
}

[data-theme='light'] .context-menu-separator,
.light-theme .context-menu-separator {
  border-bottom-color: var(--smcw-color-popup-border, #e0e0e0) !important;
}

.status-span {
  color: var(--smcw-color-table-text);
  font-weight: bold;
  font-size: 15px;
}

.pacs-div {
  height: 100%;
  align-items: center;
}

.font-awesome-svg * {
  fill: white !important;
}

.tool-icon {
  margin: 0 0 0 0;
}

.replaced-svg {
  width: 20px;
  height: 25px;
}

.medical-logo-svg {
  width: 50px !important;
  height: 50px !important;
}

.logo-svg,
.vet-logo-svg {
  width: 30px !important;
  height: 30px !important;
}

.vet-logo-svg * {
  fill: #782eff;
}

.droppdown-svg {
  width: 25px;
  height: 30px;
}

.font-awesome-svg {
  width: 20px;
  height: 25px;
}

.pre-work-svg {
  width: 45px;
  height: 50px;
  margin-left: -8px;
  margin-right: -8px;
}

.label-head {
  width: 10px;
  height: 10px;
  border: 2px solid #79e2fd;
  box-sizing: border-box;
  border-radius: 5px !important;
  margin-right: 5px;
}

#p-name-label,
#p-id-label,
#p-birth-label,
#p-sex-label {
  position: static;
  display: flex;
  align-items: center;
  color: var(--smcw-color-patient-report-card-text);
  margin-top: 5px;
  font-size: 12px;
  font-weight: 400;
  margin-left: 0px;
}

.foot-item svg * {
  fill: var(--smcw-color-logout-button) !important;
}

.custom-control-input:not(:checked) ~ .custom-control-label::after {
  background: #adb5bd !important;
}

.custom-control-input:checked ~ .custom-control-label::before,
.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before {
  background: var(--smcw-color-modal-close-button);
  border-color: var(--smcw-color-modal-close-button);
}

.subscription-id,
.device-id,
.access-key,
.ai-service-id,
.license-number,
.specialty {
  cursor: pointer;
}

.subscription-id:hover,
.device-id:hover,
.access-key:hover,
.ai-service-id:hover,
.license-number:hover,
.specialty:hover {
  color: var(--smcw-color-tool-active);
}

.sign-image {
  width: 60px;
  height: 60px;
  margin-top: 10px;
}
/* 서명 없음 — 깨짐 이미지 대신 빈 점선 박스(테마 중립) */
.sign-image.sign-empty {
  background: rgba(127, 127, 127, 0.08);
  border: 1px dashed rgba(127, 127, 127, 0.4);
  border-radius: 6px;
}

#sign-file {
  padding: 0px;
  margin-top: 10px;
}

.dx-ai-feedback-div {
  width: 430px;
  height: calc(100vh - 60px);
  position: absolute;
  right: 0px;
  top: 0px;
  background-color: var(--smcw-color-tab-content);
  overflow-x: hidden;
  z-index: 100;
}

.dx-ai-feedback-export-button,
.dx-ai-feedback-button {
  background-color: var(--smcw-color-option-button);
  color: white;
  position: absolute;
  right: 52px;
  top: 28px;
  z-index: 10;
  width: 30px;
  height: 30px;
  font-size: 12px;
  z-index: 101;
  border-radius: 40px !important;
}

.dx-ai-feedback-export-button:hover,
.dx-ai-feedback-export-button > i:hover,
.dx-ai-feedback-button:hover,
.dx-ai-feedback-button > i:hover {
  color: white;
}

.dx-ai-feedback-toggle-button {
  background-color: var(--smcw-color-option-button);
  color: white;
  position: absolute;
  right: 20px;
  top: 28px;
  z-index: 10;
  width: 30px;
  height: 30px;
  font-size: 12px;
  z-index: 101;
  border-radius: 40px !important;
}

.dx-ai-feedback-toggle-button:hover {
  color: white !important;
}

.threshold-div {
  border: 1px solid #4e536b;
  margin-top: 55px;
  margin-left: 15px;
  height: 84px;
  padding: 0px;
  width: 400px;
}

.threshold-label-div {
  margin-top: 18px;
  margin-bottom: 10px;
  display: flex;
}

.analysis-detail-div {
  margin-top: 25px;
  margin-left: 10px;
  max-height: calc(100vh - 290px);
  padding: 5px;
  width: 430px;
  overflow-y: auto;
}

.vhs-analysis-detail-div {
  max-height: calc(100vh - 250px);
}

.analysis-detail {
  margin: 0px;
  margin-left: -5px;
  width: 410px;
}

.threshold-analysis-label {
  font-size: 18px;
  color: var(--smcw-color-date-select-color);
  font-weight: 700;
  line-height: 22px;
  top: 30px;
  left: 15px;
  position: relative;
}

.threshold-label {
  font-size: 14px;
  color: var(--smcw-color-date-select-color);
  font-weight: 700;
  line-height: 20px;
  margin-left: 18px;
}

.analysis-detail-label {
  font-size: 14px;
  color: var(--smcw-color-date-select-color);
  font-weight: 700;
  line-height: 20px;
}

.analysis-detail-sub-label {
  font-size: 11px;
  font-weight: 400;
  line-height: 16px;
  color: #a0a5b9;
  margin-top: -5px;
  margin-left: 20px;
}

.threshold-range-div {
  display: flex;
  margin-left: 15px;
}

#threshold-apply {
  background-color: var(--smcw-color-option-button);
  color: white;
  width: 50px;
  height: 30px;
}

#threshold-range {
  margin-right: 20px;
  width: 260px;
  background-color: transparent;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

#threshold-range:focus {
  outline: 0;
}

#threshold-range:focus::-webkit-slider-thumb,
#threshold-range:focus::-moz-range-thumb {
  box-shadow:
    0 0 0 1px #fff,
    0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

#threshold-range::-moz-focus-outer {
  border: 0;
}

#threshold-range::-webkit-slider-thumb:active {
  background-color: var(--smcw-color-threshold-range-thumb-active);
}

#threshold-range::-moz-range-thumb:active {
  background-color: var(--smcw-color-threshold-range-thumb-active);
}

#threshold-range::-moz-range-thumb {
  width: 12px;
  height: 12px;
  background-color: var(--smcw-color-threshold-range-thumb);
  border: 0;
  border-radius: 1rem;
  -moz-transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  -moz-appearance: none;
  appearance: none;
}

#threshold-range::-webkit-slider-thumb {
  width: 12px;
  height: 12px;
  margin-top: -0.2rem;
  background-color: var(--smcw-color-threshold-range-thumb);
  border: 0;
  border-radius: 1rem;
  -webkit-transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  -webkit-appearance: none;
  appearance: none;
}

#threshold-range::-webkit-slider-runnable-track {
  width: 100%;
  height: 6px;
  color: transparent;
  cursor: pointer;
  background: var(--smcw-color-threshold-range-track);
  border-color: transparent;
  border-radius: 1rem;
}

#threshold-range::-moz-range-track {
  width: 100%;
  height: 6px;
  color: transparent;
  cursor: pointer;
  background: var(--smcw-color-threshold-range-track);
  border-color: transparent;
  border-radius: 1rem;
}

.threshold-range-value {
  display: inline-block;
  position: relative;
  width: 65px;
  color: #fff;
  line-height: 16px;
  font-size: 12px;
  font-weight: 400;
  text-align: center;
  padding: 5px 10px;
  top: -18px;
  margin-left: 310px;
  border: 1px solid #e6e6ea;
  background-color: #1c2241;
  border-radius: 16px !important;
}

.rect-analysis {
  margin-top: 15px;
  padding: 10px;
  cursor: pointer;
  border: 2px solid transparent;
  width: 415px;
}

.rect-remove {
  opacity: 0.2;
  position: relative;
  right: 20px;
}

.rect-label-div {
  display: flex;
  justify-content: space-between;
}

.rect-label-left {
  display: flex;
}

.rect-circle {
  color: #79e2fd;
  font-size: 10px !important;
  top: 5px;
  position: relative;
}

.rect-label {
  color: #a0a5b9;
  margin-left: 10px;
  font-size: 14px;
  line-height: 20px;
  font-weight: 400;
}

.rect-label,
.rect-circle,
.rect-remove {
  font-size: 16px;
}

.rect-percent-div {
  margin-top: 10px;
  padding-left: 20px;
}

.rect-thorax-percent-div {
  padding-left: 5px;
}

.rect-thorax-detail {
  margin-right: auto;
  left: 10px;
  position: relative;
}

.rect-detail {
  font-size: 14px;
  font-weight: 400;
  line-height: 20px;
  color: var(--smcw-color-date-select-color);
  margin-bottom: 8px;
}

.rect-percent {
  font-size: 14px;
  color: var(--smcw-color-date-select-color);
  font-weight: 600;
  line-height: 20px;
  margin-right: 30px;
}

.rect-detail-div {
  display: flex;
  justify-content: space-between;
  margin-bottom: 5px;
}

.rect-progress,
.rect-progress-bar {
  height: 6px;
  background-color: var(--smcw-color-ai-report-progress-background);
  width: 360px;
}

.vlas-label-div,
.vhs-label-div,
.ctr-label-div,
.tpa-label-div,
.norberg-angle-label-div {
  margin-top: 15px;
}

.vlas-label,
.vhs-label,
.ctr-label,
.norberg-label,
.tpa-label,
.norberg-angle-label {
  /* background: var(--smcw-color-option-button);
  color: white;
  text-align: center;
  padding: 20px;
  font-size: 20px;
  font-weight: bold; */

  padding: 16px;
  text-align: center;
  background-color: #2a304d;
  box-sizing: border-box;
  font-size: 20px;
  line-height: 20px;
  font-weight: 700;
  color: #79e2fd;
  width: 400px;
  height: 60px;
}

.norberg-left-label {
  color: #0a80d2;
  font-weight: 900;
}

.norberg-right-label {
  color: #12a191;
  font-weight: 900;
}

.vlas-detail-wrap-div,
.vhs-detail-wrap-div,
.ctr-detail-wrap-div,
.tpa-detail-wrap-div,
.norberg-angle-wrap-div {
  margin-top: 30px;
  margin-left: 10px;
}

.vlas-detail-label,
.vhs-detail-label,
.ctr-detail-label,
.tpa-detail-label,
.norberg-angle-detail-label {
  font-size: 14px;
  padding: 14px 0;
  line-height: 20px;
  font-weight: 700;
  color: var(--smcw-color-date-select-color);
}

.vlas-detail,
.vhs-detail,
.ctr-detail,
.tpa-detail-detail,
.norberg-angle-detail1 {
  font-size: 12px;
  line-height: 14px;
  font-weight: 400;
}

.norberg-angle-detail {
  font-size: 14px;
  line-height: 14px;
  font-weight: 400;
  margin-top: 5px;
  justify-self: right;
  padding: 8px;
  margin-bottom: 30px;
  color: #a0a5b9;
}

.vlas-reference,
.vhs-reference,
.ctr-reference,
.tpa-reference,
.norberg-reference {
  margin-top: 8px;
  font-size: 12px;
  line-height: 14px;
  font-weight: 400;
  white-space: pre-line;
}

.vlas-reference,
.vhs-detail-div {
  margin-top: 15px;
  color: #a0a5b9;
}

.info-icon {
  position: relative;
  top: 10px;
}

.opacity-range-div {
  position: absolute;
  top: 32px;
  right: 100px;
  display: flex;
}

.ai-status-view-text {
  position: absolute;
  right: 20px;
  top: 65px;
  font-size: 18px;
  font-weight: bold;
}

.opacity-label {
  font-size: 10px;
  color: var(--smcw-color-date-select-color);
  font-weight: 400;
  line-height: 22px;
}

.ai-opacity-range {
  width: 50px;
  margin-left: 10px;
}

.ai-opacity-range {
  background-color: transparent;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

.ai-opacity-range:focus {
  outline: 0;
}

.ai-opacity-range:focus::-webkit-slider-thumb,
.ai-opacity-range:focus::-moz-range-thumb {
  box-shadow:
    0 0 0 1px #fff,
    0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.ai-opacity-range::-moz-focus-outer {
  border: 0;
}

.ai-opacity-range::-webkit-slider-thumb:active {
  background-color: var(--smcw-color-threshold-range-thumb-active);
}

.ai-opacity-range::-moz-range-thumb:active {
  background-color: var(--smcw-color-threshold-range-thumb-active);
}

.ai-opacity-range::-moz-range-thumb {
  width: 8px;
  height: 8px;
  background-color: var(--smcw-color-threshold-range-thumb);
  border: 0;
  border-radius: 1rem;
  -moz-transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  -moz-appearance: none;
  appearance: none;
}

.ai-opacity-range::-webkit-slider-thumb {
  width: 8px;
  height: 8px;
  margin-top: -0.13rem;
  background-color: var(--smcw-color-threshold-range-thumb);
  border: 0;
  border-radius: 1rem;
  -webkit-transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  transition:
    background-color 0.15s ease-in-out,
    border-color 0.15s ease-in-out,
    box-shadow 0.15s ease-in-out;
  -webkit-appearance: none;
  appearance: none;
}

.ai-opacity-range::-webkit-slider-runnable-track {
  width: 100%;
  height: 4px;
  color: transparent;
  cursor: pointer;
  background: var(--smcw-color-threshold-range-track);
  border-color: transparent;
  border-radius: 1rem;
}

.ai-opacity-range::-moz-range-track {
  width: 100%;
  height: 4px;
  color: transparent;
  cursor: pointer;
  background: var(--smcw-color-threshold-range-track);
  border-color: transparent;
  border-radius: 1rem;
}

.threshold-hide {
  margin-top: 60px;
}

.bg-score-danger {
  background: #ff706e;
}

.text-score-danger {
  color: #ff706e;
}

.bg-score-warning {
  background: #ffce8b;
}

.text-score-warning {
  color: #ffce8b;
}

.bg-score-success {
  background: #79e2fd;
}

.text-score-success {
  color: #79e2fd;
}

.skt-tooltip-img {
  width: 15px;
  height: 15px;
  margin-left: 5px;
  margin-top: -3px;
}

.analysis-warning-div {
  color: #a0a5b9;
  font-size: 11px;
  font-weight: 400;
  line-height: 16px;
  margin-top: 5px;
  margin-left: 20px;
}

.threshold-comment-tooltip {
  width: 15px;
  height: 15px;
  margin-left: 10px;
  margin-top: 2px;
}

.ai-overlay {
  cursor: auto;
  pointer-events: none;
  overflow: visible;
}

.active-feedback {
  background-color: var(--smcw-color-active) !important;
}

.active-ai-result {
  border: 2px solid red !important;
  box-shadow: 0px 0px 0px 3px rgba(5, 195, 167, 0.2);
}

@media (min-width: 992px) {
  .code-div {
    left: 120px;
  }
}

.hover-rect-analysis {
  background-color: #01082b;
}

.nav-button {
  background-color: var(--smcw-color-nav-button) !important;
  font-size: 1.2rem;
  color: var(--smcw-color-custom-search-button);
  margin-top: -4px;
  margin-left: 8px;
  border: none;
  padding: 7px;
  height: 40px;
  width: 38px;
}

#confirm-content {
  font-weight: 400;
  font-size: 14px;
  line-height: 16px;
}

.modal-header {
  border-bottom: 1px solid var(--smcw-color-popup-divider, #cbd5e1);
}

/* ============================================================
   Setting Modal — PACS Theme Enhanced
   ============================================================ */
#setting-modal .modal-content {
  border-radius: 12px;
  border: 1px solid var(--smcw-color-popup-border, rgba(100, 120, 150, 0.2));
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35);
  overflow: hidden;
}

#setting-modal .modal-header {
  padding: 16px 20px;
  border-bottom: 1px solid rgba(100, 120, 150, 0.15);
}

#setting-modal .modal-header .modal-title {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

#setting-modal .modal-body {
  padding: 8px 16px 16px;
}

#setting-modal .setting-row {
  padding: 14px 12px;
  margin: 0;
  min-height: 48px;
  align-items: center;
  border-bottom: 1px solid rgba(100, 120, 150, 0.08);
  border-radius: 6px;
  transition: background-color 0.15s ease;
}

#setting-modal .setting-row:last-child {
  border-bottom: none;
}

#setting-modal .setting-row:hover {
  background-color: rgba(255, 255, 255, 0.04);
}

#setting-modal .config-title {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
}

#setting-modal select,
#setting-modal button:not(.close) {
  border-radius: 6px;
  font-size: 12px;
  transition: all 0.2s ease;
}

#setting-modal .custom-range {
  height: 6px;
}

#setting-modal .custom-control-label::before {
  border: 1px solid rgba(100, 120, 150, 0.3);
}

/* Light theme */
[data-theme='light'] #setting-modal .setting-row,
[data-theme='new_light'] #setting-modal .setting-row {
  border-bottom-color: rgba(0, 0, 0, 0.06);
}

[data-theme='light'] #setting-modal .setting-row:hover,
[data-theme='new_light'] #setting-modal .setting-row:hover {
  background-color: rgba(0, 0, 0, 0.025);
}

[data-theme='light'] #setting-modal .modal-content,
[data-theme='new_light'] #setting-modal .modal-content {
  border-color: #dce1e8;
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
}

.table-sm td {
  padding: 10px 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  border: none !important;
  border-bottom: 1px solid var(--smcw-color-table-border) !important;
}

.table-sm th {
  padding: 5px 10px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
  border: none !important;
  border-right: 1px solid var(--smcw-color-table-th-border-right) !important;
  border-bottom: 1px solid var(--smcw-color-table-th-border-bottom) !important;
  color: var(--smcw-color-table-th-text) !important;
}

.modal-btn {
  background-color: var(--smcw-color-option-button);
  color: white;
  /* width: 50px; */
  height: 35px;
}

#label-modal .modal-btn {
  width: unset;
}

/* GOCDSS-5066: 프로필 모달 저장 버튼 — 한글(저장) 세로 클리핑/줄바꿈 방지 */
#profile-modal .modal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: auto;
  padding: 0 16px;
  flex-shrink: 0;
  white-space: nowrap;
  line-height: 1;
}

.toast-header {
  background: var(--smcw-color-body);
  color: var(--smcw-color-popup-head-text);
  font-size: 16px !important;
  font-weight: 600;
  line-height: 20px;
  border-bottom: 1px solid var(--smcw-color-table-border) !important;
}

.toast-body {
  background: var(--smcw-color-report-textarea);
  color: var(--smcw-color-report-text-color);
  font-size: 14px !important;
  font-weight: 400;
  line-height: 15px;
  min-height: 70px;
  display: flex;
  place-items: center;
  box-shadow: 4px 4px 25px rgba(0, 0, 0, 0.25);
}

.aco-svg {
  width: 25px;
  height: 25px;
}

.toast-svg {
  padding: 10px;
  margin-right: 8px;
}

.toast-logo {
  font-weight: bold;
  font-size: 15px;
  color: white !important;
}

.toast-content {
  margin-top: 10px;
  color: #ffffff;
  font-size: 15px;
  font-weight: 500;
  line-height: 19px;
}

.custom-switch .custom-control-label::before {
  background: var(--smcw-color-custom-switch-before) !important;
  border: none;
}

.custom-switch .custom-control-label::after {
  background: var(--smcw-color-custom-switch-after) !important;
  border: none;
}

.custom-control-input:checked ~ .custom-control-label::before {
  background: var(--smcw-color-custom-switch-before) !important;
  border: none;
}

.custom-control-input:checked ~ .custom-control-label::after {
  border: none;
}

#restore-image {
  width: unset;
}

/* 하단 공지 flick */
#bottom-notice-flick,
#notice-banner {
  background-color: #d0f3ed;
}

#bottom-notice-flick {
  font-size: 26px;
  line-height: 1;
  height: 64px;
  padding-right: 40px;
}

.bottom-notice-close-wrapper {
  display: flex;
  position: absolute;
  top: 0px;
  height: 100%;
  right: 0px;
}

/* fullscreen popup */
.fullscreen-popup {
  position: fixed;
  top: 50%;
  left: 0px;
  width: 0%;
  height: 0%;
  transform: translateY(-50%);
  background: #fff;
  overflow: hidden;
  z-index: 2;
}
.fullscreen-popup .fullscreen-content {
  width: 100%;
  height: 100%;
  margin: 0 auto;
  opacity: 0;
}
.fullscreen-popup .fullscreen-popup-close-btn {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 40px;
  height: 40px;
  text-align: center;
  line-height: 35px;
  color: #111;
  font-size: 30px;
  cursor: pointer;
  border-radius: 50%;
}
.fullscreen-popup .fullscreen-popup-close-btn:hover {
  background: #eee;
}

.fullscreen-popup.active {
  background-color: white;
  position: absolute;
  z-index: 999999;
  animation: popupAnimation 500ms ease-in-out forwards;
}
.fullscreen-popup.active .fullscreen-content {
  opacity: 1;
  transition: all 100ms ease-in-out 500ms;
}

.fullscreen-popup.active .fullscreen-content iframe {
  width: 100%;
  height: 100%;
}
@keyframes popupAnimation {
  0% {
    width: 0%;
    height: 0%;
  }
  50% {
    width: 100%;
    height: 2px;
  }
  100% {
    width: 100%;
    height: 100%;
  }
}

@font-face {
  font-family: 'NanumSquare Neo';
  src: url('../../fonts/skt/NanumSquareNeoTTF-dEb.eot');
  src:
    url('../../fonts/skt/NanumSquareNeoTTF-dEb.eot?#iefix') format('embedded-opentype'),
    url('../../fonts/skt/NanumSquareNeoTTF-dEb.woff2') format('woff2'),
    url('../../fonts/skt/NanumSquareNeoTTF-dEb.woff') format('woff'),
    url('../../fonts/skt/NanumSquareNeoTTF-dEb.ttf') format('truetype'),
    url('../../fonts/skt/NanumSquareNeoTTF-dEb.svg#NanumSquareNeoTTF-dEb') format('svg');
  font-weight: bold;
  font-style: normal;
  font-display: block;
}

@font-face {
  font-family: 'NanumSquare Neo';
  src: url('../../fonts/skt/NanumSquareNeoTTF-eHv.eot');
  src:
    url('../../fonts/skt/NanumSquareNeoTTF-eHv.eot?#iefix') format('embedded-opentype'),
    url('../../fonts/skt/NanumSquareNeoTTF-eHv.woff2') format('woff2'),
    url('../../fonts/skt/NanumSquareNeoTTF-eHv.woff') format('woff'),
    url('../../fonts/skt/NanumSquareNeoTTF-eHv.ttf') format('truetype'),
    url('../../fonts/skt/NanumSquareNeoTTF-eHv.svg#NanumSquareNeoTTF-eHv') format('svg');
  font-weight: 900;
  font-style: normal;
  font-display: block;
}

@font-face {
  font-family: 'NanumSquare Neo';
  src: url('../../fonts/skt/NanumSquareNeoTTF-bRg.eot');
  src:
    url('../../fonts/skt/NanumSquareNeoTTF-bRg.eot?#iefix') format('embedded-opentype'),
    url('../../fonts/skt/NanumSquareNeoTTF-bRg.woff2') format('woff2'),
    url('../../fonts/skt/NanumSquareNeoTTF-bRg.woff') format('woff'),
    url('../../fonts/skt/NanumSquareNeoTTF-bRg.ttf') format('truetype'),
    url('../../fonts/skt/NanumSquareNeoTTF-bRg.svg#NanumSquareNeoTTF-bRg') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: block;
}

.skt_event_panel * {
  font-family: 'NanumSquare Neo' !important;
}

#notice-skt-roulette-start,
#skt-roulette-start {
  border: none;
  position: absolute;
  background: transparent;
}

.lazy-cache-count-input-div {
  width: 80px;
}

.worklist-auto-refresh-time-input-div {
  width: 116px;
}

#lazy-cache-count-input,
#worklist-auto-refresh-time-input {
  height: 15px !important;
  top: -10px;
  text-align: right;
}

#worklist-auto-refresh-time-input {
  /* width: 200px; */
}

.subscribe-card-header {
  font-weight: 900;
  color: white;
  font-size: 18px;
  background: linear-gradient(60deg, #c8b6e2, #495c83);
}

.subscription-product-info-table {
  width: 80%;
  margin-top: 10px;
  margin-left: 30px;
  border: #01082b 1px solid;
}

.subscribe-info {
  color: black;
}

.subscription-product-info-table * {
  color: black;
  padding: 10px;
  text-align: center;
}

.subscription-left-label {
  border-right: 1px solid black;
}

.cache-usage {
  cursor: pointer;
}

.cache-usage-control {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  padding-right: 15px;
}

.cache-usage-bar {
  height: 18px;
  padding: 0px;
  width: 160px;
  border-radius: 4px;
  background-color: rgba(100, 120, 150, 0.25);
}

.cache-usage-bar > .progress-bar {
  overflow: visible !important;
  font-weight: bold;
  font-size: 11px;
  line-height: 18px;
}

.cache-usage-percent {
  font-size: 12px;
  font-weight: 600;
  min-width: 35px;
  text-align: right;
  color: var(--smcw-color-modal-text, #ccc);
}

.browser-cache-clear-row {
  display: flex;
  align-items: center;
}

.browser-cache-clear-row .config-title {
  flex: 1;
}

#browser-cache-clear-btn {
  margin-left: auto;
  font-size: 12px;
  padding: 4px 12px;
  white-space: nowrap;
}

.profile-modal-title {
  font-size: 13px;
  font-weight: bold;
  color: var(--smcw-color-modal-text);
}

/* GOCDSS-5066: 프로필 모달 가독성 개선 (폭 확대 + 행 구분 + 여백) */
#profile-modal .modal-dialog {
  max-width: 680px;
  width: 94%;
}
#profile-modal .modal-body {
  padding: 16px 28px 20px;
}
#profile-modal .container-fluid > .row {
  align-items: flex-start;
  margin: 0;
  padding: 9px 0;
  border-bottom: 1px solid rgba(127, 127, 127, 0.12);
}
#profile-modal .container-fluid > .row:last-child {
  border-bottom: none;
}
#profile-modal .container-fluid > .row > .profile-modal-title {
  padding-top: 2px;
}
#profile-modal .container-fluid > .row > [class^='col-md-8'],
#profile-modal .container-fluid > .row > .col-md-8 {
  font-size: 13px;
  line-height: 1.55;
  word-break: break-word;
  color: var(--smcw-color-modal-text);
}

/* GOCDSS-5066: 프로필 OpenAI(GPT) 키 UI */
.openai-key-field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.openai-key-status-row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
}
/* 인증 완료 시: 등록됨 + 인증됨 을 초록 테두리 박스로 묶어 세로 배치 */
.openai-key-status-row.verified {
  border: 1px solid #2ea86a;
  border-radius: 8px;
  padding: 8px 12px;
}
.openai-key-status-row.verified .openai-key-status {
  border: none;
  padding: 0;
  opacity: 1;
}
.openai-key-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  padding: 3px 10px;
  border-radius: 12px;
  border: 1px solid var(--smcw-color-table-border);
  color: var(--smcw-color-modal-text);
  opacity: 0.65;
}
/* GOCDSS-5066: OpenAI 이용 동의 인증 뱃지 */
.openai-key-verified {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  font-weight: 600;
  color: #2ea86a;
}
.openai-key-verified .openai-verified-at {
  color: var(--smcw-color-modal-text);
  opacity: 0.55;
  font-weight: 400;
}
.openai-key-status::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
}
.openai-key-status.registered {
  color: #2ea86a;
  border-color: #2ea86a;
  opacity: 1;
}
.openai-key-input-group {
  display: flex;
  align-items: center;
  gap: 8px;
}
.openai-key-input {
  flex: 1 1 auto;
  min-width: 0;
  height: 35px;
}
.openai-key-btn {
  flex: 0 0 auto;
  width: auto;
  padding: 0 14px;
}
.openai-key-delete-btn {
  flex: 0 0 auto;
  height: 35px;
  padding: 0 12px;
  border-radius: 4px;
  background: transparent;
  color: var(--smcw-color-modal-text);
  border: 1px solid var(--smcw-color-table-border);
  transition: color 0.15s, border-color 0.15s;
}
.openai-key-delete-btn:hover {
  color: #e05353;
  border-color: #e05353;
}
.openai-key-hint {
  font-size: 11px;
  line-height: 1.5;
  color: var(--smcw-color-modal-text);
  opacity: 0.55;
}
/* 크레딧/키 상태 확인 */
.openai-key-check-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 10px;
}
.openai-key-check-btn {
  flex: 0 0 auto;
  height: 30px;
  padding: 0 12px;
  font-size: 12px;
  font-weight: 600;
  color: var(--smcw-color-modal-text);
  background: transparent;
  border: 1px solid rgba(127, 127, 127, 0.45);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.openai-key-check-btn:hover {
  border-color: var(--smcw-color-option-button);
  background: rgba(127, 127, 127, 0.08);
}
.openai-key-check-result {
  font-size: 11.5px;
  line-height: 1.5;
  opacity: 0.85;
  color: var(--smcw-color-modal-text);
}
.openai-key-check-result.ok {
  color: #2ea86a;
}
.openai-key-check-result.warn {
  color: #d99a2b;
}
.openai-key-check-result.err {
  color: #e0524f;
}

/* =====================================================================
   GOCDSS-5066: AI 소견 다이얼로그 / 결과 팝업 — 프리미엄 리디자인
   테마 변수(--smcw-color-*)로 accent/텍스트 적응. 표면/보더는 중립 회색
   오버레이(rgba(127,127,127,*))로 라이트·다크 공통 대응.
   ===================================================================== */
#custom-modal .ai-opinion-dialog,
#custom-modal .ai-opinion-modal-body {
  color: var(--smcw-color-modal-text);
}
.ai-opinion-dialog {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* ── 헤더 ── */
.aod-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.aod-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--smcw-color-option-button);
}
.aod-title,
.aom-title {
  font-size: 16px;
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -0.01em;
  margin: 0;
}
/* 제목의 퍼센트 — 분석상세와 동일 색(.text-score-*)으로 강조 */
.aod-pct {
  font-weight: 800;
  white-space: nowrap;
}

/* ── 저장본 존재 배지 ── */
.aod-saved {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  font-size: 12px;
  font-weight: 600;
  color: #2ea86a;
  background: rgba(46, 168, 106, 0.12);
  border: 1px solid rgba(46, 168, 106, 0.32);
  padding: 4px 11px;
  border-radius: 999px;
}
.aod-saved::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #2ea86a;
}
/* 저장본 배지 = 클릭 가능(별도 "저장본 보기" 버튼 대체) */
.aod-saved-btn {
  appearance: none;
  -webkit-appearance: none;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.aod-saved-btn:hover {
  background: rgba(46, 168, 106, 0.22);
  border-color: rgba(46, 168, 106, 0.55);
}
.aod-saved-btn:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(46, 168, 106, 0.3);
}
.aod-saved-arrow {
  font-size: 15px;
  line-height: 1;
  font-weight: 700;
  opacity: 0.85;
  margin-left: 2px;
}

/* ── 보조 안내문(키 다이얼로그 등) ── */
.aod-hint {
  font-size: 12.5px;
  line-height: 1.5;
  color: var(--smcw-color-modal-text);
  opacity: 0.7;
  margin: -4px 0 0;
}
/* 만료/무효 키 재등록 안내 — 경고 톤 강조 */
.aod-hint-warn {
  opacity: 1;
  font-weight: 600;
  color: #ffce8b;
}

/* ── 필드 그룹(라벨 + 컨트롤) ── */
.aod-field {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.aod-flabel {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--smcw-color-modal-text);
  opacity: 0.6;
}
.aod-optional {
  /* 라벨('프롬프트')은 uppercase + 자간 0.05em 이라 촘촘한 반면 이쪽만 자간 0 이면
     같은 11px 인데도 '(선택)' 이 더 커 보인다 → 자간을 상속해 한 덩어리로 읽히게 한다. */
  font-size: 0.95em;
  font-weight: 500;
  letter-spacing: inherit;
  text-transform: none;
  opacity: 0.8;
}

/* ── 공통 컨트롤 표면 ── */
.aod-select,
.aod-prompt {
  box-sizing: border-box;
  width: 100%;
  font-size: 13.5px;
  color: var(--smcw-color-modal-text);
  /* 다크(특히 vet) 모달에서 필드가 배경과 구분되도록 밝게 */
  background: rgba(127, 127, 127, 0.18);
  border: 1px solid rgba(127, 127, 127, 0.45);
  border-radius: 10px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}
.aod-select:hover,
.aod-prompt:hover {
  border-color: rgba(127, 127, 127, 0.62);
  background: rgba(127, 127, 127, 0.24);
}
.aod-select:focus,
.aod-prompt:focus {
  outline: none;
  border-color: var(--smcw-color-option-button);
  box-shadow: inset 0 0 0 1px var(--smcw-color-option-button);
  background: rgba(127, 127, 127, 0.24);
}

/* ── 셀렉트(커스텀 화살표) ── */
.aod-select-wrap {
  position: relative;
}
.aod-select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  height: 42px;
  padding: 0 38px 0 13px;
  font-weight: 600;
  cursor: pointer;
}
.aod-select-wrap::after {
  content: "";
  position: absolute;
  right: 15px;
  top: 50%;
  width: 8px;
  height: 8px;
  margin-top: -6px;
  border-right: 2px solid var(--smcw-color-modal-text);
  border-bottom: 2px solid var(--smcw-color-modal-text);
  transform: rotate(45deg);
  opacity: 0.5;
  pointer-events: none;
}
/* 네이티브 옵션 팝업 — 가독 위해 다크 표면 고정(라이트 테마에서도 판독 가능) */
.aod-select option {
  color: #e8edf6;
  background: #1b2236;
}

/* ── 단일행 입력(키 입력 등) — .aod-prompt 의 min-height 를 이기도록 element+class ── */
input.aod-input {
  height: 42px;
  min-height: 0;
  resize: none;
  letter-spacing: 0.5px;
}

/* ── 프롬프트 textarea ── */
.aod-prompt {
  resize: vertical;
  min-height: 92px;
  padding: 11px 13px;
  line-height: 1.55;
}
.aod-prompt::placeholder {
  color: var(--smcw-color-modal-text);
  opacity: 0.4;
}

/* ── 전송 고지(정보 배너) ──
   주의: 내부에 인라인 <span> 이 올 수 있어 flex 금지(각 span 이 flex 아이템이 되어 세로로 깨짐).
   아이콘은 absolute, 텍스트는 일반 블록 흐름 + 좌측 padding. */
.aod-note {
  position: relative;
  font-size: 12px;
  line-height: 1.55;
  color: var(--smcw-color-modal-text);
  opacity: 0.82;
  background: rgba(127, 127, 127, 0.08);
  border-left: 3px solid var(--smcw-color-option-button);
  border-radius: 8px;
  padding: 10px 13px 10px 34px;
  margin: 0;
}
.aod-note::before {
  content: "ⓘ";
  position: absolute;
  left: 12px;
  top: 9px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--smcw-color-option-button);
}

/* ── 액션 버튼 ── */
.aod-actions {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  margin-top: 2px;
}
#custom-modal .ai-opinion-dialog .modal-btn {
  height: 40px;
  padding: 0 20px;
  border: none;
  border-radius: 10px;
  font-size: 13.5px;
  font-weight: 700;
  color: #fff;
  background: var(--smcw-color-option-button);
  box-shadow: 0 6px 16px rgba(99, 102, 241, 0.32);
  box-shadow: 0 6px 16px color-mix(in srgb, var(--smcw-color-option-button) 40%, transparent);
  transition: filter 0.14s ease, box-shadow 0.16s ease, transform 0.1s ease;
}
#custom-modal .ai-opinion-dialog .modal-btn:hover {
  filter: brightness(1.08);
}
#custom-modal .ai-opinion-dialog .modal-btn:active {
  transform: translateY(1px);
}

.modal-btn-outline {
  background: transparent;
  color: var(--smcw-color-modal-text);
  border: 1px solid rgba(127, 127, 127, 0.4);
  height: 40px;
  padding: 0 16px;
  border-radius: 10px;
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.modal-btn-outline:hover {
  border-color: var(--smcw-color-option-button);
  background: rgba(127, 127, 127, 0.08);
}

/* ── 결과 팝업 ── */
.ai-opinion-modal-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}
.aom-head {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(127, 127, 127, 0.18);
}
.aom-eyebrow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--smcw-color-option-button);
}
.aom-title {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
  margin: 0;
}
/* 메타바: 모델 칩(줄바꿈) + 생성 일시 */
.aom-metabar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: -4px;
}
.aom-chip {
  display: inline-flex;
  align-items: center;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--smcw-color-option-button);
  background: rgba(127, 127, 127, 0.12);
  border: 1px solid rgba(127, 127, 127, 0.28);
  border-radius: 999px;
  padding: 3px 10px;
  letter-spacing: 0.02em;
}
.aom-gen {
  font-size: 11.5px;
  opacity: 0.62;
  letter-spacing: 0.02em;
}
.aom-text {
  position: relative;
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 13.5px;
  line-height: 1.75;
  max-height: 55vh;
  overflow-y: auto;
  color: var(--smcw-color-modal-text);
  background: rgba(127, 127, 127, 0.06);
  border: 1px solid rgba(127, 127, 127, 0.22);
  border-radius: 12px;
  padding: 16px 17px;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.aom-text:hover {
  border-color: var(--smcw-color-option-button);
  background: rgba(127, 127, 127, 0.1);
}
.aom-text:focus {
  outline: none;
  box-shadow: inset 0 0 0 1px var(--smcw-color-option-button);
}
.aom-copyhint {
  margin-top: -6px;
  font-size: 11px;
  opacity: 0.5;
  display: flex;
  align-items: center;
  gap: 5px;
}
.aom-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 2px;
}

/* ── 생성 중 스피너 로딩 ── */
.aom-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 56px 20px;
  min-height: 200px;
}
.aom-spinner {
  width: 46px;
  height: 46px;
  /* 전역 `* { border-radius:0 !important }` 리셋을 특이도로 이기기 위해 !important */
  border-radius: 50% !important;
  border: 3px solid rgba(127, 127, 127, 0.22);
  border-top-color: var(--smcw-color-option-button);
  animation: aom-spin 0.8s linear infinite;
}
@keyframes aom-spin {
  to {
    transform: rotate(360deg);
  }
}
.aom-loading-text {
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--smcw-color-modal-text);
  margin-top: 4px;
}
.aom-loading-sub {
  font-size: 11.5px;
  opacity: 0.55;
  color: var(--smcw-color-modal-text);
}

/* ── 결과 모달: 넓게 + 단일 스크롤(aom-text 만) ──
   바깥 modal-body 스크롤 제거 → 헤더/메타/버튼 고정, 본문만 스크롤(이중 스크롤 방지). */
#custom-modal .modal-dialog.ai-opinion-wide {
  max-width: 780px;
  width: 94vw;
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body {
  max-height: 86vh !important;
  overflow: hidden !important; /* 바깥 스크롤 제거 */
  flex-direction: column !important;
  align-items: stretch !important;
}
#custom-modal .modal-content.ai-opinion-result-modal #custom-content {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}
.ai-opinion-result-modal .ai-opinion-modal-body {
  flex: 1 1 auto;
  min-height: 0;
}
/* 스크롤 담당은 .aoc-thread 하나 — 소견 본문과 대화가 같은 스크롤에 이어진다.
   (GOCDSS-5269 이전에는 .aom-text 가 직접 스크롤했다) */
.ai-opinion-result-modal .aoc-thread {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding-right: 4px; /* 스크롤바와 본문 카드가 붙지 않게 */
}
.ai-opinion-result-modal .aom-text {
  flex: 0 0 auto;
  max-height: none; /* 스크롤은 .aoc-thread 가 담당 */
  overflow: visible;
}
.aoc-thread .aom-copyhint {
  margin-top: -8px;
}

/* ── 후속 채팅 (GOCDSS-5269) ── */
.aoc-msg {
  display: flex;
  max-width: 100%;
}
.aoc-msg.aoc-user {
  justify-content: flex-end;
}
.aoc-bubble {
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 13.5px;
  line-height: 1.7;
  border-radius: 14px;
  padding: 10px 14px;
  max-width: 88%;
}
/* 어시스턴트 답변은 버블 배경 없이 본문처럼 흐른다(ChatGPT 와 동일 관례). */
.aoc-msg.aoc-ai .aoc-bubble {
  max-width: 100%;
  padding: 2px 0;
}
.aoc-msg.aoc-user .aoc-bubble {
  background: rgba(127, 127, 127, 0.14);
}
.aoc-bubble.aoc-copyable {
  cursor: pointer;
}
.aoc-msg.aoc-error .aoc-bubble {
  color: #e0524f;
}
.aoc-typing {
  display: inline-block;
  font-size: 12px;
  opacity: 0.6;
  animation: aoc-blink 1.2s ease-in-out infinite;
}
@keyframes aoc-blink {
  0%,
  100% {
    opacity: 0.28;
  }
  50% {
    opacity: 0.75;
  }
}

/* 컴포저: textarea + 원형 전송 버튼 */
.aoc-composer {
  flex: 0 0 auto;
  display: flex;
  align-items: flex-end;
  gap: 8px;
  border: 1px solid rgba(127, 127, 127, 0.28);
  border-radius: 16px;
  padding: 8px 8px 8px 14px;
  transition: border-color 0.15s ease;
}
.aoc-composer:focus-within {
  border-color: var(--smcw-color-option-button);
}
.aoc-input {
  flex: 1 1 auto;
  min-height: 24px;
  max-height: 140px; /* 자동 확장 상한 — 넘으면 입력창만 스크롤 */
  overflow-y: auto;
  border: none;
  background: transparent;
  color: inherit;
  font-size: 13.5px;
  line-height: 1.6;
  resize: none;
  outline: none;
  padding: 0;
}
.aoc-input::placeholder {
  opacity: 0.5;
}
.aoc-input:disabled {
  opacity: 0.55;
}
.aoc-send {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  /* 전역 `* { border-radius:0 !important }` 리셋을 특이도로 이기기 위해 !important */
  border-radius: 50% !important;
  border: none;
  color: #fff;
  background: var(--smcw-color-option-button);
  font-size: 13px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: filter 0.14s ease;
}
.aoc-send:hover {
  filter: brightness(1.1);
}
/* 고지 문구 기본값 — 실제 배치/강조는 아래 .aoc-notice 박스가 결정한다.
   (여기서 opacity 를 낮게 두면 박스 안에서도 흐려지므로 박스 쪽에서 되돌린다) */
.aoc-note,
.aoc-disclaimer {
  flex: 0 0 auto;
  font-size: 11px;
  line-height: 1.5;
}
/* '대화 지우기' — primary 버튼 옆의 보조(고스트) 버튼 */
#custom-modal .ai-opinion-modal-body .aoc-ghost-btn {
  height: 40px;
  padding: 0 16px;
  margin-right: 8px;
  border: 1px solid rgba(127, 127, 127, 0.3);
  border-radius: 10px;
  background: transparent;
  color: inherit;
  font-size: 13px;
  font-weight: 600;
  opacity: 0.75;
  cursor: pointer;
}
#custom-modal .ai-opinion-modal-body .aoc-ghost-btn:hover {
  opacity: 1;
  border-color: rgba(127, 127, 127, 0.5);
}
.aom-actions {
  flex: 0 0 auto;
}

/* =====================================================================
   GOCDSS-5269: 대화 지우기 확인 바 (모달 **안쪽** 인라인)

   왜 공용 confirm 모달을 안 쓰는가: Bootstrap 4 는 모달 위 모달을 공식 지원하지 않는다.
   #confirm-modal 은 마크업상 #custom-modal 보다 앞이라 같은 z-index 면 소견 모달이 위에
   그려지고, backdrop 이 확인창을 덮어 버튼이 눌리지 않는다. DOM 순서 변경 / z-index
   !important / backdrop 강등을 모두 시도했으나 환경에 따라 여전히 가려졌다.
   → 모달을 하나만 띄운다. 확인 UI 가 본문 안에 있으면 z-index 경쟁 자체가 없다.
   ===================================================================== */
.aoc-confirm {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--aiv-border-strong, rgba(0, 0, 0, 0.18));
  background: var(--aiv-notice-bg, rgba(0, 0, 0, 0.035));
}
.aoc-confirm-msg {
  flex: 1 1 240px;
  font-size: 13px;
  line-height: 1.6;
  color: var(--aiv-text, #0d0d0d);
}
.aoc-confirm-btns {
  display: flex;
  gap: 8px;
  margin-left: auto;
}
.aoc-confirm-cancel,
.aoc-confirm-ok {
  height: 34px;
  padding: 0 16px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: opacity 0.14s ease;
}
.aoc-confirm-cancel {
  border: 1px solid var(--aiv-border-strong, rgba(0, 0, 0, 0.18));
  background: transparent;
  color: var(--aiv-text, #0d0d0d);
}
/* 되돌릴 수 없는 삭제 — 위험색으로 명확히 구분한다(취소와 헷갈리면 안 된다) */
.aoc-confirm-ok {
  border: none;
  background: #e0524f;
  color: #ffffff;
}
.aoc-confirm-cancel:hover,
.aoc-confirm-ok:hover {
  opacity: 0.85;
}

/* =====================================================================
   GOCDSS-5269: AI 소견 UI — 선택한 모델의 **제공자(vendor) UI 색감을 그대로** 입힌다

   왜 vendor 별인가: 어떤 회사 AI 를 쓰는지가 화면으로 드러나야 사용자가
   "지금 내 데이터가 어디로 가는지"를 인지한다(고지 문구와 같은 목적).
   클래스는 ai-opinion.mjs 의 _applyVendorTheme 이 `.aiv-<provider>` 로 붙인다.

   ⚠ 팔레트는 **고정값**이다 — GoWIX 다크/라이트 테마를 따라가지 않는다.
      제품 테마에 맞추면 "그 회사 UI" 라는 인상이 사라진다. 각 제공자의 실제
      대화 화면 색을 그대로 쓰고, 주변 화면과의 이질감은 의도한 것이다
      (= 다른 서비스의 화면을 띄웠다는 신호). 사용자 확인 사항.

   ⚠ 적용 범위는 AI 소견 모달(result/dialog) 하위로만 한정 — 다른 모달은 제품 테마 유지.
      _prepAiModal 이 닫힐 때 result/dialog/aiv-* 클래스를 모두 제거하므로 잔류도 없다.
   ===================================================================== */

/* ── 기본 = OpenAI / ChatGPT (라이트) ──
   첨부된 실제 ChatGPT 화면 기준. 입력창은 배경과 같은 흰색이고 **그림자로** 분리되며,
   accent 는 브랜드 컬러가 아니라 검정 — 전송 버튼이 검은 원 + 흰 화살표다. */
#custom-modal .modal-content.ai-opinion-result-modal,
#custom-modal .modal-content.ai-opinion-dialog-modal {
  --aiv-bg: #ffffff;
  --aiv-text: #0d0d0d;
  --aiv-dim: #8f8f8f;
  --aiv-surface: #ffffff; /* 입력창 — 배경과 동색, 분리는 그림자가 한다 */
  --aiv-bubble: #f4f4f4; /* 유저 말풍선 */
  --aiv-border: rgba(0, 0, 0, 0.08);
  --aiv-border-strong: rgba(0, 0, 0, 0.18);
  --aiv-accent: #0d0d0d;
  --aiv-accent-on: #ffffff;
  --aiv-composer-shadow: 0 2px 14px rgba(0, 0, 0, 0.08);
  --aiv-notice-bg: rgba(0, 0, 0, 0.035);
}

/* ── Anthropic / Claude ──
   크림색 배경 + 테라코타 accent 가 시그니처. */
#custom-modal .modal-content.aiv-anthropic {
  --aiv-bg: #faf9f5;
  --aiv-text: #1f1e1d;
  --aiv-dim: #7a7873;
  --aiv-surface: #ffffff;
  --aiv-bubble: #f0eee6;
  --aiv-border: rgba(31, 30, 29, 0.1);
  --aiv-border-strong: rgba(31, 30, 29, 0.2);
  --aiv-accent: #d97757;
  --aiv-accent-on: #ffffff;
  --aiv-composer-shadow: 0 2px 14px rgba(31, 30, 29, 0.07);
  --aiv-notice-bg: rgba(217, 119, 87, 0.08);
}

/* ── Google / Gemini ──
   푸른 회색 표면 + Google 블루 accent. */
#custom-modal .modal-content.aiv-google {
  --aiv-bg: #ffffff;
  --aiv-text: #1f1f1f;
  --aiv-dim: #5f6368;
  --aiv-surface: #f0f4f9;
  --aiv-bubble: #f0f4f9;
  --aiv-border: rgba(31, 31, 31, 0.1);
  --aiv-border-strong: rgba(31, 31, 31, 0.2);
  --aiv-accent: #4285f4;
  --aiv-accent-on: #ffffff;
  --aiv-composer-shadow: 0 2px 14px rgba(31, 31, 31, 0.08);
  --aiv-notice-bg: rgba(66, 133, 244, 0.08);
}

/* ── 적용 범위: **modal-body 안쪽만** ──
   헤더(GoWIX/X Caliber 타이틀 + 닫기)와 푸터는 제품 정체성이라 GoWIX 색을 유지한다.
   대화 내용이 담기는 본문만 제공자 색으로 갈아끼운다. (사용자 확정)
   → .modal-content 자체에는 배경/색을 칠하지 않는다. 변수만 얹어 자식이 상속한다. */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body {
  background: var(--aiv-bg) !important;
  /* ⚠ !important 인 이유: 제품 테마가 `#custom-modal .ai-opinion-modal-body { color:
     var(--smcw-color-modal-text) }` 처럼 밝은 글씨를 여러 경로로 지정한다. 본문 배경은
     제공자 팔레트(흰색)로 갈아끼웠으므로 그 색이 남으면 **판독 소견이 안 읽힌다** —
     의료 UI 에서 치명적이라 특이도 싸움을 여기서 끝낸다. 범위는 이 모달 본문뿐이다. */
  color: var(--aiv-text) !important;
  /* 전역 `.modal-body { max-width: 98% }` 가 좌측 정렬이라 **오른쪽에만** 여백이 생겼다.
     좌우 대칭 여백은 padding 으로 준다. */
  max-width: 100%;
  padding: 20px 24px;
}
/* 본문 안의 모든 요소는 상속을 따르게 한다.
   ⚠ 상위(#custom-modal .modal-content ...)에서 --smcw-color-modal-text 를 지정하는
   규칙들이 있어, 이걸 풀지 않으면 흰 배경 위에 밝은 글씨가 남아 **글자가 안 보인다**. */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body *,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body * {
  color: inherit !important; /* 위와 같은 이유 — 색을 갖는 요소는 아래에서 되살린다 */
}
/* 본문 스코프 안에서 색을 따로 갖는 것들(강조/보조/버튼)은 아래에서 다시 지정한다. */
#custom-modal .ai-opinion-result-modal .ai-opinion-modal-body,
#custom-modal .ai-opinion-result-modal .aom-title,
#custom-modal .ai-opinion-result-modal .aom-loading-text,
#custom-modal .ai-opinion-result-modal .aom-loading-sub,
#custom-modal .ai-opinion-dialog-modal .ai-opinion-dialog,
#custom-modal .ai-opinion-dialog-modal .aod-title {
  color: var(--aiv-text);
}
.ai-opinion-result-modal .aom-head,
.ai-opinion-dialog-modal .aod-head {
  border-bottom-color: var(--aiv-border);
}
.ai-opinion-result-modal .aom-eyebrow,
.ai-opinion-dialog-modal .aod-eyebrow {
  color: var(--aiv-accent);
}
.ai-opinion-result-modal .aom-gen,
.ai-opinion-result-modal .aom-copyhint,
.ai-opinion-result-modal .aoc-hint,
.ai-opinion-result-modal .aoc-disclaimer,
.ai-opinion-dialog-modal .aod-flabel,
.ai-opinion-dialog-modal .aod-optional,
.ai-opinion-dialog-modal .aod-note {
  color: var(--aiv-dim);
  opacity: 1; /* dim 색으로 이미 대비를 낮췄다 — opacity 중복 적용 방지 */
}

/* ── 소견 본문: ChatGPT 답변처럼 카드가 아니라 본문으로 흐른다 ──
   테두리를 빼야 "말풍선 없는 어시스턴트 응답"으로 읽힌다. */
.ai-opinion-result-modal .aom-text {
  background: transparent;
  border: none;
  padding: 0;
  color: var(--aiv-text);
  font-size: 15px;
  line-height: 1.75;
}
.ai-opinion-result-modal .aom-text:hover {
  background: transparent;
  border: none;
}
.ai-opinion-result-modal .aom-text:focus {
  box-shadow: none;
  outline: none;
}
.ai-opinion-result-modal .aom-chip {
  background: var(--aiv-bubble);
  border-color: var(--aiv-border);
  color: var(--aiv-accent);
}

/* ── 대화: 유저만 말풍선, 어시스턴트는 배경 없음 (ChatGPT 배치) ── */
.ai-opinion-result-modal .aoc-thread {
  gap: 22px; /* ChatGPT 는 메시지 사이가 넉넉하다 */
  padding-bottom: 8px; /* 마지막 메시지가 입력창에 붙지 않게 */
}
/* 고지 박스도 vendor 팔레트를 따른다(좌측 바 = accent) */
.ai-opinion-result-modal .aoc-notice {
  background: var(--aiv-notice-bg);
  border-left-color: var(--aiv-accent);
}
.ai-opinion-result-modal .aoc-notice .aoc-note {
  color: var(--aiv-text);
}
.ai-opinion-result-modal .aoc-notice .aoc-disclaimer {
  color: var(--aiv-dim);
}
.ai-opinion-result-modal .aoc-notice-icon {
  color: var(--aiv-accent);
}
.ai-opinion-result-modal .aoc-msg.aoc-user .aoc-bubble {
  background: var(--aiv-bubble);
  color: var(--aiv-text);
  border-radius: 20px;
  padding: 10px 18px;
  max-width: 72%;
  font-size: 15px;
  line-height: 1.7;
}
.ai-opinion-result-modal .aoc-msg.aoc-ai .aoc-bubble {
  color: var(--aiv-text);
  font-size: 15px;
  line-height: 1.75;
}

/* ── 컴포저: 크게 둥근 입력 박스 + 원형 전송 버튼 ──
   스레드와 붙어 있으면 대화가 입력창까지 흘러내린 것처럼 보인다 → 위 여백을 준다. */
.ai-opinion-result-modal .aoc-composer {
  background: var(--aiv-surface);
  border: 1px solid var(--aiv-border);
  border-radius: 26px;
  padding: 12px 12px 12px 20px;
  gap: 10px;
  margin-top: 6px;
  box-shadow: var(--aiv-composer-shadow);
}
.ai-opinion-result-modal .aoc-composer:focus-within {
  border-color: var(--aiv-border-strong);
}
.ai-opinion-result-modal .aoc-input {
  color: var(--aiv-text);
  font-size: 15px;
  line-height: 1.6;
}
.ai-opinion-result-modal .aoc-input::placeholder {
  color: var(--aiv-dim);
  opacity: 1;
}
/* 전송 버튼: accent 배경 + 대비색 아이콘. OpenAI 는 accent 가 텍스트색이라
   다크=흰 버튼/검은 화살표, 라이트=검은 버튼/흰 화살표가 된다(ChatGPT 와 동일). */
.ai-opinion-result-modal .aoc-send {
  background: var(--aiv-accent);
  color: var(--aiv-accent-on);
  width: 34px;
  height: 34px;
  font-size: 14px;
}
.ai-opinion-result-modal .aoc-send:hover {
  filter: none;
  opacity: 0.85;
}
.ai-opinion-result-modal .aoc-send:disabled {
  opacity: 0.35;
  cursor: default;
}
#custom-modal .ai-opinion-result-modal .aoc-ghost-btn {
  color: var(--aiv-dim);
  border-color: var(--aiv-border-strong);
  border-radius: 999px;
}
#custom-modal .ai-opinion-result-modal .aoc-ghost-btn:hover {
  color: var(--aiv-text);
}

/* ── 다이얼로그(모델 선택 + 프롬프트)도 같은 톤 ── */
.ai-opinion-dialog-modal .aod-select,
.ai-opinion-dialog-modal .aod-prompt,
.ai-opinion-dialog-modal .aod-input {
  background: var(--aiv-surface);
  border: 1px solid var(--aiv-border);
  border-radius: 14px;
  color: var(--aiv-text);
}
.ai-opinion-dialog-modal .aod-select:focus,
.ai-opinion-dialog-modal .aod-prompt:focus,
.ai-opinion-dialog-modal .aod-input:focus {
  border-color: var(--aiv-border-strong);
  outline: none;
}
.ai-opinion-dialog-modal .aod-prompt::placeholder,
.ai-opinion-dialog-modal .aod-input::placeholder {
  color: var(--aiv-dim);
  opacity: 1;
}
.ai-opinion-dialog-modal .aod-saved-btn {
  background: var(--aiv-bubble);
  border: 1px solid var(--aiv-border);
  border-radius: 14px;
  color: var(--aiv-text);
}
.ai-opinion-dialog-modal .aod-saved-btn:hover {
  border-color: var(--aiv-border-strong);
}
.ai-opinion-dialog-modal .aod-hint {
  color: var(--aiv-dim);
}

/* ── 주 버튼(생성/다시 생성/등록): vendor accent ── */
#custom-modal .ai-opinion-modal-body .modal-btn,
#custom-modal .ai-opinion-dialog .modal-btn {
  background: var(--aiv-accent);
  color: var(--aiv-accent-on);
  border-radius: 999px;
  box-shadow: none;
}
#custom-modal .ai-opinion-modal-body .modal-btn:hover,
#custom-modal .ai-opinion-dialog .modal-btn:hover {
  filter: none;
  opacity: 0.85;
}

/* 스크롤바도 배경에 맞춘다(다크 배경 위 밝은 기본 스크롤바 방지) */
.ai-opinion-result-modal .aoc-thread::-webkit-scrollbar {
  width: 8px;
}
.ai-opinion-result-modal .aoc-thread::-webkit-scrollbar-thumb {
  background: var(--aiv-border-strong);
  border-radius: 8px !important;
}
.ai-opinion-result-modal .aoc-thread::-webkit-scrollbar-track {
  background: transparent;
}
/* 로딩 스피너도 vendor accent 로 (어느 회사 AI 가 생성 중인지 드러난다) */
.ai-opinion-result-modal .aom-spinner {
  border-color: var(--aiv-border-strong);
  border-top-color: var(--aiv-accent);
}

/* ── 색 복원 (특이도 조정) ──
   위의 `.modal-body *  { color: inherit }` 는 제품 테마의 밝은 글씨가 흰 배경에
   남아 **글자가 안 보이던 문제**를 잡기 위한 것이다. 다만 그 규칙이
   (0,1,3,1) 로 세서, 의미를 갖는 색까지 함께 지워 버린다.
   → 색을 가져야 하는 것들만 같은 스코프로 다시 지정한다.
   특히 분석 점수 색(text-score-*)은 **진단 정보**라 반드시 살아 있어야 한다. */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .text-score-danger,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .text-score-danger {
  color: #e0524f !important;
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .text-score-warning,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .text-score-warning {
  color: #d08a1f !important; /* 흰 배경에서 읽히도록 기존 노랑보다 어둡게 */
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .text-score-success,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .text-score-success {
  color: #2f7fbf !important;
}
/* 보조 문구(dim) */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aom-gen,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aom-copyhint,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-hint,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aom-loading-sub,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-notice .aoc-disclaimer,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-flabel,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-optional,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-note,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-hint {
  color: var(--aiv-dim) !important;
}
/* 강조(accent) */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aom-eyebrow,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aom-chip,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-notice-icon,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-eyebrow {
  color: var(--aiv-accent) !important;
}
/* 오류 문구는 팔레트와 무관하게 경고색을 유지한다 */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-msg.aoc-error .aoc-bubble {
  color: #e0524f !important;
}
/* 버튼: accent 배경 위 대비색 (inherit 로 덮이면 글자가 사라진다) */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .modal-btn,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .modal-btn,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-send {
  color: var(--aiv-accent-on) !important;
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-ghost-btn,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-saved-btn,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-confirm-cancel,
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-confirm-msg {
  color: var(--aiv-text) !important;
}
/* 삭제 버튼은 위험색 배경 위 흰 글씨 — inherit 로 덮이면 글자가 사라진다 */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-confirm-ok {
  color: #ffffff !important;
}
/* 입력 요소 — 배경/글자 모두 상위 규칙(.form-control, 전역 textarea 등)을 덮는다.
   회색 배경이 남으면 흰 컴포저 안에 회색 상자가 박혀 보인다. */
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-input,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-select,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-prompt,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-input {
  color: var(--aiv-text) !important;
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-input {
  background: transparent !important; /* 컴포저(흰색) 위에 얹히므로 자기 배경이 없어야 한다 */
}
/* 입력 컨트롤의 테두리는 --aiv-border(0.08) 로는 흰 배경에서 거의 안 보인다.
   입력 가능한 영역임이 드러나야 하므로 한 단계 진한 border-strong 을 쓴다. */
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-prompt,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-input,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-select {
  background: var(--aiv-surface) !important;
  border: 1px solid var(--aiv-border-strong) !important;
}
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-prompt:focus,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-input:focus,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-select:focus {
  border-color: var(--aiv-accent) !important;
}
#custom-modal .modal-content.ai-opinion-result-modal .modal-body .aoc-input::placeholder,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-prompt::placeholder,
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-input::placeholder {
  color: var(--aiv-dim) !important;
  opacity: 1;
}
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-select option {
  color: #0d0d0d; /* 네이티브 드롭다운은 OS 팝업이라 흰 배경 위 검정으로 고정 */
  background: #ffffff;
}
/* 다이얼로그의 고지(.aod-note)도 vendor 색을 따른다 —
   기존 규칙이 좌측 바를 제품 accent(보라)로 그려 팔레트와 어긋났다. */
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-note {
  background: var(--aiv-notice-bg);
  border-left-color: var(--aiv-accent);
}
/* 저장본 보기 버튼도 팔레트 표면으로 */
#custom-modal .modal-content.ai-opinion-dialog-modal .modal-body .aod-saved-btn {
  background: var(--aiv-bubble);
  border-color: var(--aiv-border);
}

/* 결과 팝업의 다시 생성 버튼 — 치수/타이포만 정의한다.
   ⚠ 색(background/color/radius)은 위 vendor 블록이 결정한다. 여기서 다시 칠하면
   이 규칙이 뒤에 있어 vendor accent 를 덮어써 모든 제공자가 같은 색이 된다. */
#custom-modal .ai-opinion-modal-body .modal-btn {
  height: 40px;
  padding: 0 20px;
  border: none;
  font-size: 13.5px;
  font-weight: 700;
  cursor: pointer;
  transition: opacity 0.14s ease, transform 0.1s ease;
}
#custom-modal .ai-opinion-modal-body .modal-btn:active {
  transform: translateY(1px);
}

/* 입력 조작 힌트 — 컴포저 바로 아래 작은 보조 문구 */
.aoc-hint {
  flex: 0 0 auto;
  margin-top: -6px;
  font-size: 11px;
  line-height: 1.5;
  text-align: right;
  opacity: 0.55;
}

/* ── 고지 박스 (GOCDSS-5269) ──
   PHI 경고 + AI 면책은 그냥 두면 배경 없는 잔글씨라 그대로 지나친다.
   한 박스로 묶고 옅은 배경 + 좌측 바로 "읽어야 하는 영역"임을 표시한다.
   의료 고지라 눈에 띄어야 하지만, 대화보다 튀면 안 되므로 채도는 낮게. */
.aoc-notice {
  flex: 0 0 auto;
  margin-top: 12px; /* 입력 영역과 확실히 분리 */
  padding: 10px 14px;
  border-radius: 12px;
  border-left: 3px solid var(--aiv-accent, #8f8f8f);
  background: var(--aiv-notice-bg, rgba(127, 127, 127, 0.08));
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.aoc-notice .aoc-note,
.aoc-notice .aoc-disclaimer {
  margin: 0;
  font-size: 11.5px;
  line-height: 1.6;
}
.aoc-notice .aoc-note {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  font-weight: 600; /* 두 고지 중 PHI 쪽이 더 강한 경고 */
}
.aoc-notice-icon {
  flex: 0 0 auto;
  margin-top: 2px;
  font-size: 11px;
  opacity: 0.75;
}
.aoc-notice .aoc-disclaimer {
  padding-left: 18px; /* 아이콘 폭만큼 들여써 두 줄을 같은 축에 정렬 */
  opacity: 0.85;
}

@media (max-width: 767px) {
  .profile-modal-title {
    margin-top: 10px;
  }
}

.help-button {
  background-color: var(--smcw-color-nav-button) !important;
  font-size: 1rem;
  color: var(--smcw-color-custom-search-button);
  margin-left: 10px;
  margin-right: 10px;
  border: none;
  height: 30px;
  width: 100px;
}

.help-button > i {
  margin-right: 10px;
}

.select2-container--default .select2-selection--multiple,
.select2-search__field {
  color: var(--smcw-color-select-text-color) !important;
  background: var(--smcw-color-select-color) !important;
  border: none !important;
}

.select2-container .select2-search--inline .select2-search__field {
  height: 50px !important;
  min-height: 50px !important;
}

.select2-dropdown {
  color: var(--smcw-color-select-text-color) !important;
  background: var(--smcw-color-popup-background) !important;
  border: none !important;
}

.select2-container--default .select2-results__option--selected {
  background: var(--smcw-color-custom-active-study) !important;
}

.select2-selection__clear {
  color: white !important;
  font-size: 20px !important;
}

.select2-container--default .select2-selection--multiple .select2-selection__choice {
  background-color: var(--smcw-color-custom-active-button, #3b82f6) !important;
  border: 1px solid var(--smcw-color-border, #2a3348) !important;
  border-radius: 4px !important;
  color: var(--smcw-color-custom-active-button-text, #ffffff) !important;
  padding: 2px 4px 2px 24px !important;
  margin: 3px 4px !important;
  font-size: 13px !important;
  line-height: 1.4 !important;
}

.select2-selection__choice__display {
  color: var(--smcw-color-custom-active-button-text, #ffffff) !important;
}

.select2-selection__choice__remove {
  color: var(--smcw-color-custom-active-button-text, #ffffff) !important;
  border-right: 1px solid rgba(255, 255, 255, 0.3) !important;
  background-color: transparent !important;
}

.select2-selection__choice__remove:hover {
  color: #ff6b6b !important;
  background-color: rgba(255, 255, 255, 0.1) !important;
}

#station-select {
  height: 30px;
  color: #fff;
  margin-top: 2px;
  background: var(--smcw-color-select-color);
  border: none;
}

/* ============================================================
   Floating Overlay Panel (에러/경고/정보 알림)
   2x 확대 버전 - 데스크탑/태블릿/모바일 반응형
   ============================================================ */
.floating-overlay-panel {
  position: fixed;
  top: 24px;
  right: 24px;
  min-width: 480px;
  max-width: 650px;
  background: var(--smcw-color-popup-background, #2d2d2d);
  border-radius: 12px !important;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.5);
  z-index: 10000;
  animation: floatingSlideIn 0.3s ease-out;
  overflow: hidden;
}

/* floatingAlert(toast)가 floatingConfirm 위에 표시되도록 z-index 조정 */
#floating-overlay-panel {
  z-index: 10002;
}

@keyframes floatingSlideIn {
  from {
    opacity: 0;
    transform: translateX(100px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes floatingSlideOut {
  from {
    opacity: 1;
    transform: translateX(0);
  }
  to {
    opacity: 0;
    transform: translateX(100px);
  }
}

.floating-overlay-panel.hiding {
  animation: floatingSlideOut 0.3s ease-in forwards;
}

.floating-overlay-content {
  display: flex;
  align-items: flex-start;
  padding: 24px;
  gap: 16px;
}

.floating-overlay-icon {
  flex-shrink: 0;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.floating-overlay-icon svg {
  width: 40px;
  height: 40px;
}

.floating-overlay-message {
  flex: 1;
  font-size: 22px;
  line-height: 1.5;
  color: var(--smcw-color-text, #fff);
  word-break: break-word;
}

.floating-overlay-close {
  flex-shrink: 0;
  background: none;
  border: none;
  color: var(--smcw-color-text, #aaa);
  font-size: 36px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  margin: -8px -8px 0 0;
  opacity: 0.7;
  transition: opacity 0.2s;
}

.floating-overlay-close:hover {
  opacity: 1;
}

.floating-overlay-footer {
  padding: 16px 24px;
  background: rgba(0, 0, 0, 0.2);
  text-align: right;
}

.floating-overlay-confirm {
  min-width: 140px;
  background: var(--smcw-color-button, #007bff);
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 12px 28px;
  cursor: pointer;
  font-size: 18px;
  font-weight: 500;
}

.floating-overlay-confirm:hover {
  background: var(--smcw-color-button-hover, #0056b3);
}

/* Type-specific styles */
.floating-overlay-panel.floating-error {
  border-left: 6px solid #dc3545;
}

.floating-overlay-panel.floating-error .floating-overlay-icon svg {
  fill: #dc3545;
}

.floating-overlay-panel.floating-warning {
  border-left: 6px solid #ffc107;
}

.floating-overlay-panel.floating-warning .floating-overlay-icon svg {
  fill: #ffc107;
}

.floating-overlay-panel.floating-success {
  border-left: 6px solid #28a745;
}

.floating-overlay-panel.floating-success .floating-overlay-icon svg {
  fill: #28a745;
}

.floating-overlay-panel.floating-info {
  border-left: 6px solid #17a2b8;
}

.floating-overlay-panel.floating-info .floating-overlay-icon svg {
  fill: #17a2b8;
}

/* Floating Confirm Panel (확인/취소 대화상자) */
.floating-overlay-panel.floating-confirm {
  border-left: 6px solid #17a2b8;
}

.floating-overlay-panel.floating-confirm .floating-overlay-icon svg {
  fill: #17a2b8;
}

.floating-confirm-footer {
  padding: 16px 24px;
  background: rgba(0, 0, 0, 0.2);
  text-align: right;
  display: flex;
  justify-content: flex-end;
  gap: 12px;
}

.floating-confirm-cancel {
  min-width: 140px;
  background: #6c757d;
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 12px 28px;
  font-size: 18px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s;
}

.floating-confirm-cancel:hover {
  background: #5a6268;
}

.floating-confirm-ok {
  min-width: 140px;
  background: var(--smcw-color-button, #007bff);
  color: #fff;
  border: none;
  border-radius: 6px;
  padding: 12px 28px;
  font-size: 18px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.2s;
}

.floating-confirm-ok:hover {
  background: var(--smcw-color-button-hover, #0056b3);
}

/* ============================================================
   Floating Overlay - 태블릿 (768px ~ 1024px)
   ============================================================ */
@media (max-width: 1024px) {
  .floating-overlay-panel {
    top: 20px;
    right: 20px;
    min-width: 400px;
    max-width: 550px;
    border-radius: 10px !important;
  }

  .floating-overlay-content {
    padding: 20px;
    gap: 14px;
  }

  .floating-overlay-icon {
    width: 40px;
    height: 40px;
  }

  .floating-overlay-icon svg {
    width: 32px;
    height: 32px;
  }

  .floating-overlay-message {
    font-size: 18px;
  }

  .floating-overlay-close {
    font-size: 32px;
    margin: -6px -6px 0 0;
  }

  .floating-overlay-footer {
    padding: 14px 20px;
  }

  .floating-overlay-confirm,
  .floating-confirm-cancel,
  .floating-confirm-ok {
    min-width: 120px;
    padding: 10px 24px;
    font-size: 16px;
  }

  .floating-confirm-footer {
    padding: 14px 20px;
    gap: 10px;
  }

  .floating-overlay-panel.floating-error,
  .floating-overlay-panel.floating-warning,
  .floating-overlay-panel.floating-success,
  .floating-overlay-panel.floating-info,
  .floating-overlay-panel.floating-confirm {
    border-left-width: 5px;
  }
}

/* ============================================================
   Floating Overlay - 모바일 (768px 이하)
   ============================================================ */
@media (max-width: 768px) {
  .floating-overlay-panel {
    top: 16px;
    right: 16px;
    left: 16px;
    min-width: unset;
    max-width: unset;
    width: calc(100% - 32px);
    border-radius: 8px !important;
  }

  .floating-overlay-content {
    padding: 16px;
    gap: 12px;
  }

  .floating-overlay-icon {
    width: 36px;
    height: 36px;
  }

  .floating-overlay-icon svg {
    width: 28px;
    height: 28px;
  }

  .floating-overlay-message {
    font-size: 16px;
  }

  .floating-overlay-close {
    font-size: 28px;
    margin: -4px -4px 0 0;
  }

  .floating-overlay-footer {
    padding: 12px 16px;
  }

  .floating-overlay-confirm,
  .floating-confirm-cancel,
  .floating-confirm-ok {
    min-width: 100px;
    padding: 8px 20px;
    font-size: 14px;
  }

  .floating-confirm-footer {
    padding: 12px 16px;
    gap: 8px;
  }

  .floating-overlay-panel.floating-error,
  .floating-overlay-panel.floating-warning,
  .floating-overlay-panel.floating-success,
  .floating-overlay-panel.floating-info,
  .floating-overlay-panel.floating-confirm {
    border-left-width: 4px;
  }
}

/* ================================================================
   Share Link Dialog - readonly input styling
   ================================================================ */
.share-readonly-input {
  color: #333 !important;
  background-color: #f8f9fa !important;
  border: 1px solid #ced4da !important;
}

.share-readonly-input:focus {
  color: #333 !important;
  background-color: #f8f9fa !important;
}

/* Share link dialog styling */
.share-link-dialog label {
  display: block;
  margin-bottom: 4px;
}

/* ============================================================
   전역 커스텀 스크롤바 (모든 요소에 일관된 스크롤바 적용)
   ============================================================ */
::-webkit-scrollbar {
  width: 16px !important;
  height: 16px !important;
}

::-webkit-scrollbar-track {
  background: var(--smcw-color-body, #1a1d22);
}

::-webkit-scrollbar-thumb {
  background: rgba(67, 151, 238, 0.8) !important;
  border-radius: 7px;
  min-height: 50px;
  border: 3px solid var(--smcw-color-body, #1a1d22);
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(67, 151, 238, 0.6);
}

::-webkit-scrollbar-corner {
  background: var(--smcw-color-body, #1a1d22);
}

/* ── Global Loading Overlay (공통) ── */
.global-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(7, 15, 30, 0.55);
}

/* [GOCDSS-5333] __panel / __icon / __text 는 public/css/loading.css 로 이관(SSOT).
   util.loading() · GoTable · camera-capture · viewer dicom-info 가 같은 정의를 공유한다.
   여기서 재정의하면 갈라지므로 추가하지 말 것. loading.css 는 header.html 에서 로드된다. */

.dz-message {
  color: white;
}
