/* ds/admin.css — 관리자 콘솔 전용. 공개 사이트 디자인 토큰(--ds-*)을 재사용한다. */
.admin-shell { display:flex; min-height:100vh; background:var(--ds-bg-subtle); }
.admin-sidebar {
  width:240px; flex-shrink:0; background:var(--ds-bg-strong); color:var(--ds-text-on-dark);
  display:flex; flex-direction:column; padding:24px 16px; position:sticky; top:0; height:100vh;
}
.admin-sidebar__brand { font-family:var(--font-head); font-weight:700; font-size:17px; padding:0 8px 20px; border-bottom:1px solid rgba(255,255,255,.12); margin-bottom:16px; display:flex; align-items:center; gap:8px; }
.admin-sidebar__brand .dot { width:8px; height:8px; border-radius:50%; background:var(--ds-brand); }
.admin-sidebar__nav { display:flex; flex-direction:column; gap:2px; }
.admin-sidebar__nav a {
  display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--r-sm);
  color:rgba(250,250,250,.72); font-size:14px; font-weight:500; transition:all var(--t-fast) var(--ease-std);
}
.admin-sidebar__nav a:hover { background:rgba(255,255,255,.08); color:#fff; }
.admin-sidebar__nav a.is-active { background:var(--ds-brand); color:var(--ds-brand-ink); font-weight:700; }
.admin-sidebar__foot { margin-top:auto; padding-top:16px; border-top:1px solid rgba(255,255,255,.12); }
.admin-sidebar__foot a { display:block; padding:10px 12px; color:rgba(250,250,250,.6); font-size:13px; border-radius:var(--r-sm); }
.admin-sidebar__foot a:hover { background:rgba(255,255,255,.08); color:#fff; }

.admin-main { flex:1; min-width:0; padding:32px 40px 64px; }
.admin-topbar { display:flex; align-items:center; justify-content:space-between; margin-bottom:28px; gap:16px; flex-wrap:wrap; }
.admin-topbar h1 { font-family:var(--font-head); font-size:26px; font-weight:700; letter-spacing:-.01em; margin:0; }
.admin-topbar__meta { color:var(--ds-text-3); font-size:13px; }

.admin-card { background:var(--ds-bg-card); border:1px solid var(--ds-line); border-radius:var(--r-md); box-shadow:var(--sh-card); }

/* 표 */
.admin-table { width:100%; border-collapse:collapse; font-size:14px; }
.admin-table th { text-align:left; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ds-text-3); padding:12px 16px; border-bottom:1px solid var(--ds-line); font-weight:600; }
.admin-table td { padding:14px 16px; border-bottom:1px solid var(--ds-line-soft); vertical-align:middle; }
.admin-table tr:last-child td { border-bottom:none; }
.admin-table tr:hover td { background:var(--ds-bg-subtle); }
.admin-table .row-actions { display:flex; gap:6px; justify-content:flex-end; }
.admin-table .row-actions a, .admin-table .row-actions button { font-size:12px; padding:6px 10px; border-radius:var(--r-xs); font-weight:600; border:1px solid var(--ds-line-strong); background:var(--ds-bg); color:var(--ds-text-2); cursor:pointer; text-decoration:none; }
.admin-table .row-actions a:hover, .admin-table .row-actions button:hover { border-color:var(--ds-text); color:var(--ds-text); }
.admin-table .row-actions .danger { color:var(--ds-error); border-color:rgba(220,38,38,.4); }
.admin-table .row-actions .danger:hover { background:rgba(220,38,38,.08); }
.admin-table .row-actions .peak { color:var(--ds-brand-deep); }
.badge { display:inline-block; padding:3px 10px; border-radius:var(--r-pill); font-size:12px; font-weight:600; }
.badge--on { background:var(--ds-success); color:#fff; }
.badge--off { background:var(--ds-bg-subtle); color:var(--ds-text-3); }
.badge--type { background:var(--ds-brand-soft); color:var(--ds-brand-deep); }

/* 폼 */
.admin-form { max-width:760px; display:flex; flex-direction:column; gap:20px; padding:28px; }
.admin-form__grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:720px){ .admin-form__grid{ grid-template-columns:1fr; } }
.admin-field { display:flex; flex-direction:column; gap:7px; }
.admin-field label { font-size:13px; font-weight:600; color:var(--ds-text-2); }
.admin-field .hint { font-size:12px; color:var(--ds-text-3); }
.admin-field input, .admin-field select, .admin-field textarea {
  padding:11px 14px; font-size:14px; border:1px solid var(--ds-line-strong); border-radius:var(--r-sm);
  background:var(--ds-bg); color:var(--ds-text); font-family:inherit; outline:none; transition:border var(--t-fast) var(--ease-std);
}
.admin-field input:focus, .admin-field select:focus, .admin-field textarea:focus { border-color:var(--ds-brand); box-shadow:var(--sh-focus); }
.admin-field textarea { font-family:var(--font-mono); font-size:13px; line-height:1.6; resize:vertical; min-height:300px; }
.admin-field .checkbox { display:flex; align-items:center; gap:10px; }
.admin-field .checkbox input { width:auto; }
.admin-form__actions { display:flex; gap:10px; padding-top:8px; }
.admin-radio-group { display:flex; gap:8px; flex-wrap:wrap; }
.admin-radio-group label { display:flex; align-items:center; gap:6px; padding:8px 14px; border:1px solid var(--ds-line-strong); border-radius:var(--r-pill); font-size:13px; font-weight:500; cursor:pointer; }
.admin-radio-group input { accent-color:var(--ds-brand); }

.btn-admin { display:inline-flex; align-items:center; gap:6px; padding:10px 18px; border-radius:var(--r-sm); font-size:14px; font-weight:700; cursor:pointer; border:1px solid transparent; text-decoration:none; transition:all var(--t-fast) var(--ease-std); }
.btn-admin--primary { background:var(--ds-brand); color:var(--ds-brand-ink); }
.btn-admin--primary:hover { background:var(--ds-brand-hover); }
.btn-admin--ghost { background:var(--ds-bg); border-color:var(--ds-line-strong); color:var(--ds-text-2); }
.btn-admin--ghost:hover { border-color:var(--ds-text); color:var(--ds-text); }
.btn-admin--danger { background:#fff; border-color:rgba(220,38,38,.4); color:var(--ds-error); }
.btn-admin--danger:hover { background:rgba(220,38,38,.06); }

/* 알림 */
.admin-flash { padding:13px 16px; border-radius:var(--r-sm); margin-bottom:20px; font-size:14px; font-weight:500; border:1px solid transparent; }
.admin-flash--ok { background:#e8f7ef; color:#0c6b3f; border-color:#bfe6d2; }
.admin-flash--err { background:#fdecec; color:#a02020; border-color:#f5c2c2; }

/* 대시보드 스탯 */
.admin-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:16px; margin-bottom:28px; }
.admin-stat { padding:22px; background:var(--ds-bg-card); border:1px solid var(--ds-line); border-radius:var(--r-md); }
.admin-stat__label { font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--ds-text-3); margin-bottom:8px; }
.admin-stat__value { font-family:var(--font-head); font-size:34px; font-weight:700; }
.admin-stat__link { margin-top:10px; font-size:13px; color:var(--ds-brand-deep); font-weight:600; }

/* 로그인 */
.admin-login-page { min-height:100vh; display:grid; place-items:center; background:var(--ds-bg-subtle); padding:24px; }
.admin-login-card { width:100%; max-width:400px; background:var(--ds-bg-card); border:1px solid var(--ds-line); border-radius:var(--r-lg); box-shadow:var(--sh-card); padding:36px; }
.admin-login-card h1 { font-family:var(--font-head); font-size:22px; margin:0 0 4px; }
.admin-login-card .sub { color:var(--ds-text-3); font-size:13px; margin-bottom:24px; }

/* 위키 admin 경로 미리보기/코드 */
.mono { font-family:var(--font-mono); font-size:12px; color:var(--ds-text-3); }
.path-chip { display:inline-block; font-family:var(--font-mono); font-size:12px; background:var(--ds-bg-subtle); padding:3px 8px; border-radius:6px; color:var(--ds-text-2); }
.admin-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:20px; flex-wrap:wrap; }
.admin-search { display:flex; gap:8px; }
.admin-search input { padding:10px 14px; font-size:13px; border:1px solid var(--ds-line-strong); border-radius:var(--r-sm); background:var(--ds-bg); min-width:260px; }
.admin-search button { padding:10px 16px; font-size:13px; font-weight:700; border-radius:var(--r-sm); background:var(--ds-text); color:#fff; border:none; cursor:pointer; }
.pagination { display:flex; gap:8px; margin-top:20px; align-items:center; }
.pagination a, .pagination span { padding:8px 12px; font-size:13px; border-radius:var(--r-sm); border:1px solid var(--ds-line-strong); text-decoration:none; color:var(--ds-text-2); }
.pagination a:hover { border-color:var(--ds-text); color:var(--ds-text); }

/* 편집/미리보기 탭 */
.admin-tabs { display:flex; gap:4px; margin-bottom:8px; background:var(--ds-bg-subtle); padding:4px; border-radius:var(--r-sm); width:fit-content; }
.admin-tab { padding:7px 16px; font-size:13px; font-weight:600; border:none; background:transparent; color:var(--ds-text-3); border-radius:var(--r-xs); cursor:pointer; }
.admin-tab.is-active { background:var(--ds-bg-card); color:var(--ds-text); box-shadow:var(--sh-card); }

/* 마크다운 미리보기 */
.wiki-preview { border:1px solid var(--ds-line); border-radius:var(--r-sm); background:var(--ds-bg); padding:20px 24px; font-size:14px; line-height:1.75; color:var(--ds-text); overflow-wrap:break-word; }
.wiki-preview > :first-child { margin-top:0; }
.wiki-preview > :last-child { margin-bottom:0; }
.wiki-preview h1, .wiki-preview h2, .wiki-preview h3, .wiki-preview h4 { font-family:var(--font-head); font-weight:700; letter-spacing:-.01em; line-height:1.35; margin:1.4em 0 .5em; }
.wiki-preview h1 { font-size:1.5em; padding-bottom:.35em; border-bottom:1px solid var(--ds-line); }
.wiki-preview h2 { font-size:1.3em; }
.wiki-preview h3 { font-size:1.15em; }
.wiki-preview p { margin:.6em 0; }
.wiki-preview a { color:var(--ds-brand-deep); text-decoration:none; }
.wiki-preview a:hover { text-decoration:underline; }
.wiki-preview ul, .wiki-preview ol { margin:.6em 0; padding-left:1.4em; }
.wiki-preview li { margin:.25em 0; }
.wiki-preview blockquote { margin:1em 0; padding:.4em 1em; border-left:3px solid var(--ds-border-strong, var(--ds-line-strong)); color:var(--ds-text-2); background:var(--ds-bg-subtle); border-radius:0 var(--r-xs) var(--r-xs) 0; }
.wiki-preview code { font-family:var(--font-mono); font-size:.92em; background:var(--ds-bg-subtle); padding:.15em .4em; border-radius:4px; }
.wiki-preview pre { margin:1em 0; padding:14px 16px; background:#1f2430; color:#e6edf3; border-radius:var(--r-sm); overflow:auto; font-family:var(--font-mono); font-size:13px; line-height:1.6; }
.wiki-preview pre code { background:transparent; padding:0; color:inherit; font-size:inherit; }
.wiki-preview table { width:100%; border-collapse:collapse; margin:1em 0; font-size:13.5px; }
.wiki-preview th, .wiki-preview td { border:1px solid var(--ds-line); padding:8px 12px; text-align:left; }
.wiki-preview th { background:var(--ds-bg-subtle); font-weight:600; }
.wiki-preview hr { border:none; border-top:1px solid var(--ds-line); margin:1.4em 0; }

/* 대시보드 빠른 작업 */
.admin-quick { display:flex; gap:12px; flex-wrap:wrap; }
.admin-quick a { flex:1 1 200px; display:flex; align-items:center; justify-content:space-between; padding:18px 20px; border:1px solid var(--ds-line); border-radius:var(--r-md); background:var(--ds-bg-card); color:var(--ds-text); text-decoration:none; font-weight:600; font-size:14px; transition:all var(--t-fast) var(--ease-std); }
.admin-quick a:hover { border-color:var(--ds-brand); box-shadow:var(--sh-focus); }
.admin-quick a .arrow { color:var(--ds-brand-deep); font-weight:700; }
