/* ===== 대시보드 어드민 스킨 (메인 사이트 폰트 통일) ===== */
@import url("/kr/font/webfonts_Pretendard.css");

:root {
  --color-primary:      #0a1929;
  --color-primary-soft: #163a62;
  --color-accent:       #2563eb;
  --color-accent-soft:  #3b82f6;
  --color-text:         #1a2230;
  --color-muted:        #6b7480;
  --color-line:         #e6e9ef;
  --color-bg-soft:      #f6f7fa;
  --color-bg-deep:      #edf0f6;
  --color-danger:       #dc2626;
  --color-ok:           #059669;
  --color-warn:         #d97706;
  --radius: 6px;
  --transition: 200ms cubic-bezier(.4,.0,.2,1);
  --font-en: 'Pretendard','Inter','Noto Sans KR',sans-serif;
  --font-main: "Pretendard", "Noto Sans KR", -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", "맑은 고딕", sans-serif;
}

body.admin,
body.admin *:not(code):not(pre):not(kbd):not(samp) {
  font-family: var(--font-main) !important;
}

body.admin {
  background:#f3f5f9;
  margin:0;
  color:var(--color-text);
  line-height:1.6;
  letter-spacing: -0.01em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.admin a { color:inherit; text-decoration:none; transition:color var(--transition); }
.admin a:hover { color:var(--color-accent); }

.adm { display:grid; grid-template-columns:240px 1fr; min-height:100vh; }

/* ===== 사이드바 ===== */
.adm__side {
  background:var(--color-primary);
  color:#fff;
  position:sticky; top:0; height:100vh;
  display:flex; flex-direction:column;
}
.adm__brand {
  padding:22px 24px;
  border-bottom:1px solid rgba(255,255,255,.08);
  display:flex; align-items:baseline; gap:8px;
  color:#fff; font-family:var(--font-en);
}
.adm__brand strong { font-size:18px; font-weight:800; letter-spacing:-.01em; }
.adm__brand span   { font-size:11px; color:rgba(255,255,255,.5); letter-spacing:.15em; text-transform:uppercase; }
.adm__nav { padding:16px 0; flex:1; overflow-y:auto; }
.adm__nav a {
  display:block;
  padding:11px 24px;
  font-size:14px;
  color:rgba(255,255,255,.7);
  border-left:3px solid transparent;
  transition:all var(--transition);
}
.adm__nav a:hover { background:rgba(255,255,255,.04); color:#fff; }
.adm__nav a.is-on {
  background:rgba(37,99,235,.12);
  color:#fff;
  border-left-color:var(--color-accent);
}
.adm__user {
  padding:16px 24px;
  border-top:1px solid rgba(255,255,255,.08);
  font-size:12px; color:rgba(255,255,255,.5);
  display:flex; flex-direction:column; gap:4px;
}
.adm__user span { color:#fff; font-size:13px; margin-bottom:4px; }
.adm__user a { color:rgba(255,255,255,.6); }
.adm__user a:hover { color:var(--color-accent-soft); }

/* ===== 메인 영역 ===== */
.adm__main { padding:32px 40px; max-width:100%; overflow-x:hidden; }
.adm-head {
  display:flex; justify-content:space-between; align-items:baseline;
  margin-bottom:24px; flex-wrap:wrap; gap:12px;
}
.adm-head h1 { font-size:24px; font-weight:700; letter-spacing:-.02em; color:var(--color-primary); margin:0; }
.adm-head p  { color:var(--color-muted); font-size:13px; margin:0; }

/* ===== 통계 카드 ===== */
.adm-stats {
  display:grid; grid-template-columns:repeat(5,1fr); gap:12px;
  margin-bottom:28px;
}
.adm-stats dl {
  background:#fff; padding:20px; border-radius:var(--radius);
  border:1px solid var(--color-line); margin:0;
}
.adm-stats dt { font-size:12px; color:var(--color-muted); margin-bottom:6px; }
.adm-stats dd { margin:0; font-size:14px; color:var(--color-muted); }
.adm-stats strong {
  display:block; font-size:28px; color:var(--color-primary);
  font-family:var(--font-en); font-weight:700; margin-bottom:2px;
  letter-spacing:-.02em;
}

.adm-cols { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:20px; }

/* ===== 카드 ===== */
.adm-card {
  background:#fff; border-radius:var(--radius);
  border:1px solid var(--color-line);
  padding:20px 24px; margin-bottom:20px;
}
.adm-card__head {
  display:flex; justify-content:space-between; align-items:baseline;
  margin-bottom:14px; padding-bottom:12px;
  border-bottom:1px solid var(--color-line);
}
.adm-card__head h2 { font-size:16px; font-weight:600; letter-spacing:-.02em; margin:0; }
.adm-card__head a  { font-size:12px; color:var(--color-muted); }
.adm-card__head a:hover { color:var(--color-accent); }

/* ===== 테이블 ===== */
.adm-table { width:100%; border-collapse:collapse; font-size:13px; }
.adm-table th {
  padding:10px 8px; text-align:left;
  background:var(--color-bg-soft); font-weight:600; color:var(--color-muted);
  border-bottom:1px solid var(--color-line);
  font-size:12px; letter-spacing:-.01em;
}
.adm-table td {
  padding:10px 8px; border-bottom:1px solid var(--color-line);
  vertical-align:middle;
}
.adm-table td.nowrap { white-space:nowrap; }
.adm-table td.empty  { text-align:center; color:var(--color-muted); padding:40px 0; }
.adm-table a { color:var(--color-accent); font-weight:500; }

/* ===== 검색바 ===== */
.adm-search {
  display:flex; gap:8px; margin-bottom:20px; flex-wrap:wrap; align-items:center;
}
.adm-search select, .adm-search input {
  height:38px; padding:0 12px;
  border:1px solid var(--color-line); border-radius:var(--radius);
  font-family:inherit; font-size:14px; background:#fff;
}
.adm-search input { min-width:240px; }
.adm-search input:focus, .adm-search select:focus {
  outline:0; border-color:var(--color-accent);
  box-shadow:0 0 0 3px rgba(37,99,235,.12);
}

/* ===== 버튼 ===== */
.adm-btn {
  display:inline-flex; align-items:center; justify-content:center;
  height:38px; padding:0 16px;
  background:#fff; color:var(--color-text);
  border:1px solid var(--color-line); border-radius:var(--radius);
  font-size:14px; font-family:inherit; cursor:pointer;
  text-decoration:none;
  transition:all var(--transition);
}
.adm-btn:hover { border-color:var(--color-muted); color:var(--color-primary); }
.adm-btn--primary { background:var(--color-accent); color:#fff; border-color:var(--color-accent); }
.adm-btn--primary:hover { background:var(--color-accent-soft); color:#fff; border-color:var(--color-accent-soft); }
.adm-btn--danger  { background:var(--color-danger); color:#fff; border-color:var(--color-danger); }
.adm-btn--danger:hover  { background:#b91c1c; border-color:#b91c1c; color:#fff; }
.adm-btn--sm { height:30px; padding:0 10px; font-size:12px; }

/* ===== 알림 ===== */
.adm-flash {
  padding:10px 14px; border-radius:var(--radius);
  font-size:13px; margin-bottom:14px; font-weight:500;
}
.adm-flash--ok  { background:#d1fae5; color:#065f46; border:1px solid #6ee7b7; }
.adm-flash--err { background:#fee2e2; color:#991b1b; border:1px solid #fca5a5; }

/* ===== 상태 뱃지 ===== */
.tag {
  display:inline-block; padding:2px 8px;
  background:var(--color-bg-soft); border:1px solid var(--color-line);
  border-radius:3px; font-size:11px; color:var(--color-muted);
}
.state {
  display:inline-block; padding:2px 8px;
  font-size:11px; border-radius:3px; font-weight:500;
}
.state--ok    { background:#e8f5ee; color:var(--color-ok); }
.state--warn  { background:#fef5e3; color:var(--color-warn); }
.state--err   { background:#fdecea; color:var(--color-danger); }
.state--info  { background:#e0f2fe; color:#0369a1; }

/* ===== 폼 ===== */
.adm-form { max-width:680px; }
.adm-form .field { margin-bottom:18px; }
.adm-form .field label {
  display:block; font-size:13px; font-weight:600;
  margin-bottom:6px; color:var(--color-text);
}
.adm-form .field input,
.adm-form .field select,
.adm-form .field textarea {
  width:100%; padding:10px 12px;
  border:1px solid var(--color-line); border-radius:var(--radius);
  font-family:inherit; font-size:14px; background:#fff;
  transition:border-color var(--transition);
}
.adm-form .field input:focus,
.adm-form .field select:focus,
.adm-form .field textarea:focus {
  outline:0; border-color:var(--color-accent);
  box-shadow:0 0 0 3px rgba(37,99,235,.1);
}
.adm-form .field-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }

/* ===== 페이지네이션 (어드민) ===== */
.adm-pagination { display:flex; gap:4px; justify-content:center; margin:20px 0; }
.adm-pagination a, .adm-pagination strong {
  padding:6px 11px; border:1px solid var(--color-line); border-radius:var(--radius);
  background:#fff; color:var(--color-muted); font-size:13px;
}
.adm-pagination strong, .adm-pagination .active {
  background:var(--color-accent); color:#fff; border-color:var(--color-accent);
}
.adm-pagination a:hover { border-color:var(--color-accent); color:var(--color-accent); }

/* ===== 페이지 푸터 (선택 항목 일괄 작업 영역) ===== */
.adm-bulk {
  margin:18px 0; padding:14px 16px;
  background:#fff; border:1px solid var(--color-line); border-radius:var(--radius);
  display:flex; gap:8px; flex-wrap:wrap; align-items:center;
}

/* ===== 모바일 ===== */
@media (max-width:900px) {
  .adm { grid-template-columns:1fr; }
  .adm__side {
    position:static; height:auto; flex-direction:row;
    padding:8px 12px; gap:12px; align-items:center; overflow-x:auto;
  }
  .adm__brand { padding:8px 4px; border:0; flex-shrink:0; }
  .adm__nav   { display:flex; padding:0; gap:2px; flex:1; overflow-x:auto; }
  .adm__nav a {
    padding:8px 14px; white-space:nowrap;
    border-left:0; border-bottom:2px solid transparent; font-size:13px;
  }
  .adm__nav a.is-on { border-left:0; border-bottom-color:var(--color-accent); }
  .adm__user {
    flex-direction:row; padding:4px 8px; border:0;
    border-left:1px solid rgba(255,255,255,.08);
    gap:10px; align-items:center; flex-shrink:0;
  }
  .adm__user span { display:none; }
  .adm__main { padding:20px 16px; }
  .adm-stats { grid-template-columns:repeat(2,1fr); }
  .adm-cols  { grid-template-columns:1fr; }
}

/* ===== 로그인 페이지 (어드민/공개 공용) ===== */
body.auth { background:#f3f5f9; margin:0; font-family:'Noto Sans KR','Malgun Gothic',sans-serif; }
.auth-wrap {
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px;
}
.auth-box {
  width:100%; max-width:420px;
  padding:40px 36px;
  background:#fff; border-radius:8px;
  border:1px solid var(--color-line);
  box-shadow:0 14px 40px rgba(11,42,74,.08);
}
.auth-box h1 {
  font-size:22px; font-weight:700; margin:0 0 8px; color:var(--color-primary);
  letter-spacing:-.02em;
}
.auth-box .auth-sub { color:var(--color-muted); font-size:13px; margin-bottom:28px; }
.auth-box .field { margin-bottom:18px; }
.auth-box .field label {
  display:block; font-size:13px; font-weight:600;
  margin-bottom:6px; color:var(--color-text);
}
.auth-box .field input {
  width:100%; height:44px; padding:0 14px;
  border:1px solid var(--color-line); border-radius:var(--radius);
  font-size:14px; background:#fff; transition:border-color var(--transition);
}
.auth-box .field input:focus {
  outline:0; border-color:var(--color-accent);
  box-shadow:0 0 0 3px rgba(37,99,235,.12);
}
.auth-box .auth-submit {
  width:100%; height:46px; margin-top:6px;
  background:var(--color-accent); color:#fff;
  border:0; border-radius:var(--radius);
  font-size:15px; font-weight:600; cursor:pointer;
  transition:background var(--transition);
}
.auth-box .auth-submit:hover { background:var(--color-accent-soft); }
.auth-links {
  margin-top:18px; text-align:center;
  font-size:13px; color:var(--color-muted);
}
.auth-links a { color:var(--color-accent); }
.auth-links a:hover { text-decoration:underline; }
.auth-note { margin-top:20px; padding-top:16px; border-top:1px solid var(--color-line); font-size:12px; color:var(--color-muted); text-align:center; }
.auth-alert {
  padding:10px 14px; border-radius:var(--radius); font-size:13px; margin-bottom:18px;
  background:#fee2e2; color:#991b1b; border:1px solid #fca5a5;
}
