@charset "utf-8";

/* admin.css - 관리자 공통/대시보드 통합 CSS */

/* 1) 기본 변수 / com.css 이동 누락 보강 */
:root { --header-h:56px; --sidebar-w:220px; --radius:8px; --font-sans:"Pretendard","Noto Sans KR","Malgun Gothic",Arial,sans-serif; --font-code:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace; --brand:#6FA82F; --brand-deep:#4D7F1F; --brand-soft:#EFF8E7; --warn:#E59F20; --warn-deep:#A86600; --warn-soft:#FFF5DB; --err:#D94A4A; --err-soft:#FFF0F0; --ink:#1F2933; --ink-soft:#5B6673; --ink-mute:#8A94A3; --bg:#F3F5F7; --bg-card:#FFFFFF; --bg-soft:#F6F8FA; --bd:#E3E7EC; --bd-mid:#D5DBE3; }
html, body { min-height:100%; }
body { margin:0; font-family:var(--font-sans); font-size:13px; color:var(--ink); background:var(--bg); -webkit-font-smoothing:antialiased; }
a { color:inherit; text-decoration:none; }
a:hover { text-decoration:none; }
button, input, select, textarea { font-family:inherit; }
button { cursor:pointer; }
img { max-width:100%; vertical-align:middle; }
* { box-sizing:border-box; }

/* 2) 관리자 레이아웃 */
.admin-layout { display:flex; flex-direction:column; min-height:100vh; background:var(--bg); }
.admin-body { display:flex; flex:1; min-height:0; }
.admin-sidebar { width:var(--sidebar-w); flex-shrink:0; overflow-y:auto; background:#1e2329; color:#c8ccd1; border-right:none; }
.admin-main { flex:1; min-width:0; padding:24px 28px; overflow-x:auto; background:var(--bg); }
.admin-wrap { margin:0 auto; }
.admin-content { width:100%; min-width:0; }
.admin-section { margin-bottom:14px; }
.admin-grid { display:grid; gap:10px; }
.admin-grid--2 { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.admin-grid--3 { grid-template-columns:repeat(3, minmax(0, 1fr)); }
.admin-grid--4 { grid-template-columns:repeat(4, minmax(0, 1fr)); }

/* 3) 헤더 */
.admin-header { display:flex; align-items:center; flex-shrink:0; gap:16px; height:var(--header-h); padding:0 20px; background:var(--bg-card); border-bottom:1px solid var(--bd); }
.hd-brand { display:flex; align-items:center; flex-shrink:0; gap:8px; color:var(--ink); }
.hd-logo { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; font-size:13px; font-weight:600; color:#fff; background:var(--brand); border-radius:5px; }
.hd-brand-text { display:flex; flex-direction:column; line-height:1.1; }
.hd-brand-ko { font-size:13px; font-weight:600; }
.hd-brand-en { margin-top:2px; font-size:10px; color:var(--ink-mute); letter-spacing:.2px; }
.hd-search { display:flex; align-items:center; flex:1; gap:6px; max-width:320px; padding:6px 12px; color:var(--ink-mute); background:var(--bg-soft); border-radius:6px; }
.hd-search input { flex:1; font-size:12px; color:var(--ink); background:transparent; border:none; outline:none; }
.hd-search input::placeholder { color:var(--ink-mute); }
.hd-search-icon { flex-shrink:0; font-size:14px; }
.hd-utils { display:flex; align-items:center; gap:10px; margin-left:auto; font-size:11.5px; }
.hd-sess { display:flex; align-items:center; gap:5px; color:var(--ink-mute); }
.hd-sess-t { font-family:var(--font-code); font-weight:600; color:var(--ink); }
.hd-sep { width:1px; height:12px; background:var(--bd); }
.hd-user { font-weight:600; color:var(--ink); }
.hd-user-id { margin-left:2px; font-size:11px; font-weight:400; color:var(--ink-mute); }
.hd-btn { padding:4px 9px; font-size:11px; color:var(--ink-soft); background:var(--bg-card); border:1px solid var(--bd-mid); border-radius:4px; transition:background .15s, border-color .15s, color .15s; }
.hd-btn:hover { color:var(--ink); background:var(--bg-soft); }
.hd-home-btn { display:inline-flex; align-items:center; text-decoration:none; }
.hd-password-btn { display:inline-flex; align-items:center; text-decoration:none; }

/* 4) 사이드바 */
.sb { padding:8px 0 14px; }
.sb-list { margin:0; padding:0; list-style:none; }
.sb-main { display:block; padding:9px 16px; font-size:12px; font-weight:500; color:#c8ccd1; border-left:2px solid transparent; transition:background .15s, color .15s; }
.sb-main:hover { color:#fff; background:rgba(255, 255, 255, .04); }
.sb-main.is-active { color:#fff; background:rgba(255, 255, 255, .05); border-left-color:#97C459; }
.sb-grp-btn { display:flex; align-items:center; gap:8px; width:100%; padding:9px 16px; font-size:12px; font-weight:500; color:#c8ccd1; text-align:left; background:none; border:none; transition:background .15s, color .15s; }
.sb-grp-btn:hover { color:#fff; background:rgba(255, 255, 255, .04); }
.sb-grp-btn .lbl { flex:1; }
.sb-chev { flex-shrink:0; font-size:11px; opacity:.6; transition:transform .2s ease, opacity .2s; }
.sb-grp.is-open .sb-grp-btn { color:#fff; }
.sb-grp.is-open .sb-chev { opacity:1; transform:rotate(90deg); }
.sb-grp-body { max-height:0; overflow:hidden; background:rgba(0, 0, 0, .18); transition:max-height .25s ease; }
.sb-grp.is-open .sb-grp-body { max-height:600px; }
.sb-sub { display:block; padding:5px 16px 5px 32px; font-size:11.5px; line-height:1.4; color:#9aa0a6; border-left:2px solid transparent; transition:background .15s, color .15s; }
.sb-sub:hover { color:#fff; background:rgba(255, 255, 255, .03); }
.sb-sub.is-active { font-weight:500; color:#fff; background:rgba(151, 196, 89, .12); border-left-color:#97C459; }
.sb-divider { height:1px; margin:10px 12px; background:rgba(255, 255, 255, .08); }
.sb-collapse { margin-top:4px; }
.sb-collapse-toggle { display:flex; align-items:center; gap:6px; width:100%; padding:8px 16px; font-size:10.5px; font-weight:500; color:#6b7280; letter-spacing:.3px; text-align:left; background:transparent; border:none; transition:background .15s, color .15s; }
.sb-collapse-toggle:hover { color:#c8ccd1; background:rgba(255, 255, 255, .04); }
.sb-collapse-toggle.is-open .sb-chev { opacity:1; transform:rotate(90deg); }
.sb-count { padding:1px 6px; margin-left:auto; font-family:var(--font-code); font-size:9.5px; font-variant-numeric:tabular-nums; color:#c8ccd1; background:rgba(255, 255, 255, .08); border-radius:9px; }
.sb-collapse-body { max-height:480px; padding:4px 0 8px; margin:4px 8px 0; overflow-y:auto; background:rgba(0, 0, 0, .18); border-radius:var(--radius); }
.sb-list--mini .sb-group--sub { padding:10px 12px 2px; font-size:9px; font-weight:600; color:#6b7280; letter-spacing:.5px; text-transform:uppercase; }
.sb-link--mini { display:flex; align-items:baseline; gap:6px; padding:3px 12px; font-size:10.5px; line-height:1.4; color:#9aa0a6; }
.sb-link--mini:hover { color:#fff; background:rgba(255, 255, 255, .04); }
.sb-order { min-width:28px; font-family:var(--font-code); font-size:9.5px; color:#6b7280; }
.sb-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sb-collapse-body::-webkit-scrollbar { width:4px; }
.sb-collapse-body::-webkit-scrollbar-track { background:transparent; }
.sb-collapse-body::-webkit-scrollbar-thumb { background:rgba(255, 255, 255, .15); border-radius:2px; }

/* 5) 페이지 헤더 */
.page { margin:0 auto; }
.page-bc { margin-bottom:6px; font-size:11px; color:var(--ink-mute); }
.page-bc a { color:var(--ink-mute); transition:color .15s; }
.page-bc a:hover { color:var(--brand); }
.page-bc-sep { margin:0 5px; opacity:.55; }
.page-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; padding-bottom:14px; margin-bottom:18px; border-bottom:1px solid var(--bd); }
.page-title { margin:0 0 3px; font-size:20px; font-weight:600; color:var(--ink); letter-spacing:-.01em; }
.page-sub { margin:0; font-size:12px; color:var(--ink-soft); }
.page-acts { display:flex; flex-shrink:0; gap:6px; }

/* 6) 카드 / 관리자 첫페이지 보강 */
.card, .admin-card, .dash-card { padding:14px 16px; background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--radius); }
.card--flush, .admin-card--flush { padding:0; overflow:hidden; }
.card-h { display:flex; align-items:center; justify-content:space-between; padding-bottom:9px; margin-bottom:10px; border-bottom:1px solid var(--bd); }
.card-ti { display:inline-flex; align-items:center; gap:5px; margin:0; font-size:13px; font-weight:600; color:var(--ink); }
.card-ti i { font-size:14px; color:var(--brand); }
.card-more { font-size:11px; color:var(--ink-mute); transition:color .15s; }
.card-more:hover { color:var(--brand); }
.card-meta { font-family:var(--font-code); font-size:11px; font-variant-numeric:tabular-nums; color:var(--ink-mute); }
.cards-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px; }
.cards-row--3 { grid-template-columns:repeat(3, minmax(0, 1fr)); }
.cards-row--2 { grid-template-columns:repeat(2, minmax(0, 1fr)); }

/* 7) KPI */
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:10px; margin-bottom:14px; }
.kpi { padding:13px 15px; background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--radius); }
.kpi-hd { display:flex; align-items:center; justify-content:space-between; margin-bottom:7px; }
.kpi-l { font-size:11.5px; font-weight:500; color:var(--ink-soft); }
.kpi-hd i { font-size:14px; color:var(--ink-mute); }
.kpi-v { font-size:22px; font-weight:600; font-variant-numeric:tabular-nums; line-height:1; color:var(--ink); letter-spacing:-.02em; }
.kpi-d { display:inline-flex; align-items:center; gap:3px; margin-top:5px; font-size:11px; }
.kpi-d--up { color:var(--brand-deep); }
.kpi-d--warn { color:var(--warn); }
.kpi-d i { font-size:12px; }

/* 8) 리스트 / 배지 */
.row-list { margin:0; padding:0; list-style:none; }
.row { display:flex; align-items:center; gap:8px; padding:5px 0; font-size:12px; }
.row-cat { flex-shrink:0; min-width:30px; padding:1px 6px; font-size:10px; font-weight:500; color:var(--ink-soft); text-align:center; background:var(--bg-soft); border-radius:3px; }
.row-ttl { flex:1; overflow:hidden; color:var(--ink); text-overflow:ellipsis; white-space:nowrap; transition:color .15s; }
.row-ttl:hover { color:var(--brand); }
.row-meta { flex-shrink:0; font-size:11px; font-variant-numeric:tabular-nums; color:var(--ink-mute); }
.bdg { flex-shrink:0; padding:2px 7px; font-size:10px; font-weight:500; border-radius:3px; }
.bdg--wait { color:var(--warn-deep); background:var(--warn-soft); }
.bdg--ok { color:var(--brand-deep); background:var(--brand-soft); }
.bdg--no { color:var(--err); background:var(--err-soft); }
.stats-mini { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; margin-bottom:8px; }
.stats-mini > div { padding:9px 10px; background:var(--bg-soft); border-radius:5px; }
.stats-mini-l { display:block; margin-bottom:3px; font-size:10.5px; color:var(--ink-soft); }
.stats-mini strong { display:block; font-size:18px; font-weight:600; line-height:1; color:var(--ink); font-variant-numeric:tabular-nums; }

/* 9) 차트 / 빠른 실행 */
.dashboard-action-grid { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:10px; margin-bottom:10px; }
.dashboard-action-grid .card { min-width:0; margin:0; }
.chart-card svg { display:block; width:100%; }
.quick-row { display:grid; grid-template-columns:repeat(4, 1fr); gap:8px; }
.quick-card .quick-row { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.qa { padding:11px 13px; background:var(--bg-card); border:1px solid var(--bd); border-radius:var(--radius); transition:border-color .15s, transform .15s; }
.qa:hover { border-color:var(--brand); transform:translateY(-1px); }
.qa-i { display:block; margin-bottom:5px; font-size:15px; color:var(--brand); }
.qa-t { margin-bottom:1px; font-size:12px; font-weight:600; color:var(--ink); }
.qa-d { font-size:10.5px; color:var(--ink-soft); }

/* 10) 버튼 / 테이블 기본 보강 */
.btn-admin, .btn-modern { display:inline-flex; align-items:center; justify-content:center; gap:4px; min-height:28px; padding:5px 10px; font-size:12px; font-weight:500; color:var(--ink); background:#fff; border:1px solid var(--bd-mid); border-radius:5px; transition:background .15s, border-color .15s, color .15s; }
.btn-admin:hover, .btn-modern:hover { background:var(--bg-soft); border-color:var(--brand); color:var(--brand-deep); }
.btn-admin--primary, .btn-modern--primary { color:#fff; background:var(--brand); border-color:var(--brand); }
.btn-admin--primary:hover, .btn-modern--primary:hover { color:#fff; background:var(--brand-deep); border-color:var(--brand-deep); }
.admin-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--bd); }
.admin-table th { padding:9px 10px; font-size:12px; font-weight:600; color:var(--ink); background:var(--bg-soft); border-bottom:1px solid var(--bd); }
.admin-table td { padding:8px 10px; font-size:12px; color:var(--ink-soft); border-bottom:1px solid var(--bd); }
.admin-table tr:last-child td { border-bottom:none; }
.empty, .admin-empty { padding:28px 16px; font-size:12px; color:var(--ink-mute); text-align:center; background:var(--bg-card); border:1px dashed var(--bd-mid); border-radius:var(--radius); }

/* 11) 푸터 */
.admin-footer { display:flex; align-items:center; justify-content:space-between; flex-shrink:0; gap:12px; padding:12px 28px; font-size:11px; color:var(--ink-mute); background:var(--bg-card); border-top:1px solid var(--bd); }

/* 12) 반응형 */
@media (max-width:1024px) { .admin-grid--3, .admin-grid--4, .kpi-grid, .quick-row { grid-template-columns:repeat(2, 1fr); } .cards-row, .dashboard-action-grid, .admin-grid--2 { grid-template-columns:1fr; } .hd-search { max-width:200px; } }
@media (max-width:760px) { .admin-body { flex-direction:column; } .admin-sidebar { width:100%; max-height:260px; } .admin-main { padding:16px; } .page-head { align-items:flex-start; flex-direction:column; } .page-acts { width:100%; flex-wrap:wrap; } }
@media (max-width:640px) { .admin-grid--3, .admin-grid--4, .kpi-grid, .quick-row { grid-template-columns:1fr; } .quick-card .quick-row { grid-template-columns:repeat(2, 1fr); } .page-title { font-size:17px; } .admin-footer { flex-direction:column; gap:4px; padding:12px 16px; text-align:center; } .hd-brand-en, .hd-search, .hd-sess, .hd-sep { display:none; } .admin-header { gap:10px; padding:0 12px; } }

/* /css/egovframework/com/admin.css */

.page-acts {display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-shrink:0;}
.page-acts .btn {display:inline-flex;align-items:center;justify-content:center;gap:5px;height:30px;padding:0 11px;font-size:12px;font-weight:500;line-height:1;color:var(--ink-soft,#475569);background:var(--bg-card,#fff);border:1px solid var(--bd-mid,#cbd5e1);border-radius:5px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;}
.page-acts .btn i {font-size:14px;line-height:1;}
.page-acts .btn:hover {color:var(--ink,#111827);background:var(--bg-soft,#f8fafc);border-color:var(--bd-strong,#94a3b8);}
.page-acts .btn:active {transform:translateY(1px);}
.page-acts .btn-primary {color:#fff;background:var(--brand,#5f9f2f);border-color:var(--brand,#5f9f2f);}
.page-acts .btn-primary:hover {color:#fff;background:var(--brand-deep,#477d22);border-color:var(--brand-deep,#477d22);}
.page-acts .btn:focus {outline:none;box-shadow:0 0 0 3px rgba(95,159,47,.18);}

@media (max-width:640px) {
	.page-acts {width:100%;justify-content:flex-start;flex-wrap:wrap;}
	.page-acts .btn {height:32px;}
}
