/* 양피지 안 내용의 글꼴·표·목록.
 *
 * design-v3 의 style.css 는 손대지 않습니다. 이 파일은 그 뒤에 읽혀 양피지 안쪽만 조정합니다.
 *
 * 1차 부정적 검증에서 반영한 것
 *   - 본문 11px · 라벨 9px/자간 2px → 읽을 수 없음. 본문 15px, 라벨 12~13px, 자간 0
 *   - 대비 미달 색 (#8a6a4a 75% 2.3:1 등) → 양피지(#eeca8b) 기준 4.5:1 이상
 *   - 표 값 칸이 70~90px 로 찌그러짐 → 실제 표로
 *   - 터치 영역 15~33px → 40px 이상
 * 2차 부정적 검증에서 반영한 것
 *   - 절 제목 16px 이 본문(15px)과 거의 같고 카드 제목(18px)보다 작음 → 18px, 나머지를 그 아래로
 *   - 하위 차례 10개가 PC 에서 "퀘스트 배경스토리" 만 둘째 줄로 떨어짐 → 5칸 2줄 격자
 *   - 직업·게시판 선택이 하위 차례와 똑같아 셋째 줄 메뉴처럼 보임 → 따로 된 버튼 모양
 *   - 비어 있는 그림 칸(점선)이 깨진 그림처럼 보임 → 옅은 바탕만
 *   - 킬라고수 그림을 456px → 665px 로 키워 글씨가 흐림 → 원래 크기
 *   - 모바일 아이템 표에서 가격·효과가 화면 밖 → 좁은 화면에서는 행마다 쌓기
 *
 * 색은 모두 양피지 평균색 #eeca8b 위에서 잰 대비입니다. 짙은 얼룩(#d1af75)에서는 약 20% 낮아집니다.
 */

/* ── 글 ─────────────────────────────────────────────────────── */
#page-content{
  font-family:'맑은 고딕','Malgun Gothic','Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  font-size:15px; line-height:1.8; color:#34210f;          /* 10.6:1 */
  word-break:keep-all; overflow-wrap:break-word;
}
#page-content .section-bar{margin:30px 0 14px;padding-bottom:9px;border-bottom:1px solid #7a553066}
#page-content .section-bar:first-child{margin-top:8px}
#page-content section+section>.section-bar:first-child{margin-top:30px}
#page-content h4{text-wrap:balance}
#page-content p{text-wrap:pretty}
#page-content .section-bar h3{
  font:700 18px/1.4 '맑은 고딕','Malgun Gothic','Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  color:#4b250a; letter-spacing:0; margin:0;
}
.k-subhead{margin:6px 0 12px; font-size:16px; font-weight:700; color:#4b250a}
.k-p{margin:0 0 .95em; font-size:15px; line-height:1.85; color:#34210f}
.k-p.is-red,.k-red,.k-aside.is-red{color:#861c10}            /* 원본 #990000 · 6.0:1 */
.k-p.is-center{text-align:center}
.k-aside{
  margin:12px 0; padding:10px 14px; font-size:14px; line-height:1.7; color:#3f2a17;
  background:#fff1cf66; border-left:3px solid #9a6d3a;
}
.k-count{margin:4px 0 14px; font-size:13px; color:#5b3f24}   /* 6.2:1 */
[data-source]{scroll-margin-top:24px}

/* ── 하위 차례 · 직업 · 게시판 ──────────────────────────────── */
.k-switch{display:flex; flex-wrap:wrap; gap:0 4px; margin:4px 0 20px}
.k-switch button{
  appearance:none; background:none; border:0; min-height:40px; padding:8px 11px;
  font:600 14px/1.3 '맑은 고딕','Malgun Gothic',sans-serif; color:#5b3f24;
  cursor:pointer; white-space:nowrap;
}
.k-switch button:hover{color:#34210f}
.k-switch button:focus-visible{outline:2px solid #861c10; outline-offset:-2px}

/* 하위 차례: 밑줄 탭 */
.k-switch.is-menu{border-bottom:1px solid #7a553066}
.k-switch.is-menu button{border-bottom:2px solid transparent; margin-bottom:-1px}
.k-switch.is-menu button[aria-selected="true"]{color:#861c10; border-bottom-color:#861c10; font-weight:700}
@media (min-width:851px){
  .k-switch.is-menu{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0}   /* 8개 = 4 × 2 줄 */
  .k-switch.is-menu button{padding:8px 4px}
}

/* 직업 · 게시판: 차례 안의 선택이라 버튼 모양 */
.k-switch.is-seg{gap:6px; margin:0 0 20px}
.k-switch.is-seg button{
  padding:8px 18px; border:1px solid #7a553066; border-radius:3px; background:#fff3d533;
}
.k-switch.is-seg button[aria-selected="true"]{background:#5a3017; border-color:#5a3017; color:#f7e4bd}

/* ── 그림 ─────────────────────────────────────────────────────
   원본 그림은 그림 안에 테두리·장식이 있어 따로 액자를 두르지 않습니다. */
.k-figure{margin:16px 0}
.k-figure img{display:block; max-width:100%; height:auto; margin:0 auto}
.k-figure.is-plain img{width:auto}
.k-titleimg{margin:22px 0 12px}
.k-titleimg:first-child{margin-top:4px}
/* 절 머리 역할을 하는 원본 제목 그림(전사 · 시나리오퀘스트)은 절 제목처럼 밑줄을 둡니다 */
.k-titleimg.is-head{padding-bottom:9px; border-bottom:1px solid #7a553066; margin-bottom:16px}
.k-titleimg img{display:block}

/* ── 킬라초보 : 설치방법 ────────────────────────────────────── */
.k-steps{list-style:none; margin:0; padding:0}
.k-steps>li{display:grid; grid-template-columns:32px 1fr; gap:0 14px; margin:0 0 18px}
.k-step-no{
  width:28px; height:28px; border-radius:50%; display:grid; place-items:center;
  background:#5a3017; color:#f7e4bd; font:700 14px/1 '맑은 고딕',sans-serif; margin-top:2px;
}
.k-step-body p{margin:0 0 .6em; font-size:15px; line-height:1.8}
.k-step-shot{margin:10px 0 4px}
.k-step-shot img{display:block; max-width:min(400px,100%); height:auto;
  border:1px solid #7a553055; box-shadow:0 2px 6px #3a1e0a26}

/* ── 다운로드 (2026-09-26) ──────────────────────────────────────────────── */
.k-dlbox{margin:14px 0 18px; padding:16px 18px; border:1px solid #7a553066; border-radius:3px; background:#fff3d555}
.k-btn.k-dlbtn{min-height:48px; padding:0 26px; font-size:15px}
.k-dlmeta{margin:10px 0 0; font-size:14px; color:#4b250a}
.k-dlmeta .k-nowrap{white-space:nowrap}
.k-dlhash{margin:6px 0 0; font-size:12px; color:#6b4a2b; overflow-wrap:anywhere}
.k-dlhash code{font:12px/1.5 Consolas,'Courier New',monospace}
.k-dlsteps{list-style:none; margin:0 0 8px; padding:0}
.k-dlsteps>li{display:grid; grid-template-columns:28px 1fr; gap:0 14px; margin:0 0 16px}
.k-dlsteps>li>p{margin:0; font-size:15px; line-height:1.8; min-width:0; overflow-wrap:anywhere}

/* ── 표 ─────────────────────────────────────────────────────── */
.k-table{overflow-x:auto; margin:4px 0 8px; -webkit-overflow-scrolling:touch; container-type:inline-size}
.k-table table{width:100%; border-collapse:collapse; font-size:14px; line-height:1.55}
.k-table th{
  text-align:left; font-weight:700; font-size:13px; color:#4b250a;
  background:#c9985a33; padding:9px 10px; border-bottom:1px solid #7a553077; white-space:nowrap;
}
.k-table td{padding:10px; border-bottom:1px solid #7a553033; vertical-align:top; color:#34210f}
.k-table.is-spec td:first-child{font-weight:700; white-space:nowrap; color:#4b250a; width:1%}
.k-table.is-redhead th{color:#861c10}                          /* 원본 머리칸 #990000 */
/* 이름 · 레벨 · 무게 · 내구성 · 가격 · 효과 (직업 열은 거른 뒤라 뺌): 수치 네 칸만 오른쪽 */
.k-table.is-items td:nth-child(n+2):nth-child(-n+5),
.k-table.is-items th:nth-child(n+2):nth-child(-n+5){text-align:right; font-variant-numeric:tabular-nums; white-space:nowrap}
.k-table.is-items td:first-child{font-weight:700; white-space:nowrap}
.k-table.is-items td:last-child{white-space:nowrap}
/* 게시판: 원본 머리글 번호 · 제목 · (매체) · 개제일/게재일 · 조회수 */
.k-table.is-board td{font-size:14px}
.k-table.is-board td[data-label="번호"],.k-table.is-board th:first-child{width:3.2em; text-align:center; color:#5b3f24}
.k-table.is-board td[data-label="조회수"],.k-table.is-board th:last-child{width:4.2em; text-align:right; color:#5b3f24}
.k-table.is-board td[data-label="개제일"],.k-table.is-board td[data-label="게재일"]{white-space:nowrap; color:#5b3f24; font-size:13px}
.k-table.is-board td[data-label="매체"]{width:7em; color:#5b3f24; font-size:13px}
.k-table.is-board td{font-variant-numeric:tabular-nums}
.k-board{margin-top:22px}
.k-board:first-child{margin-top:0}

/* ── 캐릭터소개 ─────────────────────────────────────────────── */
.k-job-head{display:grid; grid-template-columns:auto 1fr; gap:22px; align-items:end; margin:6px 0 18px}
.k-portrait{margin:0}
.k-portrait img{display:block; height:150px; width:auto}
.k-name{margin:0 0 10px; font:700 22px/1.3 '맑은 고딕','Malgun Gothic',sans-serif; color:#3a1e0a}   /* 본문 제목은 고딕 굵게 (2026-09-22) */
.k-facts{margin:0; display:grid; gap:4px}
.k-facts>div{display:flex; gap:10px; align-items:baseline}
.k-facts dt{font-size:13px; color:#5b3f24; min-width:4.5em; flex:none}
.k-facts dd{margin:0; font-size:15px; font-weight:700; color:#34210f}
.k-facts>div.is-text{display:block; margin-top:6px}
.k-facts>div.is-text dd{font-weight:400; line-height:1.8; margin-top:2px}
.k-facts.is-inline{display:flex; gap:16px}
.k-facts.is-inline>div{gap:6px}
.k-facts.is-inline dt{min-width:0}
.k-quote{margin:14px 0 20px; padding:4px 0 4px 16px; border-left:3px solid #861c10;
  color:#861c10; font-size:15px; line-height:1.85}
.k-stats{width:100%; border-collapse:collapse; margin:6px 0 4px}
.k-stats th{text-align:left; font-size:13px; font-weight:700; color:#4b250a;
  padding:10px 12px 10px 0; width:7em; border-bottom:1px solid #7a553033; white-space:nowrap}
.k-stats td{padding:8px 0; border-bottom:1px solid #7a553033}
.k-stat{display:inline-flex; align-items:center; gap:8px; margin-right:20px; font-size:15px; font-weight:600}
.k-stat img{width:42px; height:42px; border-radius:50%;                  /* 원본 크기 42px */
  box-shadow:0 0 0 1px #6d3a1e, 0 2px 4px #3a1e0a40}
/* 원본 칭호 표에는 번호가 없습니다 */
.k-ranks{list-style:none; margin:0; padding:0; columns:2; column-gap:28px; font-size:15px; line-height:2.1}

/* ── 특수기술 · NPC 격자 ────────────────────────────────────── */
.k-grid{list-style:none; margin:0 0 8px; padding:0; display:grid; gap:14px 10px}
.k-grid li{min-width:0; display:grid; justify-items:center; align-content:start; gap:6px; text-align:center;
  font-size:13px; line-height:1.4; color:#34210f}
.k-grid.is-icons{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))}
.k-grid.is-icons img{width:38px; height:38px; box-shadow:0 0 0 1px #6d3a1e, 0 2px 4px #3a1e0a40}
.k-grid.is-portraits{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}
.k-grid.is-portraits img{width:80px; height:90px; object-fit:cover;
  border:1px solid #7a553066; box-shadow:0 2px 5px #3a1e0a33}
/* 원본 그림을 복구하지 못한 칸. 그림을 지어내지 않고 자리만 둡니다. */
.k-noimg{display:block; width:38px; height:38px; border-radius:2px;
  background:radial-gradient(circle at 50% 35%,#6d4a2a,#2b180a);
  box-shadow:0 0 0 1px #6d3a1e, inset 0 0 8px #000a}
.k-grid.is-portraits .k-noimg{width:80px; height:90px}
/* 원본 그룹은 제목 그림으로 나뉘었습니다. 둘째 그룹 제목 그림은 복구되지 않아 줄로만 나눕니다. */
.k-skill-group + .k-skill-group{margin-top:20px; padding-top:16px; border-top:1px solid #7a553044}
/* 누를 수 있는 기술(미리보기 그림이 남은 8개)은 가만히 있을 때도 칸이 보이게 */
.k-grid li button{
  appearance:none; background:#fff3d540; border:1px solid #7a553055; border-radius:3px;
  display:grid; justify-items:center; gap:6px; width:100%; padding:6px 2px 5px; margin:-7px 0 -6px;
  font:inherit; color:inherit; cursor:pointer;
}
.k-grid li button span{overflow-wrap:anywhere}
.k-grid li button:hover{background:#fff3d566; border-color:#7a553044}
.k-grid li button[aria-pressed="true"]{background:#fff3d599; border-color:#861c1066; color:#861c10; font-weight:700}
.k-grid li button:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-preview{margin:4px 0 18px; padding:16px; display:grid; justify-items:center; gap:8px; scroll-margin:16px;
  background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-preview img{display:block; max-width:100%; height:auto}
.k-preview figcaption{font-size:15px; font-weight:700; color:#4b250a}

/* ── 몬스터 ─────────────────────────────────────────────────── */
.k-cards{display:grid; gap:14px}
.k-card{padding:14px 16px 12px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-card header{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:baseline;
  gap:6px 16px; margin-bottom:8px}
.k-card h4{margin:0; font-size:17px; font-weight:700; color:#3a1e0a}

/* ── 퀘스트 ─────────────────────────────────────────────────── */
.k-quests{list-style:none; margin:0; padding:0}
.k-quests>li{margin:0 0 26px; padding:2px 0 4px 18px; border-left:3px solid #9a6d3a}
/* 원본 퀘스트 제목은 굵은 붉은 글씨 한 줄: <strong><font color=#990000>[ 10 레벨 ] - 이름 -</font></strong> */
.k-quests h4{margin:0 0 10px; font:700 17px/1.45 '맑은 고딕','Malgun Gothic',sans-serif; color:#861c10}
.k-branch{margin:14px 0 4px; font-size:14px; font-weight:700; color:#5a3017}

/* ── 배경스토리 ─────────────────────────────────────────────── */
/* 가운데 정렬 글(시)과 본문이 같은 축에 놓이도록 폭 제한을 두지 않습니다. 16px 에서 한 줄 약 41자. */
.k-story .k-p{font-size:16px; line-height:1.95}
.k-story .k-p.is-center{margin:1.4em 0}
.k-story .section-bar{margin-top:38px}
.k-story .k-figure img{max-width:260px}

/* ── 메인 공지 상자 ─────────────────────────────────────────── */
.k-list{list-style:none; margin:0; padding:0; border-top:1px solid #7a553066}
.k-row{display:grid; grid-template-columns:1fr auto; gap:0 14px; align-items:baseline;
  padding:12px 2px; border-bottom:1px solid #7a553033; font-size:15px}
.k-subject{color:#34210f; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.k-row time{font-size:13px; color:#5b3f24; white-space:nowrap; font-variant-numeric:tabular-nums}

/* ── 모바일 ─────────────────────────────────────────────────── */
@media (max-width:850px){
  .k-switch{flex-wrap:nowrap; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch}
  .k-switch::-webkit-scrollbar{display:none}
  /* 가로로 더 있는 쪽 끝을 흐리게 (app.js 가 data-more 를 붙입니다) */
  .k-switch[data-more="right"]{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent); mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
  .k-switch[data-more="left"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 36px); mask-image:linear-gradient(90deg,transparent,#000 36px)}
  .k-switch[data-more="both"]{-webkit-mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent); mask-image:linear-gradient(90deg,transparent,#000 36px,#000 calc(100% - 36px),transparent)}
  .k-story .k-p{font-size:15px}
}
@media (max-width:560px){
  .tabs button{letter-spacing:0}
  .k-job-head{grid-template-columns:auto 1fr; gap:14px}
  .k-portrait img{height:120px}
  .k-name{font-size:22px}
  .k-stat{margin-right:12px; font-size:14px}
  .k-stats th{width:auto; padding-right:8px}
  .k-steps>li{grid-template-columns:28px 1fr; gap:0 10px}
  .k-grid.is-icons{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}
  .k-grid.is-portraits{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}
  .k-quests h4{font-size:16px}
  .k-subject{white-space:normal}
  .k-ranks{columns:1}
  /* 메인 공지 상자와 게시판 목록 사이 (좁은 화면에서는 표 머리줄이 없어 이어져 보였음) */
  .k-board{border-top:2px solid #7a553066; padding-top:6px}
}

/* 표: 표가 놓인 폭이 좁으면(화면 폭이 아니라 표 자리 기준) 행마다 쌓습니다.
   제목 칸을 첫 줄로, 나머지는 원본 머리글을 붙여 한 줄에.
   (3차 검증: 851~900px 에서 아이템 표 효과 칸이 잘림 — 화면은 넓어도 표 자리는 488px) */
/* 게시판 · 아이템 · 운영 표는 표 자리가 560px 아래일 때, 짧은 표(특성치 · 업그레이드 · 테크큐브 · 사양)는 400px 아래일 때만
   행마다 쌓습니다 (4차 검증: 1024px 노트북에서도 짧은 표가 쌓여 두 배로 길어짐). */
@container (max-width:560px){
  .k-table:is(.is-items,.is-board) thead{display:none}
  .k-table:is(.is-items,.is-board) table,.k-table:is(.is-items,.is-board) tbody{display:block}
  .k-table:is(.is-items,.is-board) tr{display:flex; flex-wrap:wrap; gap:3px 14px; padding:11px 2px; border-bottom:1px solid #7a553033}
  .k-table:is(.is-items,.is-board) td{display:block; padding:0; border:0; width:auto !important;
    text-align:left !important; white-space:normal !important; font-size:14px; color:#34210f}
  .k-table:is(.is-items,.is-board) td::before{content:attr(data-label); margin-right:6px; font-size:13px; color:#5b3f24; font-weight:400}
  .k-table:is(.is-items,.is-board) td.is-lead{flex-basis:100%; order:-1; font-size:15px; font-weight:700; color:#34210f}
  .k-table:is(.is-items,.is-board) td.is-lead::before{content:none}
  .k-table:is(.is-items,.is-board) td.is-wide{flex-basis:100%; color:#34210f}
  .k-table:is(.is-items,.is-board) td:empty{display:none}
}
/* 운영 표는 칸이 여덟 개까지 되어 560px 로는 모자랐다 (1266px 창에서도 가로로 잘림) */
@container (max-width:720px){
  .k-table.is-adminboard thead{display:none}
  .k-table.is-adminboard table,.k-table.is-adminboard tbody{display:block}
  .k-table.is-adminboard tr{display:flex; flex-wrap:wrap; gap:3px 14px; padding:11px 2px;
    border-bottom:1px solid #7a553033}
  .k-table.is-adminboard td{display:block; padding:0; border:0; width:auto !important;
    text-align:left !important; white-space:normal !important; font-size:14px; color:#34210f}
  .k-table.is-adminboard td::before{content:attr(data-label); margin-right:6px; font-size:13px;
    color:#5b3f24; font-weight:400}
  .k-table.is-adminboard td.is-lead{flex-basis:100%; order:-1; font-size:15px; font-weight:700; color:#34210f}
  .k-table.is-adminboard td.is-lead::before{content:none}
  .k-table.is-adminboard td:empty{display:none}
}
@container (max-width:400px){
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) thead{display:none}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) table,.k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) tbody{display:block}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) tr{display:flex; flex-wrap:wrap; gap:3px 14px; padding:11px 2px; border-bottom:1px solid #7a553033}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td{display:block; padding:0; border:0; width:auto !important;
    text-align:left !important; white-space:normal !important; font-size:14px; color:#34210f}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td::before{content:attr(data-label); margin-right:6px; font-size:13px; color:#5b3f24; font-weight:400}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td.is-lead{flex-basis:100%; order:-1; font-size:15px; font-weight:700; color:#34210f}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td.is-lead::before{content:none}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td.is-wide{flex-basis:100%; color:#34210f}
  .k-table:is(.is-stateff,.is-upgrade,.is-cubes,.is-spec) td:empty{display:none}
}
@container (max-width:560px){
  /* 아이템: 이름과 가격을 한 줄에 */
  .k-table.is-items td.is-lead{flex:1 1 auto; order:-3}
  .k-table.is-items td[data-label="가격"]{order:-2; margin-left:auto; font-weight:700}
  /* 이름 · 가격 다음에서 줄을 끊어, 나머지 칸이 늘 둘째 줄에서 시작하도록 */
  .k-table.is-items tr::after{content:''; flex-basis:100%; height:0; order:-1}
}
@container (max-width:400px){
  .k-table.is-stateff td:not(:first-child){width:auto !important; text-align:left !important}
  /* 긴 머리글을 줄마다 되풀이하지 않도록 */
  .k-table:is(.is-upgrade,.is-cubes) td:nth-child(2)::before{content:none}
  .k-table.is-upgrade td:nth-child(3){order:-1}
}

/* 로그인: 계정 체계가 정해지기 전까지는 누를 수 없는 표시만 둡니다 (3차 검증: 눌러도 아무 일 없음) */
.login[aria-disabled="true"]{cursor:default}
.login[aria-disabled="true"]:hover{filter:none; transform:none}

/* ── 새로 쓴 화면 (written-guide.js) ─────────────────────────────── */
/* 이름 · 설명 목록 (HOT KEY · 길드 기능 · 사제/에스퍼 기술) */
.k-deflist{margin:6px 0 18px; display:grid; gap:0}
.k-deflist>div{display:grid; grid-template-columns:minmax(8em,max-content) 1fr; gap:4px 18px;
  padding:10px 2px; border-bottom:1px solid #7a553033}
.k-deflist dt{font-weight:700; color:#4b250a; font-size:15px}
.k-deflist dd{margin:0; font-size:15px; line-height:1.75; color:#34210f}
.k-who{display:inline-block; margin-left:6px; padding:1px 7px; border-radius:2px;
  background:#c9985a33; color:#5b3f24; font-size:12px; font-weight:600; vertical-align:2px}
/* 캐릭터: 남 · 여 */
.k-weapon{margin:2px 0 16px}
.k-sexes{display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr)); gap:14px; margin:4px 0 20px}
.k-sex{display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:end;
  padding:14px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-sex img{display:block; height:150px; width:auto}
.k-sex h4{margin:0 0 6px; font:700 17px/1.3 '맑은 고딕','Malgun Gothic',sans-serif; color:#3a1e0a}
.k-sex p{margin:8px 0 0; font-size:14px; line-height:1.7; color:#34210f}
/* NPC */
.k-npcs{display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr)); gap:12px}
.k-npc{display:grid; grid-template-columns:80px 1fr; gap:14px; align-items:start;
  padding:12px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-npc img,.k-npc .k-noimg{width:80px; height:90px; object-fit:cover; border:1px solid #7a553066}
.k-npc h4{margin:2px 0 6px; font-size:16px; font-weight:700; color:#3a1e0a}
.k-npc p{margin:0; font-size:14px; line-height:1.7; color:#34210f}
/* 특수기술: 설명이 붙은 미리보기, 둘째 그룹 이름 */
.k-preview figcaption{display:grid; gap:4px; justify-items:center; text-align:center}
.k-preview-slot{display:grid; place-items:center; width:236px; max-width:100%; height:183px;
  background:#3a1e0a14; border-radius:2px}
.k-preview-slot img{width:38px; height:38px; box-shadow:0 0 0 1px #6d3a1e, 0 2px 4px #3a1e0a40}
.k-preview figcaption span{min-height:3.4em}
.k-preview figcaption b{font-size:16px; color:#4b250a}
.k-preview figcaption span{font-size:14px; font-weight:400; color:#34210f; max-width:30em}
.k-platetext{display:inline-block; margin:0 0 12px; padding:2px 10px; border-radius:2px;
  background:#c9985a40; color:#3a1e0a; font-size:13px; font-weight:700}
/* 아이템: 직업 · 레벨 · 쪽 */
.k-itembar{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px 16px; margin:22px 0 10px}
.k-itembar .k-switch{margin:0}
.k-filter{display:flex; align-items:center; gap:10px; margin:6px 0 14px; font-size:14px; color:#4b250a}
.k-itembar .k-filter{margin:0}
.k-filter span{font-weight:700}
.k-filter select{min-height:40px; padding:6px 10px; font:14px '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f;
  background:#fff4dccc; border:1px solid #7a553088; border-radius:3px}
.k-pager{display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin:16px 0 4px}
.k-pager button{min-width:40px; min-height:40px; padding:0 8px; border:1px solid #7a553066; border-radius:3px;
  background:#fff3d533; color:#5b3f24; font:600 14px '맑은 고딕','Malgun Gothic',sans-serif; cursor:pointer}
.k-pager button[aria-current="page"]{background:#5a3017; border-color:#5a3017; color:#f7e4bd}
.k-pager button:focus-visible{outline:2px solid #861c10; outline-offset:1px}
/* 특성치 효과 표 · 업그레이드 표 */
.k-table.is-stateff td:not(:first-child),.k-table.is-stateff th:not(:first-child){text-align:center; width:11%}
.k-table.is-stateff td:first-child{font-weight:700; color:#4b250a; white-space:nowrap}
.k-table.is-upgrade td:first-child,.k-table.is-cubes td:first-child{font-weight:700; color:#4b250a; white-space:nowrap}
.k-table.is-upgrade td:last-child,.k-table.is-upgrade th:last-child{text-align:center; width:4.5em; font-variant-numeric:tabular-nums}

@media (max-width:560px){
  .k-deflist>div{grid-template-columns:1fr; gap:2px}
  .k-sex img{height:120px}
  .k-itembar{justify-content:flex-start}
}

/* ── 4차 검증 (재창작 화면) ─────────────────────────────────────── */
/* 쪽을 넘겨 양피지가 늘어날 때 Chrome 의 스크롤 고정이 화면을 900px 가까이 밀어냄 */
html{overflow-anchor:none}
.k-itemtable:focus{outline:none}
.k-filter select:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-switch.is-seg button:hover,.k-pager button:hover{background:#fff3d58c}
.k-switch.is-seg button[aria-selected="true"]:hover,.k-pager button[aria-current="page"]:hover{background:#5a3017}
/* 몬스터 30종은 길어서, 서식지역 선택을 위에 붙여 둠 */
.k-written>.k-filter{position:sticky; top:0; z-index:2; padding:6px 0; background:#eeca8bf2;
  box-shadow:0 6px 8px -6px #3a1e0a55}
@media (max-width:850px){
  /* 직업 · 게시판 버튼은 넘치면 줄을 바꿈 (가로 스크롤과 흐림은 하위 차례에만) */
  .k-switch.is-seg{flex-wrap:wrap; overflow:visible; -webkit-mask-image:none; mask-image:none}
}
@media (max-width:560px){
  .k-npc{display:block}
  .k-npc img,.k-npc .k-noimg{float:left; width:56px; height:63px; margin:0 12px 4px 0}
  .k-npc::after{content:''; display:block; clear:both}
  .k-grid.is-icons{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}
}
@media (max-width:400px){
  .k-switch.is-seg button{padding:8px 14px}
}

/* ── 게임 자료 그림 (game.js) ────────────────────────────────────── */
/* 게임 대화 초상은 웹 초상과 달리 금빛 틀이 없어 틀을 둘러 맞춥니다 */
.k-npc img.is-game{object-fit:cover; background:#1a0f08; border:3px solid #8a6a3a;
  box-shadow:inset 0 0 0 1px #3a2412, 0 2px 5px #3a1e0a33}
/* 몬스터 카드: 왼쪽에 그림 */
.k-card.has-pic{display:grid; grid-template-columns:96px 1fr; gap:4px 16px; align-items:start}
.k-card.has-pic>header,.k-card.has-pic>dl{grid-column:2}
.k-monpic{grid-row:1 / span 3; margin:0; width:96px; height:96px; display:grid; place-items:center;
  background:radial-gradient(circle at 50% 60%,#fff3d580,transparent 70%); border-radius:3px}
.k-monpic img{max-width:96px; max-height:96px; width:auto; height:auto}
/* 아이템 이름 칸 */
.k-itemname{display:inline-flex; align-items:center; gap:8px}
.k-itemname img,.k-itemicon{flex:none; width:32px; height:32px; object-fit:contain}
.k-itemicon{display:inline-block}
/* 기술: 레벨 · 성별 */
.k-skillmeta{display:inline-flex; align-items:center; gap:6px; margin-left:8px; font-size:12px; font-weight:400; color:#5b3f24}
.k-skillmeta .k-who{margin-left:0}
.k-preview figcaption .k-skillmeta{margin:0}
@media (max-width:560px){
  .k-card.has-pic{grid-template-columns:64px 1fr; gap:4px 12px}
  .k-monpic{width:64px; height:64px}
  .k-monpic img{max-width:64px; max-height:64px}
  .k-deflist.is-skills dt{display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px}
  .k-deflist.is-skills .k-skillmeta{margin-left:0}
}

/* ── 배경스토리 · 퀘스트 (이야기로 다시 씀, 2026-09-22) ─────────────────── */
/* 이야기 속 문서: 얼음 속 판 · 편지 · 일지 · 쿰란의 서 */
.k-doc{margin:14px 0 20px; padding:6px 0 6px 18px; border-left:3px solid #861c10;
  font:400 16px/1.95 Batang,'바탕',Georgia,serif; color:#5e1a0e}
.k-story .k-doc{font-size:16.5px}
.k-lead{font-size:16px; line-height:1.95}

/* ── 킬라초보: 단축키 (2026-09-22) ───────────────────────────────────────── */
.k-deflist.is-keys>div{grid-template-columns:minmax(7.5em,max-content) 1fr; align-items:center; padding:5px 0}
.k-deflist.is-keys dt{display:flex; align-items:center; gap:5px; font-weight:400}
.k-deflist.is-keys dt span{font-size:13px; color:#6b4a2b}
.k-deflist.is-keys kbd{display:inline-block; min-width:26px; padding:3px 8px; border-radius:4px; text-align:center;
  font:700 13px/1.2 '맑은 고딕','Malgun Gothic',sans-serif; color:#3a1e0a;
  background:linear-gradient(#fff6de,#ecd3a0); border:1px solid #9a7446; box-shadow:0 2px 0 #7a5530}
@media (max-width:560px){ .k-deflist.is-keys>div{grid-template-columns:minmax(5.2em,max-content) 1fr; gap:4px 12px} }
.k-deflist + .k-deflist{margin-top:-18px}   /* 출처가 달라 나눈 목록을 한 목록처럼 */
.k-startpage .k-deflist:not(.is-keys)>div{grid-template-columns:10.5em 1fr}   /* 나눈 목록의 설명 칸을 맞춤 */
@media (max-width:560px){ .k-startpage .k-deflist:not(.is-keys)>div{grid-template-columns:1fr} }
@media (max-width:560px){
  /* 상단 탭: 마지막 "아이템경매/샵" 이 두 줄로 꺾이지 않도록 */
  .tabs{grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,1.35fr)}
}

/* ── 킬라길드: 길드 목록 (목업, 2026-09-22) ──────────────────────────────── */
.k-guildbar{display:flex; flex-wrap:wrap; align-items:center; gap:8px 20px; margin:10px 0 4px}
.k-guildbar .k-filter{margin:0}
.k-search input{min-height:40px; width:min(260px, 60vw); padding:6px 10px; font:14px '맑은 고딕','Malgun Gothic',sans-serif;
  color:#34210f; background:#fff4dccc; border:1px solid #7a553088; border-radius:3px}
.k-search input::placeholder{color:#8a6a48}
.k-search input:focus-visible,.k-filter select:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-count span{color:#7a5a3a}
.k-table.is-guilds td{vertical-align:middle}
.k-table.is-guilds td[data-label="순위"]{width:3em; text-align:center; font-weight:700; color:#861c10}
.k-table.is-guilds td[data-label="길드원"],.k-table.is-guilds td[data-label="명성"]{text-align:right; white-space:nowrap}
.k-table.is-guilds td[data-label="창설일"]{white-space:nowrap; color:#5b3f24; font-size:13px}
.k-table.is-guilds td[data-label="상태"],.k-table.is-guilds th:last-child{width:auto; text-align:left; white-space:nowrap}
.k-table.is-guilds th:nth-child(4),.k-table.is-guilds th:nth-child(5){text-align:right}
.k-guildname{display:grid; gap:2px}
.k-guildname b{font-size:15px; color:#34210f}
.k-guildname small{font-size:12.5px; color:#6b4a2b}
.k-tag{display:inline-block; margin:1px 4px 1px 0; padding:2px 7px; border-radius:2px; font-size:12px; font-weight:700; white-space:nowrap}
.k-tag.is-open{color:#3d4a17; background:#8a9a4a26; border:1px solid #6b7a3288}
.k-tag.is-war{color:#861c10; background:#861c1014; border:1px solid #861c1066}
/* 아무 갈래도 아닌 딱지(«환불» 같은)도 딱지로 보이게 — 2026-09-25 화면 점검 */
.k-tag:not(.is-open):not(.is-war):not(.is-todo){color:#5b3f24; background:#7a553014;
  border:1px solid #7a553055}
.k-tag.is-todo{color:#8a5a10; background:#c8891014; border:1px solid #a8700066}
.k-empty{margin:14px 0; font-size:14px; color:#5b3f24; text-align:center}
/* 안내문 안의 링크가 그냥 글씨로 보였다 (2026-09-25 화면 점검) */
.k-empty a{color:#861c10; font-weight:700; text-decoration:underline; text-underline-offset:3px}
.k-empty a:hover{color:#5a3017}
@container (max-width:560px){
  .k-table.is-guilds td[data-label="순위"]{order:-2; flex-basis:auto; width:auto; text-align:left}
  .k-table.is-guilds td[data-label="순위"]::before{content:none}
  .k-table.is-guilds td[data-label="순위"]::after{content:'위'; margin-left:1px; font-weight:400; font-size:13px}
  .k-table.is-guilds td.is-lead{flex-basis:calc(100% - 3em)}
  .k-table.is-guilds td[data-label="상태"]::before{content:none}
}

/* ── 아이템경매/샵: 캐시 아이템 상점 (목업, 2026-09-22) ──────────────────── */
.k-shopgrid{display:grid; grid-template-columns:repeat(auto-fill, minmax(250px, 1fr)); gap:14px; margin:6px 0 10px}
.k-shopcard{display:grid; grid-template-columns:56px 1fr; grid-template-rows:1fr auto; gap:10px 14px; padding:14px 16px 12px;
  background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-shoppic{grid-row:1; margin:0; width:56px; height:56px; display:grid; place-items:center;
  background:radial-gradient(circle at 50% 40%, #fff6de, #e6c690); border:1px solid #9a744666; border-radius:4px}
.k-shoppic img{image-rendering:pixelated}
.k-shopnopic{width:24px; height:24px; border:2px dashed #9a744699; border-radius:4px}
.k-shopbody{min-width:0}
.k-shopbody header{display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px}
.k-shopbody h4{margin:0; font:700 16px/1.35 '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f}
.k-shopbody p{margin:6px 0 8px; font-size:13.5px; line-height:1.6; color:#4b3520}
.k-shopbody .k-facts{margin:0}
.k-shopcard footer{grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding-top:10px; border-top:1px solid #7a553033}
.k-price{font:700 18px '맑은 고딕','Malgun Gothic',sans-serif; color:#861c10; font-variant-numeric:tabular-nums}
.k-price small{margin-left:4px; font-size:13px; font-weight:700; color:#5b3f24}
.k-buy{min-height:36px; padding:0 14px; border:1px solid #7a553066; border-radius:3px; font:700 13px '맑은 고딕','Malgun Gothic',sans-serif;
  color:#7a5a3a; background:#e9d3a866; cursor:not-allowed}
.k-pager button.is-step{padding:0 12px; font-weight:700}
.k-shopgrid:focus,[data-guildresults] .k-table:focus{outline:none}
.k-shopgrid:focus-visible,[data-guildresults] .k-table:focus-visible{outline:2px solid #861c10; outline-offset:4px}

/* ── 커뮤니티: 자유게시판 · 문의하기 (목업, 2026-09-22) ─────────────────── */
.k-boardbar{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 12px; margin:6px 0 4px}
.k-boardbar .k-count{margin:0}
.k-table.is-board td[data-label="작성일"]{white-space:nowrap; color:#5b3f24; font-size:13px}
.k-table.is-board td[data-label="글쓴이"]{white-space:nowrap; color:#4b3520}
.k-replies{font-size:12.5px; font-weight:700; color:#861c10}
.k-form{display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px 18px; margin:12px 0 6px}
.k-form label{display:grid; gap:6px; font-size:14px; color:#4b250a}
.k-form label span{font-weight:700}
.k-form label.is-wide{grid-column:1 / -1}
.k-form > p.is-wide{grid-column:1 / -1; margin:0}      /* 폼 안의 넓은 안내 문단 (2026-09-26) */
.k-form input,.k-form select,.k-form textarea{min-height:40px; padding:8px 10px; font:14px/1.6 '맑은 고딕','Malgun Gothic',sans-serif;
  color:#34210f; background:#fff4dccc; border:1px solid #7a553088; border-radius:3px; width:100%; box-sizing:border-box}
.k-form textarea{resize:vertical; min-height:160px}
.k-form input::placeholder,.k-form textarea::placeholder{color:#8a6a48}
.k-form :is(input,select,textarea):focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-formfoot{grid-column:1 / -1; display:flex; justify-content:flex-end}
.k-freeboard .k-table:focus{outline:none}
.k-freeboard .k-table:focus-visible{outline:2px solid #861c10; outline-offset:4px}
@media (max-width:560px){ .k-form{grid-template-columns:1fr} }
/* 특수기술 목록: 기술 이름 칸 너비를 맞춰 설명이 한 줄로 가지런하게 (2026-09-22) */
@media (min-width:561px){ .k-deflist.is-skills>div{grid-template-columns:10.5em 1fr}
  .k-deflist.is-skills dt{display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 8px} }

/* ── 자유게시판: 글 · 댓글 (목업, 2026-09-22) ─────────────────────────────── */
.k-postlink{color:inherit; text-decoration:none}
.k-postlink:hover{color:#861c10; text-decoration:underline; text-underline-offset:3px}
.k-postlink:focus-visible,.k-postnav a:focus-visible{outline:2px solid #861c10; outline-offset:2px}
.k-post{margin:4px 0 8px}
.k-posthead{padding:14px 0 12px; border-top:2px solid #5a3017; border-bottom:1px solid #7a553055}
.k-posttitle{margin:0 0 10px; font:700 20px/1.4 '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f}
.k-posttitle:focus{outline:none}
.k-postmeta{display:flex; flex-wrap:wrap; gap:4px 18px; margin:0; font-size:13px; color:#5b3f24}
.k-postmeta div{display:flex; gap:6px}
.k-postmeta dt{color:#7a5a3a}
.k-postmeta dd{margin:0; font-weight:700; color:#4b3520; font-variant-numeric:tabular-nums}
.k-postbody{padding:18px 2px 22px; font-size:15px; line-height:1.9; color:#34210f; border-bottom:1px solid #7a553055}
.k-postbody p{margin:0 0 12px}
.k-postbody p:last-child{margin-bottom:0}
.k-comments{margin:16px 0 6px}
.k-comments h4{margin:0 0 8px; font:700 15px '맑은 고딕','Malgun Gothic',sans-serif; color:#4b250a}
.k-comments h4 span{color:#861c10}
.k-comments ol{list-style:none; margin:0; padding:0}
.k-comments li{padding:10px 12px; border-bottom:1px solid #7a553033; background:#fff3d533}
.k-comments li:nth-child(even){background:transparent}
.k-cmeta{display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; margin-bottom:4px}
.k-cmeta b{font-size:14px; color:#34210f}
.k-cmeta time{font-size:12px; color:#7a5a3a; font-variant-numeric:tabular-nums}
.k-comments li p{margin:0; font-size:14px; line-height:1.7; color:#4b3520}
.k-commentform{grid-template-columns:1fr; margin-top:14px}
.k-commentform textarea{min-height:84px}
.k-postnav{display:flex; flex-wrap:wrap; align-items:flex-start; justify-content:space-between; gap:12px; margin:18px 0 4px}
.k-postnear{display:grid; gap:6px; min-width:0; flex:1 1 300px}
.k-postnear a{display:flex; gap:10px; align-items:baseline; min-width:0; padding:8px 10px; border:1px solid #7a553033; border-radius:3px;
  color:#34210f; text-decoration:none; background:#fff3d533}
.k-postnear a:hover{border-color:#861c1066}
.k-postnear a span:first-child{flex:none; font-size:12px; font-weight:700; color:#7a5a3a}
.k-postnear a b{font-weight:400; font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.k-back{flex:none; display:inline-flex; align-items:center; min-height:38px; padding:0 18px; border-radius:3px; text-decoration:none;
  font:700 13px '맑은 고딕','Malgun Gothic',sans-serif; color:#f7e4bd; background:#5a3017; border:1px solid #5a3017}
.k-back:hover{background:#6e3b1d}

/* 글 화면: 본문은 밝은 판 안에, 댓글은 굵은 제목 줄 아래 왼쪽 선을 두른 목록으로 (소유자 "본문과 댓글의 구분이 잘 안 됩니다") */
.k-posthead{border-bottom:0; padding-bottom:6px}
.k-postbody{margin:8px 0 0; padding:20px 22px; background:#fff7e6b8; border:1px solid #7a553055; border-radius:3px;
  box-shadow:inset 0 0 0 3px #fff3d566}
.k-comments{margin:30px 0 6px}
.k-comments h4{display:flex; align-items:baseline; gap:6px; margin:0 0 4px; padding-bottom:8px; border-bottom:2px solid #5a3017;
  font:700 16px '맑은 고딕','Malgun Gothic',sans-serif}
.k-comments li,.k-comments li:nth-child(even){margin:0; padding:10px 6px 10px 14px; background:transparent;
  border-bottom:1px solid #7a553026; box-shadow:inset 3px 0 0 #c9985a88}
.k-comments li p{font-size:13.5px}
.k-comments .k-empty{margin:12px 0}
.k-commentform{margin-top:16px}

/* ── 자유게시판 글쓰기 · 편집기 (2026-09-22) ─────────────────────────────── */
.k-btn{display:inline-flex; align-items:center; justify-content:center; min-height:38px; padding:0 16px; border-radius:3px; cursor:pointer;
  font:700 13px '맑은 고딕','Malgun Gothic',sans-serif; text-decoration:none; color:#f7e4bd; background:#5a3017; border:1px solid #5a3017}
.k-btn:hover{background:#6e3b1d}
.k-btn.is-ghost{color:#4b250a; background:#fff3d566; border-color:#7a553077}
.k-btn.is-ghost:hover{background:#fff3d5aa; border-color:#861c1066}
.k-btn:focus-visible{outline:2px solid #861c10; outline-offset:2px}
.k-writeform{grid-template-columns:1fr; margin-top:6px}
.k-editorwrap{display:grid; gap:6px}
.k-edlabel{font-weight:700; font-size:14px; color:#4b250a}
.k-edtools{display:flex; flex-wrap:wrap; align-items:center; gap:6px; padding:6px; background:#e9d3a855; border:1px solid #7a553066;
  border-bottom:0; border-radius:3px 3px 0 0}
.k-edtools button{min-width:34px; min-height:32px; padding:0 8px; border:1px solid #7a553055; border-radius:3px; cursor:pointer;
  background:#fff4dccc; color:#34210f; font:14px '맑은 고딕','Malgun Gothic',sans-serif}
.k-edtools button:hover{border-color:#861c1077}
.k-edtools button:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-edtools .k-edphoto{font-weight:700; font-size:13px}
.k-edsep{width:1px; height:22px; background:#7a553055; margin:0 2px}
.k-edhint{font-size:12px; color:#6b4a2b}
.k-editor{min-height:260px; margin-top:-6px; padding:14px 16px; font:15px/1.8 '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f;
  background:#fff7e6; border:1px solid #7a553088; border-radius:0 0 3px 3px; overflow-wrap:anywhere}
.k-editor:focus{outline:2px solid #861c10; outline-offset:1px}
.k-editor:empty::before{content:attr(data-placeholder); color:#8a6a48}
.k-editor.is-drop{background:#fff1cf; outline:2px dashed #861c10}
.k-editor img,.k-postbody.is-rich img{display:block; max-width:100%; height:auto; margin:8px 0; border-radius:2px; box-shadow:0 1px 3px #3a1e0a33}
.k-postbody.is-rich > div{min-height:1em}
.k-ednote{margin:0; min-height:1em; font-size:12.5px; color:#861c10}
.k-writefoot{gap:8px; flex-wrap:wrap}
.k-previewtag{display:inline-block; margin:0 0 8px; padding:2px 10px; border-radius:2px; font-size:12px; font-weight:700;
  color:#f7e4bd; background:#861c10}
.k-post.is-preview .k-writefoot{margin-top:16px}

/* 사진이 든 글 표시 · 글 속 사진 (2026-09-22) */
.k-imgmark{display:inline-flex; align-items:center; margin-left:6px; color:#7a5a3a; vertical-align:-2px}
.k-imgmark svg{display:block}
.k-sr{position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0}
.k-postimg{margin:14px 0 0}
.k-postimg img{display:block; max-width:100%; height:auto; border-radius:2px; box-shadow:0 1px 4px #3a1e0a44}
/* 양피지는 해상도와 상관없이 머리 바로 아래에 고정 (소유자 2026-09-22 "해상도가 커질수록 밑으로 내려가네요 · 상단 고정으로").
 * style.css(design-v3 복사본)의 2000px 이상 규칙이 위 여백을 55 → 100px 로 늘리던 것을 되돌립니다. */
@media (min-width:2000px){
  main{margin-top:55px}
  /* 안쪽 여백 · 탭 위치도 2000px 미만과 같게 — 종이 안 내용이 시작하는 높이까지 모든 해상도에서 같음 */
  .paper-inner{padding:116px 49px 40px}
  .tabs{top:41px; left:48px; right:48px}
  /* 큰 화면은 index.html 의 zoom 으로 1920 화면을 통째로 키웁니다. 격자 · 크기도 1920 화면과 같게 둡니다. */
  main{max-width:1580px; grid-template-columns:minmax(230px,.8fr) minmax(650px,1.2fr)}
  .masthead{max-width:1720px}
  .parchment{min-height:580px}
  .tabs button[data-page],.tabs button[data-page][aria-pressed=true]{font-size:13px}
}
/* 양피지 top 을 모든 폭에서 165px 로 고정 (소유자 2026-09-22 "양피지의 top이 고정").
 * style.css(design-v3 복사본)는 폭 구간마다 달랐음: 850px 이하 163 (머리 85 + 빈 aside 78) · 851~1150px 148 (머리 110 + 여백 38) · 그 위 165. */
@media (max-width:1150px){ main{margin-top:55px} }                          /* 110 + 55 */
@media (max-width:850px){ main{margin-top:80px} .atmosphere{display:none} }  /* 85 + 80, 빈 aside 는 자리만 차지해 숨김 */

/* 눈에 보이는 종이 윗가장자리 · 탭 · 본문 시작을 모든 폭에서 같은 화면 위치로 (소유자 2026-09-23
 * "top 위치가 달라진다고 … 실제 top 은 값이 변경 안 되더라도 실제 양피지 헤더가 내려오면").
 *   양피지 칸(.desk) top 165 은 그대로.
 *   종이: 그림 위 투명 띠(--edge, parchment.js)만큼 당겨 가장자리가 늘 165 + 14 = 179.
 *   탭: 칸 기준 41px 로 통일 (style.css 는 폭 구간마다 35 · 32 · 48) → 늘 206.
 *   본문: 종이 기준 102 + --edge → 늘 165 + 116 = 281. */
.desk{display:flow-root}   /* 좁은 화면(블록 배치)에서 아래 여백이 바깥 여백과 겹쳐 사라지지 않게 */
.parchment{margin-top:calc(14px - var(--edge, 14px))}
.desk .tabs{top:41px}
.parchment .paper-inner{padding-top:calc(102px + var(--edge, 14px))}
.page-heading{margin-top:28px}   /* 휴대폰(style.css 460px 이하 22px)에서도 제목 위치를 같게 */
/* 양피지를 30px 올림 (소유자 2026-09-23 "양피지를 좀 더 올려 주세요"): 칸 top 165 → 135, 종이 가장자리 약 149, 탭 176, 제목 279 — 모든 폭에서 같음 */
main{margin-top:25px}                                   /* 머리 110 + 25 */
@media (max-width:850px){ main{margin-top:50px} }       /* 머리 85 + 50 */
/* 글 본문: 밝은 바탕은 빼고 테두리만 (소유자 2026-09-23 "본문에 흰색 배경 넣은 거 빼시고 바운더리만 나타나게") */
.k-postbody{background:transparent; box-shadow:none; border:0; border-radius:0; padding-left:2px; padding-right:2px}   /* 테두리도 뺌 (소유자 09-23 "테두리 없애 주세요") */
/* 본문은 상자 없이 선과 간격으로 구분 (소유자 2026-09-23 "라인과 댓글과의 거리나 이런 걸 통해서 본문을 알게"):
 *   제목 · 정보 아래 가는 선 → 본문(위아래 넉넉히) → 본문 끝 가는 선 → 크게 띄우고 → '댓글' 굵은 줄 */
.k-posthead{padding-bottom:12px; border-bottom:1px solid #7a553066}
.k-postbody{margin:0; padding:26px 2px 32px; border-bottom:1px solid #7a553066}
.k-comments{margin-top:46px}

/* ── 댓글 · 답글 (대댓글, 2026-09-23) ──────────────────────────────────────── */
.k-cmeta .k-replybtn{margin-left:auto; padding:2px 8px; border:0; background:none; cursor:pointer;
  font:700 12px '맑은 고딕','Malgun Gothic',sans-serif; color:#7a5a3a; border-radius:2px}
.k-cmeta .k-replybtn:hover,.k-cmeta .k-replybtn[aria-expanded="true"]{color:#861c10; background:#c9985a26}
.k-cmeta .k-replybtn:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-comments .k-rlist{list-style:none; margin:8px 0 0; padding:0}
.k-comments .k-rlist li,.k-comments .k-rlist li:nth-child(even){margin:0; padding:8px 4px 6px 22px; border-bottom:0; box-shadow:none;
  background:transparent; border-top:1px dashed #7a553033}
.k-replymark{margin-left:-18px; width:14px; color:#9a7446; font-weight:700}
.k-comments .k-rlist .k-cmeta b{font-size:13.5px}
.k-comments .k-rlist p{font-size:13.5px}
.k-replyform{grid-template-columns:1fr; margin:10px 0 2px 22px; gap:8px}
.k-replyform[hidden]{display:none}   /* .k-form 의 display:grid 가 hidden 을 이기지 않게 */
.k-replyform textarea{min-height:64px}
.k-replyform .k-formfoot{gap:8px}

/* 임시로 동작하는 폼 (2026-09-23) */
.k-formnote{margin:0 auto 0 0; font-size:13px; color:#861c10}
.k-comments .is-new{animation:k-new 1.6s ease-out}
@keyframes k-new{from{background:#e9c98a88} to{background:transparent}}
.k-myqna{margin-top:26px}
.k-postbody .is-rich > div{min-height:1em}
.k-postbody .is-rich img{display:block; max-width:100%; height:auto; margin:8px 0; border-radius:2px; box-shadow:0 1px 3px #3a1e0a33}

/* 상점 구매 (임시): 구매 → 카드 안 확인 → 내 보관함 (2026-09-23) */
.k-shopcard footer{flex-wrap:wrap}
.k-shopcard .k-buybtn{min-height:36px; padding:0 18px}
.k-buyask{display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:6px 8px; margin-left:auto}
.k-buyask[hidden],.k-buybtn[hidden]{display:none}
.k-buyask span{font-size:13px; font-weight:700; color:#4b3520}
.k-buyask .k-btn{min-height:34px; padding:0 12px}
.k-buynote{flex-basis:100%; margin:0; font-size:13px; font-weight:700; color:#861c10; text-align:right}
.k-buynote:empty{display:none}
.k-locker{margin-top:30px}
.k-locker .is-new{animation:k-new 1.6s ease-out}
/* 내 문의 · 내 보관함 표: 게시판 표의 번호(첫 칸) · 조회수(끝 칸) 폭을 쓰지 않음 */
.k-table:is(.is-myqna,.is-locker) th:first-child,.k-table:is(.is-myqna,.is-locker) th:last-child{width:auto; text-align:left}
.k-table:is(.is-myqna,.is-locker) td{white-space:nowrap}
.k-table:is(.is-myqna,.is-locker) td:is([data-label="제목"],[data-label="상품"]){white-space:normal; width:100%}
.k-table.is-locker td[data-label="마지막 구매"],.k-table.is-myqna td[data-label="보낸 날"]{color:#5b3f24; font-size:13px}

/* 반대 검증 뒤 고침 (2026-09-23) */
.k-comments .k-comment > p,.k-comments .k-reply > p{white-space:pre-line}   /* 댓글 · 답글 줄바꿈 */
.k-comments p,.k-posttitle,.k-postnear b,.k-postbody,.k-qdetail{overflow-wrap:anywhere}   /* 띄어쓰기 없는 긴 글 ('ㅋㅋㅋ…') */
.k-table.is-board td:is([data-label="제목"],[data-label="상품"]){overflow-wrap:anywhere}
.k-qdetail summary{cursor:pointer; list-style:none}
.k-qdetail summary::-webkit-details-marker{display:none}
.k-qdetail summary::after{content:'▾'; margin-left:6px; font-size:11px; color:#9a7446}
.k-qdetail[open] summary::after{content:'▴'}
.k-qdetail summary:focus-visible{outline:2px solid #861c10; outline-offset:2px}
.k-qdetail p{margin:6px 0 2px; white-space:pre-line; font-size:13.5px; font-weight:400; line-height:1.7; color:#4b3520}
.k-myqna .is-new{animation:k-new 1.6s ease-out}
.k-replyform .k-formnote{margin-right:auto}
/* 안내가 붙어도 버튼 글자가 두 줄로 꺾이지 않게: 안내는 남는 폭을 쓰고, 모자라면 버튼 위 한 줄로 */
.k-formfoot{flex-wrap:wrap; align-items:center}
.k-formfoot .k-btn{white-space:nowrap}
.k-formfoot .k-formnote{flex:1 1 12em}
.k-formfoot .k-formnote:empty{flex:1 1 0}
@media (max-width:560px){ .k-formfoot .k-formnote:not(:empty){flex-basis:100%} }   /* 좁은 화면: 안내는 한 줄을 다 쓰고 버튼은 그 아래에 함께 */
.k-comments li .k-formnote{font-size:13px; color:#861c10}   /* 답글 칸 안내: 댓글 글자 규칙(.k-comments li p)이 덮지 않게 */
.k-cmeta b,.k-postmeta dd{min-width:0; overflow-wrap:anywhere}   /* 띄어쓰기 없는 긴 이름 (DB 연결 뒤) */
.k-writefoot .k-btn:disabled{opacity:.6; cursor:progress}
.k-write[aria-busy="true"] .k-editor,.k-write[aria-busy="true"] [data-edtitle]{opacity:.75}

/* ── 회원 화면: 로그인 · 회원가입 · 내 정보 (2026-09-23) ──────────────────── */
.k-auth{margin:2px 0 10px}
.k-form label small{font-weight:400; font-size:12.5px; color:#6b4a2b}
.k-form label span em{margin-left:4px; font-style:normal; font-size:12px; font-weight:400; color:#7a5a3a}
.k-authlinks{margin:16px 0 0; font-size:14px}
.k-authlinks a{color:#861c10; font-weight:700; text-underline-offset:3px}
.k-authhelp{margin:10px 0 0; font-size:13.5px; line-height:1.7; color:#5b3f24}
.k-authbox{margin-top:4px}
.k-devnote{margin:0 0 6px; padding:9px 12px; font-size:13px; line-height:1.6; color:#5b3f24;
  background:#e9d3a840; border-left:3px solid #9a7446; border-radius:2px}
.k-verified{margin:0 0 10px; font-size:14px; color:#4b3520}
.k-verified b{color:#34210f}

/* 가입 단계 */
.k-steps{display:flex; flex-wrap:wrap; gap:8px 10px; list-style:none; margin:2px 0 18px; padding:0}
.k-steps li{display:flex; align-items:center; gap:7px; padding:7px 13px 7px 8px; border:1px solid #7a553055; border-radius:3px;
  font:700 13px '맑은 고딕','Malgun Gothic',sans-serif; color:#7a5a3a; background:#fff3d54d}
.k-steps li b{display:grid; place-items:center; width:20px; height:20px; border-radius:50%;
  background:#c9985a55; color:#4b3520; font-size:12px}
.k-steps li[aria-current="step"]{color:#f7e4bd; background:#5a3017; border-color:#5a3017}
.k-steps li[aria-current="step"] b{background:#ecc78433; color:#f7e4bd}
.k-steps li.is-done{color:#4b3520}
.k-steps li.is-done b{background:#7a9a5a55}

/* 약관 */
.k-agree{grid-column:1 / -1;   /* 폼이 두 칸이어도 동의 목록은 한 줄을 다 씁니다 */
  list-style:none; margin:2px 0 0; padding:0; border:1px solid #7a553055; border-radius:3px; background:#fff3d54d}
.k-agree li{border-top:1px solid #7a553033}
.k-agree li.is-all{border-top:0; background:#e9d3a840}
.k-agree label{display:flex; align-items:center; gap:10px; padding:11px 14px; cursor:pointer; font-size:14px; color:#4b3520}
.k-agree li.is-all label{font-weight:700; color:#34210f}
.k-agree input{width:17px; height:17px; min-height:0; accent-color:#5a3017}
.k-agree span em{margin-right:7px; font-style:normal; font-size:11.5px; font-weight:700; color:#7a5a3a;
  padding:1px 6px; border:1px solid #7a553055; border-radius:2px; background:#e9d3a855; white-space:nowrap}
.k-agree li:not(.is-all) span em.is-need{color:#861c10; border-color:#861c1044; background:#f0d9b055}

/* 내 정보 · 게임 계정 */
.k-myinfo{margin:2px 0 6px}
.k-gamelist{list-style:none; margin:10px 0 18px; padding:0; display:grid; gap:12px}
.k-gamelist li{padding:13px 15px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-gamehead{display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px}
.k-gamehead b{font:700 17px '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f; overflow-wrap:anywhere}
.k-gamehead .k-btn{margin-left:auto; min-height:32px; padding:0 11px; font-size:12.5px}
.k-gamelist .k-facts{margin:8px 0 0}
.k-gamepwform{margin-top:10px; grid-template-columns:1fr}
.k-gamepwform[hidden]{display:none}
.k-done{font-size:12.5px; font-weight:700; color:#4a7a2a}

/* 맨 위 오른쪽 로그아웃 */
.header-right .login{text-decoration:none; display:inline-flex; align-items:center; cursor:pointer;
  white-space:nowrap}   /* 좁은 화면에서 «admin2 님» 이 두 줄로 갈라지지 않게 */
@media (max-width:560px){
  /* 로그인하면 단추가 늘어 화면 밖으로 나갔다 (운영자는 더) — 줄바꿈을 허용한다 */
  .header-right{gap:6px; flex-wrap:wrap; justify-content:flex-end}
  .header-right .login{padding:8px 10px; font-size:11.5px}
  .header-right .login span{margin-left:6px}
}
.header-right .login.is-plain{background:none; border-color:#b38c5333; color:#d5c0a0}
.header-right .login.is-plain:hover{color:#edd3a6; border-color:#b38c5366}

/* ── 이용약관 · 개인정보 처리방침 (2026-09-23) ─────────────────────────── */
.k-legal{margin:2px 0 6px}
.k-legalmeta{margin:0 0 4px; font-size:13px; color:#6b4a2b}
.k-article{margin:16px 0 0}
.k-article h4{margin:0 0 8px; font:700 16px/1.5 '맑은 고딕','Malgun Gothic',sans-serif; color:#34210f}
.k-clause{margin:0; padding-left:1.7em; font-size:14.5px; line-height:1.85; color:#34210f;
  list-style:none; counter-reset:clause}
.k-clause>li{margin:0 0 6px; position:relative}
/* 하위 목록(호)·표가 든 줄은 항 번호를 세지 않습니다 */
.k-clause>li:not(.is-sub){counter-increment:clause}
.k-clause>li:not(.is-sub)::before{content:counter(clause) "."; position:absolute; left:-1.7em; width:1.5em;
  text-align:right; color:#5b3f24}
.k-clause>li.is-sub{margin-left:-1.7em}
.k-subclause{margin:2px 0 8px; padding-left:1.7em; list-style:decimal; font-size:14px; color:#4b3520}
.k-subclause>li{margin:0 0 4px}
.k-table.is-legal{margin:8px 0 10px}
.k-table.is-legal td{font-size:13.5px; vertical-align:top}
.k-blank{background:#f0d48a; color:#5a3017; padding:0 4px; border-radius:2px; font-weight:700}
/* 동의 한 줄 + 전문 스크롤 상자 (2026-09-23 소유자 "작은 프레임 안에 스크롤로") */
.k-agreerow{display:flex; align-items:center}
.k-agreerow label{flex:1}
.k-agreelink{padding:0 14px; font-size:12.5px; font-weight:700; color:#7a5a3a; text-underline-offset:3px; white-space:nowrap}
.k-agreelink:hover{color:#861c10}
.k-docwrap{position:relative; margin:0 14px 13px}
.k-docbox{max-height:188px; overscroll-behavior:contain; margin:0; padding:11px 22px 11px 14px;
  background:#fff7e6; border:1px solid #7a553077; border-radius:3px; font-size:13px; line-height:1.75; color:#4b3520}
.k-docbox:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-docbox .k-legal{margin:0}
.k-docbox .k-legalmeta{font-size:12px; margin-bottom:2px}
.k-docbox .section-bar{margin:12px 0 8px; padding-bottom:5px}
.k-docbox .section-bar h3{font-size:13.5px}
.k-docbox .k-article{margin:10px 0 0}
.k-docbox .k-article h4{margin:0 0 4px; font-size:13px}
.k-docbox .k-clause{font-size:12.5px; line-height:1.7; padding-left:1.5em}
.k-docbox .k-clause>li{margin:0 0 3px}
.k-docbox .k-clause>li:not(.is-sub)::before{left:-1.5em}
.k-docbox .k-clause>li.is-sub{margin-left:-1.5em}
.k-docbox .k-subclause{font-size:12.5px; padding-left:1.5em}
.k-docbox .k-p{font-size:12.5px; margin:0 0 8px}
.k-docbox .k-table.is-legal td,.k-docbox .k-table.is-legal th{font-size:12px; padding:6px 8px}
.k-docbox .k-blank{padding:0 3px}
/* 브라우저 기본 막대는 숨기고 (겹침형이라 잘 안 보임) 양피지 색 막대를 직접 그립니다 — auth.js docbarSync */
.k-docbox{overflow-y:scroll; scrollbar-width:none}
.k-docbox::-webkit-scrollbar{width:0; height:0}
.k-docbar{position:absolute; top:7px; right:6px; bottom:7px; width:9px; border-radius:5px;
  background:#f0dcb4; box-shadow:inset 0 0 0 1px #7a553033; cursor:pointer}
.k-docbar[hidden]{display:none}
.k-docbar i{position:absolute; left:0; width:9px; border-radius:5px; background:#c19a5e;
  box-shadow:inset 0 0 0 1px #7a553055}
.k-docbar:hover i{background:#b3905c}
.k-consentnotes{margin:8px 0 2px; padding-left:1.2em; font-size:12.5px; line-height:1.75}
.k-consentnotes li{margin:0 0 3px}
.k-agree li.is-doc{padding-bottom:2px}

/* 맨 아래 사업자 정보 */
.sitefoot{width:92%; max-width:1720px; margin:26px auto 40px; padding:16px 22px 18px;
  border-top:1px solid #eccb7e26; border-radius:3px; background:#150d06b8;
  font-size:12px; line-height:1.9; color:#bda88c}
.sitefoot-links{display:flex; flex-wrap:wrap; gap:6px 18px; margin-bottom:10px}
.sitefoot-links a{color:#d5c0a0; text-decoration:none; font-size:12.5px}
.sitefoot-links a:hover{color:#edd3a6; text-decoration:underline; text-underline-offset:3px}
.sitefoot-links a.is-strong{font-weight:700; color:#edd3a6}
.sitefoot-biz{display:flex; flex-wrap:wrap; gap:2px 16px; margin:0}
.sitefoot-biz b{font-weight:400; color:#8a7458; margin-right:5px}
.sitefoot-copy{margin:9px 0 0; color:#8a7458}
.sitefoot .k-blank{background:#6b5731; color:#f0dcb4}
@media (max-width:850px){ .sitefoot{width:90%; margin-top:18px} }
.k-rating{display:inline-block; margin-right:8px; padding:1px 7px; border-radius:2px;
  font-size:11px; font-weight:700; color:#f7e4bd; background:#8a1c10; letter-spacing:.5px}

/* 탈퇴 · 찾기 (2026-09-23) */
.k-btn.is-danger{background:#8a1c10; border-color:#8a1c10}
.k-btn.is-danger:hover{background:#a02216}
/* .k-form label(display:grid) 보다 세게 — 네모와 글이 두 줄로 갈라지던 것 (2026-09-26) */
.k-form label.k-agreeone{display:flex; flex-direction:row; align-items:center; gap:9px; font-size:14px; color:#4b3520}
.k-form label.k-agreeone input{width:17px; height:17px; min-height:0; accent-color:#5a3017}
.k-authlinks a + a{margin-left:16px}
.k-answer{margin-top:8px; padding:8px 11px; background:#e9d3a840; border-left:3px solid #7a9a5a; border-radius:2px}
.k-answer b{display:block; font-size:12.5px; color:#4a7a2a}
.k-answer p{margin:3px 0 0}
.k-answer time{font-size:12px; color:#7a5a3a}
.k-refund{min-height:30px; padding:0 10px; font-size:12.5px}

/* 공지 목록 (2026-09-23) */
.k-table.is-notice th:first-child,.k-table.is-notice th:last-child{width:auto; text-align:left}
.k-table.is-notice td[data-label="올린 날"]{white-space:nowrap; color:#5b3f24; font-size:13px; text-align:right}
.k-noticeboard .section-bar{margin-top:30px}

/* 운영자 화면 (2026-09-23) */
.k-adminlist{list-style:none; margin:12px 0 0; padding:0; display:grid; gap:12px}
.k-adminlist li{padding:13px 15px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-adminwho{margin-left:auto; font-size:12.5px; color:#6b4a2b}
.k-adminbody{margin:8px 0 0; font-size:14px; line-height:1.7; color:#4b3520; white-space:pre-line}
.k-adminlist .k-form{margin-top:10px; grid-template-columns:1fr}
.k-adminlist textarea{min-height:80px}

/* 운영 화면 여섯 칸 (소유자 2026-09-25 "관리자페이지가 부족한 상태") */
.k-admin > .k-switch.is-seg{margin-bottom:14px}
/* ★ .k-stats 는 «캐릭터소개» 특성치 표(table)가 이미 쓰고 있다. 운영 현황 카드만 집는다. */
.k-admin dl.k-stats{display:grid; grid-template-columns:repeat(auto-fill, minmax(158px, 1fr));
  gap:10px; margin:2px 0 16px}
.k-statcard{padding:12px 14px; background:#fff3d54d; border:1px solid #7a553044; border-radius:3px}
.k-statcard dt{font-size:12.5px; color:#5b3f24}
.k-statcard dd{margin:4px 0 0; font-size:22px; font-weight:700; line-height:1.2; color:#3a2410;
  font-variant-numeric:tabular-nums}
.k-statcard small{display:block; margin-top:4px; font-size:12px; color:#7a5a3a}
.k-adminnote{margin:0 0 13px; padding:9px 12px; font-size:13.5px; color:#3d4a17;
  background:#8a9a4a20; border-left:3px solid #6b7a32; border-radius:2px}
.k-adminnote.is-bad{color:#861c10; background:#861c1014; border-left-color:#861c10}
.k-adminsearch{display:grid; grid-template-columns:1fr auto; align-items:center; gap:10px;
  margin-bottom:2px}
/* .k-form 의 label.is-wide · .k-formfoot 은 한 줄을 다 쓰게 되어 있어 되돌린다 */
.k-adminsearch label.is-wide{grid-column:auto}
.k-adminsearch .k-formfoot{grid-column:auto; margin:0; padding:0; border:0}
@media (max-width:560px){ .k-adminsearch{grid-template-columns:1fr} }
.k-adminnone{color:#8a6a4a}
.k-btn.k-mini{min-height:30px; padding:0 10px; font-size:12px}
.k-table.is-adminboard td{font-size:13px; vertical-align:middle}
.k-table.is-adminboard th{white-space:nowrap}
/* 날짜가 «2026-09- / 25 01:46» 처럼 갈라지지 않게 */
.k-table.is-adminboard td:first-child,
.k-table.is-adminboard td[data-label="가입"],
.k-table.is-adminboard td[data-label="마지막 로그인"],
.k-table.is-adminboard td[data-label="산 때"],
.k-table.is-adminboard td[data-label="올린 날"]{white-space:nowrap}
@media (max-width:720px){
  .k-admin dl.k-stats{grid-template-columns:repeat(auto-fill, minmax(138px, 1fr))}
  .k-statcard dd{font-size:19px}
}

.k-adminempty{color:#8a6a4a}
.k-admin .k-switch.is-seg.is-sub{margin:0 0 12px}
.k-admin .k-switch.is-seg.is-sub button{min-height:32px; padding:6px 14px; font-size:13px}

.k-adminwarn{margin:2px 0 10px; font-size:13px; color:#8a5a10}
.k-adminwarn[hidden]{display:none}

.k-dropnote{position:relative; padding-right:38px}
.k-dropclose{position:absolute; top:4px; right:6px; width:26px; height:26px; padding:0;
  border:0; background:none; color:#861c10; font-size:14px; line-height:1; cursor:pointer}
.k-dropclose:hover{color:#5a3017}
.k-dropclose:focus-visible{outline:2px solid #861c10; outline-offset:1px}

/* ── 관리자 모드 (2026-09-26) — 양피지를 화면 전체 폭으로, 왼쪽 카테고리 ─────────────── */
body.is-adminmode main{display:block; max-width:1720px; width:95%; margin:26px auto 30px}
body.is-adminmode .atmosphere, body.is-adminmode .tabs{display:none}
body.is-adminmode .paper-inner{padding-top:50px}
body.is-adminmode .parchment{min-height:680px}
.k-adminshell{display:grid; grid-template-columns:200px minmax(0,1fr); gap:0 28px; align-items:start}
.k-envbar{grid-column:1/-1; margin:0 0 16px; padding:9px 14px; font-size:13.5px; color:#4b3520;
  background:#fff3d54d; border-left:4px solid #7a5530}
.k-envbar.is-dev{border-left-color:#3d6a17; background:#3d6a1712}
.k-envbar.is-prod{border-left-color:#861c10; background:#861c101c; color:#5a140b}
.k-envbar.is-unknown{border-left-color:#8a6a10; background:#8a6a101a}
.k-envbar{display:flex; align-items:center; justify-content:space-between; gap:8px 16px; flex-wrap:wrap}
.k-envback{flex:none; padding:6px 12px; border:1px solid #5a301766; border-radius:3px; background:#fff3d599;
  color:#4b250a; font-size:13px; text-decoration:none; white-space:nowrap}
@media (hover:hover){.k-envback:hover{background:#5a3017; color:#f7e4bd}}
.k-envback:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-adminnav{display:flex; flex-direction:column; gap:2px; position:sticky; top:12px}
.k-adminnav-h{margin:14px 0 4px 4px; font-size:12px; letter-spacing:1px; color:#7a5a3a}
.k-adminnav-h:first-child{margin-top:0}
.k-adminnav button{display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:40px;
  padding:8px 12px; border:0; border-radius:3px; background:transparent; color:#4b250a; font-size:15px;
  text-align:left; cursor:pointer}
@media (hover:hover){.k-adminnav button:hover{background:#fff3d58c}
  .k-adminnav button[aria-current="page"]:hover{background:#5a3017}}
.k-adminnav button[aria-current="page"]{background:#5a3017; color:#f7e4bd}
.k-adminnav button:focus-visible{outline:2px solid #861c10; outline-offset:1px}
.k-soon{font-size:11px; padding:1px 6px; border-radius:8px; background:#7a553022; color:#7a5a3a; white-space:nowrap}
.k-adminnav button[aria-current="page"] .k-soon{background:#f7e4bd33; color:#f7e4bd}
.k-adminmain{min-width:0}
.k-adminmain-h{margin:0 0 12px; font-size:18px; color:#3a2410}
.k-adminsoon{padding:16px 18px; background:#fff3d54d; border:1px dashed #7a553066; border-radius:3px;
  font-size:14.5px; line-height:1.8; color:#4b3520}
.k-adminsoon p{margin:0 0 6px}
@media (max-width:850px){
  body.is-adminmode main{width:96%; margin-top:14px}
  body.is-adminmode .paper-inner{padding-top:40px}
  .k-adminshell{grid-template-columns:minmax(0,1fr)}
  .k-adminnav{flex-direction:row; flex-wrap:nowrap; overflow-x:auto; position:static; gap:4px;
    margin:0 0 14px; padding-bottom:6px; -webkit-overflow-scrolling:touch}
  .k-adminnav-h{display:none}
  .k-adminnav button{flex:none; white-space:nowrap; font-size:14px; border:1px solid #7a553044}
}

/* ── 관리 › 서버 (3단계 2026-09-26) ── */
.k-srvask{margin:14px 0; padding:14px 16px; background:#fff3d566; border:1px solid #861c1044; border-radius:3px}
.k-srvaskh{grid-column:1/-1; margin:0; font-size:14.5px; color:#4b250a}
.k-srvlog{margin:14px 0; border:1px solid #7a553044; border-radius:3px; background:#fff3d54d}
.k-srvlogh{display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0; padding:8px 12px;
  border-bottom:1px solid #7a553033; font-size:13.5px; color:#4b3520}
.k-srvlog pre, .k-srvsaid{margin:0; padding:10px 12px; max-height:360px; overflow:auto; white-space:pre-wrap; word-break:break-all;
  font:12.5px/1.55 Consolas,'D2Coding',monospace; color:#2e2012}
.k-srvsaid{margin:10px 0; max-height:180px; background:#fff3d54d; border:1px solid #7a553033; border-radius:3px}
.k-srvbar{display:flex; flex-wrap:wrap; gap:8px; margin:16px 0 10px}
.k-srvhealth{list-style:none; margin:0; padding:0; display:grid; gap:4px; font-size:14px; color:#3a2410}
.k-srvhealth li{padding:6px 10px; border-left:3px solid #7a553066; background:#fff3d540}
.k-srvhealth li.is-ok span{color:#3d6a17}
.k-srvhealth li.is-warn{border-left-color:#a87000}
.k-srvhealth li.is-warn span{color:#a87000}
.k-srvhealth li.is-bad{border-left-color:#861c10}
.k-srvhealth li.is-bad span{color:#861c10}

/* ── 내 정보 › 2단계 인증 (2026-09-26) ── */
.k-otpbox{margin:10px 0 18px; padding:14px 16px; background:#fff3d566; border:1px solid #7a553044; border-radius:3px;
  font-size:14.5px; line-height:1.8; color:#3a2410}
.k-otpbox p{margin:0 0 10px}
.k-otpqr{display:flex; justify-content:center; margin:6px 0 10px}
.k-otpqr svg{width:200px; height:200px; max-width:100%; background:#fffaf0; border:1px solid #7a553044}
.k-otpsecret{text-align:center; word-break:break-all}
.k-otpsecret code, .k-otpcodes code{font:600 15px/1.6 Consolas,'D2Coding',monospace; letter-spacing:1px; color:#2e2012}
.k-otpcodes{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:4px 18px; margin:6px 0 14px; padding-left:22px}
@media (max-width:460px){ .k-otpcodes{grid-template-columns:1fr} }

/* ── 개발계 접근 신청 (2026-09-26) ── */
.k-devaccess{margin:12px 0; padding:14px 16px; background:#fff3d566; border:1px solid #7a553044; border-radius:3px;
  font-size:14.5px; line-height:1.8; color:#3a2410}
.k-devaccess.is-ok{border-color:#6b7a3288}
.k-devaccess > p{margin:0 0 8px}
.k-devallowh{margin:18px 0 4px; font-size:15px; color:#3a2410}

/* ── 관리 › 공개 설정 (2026-09-26) ── */
.k-explist{list-style:none; margin:10px 0 12px; padding:0; display:grid; gap:4px; font-size:14px; color:#3a2410}
.k-explist li{padding:6px 10px; background:#fff3d540; border-left:3px solid #7a553044}
.k-exp{display:inline-block; width:1.2em; text-align:center}
.k-exp.is-ok{color:#3d6a17} .k-exp.is-no{color:#861c10} .k-exp.is-manual{color:#a87000}
