:root {
  --cps-primary: #2563eb;
  --cps-primary-dark: #1d4ed8;
  --cps-primary-darker: #1e40af;
  --cps-primary-soft: #eff6ff;
  --cps-primary-focus: rgba(37, 99, 235, .22);
  --cps-sidebar: #172033;
  --cps-sidebar-hover: #22304a;
}

.cps-notice-toast {
  min-width: 320px;
  position: fixed;
  right: 20px;
  top: 20px;
  z-index: 2000;
}

/* SSP 관리자 전용 테마. 경고·오류·상태 배지의 의미색은 변경하지 않는다. */
.cps-theme .main-sidebar {
  background-color: var(--cps-sidebar);
}

.cps-theme .main-sidebar .brand-link {
  background-color: #111827;
  border-bottom-color: rgba(255, 255, 255, .09);
}

.cps-theme .cps-brand-link {
  align-items: center;
  display: flex;
  min-height: 57px;
  padding-bottom: .55rem;
  padding-top: .55rem;
}

.cps-theme .cps-brand-image {
  float: none;
  height: 36px;
  margin-left: .45rem;
  margin-right: .65rem;
  margin-top: 0;
  opacity: 1;
  width: 36px;
}

.cps-theme .cps-brand-link .brand-text {
  font-size: 1.08rem;
  font-weight: 400;
  letter-spacing: .01em;
}

.cps-theme .main-header.bg-primary,
.cps-theme .bg-primary,
.cps-theme .btn-primary {
  background-color: var(--cps-primary) !important;
  border-color: var(--cps-primary) !important;
}

.cps-theme .btn-primary:hover,
.cps-theme .btn-primary:focus,
.cps-theme .btn-primary:not(:disabled):not(.disabled):active {
  background-color: var(--cps-primary-dark) !important;
  border-color: var(--cps-primary-dark) !important;
}

/* 기존 주황 CTA 마크업은 테마에서 파란 기본 동작 버튼으로 표시한다. */
.cps-theme .btn-warning {
  background-color: var(--cps-primary);
  border-color: var(--cps-primary);
  color: #fff;
}

.cps-theme .btn-warning:hover,
.cps-theme .btn-warning:focus,
.cps-theme .btn-warning:not(:disabled):not(.disabled):active {
  background-color: var(--cps-primary-dark);
  border-color: var(--cps-primary-dark);
  color: #fff;
}

.cps-theme .btn-warning:focus,
.cps-theme .btn-primary:focus {
  box-shadow: 0 0 0 .2rem var(--cps-primary-focus);
}

.cps-theme .btn-outline-warning {
  border-color: var(--cps-primary);
  color: var(--cps-primary);
}

.cps-theme .btn-outline-warning:hover,
.cps-theme .btn-outline-warning:focus,
.cps-theme .btn-outline-warning:not(:disabled):not(.disabled):active {
  background-color: var(--cps-primary);
  border-color: var(--cps-primary);
  color: #fff;
}

.cps-theme .card.card-outline.card-orange,
.cps-theme .card.card-outline.card-purple {
  border-top-color: var(--cps-primary);
}

.cps-theme .nav-sidebar > .nav-item > .nav-link:hover,
.cps-theme .nav-treeview > .nav-item > .nav-link:hover {
  background-color: var(--cps-sidebar-hover);
  color: #fff;
}

.cps-theme .nav-sidebar > .nav-item > .nav-link.active,
.cps-theme .nav-treeview > .nav-item > .nav-link.active {
  background-color: var(--cps-primary) !important;
  color: #fff !important;
}

.cps-theme .form-control:focus,
.cps-theme .custom-select:focus {
  border-color: #93c5fd;
  box-shadow: 0 0 0 .2rem var(--cps-primary-focus);
}

.cps-theme .custom-control-input:checked ~ .custom-control-label::before {
  background-color: var(--cps-primary);
  border-color: var(--cps-primary);
}

.cps-theme .page-item.active .page-link {
  background-color: var(--cps-primary);
  border-color: var(--cps-primary);
}

.cps-theme a:not(.btn):not(.nav-link):not(.dropdown-item) {
  color: var(--cps-primary-dark);
}

.cps-theme a:not(.btn):not(.nav-link):not(.dropdown-item):hover {
  color: var(--cps-primary-darker);
}

.cps-theme .login-box .card-header a {
  color: var(--cps-primary-darker);
}

.cps-theme .cps-login-brand {
  align-items: center;
  display: inline-flex;
  font-size: 1.75rem;
  gap: .75rem;
  line-height: 1;
}

.cps-theme .cps-login-brand img {
  display: block;
  flex: 0 0 auto;
}
.cps-filter-row {
  align-items: flex-end;
}

.cps-filter-row > [class*="col-"] {
  display: flex;
  flex-direction: column;
}

.cps-filter-row .cps-form-action {
  justify-content: flex-end;
  padding-top: 0 !important;
}

.cps-filter-row .cps-form-action .btn {
  width: 100%;
}

.cps-filter-row .form-control:not(.form-control-sm),
.cps-filter-row .btn:not(.btn-sm) {
  min-height: calc(2.25rem + 2px);
}

.cps-filter-row .form-control-sm,
.cps-filter-row .btn-sm {
  min-height: calc(1.8125rem + 2px);
}

@media (max-width: 767.98px) {
  .cps-filter-row > [class*="col-"] {
    margin-bottom: .5rem;
  }
}

/* 모든 SSP 화면에서 같은 밀도와 카드 톤을 사용한다. */
.cps-theme .content .card {
  border-color: #dbe3ee;
  border-radius: .3rem;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .08);
}

.cps-theme .content .card-header {
  background: #fff;
  border-bottom-color: #e2e8f0;
  min-height: 39px;
  padding: .52rem .72rem;
}

.cps-theme .content .card-title {
  color: #1e293b;
  font-size: .9rem;
  font-weight: 600;
}

.cps-theme .content .table:not(.table-borderless) {
  color: #263445;
  font-size: .75rem;
  line-height: 1.25;
}

.cps-theme .content .table:not(.table-borderless) th,
.cps-theme .content .table:not(.table-borderless) td {
  padding: .32rem .46rem;
  vertical-align: middle;
}

.cps-theme .content .table:not(.table-borderless) thead th,
.cps-theme .content .table:not(.table-borderless) tfoot th {
  background: #f8fafc;
  border-bottom-width: 1px;
  color: #334155;
  font-weight: 600;
}

.cps-theme .content .card-body > .form-row label,
.cps-theme .content .card-body > .row.cps-filter-row label {
  color: #475569;
  font-size: .76rem;
  margin-bottom: .2rem;
}

.cps-theme .content .alert {
  font-size: .78rem;
}

.cps-theme .content .small-box {
  border-radius: .3rem;
  box-shadow: 0 1px 3px rgba(15, 23, 42, .1);
  min-height: 86px;
}

.cps-theme .content .small-box > .inner {
  padding: .65rem .75rem;
}

.cps-theme .content .small-box h3 {
  font-size: 1.35rem;
  margin-bottom: .15rem;
}

.cps-theme .content .small-box p {
  font-size: .78rem;
  margin-bottom: 0;
}
