/* ────────────────────────────────────────────────────────────────────────
   딱따고기연구소 게시판 스킨 — board.ddgg.css
   원본: 딱따고기연구소 (DDGG Lab), GPL v2
   야간비행 커스텀: 색상/폰트 토큰을 nightflight 디자인 시스템(nightflight-v2.css)에 연결.
   구조/레이아웃 CSS는 원본 그대로 유지.
   ──────────────────────────────────────────────────────────────────────── */

.ddgg-board {
	--ddgg-bg:var(--bg-raised); --ddgg-surface:var(--bg); --ddgg-surface-2:var(--card-hover); --ddgg-surface-3:var(--hairline);
	--ddgg-border:var(--hairline); --ddgg-border-strong:var(--control-border);
	--ddgg-text:var(--ink); --ddgg-text-muted:var(--ink-soft); --ddgg-text-subtle:var(--muted); --ddgg-text-faint:var(--hairline);
	--ddgg-accent:var(--brand-solid); --ddgg-accent-hover:var(--brand-solid-hover); --ddgg-accent-soft:var(--indigo-soft); --ddgg-accent-soft-2:var(--indigo-soft); --ddgg-accent-text:var(--indigo);
	--ddgg-success:#3FA34D;
	--ddgg-font-sans:'Pretendard','Noto Sans KR',ui-sans-serif,system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;
	--ddgg-font-mono:'IBM Plex Mono',"Fira Code",ui-monospace,"SF Mono",monospace;
	--ddgg-r-xs:4px; --ddgg-r-sm:6px; --ddgg-r-md:var(--radius); --ddgg-r-lg:8px; --ddgg-r-xl:12px; --ddgg-r-pill:999px;
	--ddgg-sh-xs:0 1px 2px rgba(15,15,20,.04);
	--ddgg-sh-sm:0 1px 2px rgba(15,15,20,.05),0 1px 3px rgba(15,15,20,.04);
	--ddgg-sh-md:0 4px 12px rgba(15,15,20,.06),0 2px 4px rgba(15,15,20,.04);
	--ddgg-sh-focus:0 0 0 3px rgba(76,95,213,.22);

	color: var(--ddgg-text);
	font-family: var(--ddgg-font-sans);
	font-size: 14px;
	line-height: 1.5;
	letter-spacing: -0.005em;
	-webkit-font-smoothing: antialiased;
}
.ddgg-board { min-width: 0; max-width: 100%; }
.ddgg-board * { box-sizing: border-box; }
.ddgg-board .ddgg-list { max-width: 100%; }
.ddgg-board a { color: inherit; text-decoration: none; }
.ddgg-board img { max-width: 100%; }

/* ── Primitives ───────────────────────────────────────────────────────── */
.ddgg-board .btn {
	display:inline-flex; align-items:center; justify-content:center; gap:6px;
	padding:5px 14px !important; height:unset !important; border-radius:var(--ddgg-r-md); border:1px solid transparent;
	font-size:13px; font-weight:600; color:var(--ddgg-text); cursor:pointer;
	font-family:inherit; transition:background .15s,border-color .15s,color .15s,transform .05s; white-space:nowrap;
	/* NIGHTFLIGHT CUSTOM: 라이믹스 코어(rhymix.scss)의 .btn 클래스에 흰색 text-shadow가 있어 텍스트가 이중으로 번져 보이는 문제 방지 */
	text-shadow: none;
}
.ddgg-board .btn:active { transform:translateY(1px); }
.ddgg-board .btn-icon { padding:0 8px !important; min-width:0 !important; gap:0 !important; height:36px !important; }
.ddgg-board .btn-primary { background:var(--ddgg-accent); color:#fff; }
.ddgg-board .btn-primary:hover { background:var(--ddgg-accent-hover); color:#fff; }
/* NIGHTFLIGHT CUSTOM: 라이믹스 코어(rhymix.scss)의 .btn>span 전역 리셋(#333)이 버튼 라벨을 덮어써서 명시적으로 재정의 */
.ddgg-board .btn > .btn-label { color: inherit !important; }
.ddgg-board .btn-secondary { background:var(--ddgg-text); color:#fff; }
.ddgg-board .btn-secondary:hover { background:#27272a; color:#fff; }
.ddgg-board .btn-ghost { background:transparent; }
.ddgg-board .btn-ghost:hover { background:var(--ddgg-surface-2); }
.ddgg-board .btn-outline { background:var(--ddgg-bg); border-color:var(--ddgg-border-strong); }
.ddgg-board .btn-outline:hover { background:var(--ddgg-surface-2); }

.ddgg-board .chip {
	display:inline-flex; align-items:center; gap:6px; height:28px; padding:0 10px;
	border-radius:var(--ddgg-r-pill); background:var(--ddgg-bg); border:1px solid var(--ddgg-border);
	color:var(--ddgg-text-muted); font-size:12.5px; font-weight:500;
	transition:background .12s,color .12s,border-color .12s;
}
.ddgg-board .chip:hover { background:var(--ddgg-surface-2); color:var(--ddgg-text); }
.ddgg-board .chip.active { background:var(--ddgg-text); color:var(--bg); border-color:var(--ddgg-text); }

.ddgg-board .cat-tag {
	display:inline-flex; align-items:center; height:22px; padding:0 8px; width:fit-content; max-width:100%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; /* NIGHTFLIGHT CUSTOM */
	background:var(--ddgg-surface-2); color:var(--ddgg-text-muted);
	border-radius:var(--ddgg-r-xs); font-size:11.5px; font-weight:600;
}
.ddgg-board .cat-tag.c1 { background:#ecfdf5; color:#047857; }
.ddgg-board .cat-tag.c2 { background:#eef2ff; color:#4338ca; }
.ddgg-board .cat-tag.c3 { background:var(--ddgg-accent-soft); color:var(--ddgg-accent-text); }
.ddgg-board .cat-tag.c4 { background:#fdf4ff; color:#a21caf; }
.ddgg-board .cat-tag.c5 { background:#ecfeff; color:#0e7490; }
.ddgg-board .cat-tag.notice { background:#18181b; color:#fff; }

.ddgg-board .badge-hot { display:inline-flex; align-items:center; height:18px; padding:0 5px; background:var(--ddgg-accent); color:#fff; border-radius:3px; font-size:10px; font-weight:700; letter-spacing:.04em; }
.ddgg-board .badge-new { display:inline-flex; align-items:center; height:18px; padding:0 5px; background:var(--ddgg-success); color:#fff; border-radius:3px; font-size:10px; font-weight:700; letter-spacing:.04em; }
.ddgg-board .badge-pin { display:inline-flex; color:var(--ddgg-accent); }

.ddgg-board .avatar {
	width:22px; height:22px; border-radius:50%; flex-shrink:0; object-fit:cover;
	background:linear-gradient(135deg,var(--indigo-soft),var(--brand-solid)); color:#fff;
	display:grid; place-items:center; font-size:10px; font-weight:700;
}
.ddgg-board .ddgg-input {
	height:36px; padding:0 12px; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md);
	font-size:13px; font-family:inherit; outline:none; background:var(--ddgg-bg); color:var(--ddgg-text);
}
.ddgg-board .ddgg-input:focus { border-color:var(--ddgg-border-strong); box-shadow:var(--ddgg-sh-focus); }

.ddgg-board .thumb-ph { position:absolute; inset:0; display:grid; place-items:center; background:linear-gradient(135deg,var(--ddgg-surface-2),var(--ddgg-surface-3)); color:var(--ddgg-text-subtle); font-family:var(--ddgg-font-mono); font-size:11px; font-weight:600; letter-spacing:.05em; }
.ddgg-board .thumb-ph::before { content:''; position:absolute; inset:0; background-image:linear-gradient(45deg,rgba(255,255,255,.5) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.5) 25%,transparent 25%); background-size:16px 16px; background-position:0 0,0 8px; opacity:.35; }
.ddgg-board .thumb-ph > span { position:relative; z-index:1; padding:3px 8px; background:rgba(255,255,255,.7); border-radius:4px; max-width:80%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ddgg-board .thumb-c1 { background:linear-gradient(135deg,#ffedd5,#fdba74); color:#9a3412; }
.ddgg-board .thumb-c2 { background:linear-gradient(135deg,#dbeafe,#93c5fd); color:#1e40af; }
.ddgg-board .thumb-c3 { background:linear-gradient(135deg,#d1fae5,#6ee7b7); color:#065f46; }
.ddgg-board .thumb-c4 { background:linear-gradient(135deg,#ede9fe,#c4b5fd); color:#5b21b6; }
.ddgg-board .thumb-c5 { background:linear-gradient(135deg,#fce7f3,#f9a8d4); color:#9d174d; }
.ddgg-board .thumb-c6 { background:linear-gradient(135deg,#e2e8f0,#94a3b8); color:#1e293b; }
.ddgg-board .thumb-c7 { background:linear-gradient(135deg,#fef3c7,#fcd34d); color:#92400e; }

/* ── Breadcrumb / page header ─────────────────────────────────────────── */
.ddgg-board .bc { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:12.5px; color:var(--ddgg-text-muted); margin-bottom:18px; }
.ddgg-board .bc a:hover { color:var(--ddgg-text); }
.ddgg-board .bc .sep { color:var(--ddgg-text-faint); }
.ddgg-board .bc .current { color:var(--ddgg-text); font-weight:600; }

.ddgg-board .ph { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-top:9px; margin-bottom:20px; flex-wrap:wrap; }
.ddgg-board .ph-h1 { font-size:26px; font-weight:700; letter-spacing:-0.02em; margin:0; }
.ddgg-board .ph-h1 img { max-height:40px; width:auto; }
.ddgg-board .ph-desc { color:var(--ddgg-text-muted); font-size:13.5px; margin:6px 0 0; }
.ddgg-board .ph-meta { display:flex; gap:16px; margin-top:8px; color:var(--ddgg-text-subtle); font-size:12.5px; }
.ddgg-board .ph-meta b { color:var(--ddgg-text); font-weight:600; }
.ddgg-board .ph > div:first-child { min-width:0; flex:1 1 auto; }
.ddgg-board .ph-actions { display:flex; gap:8px; flex-wrap:wrap; flex-shrink:0; }

/* ── Toolbar ──────────────────────────────────────────────────────────── */
.ddgg-board .toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 12px; background:var(--ddgg-surface); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); margin-bottom:16px; }
.ddgg-board .toolbar .left { display:flex; gap:6px; align-items:center; flex-wrap:nowrap; min-width:0; }
.ddgg-board .toolbar .cate-count { font-size:12px; color:var(--ddgg-text-subtle); white-space:nowrap; }
.ddgg-board .toolbar .right { display:flex; gap:6px; align-items:center; margin-left:auto; flex:0 0 auto; height:32px; }
@media (max-width:880px){
  .ddgg-board .toolbar { flex-wrap:wrap; align-items:center; }
  .ddgg-board .toolbar .right { width:auto; flex:1 1 100%; min-width:0; margin-left:0; height:auto; }
  .ddgg-board .toolbar-search { width:auto; flex:1 1 auto; min-width:0; }
}
.ddgg-board .tb-divider { width:1px; height:18px; background:var(--ddgg-border); margin:0 4px; }
.ddgg-board .ddgg-sort { appearance:none; -webkit-appearance:none; padding-right:26px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2352525b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 9px center; cursor:pointer; }
.ddgg-board .ddgg-cate-select { appearance:none; -webkit-appearance:none; padding-right:26px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2352525b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 9px center; cursor:pointer; } /* NIGHTFLIGHT CUSTOM: ddgg-sort와 화살표 스타일 통일 */
.ddgg-board .toolbar-search { display:flex; align-items:center; gap:6px; height:32px; padding:0 10px; background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md); width:220px; color:var(--ddgg-text-subtle); }
.ddgg-board .toolbar-search:focus-within { border-color:var(--ddgg-border-strong); box-shadow:var(--ddgg-sh-focus); }
.ddgg-board .toolbar-search input { border:0; outline:none; flex:1; min-width:0; background:transparent; font-size:13px; font-family:inherit; color:var(--ddgg-text); }
.ddgg-board .seg { display:inline-flex; padding:2px; background:var(--ddgg-surface-2); border-radius:var(--ddgg-r-md); }
.ddgg-board .seg a { height:28px; padding:0 9px; display:inline-flex; align-items:center; gap:5px; border-radius:6px; color:var(--ddgg-text-muted); font-size:12.5px; font-weight:600; }
.ddgg-board .seg a.active { background:var(--ddgg-bg); color:var(--ddgg-text); box-shadow:var(--ddgg-sh-xs); }

/* ── Empty ────────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-empty { padding:64px 16px; text-align:center; color:var(--ddgg-text-subtle); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); background:var(--ddgg-bg); font-size:14px; }

/* ── 목록형 ───────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-list { border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); background:var(--ddgg-bg); overflow:hidden; }
.ddgg-board .ddgg-list .list-head,
.ddgg-board .ddgg-list .list-row { display:grid; grid-template-columns: var(--ddgg-cols, 96px minmax(0,1fr) 96px 56px 52px 56px); gap:12px; align-items:center; }
.ddgg-board .ddgg-list .list-head { padding:10px 16px; background:var(--ddgg-surface); border-bottom:1px solid var(--ddgg-border); font-size:11.5px; font-weight:700; color:var(--ddgg-text-subtle); letter-spacing:.04em; }
.ddgg-board .ddgg-list .list-head .col-vote, .ddgg-board .ddgg-list .list-head .col-view { text-align:right; }
.ddgg-board .ddgg-list .list-row { padding:12px 16px; border-bottom:1px solid var(--ddgg-border); transition:background .12s; position:relative; }
.ddgg-board .ddgg-list .list-row-link { position:absolute; inset:0; z-index:1; grid-column:1/-1; grid-row:1/-1; }
/* NIGHTFLIGHT CUSTOM: 관리자 전용 '글 관리' 체크박스 열 - 라이믹스 코어 카트(cart) 메커니즘과 연동.
   list-row-link(전체 오버레이 링크, z-index:1)보다 위에 있어야 클릭 가능하므로 z-index:2 부여 */
.ddgg-board .ddgg-list .col-check { position:relative; z-index:2; display:flex; align-items:center; justify-content:center; }
.ddgg-board .ddgg-list .list-head .col-check { display:flex; align-items:center; justify-content:center; }
.ddgg-board .ddgg-list .comments,
.ddgg-board .ddgg-list .row-m-comments { position:relative; z-index:2; }
.ddgg-board .ddgg-list .list-row:last-child { border-bottom:0; }
.ddgg-board .ddgg-list .list-row:hover { background:var(--ddgg-surface); }
.ddgg-board .ddgg-list .title-cell { display:flex; align-items:center; gap:8px; min-width:0; overflow:hidden; }
.ddgg-board .ddgg-list .title-cell > :not(.title) { flex-shrink:0; }
.ddgg-board .ddgg-list .title { font-size:14px; font-weight:500; color:var(--ddgg-text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ddgg-board .ddgg-list .title.notice { font-weight:700; }
.ddgg-board .ddgg-list .list-row:hover .title { color:var(--ddgg-accent); }
.ddgg-board .ddgg-list .is-notice { background:var(--ddgg-accent-soft); }
.ddgg-board .ddgg-list .comments { font-family:var(--ddgg-font-mono); font-size:11.5px; font-weight:600; color:var(--ddgg-accent); flex-shrink:0; }
.ddgg-board .ddgg-list .author { font-size:12.5px; color:var(--ddgg-text-muted); display:flex; gap:6px; align-items:center; min-width:0; overflow:hidden; }
.ddgg-board .ddgg-list .author span:last-child { min-width:0; flex:0 1 auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ddgg-board .ddgg-list .author .avatar { width:20px; height:20px; flex-shrink:0; }
.ddgg-board .ddgg-list .date, .ddgg-board .ddgg-list .num, .ddgg-board .ddgg-list .views { font-size:12px; color:var(--ddgg-text-subtle); font-variant-numeric:tabular-nums; }
.ddgg-board .ddgg-list .row-m-meta { display:none; }
.ddgg-board .ddgg-list .num, .ddgg-board .ddgg-list .views { text-align:right; }

/* ── 웹진형 ───────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-zine { display:flex; flex-direction:column; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); background:var(--ddgg-bg); overflow:hidden; }
.ddgg-board .zine-item { display:grid; grid-template-columns:180px minmax(0,1fr); gap:20px; padding:18px; border-bottom:1px solid var(--ddgg-border); transition:background .12s; }
.ddgg-board .zine-item:last-child { border-bottom:0; }
.ddgg-board .zine-item:hover { background:var(--ddgg-surface); }
.ddgg-board .zine-thumb { position:relative; width:100%; height:120px; border-radius:var(--ddgg-r-md); background:var(--ddgg-surface-2); overflow:hidden; }
.ddgg-board .zine-thumb img { width:100%; height:100%; object-fit:cover; }
.ddgg-board .zine-body { min-width:0; display:flex; flex-direction:column; gap:6px; }
.ddgg-board .zine-tags { display:flex; gap:6px; align-items:center; }
.ddgg-board .zine-title { font-size:17px; font-weight:700; letter-spacing:-0.015em; color:var(--ddgg-text); }
.ddgg-board .zine-item:hover .zine-title { color:var(--ddgg-accent); }
.ddgg-board .zine-intro { font-size:13px; color:var(--ddgg-text-muted); line-height:1.5; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ddgg-board .zine-excerpt { font-size:13px; color:var(--ddgg-text-muted); line-height:1.55; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ddgg-board .zine-meta { display:flex; gap:14px; color:var(--ddgg-text-subtle); font-size:12px; margin-top:4px; flex-wrap:wrap; }
.ddgg-board .zine-meta .author { color:var(--ddgg-text-muted); font-weight:500; }
.ddgg-board .zine-stats { display:flex; flex-direction:column; align-items:flex-end; gap:8px; color:var(--ddgg-text-subtle); font-size:12px; white-space:nowrap; }
.ddgg-board .zine-stats .big { font-size:18px; font-weight:700; color:var(--ddgg-accent); font-family:var(--ddgg-font-mono); text-align:right; }
.ddgg-board .zine-stats .lbl { text-align:right; }
.ddgg-board .zine-stats .like { display:inline-flex; gap:3px; align-items:center; }

/* ── 갤러리형 ─────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-gallery { display:grid; gap:16px; }
.ddgg-board .ddgg-gallery.cols-2 { grid-template-columns:repeat(2,1fr); }
.ddgg-board .ddgg-gallery.cols-3 { grid-template-columns:repeat(3,1fr); }
.ddgg-board .ddgg-gallery.cols-4 { grid-template-columns:repeat(4,1fr); }
.ddgg-board .card { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); overflow:hidden; display:flex; flex-direction:column; transition:transform .15s,box-shadow .15s,border-color .15s; }
.ddgg-board .card:hover { transform:translateY(-2px); box-shadow:var(--ddgg-sh-md); border-color:var(--ddgg-border-strong); }
.ddgg-board .card-thumb { position:relative; aspect-ratio:16/10; background:var(--ddgg-surface-2); overflow:hidden; }
.ddgg-board .card-thumb img { width:100%; height:100%; object-fit:cover; }
.ddgg-board .card-thumb .ribbon { position:absolute; top:10px; left:10px; display:flex; gap:4px; }
.ddgg-board .card-body { padding:14px 16px 16px; display:flex; flex-direction:column; gap:6px; flex:1; }
.ddgg-board .card-title { font-size:14.5px; font-weight:700; letter-spacing:-0.01em; color:var(--ddgg-text); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ddgg-board .card:hover .card-title { color:var(--ddgg-accent); }
.ddgg-board .card-intro { font-size:12.5px; color:var(--ddgg-text-muted); line-height:1.45; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ddgg-board .card-desc { font-size:12.5px; color:var(--ddgg-text-subtle); line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ddgg-board .card-date { color:var(--ddgg-text-subtle); font-weight:400; }
.ddgg-board .card-meta { display:flex; justify-content:space-between; align-items:center; margin-top:auto; padding-top:10px; font-size:11.5px; color:var(--ddgg-text-subtle); }
.ddgg-board .card-meta .author { display:flex; gap:6px; align-items:center; color:var(--ddgg-text-muted); font-weight:500; min-width:0; }
.ddgg-board .card-meta .author .avatar { width:18px; height:18px; font-size:9px; }
.ddgg-board .card-stats { display:flex; gap:10px; flex-shrink:0; }
.ddgg-board .card-stats span { display:inline-flex; align-items:center; gap:3px; }

/* ── Pager ────────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-pager { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:4px; margin-top:24px; }
.ddgg-board .ddgg-pager a, .ddgg-board .ddgg-pager strong { min-width:32px; height:32px; padding:0 8px; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--ddgg-border); background:var(--ddgg-bg); color:var(--ddgg-text-muted); border-radius:var(--ddgg-r-md); font-size:12.5px; font-weight:600; font-variant-numeric:tabular-nums; box-sizing:border-box; }
.ddgg-board .ddgg-pager a:hover { background:var(--ddgg-surface-2); color:var(--ddgg-text); }
.ddgg-board .ddgg-pager strong.active { background:var(--ddgg-text); color:var(--bg); border-color:var(--ddgg-text); }

/* ── 게시글 상세 ──────────────────────────────────────────────────────── */
.ddgg-board .ddgg-post { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:32px; margin-top:8px; }
.ddgg-board .ddgg-post .xe_content img { max-width:100%; height:auto; }
/* NIGHTFLIGHT CUSTOM: 게시글 본문 중첩 리스트 계층별 글머리 스타일 */
.ddgg-board .ddgg-post .xe_content ul:not([data-type="taskList"]) { list-style-type: disc; }
.ddgg-board .ddgg-post .xe_content ul:not([data-type="taskList"]) ul { list-style-type: circle; }
.ddgg-board .ddgg-post .xe_content ul:not([data-type="taskList"]) ul ul { list-style-type: square; }
.ddgg-board .ddgg-post .xe_content ul:not([data-type="taskList"]) ul ul ul { list-style-type: disc; }
.ddgg-board .ddgg-post .xe_content ol { list-style-type: decimal; }
.ddgg-board .ddgg-post .xe_content ol ol { list-style-type: lower-alpha; }
.ddgg-board .ddgg-post .xe_content ol ol ol { list-style-type: lower-roman; }
.ddgg-board .ddgg-post .xe_content ol ol ol ol { list-style-type: decimal; }
/* NIGHTFLIGHT CUSTOM: 에디터 콘텐츠 스타일을 뷰어에도 동일 적용 */
.ddgg-board .ddgg-post .xe_content > * + * { margin-top: .75em; }
.ddgg-board .ddgg-post .xe_content .img-caption {
        text-align: center; font-size: 13px; font-style: italic; color: var(--ddgg-text-subtle); margin-top: 4px;
}
.ddgg-board .ddgg-post .xe_content blockquote {
        border-left: 3px solid var(--ddgg-border-strong); margin-left: 0; padding-left: 1em; color: var(--ddgg-text-muted);
}
.ddgg-board .ddgg-post .xe_content blockquote p { margin: 0; }
.ddgg-board .ddgg-post .xe_content pre {
        background: #1f2733; color: #e6edf3; border-radius: var(--ddgg-r-sm); padding: 12px 14px;
        overflow-x: auto; font-family: var(--ddgg-font-mono);
}
.ddgg-board .ddgg-post .xe_content .tableWrapper { overflow-x: auto; }
.ddgg-board .ddgg-post .xe_content table { border-collapse: collapse; table-layout: fixed; max-width: none; width: 100%; }
.ddgg-board .ddgg-post .xe_content th, .ddgg-board .ddgg-post .xe_content td {
        border: 1px solid var(--ddgg-border-strong); padding: 6px 9px; vertical-align: top;
        font-size: 14px; line-height: 1.7;
}
.ddgg-board .ddgg-post .xe_content th p, .ddgg-board .ddgg-post .xe_content td p { margin: 0; }
.ddgg-board .ddgg-post .xe_content th { background: #f1f4f7; font-weight: 600; }
.nightflight-theme.dark .ddgg-board .ddgg-post .xe_content th,
body.color_scheme_dark .ddgg-board .ddgg-post .xe_content th { background: #2b333c; }
.ddgg-board .ddgg-post .xe_content iframe:not(.nf-embed-16x9-frame) { max-width: 100%; height: auto; border: 0; display: block; margin: 8px auto; }
.ddgg-board .ddgg-post .xe_content .nf-embed-16x9 { margin: 8px auto; }
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] {
        list-style: none;
        padding-left: 0;
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] li {
        display: flex;
        align-items: center;
        gap: 8px;
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] li > label {
        flex-shrink: 0;
        display: flex;
        align-items: center;
        user-select: none;
        pointer-events: none; /* NIGHTFLIGHT CUSTOM: label이 checkbox를 감싸고 있어 input에만 pointer-events:none을 줘도
           라벨 클릭 시 브라우저가 내부적으로 checkbox에 클릭을 전달(hit-test 아닌 강제 전달)해 여전히 토글되던 문제.
           라벨 자체도 클릭 불가로 막아 완전히 읽기 전용으로 고정 */
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] li > div {
        flex: 1 1 auto;
        min-width: 0;
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] li > div > p {
        margin: 0;
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] input[type="checkbox"] {
        width: 15px;
        height: 15px;
        cursor: default;
        pointer-events: none; /* NIGHTFLIGHT CUSTOM: 글 보기 화면에서는 등록된 체크 상태를 읽기 전용으로 고정 - 열람자가 클릭으로 체크/해제하지 못하도록 함 */
}
.ddgg-board .ddgg-post .xe_content ul[data-type="taskList"] li[data-checked="true"] > div > p {
        text-decoration: line-through;
        color: var(--ddgg-text-subtle);
}
.ddgg-board .ddgg-post .xe_content a.og-card:hover { border-color: var(--ddgg-border-strong) !important; box-shadow: var(--ddgg-sh-sm); }
.ddgg-board .ddgg-post .xe_content .og-card-title,
.ddgg-board .ddgg-post .xe_content .og-card-desc {
        display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;
}
.ddgg-board .ddgg-post .xe_content .og-card-title { -webkit-line-clamp: 2; }
.ddgg-board .ddgg-post .xe_content .og-card-desc { -webkit-line-clamp: 2; }
.ddgg-board .ddgg-post .xe_content .og-card-site { margin-top: auto; }


.ddgg-board .post-head { padding-bottom:20px; border-bottom:1px solid var(--ddgg-border); margin-bottom:24px; }
.ddgg-board .post-tags { display:flex; gap:6px; margin-bottom:10px; }
.ddgg-board .post-h1 { font-size:26px; font-weight:700; letter-spacing:-0.02em; margin:0 0 14px; line-height:1.3; }
.ddgg-board .post-meta { display:flex; gap:14px; align-items:center; color:var(--ddgg-text-muted); font-size:13px; flex-wrap:wrap; }
.ddgg-board .post-meta .avatar { width:28px; height:28px; font-size:12px; }
.ddgg-board .post-meta .author { color:var(--ddgg-text); font-weight:500; }
.ddgg-board .post-meta .dot { width:3px; height:3px; border-radius:50%; background:var(--ddgg-text-faint); }
.ddgg-board .post-meta .meta-stats { margin-left:auto; display:flex; gap:12px; }
.ddgg-board .post-meta .stat { display:inline-flex; gap:4px; align-items:center; font-size:12.5px; }

.ddgg-board .post-extra { margin:0 0 20px; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md); overflow:hidden; }
.ddgg-board .post-extra dl { display:flex; gap:0; margin:0; border-bottom:1px solid var(--ddgg-border); font-size:13px; }
.ddgg-board .post-extra dl:last-child { border-bottom:0; }
.ddgg-board .post-extra dt { width:140px; padding:10px 14px; background:var(--ddgg-surface); font-weight:600; color:var(--ddgg-text-muted); flex-shrink:0; }
.ddgg-board .post-extra dd { padding:10px 14px; margin:0; }

.ddgg-board .post-body { font-size:15px; line-height:1.7; color:var(--ddgg-text); word-wrap:break-word; }
.ddgg-board .post-body p { margin:0 0 16px; }
/* NIGHTFLIGHT CUSTOM: 완전히 빈 <p></p>(엔터만 여러 번 친 빈 줄)는 브라우저가 line box를 안 만들어 높이가 0으로 찌그러지는 문제 수정 */
.ddgg-board .post-body p:empty { min-height:1.7em; }
/* NIGHTFLIGHT CUSTOM: 여러 이미지 나란히 삽입 (justified layout, 크롭 없음) */
.ddgg-board .post-body .nf-img-group,
.ddgg-board .ddgg-post .xe_content .nf-img-group {
	display: flex;
	flex-direction: column;
	gap: 4px;
	margin-top: .75em;
}
.ddgg-board .post-body .nf-img-group img,
.ddgg-board .ddgg-post .xe_content .nf-img-group img {
	display: block;
	margin: 0 !important;
	border-radius: 6px;
	cursor: zoom-in;
	max-width: none;
}
.ddgg-board .post-body h2, .ddgg-board .post-body h3 { font-weight:700; letter-spacing:-0.015em; margin:28px 0 12px; }
.ddgg-board .post-body h3 { font-size:18px; }
.ddgg-board .post-body img { height:auto; border-radius:var(--ddgg-r-md); }
.ddgg-board .post-body video.nf-video { max-width:100%; height:auto; border-radius:var(--ddgg-r-md); display:block; margin:0 auto 16px; background:#000; }
/* NIGHTFLIGHT CUSTOM: 구형 고정폭 유튜브 등 iframe 임베드를 반응형으로 (16:9 비율 유지) */
.ddgg-board .post-body iframe { max-width:100%; }
.ddgg-board .post-body iframe[src*="youtube"],
.ddgg-board .post-body iframe[src*="youtu.be"],
.ddgg-board .post-body iframe[src*="vimeo"] {
  display:block; width:100%; aspect-ratio:16/9; height:auto; border-radius:var(--ddgg-r-md); border:0;
}
.ddgg-board .post-body a { color:var(--ddgg-accent); }
.ddgg-board .post-body code { font-family:var(--ddgg-font-mono); font-size:13.5px; background:var(--ddgg-surface-2); padding:2px 6px; border-radius:4px; color:var(--ddgg-accent-text); }
.ddgg-board .post-body pre { background:#18181b; color:#fafafa; padding:16px 18px; border-radius:var(--ddgg-r-md); overflow-x:auto; font-family:var(--ddgg-font-mono); font-size:13px; line-height:1.6; margin:0 0 16px; }
.ddgg-board .post-body pre code { background:transparent; color:inherit; padding:0; }
.ddgg-board .post-body ul, .ddgg-board .post-body ol { padding-left:22px; margin:0 0 16px; }
.ddgg-board .post-body li { margin-bottom:4px; }
.ddgg-board .post-body blockquote:not(.xe_content blockquote) { margin:0 0 16px; padding:8px 16px; border-left:3px solid var(--ddgg-accent); background:var(--ddgg-accent-soft); color:var(--ddgg-text-muted); border-radius:0 var(--ddgg-r-sm) var(--ddgg-r-sm) 0; }
.ddgg-board .ddgg-pwform { text-align:center; padding:40px 0; }

.ddgg-board .post-files { margin-top:24px; padding:16px 18px; background:var(--ddgg-surface); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md); }
.ddgg-board .post-files .files-head { display:flex; align-items:center; gap:6px; font-size:13px; font-weight:600; color:var(--ddgg-text-muted); margin-bottom:8px; }
.ddgg-board .post-files .files { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:6px; min-width:0; }
.ddgg-board .post-files .files li { min-width:0; }
.ddgg-board .post-files .files a { font-size:13px; color:var(--ddgg-text); overflow-wrap:anywhere; word-break:break-all; }
.ddgg-board .post-files .files a:hover { color:var(--ddgg-accent); }
.ddgg-board .post-files .fsize { color:var(--ddgg-text-subtle); font-size:11.5px; }

/* NIGHTFLIGHT CUSTOM: 첨부파일 5개 초과 시 접기/펼치기 */
.ddgg-board .post-files .files-toggle-input { display:none; }
.ddgg-board .post-files .files li:nth-child(n+6) { display:none; }
.ddgg-board .post-files .files-toggle-input:checked ~ .files li:nth-child(n+6) { display:flex; }
.ddgg-board .post-files .files-toggle-btn {
	display:inline-flex; align-items:center; gap:4px;
	margin-top:10px; padding:5px 10px;
	border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-sm);
	font-size:12px; font-weight:600; color:var(--ddgg-text-muted);
	cursor:pointer; user-select:none; width:fit-content;
}
.ddgg-board .post-files .files-toggle-btn:hover { background:var(--ddgg-surface-2); color:var(--ddgg-text); }
.ddgg-board .post-files .files-toggle-btn .show-less { display:none; }
.ddgg-board .post-files .files-toggle-input:checked ~ .files-toggle-btn .show-more { display:none; }
.ddgg-board .post-files .files-toggle-input:checked ~ .files-toggle-btn .show-less { display:inline; }

.ddgg-board .post-tagrow { display:flex; flex-wrap:wrap; gap:6px; margin-top:20px; }

.ddgg-board .post-actions { display:flex; gap:8px; padding-top:24px; margin-top:24px; border-top:1px solid var(--ddgg-border); flex-wrap:wrap; align-items:center; }
.ddgg-board .post-actions .grow { flex:1; }

.ddgg-board .post-sign { display:flex; gap:12px; margin-top:24px; padding-top:20px; border-top:1px dashed var(--ddgg-border); }
.ddgg-board .post-sign .pf { width:48px; height:48px; border-radius:50%; object-fit:cover; }
.ddgg-board .post-sign .tx { font-size:13px; color:var(--ddgg-text-muted); }

/* prev/next 미사용 (Rhymix 기본 API에 인접글 메서드 없음) */

/* ── 댓글 ─────────────────────────────────────────────────────────────── */
.ddgg-board .ddgg-comments { margin-top:28px; }
.ddgg-board .comments-h { font-size:15px; font-weight:700; margin:0 0 14px; display:flex; align-items:center; gap:8px; }
.ddgg-board .comments-h .cnt { color:var(--ddgg-accent); }

.ddgg-board .comment-write { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:14px; margin-top:20px; }
.ddgg-board .comment-write .cw-foot { display:flex; align-items:center; gap:8px; margin-top:10px; flex-wrap:wrap; }
.ddgg-board .comment-write .cw-fields { display:flex; gap:6px; flex-wrap:wrap; }
.ddgg-board .comment-write .cw-fields .ddgg-input { height:32px; font-size:12.5px; width:130px; }
.ddgg-board .comment-write .cw-check { font-size:12.5px; color:var(--ddgg-text-muted); display:inline-flex; align-items:center; gap:4px; }
.ddgg-board .comment-write .grow { flex:1; }

.ddgg-board .comments-list { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:4px 18px; }
.ddgg-board .comment { padding:14px 0; border-bottom:1px solid var(--ddgg-border); }
.ddgg-board .comment:last-child { border-bottom:0; }
.ddgg-board .comment .c-head { display:flex; gap:10px; align-items:center; margin-bottom:6px; }
.ddgg-board .comment .avatar { width:26px; height:26px; font-size:11px; }
.ddgg-board .comment .c-author { font-weight:500; font-size:13px; }
/* NIGHTFLIGHT CUSTOM: 비회원(익명) 작성자명 볼드 처리 - 프로덕션과 동일한 회원/비회원 구분 */
.ddgg-board .post-meta .author.is-guest,
.ddgg-board .comment .c-author.is-guest,
.ddgg-board .ddgg-list .author.is-guest,
.ddgg-board .zine-meta .author.is-guest,
.ddgg-board .card-meta .author.is-guest,
.ddgg-board .faq-q .faq-meta .author.is-guest,
.ddgg-board .is-guest { font-weight:700; }

.ddgg-board .comment .author-badge { height:18px; padding:0 6px; font-size:10px; }
.ddgg-board .comment .c-date { font-size:11.5px; color:var(--ddgg-text-subtle); margin-left:auto; }
.ddgg-board .comment .c-body { font-size:13.5px; color:var(--ddgg-text); line-height:1.6; padding-left:36px; word-wrap:break-word; }
.ddgg-board .comment .c-body p:empty { min-height:1.6em; }
.ddgg-board .comment .c-body.deleted { color:var(--ddgg-text-subtle); font-style:italic; }
.ddgg-board .comment .c-body img { height:auto; }
.ddgg-board .comment .c-files { padding-left:36px; margin-top:6px; }
.ddgg-board .comment .c-files .files { list-style:none; margin:0; padding:0; font-size:12.5px; }
.ddgg-board .comment .c-actions { display:flex; gap:14px; margin-top:6px; padding-left:36px; font-size:11.5px; color:var(--ddgg-text-subtle); }
.ddgg-board .comment .c-actions a:hover { color:var(--ddgg-text); }
.ddgg-board .comment.reply { position:relative; padding-left:36px; }
.ddgg-board .comment.reply::before { content:''; position:absolute; left:12px; top:18px; bottom:18px; width:2px; border-radius:2px; background:var(--ddgg-border); }
.ddgg-board .comment.reply .c-body, .ddgg-board .comment.reply .c-actions, .ddgg-board .comment.reply .c-files { padding-left:36px; }
.ddgg-board .comment-pager { margin-top:18px; }

/* ── 게시판 상단/하단 안내 영역 ───────────────────────────────────────── */
.ddgg-board .board-rich-text { margin-bottom:16px; }
.ddgg-board .board-rich-text:empty { display:none; }

/* ── 글쓰기 / 수정 / 확인 폼 (레거시 클래스 호환) ─────────────────────── */
.ddgg-board .iText {
	height:30px; padding:0 12px; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md);
	font-size:14px; font-family:inherit; outline:none; background:var(--ddgg-bg); color:var(--ddgg-text); max-width:100%;
}
.ddgg-board .iText:focus { border-color:var(--ddgg-border-strong); box-shadow:var(--ddgg-sh-focus); }
.ddgg-board .iCheck { accent-color:var(--ddgg-accent); width:15px; height:15px; vertical-align:-2px; }

.ddgg-board .board_write { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:24px; margin-top:9px; }
/* NIGHTFLIGHT CUSTOM: 유튜브 등 iframe 임베드 16:9 박스 (position:relative가 HTMLPurifier에서
   비신뢰 콘텐츠 필터링 대상이라 인라인 스타일로 넣으면 저장 시 사라짐 - 클래스 기반으로 전환) */
.nf-embed-16x9{ width:100%; max-width:100%; aspect-ratio:16/9; overflow:hidden; border-radius:8px; }
.nf-embed-16x9-frame{ width:100%; height:100%; border:0; border-radius:8px; display:block; }

.ddgg-board .write_header { display:flex; flex-direction:column; gap:10px; padding-bottom:16px; margin-bottom:16px; border-bottom:1px solid var(--ddgg-border); }
.ddgg-board .write_header select { height:38px; padding:0 30px 0 12px; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md); font-family:inherit; font-size:13px; background:var(--ddgg-surface-2); color:var(--ddgg-text); width:fit-content; appearance:none; -webkit-appearance:none; cursor:pointer; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2352525b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 10px center; } /* NIGHTFLIGHT CUSTOM: 커스텀 화살표 + 밝은 톤(surface-2)으로 시인성 개선 */
.ddgg-board .write_header .iText { width:100%; font-size:18px; font-weight:600; height:48px; background:var(--ddgg-surface-2); color:var(--ddgg-text); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md); padding:0 14px; } /* NIGHTFLIGHT CUSTOM: 제목 입력칸 배경/테두리 미지정 문제 수정 */
.ddgg-board .exForm { margin-bottom:16px; border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); background:var(--ddgg-bg); overflow:hidden; }
.ddgg-board .exForm table { width:100%; border-collapse:collapse; font-size:13px; }
.ddgg-board .exForm caption { caption-side:top; text-align:left; color:var(--ddgg-text-muted); font-size:12px; font-weight:700; padding:12px 16px; background:var(--ddgg-surface); border-bottom:1px solid var(--ddgg-border); }
.ddgg-board .exForm caption em { color:var(--ddgg-accent); font-style:normal; }
.ddgg-board .exForm tr { border-bottom:1px solid var(--ddgg-border); }
.ddgg-board .exForm tr:last-child { border-bottom:0; }
.ddgg-board .exForm th { width:180px; text-align:left; vertical-align:top; padding:14px 16px; background:var(--ddgg-surface); font-weight:600; color:var(--ddgg-text); border-right:1px solid var(--ddgg-border); }
.ddgg-board .exForm th em { color:var(--ddgg-accent); font-style:normal; margin-right:3px; }
.ddgg-board .exForm td { padding:12px 16px; vertical-align:top; }
/* 확장변수 입력 컨트롤 */
.ddgg-board .exForm input[type=text],
.ddgg-board .exForm input[type=password],
.ddgg-board .exForm input[type=number],
.ddgg-board .exForm input[type=email],
.ddgg-board .exForm input[type=tel],
.ddgg-board .exForm input[type=url],
.ddgg-board .exForm input[type=date],
.ddgg-board .exForm select,
.ddgg-board .exForm textarea {
	width:100%; max-width:440px; padding:9px 12px;
	border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-md);
	font-family:inherit; font-size:13px; background:var(--ddgg-bg); color:var(--ddgg-text); outline:none;
	transition:border-color .12s, box-shadow .12s;
}
.ddgg-board .exForm textarea { min-height:96px; resize:vertical; line-height:1.6; }
.ddgg-board .exForm input:focus, .ddgg-board .exForm select:focus, .ddgg-board .exForm textarea:focus { border-color:var(--ddgg-border-strong); box-shadow:var(--ddgg-sh-focus); }
.ddgg-board .exForm input[type=checkbox], .ddgg-board .exForm input[type=radio] { accent-color:var(--ddgg-accent); width:15px; height:15px; vertical-align:-2px; margin:0 4px 0 0; }
.ddgg-board .exForm label { display:inline-flex; align-items:center; font-size:13px; color:var(--ddgg-text); margin:0 14px 6px 0; cursor:pointer; }
.ddgg-board .exForm .extra_vars_description, .ddgg-board .exForm .desc { display:block; margin-top:6px; font-size:12px; color:var(--ddgg-text-subtle); }
@media (max-width:680px) {
	/* NIGHTFLIGHT CUSTOM: 모바일에서 글쓰기 버튼이 페이지네이션 끝 버튼을 침범하는 문제 방지 */
	.ddgg-board .list-write-below .btn-label { display:none; }
	.ddgg-board .list-write-below .btn { padding:0 10px !important; min-width:0 !important; gap:0 !important; height:32px !important; }

	.ddgg-board .exForm th, .ddgg-board .exForm td { display:block; width:auto; border-right:0; }
	.ddgg-board .exForm th { border-bottom:1px solid var(--ddgg-border); padding-bottom:8px; }
	.ddgg-board .exForm input[type=text], .ddgg-board .exForm select, .ddgg-board .exForm textarea { max-width:100%; }
}
.ddgg-board .write_editor { margin-bottom:16px; }
/* NIGHTFLIGHT CUSTOM: 자동저장 메시지 p태그가 기본 브라우저 여백(1em 위아래)을 가져서 에디터와 파일첨부 박스 사이에 큰 공백이 생기는 문제 수정 */
.ddgg-board .editor_autosaved_message { margin:0; padding:2px 0 0; line-height:1.3; font-size:12px; color:var(--ddgg-text-muted); }
/* NIGHTFLIGHT CUSTOM: write_option(1행) / write_author+btnArea(2행, 같은 줄) / write_captcha(3행) 배치를 위해 grid로 전환 */
.ddgg-board .write_footer { display:grid; grid-template-columns:1fr auto; grid-template-areas:"option option" "author btn" "captcha captcha"; gap:14px; align-items:center; }
.ddgg-board .write_option { grid-area:option; display:flex; flex-wrap:wrap; gap:6px 4px; align-items:center; font-size:13px; color:var(--ddgg-text-muted); } /* NIGHTFLIGHT CUSTOM: column-gap을 4px로 줄여 체크박스-라벨을 붙임. 그룹 간 간격은 아래 label margin-right로 별도 확보 */
.ddgg-board .write_option label { margin-right:12px; }
.ddgg-board .write_author { grid-area:author; display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
.ddgg-board .write_author .item { display:flex; align-items:center; gap:6px; }
.ddgg-board .write_author .iLabel { font-size:12.5px; color:var(--ddgg-text-muted); }
.ddgg-board .write_author label { font-size:12.5px; color:var(--ddgg-text-muted); } /* NIGHTFLIGHT CUSTOM: 알림/비밀글 라벨(class 없는 순수 label)도 일반 댓글창(cw-check)과 동일한 크기로 통일 */
.ddgg-board .write_captcha { grid-area:captcha; margin:10px 0; } /* NIGHTFLIGHT CUSTOM: 댓글(.comment-write)과 답글(.feedback) 캡차 간격을 10px로 통일 */
.ddgg-board .btnArea { grid-area:btn; display:flex; gap:8px; flex-wrap:wrap; align-items:center; justify-content:flex-end; margin:0; } /* NIGHTFLIGHT CUSTOM: 글쓰기 목록 버튼/댓글 등록 버튼과 통일해 우측 정렬 + 작성자정보 행과 같은 줄 배치. margin 전체 0으로: 라이믹스 코어(rhymix.scss)의 .btnArea{margin:10px 0} 중 margin-bottom이 안 지워져서 write_footer 높이가 버튼보다 10px 더 컸던 문제 수정 */
.ddgg-board .btnArea::after { display:none; } /* NIGHTFLIGHT CUSTOM: 코어의 clearfix용 ::after가 flex 자식으로 취급되어 gap:8px만큼 버튼이 오른쪽 끝에서 밀려나 보이던 문제 수정. flex 컨테이너는 clearfix가 애초에 불필요함 */
.ddgg-board .btnArea .btn, .ddgg-board .btnArea input[type=submit], .ddgg-board .btnArea button {
	display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:5px 16px !important; height:unset !important;
	border-radius:var(--ddgg-r-md); border:1px solid var(--ddgg-border-strong); background:var(--ddgg-bg); color:var(--ddgg-text);
	font-size:13px; font-weight:600; font-family:inherit; cursor:pointer;
}
.ddgg-board .btnArea input[type=submit] { background:var(--ddgg-accent); color:#fff; border-color:var(--ddgg-accent); }
/* NIGHTFLIGHT CUSTOM: .btnArea .btn 규칙(흰 배경)이 .btn-primary와 특이성이 같아 파일 순서상 이겨버려
   <button class="btn btn-primary">가 hover 전까지 흰색으로 보이던 문제 수정 - 클래스 조합으로 특이성 확실히 높임 */
.ddgg-board .btnArea .btn.btn-primary { background:var(--ddgg-accent); color:#fff; border-color:var(--ddgg-accent); }
.ddgg-board .btnArea .btn.btn-primary:hover { background:var(--ddgg-accent-hover); color:#fff; }
.ddgg-board .btnArea .btn:hover, .ddgg-board .btnArea button:hover { background:var(--ddgg-surface-2); }
.ddgg-board .btnArea input[type=submit]:hover, .ddgg-board .btnArea button[type=submit]:hover { background:var(--ddgg-accent-hover); border-color:var(--ddgg-accent-hover); color:#fff; }
/* NIGHTFLIGHT CUSTOM: 임시저장/불러오기/미리보기 버튼 폭이 텍스트 길이에 따라 제각각이던 문제 수정 - 등록(제출) 버튼은 제외하고 폭 통일 */
.ddgg-board .btnArea .btn:not(.btn-primary):not([type=submit]) { min-width:84px; }

/* NIGHTFLIGHT CUSTOM: 모바일에서 write_footer(글쓰기 폼 하단)를 완전히 세로 스택으로 전환.
   - 로그인 상태: 태그 입력칸(글쓴이/비번 없음)이 단독 1행으로 폭 전체 차지
   - 비로그인 상태: 글쓴이:비밀번호:태그 = 2.5:2.5:5 비율로 한 줄에 배치
   - 두 경우 모두 버튼 영역은 그 아래 별도 줄에서 우측 정렬 */
@media (max-width:680px) {
	.ddgg-board .write_footer { grid-template-columns:1fr; grid-template-areas:"option" "author" "btn" "captcha"; }
	.ddgg-board .write_author { width:100%; flex-wrap:nowrap; }
	.ddgg-board .write_author .item { min-width:0; }
	.ddgg-board .write_author .item:only-child { flex:1 1 100%; }
	.ddgg-board .write_author .item:only-child input { width:100% !important; }
	.ddgg-board .write_author:not(:has(.item:only-child)) .item:nth-child(1) { flex:2.5 1 0; }
	.ddgg-board .write_author:not(:has(.item:only-child)) .item:nth-child(2) { flex:2.5 1 0; }
	.ddgg-board .write_author:not(:has(.item:only-child)) .item:nth-child(3) { flex:5 1 0; }
	.ddgg-board .write_author:not(:has(.item:only-child)) .item input { width:100% !important; }
	.ddgg-board .btnArea { width:100%; }
}

/* 비밀번호 입력 / 삭제 확인 / 메시지 */
/* NIGHTFLIGHT CUSTOM: 답글 폼에서 원댓글 인용박스(.context_data)가 이 페이지의 첫 요소일 때가 있어
   .feedback과 마찬가지로 사이드바와 정렬되도록 margin-top 추가 */
.ddgg-board .context_data { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:20px 24px; margin-top:9px; margin-bottom:16px; }
.ddgg-board .context_data .title { font-size:18px; font-weight:700; margin:0 0 6px; }
.ddgg-board .context_data .author { color:var(--ddgg-text-muted); font-size:13px; margin:0; }
.ddgg-board .context_message { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:40px 24px; text-align:center; }
.ddgg-board .context_message h1 { font-size:18px; font-weight:700; margin:0 0 18px; line-height:1.5; }
.ddgg-board .context_message .iText { display:inline-block; vertical-align:middle; width:200px; height:32px; margin:0 6px 12px 0; } /* NIGHTFLIGHT CUSTOM: 폭 고정 + 버튼과 세로 정렬 */
.ddgg-board .context_message .btnArea .btn { height:32px !important; line-height:30px !important; padding-top:0 !important; padding-bottom:0 !important; box-sizing:border-box; } /* NIGHTFLIGHT CUSTOM: 입력창과 버튼 높이 통일. input[type=submit]은 flex align-items가 안정적으로 안 먹혀 line-height로 텍스트 수직 중앙정렬 보정. line-height는 위아래 border(1px씩 총 2px)를 뺀 30px로 맞춤 */
.ddgg-board .context_message .btnArea { display:inline-flex; vertical-align:middle; justify-content:center; margin-bottom:12px; } /* NIGHTFLIGHT CUSTOM: 원래 .btnArea가 block-flex라 입력창과 다른 줄로 떨어지던 것을 inline-flex로 수정, 버튼 자체는 .btnArea .btn 공통 스타일(다크모드 대응 포함)을 그대로 상속 */

/* 답글/수정 댓글 폼 */
.ddgg-board .feedback { background:var(--ddgg-bg); border:1px solid var(--ddgg-border); border-radius:var(--ddgg-r-lg); padding:14px; margin-top:9px; } /* NIGHTFLIGHT CUSTOM: 사방 패딩 14px로 통일, .comment-write와 동일한 값 */
.ddgg-board .feedback .write_footer { grid-template-areas:"author btn" "captcha captcha"; gap:0; } /* NIGHTFLIGHT CUSTOM: 댓글/답글 폼(.feedback)에는 write_option이 아예 없어 기본 3행 grid의 1행이 항상 비어 gap 14px + 아래 margin-top 10px가 겹쳐 불필요한 여백이 생기던 문제 수정. 2행 구조로 오버라이드. gap도 0으로: 이제 write_captcha 자체의 margin(10px)만으로 간격을 주어 댓글(.comment-write)과 동일한 방식/수치로 통일 */
.ddgg-board .feedback .write_footer:not(:has(.write_captcha)) { grid-template-areas:"author btn"; } /* NIGHTFLIGHT CUSTOM: 로그인 상태 등 캡차가 아예 렌더링되지 않을 때는 그마저도 빈 captcha 행+gap이 남아 여백이 생기므로, :has()로 write_captcha 자식 유무를 직접 감지해 1행 구조로 축소. (템플릿 조건부 class 방식은 라이믹스 엔진이 class 속성 내부의 @if를 처리 못해 실패, 순수 CSS로 대체) */
/* NIGHTFLIGHT CUSTOM: 답글/글쓰기 폼의 글쓴이·비밀번호 입력칸을 일반 댓글창(cw-fields)과 동일한 크기로 통일 (라벨 제거하고 placeholder만 사용) */
.ddgg-board .write_author .ddgg-input { height:32px; width:130px; font-size:12.5px; }
.ddgg-board .write_author .iText { height:32px; font-size:12.5px; } /* NIGHTFLIGHT CUSTOM: 태그 입력칸 높이를 글쓴이/비밀번호 입력칸과 맞춤 */

/* ── 긴 제목/내용 오버플로 방지 ───────────────────────────────────────── */
.ddgg-board .ddgg-list .title { min-width:0; }
.ddgg-board .post-h1, .ddgg-board .zine-title, .ddgg-board .card-title { overflow-wrap:anywhere; word-break:break-word; }
.ddgg-board .post-body, .ddgg-board .comment .c-body { overflow-wrap:anywhere; }
.ddgg-board .post-body img { max-width:100%; height:auto; }
.ddgg-board .post-body pre { max-width:100%; overflow-x:auto; }
.ddgg-board .post-body table:not(.xe_content table) { display:block; max-width:100%; overflow-x:auto; }

/* ── 반응형 ───────────────────────────────────────────────────────────── */
@media (max-width:1024px) {
	.ddgg-board .ddgg-gallery.cols-3, .ddgg-board .ddgg-gallery.cols-4 { grid-template-columns:repeat(2,1fr); }
	.ddgg-board .zine-item { grid-template-columns:120px minmax(0,1fr); }
	.ddgg-board .zine-stats { display:none; }
}
@media (max-width:680px) {
	.ddgg-board .ddgg-post { padding:20px; }
	.ddgg-board .ddgg-list .list-head { display:none; }
	.ddgg-board .ddgg-list .list-row { display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px; padding:14px; }
	.ddgg-board .ddgg-list .col-cate { display:none; }
	.ddgg-board .ddgg-list .col-title { order:2; flex:1 1 100%; min-width:0; }
	/* NIGHTFLIGHT CUSTOM: 관리자 체크박스(.col-check)가 있으면 제목이 혼자 한 줄(100%)을
	   차지하던 걸 줄여, 체크박스와 제목이 같은 줄에 나란히 오도록 함 (일반 회원 뷰는 영향 없음) */
	.ddgg-board .ddgg-list:has(.col-check) .col-title { flex:1 1 0%; min-width:0; }
	.ddgg-board .ddgg-list .col-check { order:1; flex:0 0 auto; }
	.ddgg-board .ddgg-list .col-title .comments { display:none; }
	.ddgg-board .ddgg-list .col-date { display:none; }
	.ddgg-board .ddgg-list .col-author, .ddgg-board .ddgg-list .col-vote, .ddgg-board .ddgg-list .col-view { display:none; }
	.ddgg-board .ddgg-list .row-m-meta { display:flex; order:4; flex:1 1 100%; flex-wrap:wrap; align-items:center; gap:8px; margin-top:2px; font-size:12px; color:var(--ddgg-text-subtle); }
	.ddgg-board .ddgg-list .row-m-meta .author { color:var(--ddgg-text-muted); font-weight:500; margin-left:auto; }
	.ddgg-board .ddgg-list .row-m-meta .author.is-guest { font-weight:700; }
	.ddgg-board .ddgg-list .row-m-meta .author::before { content:none !important; }
	.ddgg-board .ddgg-list .row-m-meta > span:not(:first-child)::before { content:"|"; margin-right:8px; color:var(--ddgg-border-strong); }
	.ddgg-board .toolbar { gap:8px; }
	.ddgg-board .ph { margin-bottom:6px; }
	/* NIGHTFLIGHT CUSTOM: 정렬 드롭다운+구분선 고정, 카테고리만 가로 슬라이드 */
	.ddgg-board .toolbar .left {
		width:auto; flex:0 0 100%;
		display:flex; align-items:center; gap:6px;
		flex-wrap:nowrap; min-width:0;
	}
	.ddgg-board .toolbar .left > select.ddgg-sort,
	.ddgg-board .toolbar .left .tb-divider { flex:0 0 auto; }
	.ddgg-board .toolbar .left .chip-scroll {
		display:flex; align-items:center; gap:6px;
		flex:1 1 auto; min-width:0;
		overflow-x:auto; overflow-y:visible; padding-bottom:2px;
		-webkit-overflow-scrolling:touch;
		scrollbar-width:none; -ms-overflow-style:none;
		scroll-snap-type:x proximity;
		-webkit-mask-image:linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
		mask-image:linear-gradient(to right, #000 calc(100% - 28px), transparent 100%);
	}
	.ddgg-board .toolbar .left .chip-scroll::-webkit-scrollbar { display:none; }
	.ddgg-board .toolbar .left .chip-scroll .chip { flex:0 0 auto; scroll-snap-align:start; }
	.ddgg-board .toolbar .right { width:auto; flex:1 1 auto; min-width:0; margin-left:0; }
	.ddgg-board .toolbar-search { width:auto; flex:1 1 auto; min-width:0; }
	.ddgg-board .seg { margin-top:0; }
	/* 페이지헤더: 제목/건수 위 → 버튼(게시판설정·글관리·글쓰기) 무조건 아래 줄 */
	.ddgg-board .ph { flex-direction:column; align-items:stretch; }
	.ddgg-board .ph-actions { width:100%; flex-wrap:wrap; }
	.ddgg-board .post-meta .meta-stats { margin-left:0; }
}
@media (max-width:520px) {
	.ddgg-board .ddgg-gallery.cols-2, .ddgg-board .ddgg-gallery.cols-3, .ddgg-board .ddgg-gallery.cols-4 { grid-template-columns:1fr; }
	/* 웹진형: 모바일에서도 좌측 썸네일 + 우측 제목/정보 유지 */
	.ddgg-board .zine-item { grid-template-columns:96px minmax(0,1fr); gap:14px; padding:14px; }
	.ddgg-board .zine-thumb { height:84px; }
	.ddgg-board .zine-title { font-size:15px; }
}

/* ───────────────── FAQ형 (아코디언) ───────────────── */
.ddgg-board .ddgg-faq { display:flex; flex-direction:column; gap:10px; }
.ddgg-board .faq-item {
	border:1px solid var(--ddgg-border);
	border-radius:var(--ddgg-r-lg);
	background:var(--ddgg-bg);
	overflow:hidden;
	transition: box-shadow .15s, border-color .15s;
}
.ddgg-board .faq-item[open] { border-color: var(--ddgg-primary); box-shadow: 0 4px 16px rgba(249,115,22,0.08); }
.ddgg-board .faq-item.is-notice { background: var(--amber-soft); border-color: var(--amber); }

.ddgg-board .faq-q {
	display:flex; align-items:center; gap:10px;
	padding:14px 18px;
	cursor:pointer;
	list-style:none;
	font-size:14.5px;
	line-height:1.45;
	color: var(--ddgg-text);
	user-select:none;
}
.ddgg-board .faq-q::-webkit-details-marker { display:none; }
.ddgg-board .faq-q:hover { background: var(--ddgg-surface); }

.ddgg-board .faq-q .faq-title { flex:1 1 auto; min-width:0; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ddgg-board .faq-item[open] .faq-q .faq-title { white-space:normal; }

.ddgg-board .faq-q .faq-meta {
	flex:0 0 auto;
	display:inline-flex; align-items:center; gap:10px;
	font-size:12px; color: var(--ddgg-text-subtle);
}
.ddgg-board .faq-q .faq-meta .author { font-weight:600; color: var(--ddgg-text); }

.ddgg-board .faq-q .chev {
	flex:0 0 auto;
	color: var(--ddgg-text-subtle);
	transition: transform .2s ease;
}
.ddgg-board .faq-item[open] .faq-q .chev { transform: rotate(180deg); color: var(--ddgg-primary); }

.ddgg-board .faq-a {
	padding:16px 18px 18px;
	border-top:1px dashed var(--ddgg-border);
	background: var(--ddgg-surface);
}
.ddgg-board .faq-a .faq-answer {
	font-size:14px; line-height:1.7; color: var(--ddgg-text);
	word-break:break-word;
}
.ddgg-board .faq-a .faq-answer img { max-width:100%; height:auto; border-radius:6px; }
.ddgg-board .faq-a .faq-answer p { margin:0 0 .8em; }
.ddgg-board .faq-a .faq-answer p:last-child { margin-bottom:0; }

.ddgg-board .faq-a .faq-actions {
	display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap;
	gap:10px;
	margin-top:14px; padding-top:12px;
	border-top:1px solid var(--ddgg-border);
	font-size:12px; color: var(--ddgg-text-subtle);
}
.ddgg-board .faq-a .faq-actions .faq-link {
	display:inline-flex; align-items:center; gap:4px;
	color: var(--ddgg-primary); font-weight:700; text-decoration:none;
}
.ddgg-board .faq-a .faq-actions .faq-link:hover { text-decoration:underline; }

/* FAQ 모바일 */
@media (max-width:640px) {
	.ddgg-board .faq-q { padding:12px 14px; flex-wrap:wrap; gap:8px; font-size:14px; }
	.ddgg-board .faq-q .faq-title { flex:1 1 100%; order:2; white-space:normal; }
	.ddgg-board .faq-q .cat-tag { order:1; }
	.ddgg-board .faq-q .faq-meta { order:3; flex:1 1 auto; gap:8px; }
	.ddgg-board .faq-q .chev { order:4; }
	.ddgg-board .faq-q .badge-hot, .ddgg-board .faq-q .badge-new { order:1; }
	.ddgg-board .faq-a { padding:14px; }
	.ddgg-board .faq-a .faq-actions { font-size:11.5px; }
}

/* 글쓰기 버튼: 목록 하단 우측으로 이동 */
.ddgg-board .list-footer{ position:relative; display:flex; align-items:center; justify-content:center; margin-top:24px; }
.ddgg-board .list-footer .ddgg-pager{ margin-top:0; }
.ddgg-board .list-footer .list-write-below{ position:absolute; right:0; bottom:0; margin-top:0; }
.ddgg-board .list-write-below{ display:flex; justify-content:flex-end; margin-top:12px; }

/* NIGHTFLIGHT CUSTOM: 게시글 본문 이미지 원본 크게보기(라이트박스) */
.ddgg-board .post-body img{ cursor:zoom-in; }
.ddgg-lightbox{
	position:fixed; inset:0; z-index:9999;
	background:rgba(10,12,16,.9);
	display:flex; align-items:center; justify-content:center;
	padding:40px 20px; cursor:zoom-out;
	opacity:0; pointer-events:none; transition:opacity .18s ease;
}
.ddgg-lightbox.is-open{ opacity:1; pointer-events:auto; }
.ddgg-lightbox-figure{ display:flex; flex-direction:column; align-items:center; gap:12px; max-width:100%; max-height:100%; margin:0; }
.ddgg-lightbox-img{ max-width:92vw; max-height:82vh; object-fit:contain; border-radius:6px; box-shadow:0 10px 40px rgba(0,0,0,.5); cursor:zoom-in; }
/* NIGHTFLIGHT CUSTOM: 이미지 클릭 시 실제 픽셀 크기(100%)로 전환 - 화면보다 크면 스크롤해서 볼 수 있음 */
/* NIGHTFLIGHT CUSTOM: flex 컨테이너의 overflow 스크롤 범위 계산이 브라우저마다 신뢰할 수 없어(특히 시작 방향으로 스크롤 불가 버그),
   확대 모드에서는 flex를 끄고 일반 블록+text-align 레이아웃으로 전환 */
.ddgg-lightbox.is-zoomed{ display:flex; align-items:safe center; justify-content:safe center; overflow:auto; padding:20px; cursor:default; } /* NIGHTFLIGHT CUSTOM: safe center로 화면에 들어오면 중앙정렬, 넘치면 자동으로 좌상단+스크롤 전환 (110단계 좌측스크롤 버그 재발 방지) */
/* NIGHTFLIGHT CUSTOM: margin:auto가 flex 컨테이너의 overflow 스크롤과 만나면 시작(왼쪽) 방향으로 끝까지 스크롤이 안 되는 브라우저 버그가 있어 제거 */
/* NIGHTFLIGHT CUSTOM: figure의 max-width:100%+align-items:center가 남아있으면 큰 이미지가 좁은 figure 박스 안에서
   가운데 정렬되며 좌우로 삐져나오는데, 왼쪽으로 삐져나온 부분은 스크롤 가능 영역 계산에서 빠지는 브라우저 동작이 있어
   확대 모드에서는 figure의 폭 제한/가운데정렬을 모두 풀어 이미지 실제 크기에 맞춰 자라도록 함 */
.ddgg-lightbox.is-zoomed .ddgg-lightbox-figure{ display:inline-flex; align-items:flex-start; max-width:none; max-height:none; margin:0; }
.ddgg-lightbox.is-zoomed .ddgg-lightbox-img{ max-width:none; max-height:none; width:auto; height:auto; cursor:zoom-out; }
/* NIGHTFLIGHT CUSTOM: 확대된 이미지가 화면에 다 들어올 때(스크롤 불필요)는 가운데 정렬 - 블록/좌상단 레이아웃을 다시 flex 중앙정렬로 전환 */
.ddgg-lightbox.is-zoomed.is-zoomed-fit{ display:flex; align-items:center; justify-content:center; text-align:center; }
.ddgg-lightbox.is-zoomed.is-zoomed-fit .ddgg-lightbox-figure{ display:flex; align-items:center; max-width:100%; max-height:100%; }
.ddgg-lightbox-caption{ color:#e7ebf0; font-size:13px; text-align:center; max-width:80vw; }
.ddgg-lightbox-close,
.ddgg-lightbox-nav{
	position:fixed; display:flex; align-items:center; justify-content:center;
	background:rgba(255,255,255,.12); border:none; border-radius:50%;
	color:#fff; cursor:pointer; transition:background .12s; padding:0;
}
.ddgg-lightbox-close:hover,
.ddgg-lightbox-nav:hover{ background:rgba(255,255,255,.22); }
.ddgg-lightbox-close{ top:16px; right:16px; width:40px; height:40px; }
.ddgg-lightbox-close svg{ width:20px; height:20px; }
.ddgg-lightbox-nav{ top:50%; transform:translateY(-50%); width:44px; height:44px; }
.ddgg-lightbox-nav svg{ width:22px; height:22px; }
.ddgg-lightbox-prev{ left:16px; }
.ddgg-lightbox-next{ right:16px; }
body.ddgg-lightbox-open{ overflow:hidden; }
@media (max-width:600px){
	.ddgg-lightbox-nav{ width:38px; height:38px; }
	.ddgg-lightbox-nav svg{ width:19px; height:19px; }
	.ddgg-lightbox-close{ width:34px; height:34px; }
	.ddgg-lightbox-close svg{ width:17px; height:17px; }
}
