/* 관리자 페이지 전용: 평범하고 잘 읽히는 웹 모양(2026-10-19 사용자 요청). 다른 스타일을 덮도록 맨 뒤에 불러온다.
   맵 그림은 고도 게임의 펜 도트 그림(img/godot, godot/tests/export_web_art.gd가 뽑음)을 쓴다. */
:root {
  --bg: #f4f5f7; --fg: #15181d; --panel: #ffffff; --muted: #525a66;
  --accent: #1d4ed8; --accent-fg: #ffffff; --ok: #15803d; --bad: #c62828;
  --grid-line: #d3d8df; --cell: #ffffff; --cell-alt: #f1f3f6; --cell-void: #e6e8ec;
  --line: #d3d8df; --px: 0px; --px-line: #d3d8df; --radius-button: 8px; --shadow: 0 1px 2px rgba(16, 24, 40, .06);
  --font-ui: Pretendard, -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans KR", "Segoe UI", system-ui, sans-serif;
  --font-pixel: var(--font-ui);
  color-scheme: light;
}
html { -webkit-text-size-adjust: 100%; }
body.admin-page { background: var(--bg) !important; color: var(--fg); font-family: var(--font-ui) !important; font-size: 15px; line-height: 1.6; }
body.admin-page * { font-family: inherit; letter-spacing: 0; text-shadow: none !important; }
body.admin-page :focus-visible { outline: 3px solid #93b4f5; outline-offset: 2px; }
.admin-page h2 { font-size: 22px; font-weight: 700; }
.admin-page h3 { font-size: 17px; font-weight: 700; }
.admin-page .muted { color: var(--muted); }
.admin-page .small { font-size: 13.5px; }
.admin-page a { color: var(--accent); }

/* 테두리 · 그림자: 픽셀 계단 대신 얇은 선과 둥근 모서리 */
.admin-page .px-box, .admin-page .btn, .admin-page .panel, .admin-page .sheet, .admin-page .dlg-box, .admin-page .ed-dialog, .admin-page .toast {
  border: 1px solid var(--line) !important; border-radius: 8px !important; box-shadow: var(--shadow) !important;
}
.admin-page .panel { background: var(--panel); border-radius: 10px !important; padding: 16px 18px; }
.admin-page .toast { border: 0 !important; background: #111827; color: #fff; }
.admin-page .screen { display: block; max-width: 1280px; padding: 20px 24px 48px; }
.admin-page .screen-head { margin: 4px 0 18px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.admin-page .screen-head .icon-btn { display: none; }      /* 게임 메뉴로 가는 단추(관리자 페이지만 열려 있어 쓸 곳이 없다) */
.admin-page .title-ico { display: none; }

/* 단추 */
.admin-page .btn {
  margin: 0; min-height: 38px; padding: 7px 14px; background: #fff; color: var(--fg); font-size: 14.5px; font-weight: 600;
  transition: background .12s, border-color .12s;
}
.admin-page .btn:not(:disabled):hover { background: #f1f5ff; border-color: #9db5ea !important; filter: none; }
.admin-page .btn:not(:disabled):active { transform: none; }
.admin-page .btn.primary { background: var(--accent); color: #fff; border-color: var(--accent) !important; }
.admin-page .btn.primary:not(:disabled):hover { background: #1e40af; }
.admin-page .btn[aria-pressed="true"] { background: var(--accent); color: #fff; border-color: var(--accent) !important; }
.admin-page .small-btn, .admin-page .adm-table .acts .btn { min-height: 32px; padding: 4px 10px; font-size: 13.5px; }
.admin-page .list-tools { gap: 8px; align-items: center; }

/* 위쪽 탭: 평범한 탭 줄 */
.admin-page .adm-tabs { gap: 0; margin: 0 0 18px; border-bottom: 2px solid var(--line); flex-wrap: wrap; }
.admin-page .adm-tabs .btn {
  border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent;
  padding: 10px 16px; min-height: 44px; margin-bottom: -2px; border-bottom: 3px solid transparent !important; color: var(--muted); font-size: 15px;
}
.admin-page .adm-tabs .btn:hover { background: #eef2fb; color: var(--fg); }
.admin-page .adm-tabs .btn[aria-selected="true"] { background: transparent; color: var(--accent); border-bottom-color: var(--accent) !important; }

/* 입력 */
.admin-page input, .admin-page select, .admin-page textarea {
  border: 1px solid #b9c0ca !important; border-radius: 6px !important; background: #fff; color: var(--fg); min-height: 38px; padding: 6px 10px; font-size: 14.5px;
}

/* 표 */
.admin-page .adm-table { font-size: 14.5px; background: #fff; }
.admin-page .adm-table th, .admin-page .adm-table td { border-bottom: 1px solid #e3e6eb; padding: 10px 10px; }
.admin-page .adm-table th { color: #374151; font-weight: 700; font-size: 13px; background: #f8f9fb; position: sticky; top: 0; }
.admin-page .adm-table tbody tr:hover td { background: #f8fafe; }
.admin-page .adm-table .num { color: var(--muted); }

/* 대시보드 카드 · 지표 */
.admin-page .dash-grid > * { background: #fff; }
.admin-page .tag { border-radius: 4px; }

/* 점검 · 후보 맵 카드 */
.admin-page .review-map { background: #fff; border: 1px solid var(--line) !important; border-radius: 10px; box-shadow: var(--shadow); }
.admin-page .cand-group { border-top: 1px solid var(--line); padding: 14px 6px; margin-top: 18px; border-radius: 8px; transition: background .3s; }
.admin-page .cand-group.flash { background: #fef9c3 !important; }
.admin-page .cand-group h3 { margin-bottom: 0; }
.admin-page .cand-group-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.admin-page .cand-group-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.admin-page .cand-group-notes { margin: 6px 0 10px; padding: 8px 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 6px; font-size: 13px; }
.admin-page .preview-review-panel { margin-top: 12px; padding: 12px; background: #f8f9fb; border: 1px solid var(--line); border-radius: 8px; font-size: 13.5px; text-align: left; }
.admin-page .preview-review-panel .panel-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 8px; }
.admin-page .preview-review-panel .panel-row:last-child { margin-bottom: 0; }
.admin-page .review-status.todo { border-left: 6px solid #9ca3af !important; }
.admin-page .review-status.fix { border-left: 6px solid #d97706 !important; }
.admin-page .review-status.done { border-left: 6px solid #16a34a !important; }
/* 점검 진행 창: 장마다 자리 칸(완료 초록 · 수정 필요 주황 · 미확인 흰색 · 맵 없음 점선) */
.admin-page .progress-ch { margin: 10px 0 14px; }
.admin-page .progress-ch h4 { margin: 0 0 6px; font-size: 15px; }
.admin-page .progress-cells { display: flex; flex-wrap: wrap; gap: 4px; }
.admin-page .progress-cell { width: 34px; height: 30px; padding: 0; font-size: 13px; border: 1px solid #9ca3af; border-radius: 6px; background: #fff; color: #1f2937; cursor: pointer; }
.admin-page .progress-cell.done { background: #16a34a; border-color: #15803d; color: #fff; }
.admin-page .progress-cell.fix { background: #f59e0b; border-color: #d97706; color: #fff; }
.admin-page .progress-cell.none { border-style: dashed; color: #9ca3af; background: transparent; cursor: default; }
.admin-page .progress-cell:not(.none):hover { outline: 2px solid var(--accent); }
.admin-page .review-table tr.flash td { background: #fef9c3; transition: background .3s; }

/* 진행(깔때기): 자리마다 막대 — 옅은 색 도달, 진한 색 깸 */
.admin-page .funnel td { padding: 6px 10px; }
.admin-page .funnel td.num, .admin-page .funnel th { white-space: nowrap; }
.admin-page .funnel .funnel-ch td { background: #f3f4f6; font-weight: 700; font-size: 13.5px; color: #374151; }
.admin-page .funnel-name { white-space: nowrap; font-size: 14px; }
.admin-page .funnel-cell { width: 45%; min-width: 120px; }
.admin-page .funnel-bar { position: relative; height: 16px; background: #f1f3f6; border-radius: 4px; overflow: hidden; }
.admin-page .funnel-bar span { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 4px; }
.admin-page .funnel-bar .reach { background: #bfd0f6; }
.admin-page .funnel-bar .clear { background: var(--accent); }
.admin-page tr.muted td { color: #9ca3af; }
.admin-page .click-row { cursor: pointer; }
.admin-page .adm-table tr.flash td { background: #fef9c3; }
.admin-page details.panel > summary, .admin-page .upload-box > summary { cursor: pointer; font-weight: 700; }
.admin-page .upload-box { margin-top: 14px; }
.admin-page #tab-user > h3 { margin: 24px 0 4px; }

/* 판: 얇은 테두리, 칸 선은 옅게 */
.admin-page .board, .admin-page .cells { border-radius: 0 !important; }
.admin-page .board { box-shadow: 0 0 0 1px #9aa3af !important; }
.admin-page .cell { box-shadow: inset 0 0 0 .5px #dde1e7; }
.admin-page .cell.alt { background: #fafbfc; }
.admin-page .cell.exit { box-shadow: inset 0 0 0 3px var(--ok); }

/* 고도 펜 도트 그림 */
.godot-art { display: block; image-rendering: pixelated; image-rendering: crisp-edges; pointer-events: none; user-select: none; }
.admin-page .obj .sprite-img, .admin-page .obj > .godot-art { width: calc(var(--cell) * .92); }
.admin-page .sprite-img { display: block; }
.admin-page .sprite-img .godot-art { width: 100%; height: auto; }
.admin-page .sprite-husky.sprite-img { width: calc(var(--cell) * 1.0); filter: none; font-size: 0; }
.admin-page .token.token-img { background: none !important; clip-path: none; border-radius: 0; padding: 0; width: calc(var(--cell) * .9); height: auto; box-shadow: none; }
.admin-page .token.token-img.small { width: calc(var(--cell) * .45); }
.admin-page .token-img .godot-art { width: 100%; height: auto; }
.admin-page .tile .godot-art { width: 100%; height: 100%; object-fit: contain; }
.admin-page .tile-warp { animation: none; }
.admin-page .exit-mark.godot-art { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; opacity: .35; font-size: 0; }
.admin-page .review-map-pic { background: #fff; }

/* 닫힌 웹 페이지(플레이 · 편집 · 메뉴)로 가는 연결은 숨긴다: 서버가 관리자 페이지만 연다 */
.admin-page a[href^="index.html"], .admin-page a[href^="story.html"], .admin-page a[href^="editor.html"], .admin-page a[href^="rules.html"], .admin-page a[href^="updates.html"] { display: none !important; }

/* 로그인 */
body.auth.admin-page { display: grid; place-items: center; min-height: 100vh; padding: 16px; }
.admin-page .auth-card { width: min(380px, 100%); background: #fff; padding: 28px 24px; border: 1px solid var(--line) !important; border-radius: 12px !important; box-shadow: 0 4px 16px rgba(16, 24, 40, .08) !important; }
.admin-page .auth-card h1 { font-size: 21px; }
.admin-page .auth-tabs { grid-template-columns: 1fr; }
.admin-page .auth-tabs button { border-radius: 6px; background: #eef2fb; color: var(--accent); }
.admin-page .auth-card label { color: #374151; font-size: 14px; }
.admin-page .auth-card .btn { width: 100%; min-height: 42px; }
.admin-page .auth-card form { margin-top: 20px; }
.admin-page .auth-or { text-align: center; margin: 14px 0 8px; }
.admin-page .google-btn { display: flex; justify-content: center; min-height: 44px; }

/* 눌린 단추 · 주 단추는 마우스를 올려도 글자가 보이게 */
.admin-page .btn[aria-pressed="true"]:not(:disabled):hover, .admin-page .btn.primary:not(:disabled):hover { background: #1e40af !important; color: #fff !important; }

@media (max-width: 600px) {
  .admin-page .screen { padding: 14px 16px 40px; }
  .admin-page .adm-tabs .btn { padding: 8px 12px; font-size: 14px; min-height: 40px; }
}

/* 거르기 줄(한눈에 · 진행 · 판 통계): 옛 게임 모양의 큰 체크 · 꽉 찬 선택 칸을 보통 크기로 */
.admin-page .list-tools label { display: inline-flex; align-items: center; gap: 6px; }
.admin-page .list-tools input[type="checkbox"] { width: 18px; height: 18px; min-width: 0; min-height: 0; flex: none; padding: 0; margin: 0; }
.admin-page .list-tools select { width: auto; max-width: 100%; flex: 0 0 auto; }
/* 옛 게임 페이지의 화면 넘김 효과는 관리자 페이지에 쓰지 않는다(새로고침마다 "Transition was skipped" 오류가 남았다) */
@view-transition { navigation: none; }
