/* ============================================================
   SJO 재단 관리자 — AdminLTE v4 브랜드 커스텀 테마
   네이비 + 골드 액센트
   ============================================================ */

/* ---------- 전역 변수 ---------- */
:root {
    --sjo-navy: #0f2a4a;
    --sjo-navy-2: #143b6b;
    --sjo-blue: #1a5fb4;
    --sjo-gold: #d9a441;
    --sjo-bg: #f4f6fa;
    --sjo-card: #ffffff;
    --sjo-border: #e6eaf0;
    --sjo-text: #1c2b3a;
    --sjo-muted: #6b7a8c;
}

body { background: var(--sjo-bg); color: var(--sjo-text); }
.app-content .container-fluid { max-width: 1400px; }

/* ---------- 사이드바 (브랜드 네이비) ---------- */
.app-sidebar { background: var(--sjo-navy) !important; }
.app-sidebar .sidebar-brand { background: var(--sjo-navy-2) !important; border-bottom: 1px solid rgba(255,255,255,.08); }
.app-sidebar .brand-link { color: #fff !important; }
.app-sidebar .brand-text { font-weight: 700; letter-spacing: .04em; }
.sidebar-menu .nav-link {
    color: rgba(255,255,255,.72) !important;
    font-size: .92rem;
    padding: .62rem 1.05rem;
    border-left: 3px solid transparent;
}
.sidebar-menu .nav-link:hover { color: #fff !important; background: rgba(255,255,255,.07); }
.sidebar-menu .nav-link.active {
    color: #fff !important;
    background: linear-gradient(90deg, rgba(26,95,180,.45), rgba(26,95,180,.12)) !important;
    border-left-color: var(--sjo-gold);
}
.sidebar-menu .nav-icon { margin-right: .55rem; color: rgba(255,255,255,.55); }
.sidebar-menu .nav-link.active .nav-icon { color: var(--sjo-gold); }

/* ---------- 상단 내비 ---------- */
.app-header { background: #fff; border-bottom: 1px solid var(--sjo-border); }
.app-header .navbar-text { color: var(--sjo-muted); font-weight: 600; }

/* ---------- 콘텐츠 헤더 ---------- */
.app-content-header { background: transparent; border-bottom: none; padding-top: 1rem; }
.app-content-header h3 {
    font-size: 1.4rem; font-weight: 700; color: var(--sjo-navy);
}

/* ---------- 카드 ---------- */
.app-main .card {
    border: 1px solid var(--sjo-border);
    border-radius: 12px;
    box-shadow: 0 2px 10px rgba(15,42,74,.05);
}
.app-main .card-header {
    background: #fff;
    border-bottom: 1px solid var(--sjo-border);
    padding: .9rem 1.25rem;
}
.app-main .card-header .card-title {
    font-size: 1.05rem; font-weight: 700; color: var(--sjo-navy);
}
.app-main .card-header .card-title::before {
    content: ""; display: inline-block; width: 4px; height: 1.05em;
    background: linear-gradient(var(--sjo-blue), var(--sjo-gold));
    margin-right: .55rem; border-radius: 2px; vertical-align: -2px;
}

/* ---------- 통계 카드 (small-box 그라데이션) ---------- */
.small-box { border-radius: 14px; overflow: hidden; box-shadow: 0 6px 18px rgba(15,42,74,.12); transition: transform .15s ease; }
.small-box:hover { transform: translateY(-3px); }
.small-box.bg-info   { background: linear-gradient(135deg,#1a5fb4,#3d8bf5) !important; }
.small-box.bg-warning{ background: linear-gradient(135deg,#d9a441,#f0c466) !important; }
.small-box.bg-success{ background: linear-gradient(135deg,#0f766e,#14b8a6) !important; }
.small-box.bg-danger { background: linear-gradient(135deg,#b91c1c,#ef4444) !important; }
.small-box.bg-primary{ background: linear-gradient(135deg,#143b6b,#1a5fb4) !important; }
.small-box.bg-secondary{ background: linear-gradient(135deg,#475569,#64748b) !important; }
.small-box .inner h3 { font-size: 2rem; font-weight: 800; margin:.1rem 0 .25rem; text-shadow: 0 1px 2px rgba(0,0,0,.15); }
.small-box .inner p { font-size: .9rem; font-weight: 600; opacity:.95; margin-bottom:.2rem; }
.small-box .icon { opacity:.9; }
.small-box .icon i { font-size: 3.4rem; }

/* ---------- 테이블 ---------- */
.table-sjo th {
    background:#f8fafc !important; color:#475569 !important;
    font-size:.8rem !important; font-weight:700 !important;
    letter-spacing:.02em; text-transform:none !important;
}
.table-sjo td { vertical-align:middle; font-size:.9rem; }
.table-sjo tbody tr:hover { background:#f0f6ff !important; }
.table-sjo .hash { font-family:"SFMono-Regular",Consolas,monospace; font-size:.8rem; word-break:break-all; }

/* ---------- 버튼 ---------- */
.app-main .btn-primary { background-color:#1a5fb4; border-color:#1a5fb4; }
.app-main .btn-primary:hover { background-color:#143b6b; border-color:#143b6b; }
.app-main .btn-success { background-color:#0f766e; border-color:#0f766e; }
.app-main .btn-danger { background-color:#dc2626; border-color:#dc2626; }
.app-main .btn-sm { font-size:.8rem; }

/* ---------- 페이지네이션 ---------- */
.pagination .page-item.active .page-link { background-color:#1a5fb4; border-color:#1a5fb4; }

/* ---------- 뱃지 ---------- */
.badge-success{background:#d1fae5 !important;color:#065f46 !important;}
.badge-info   {background:#dbeafe !important;color:#1e40af !important;}
.badge-danger {background:#fee2e2 !important;color:#991b1b !important;}
.badge-warning{background:#fef3c7 !important;color:#92400e !important;}
.badge-primary{background:#e0e7ff !important;color:#3730a3 !important;}
.badge-secondary{background:#e2e8f0 !important;color:#475569 !important;}
.badge-warn   {background:#fef3c7 !important;color:#92400e !important;}
.badge-ok     {background:#d1fae5 !important;color:#065f46 !important;}
.badge-err    {background:#fee2e2 !important;color:#991b1b !important;}
.badge-info-hover{ }

/* ---------- 폼 컨트롤 ---------- */
.app-main .form-control, .app-main select.form-control {
    border-radius:.5rem;
}
.app-main .form-control:focus { border-color:#1a5fb4; box-shadow:0 0 0 .2rem rgba(26,95,180,.15); }

/* ---------- 알림 ---------- */
.alert-success{background:#d1fae5 !important;color:#065f46 !important;}
.alert-error{background:#fee2e2 !important;color:#991b1b !important;}
.alert-danger{background:#fee2e2 !important;color:#991b1b !important;}
.alert-info{background:#dbeafe !important;color:#1e40af !important;}
.alert-warning{background:#fef3c7 !important;color:#92400e !important;}

/* ===== 로그인 페이지 커스텀 ===== */
.login-page {
    background: linear-gradient(135deg, #0f2440 0%, #1a5fb4 55%, #6c5ce7 100%) !important;
    min-height: 100vh;
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.login-page .login-box { width:100%; max-width:420px; }
.login-page .login-box .card {
    border:none !important; border-radius:16px !important;
    box-shadow: 0 20px 50px rgba(0,0,0,.35) !important; overflow:hidden;
}
.login-page .card-header {
    background: linear-gradient(135deg,#1a5fb4,#6c5ce7);
    color:#fff; padding:28px 24px !important; text-align:center;
}
.login-page .card-header .login-brand-icon {
    width:52px;height:52px;border-radius:14px;background:rgba(255,255,255,.18);
    display:flex;align-items:center;justify-content:center;margin:0 auto 14px;font-size:24px;
}
.login-page .card-header h3 { color:#fff;font-weight:700;letter-spacing:.02em;margin:0;font-size:1.25rem; }
.login-page .card-header p { color:rgba(255,255,255,.85);margin:.4rem 0 0;font-size:.85rem; }
.login-page .card-body { padding:28px !important; }
.login-page .form-control { border-radius:10px !important;padding:12px 14px !important;height:auto !important;font-size:.95rem; }
.login-page .input-group-text { border-radius:10px 0 0 10px !important;background:#f4f6fa;border-right:none;color:#94a3b8; }
.login-page .input-group > .form-control { border-radius:0 10px 10px 0 !important; }
.login-page .btn-login {
    width:100%;border:none;border-radius:10px;padding:12px;
    background:linear-gradient(135deg,#1a5fb4,#6c5ce7);color:#fff;
    font-weight:600;font-size:.98rem;letter-spacing:.03em;
}
.login-page .btn-login:hover { opacity:.92; }
.login-page .login-foot { text-align:center;margin-top:18px;font-size:.85rem;color:#64748b; }

/* ===== 깔끔한 레이아웃 정리 ===== */
/* 콘텐츠 폭 제한 — 넓은 화면에서 퍼지지 않게 */
.app-content .container-fluid { max-width: 1360px; margin: 0 auto; }

/* 페이지 타이틀 (content-header) */
.app-content-header {
    padding-top: 1.1rem;
    padding-bottom: .35rem;
}
.page-title-wrap { display:flex; align-items:baseline; gap:.6rem; }
.page-title {
    font-size: 1.35rem; font-weight: 800; color:#0f2a4a; margin:0;
}
.page-title-wrap::before {
    content:""; width:5px; height:1.25rem; background:linear-gradient(#1a5fb4,#d9a441);
    border-radius:3px; align-self:center;
}

/* 카드 여백/간격 균일 */
.app-main .card { margin-bottom:1.25rem; }
.app-main .card-body { padding:1.1rem 1.25rem; }

/* 테이블 행 높이/패딩 정돈 */
.table-sjo td, .table-sjo th { padding:.7rem .9rem; }

/* 본문 위 여백 */
.app-content { padding-top:.5rem; }

/* ===== 세련된 탭 (nav-tabs 커스텀) ===== */
.app-main .card-header .nav-tabs {
    border-bottom: 1px solid var(--sjo-border);
}
.app-main .card-header .nav-tabs .nav-link {
    border: none;
    border-bottom: 3px solid transparent;
    color: #6b7a8c;
    font-weight: 600;
    font-size: .92rem;
    padding: .7rem 1.1rem;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
    background: transparent;
    border-radius: 0;
}
.app-main .card-header .nav-tabs .nav-link:hover {
    color: #143b6b;
}
.app-main .card-header .nav-tabs .nav-link.active {
    color: #143b6b;
    background: transparent;
    border-bottom-color: #1a5fb4;
}
.app-main .card-header .nav-tabs .nav-link i {
    margin-right: .4rem;
    color: #94a3b8;
}
.app-main .card-header .nav-tabs .nav-link.active i {
    color: #1a5fb4;
}
