@charset "utf-8";
/* ----------------------------------------------------------------------------------------------
 *                 ORANGE-PMI PLATFORM  Version 2.0.0 - Last modified 2026-09-30
 *           Modular Web Architecture · Powered by Orangecommunication · www.oranc.net
 * ----------------------------------------------------------------------------------------------
 * basic 게시판 스킨의 **제 모양** — 이 스킨만 쓰는 규칙 한 벌.
 *
 * bbs.css (skin/bbs/basic/asset) — 이 스킨의 진입 화면들이 `asset_head('skin::bbs.css')` 로 건다.
 *   셸의 `<head>` 가 공통 여섯 장 **뒤**에 낸다 → global-template "그 화면에만 필요한 CSS".
 *   `asset_head()` 는 URL 을 키로 접으므로 여러 화면이 불러도 `<link>` 는 한 줄이다.
 *
 *   ── 왜 이 파일이 있나 (사용자 결정 2026-09-30) ──────────────────────────────
 *   게시판 모양 하나 고치자고 **사이트 여섯 장을 건드릴 수는 없다.** 여섯 장은 70여 화면이 같이 읽는다
 *   (실제로 `l-actions` 는 54곳이 써서 못 고치고 변형을 따로 만들어야 했다).
 *   게시판은 **스킨마다 모양이 달라질 수 있는 것**이라, 그 규칙은 스킨이 들고 있는 편이 맞다.
 *
 *   ── 접두 — 이름만 보고 주인을 안다 ─────────────────────────────────────────
 *     `sk-`  이 스킨의 컴포넌트   (sk-doc__* · sk-tabs · sk-search)
 *     `sk-`  이 스킨의 유틸리티   (sk-actions-flush · sk-schd)
 *     `c-` `l-` `u-` `is-` 는 **사이트 것**이다 — 여기서 새로 만들지 않는다.
 *
 *   ── 담지 않는 것 ───────────────────────────────────────────────────────────
 *     ✗ 사이트 전체가 쓰는 것        c-btn(74곳) · c-table(64곳) · c-modal · c-input · l-actions(54곳) · u-*
 *     ✗ **공용 함수가 마크업을 내는 것**  c-attach*·c-ico(attach_links) · c-paging(paging_nav)
 *        — 그 함수는 자기가 어느 스킨에서 불렸는지 모른다. 스킨마다 다른 class 를 내게 하면 공용인 뜻을 잃는다.
 *     즉 **스킨이 제 손으로 쓴 마크업**만 여기 온다. 그 선이 이 파일의 경계다.
 *
 *   ⛔ **색·크기를 숫자로 박지 않는다** — 토큰(`var(--…)`)만 읽는다. 박으면 이 스킨이 어느 사이트에서
 *     열리든 같은 모양이 되어, 사이트가 제 색을 못 낸다 (gallery/asset/style.css 와 같은 규칙).
 *
 *   ※ 2026-09-30 현재 `c-doc__*` 와 `c-tabs` 는 **사이트 ui.css 에도 남아 있다** — basic_multi·gallery·
 *     download02 가 아직 그 이름을 쓰기 때문이다. 셋을 다 옮기면 그때 사이트 쪽에서 지운다.
 * ---------------------------------------------------------------------------------------------- */

/*  머리 — 제목과 메타를 한 덩어리로 감싼다. 위는 굵게, 아래는 가늘게 그어 글의 시작을 만든다.  */
.sk-doc__head				{text-align:center; padding:25px 0; border-top:2px solid var(--color-ink); border-bottom:1px solid var(--border-color-cell);}
.sk-doc__title				{font-size:1.5em; line-height:140%; font-weight:bold; letter-spacing:-1px;}
/*  메타 한 줄 — 작성자 · 날짜 · 조회. 각 조각을 <span> 으로 두면 **사이 구분선을 CSS 가 낸다**
    (마크업에 `|` 를 적지 않는다 — 조각이 늘거나 줄어도 선이 저절로 맞는다).
    마지막 조각의 선은 지운다 — 안 지우면 줄 끝에 선이 하나 남는다.  */
.sk-doc__meta				{padding:15px 0 0 0; font-size:0.9em; color:var(--color-mute);}
.sk-doc__meta span			{position:relative; padding-right:23px;}
.sk-doc__meta span::after	{content:''; position:absolute; top:0; right:12px; bottom:0; width:1px; height:1em; margin:auto; background:var(--border-color);}
.sk-doc__meta span:last-child		{padding-right:0;}
.sk-doc__meta span:last-child::after	{display:none;}

/*  본문 — 글이 짧아도 읽는 자리가 있도록 최소 높이를 준다.
    ★ 안의 이미지는 **칸을 넘지 않는다** — 에디터로 넣은 큰 사진이 그대로 들어와 레이아웃을 밀어내는
      일이 흔하다. 높이는 비율대로 따라간다.  */
.sk-doc__body				{overflow:hidden; padding:40px 0; min-height:300px; border-bottom:1px solid var(--color-ink);}
/*  ★ 좌우 여백은 **글 안의 어느 블록도 제 몫으로 갖지 않는다** (2026-09-30 사용자 지시
      "게시글 안쪽의 모든 컨텐츠는 동일한 틀에 쌓여야 넓이가 다 같아진다").
    전에는 머리와 본문만 좌우 10px 을 갖고 있어 **제목·본문 921 / 이전다음·버튼 941** 로 20px 어긋나 있었다.
    바깥 틀(`c-panel`)이 자리를 정하고, 안쪽은 전부 그 폭을 그대로 쓴다. 상자 꼴인 것(첨부 `c-attach`,
    이전다음 `sk-pnav__inner`)의 안쪽 여백은 **그 상자 것**이라 별개다 — 바깥 선이 941 로 같으면 맞는 것이다.  */
.sk-doc__body img			{max-width:100%; height:auto;}
/*  ★ 에디터가 박아 둔 **고정 px 폭은 무시한다** (2026-09-30 사용자 지시 "원본이 큰 것은 이 안에서 100%").
    서머노트는 손잡이로 크기를 잡으면 `style="width:1078.67px"` 처럼 **그때의 에디터 폭**을 글에 박는다.
    본문 칸은 화면마다 넓이가 다르므로 그 수는 여기서 늘 틀리다 — 칸이 넓으면 오른쪽이 남고, 좁으면 어차피
    위 `max-width` 가 줄인다. 그래서 px 로 적힌 폭만 `auto` 로 되돌리고 **원본 크기**를 기준으로 삼는다:
      원본이 칸보다 크면  → `max-width:100%` 가 칸에 꽉 맞춘다
      원본이 칸보다 작으면 → 원본 크기 그대로 (작은 그림을 늘려 뭉개지 않는다)
    ✗ `%` 로 적힌 폭은 **건드리지 않는다** — 그건 글쓴이가 '이만큼만' 이라고 **비율로** 정한 뜻이라 화면이 바뀌어도 맞다.
    ⚠ 인라인 style 을 이기려면 `!important` 말고는 없다 — 이 한 줄이 이 파일에서 그것을 쓰는 유일한 자리다.  */
.sk-doc__body img[style*="px"]	{width:auto !important;}
/*  본문 위 유튜브 — 칸 폭을 다 쓰되 **비율은 지킨다**(16:9).
    마크업의 width=560 height=315 는 남겨 둔다 — `aspect-ratio` 를 모르는 브라우저에서 그 둘이 비율을 알려
    `height:auto` 가 같은 결과를 낸다. 즉 규칙 한 줄이 두 겹으로 선다.  */
.sk-doc__video				{display:block; width:100%; height:auto; aspect-ratio:16 / 9; border:0;}

/*  이전글 / 다음글 — **좌우 두 칸**이 맞붙은 한 덩어리다(레거시 `.pn_wrap`). 표가 아니다.
    ★ 어느 쪽인지는 **차례로** 정한다(`:first-child`·`:last-child`) — 마크업에 prev·next class 를 두지 않는다.
      이전글이 첫째, 다음글이 둘째라는 것은 이 컴포넌트의 약속이다.
    ★ 동그라미와 화살표는 **CSS 도형**이다 — 이미지 파일을 쓰지 않는다(레거시도 그랬다).
    ※ 글이 없는 쪽은 <a> 가 아니라 <div> 라 커서가 안 바뀐다 — 마크업이 그렇게 낸다.  */
/*  ✗ 위 여백을 여기서 갖지 않는다 — 블록 사이 간격은 스킨의 `u-gap`(40px) **한 곳**이 낸다.
    2026-09-30 까지 `padding-top:30px` 을 갖고 있어 첨부 뒤에서 40+30 = **70px** 으로 벌어졌다(사용자 지적).  */
.sk-pnav					{display:flex; margin:0; list-style:none;}
.sk-pnav > li			{position:relative; flex:1; min-width:0;}
.sk-pnav__inner			{display:flex; flex-direction:column; justify-content:center; height:90px; padding:0 20px;
							 border:1px solid var(--border-color);  color:inherit; text-decoration:none;}
.sk-pnav > li:first-child .sk-pnav__inner	{padding-left:90px; border-right-width:0; border-radius:0.7em 0 0 0.7em;}
.sk-pnav > li:last-child .sk-pnav__inner	{padding-right:90px; border-radius:0 0.7em 0.7em 0; text-align:right; align-items:flex-end;}
/*  동그라미 바탕 */
.sk-pnav > li::before	{content:''; position:absolute; top:50%; transform:translateY(-50%);
							 width:50px; height:50px; border-radius:100%; background:var(--bg-label);}
.sk-pnav > li:first-child::before	{left:20px;}
.sk-pnav > li:last-child::before		{right:20px;}
/*  그 위의 꺾쇠 — **KRDS 아이콘**(`ico_angle.svg`, 아래 방향)을 돌려 쓴다. 페이지네이션(`c-paging__btn`)과 같은 그림·같은 방법이다.
    2026-09-30 까지는 정사각형의 두 변만 남겨 돌린 CSS 도형이었다(사용자 지시로 표준 아이콘으로 교체).
    ⚠ **자리는 `:first-child`·`:last-child` 양쪽에 같이 적는다** — 한쪽만 적으면 명시도가 낮은 공통 규칙이
      그것을 못 덮는다. 실제로 그랬다: 좁은 화면 규칙이 `li::after` 였는데 `li:last-child::after {right:42px}` 가
      이겨 `left` 와 `right` 가 **둘 다** 걸리고, 그래서 오른쪽 꺾쇠만 폭 275px 로 늘어나 삐져나왔다.
    자리 계산 = 동그라미 왼(오른)쪽 + (동그라미 - 아이콘) / 2 — 50 원 안의 20 아이콘이면 20 + 15 = 35.  */
.sk-pnav > li::after		{content:''; position:absolute; top:50%; width:20px; height:20px; margin-top:-10px;
							 background-color:var(--color-mute);
							 -webkit-mask:url(img/ico_angle.svg) no-repeat center / contain;
							 mask:url(img/ico_angle.svg) no-repeat center / contain;}
.sk-pnav > li:first-child::after	{left:35px; right:auto; transform:rotate(90deg);}
.sk-pnav > li:last-child::after	{left:auto; right:35px; transform:rotate(-90deg);}
.sk-pnav__tit			{display:block; padding-bottom:5px; font-weight:700; color:var(--color-ink);}
/*  제목은 **한 줄**까지만 — 길어도 칸 높이가 흔들리지 않는다 */
.sk-pnav__txt			{margin:0; overflow:hidden; text-overflow:ellipsis; line-height:1.3; color:var(--color-mute);
							 display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical;}
.sk-pnav__inner:hover .sk-pnav__txt	{text-decoration:underline;}
@media screen and (max-width:580px) {
	/*  좁아도 **위아래로 쌓지 않는다** — 좌우 두 칸 그대로 두고, 제목은 칸 안에서 `…` 로 줄인다
	    (사용자 지시 2026-09-30). 쌓으면 두 줄이 되어 세로로 길어진다.
	    자르는 일은 위 `.sk-pnav__txt` 의 `line-clamp:1` 이 이미 한다 — 여기서는 **칸을 좁히기만** 하면 된다
	    (`> li` 에 `min-width:0` 이 있어 flex 칸이 글자보다 작아질 수 있다. 그게 없으면 안 줄어든다).
	    ⚠ 자리는 `:first-child`·`:last-child` **양쪽에** 적는다 — 위 절의 같은 경고 참고(한쪽만 적으면 못 덮는다).
	    칸 = 여백 10 + 동그라미 36 + 여백 8 = 54. 꺾쇠는 그 안에서 10 + (36-20)/2 = 18.  */
	.sk-pnav__inner		{height:70px; padding:0 10px;}
	.sk-pnav > li:first-child .sk-pnav__inner	{padding-left:54px;}
	.sk-pnav > li:last-child .sk-pnav__inner	{padding-right:54px;}
	.sk-pnav > li::before	{width:36px; height:36px;}
	.sk-pnav > li:first-child::before	{left:10px; right:auto;}
	.sk-pnav > li:last-child::before	{left:auto; right:10px;}
	.sk-pnav > li:first-child::after	{left:18px; right:auto;}
	.sk-pnav > li:last-child::after	{left:auto; right:18px;}
}

/*  글에 딸린 구역의 머리 — 지금은 댓글 수 한 줄이다(레거시 `.replyinfo .count`).
    ✗ `c-panel__title` 을 쓰지 않는다 — 관리 화면의 묶음 머리라 파란 고리가 붙는다(글 제목과 같은 사정).  */
.sk-doc__subhead				{margin:0; padding:0 0 15px; border-bottom:1px solid var(--border-color); font-family:inherit; font-size:0.9em; font-weight:400; line-height:inherit; color:var(--color-mute); position:static;}   /* 2026-09-29 부터 h3 다(KRDS 문서 구조) — 이 사이트 layout.css 의 h3 태그 규칙(Paperlogy · 2.8em · 아래 50px)을 여기서 되돌린다 */
.sk-doc__subhead b			{color:var(--color-ink); font-weight:500;}
/*  도구줄(`l-toolbar--line`) 안에서는 **제 밑선을 뺀다** — 줄이 이미 선을 긋는다.
    ⚠ 사이트 layout.css 에도 같은 규칙이 `c-doc__subhead` 이름으로 있다(아직 그 이름을 쓰는 스킨용).
      이름을 갈면 **짝 규칙도 같이 따라와야** 한다 — 안 따라오면 댓글 머리에 선이 둘 그어진다(2026-09-30 실측).  */
.l-toolbar--line > .sk-doc__subhead	{padding:0; border:0;}

/* ══════════════════════════════════════════════════════════════════════════════════════════════
   분류 탭  —  c-tabs                                                                (2026-09-29 KRDS)
   ══════════════════════════════════════════════════════════════════════════════════════════════

   목록 위 분류 필터(전체 / 분류1 / …). KRDS 라인형 탭의 꼴 — 아래 선 위에 서고, 고른 것은 **굵은 글자 + 두꺼운 밑선**
   (색만으로 가르지 않는다 — KRDS 탭 "색상 외 시각적 단서"). 높이·글자·밑선은 KRDS 탭 값(48 · 17px 700 · 4px · 최소폭 64 · 사이 8).
   페이지를 옮기는 **링크**라 role=tablist 가 아니라 `<nav aria-label> + <ul>` 이고, 지금 것은 href 없는
   `<a aria-current="page">` 다(skin/bbs/basic/list.php). 예전에는 채움 버튼(c-btn--fill)이었다 — 주 버튼이 화면에 둘이 되어 바꿨다.  */
.sk-tabs						{margin:0 0 20px; border-bottom:1px solid var(--border-color-cell);}
.sk-tabs > ul				{display:flex; flex-wrap:wrap; gap:0 8px; margin:0; padding:0; list-style:none;}
.sk-tabs__item				{position:relative; display:inline-flex; align-items:center; justify-content:center; min-width:64px; height:48px; padding:0 4px; margin-bottom:-1px;
							 color:var(--color-ink); font-weight:700; text-decoration:none; white-space:nowrap;}
.sk-tabs__item::before		{content:''; position:absolute; left:0; right:0; bottom:0; height:4px; background:transparent;}
.sk-tabs__item:hover			{color:var(--color-primary-ink); text-decoration:none;}
.sk-tabs__item[aria-current]	{color:var(--color-primary-ink); cursor:default;}
.sk-tabs__item[aria-current]::before	{background:var(--color-primary);}
/*  게시예정 글의 제목 — 취소선 (사용자 지시 2026-09-30, list.php).
    게시 시각 전이라 **아직 없는 글**이라는 표시다. No 칸의 "예정" 배지와 짝이고, 둘 다 관리자에게만 보인다.
    hover 에서도 취소선을 지키되 밑줄은 같이 긋는다 — 링크라는 것은 그대로 알려야 한다.
    ⚠ **선택자에 `a` 를 붙여야 한다** — layout.css 의 `a:link, a:visited, a:hover, …{text-decoration:none}` 이
      명시도 (0,1,1) 이라 class 하나(0,1,0)로는 진다. 실제로 그래서 한 번 안 먹었다(2026-09-30 실측).  */
a.sk-schd					{text-decoration-line:line-through;}
a.sk-schd:hover				{text-decoration-line:line-through underline;}
