@charset "UTF-8";
/* ============================================================================
 * blog.css — 티처빌 블로그(목록·상세) 공용 스타일 (Single Source of Style)
 *
 *  로드: blogList.vm(.tvblog) / blogDetail.vm(.tvblog-detail) 이 <link> 로 공용 로드.
 *  구성: [공통(목록·상세 공용)] → [목록 .tvblog] → [상세 .tvblog-detail]
 *  폰트: 시안(Figma)=Noto Sans KR. 레이아웃(subLayout)이 font.css 미로드라 여기서 @import.
 *  ※ 본문(블럭에디터) 텍스트 스타일은 blockEditor-content.css 별도(상세에서 함께 로드).
 *  ※ 모바일 반응형은 파일 하단 @media 섹션에 추가 예정.
 * ==========================================================================*/
@import url("font.css?v=20260707");

/* ============================================================
 *  공통 (목록·상세 공용)
 * ============================================================ */
.tvblog, .tvblog-detail { position:relative; color:#191919; }
.tvblog a, .tvblog-detail a { text-decoration:none; color:inherit; }
.tvblog .clamp2 { display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }

/* 페이지 제목 + breadcrumb (목록·상세 동일) */
.tvblog-head { display:flex; align-items:center; justify-content:space-between; margin:6px 0 20px; }
.tvblog-title { font-size:23px; font-weight:700; color:#333; margin:0; }
.tvblog-crumb { font-size:15px; color:#999; }
.tvblog-crumb a { color:#999; }
.tvblog-crumb em { font-style:normal; color:#474747; }
.tvblog-crumb .sep { margin:0 7px; color:#999; }

/* 카테고리 뱃지(pill) */
.tvblog-badge { display:inline-block; background:#f0f9ff; color:#0d99ff; font-weight:500;
	font-size:14px; line-height:1; padding:9px 15px; border-radius:12px; }

/* 이미지 placeholder 아이콘 색(SVG currentColor) */
.tvblog-ph { color:#c3cfd8; }

/* ============================================================
 *  목록 (.tvblog)
 * ============================================================ */
/* 배너 (W1201) — 공통 bannerManager2021.js가 BWEB/BMOB div를 채움. 미등록(빈 div)이면 미노출 */
.tvblog-banner { margin-bottom:24px; }
.tvblog-banner:empty { display:none; margin:0; }
.tvblog-banner img { width:100%; display:block; border-radius:8px; }
.tvblog-banner-none { height:80px; display:flex; align-items:center; justify-content:center;
	border:1px dashed #d8d8d8; color:#aeaeae; font-size:13px; border-radius:8px; }

/* 베스트 = featured 캐러셀 */
.tvblog-featured { position:relative; margin-bottom:40px; }
/* slick 스코프 base 레이아웃 — 전역 slick.css 미로드라 이 영역에만 이식(프로젝트 관례: 영역별 스코프) */
.tvblog-featured .slick-list { position:relative; display:block; overflow:hidden; margin:0; padding:0; }
.tvblog-featured .slick-track { position:relative; top:0; left:0; display:block; }
.tvblog-featured .slick-track:before, .tvblog-featured .slick-track:after { content:""; display:table; }
.tvblog-featured .slick-track:after { clear:both; }
.tvblog-featured .slick-slide { display:none; float:left; height:auto; min-height:1px; }
.tvblog-featured .slick-initialized .slick-slide { display:block; }
.tvblog-feat-card { display:flex; height:300px; }
.tvblog-feat-thumb { flex:0 0 45%; background:#f4f4f4; display:flex; align-items:center;
	justify-content:center; overflow:hidden; }
.tvblog-feat-thumb img { width:100%; height:100%; object-fit:cover; }
.tvblog-feat-thumb .tvblog-ph svg { width:64px; height:64px; }
.tvblog-feat-body { flex:1; background:#fff; border:1px solid #ddd; border-left:0;
	padding:34px 40px; display:flex; flex-direction:column; justify-content:center; }
.tvblog-feat-body .tvblog-badge { align-self:flex-start; }
.tvblog-feat-title { font-size:23px; color:#333; line-height:1.4; margin:16px 0 0; }
/* dev-feedback #5(운영자 조현진): 부제 폰트를 메인 제목과 통일 — 별도 지정 제거하고 기본 폰트(Noto Sans KR) 상속 */
.tvblog-feat-sub { font-size:18px; color:#686868; line-height:1.4; margin-top:14px; }
/* slick dots — 기존 시안 유지(14px 원, 활성 #474747, 좌측 정렬). slick-theme 미로드라 :before 글리프 방어 */
.tvblog-featured .slick-dots { position:static; width:auto; display:flex; gap:8px; justify-content:flex-start; padding:0 0 0 calc(45% + 30px); margin:16px 0 0; list-style:none; }
.tvblog-featured .slick-dots li { width:14px; height:14px; line-height:0; }
.tvblog-featured .slick-dots li button { width:14px; height:14px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.2); cursor:pointer; font-size:0; color:transparent; }
.tvblog-featured .slick-dots li button:before { display:none; }
.tvblog-featured .slick-dots li.slick-active button { background:#474747; }

/* 카테고리 탭 + 검색 */
.tvblog-filterrow { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:26px; }
.tvblog-tabs { display:flex; flex-wrap:wrap; gap:11px; }
.tvblog-tabs button { display:inline-flex; align-items:center; justify-content:center; width:134px; height:35px;
	border:0; background:#f2f2f2; color:#777; font-size:15px; font-weight:500; border-radius:8px; padding:0; cursor:pointer; }
.tvblog-tabs button.on { background:#0d99ff; color:#fff; }
.tvblog-search { position:relative; flex:0 0 400px; max-width:400px; }
.tvblog-search input { width:100%; height:40px; box-sizing:border-box; border:1px solid #ddd;
	border-radius:8px; padding:0 44px 0 16px; font-size:14px; }
.tvblog-search button { position:absolute; right:6px; top:6px; width:28px; height:28px; border:0;
	background:none; cursor:pointer; color:#555; display:flex; align-items:center; justify-content:center; }
.tvblog-search button svg { width:19px; height:19px; }

/* 목록 그리드 */
.tvblog-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:20px; }
.tvblog-card .thumb { position:relative; width:100%; padding-bottom:50%; background:#f0f6fa;
	border-radius:12px; overflow:hidden; aspect-ratio: 16 / 9;}
.tvblog-card .thumb img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.tvblog-card .thumb .tvblog-ph { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }
.tvblog-card .thumb .tvblog-ph svg { width:36px; height:36px; }
.tvblog-card .body { padding:16px 2px 0; }
.tvblog-card .title { font-size:18px; color:#333; line-height:1.3; margin:14px 0 8px; }
.tvblog-card .sub { font-size:13px; color:#686868; line-height:1.3; overflow:hidden;
	text-overflow:ellipsis; white-space:nowrap; }

/* 빈 상태 / 페이징 */
.tvblog-empty { padding:210px 0 260px; text-align:center; color:#333; font-size:20px; line-height:1.3; }
.tvblog-paging { text-align:center; margin:34px 0; }
.tvblog-paging a { display:inline-block; min-width:30px; padding:6px 9px; margin:0 2px;
	border:1px solid #e2e2e2; border-radius:6px; color:#666; cursor:pointer; }
.tvblog-paging a.on { background:#0d99ff; color:#fff; border-color:#0d99ff; }

/* 더보기 버튼 — 모바일 전용(8개씩 누적). 데스크톱은 JS가 숨기고 번호 페이징 사용 */
/* 시안(MO): 풀폭 / 높이40 / 각진 테두리 1px #ddd / 텍스트 "더보기" + 아래꺾쇠, 초기 display:none 은 HTML 인라인 → JS 토글 */
.tvblog-more-wrap { margin:32px 0 8px; }
.tvblog-more { display:flex; align-items:center; justify-content:center; gap:6px;
	width:100%; height:40px; padding:0 16px;
	border:1px solid #ddd; background:#fff; color:#333; font-size:15px; cursor:pointer; }
.tvblog-more svg { width:16px; height:16px; }

/* ============================================================
 *  상세 (.tvblog-detail)
 * ============================================================ */
/* 기사 박스 (테두리) — 시안: #ddd 박스, 내부 컬럼 좌우 여백 */
.tvblog-detail-article { background:#fff; border:1px solid #ddd; padding:60px 10.5%; margin-bottom:44px; }

/* 상단: 뱃지 + 공유 */
.tvblog-detail-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:46px; }
/* 공유 아이콘 — 디자인 완성형 원형 이미지(assets/images/blog/icon_*.png) */
.tvblog-detail-share { display:flex; gap:10px; }
.tvblog-detail-share button { width:32px; height:32px; padding:0; border:0; background:none; cursor:pointer; }
.tvblog-detail-share button img { width:100%; height:100%; display:block; }

/* 제목 / 부제 + 날짜 */
.tvblog-detail-title { font-size:30px; font-weight:500; color:#333; line-height:1.4; margin:0 0 14px; }
.tvblog-detail-submeta { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:26px; }
.tvblog-detail-sub { font-size:17px; color:#686868; margin:0; }
.tvblog-detail-date { flex:0 0 auto; font-size:20px; color:#686868; }

/* 본문 (블럭에디터 컨테이너는 blockEditor-content.css) */
.tvblog-detail-body { min-height:200px; margin-bottom:50px; }
.tvblog-detail-shareimg { display:none; }

/* 관련 콘텐츠 캐러셀 */
.tvblog-rel { margin:44px 0; }
.tvblog-rel-tit { font-size:18px; font-weight:500; color:#191919; margin-bottom:16px; }
.tvblog-rel-carousel { position:relative; }
.tvblog-rel-viewport { overflow-x:auto; scrollbar-width:none; }
.tvblog-rel-viewport::-webkit-scrollbar { display:none; }
.tvblog-rel-track { display:flex; gap:20px; }
.tvblog-rel-card { flex:0 0 calc((100% - 60px) / 4); }
.tvblog-rel-card .thumb { position:relative; width:100%; padding-bottom:56%; background:#f0f6fa;
	border-radius:12px; overflow:hidden; }
.tvblog-rel-card .thumb img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.tvblog-rel-card .thumb .tvblog-ph { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); }
.tvblog-rel-card .thumb .tvblog-ph svg { width:36px; height:36px; }
.tvblog-rel-arrow { position:absolute; top:50%; transform:translateY(-50%); width:46px; height:46px; padding:0;
	border:1px solid #eee; border-radius:50%; background:#fff; box-shadow:0 2px 8px rgba(0,0,0,.12); cursor:pointer;
	display:flex; align-items:center; justify-content:center; color:#333; z-index:2; }
.tvblog-rel-arrow svg { width:18px; height:18px; }
.tvblog-rel-arrow.prev { left:-10px; }
.tvblog-rel-arrow.next { right:-10px; }

/* 이전글 | 목록 | 다음글 */
.tvblog-detail-nav { display:flex; justify-content:flex-end; gap:8px; margin:30px 0; padding-top:24px;
	border-top:1px solid #e5e5e5; }
.tvblog-detail-nav a { border:1px solid #ddd; border-radius:6px; padding:6px 16px; font-size:15px; color:#333;
	max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tvblog-detail-nav a.list { color:#333; }

/* ============================================================
 *  모바일 반응형 (~768px) — 시안 MO_블로그(390) 기준
 * ============================================================ */
@media (max-width: 768px) {
	/* 제목 */
	.tvblog-title { font-size:18px; }
	/* 모바일: breadcrumb 숨김 (시안) — 제목 아래 여백도 제거해 메뉴바와 10px 유지 */
	.tvblog-crumb { display:none; }
	.tvblog-head { margin-bottom:0; }
	/* 모바일 상단 고객지원 메뉴바(top-side-menu 공통 partial) — 풀폭 + 상하 여백(시안: 위10/아래20) */
	.top-side-menu { margin:10px 0 20px; }
	.top-side-menu .com-select.menu-select1 { width:100%; max-width:none; }
	/* 카테고리 뱃지: 모바일 목록 13px (상세는 14px 유지) */
	.tvblog .tvblog-badge { font-size:13px; }

	/* 배너: 풀폭(모바일은 모서리 각지게) */
	.tvblog-banner { margin-bottom:16px; }
	.tvblog-banner img { border-radius:0; }

	/* 베스트 featured: 이미지 배경 + 하단 그라데이션 텍스트 오버레이(시안) */
	.tvblog-featured { margin-bottom:28px; }
	.tvblog-featured .slick-list { border-radius:0; }
	.tvblog-feat-card { position:relative; display:block; height:210px; }
	.tvblog-feat-thumb { position:absolute; inset:0; width:100%; height:100%; flex:none; aspect-ratio: 16 / 9; }
	.tvblog-feat-thumb .tvblog-ph svg { width:44px; height:44px; }
	.tvblog-feat-body { position:absolute; inset:0; border:0; padding:16px;
		background:linear-gradient(180deg, rgba(0,0,0,0) 53%, rgba(0,0,0,.5) 53%); /* 하단 ~47% 솔리드 검정50% 박스(시안) */
		justify-content:flex-end; }
	.tvblog-feat-body .tvblog-badge { position:absolute; top:16px; left:16px; }
	.tvblog-feat-title { color:#fff; font-size:17px; margin:0; }
	.tvblog-feat-sub { color:#fff; font-size:14px; margin-top:8px; }
	.tvblog-featured .slick-dots { justify-content:center; padding-left:0; margin-top:14px; }

	/* 필터: 세로 스택(탭 위 / 검색 아래 풀폭), 탭 내용폭 + 가로 스크롤 */
	.tvblog-filterrow { flex-direction:column; align-items:stretch; gap:12px; }
	.tvblog-tabs { flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; }
	.tvblog-tabs::-webkit-scrollbar { display:none; }
	.tvblog-tabs button { width:auto; min-width:0; flex:0 0 auto; padding:0 18px; }
	.tvblog-search { flex:none; max-width:none; width:100%; }

	/* 그리드 2열 */
	.tvblog-grid { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px; }
	.tvblog-card .title { font-size:16px; }

	/* 빈 상태 여백 축소 (텍스트는 20px 유지 = 시안) */
	.tvblog-empty { padding:120px 0 150px; font-size:20px; }

	/* ---- 상세 (모바일 시안 MO_상세) ---- */
	.tvblog-detail-article { border:0; padding:0; margin-bottom:32px; }   /* 모바일: 기사 테두리 박스 없음, 풀폭 */
	.tvblog-detail-top { margin-bottom:26px; }
	.tvblog-detail-title { font-size:28px; }
	.tvblog-detail-submeta { flex-direction:column; align-items:stretch; gap:4px; }
	.tvblog-detail-sub { font-size:20px; }
	.tvblog-detail-date { font-size:20px; align-self:flex-end; }        /* 날짜 우측 */
	.tvblog-rel-card { flex:0 0 260px; }                                /* 관련글: 가로 스크롤(고정폭) */
	.tvblog-rel-arrow { display:none; }                                 /* 모바일은 스와이프 */
}
