/* =====================================================================================================================
   이호석한의원 사이트 틀 — test2.noszip.com site.css(2026-10-18판) 기준
   병원 오버라이드: 이 파일 + templates/fragments/site-chrome.html(헤더·푸터) + templates/user/home.html(홈)
   메뉴는 계약 구조(fragments/menu :: menuTop — nav.menu-top > ul > li > a + ul.menu-sub)를 원본 #site-nav 모양으로 꾸민다.
   요소 클래스(원본 components.css)는 jy-components.css — 홈·질환 페이지만 로드. 홈 전용은 jy-home.css, 질환은 jy-article.css.
   ===================================================================================================================== */

/* ── 1. 토큰 (원본 :root) ── */
:root{
	--accent:#2f5d4f; --accent-soft:#edf2ef; --accent-deep:#24483d; --gold:#b08a4e; --gold-soft:#f6efe3;
	--ink:#1a1c19; --sub:#3c423b; --muted:#5f6a63; --faint:#8b938c;
	--bg:#fbfaf7; --panel:#ffffff; --line:#e6e3db;
	--font-sans:var(--font-body, Pretendard, -apple-system, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif);
	--font-serif:var(--font-heading, "Noto Serif KR", serif);
	--wrap:1240px; --header-h:83px;
	--shadow-header:0 6px 20px rgba(26,28,25,.06); --shadow-drop:0 20px 44px rgba(26,28,25,.18);
	--primary:var(--accent);
}

/* ── 2. 리셋 · 타이포 (원본 2~3절) ── */
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ max-width:none; margin:0; padding:0; background:var(--bg); color:var(--ink); font-family:var(--font-sans);
	font-size:17px; line-height:1.9; letter-spacing:-.01em; -webkit-font-smoothing:antialiased; overflow-x:clip; }
h1,h2,h3,h4{ margin:0; font-family:var(--font-serif); font-weight:600; letter-spacing:-0.025em; }
p{ margin:0; text-wrap:pretty; }
a{ color:inherit; text-decoration:none; }
a:hover{ color:var(--accent); }
ul,ol{ margin:0; padding:0; list-style:none; }
summary::-webkit-details-marker{ display:none; }
:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 22px; }

/* 본문 래퍼 — 서브페이지는 헤더(sticky) 아래 여백만. 홈은 히어로가 화면 끝까지 */
.page-wrap{ max-width:var(--wrap); margin:0 auto; padding:60px 22px 80px; }
body[data-home] .page-wrap{ max-width:none; padding:0; }

/* ── 3. 헤더 (원본 4절) — 서브페이지: 흰 sticky / 홈: 투명 오버레이(fixed) → 스크롤 시 흰 배경(jy-site.js) ──
      오버레이 규칙은 .site-header.site-header--overlay 로 쓴다 — 4절 메뉴 규칙(.site-header .menu-top …)보다 특이도가 높아야
      홈 메뉴가 흰 글씨가 된다(2026-10-19 메뉴가 어두운 색으로 나오던 원인) */
/* display·padding 은 공통 site.css 의 .site-header(flex, 위아래 여백)를 원본 값으로 되돌린다 — flex 면 안쪽이 콘텐츠 폭으로 줄어 로고가 밀린다 */
.site-header{ display:block; padding:0; position:sticky; top:0; z-index:60; background:var(--panel); border-bottom:1px solid var(--line); box-shadow:var(--shadow-header); }
.site-header__inner{ width:100%; max-width:var(--wrap); margin:0 auto; padding:21px 26px 14px; min-height:var(--header-h);
	display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:nowrap; }
.site-logo{ display:flex; align-items:center; flex:none; }
.site-logo img{ display:block; height:52px; width:auto; }
.site-logo .logo--light{ display:none; }

.site-header.site-header--overlay{ position:fixed; left:0; right:0; top:0; border-bottom:0; box-shadow:none;
	background:linear-gradient(180deg, rgba(30,24,16,.52) 0%, rgba(30,24,16,.22) 60%, rgba(30,24,16,0) 100%);
	transition:background .35s ease, box-shadow .35s ease; }
.site-header.site-header--overlay .menu-top > ul > li > :is(a, .menu-label){ color:#fff; text-shadow:0 1px 6px rgba(0,0,0,.28); }
.site-header.site-header--overlay .menu-top > ul > li > :is(a, .menu-label):hover{ color:#fff; opacity:.72; }
.site-header.site-header--overlay .site-logo .logo--dark{ display:none; }
.site-header.site-header--overlay .site-logo .logo--light{ display:block; }
.site-header.site-header--overlay .nav-toggle svg{ fill:#fff; }
.site-header.site-header--overlay.is-scrolled{ background:rgba(255,255,255,.9); box-shadow:0 6px 20px rgba(26,28,25,.08);
	-webkit-backdrop-filter:saturate(180%) blur(8px); backdrop-filter:saturate(180%) blur(8px); }
.site-header.site-header--overlay.is-scrolled .menu-top > ul > li > :is(a, .menu-label){ color:var(--ink); text-shadow:none; }
.site-header.site-header--overlay.is-scrolled .menu-top > ul > li > :is(a, .menu-label):hover{ color:var(--accent); opacity:1; }
.site-header.site-header--overlay.is-scrolled .site-logo .logo--dark{ display:block; }
.site-header.site-header--overlay.is-scrolled .site-logo .logo--light{ display:none; }
.site-header.site-header--overlay.is-scrolled .nav-toggle svg{ fill:var(--ink); }

/* ── 4. 주 메뉴 (원본 6절 #site-nav) — 계약 구조 nav.menu-top 에 입힌다 ── */
.site-header .menu-top > ul{ display:flex; align-items:center; gap:10px; flex-wrap:nowrap; line-height:1; }
.site-header .menu-top > ul > li{ position:relative; flex:none; }
.site-header .menu-top > ul > li > :is(a, .menu-label){ display:flex; align-items:center; height:40px; padding:0 10px;
	font-size:16px; font-weight:600; color:var(--ink); white-space:nowrap; background:none; border-radius:0; cursor:pointer; }
.site-header .menu-top > ul > li > :is(a, .menu-label):hover{ color:var(--accent); background:none; }
.site-header .menu-top > ul > li > .menu-label{ cursor:default; }   /* 링크 없는 대표 메뉴(질환 그룹) — 누르면 이동하지 않고 하위 메뉴만 연다 */
.site-header .menu-top li.has-sub > :is(a, span)::after{ content:none; }
/* 드롭다운 — 순수 CSS hover. 원본은 패널 위 12px 틈(padding-top) — 마우스가 틈을 지나도 닫히지 않게 ::before 다리 */
.site-header .menu-top li.has-sub > ul.menu-sub{ display:block; position:absolute; top:100%; left:50%; transform:translateX(-50%);
	margin-top:12px; min-width:206px; z-index:80; padding:10px 8px; border:0; border-radius:10px;
	background:var(--panel); box-shadow:var(--shadow-drop); opacity:0; visibility:hidden; transition:opacity .16s ease; }
.site-header .menu-top li.has-sub > ul.menu-sub::before{ content:""; position:absolute; left:0; right:0; top:-12px; height:12px; }
.site-header .menu-top li.has-sub:hover > ul.menu-sub,
.site-header .menu-top li.has-sub:focus-within > ul.menu-sub{ opacity:1; visibility:visible; }
/* 우측 끝 2개는 화면 밖으로 나가지 않도록 오른쪽 정렬 (원본 .nav-item--end) */
.site-header .menu-top > ul > li:nth-last-child(-n+2) > ul.menu-sub{ left:auto; right:0; transform:none; }
.site-header .menu-top ul.menu-sub a{ display:block; padding:9px 14px; border-radius:6px; font-size:14.5px; line-height:1.4;
	color:var(--ink); white-space:nowrap; background:none; }
.site-header .menu-top ul.menu-sub a:hover{ background:var(--accent-soft); color:var(--accent); }
.site-header .menu-top ul.menu-sub li.active > a{ background:var(--accent); color:#fff; }
.site-header .menu-top ul.menu-sub li.menu-heading > span{ display:block; padding:8px 14px 5px; font-size:12px; font-weight:700;
	letter-spacing:.08em; line-height:1.4; color:var(--gold); }
.site-header .menu-top ul.menu-sub li.menu-divider{ display:block; height:1px; margin:7px 12px; border:0; background:var(--line); }

/* ── 5. 모바일 내비 (원본 7절, ≤1000px) — 햄버거·드로어는 jy-site.js 가 메뉴 마크업을 읽어 만든다 ── */
/* 원본은 화면 고정(fixed top:20px)이지만 우리 헤더 위에는 공지 띠(팝업 배너)가 올 수 있어 헤더 기준으로 세로 가운데 둔다 */
.nav-toggle{ display:none; position:absolute; top:50%; right:12px; transform:translateY(-50%); z-index:90; width:44px; height:44px; padding:0; border:0;
	background:none; cursor:pointer; align-items:center; justify-content:center; }
.nav-toggle svg{ display:block; width:24px; height:20px; fill:var(--ink); }
.drawer{ position:fixed; inset:0; z-index:100; display:none; flex-direction:column; background:var(--panel); font-family:var(--font-sans); }
.drawer.is-open{ display:flex; }
.drawer__head{ flex:none; display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--line); }
.drawer__head img{ display:block; height:34px; width:auto; }
.drawer__close{ width:44px; height:44px; border:0; background:none; cursor:pointer; font-size:26px; color:var(--muted); }
.drawer__body{ flex:1; overflow-y:auto; padding:4px 0 28px; }
.drawer__foot{ flex:none; display:flex; gap:8px; padding:14px 18px 22px; border-top:1px solid var(--line); }
.drawer__foot a{ flex:1; display:flex; align-items:center; justify-content:center; height:52px; border-radius:8px; font-size:16px; font-weight:600; }
.drawer__foot .btn-tel{ background:var(--accent-soft); color:var(--ink); }
.drawer__foot .btn-visit{ background:var(--accent); color:#fff; }
.drawer__group{ border-bottom:1px solid var(--line); }
.drawer__trigger{ display:flex; width:100%; align-items:center; justify-content:space-between; padding:17px 20px; border:0; background:none;
	cursor:pointer; text-align:left; font-family:var(--font-serif); font-size:17px; font-weight:600; color:var(--ink); }
.drawer__trigger span{ font-family:var(--font-sans); font-size:14px; color:var(--accent); transition:transform .2s ease; }
.drawer__group.is-open .drawer__trigger span{ transform:rotate(180deg); }
.drawer__items{ display:none; flex-wrap:wrap; gap:8px; padding:0 20px 18px; }
.drawer__group.is-open .drawer__items{ display:flex; }
.drawer__items a{ display:inline-flex; align-items:center; min-height:38px; padding:0 13px; border:1px solid var(--line); border-radius:999px; font-size:14.5px; color:var(--ink); }
.drawer__items a:active, .drawer__items a.is-current{ background:var(--accent); color:#fff; border-color:var(--accent); }
.drawer__items b{ flex-basis:100%; margin-top:6px; font-size:12px; font-weight:700; letter-spacing:.06em; color:var(--gold); }

@media (max-width:1000px){
	.site-header .menu-top{ display:none; }
	.nav-toggle{ display:flex; }
}
@media (max-width:768px){
	.site-header__inner{ padding-left:18px; padding-right:70px; }
	.site-logo img{ height:44px; }
}

/* ── 6. 모바일 하단 고정 "상담 문의하기" (원본 call-bar, jy-site.js 가 body 끝에 넣는다 — 768px 이하) ── */
.call-bar{ display:none; }
@media (max-width:768px){
	.call-bar{ display:block; position:fixed; left:0; right:0; bottom:0; z-index:60; padding-bottom:env(safe-area-inset-bottom);
		background:#2E733B; box-shadow:0 -6px 20px -10px rgba(0,0,0,.35); }
	.call-bar a{ display:flex; align-items:center; justify-content:center; gap:8px; height:60px; color:#fff; font-size:17px; font-weight:700; letter-spacing:-.2px; }
	.call-bar a svg{ width:20px; height:20px; flex:none; }
	body.has-call-bar{ padding-bottom:calc(60px + env(safe-area-inset-bottom)); }
	body.has-call-bar .menu-quick{ bottom:calc(76px + env(safe-area-inset-bottom)); }
}

/* ── 7. 플로팅 버튼 — QUICK 메뉴(계약 구조 nav.menu-quick)를 원본 "TOP" 원형 버튼 모양으로 세로로 쌓는다 ── */
.menu-quick{ position:fixed; right:28px; bottom:28px; top:auto; transform:none; z-index:50; }
.menu-quick ul{ display:flex; flex-direction:column; gap:10px; }
.menu-quick li{ flex:none; }
.menu-quick a{ width:56px; height:56px; border-radius:50%; background:#fff; border:1px solid var(--line); color:var(--muted);
	display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px; padding:0;
	font-size:11px; font-weight:700; line-height:1.1; box-shadow:none; text-decoration:none; }
.menu-quick a::before{ font-size:16px; }
.menu-quick a[data-icon="top"]::before{ content:none; }
.menu-quick a:hover{ border-color:var(--accent); color:var(--accent); }
@media (max-width:768px){
	.menu-quick{ right:12px; left:auto; bottom:12px; }
	.menu-quick ul{ flex-direction:column; background:none; border:0; }
	.menu-quick a{ width:48px; height:48px; }
}

/* ── 8. 푸터 (원본 footer.footer-bg > div.div-14) ── */
.site-footer{ margin:0; padding:0; border:0; background:rgb(39,39,39); color:rgb(179,186,180); text-align:center; font-size:14px; line-height:1.9; }
.site-footer .footer__inner{ max-width:var(--wrap); margin:0 auto; padding:70px 22px; }
.site-footer .footer__logo{ display:block; height:42px; width:auto; margin:0 auto; }
.site-footer .footer__biz{ margin-top:26px; }
.site-footer .footer__copy{ margin-top:26px; font-size:12.5px; letter-spacing:.04em; color:rgb(125,130,125); }
.site-footer .social-links{ justify-content:center; }
/* 법정 게시물 링크(base 가 항상 렌더) — 푸터와 같은 바탕으로 이어 붙인다 */
.site-legal-links{ margin:0; background:rgb(39,39,39); color:rgb(179,186,180); }
.site-legal-links a{ color:rgb(179,186,180); }
.site-legal-links a:hover{ color:#fff; }

@media (prefers-reduced-motion:reduce){ *{ animation-duration:.001ms !important; transition-duration:.001ms !important; } }
@media print{ .site-header, .nav-toggle, .drawer, .call-bar, .menu-quick{ display:none !important; } }

/* =====================================================================================================================
   게시판 · 태그 · 글 상세 — 계약 구조(skin-contract §9) 위에 이호석한의원 톤(세리프 제목·골드 키커·소프트 라인)을 입힌다
   ===================================================================================================================== */
/* 목록 머리 */
.board-page{ max-width:1240px; margin:0 auto; }
.board-head{ margin:0 0 40px; padding-bottom:22px; border-bottom:1px solid var(--line); }
.board-head h1{ font-size:clamp(26px,3vw,36px); line-height:1.3; }
.board-head h1 .tag-hash{ color:var(--gold); font-weight:400; margin-right:2px; }
.board-head__desc{ margin-top:10px; color:var(--muted); font-size:15px; }

/* 항목 공통 */
.board-list{ gap:0; }
.board-item__title{ font-family:var(--font-heading, "Noto Serif KR", serif); font-weight:600; letter-spacing:-0.02em; }
.board-item__title a{ color:var(--ink); transition:color .15s; }
.board-item__title a:hover{ color:var(--accent); }
.board-item__thumb{ border-radius:6px; background:var(--accent-soft); }
.board-item__thumb img{ transition:transform .4s ease; }
.board-item:hover .board-item__thumb img{ transform:scale(1.03); }
.board-item__summary{ color:var(--muted); font-size:15px; line-height:1.8; }
.board-item__meta{ color:#8a948d; font-size:13px; letter-spacing:0; }
.board-item__category{ color:var(--gold); letter-spacing:0.08em; font-size:12px; text-transform:uppercase; }
.board-item__author{ color:var(--ink); }
.board-item__author img{ border:1px solid var(--line); }
.board-item__views::before{ content:""; display:inline-block; width:3px; height:3px; border-radius:50%; background:#c7ccc8; margin:0 8px 3px 0; }

/* 태그 칩 — 목록·상세 공통 */
.board-item__tags li a, .post-tags li a{ background:var(--accent-soft); color:var(--accent); font-size:12.5px; padding:3px 11px; }
.board-item__tags li a::before, .post-tags li a::before{ color:var(--gold); opacity:1; }
.board-item__tags li a:hover, .post-tags li a:hover{ background:var(--accent); color:#fff; }
.board-item__tags li a:hover::before, .post-tags li a:hover::before{ color:#fff; }

/* 블로그형 — 글 하나가 하나의 읽을거리 */
.board-list--blog .board-item{ padding:44px 0; border-bottom:1px solid var(--line); }
.board-list--blog .board-item:first-child{ padding-top:0; }
.board-list--blog .board-item__title{ font-size:clamp(22px,2.4vw,28px); line-height:1.35; }
.board-list--blog .board-item__thumb{ margin-bottom:22px; }
.board-list--blog .board-item__body{ margin-top:18px; font-size:16px; line-height:1.85; color:#3b423e; }
.board-list--blog .board-item__meta{ margin-top:18px; }

/* 웹진형 — 가로 카드 */
.board-list--webzine .board-item{ grid-template-columns:300px 1fr; gap:32px; padding:32px 0; border-bottom:1px solid var(--line); }
.board-list--webzine .board-item:first-child{ padding-top:0; }
.board-list--webzine .board-item__thumb img{ aspect-ratio:4/3; }
.board-list--webzine .board-item__title{ font-size:22px; line-height:1.4; }
.board-list--webzine .board-item__summary{ margin-top:10px; }
.board-list--webzine .board-item__meta{ margin-top:16px; }

/* 갤러리형 — 카드 */
.board-list--gallery{ gap:32px 26px; }
.board-list--gallery .board-item{ background:#fff; border:1px solid var(--line); border-radius:8px; overflow:hidden; transition:transform .2s, box-shadow .2s; }
.board-list--gallery .board-item:hover{ transform:translateY(-3px); box-shadow:0 14px 30px rgba(26,28,25,0.08); }
.board-list--gallery .board-item__thumb{ border-radius:0; }
.board-list--gallery .board-item__title{ font-size:17px; margin:16px 18px 0; line-height:1.45; }
.board-list--gallery .board-item__summary{ margin:8px 18px 0; font-size:14px; }
.board-list--gallery .board-item__meta{ margin:12px 18px 18px; }

/* 게시판형 — 행 */
.board-list--list{ border-top:2px solid var(--accent); }
.board-list--list .board-item{ padding:18px 10px; border-bottom:1px solid var(--line); transition:background .15s; }
.board-list--list .board-item:hover{ background:#fff; }
.board-list--list .board-item__title{ font-family:inherit; font-weight:500; font-size:16px; }

/* 페이저 */
.board-pager{ margin-top:56px; gap:18px; }
.board-pager a{ border:1px solid var(--line); border-radius:999px; padding:9px 22px; color:var(--ink); background:#fff; font-size:14px; transition:all .15s; }
.board-pager a:hover{ border-color:var(--accent); color:var(--accent); }
.board-pager__state{ color:var(--muted); font-size:14px; font-variant-numeric:tabular-nums; }
.board-empty{ padding:80px 0; color:var(--muted); }

/* ── 글 상세 ── */
.post-page .post{ max-width:820px; margin:0 auto; }
.post__title{ font-size:clamp(28px,3.4vw,40px); line-height:1.35; }
.post__date{ margin-top:14px; color:var(--muted); font-size:14px; }
.post-author{ margin:22px 0 36px; padding:14px 18px; background:#fff; border:1px solid var(--line); border-radius:8px; }
.post-author img{ width:46px; height:46px; }
.post-author a{ color:var(--ink); text-decoration:none; font-weight:600; }
.post-author small{ color:var(--muted); }
.post__thumb{ width:100%; border-radius:8px; margin-bottom:36px; }
.post__body img{ max-width:100%; border-radius:6px; }

.post-share{ margin-top:44px; padding-top:24px; border-top:1px solid var(--line); }
.post-share__label{ color:var(--gold); letter-spacing:0.12em; font-size:12px; font-weight:600; }
.post-share a, .post-share button{ border-color:var(--line); color:var(--ink); font-size:13px; padding:7px 15px; transition:all .15s; }
.post-share a:hover, .post-share button:hover{ background:var(--accent); border-color:var(--accent); color:#fff; }
.post-share [data-share="kakao"]:hover{ background:#fee500; border-color:#fee500; color:#191919; }
.post-share [data-share="naver"]:hover{ background:#03c75a; border-color:#03c75a; }
.post-tags{ margin-top:26px; }

.post-nav{ max-width:820px; margin:56px auto 0; gap:14px; border-top:1px solid var(--line); padding-top:26px; }
.post-nav a{ background:#fff; border:1px solid var(--line); border-radius:8px; padding:16px 20px; transition:border-color .15s; }
.post-nav a:hover{ border-color:var(--accent); }
.post-nav small{ color:var(--gold); letter-spacing:0.1em; font-size:11.5px; font-weight:600; }
.post-nav span{ font-family:var(--font-heading, "Noto Serif KR", serif); font-size:16px; line-height:1.45; color:var(--ink); }

.post-related{ max-width:1240px; margin:88px auto 0; padding-top:56px; border-top:1px solid var(--line); }
.post-related h2{ font-size:clamp(22px,2.4vw,28px); margin-bottom:28px; }
.post-related h2::before{ content:"RELATED"; display:block; font-family:var(--font-body, Pretendard, sans-serif); font-size:12px; letter-spacing:0.2em; color:var(--gold); margin-bottom:10px; }
.post-related ul{ gap:26px; }
.post-related__thumb{ border-radius:6px; background:var(--accent-soft); }
.post-related__title{ margin-top:8px; font-family:var(--font-heading, "Noto Serif KR", serif); font-size:16px; line-height:1.45; color:var(--ink); }
.post-related a:hover .post-related__title{ color:var(--accent); }
.post-related__date{ color:#8a948d; }

@media (max-width:900px){
	.board-head{ margin-bottom:28px; }
	.board-list--webzine .board-item{ grid-template-columns:1fr; gap:14px; padding:24px 0; }
	.board-list--blog .board-item{ padding:30px 0; }
	.post-related{ margin-top:56px; padding-top:36px; }
}

/* ── 소셜 링크 — 푸터 톤(어두운 배경) ── */
.social-links{ margin-top:22px; gap:14px; }
.social-link{ color:#9daaa2; font-size:13px; }
.social-link:hover{ color:#fff; }
.social-link:hover .social-link__label{ text-decoration:none; }
.social-link__icon{ width:30px; height:30px; background:rgba(255,255,255,0.12); }
