/* 데구리 피드백 게시판(board.html) — 본 앱과 같은 재료로 짠 평범한 인터넷 게시판.
   크림 바탕 + 나무 테두리 카드(바닥에 두꺼운 그림자), 선택 = 금색, 제목·버튼 Jua / 본문 Noto. 장식은 머리 아래 울타리 한 줄로 그친다.
   standalone.css 는 게임 전용 규칙이 많아 불러오지 않고, 쓰는 토큰만 같은 값으로 다시 둔다. */
:root {
  color-scheme: light;
  --ink: #2b2416;
  --muted: #6e6350;
  --green: #2f8a45;
  --grass-deep: #2f6a26;
  --wood-deep: #8a5a2b;
  --wood-line: #d9b27f;
  --wood-soft: #eadbbd;
  --wood-edge: #d3b184;
  --cream: #fff8e6;
  --paper: #fffdf5;
  --gold: #ffd166;
  --gold-deep: #e0a93a;
  --gold-ink: #3a2a00;
  --gold-soft: #fff3cc;
  --line: #e3cfa6;
  --row-line: #efe2c6;
  --danger: #a23b2a;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }

body {
  margin: 0;
  min-width: 320px;
  color: var(--ink);
  /* 본 앱과 같은 초원 타일이지만 글을 읽는 화면이라 크림을 더 짙게 덮는다 */
  background: linear-gradient(rgba(250, 248, 236, .92), rgba(250, 248, 236, .92)), url("../assets/marble/stage/meadow-tile.webp") center top / 256px 256px repeat, #eef0dc;
  font-family: "Noto Sans KR", system-ui, sans-serif;
  line-height: 1.5;
  -webkit-text-size-adjust: 100%;
}

button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
a:focus-visible, button:focus-visible { outline: 3px solid var(--gold-deep); outline-offset: 2px; }

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

.board-shell { width: min(100% - 32px, 860px); margin: 0 auto; padding: 20px 0 56px; }

/* 공통 머리 — 돌아가기 링크, 눈썹 글자, 나무 팻말 제목, 소개 한 줄. 아래에 본 앱 머리와 같은 울타리 */
.board-head { position: relative; margin-bottom: 22px; padding-bottom: 38px; }
.board-head::after {
  content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 20px;
  background: url("../assets/marble/pieces/fence-mid.webp") repeat-x left bottom / 64px 20px;
  opacity: .85; pointer-events: none;
}
.board-back {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0 6px; margin-left: -6px;
  border-radius: 10px; color: #5a3d1e; font: 15px/1.2 "Jua", sans-serif; text-decoration: none;
}
.board-back:hover { color: var(--wood-deep); text-decoration: underline; }
.eyebrow { margin: 12px 0 6px 6px; color: var(--grass-deep); font: 15px/1 "Jua", sans-serif; letter-spacing: .04em; }
.board-head h1 {
  display: inline-block; margin: 0; padding: 6px 16px 9px;
  border: 3px solid var(--wood-line); border-radius: 16px;
  background: var(--paper); box-shadow: 0 5px 0 var(--wood-edge), 0 10px 22px rgba(90, 60, 20, .12);
  font: 36px/1 "Jua", sans-serif; letter-spacing: -.03em;
}
.board-head h1 a { color: inherit; text-decoration: none; }
.board-head h1 a:focus-visible { outline-offset: 6px; }
.board-lead { margin: 16px 0 0 4px; color: var(--muted); font-size: 14px; font-weight: 500; }

/* 카드 공통 — 나무 테두리 팻말 */
.board-card {
  border: 3px solid var(--wood-line); border-radius: 18px;
  background: var(--paper); box-shadow: 0 5px 0 var(--wood-edge), 0 14px 30px rgba(90, 60, 20, .10);
}

/* 버튼(링크로도 쓴다) — 초록 primary · 나무 secondary. 초록은 흰 글자가 읽히도록 본 앱 경주 버튼보다 한 톤 짙게 */
.primary, .secondary {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  min-height: 42px; padding: 9px 18px; border-radius: 14px;
  font: 16px/1.1 "Jua", sans-serif; text-decoration: none; white-space: nowrap;
  transition: transform 120ms ease, box-shadow 120ms ease, background-color 120ms ease, border-color 120ms ease;
}
.primary {
  border: 2px solid var(--grass-deep); color: #fff;
  background: linear-gradient(180deg, #3f8f35, #2f7629);
  text-shadow: 0 1px 0 rgba(0, 0, 0, .22);
  box-shadow: 0 4px 0 var(--grass-deep), 0 10px 18px rgba(47, 106, 38, .2);
}
.primary:hover { background: linear-gradient(180deg, #46993b, #337f2d); }
.primary:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--grass-deep); }
.primary:disabled { opacity: .6; cursor: wait; transform: none; }
.secondary {
  border: 2px solid var(--wood-line); color: #5a3d1e; background: var(--cream);
  box-shadow: 0 3px 0 var(--wood-edge);
}
.secondary:hover { border-color: #cfa56d; background: #fff3d6; }
.secondary:active { transform: translateY(3px); box-shadow: 0 0 0 var(--wood-edge); }

/* 불러오는 중·실패 */
.board-status { margin: 0; padding: 36px 18px; color: var(--muted); font-weight: 700; text-align: center; }
.board-status p { margin: 0; }
.board-status .secondary { margin-top: 14px; }
.board-status.is-error p { color: var(--danger); }

/* 목록 — 흔한 인터넷 게시판 표. 흰 바탕에 위쪽 굵은 선 한 줄, 행은 얇은 회색 선, 한 줄에 글 하나(제목만) */
.board-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; }
.board-count { margin: 0; color: var(--muted); font-size: 13px; font-weight: 700; }
.board-count strong { color: var(--ink); font-weight: 800; }
.board-list { border-top: 2px solid var(--grass-deep); border-bottom: 1px solid #d6d6d6; background: #fff; }

.board-table { width: 100%; border-collapse: collapse; table-layout: fixed; color: #333; font-size: 13px; line-height: 1.4; }
.board-table th, .board-table td { padding: 8px 4px; border-bottom: 1px solid #eee; text-align: center; vertical-align: middle; white-space: nowrap; }
.board-table thead th { padding: 9px 4px; border-bottom: 1px solid #d6d6d6; color: #333; background: #fff; font-weight: 700; }
.board-table tbody tr:last-child td { border-bottom: 0; }
.board-table tbody tr:hover { background: #f7f9f5; }
.board-table__no { width: 72px; }
.board-table__cat { width: 60px; }
.board-table__writer { width: 116px; }
.board-table__date { width: 76px; }
.board-table__views { width: 52px; }
.board-table th.board-table__title, .board-table td.board-table__title { padding-left: 10px; text-align: left; }
.board-table td.board-table__no, .board-table td.board-table__date, .board-table td.board-table__views { color: #666; font-size: 12px; font-variant-numeric: tabular-nums; }
.board-table td.board-table__writer { overflow: hidden; text-overflow: ellipsis; }
/* 말머리 — 일반은 회색, 나머지는 색으로만 살짝 구분 */
.board-table td.board-table__cat { color: #666; }
.is-idea { color: #2f7629 !important; }
.is-bug { color: #c0392b !important; }
.is-question { color: #2c5ea8 !important; }
/* 제목 칸은 칸 전체를 누를 수 있게 링크의 ::after 를 칸 크기로 편다 */
.board-table td.board-table__title { position: relative; }
.board-row__link {
  display: flex; align-items: center; gap: 6px; min-width: 0;
  color: #333; text-decoration: none;
}
.board-row__link::after { content: ""; position: absolute; inset: 0; }
.board-row__link:visited { color: #777; }
.board-row__link:hover .board-row__text { text-decoration: underline; }
.board-row__link:focus-visible { outline-offset: 1px; }
.board-row__icon { flex: 0 0 auto; width: 15px; height: 15px; fill: #b5b5b5; }
.board-row__text { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.board-row__tag { display: none; flex: 0 0 auto; font-weight: 700; }

.board-empty { padding: 44px 16px 40px; text-align: center; }
.board-empty p { margin: 0 0 16px; color: var(--muted); font-weight: 700; }

/* 쪽 번호 — 처음·이전·쪽 번호(10개 묶음)·다음·끝 */
.pager { margin-top: 18px; }
.pager ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 5px; margin: 0; padding: 0; list-style: none; }
.pager__item {
  display: inline-flex; align-items: center; justify-content: center; gap: 3px;
  min-width: 40px; height: 40px; padding: 0 10px;
  border: 2px solid var(--wood-soft); border-radius: 11px;
  color: #5a3d1e; background: #fff; font: 14px/1 "Jua", sans-serif; text-decoration: none;
  font-variant-numeric: tabular-nums;
}
a.pager__item:hover { border-color: #cfa56d; background: #fff3d6; }
.pager__item.is-current { border-color: var(--gold-deep); color: var(--gold-ink); background: var(--gold); box-shadow: 0 2px 0 #c58f2a; }
.pager__item.is-disabled { color: #a3947a; background: transparent; }

/* 읽기 */
.post { overflow: hidden; }
.post-head { padding: 22px 24px 16px; border-bottom: 2px solid #f0e2c4; background: linear-gradient(180deg, var(--cream), var(--paper)); }
.post-title { margin: 0; font: 26px/1.3 "Jua", sans-serif; letter-spacing: -.01em; overflow-wrap: anywhere; word-break: keep-all; }
.post-tag { margin-right: 6px; color: #666; }
.post-meta { display: flex; flex-wrap: wrap; align-items: center; margin: 10px 0 0; color: var(--muted); font-size: 13px; font-weight: 700; }
.post-meta > * + *::before { content: "·"; margin: 0 8px; color: #b9a178; }
.post-meta #postWriter { color: #4a3d28; }
/* 본문은 적은 그대로(줄바꿈 유지), 긴 주소도 칸 밖으로 나가지 않게 아무 데서나 끊는다. 링크로 바꾸지 않는다 */
.post-body {
  min-height: 140px; padding: 22px 24px 28px;
  font-size: 16px; line-height: 1.75;
  white-space: pre-wrap; overflow-wrap: anywhere; word-break: keep-all;
}
.post-actions { display: flex; justify-content: space-between; gap: 10px; margin: 18px 0; }
.post-actions > * { min-width: 96px; }

.post-nav { overflow: hidden; }
.post-nav ul { margin: 0; padding: 0; list-style: none; }
.post-nav li { display: flex; align-items: center; gap: 14px; min-height: 48px; padding: 6px 16px; }
.post-nav li + li { border-top: 1px solid var(--row-line); }
.post-nav__label { flex: 0 0 auto; color: var(--muted); font: 14px/1.2 "Jua", sans-serif; }
.post-nav a {
  flex: 1 1 auto; min-width: 0; padding: 8px 0; overflow: hidden;
  color: var(--ink); font-weight: 700; text-decoration: none; text-overflow: ellipsis; white-space: nowrap;
}
.post-nav a:hover { color: var(--wood-deep); text-decoration: underline; }

/* 없는 글 */
.board-missing { padding: 40px 18px; text-align: center; }
.board-missing h2 { margin: 0 0 8px; font: 22px/1.3 "Jua", sans-serif; }
.board-missing p { margin: 0 0 18px; color: var(--muted); font-weight: 700; }

/* 글쓰기 */
.write { position: relative; padding: 22px 24px 24px; }
.write h2 { margin: 0 0 16px; font: 24px/1.2 "Jua", sans-serif; }
.form-error {
  margin: 0 0 16px; padding: 11px 13px;
  border: 2px solid #eecac0; border-radius: 12px;
  color: var(--danger); background: #fdf1ee; font-size: 14px; font-weight: 700; line-height: 1.5;
}
.field { margin-bottom: 16px; }
.field label { display: block; margin-bottom: 7px; font: 16px/1.2 "Jua", sans-serif; }
.field__hint { color: var(--muted); font: 500 13px/1.2 "Noto Sans KR", system-ui, sans-serif; }
.field input, .field textarea, .field select {
  display: block; width: 100%; padding: 11px 13px;
  border: 2px solid var(--wood-line); border-radius: 12px;
  color: var(--ink); background: #fff; font-size: 16px; line-height: 1.55;
}
.field textarea { min-height: 220px; resize: vertical; }
.field input::placeholder { color: #9a8b6e; }
.field select { width: auto; min-width: 140px; padding-right: 30px; }
.field input:focus, .field textarea:focus, .field select:focus { border-color: var(--gold-deep); outline: 3px solid var(--gold-deep); outline-offset: 1px; }
.field__count { margin: 6px 2px 0; color: var(--muted); font-size: 12px; font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.field__count.is-near { color: #8a5a00; }
.field__count.is-full { color: var(--danger); }
/* 허니팟 — 화면 밖으로 빼 둔다(사람은 못 보고 탭으로도 안 간다) */
.hp { position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }
.write-note {
  margin: 4px 0 18px; padding: 11px 13px; border-radius: 12px;
  color: #5a3d1e; background: var(--gold-soft); font-size: 13px; font-weight: 700; line-height: 1.6;
}
.write-actions { display: flex; justify-content: flex-end; gap: 10px; }
.write-actions > * { min-width: 96px; }

/* 휴대폰 — 표는 행마다 제목 한 줄 + 작은 메타 줄로 쌓고, 번호·글쓴이·날짜·조회 칸은 숨긴다 */
@media (max-width: 620px) {
  .board-shell { width: min(100% - 20px, 860px); padding-top: 12px; }
  .board-head { margin-bottom: 18px; padding-bottom: 34px; }
  .board-head h1 { padding: 5px 13px 8px; font-size: 30px; }
  .board-lead { margin-top: 14px; font-size: 13px; }

  .board-toolbar .primary { padding: 9px 14px; }
  /* 휴대폰에서도 표 한 줄 모양은 그대로 — 번호·말머리 칸만 빼고 말머리는 제목 앞 [건의] 로 붙인다 */
  .board-table { font-size: 13px; }
  .board-table__no, .board-table__cat { display: none; }
  .board-table th, .board-table td { padding: 9px 3px; }
  .board-table th.board-table__title, .board-table td.board-table__title { padding-left: 8px; }
  .board-table__writer { width: 64px; }
  .board-table__date { width: 44px; }
  .board-table__views { width: 34px; }
  .board-table td.board-table__writer { font-size: 12px; }
  .board-table td.board-table__date, .board-table td.board-table__views { font-size: 11px; }
  .board-row__icon { display: none; }
  .board-row__link { gap: 3px; }
  .board-row__tag { display: inline; }

  /* 쪽 번호는 현재 쪽 앞뒤 둘까지만, 처음·이전·다음·끝은 기호만 */
  .pager ul { gap: 3px; }
  .pager__item { min-width: 34px; padding: 0 7px; }
  .pager li.is-far, .pager__word { display: none; }

  .post-head { padding: 18px 16px 14px; }
  .post-title { font-size: 22px; }
  .post-body { padding: 18px 16px 24px; font-size: 15px; }
  .post-nav li { gap: 10px; padding: 4px 14px; }

  .write { padding: 18px 16px 20px; }
  .write h2 { font-size: 22px; }
  .write-actions > * { flex: 1 1 0; }
}

@media (prefers-reduced-motion: reduce) {
  .primary, .secondary { transition: none; }
}
