/*
 * JBNU LARC - Tabler green theme (Tabler 1.7.x / Bootstrap 5.3 based)
 * 로고의 녹색 계열을 참고한 프로젝트 테마이며 대학 공식 색상값이 아님.
 * 모든 색상 값은 이 파일에서만 정의한다. 반드시 tabler.min.css 다음에 로드할 것.
 */

/* ---------- 1. 색상 토큰 (단일 관리 지점) ---------- */
:root {
  --app-primary: #009040;
  --app-primary-dark: #007a36;
  --app-primary-light: #eaf5ee;
  --app-primary-rgb: 0, 144, 64;
  --app-primary-light-rgb: 234, 245, 238;

  --app-page-bg: #f5f8f6;
  --app-card-bg: #ffffff;
  --app-text: #26332c;
  --app-text-secondary: #68766d;
  --app-border: #e1e9e3;

  /* 의미 상태 색상: Primary(녹색)와 구분되도록 색상 계열을 분리 */
  --app-success: #1c9a73;
  --app-success-rgb: 28, 154, 115;
  --app-success-light-rgb: 232, 246, 241;
  --app-info: #2b7fc4;
  --app-info-rgb: 43, 127, 196;
  --app-info-light-rgb: 234, 243, 250;
  --app-warning: #e09b00;
  --app-warning-rgb: 224, 155, 0;
  --app-warning-light-rgb: 254, 246, 226;
  --app-danger: #d63939;
  --app-danger-rgb: 214, 57, 57;
  --app-danger-light-rgb: 251, 235, 235;

  --app-radius: 4px;
  --app-radius-lg: 6px;
}

/* ---------- 2. Tabler / Bootstrap 변수 매핑 ---------- */
:root,
[data-bs-theme="light"],
[data-theme="light"] {
  --tblr-primary: var(--app-primary);
  --tblr-primary-rgb: var(--app-primary-rgb);
  --tblr-primary-fg: #ffffff;
  --tblr-primary-darken: var(--app-primary-dark);
  --tblr-primary-lt: var(--app-primary-light);
  --tblr-primary-lt-rgb: var(--app-primary-light-rgb);
  --tblr-primary-200: rgba(var(--app-primary-rgb), 0.2);
  --tblr-brand: var(--app-primary);
  --tblr-primary-text-emphasis: var(--app-primary-dark);
  --tblr-primary-bg-subtle: var(--app-primary-light);
  --tblr-primary-border-subtle: color-mix(in srgb, var(--app-primary) 30%, #fff);

  --tblr-success: var(--app-success);
  --tblr-success-rgb: var(--app-success-rgb);
  --tblr-success-lt-rgb: var(--app-success-light-rgb);
  --tblr-success-lt: rgb(var(--app-success-light-rgb));
  --tblr-success-darken: color-mix(in srgb, var(--app-success) 85%, #000);
  --tblr-info: var(--app-info);
  --tblr-info-rgb: var(--app-info-rgb);
  --tblr-info-lt-rgb: var(--app-info-light-rgb);
  --tblr-info-lt: rgb(var(--app-info-light-rgb));
  --tblr-info-darken: color-mix(in srgb, var(--app-info) 85%, #000);
  --tblr-warning: var(--app-warning);
  --tblr-warning-rgb: var(--app-warning-rgb);
  --tblr-warning-lt-rgb: var(--app-warning-light-rgb);
  --tblr-warning-lt: rgb(var(--app-warning-light-rgb));
  --tblr-warning-darken: color-mix(in srgb, var(--app-warning) 85%, #000);
  --tblr-danger: var(--app-danger);
  --tblr-danger-rgb: var(--app-danger-rgb);
  --tblr-danger-lt-rgb: var(--app-danger-light-rgb);
  --tblr-danger-lt: rgb(var(--app-danger-light-rgb));
  --tblr-danger-darken: color-mix(in srgb, var(--app-danger) 85%, #000);

  --tblr-body-bg: var(--app-page-bg);
  --tblr-body-color: var(--app-text);
  --tblr-heading-color: var(--app-text);
  --tblr-secondary-color: var(--app-text-secondary);
  --tblr-muted: var(--app-text-secondary);
  --tblr-bg-surface: var(--app-card-bg);
  --tblr-bg-surface-secondary: var(--app-page-bg);
  --tblr-border-color: var(--app-border);
  --tblr-border-color-translucent: var(--app-border);

  /* 링크는 흰 배경 대비 4.5:1 이상 확보를 위해 Primary Dark 사용 */
  --tblr-link-color: var(--app-primary-dark);
  --tblr-link-hover-color: var(--app-primary-dark);
  --tblr-link-color-rgb: 0, 122, 54;

  --tblr-border-radius: var(--app-radius);
  --tblr-border-radius-sm: 3px;
  --tblr-border-radius-lg: var(--app-radius-lg);
  --tblr-shadow-card: 0 1px 1px rgba(38, 51, 44, 0.04);
  --tblr-navbar-active-border-color: var(--app-primary);
}

/* ---------- 3. 컴포넌트 보정 ---------- */
/* Primary 버튼: hover/active 시 Primary Dark */
.btn-primary {
  --tblr-btn-bg: var(--app-primary);
  --tblr-btn-border-color: var(--app-primary);
  --tblr-btn-hover-bg: var(--app-primary-dark);
  --tblr-btn-hover-border-color: var(--app-primary-dark);
  --tblr-btn-active-bg: var(--app-primary-dark);
  --tblr-btn-active-border-color: var(--app-primary-dark);
  --tblr-btn-disabled-bg: var(--app-primary);
  --tblr-btn-disabled-border-color: var(--app-primary);
  --tblr-btn-color: #fff;
  --tblr-btn-hover-color: #fff;
  --tblr-btn-active-color: #fff;
}
/* 그라데이션/inset 그림자 제거 (플랫 스타일) */
.btn-primary, .btn-secondary, .btn-success, .btn-info,
.btn-warning, .btn-danger, .btn-dark, .btn-light {
  --tblr-btn-gradient: none;
  --tblr-btn-box-shadow: none;
}
.btn-outline-primary {
  --tblr-btn-color: var(--app-primary-dark);
  --tblr-btn-border-color: var(--app-primary);
  --tblr-btn-hover-bg: var(--app-primary);
  --tblr-btn-hover-border-color: var(--app-primary);
  --tblr-btn-hover-color: #fff;
  --tblr-btn-active-bg: var(--app-primary-dark);
  --tblr-btn-active-border-color: var(--app-primary-dark);
  --tblr-btn-active-color: #fff;
}

/* Header */
.navbar.app-header {
  background: var(--app-card-bg);
  border-bottom: 1px solid var(--app-border);
  box-shadow: none;
}
.app-brand-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border-radius: var(--app-radius);
  background: var(--app-primary);
  color: #fff;
  font-weight: 700;
  font-size: 0.8rem;
  letter-spacing: 0.02em;
}

/* Sidebar */
.navbar-vertical {
  --tblr-navbar-bg: var(--app-card-bg);
  border-right: 1px solid var(--app-border);
}
.navbar-vertical .nav-link {
  color: var(--app-text);
  border-radius: var(--app-radius);
}
.navbar-vertical .nav-link:hover {
  background: var(--app-page-bg);
  color: var(--app-primary-dark);
}
.navbar-vertical .nav-item.active > .nav-link,
.navbar-vertical .nav-link.active {
  background: var(--app-primary-light);
  color: var(--app-primary-dark);
  font-weight: 600;
  box-shadow: inset 3px 0 0 var(--app-primary);
}
.navbar-vertical .nav-link.active .nav-link-icon,
.navbar-vertical .nav-item.active .nav-link-icon {
  color: var(--app-primary);
}
.app-nav-caption {
  padding: 0.75rem 1rem 0.25rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--app-text-secondary);
}

/* Page header / Breadcrumb */
.page-header .page-title {
  color: var(--app-text);
  font-weight: 600;
}
.page-pretitle {
  color: var(--app-text-secondary);
}
.breadcrumb {
  --tblr-breadcrumb-divider-color: var(--app-text-secondary);
  --tblr-breadcrumb-item-active-color: var(--app-text-secondary);
}
.breadcrumb-item a {
  color: var(--app-primary-dark);
}

/* Card */
.card {
  border-color: var(--app-border);
  box-shadow: var(--tblr-shadow-card);
}
.card-header {
  border-bottom-color: var(--app-border);
}

/* Form */
.form-control:focus,
.form-select:focus {
  border-color: var(--app-primary);
  box-shadow: 0 0 0 0.2rem rgba(var(--app-primary-rgb), 0.18);
}
.form-check-input:checked {
  background-color: var(--app-primary);
  border-color: var(--app-primary);
}
.form-check-input:focus {
  border-color: var(--app-primary);
  box-shadow: 0 0 0 0.2rem rgba(var(--app-primary-rgb), 0.18);
}
.form-selectgroup-input:checked + .form-selectgroup-label {
  border-color: var(--app-primary);
  background: var(--app-primary-light);
  color: var(--app-primary-dark);
}

/* Table / Pagination */
.table {
  --tblr-table-border-color: var(--app-border);
  --tblr-table-hover-bg: var(--app-primary-light);
  --tblr-table-striped-bg: var(--app-page-bg);
}
.table thead th {
  background: var(--app-page-bg);
  color: var(--app-text-secondary);
  border-bottom-color: var(--app-border);
}
.pagination {
  --tblr-pagination-active-bg: var(--app-primary);
  --tblr-pagination-active-border-color: var(--app-primary);
  --tblr-pagination-active-color: #fff;
  --tblr-pagination-hover-color: var(--app-primary-dark);
  --tblr-pagination-focus-color: var(--app-primary-dark);
}

/* Dropdown / Modal */
.dropdown-menu {
  --tblr-dropdown-border-color: var(--app-border);
  --tblr-dropdown-link-hover-bg: var(--app-primary-light);
  --tblr-dropdown-link-active-bg: var(--app-primary-light);
  --tblr-dropdown-link-active-color: var(--app-primary-dark);
  box-shadow: 0 4px 12px rgba(38, 51, 44, 0.1);
}
.modal-content {
  border-color: var(--app-border);
}
.modal-header,
.modal-footer {
  border-color: var(--app-border);
}

/* Badge: 연한 배경 + 진한 글자로 대비 확보, 솔리드 배지는 흰 글자 */
.badge.bg-primary,
.badge.bg-success,
.badge.bg-info,
.badge.bg-danger,
.badge.bg-secondary {
  color: #fff !important;
}
.badge.bg-warning {
  color: var(--app-text) !important;
}
.badge.bg-primary-lt {
  background: var(--app-primary-light) !important;
  color: var(--app-primary-dark) !important;
}
.badge.bg-success-lt { color: color-mix(in srgb, var(--app-success) 70%, #000) !important; }
.badge.bg-info-lt    { color: color-mix(in srgb, var(--app-info) 70%, #000) !important; }
.badge.bg-warning-lt { color: color-mix(in srgb, var(--app-warning) 45%, #000) !important; }
.badge.bg-danger-lt  { color: color-mix(in srgb, var(--app-danger) 85%, #000) !important; }

/* Alert */
.alert-primary {
  --tblr-alert-bg: var(--app-primary-light);
  --tblr-alert-border-color: color-mix(in srgb, var(--app-primary) 30%, #fff);
  --tblr-alert-color: var(--app-primary-dark);
}

/* 통계 카드 아이콘 */
.app-stat-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: var(--app-radius);
  font-size: 1.25rem;
}

/* 심의 진행상태 / 업무 단계 (Tabler .steps 확장) */
.steps {
  --tblr-steps-color: var(--app-primary);
  --tblr-steps-inactive-color: var(--app-border);
}
.steps .step-item.active ~ .step-item { color: var(--app-text-secondary); }
.steps .step-item.active ~ .step-item::before {
  background-color: var(--app-border);
  border-color: var(--app-card-bg);
}
.steps .step-item.active:after { color: var(--app-primary-dark); }

/* 단계 진행률 바 */
.progress {
  --tblr-progress-bg: var(--app-border);
  --tblr-progress-bar-bg: var(--app-primary);
}
