/*
Theme Name: 두부통신 (Dubu Telecom)
Theme URI: https://example.com/
Author: 두부통신
Description: 앤텔레콤 선불폰·선불유심 비대면 개통 전문 두부통신 워드프레스 테마. 개통 절차를 순차 공개하는 것으로 신뢰를 만드는 구조입니다.
Version: 0.5.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: dubu
Tags: telecom, landing-page, custom-menu, featured-images
*/

/* Hallmark · genre: modern-minimal · macrostructure: Narrative Workflow
 * tone: utilitarian · theme: DESIGN-starbucks.md 적용
 * canvas: #faf6ee warm cream · accent: #00754A green-accent
 * greens: #006241 brand / #00754A accent / #1E3932 house / #2b5148 uplift
 * display: Pretendard · data: IBM Plex Mono
 * axes: light-warm paper / geometric-sans display / chromatic-green accent
 * nav: full-width 3-layer shadow · footer: house-green · float: circular CTA
 */

/* =========================================================================
   1. 토큰 — DESIGN-starbucks.md 의 값을 그대로 옮깁니다.
      본문 CSS 는 반드시 var() 로 참조하고 원시 hex 를 인라인하지 않습니다.
   ====================================================================== */
:root {
	/* ── 4단계 그린 체계. 각 톤은 역할이 정해져 있습니다. ────────────── */
	--green-brand:  #006241;  /* 제목 — 단일 지배색이 필요한 자리 */
	--green-accent: #00754A;  /* 채운 CTA·링크·포커스 */
	--green-house:  #1E3932;  /* 다크 밴드·푸터 */
	--green-uplift: #2b5148;  /* 장식용 보조 다크 */
	--green-light:  #d4e9e2;  /* 옅은 민트 워시 */

	/* ── 표면. 순백이 아니라 따뜻한 크림이 캔버스입니다.
	 *    캔버스는 Gold Lightest(#faf6ee) — Neutral Warm(#f2f0eb)은 채도가 낮아
	 *    넓은 면에 깔면 탁해 보여서 한 단계 아래 구분면으로 내렸습니다.
	 * ---------------------------------------------------------------- */
	--paper-cream:   #faf6ee;  /* 페이지 캔버스 */
	--paper-ceramic: #f2f0eb;  /* 구역 구분용 조금 더 짙은 크림 */
	--paper-white:   #ffffff;  /* 카드·모달 */
	--paper-cool:    #f9f9f9;  /* 드롭다운 등 조용한 유틸리티 면 */

	/* ── 글자. 순검정을 쓰지 않습니다 — 크림 캔버스와 온도를 맞춥니다.
	 *
	 * 보조 글자(--ink-soft)는 0.58 → 0.70 → 0.80 으로 두 번 내렸습니다.
	 * 0.70(8.2:1)도 수치로는 넉넉했지만 화면에서는 여전히 흐려 보였습니다.
	 * 한글은 획이 많아 같은 명도라도 라틴보다 흐리게 읽히기 때문입니다.
	 *
	 * 0.80 이면 흰 카드 위에서 12.6:1 — 사실상 검정으로 읽힙니다.
	 * 대신 본문(--ink)과의 밝기 차이가 거의 사라지므로, 위계는 색이 아니라
	 * 글자 크기와 굵기가 지게 했습니다(.lede·.funnel__hint 등 500 으로).
	 * ---------------------------------------------------------------- */
	--ink:        rgba(0, 0, 0, 0.87);
	--ink-soft:   rgba(0, 0, 0, 0.80);
	--ink-faint:  rgba(0, 0, 0, 0.62);
	--on-dark:      #ffffff;
	--on-dark-soft: rgba(255, 255, 255, 0.88);

	--rule:      rgba(0, 0, 0, 0.12);
	--rule-firm: rgba(0, 0, 0, 0.22);
	--rule-hair: #e7e7e7;
	--input-border: #d6dbde;

	/* ── 의미색 ──────────────────────────────────────────────── */
	--red:        #c82014;
	--red-tint:   hsl(4 82% 43% / 5%);
	--yellow:     #fbbc05;
	--green-tint: hsl(160 32% 87% / 33%);

	/* 카카오 지정 브랜드색 — 변경할 수 없습니다 */
	--kakao:       #fee500;
	--kakao-press: #f2da00;
	--on-kakao:    #191600;

	/* 통신망 식별 — 통신사 브랜드 사실이므로 유지 */
	--kt:      #b3321f;
	--kt-wash: #fbeeec;
	--lg:      #a3116a;
	--lg-wash: #fceef6;

	/* ── 타입 ───────────────────────────────────────────────── */
	/* SoDoSans 는 스타벅스 전용 서체라 쓸 수 없습니다.
	 *
	 * 앞서 Manrope + Noto Sans KR 조합을 썼는데, 두 서체가 글리프 단위로
	 * 번갈아 나오다 보니 한글과 숫자의 굵기·높이가 미묘하게 어긋났습니다.
	 * Pretendard 는 한글과 라틴을 한 서체가 같은 설계로 덮어서 그 어긋남이
	 * 없고, 한글 본문 가독성이 확실히 낫습니다. 하나로 통일합니다. */
	--font-body: "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont,
		"Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
	--font-display: var(--font-body);
	--font-mono: "IBM Plex Mono", ui-monospace, monospace;

	--text-display: clamp(2.25rem, 3.6vw + 1rem, 3.625rem); /* 36 → 58px */
	--text-h2:      clamp(1.625rem, 1.6vw + 1rem, 2.125rem); /* 26 → 34px */
	--text-q:       clamp(1.5rem, 1.4vw + 0.95rem, 2rem);
	--text-opt:     clamp(1.25rem, 0.9vw + 0.95rem, 1.625rem);
	--text-xl:  1.5rem;    /* 24px — h3 */
	--text-lg:  1.1875rem; /* 19px — body large */
	--text-md:  1rem;      /* 16px — body */
	--text-sm:  0.875rem;  /* 14px — 버튼·메타 */
	--text-xs:  0.8125rem; /* 13px — 캡션 */

	/* 문서의 서명 — 전체적으로 살짝 조인 자간.
	 * 원래 -0.01em 이었는데 Pretendard 는 기본 자간이 이미 좁아서, 한글에
	 * 그대로 걸면 글자가 붙어 보입니다. 절반만 남겨 서명은 유지합니다. */
	--track:        -0.005em;
	--track-loose:  0.1em;
	--track-looser: 0.15em;

	--lh-normal:  1.5;
	--lh-compact: 1.2;

	/* ── 간격. 16px 이 시스템 전체의 기준 리듬입니다. ───────────────── */
	--space-1: 4px;
	--space-2: 8px;
	--space-3: 16px;
	--space-4: 24px;
	--space-5: 32px;
	--space-6: 40px;
	--space-7: 48px;
	--space-8: 56px;
	--space-9: 64px;

	--gutter: var(--space-3);
	--maxw: 1200px;
	--measure: 62ch;

	/* ── 반경. 버튼은 예외 없이 50px 풀 필. ────────────────────────── */
	--radius-card:  12px;
	--radius-input: 4px;
	--radius-pill:  50px;

	/* ── 그림자. 무거운 하나 대신 옅은 것을 2~3겹 쌓습니다. ─────────── */
	--shadow-card: 0 0 0.5px rgba(0, 0, 0, 0.14), 0 1px 1px rgba(0, 0, 0, 0.24);
	--shadow-nav:  0 1px 3px rgba(0, 0, 0, 0.10),
		0 2px 2px rgba(0, 0, 0, 0.06),
		0 0 2px rgba(0, 0, 0, 0.07);
	--shadow-float: 0 0 6px rgba(0, 0, 0, 0.24), 0 8px 12px rgba(0, 0, 0, 0.14);
	--shadow-float-active: 0 0 6px rgba(0, 0, 0, 0.24), 0 8px 12px rgba(0, 0, 0, 0);

	/* ── 모션 ───────────────────────────────────────────────── */
	--press: scale(0.95);          /* 모든 버튼의 서명 마이크로 인터랙션 */
	--dur: 0.2s;
	--dur-expander: 300ms;
	--ease: ease;
	--ease-expander: cubic-bezier(0.25, 0.46, 0.45, 0.94);

	--nav-h: 64px;
}

@media (min-width: 480px) { :root { --nav-h: 72px; } }
@media (min-width: 768px) { :root { --nav-h: 83px; --gutter: var(--space-4); } }
@media (min-width: 1024px) { :root { --nav-h: 99px; --gutter: var(--space-6); } }

/* =========================================================================
   2. 리셋 / 기본
   ====================================================================== */
*, *::before, *::after { box-sizing: border-box; }

[hidden] { display: none !important; }

html, body { overflow-x: clip; }

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--nav-h) + var(--space-3));
}

body {
	margin: 0;
	font-family: var(--font-body);
	font-size: var(--text-md);
	font-weight: 400;
	line-height: var(--lh-normal);
	letter-spacing: var(--track);
	color: var(--ink);
	background: var(--paper-cream);
	word-break: keep-all;
	overflow-wrap: break-word;
	padding-top: var(--nav-h);

	/* -webkit-font-smoothing: antialiased 를 뺐습니다.
	 * 이 속성은 윈도우 크롬에서 글자를 실제 굵기보다 얇게 그려서, 색을
	 * 아무리 진하게 해도 흐려 보이는 원인이 됩니다. 기본 렌더링이 한글에
	 * 훨씬 유리합니다. */
}

img, svg { max-width: 100%; height: auto; display: block; }

a { color: var(--green-accent); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* 위계는 크기가 아니라 굵기와 색이 만듭니다 */
h1, h2, h3, h4 {
	margin: 0 0 var(--space-2);
	font-family: var(--font-display);
	line-height: var(--lh-compact);
	letter-spacing: var(--track);
	overflow-wrap: anywhere;
	min-width: 0;
}
h1 { font-size: var(--text-display); font-weight: 800; color: var(--green-brand); }
h2 { font-size: var(--text-h2); font-weight: 700; color: var(--green-brand); }
h3 { font-size: var(--text-xl); font-weight: 700; color: var(--ink); }
h4 { font-size: var(--text-lg); font-weight: 700; color: var(--ink); }

p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.25em; }

button { font: inherit; cursor: pointer; }

:focus-visible {
	outline: 2px solid var(--green-accent);
	outline-offset: 2px;
	border-radius: var(--radius-input);
}

.num, .plan__price b, .stage__no, .spec__v, table td, table th {
	font-variant-numeric: tabular-nums;
}

.sr-only {
	position: absolute; width: 1px; height: 1px;
	padding: 0; margin: -1px; overflow: hidden;
	clip-path: inset(50%); white-space: nowrap; border: 0;
}

.skip-link {
	position: absolute; top: -100px; left: var(--space-3); z-index: 200;
	background: var(--green-house); color: var(--on-dark);
	padding: var(--space-2) var(--space-4);
	border-radius: 0 0 var(--radius-card) var(--radius-card);
	font-size: var(--text-sm); font-weight: 700;
}
.skip-link:focus { top: 0; text-decoration: none; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		transition-duration: 0.01ms !important;
	}
}

/* =========================================================================
   3. 레이아웃 — 색 블록 밴딩이 깊이를 만듭니다. 그라디언트는 쓰지 않습니다.
   ====================================================================== */
.wrap {
	max-width: var(--maxw);
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.wrap--tight { max-width: 760px; }

.band { padding-block: var(--space-7); }
.band--open  { padding-block: var(--space-9) var(--space-7); }
.band--close { padding-block: var(--space-7) var(--space-9); }
.band--dense { padding-block: var(--space-6); }

/* 크림 캔버스 위에 흰 콘텐츠 면이 얹히는 구조 */
.band--tint { background: var(--paper-white); }
.band--ink  { background: var(--green-house); color: var(--on-dark); }
.band--ink h2, .band--ink h3 { color: var(--on-dark); }
.band--ink p { color: var(--on-dark-soft); }
.band--rule { border-top: 1px solid var(--rule); }

.head {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	gap: var(--space-4) var(--space-9);
	align-items: end;
	margin-bottom: var(--space-6);
}
.head > * { margin: 0; }

@media (max-width: 860px) {
	.head { grid-template-columns: minmax(0, 1fr); align-items: start; }
}

/* 보조 글줄은 색이 아니라 크기·굵기로 본문과 구분합니다.
 * 500 은 400 보다 눈에 띄게 단단해서, 크림 배경 위에서 글자가
 * 흐려 보이던 문제가 색 조정만 했을 때보다 확실히 나아집니다. */
.lede {
	max-width: var(--measure);
	color: var(--ink-soft);
	font-size: var(--text-lg);
	font-weight: 500;
	margin: 0;
}
.band--ink .lede { color: var(--on-dark-soft); }

/* =========================================================================
   4. 버튼 — 50px 풀 필은 예외 없음. 누르면 scale(0.95).
   ====================================================================== */
.btn {
	display: inline-flex; align-items: center; justify-content: center;
	gap: var(--space-2);
	padding: 12px 24px;
	font-family: var(--font-body);
	font-size: var(--text-md); font-weight: 700;
	letter-spacing: var(--track);
	line-height: var(--lh-compact);
	border: 1px solid transparent;
	border-radius: var(--radius-pill);
	transition: all var(--dur) var(--ease);
	white-space: nowrap;
	text-align: center;
	min-height: 44px;
}
.btn:hover { text-decoration: none; }
.btn:active, .btn.is-active { transform: var(--press); }
.btn[disabled], .btn[aria-disabled="true"] {
	opacity: 0.45; cursor: not-allowed; pointer-events: none;
}

/* 1. Primary Filled */
.btn--fill {
	background: var(--green-accent);
	border-color: var(--green-accent);
	color: var(--on-dark);
}
.btn--fill:hover, .btn--fill.is-hover {
	background: var(--green-brand); border-color: var(--green-brand); color: var(--on-dark);
}
/* btn--accent 는 btn--fill 의 별칭 — 기존 템플릿 호환용 */
.btn--accent {
	background: var(--green-accent);
	border-color: var(--green-accent);
	color: var(--on-dark);
}
.btn--accent:hover { background: var(--green-brand); border-color: var(--green-brand); color: var(--on-dark); }

/* 2. Primary Outlined */
.btn--line {
	background: transparent;
	border-color: var(--green-accent);
	color: var(--green-accent);
}
.btn--line:hover, .btn--line.is-hover {
	background: var(--green-light); color: var(--green-brand); border-color: var(--green-brand);
}

/* 3. Black Filled — 전환 순간용 */
.btn--dark {
	background: #000; border-color: #000; color: var(--on-dark);
	font-size: var(--text-sm);
}
.btn--dark:hover { background: var(--green-house); border-color: var(--green-house); color: var(--on-dark); }

/* 4. Dark Outlined */
.btn--ghost {
	background: transparent; border-color: var(--ink); color: var(--ink);
	font-size: var(--text-sm);
}
.btn--ghost:hover { background: rgba(0, 0, 0, 0.06); color: var(--ink); }

/* 5. Green-on-Green Inverted — 다크 그린 밴드 위의 주 버튼 */
.btn--onink {
	background: var(--paper-white);
	border-color: var(--paper-white);
	color: var(--green-accent);
}
.btn--onink:hover { background: var(--green-light); border-color: var(--green-light); color: var(--green-brand); }

/* 6. Outlined on Dark — 다크 밴드 위의 보조 버튼 */
.btn--onink-line {
	background: transparent;
	border-color: var(--on-dark);
	color: var(--on-dark);
}
.btn--onink-line:hover { background: rgba(255, 255, 255, 0.12); color: var(--on-dark); }

.btn--kakao { background: var(--kakao); border-color: var(--kakao); color: var(--on-kakao); }
.btn--kakao:hover { background: var(--kakao-press); border-color: var(--kakao-press); color: var(--on-kakao); }

.btn--lg { padding: 14px 32px; font-size: var(--text-lg); }
.btn--block { width: 100%; }

.tlink {
	display: inline-flex; align-items: center; gap: var(--space-1);
	font-size: var(--text-md); font-weight: 700;
	color: var(--green-accent);
	white-space: nowrap;
	min-height: 32px;
}
.tlink:hover { color: var(--green-brand); }

/* =========================================================================
   5. 글로벌 내비게이션 — 고정 바 + 3겹 옅은 그림자
   ====================================================================== */
.nav {
	position: fixed; top: 0; left: 0; right: 0;
	z-index: 100;
	height: var(--nav-h);
	display: flex; align-items: center; gap: var(--space-4);
	padding-inline: var(--gutter);
	background: var(--paper-white);
	box-shadow: var(--shadow-nav);
}

.nav__mark {
	display: inline-flex; align-items: center; gap: var(--space-2);
	font-family: var(--font-display);
	font-size: var(--text-lg); font-weight: 800;
	letter-spacing: var(--track);
	color: var(--green-brand);
	white-space: nowrap;
}
.nav__mark:hover { text-decoration: none; }

/* 앤텔레콤 인증 배지 — 워드마크 왼쪽에 붙습니다 */
.nav__badge { width: 44px; height: 44px; object-fit: contain; flex-shrink: 0; }

@media (max-width: 480px) {
	.nav__badge { width: 34px; height: 34px; }
}

.nav__links {
	display: flex; align-items: center; gap: var(--space-4);
	list-style: none; margin: 0 auto 0 var(--space-4); padding: 0;
}
.nav__links a {
	font-size: var(--text-md); font-weight: 700;
	color: var(--ink);
	white-space: nowrap;
	padding-block: var(--space-2);
}
.nav__links a:hover { color: var(--green-accent); text-decoration: none; }
.nav__links .current-menu-item > a,
.nav__links a.is-here { color: var(--green-accent); }

.nav__cta { display: flex; align-items: center; gap: var(--space-2); margin-left: auto; }
.nav .btn { padding: 9px 18px; font-size: var(--text-sm); min-height: 38px; }

.nav__toggle {
	display: none; margin-left: auto;
	width: 44px; height: 44px;
	align-items: center; justify-content: center;
	background: none; border: 0; border-radius: 50%;
	color: var(--ink);
}
.nav__toggle:hover { background: rgba(0, 0, 0, 0.06); }
.nav__bar { display: block; width: 18px; height: 2px; background: currentColor; position: relative; }
.nav__bar::before, .nav__bar::after {
	content: ""; position: absolute; left: 0;
	width: 18px; height: 2px; background: currentColor;
}
.nav__bar::before { top: -6px; }
.nav__bar::after  { top: 6px; }

@media (max-width: 900px) {
	.nav__toggle { display: inline-flex; }
	.nav__cta { margin-left: 0; }
	.nav__cta .btn--ghost { display: none; }
	.nav__links {
		display: none;
		position: absolute; top: 100%; left: 0; right: 0;
		flex-direction: column; align-items: stretch; gap: 0;
		margin: 0;
		padding: var(--space-2) var(--gutter) var(--space-4);
		background: var(--paper-white);
		box-shadow: var(--shadow-nav);
	}
	.nav__links.is-open { display: flex; }
	.nav__links a { padding: var(--space-3) 0; border-bottom: 1px solid var(--rule-hair); }
}

/* =========================================================================
   6. 히어로 — 크림 캔버스
   ====================================================================== */
/* 히어로는 중앙 축으로 세웁니다 — 바로 아래 선택 카드도 중앙정렬이라
   위에서 아래로 하나의 축이 이어집니다. */
/* 중앙정렬이라 요소가 세로로 쌓입니다. 퍼널 선택지를 첫 화면에 두려면
   가로 배치일 때보다 여백을 조금 더 조여야 합니다. */
.hero { padding-block: var(--space-6) var(--space-4); text-align: center; }

.hero__grid { margin-bottom: var(--space-4); }
.hero h1 { margin: 0 0 var(--space-3); font-size: clamp(2.25rem, 3.2vw + 1rem, 3.25rem); }
.hero .lede { margin-inline: auto; }

.hero__kicker {
	display: inline-block;
	margin: 0 0 var(--space-2);
	padding: 5px 14px;
	background: var(--green-light);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm); font-weight: 700;
	letter-spacing: var(--track);
	color: var(--green-brand);
}

.hero__stages {
	display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center;
	gap: var(--space-2) var(--space-4);
	list-style: none; margin: 0 0 var(--space-2); padding: 0;
	font-size: var(--text-sm);
	color: var(--ink-soft);
}
.hero__stages li { display: inline-flex; align-items: baseline; gap: var(--space-1); }
.hero__stages b {
	color: var(--green-accent); font-weight: 800;
	font-family: var(--font-mono); font-size: var(--text-xs);
}
.hero__stages li::after { content: "·"; margin-left: var(--space-3); color: var(--ink-faint); }
.hero__stages li:last-child::after { content: none; }

.hero__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); margin-top: var(--space-4); }

/* 사실 목록 — 자랑이 아니라 조건 명시 */
.facts { list-style: none; margin: var(--space-6) 0 0; padding: 0; }
.facts--flush { margin-top: 0; }
.facts li {
	display: grid;
	grid-template-columns: minmax(0, 9rem) minmax(0, 1fr);
	gap: var(--space-3);
	padding: var(--space-3) 0;
	border-bottom: 1px solid var(--rule-hair);
	font-size: var(--text-md);
}
.facts li:first-child { border-top: 1px solid var(--rule-hair); }
.facts .k { color: var(--ink-soft); font-weight: 700; font-size: var(--text-sm); }
.facts .v { color: var(--ink); }

@media (max-width: 860px) {
	.hero { padding-block: var(--space-6) var(--space-5); }
	.hero__grid { margin-bottom: var(--space-5); }
}

@media (max-width: 620px) {
	/* 제목이 세 줄로 늘어나면 선택지가 첫 화면 밖으로 밀립니다.
	   좁은 화면에서는 두 줄에 들어오는 크기로 낮춥니다. */
	.hero h1 { font-size: clamp(1.5rem, 6.6vw, 1.875rem); }
	.hero { padding-block: var(--space-5) var(--space-4); }
	.hero__grid { margin-bottom: var(--space-4); }
	.hero__stages { display: none; }
}

/* =========================================================================
   7. 개통 자격 판별 퍼널
   ====================================================================== */
.funnel { scroll-margin-top: calc(var(--nav-h) + var(--space-4)); }

.funnel__card {
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
	padding: var(--space-5);
}

.funnel__meta {
	display: flex; align-items: center; gap: var(--space-3);
	margin-bottom: var(--space-4);
	padding-bottom: var(--space-3);
	border-bottom: 1px solid var(--rule-hair);
	font-size: var(--text-xs); font-weight: 700;
	color: var(--ink-soft);
}
.funnel__ticks { display: flex; gap: var(--space-1); flex: 1; }
.funnel__tick {
	flex: 1; height: 4px; border-radius: var(--radius-pill);
	background: var(--rule-hair);
	transition: background-color var(--dur) var(--ease);
}
.funnel__tick.is-done    { background: var(--green-light); }
.funnel__tick.is-current { background: var(--green-accent); }

.funnel__step { display: none; }
.funnel__step.is-active { display: block; }

.funnel__q {
	font-family: var(--font-display);
	font-size: var(--text-q); font-weight: 800;
	letter-spacing: var(--track);
	line-height: var(--lh-compact);
	color: var(--green-brand);
	margin: 0 0 var(--space-2);
	text-align: center;
	overflow-wrap: anywhere; min-width: 0;
}
.funnel__hint {
	color: var(--ink-soft); font-size: var(--text-lg);
	font-weight: 500;
	margin: 0 auto var(--space-5);
	text-align: center;
	max-width: 52ch;
}

.funnel__opts {
	display: grid; gap: var(--space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
}

/* 선택지 카드 — 12px 반경 + 속삭이는 그림자 */
.opt {
	display: flex; flex-direction: column; align-items: center;
	text-align: center;
	gap: var(--space-2);
	padding: var(--space-6) var(--space-4) var(--space-4);
	background: var(--paper-white);
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
	color: var(--ink);
	transition: all var(--dur) var(--ease);
	min-height: 11rem;
}
.opt:hover, .opt.is-hover {
	border-color: var(--green-accent);
	text-decoration: none; color: var(--ink);
}
.opt:active { transform: var(--press); }

.opt__yn {
	font-family: var(--font-display);
	font-size: var(--text-opt); font-weight: 800;
	letter-spacing: var(--track); line-height: var(--lh-compact);
	color: var(--green-brand);
}
.opt__desc {
	font-size: var(--text-md); color: var(--ink-soft);
	font-weight: 500;
	line-height: var(--lh-normal); max-width: 24ch;
}

/* 권장 경로는 채운 필, 대체 경로는 외곽선 필 — 문서의 버튼 위계 그대로 */
.opt__tag {
	display: flex; align-items: center; justify-content: center;
	gap: var(--space-1);
	width: 100%; margin-top: auto;
	padding: 12px 16px;
	border: 1px solid var(--green-accent);
	border-radius: var(--radius-pill);
	background: var(--green-accent);
	color: var(--on-dark);
	font-size: var(--text-md); font-weight: 700;
	letter-spacing: var(--track);
	white-space: nowrap;
	transition: all var(--dur) var(--ease);
	min-height: 44px;
}
.opt:hover .opt__tag, .opt.is-hover .opt__tag {
	background: var(--green-brand); border-color: var(--green-brand);
}

.opt--exit .opt__tag {
	background: transparent;
	color: var(--green-accent);
	border-color: var(--green-accent);
}
.opt--exit:hover .opt__tag, .opt--exit.is-hover .opt__tag {
	background: var(--green-light); color: var(--green-brand); border-color: var(--green-brand);
}

.opt__chips {
	display: flex; flex-wrap: wrap; justify-content: center;
	gap: var(--space-1);
	list-style: none; margin: 0 0 var(--space-2); padding: 0;
}
.opt__chips li {
	padding: 3px 10px;
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-pill);
	font-size: var(--text-xs);
	color: var(--ink-soft);
	background: var(--paper-cool);
}

/* 퍼널 안에서 바로 보여주는 호환 유심 목록 */
.simlist {
	display: grid; gap: var(--space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
	list-style: none; margin: 0; padding: 0;
}
.simlist__item {
	display: grid;
	grid-template-columns: minmax(0, 5.5rem) minmax(0, 1fr);
	gap: var(--space-3);
	padding: var(--space-3);
	background: var(--paper-cream);
	border-radius: var(--radius-card);
	text-align: left;
}

/* 실물 사진 — 상자가 칸 높이만큼 늘어나지 않게 붙입니다 */
.simlist__shot {
	align-self: start;
	display: block;
	padding: var(--space-1);
	background: var(--paper-white);
	border-radius: var(--radius-input);
}
.simlist__shot img { width: 100%; height: auto; display: block; border-radius: 2px; }

.simlist__body { display: block; min-width: 0; }
.simlist__name {
	display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-2);
	margin: var(--space-2) 0 0;
	font-size: var(--text-md); font-weight: 700;
	letter-spacing: var(--track);
	color: var(--green-brand);
}
.simlist__name b { font-size: var(--text-md); color: var(--ink); font-weight: 800; }

/* 패널 안에서는 chips 를 span 으로 쓰므로 flex 를 다시 잡아줍니다 */
.simlist__item .chips {
	display: flex; flex-wrap: wrap; gap: var(--space-1);
	margin-top: var(--space-2);
}
.simlist__item .chips span {
	padding: 3px 10px;
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-pill);
	font-size: var(--text-xs);
	color: var(--ink-soft);
	background: var(--paper-white);
}

/* 앞으로 가는 버튼이 먼저, 가이드는 보조 */
.funnel__panel-cta {
	display: flex; flex-wrap: wrap; justify-content: center;
	gap: var(--space-3);
	margin: var(--space-5) 0 0;
}

.funnel__back {
	display: inline-flex; align-items: center; gap: var(--space-1);
	margin-top: var(--space-4);
	padding: var(--space-2) 0;
	background: none; border: 0;
	font-size: var(--text-md); font-weight: 700;
	color: var(--green-accent);
	min-height: 32px;
}
.funnel__back:hover { color: var(--green-brand); }

.funnel__note {
	margin: var(--space-4) 0 0;
	padding-top: var(--space-3);
	border-top: 1px solid var(--rule-hair);
	font-size: var(--text-md); color: var(--ink-soft);
}

.notice {
	padding: var(--space-3) var(--space-4);
	margin-bottom: var(--space-4);
	background: var(--paper-cool);
	border-left: 3px solid var(--yellow);
	border-radius: var(--radius-input);
	font-size: var(--text-sm);
	color: var(--ink-soft);
}
.notice strong { color: var(--ink); }
.notice code { font-family: var(--font-mono); font-size: 0.92em; }

@media (max-width: 620px) {
	.funnel__card { padding: var(--space-4) var(--space-3); }
	.funnel__hint { margin-bottom: var(--space-4); }
	.opt { padding: var(--space-4); min-height: 0; }

	/* 1단계는 가장 중요한 분기입니다. 세로로 쌓으면 한 번에 하나만
	   보이므로 좁은 화면에서도 두 선택지를 나란히 둡니다. */
	[data-step="1"] .funnel__opts { grid-template-columns: 1fr 1fr; gap: var(--space-2); }
	[data-step="1"] .opt { padding: var(--space-3) var(--space-2) var(--space-2); gap: var(--space-1); }
	[data-step="1"] .opt__desc { font-size: var(--text-sm); }
	[data-step="1"] .opt__chips { display: none; }
	[data-step="1"] .opt__tag { font-size: var(--text-sm); padding: 10px 8px; }
}

@media (max-width: 360px) {
	[data-step="1"] .opt__yn { font-size: 1.125rem; }
	[data-step="1"] .opt__desc { font-size: var(--text-xs); }
	[data-step="1"] .opt__tag { font-size: var(--text-xs); }
}

/* =========================================================================
   7-2. 준비물 카드 (개통 절차 페이지)

   '없으면 어떻게 되는지'를 카드마다 끝에 붙입니다. 준비물만 나열하면
   빠진 사람이 그 자리에서 이탈하는데, 대안이 보이면 남습니다.
   ====================================================================== */
.preps {
	display: grid; gap: var(--space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
	margin-bottom: var(--space-4);
}

.prep {
	display: flex; flex-direction: column;
	padding: var(--space-5) var(--space-4) var(--space-4);
	background: var(--paper-white);
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
}
.prep__no {
	font-family: var(--font-mono);
	font-size: var(--text-md); font-weight: 500;
	color: var(--green-accent);
	margin: 0 0 var(--space-2);
}
.prep h3 { font-size: var(--text-lg); margin-bottom: var(--space-2); }
.prep p { font-size: var(--text-md); color: var(--ink-soft); margin: 0 0 var(--space-3); }

.prep__else {
	margin-top: auto; margin-bottom: 0 !important;
	padding-top: var(--space-3);
	border-top: 1px solid var(--rule-hair);
	font-size: var(--text-sm) !important;
}
.prep__else b { color: var(--ink); font-weight: 700; }

/* 방문개통 문의 버튼 줄 */
.visit__cta { display: flex; flex-wrap: wrap; gap: var(--space-3); margin: var(--space-5) 0 0; }

/* =========================================================================
   8. Narrative Workflow — 번호 있는 단계
   ====================================================================== */
.stages { list-style: none; margin: 0; padding: 0; }

/* 개통 후 안내처럼 설명이 짧은 목록은 단계 간격을 조입니다 */
.stages--tight .stage { padding-block: var(--space-4); }

.stage {
	display: grid;
	grid-template-columns: minmax(0, 7rem) minmax(0, 1fr);
	gap: var(--space-4) var(--space-9);
	padding-block: var(--space-6);
	border-top: 1px solid var(--rule);
}
.stage:first-child { border-top-color: var(--green-accent); border-top-width: 2px; }

.stage__no {
	font-family: var(--font-mono);
	font-size: var(--text-md); font-weight: 500;
	color: var(--green-accent);
	padding-top: 2px;
}
.stage__no small {
	display: block;
	color: var(--ink-soft);
	font-family: var(--font-body);
	font-size: var(--text-xs); font-weight: 700;
	margin-top: var(--space-1);
}

.stage__body > :last-child { margin-bottom: 0; }
.stage h3 { margin-bottom: var(--space-2); }
.stage p { color: var(--ink-soft); font-size: var(--text-md); max-width: var(--measure); }

/* 단계 안의 링크·버튼 줄. 앞 요소가 표든 팁이든 같은 간격이 되게 따로 둡니다. */
.stage__more { margin-top: var(--space-3); margin-bottom: 0; }

.stage__tip {
	margin-top: var(--space-3);
	padding: var(--space-3) var(--space-4);
	background: var(--green-light);
	border-radius: var(--radius-card);
	font-size: var(--text-md);
	color: var(--green-house);
}
.stage__tip strong { font-weight: 700; }
/* 연초록 배경 위에서는 Green Accent 가 4.5:1 에 아슬아슬하므로 한 단계 진하게 */
.stage__tip a, .entry__content blockquote a { color: var(--green-brand); font-weight: 700; }

@media (max-width: 720px) {
	.stage { grid-template-columns: minmax(0, 1fr); gap: var(--space-2); }
	.stage__no { padding-top: 0; }
	.stage__no small { display: inline; margin-left: var(--space-2); }
}

.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); list-style: none; margin: var(--space-3) 0 0; padding: 0; }
.chips li {
	padding: 5px 14px;
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm);
	color: var(--ink-soft);
	background: var(--paper-white);
}
.band--ink .chips li {
	background: rgba(255, 255, 255, 0.10);
	border-color: rgba(255, 255, 255, 0.24);
	color: var(--on-dark);
}

/* =========================================================================
   9. 요금제
   ====================================================================== */
.tabs {
	display: flex; gap: var(--space-2);
	margin-bottom: var(--space-5);
	flex-wrap: wrap;
}
.tab {
	padding: 9px 20px;
	background: transparent;
	border: 1px solid var(--rule-firm);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm); font-weight: 700;
	letter-spacing: var(--track);
	color: var(--ink);
	min-height: 40px;
	white-space: nowrap;
	transition: all var(--dur) var(--ease);
}
.tab:hover { border-color: var(--green-accent); color: var(--green-accent); }
.tab:active { transform: var(--press); }
.tab[aria-selected="true"] {
	background: var(--green-accent); border-color: var(--green-accent); color: var(--on-dark);
}

.plans {
	display: grid; gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
}

.plan {
	display: flex; flex-direction: column;
	padding: var(--space-4);
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
	transition: all var(--dur) var(--ease);
}
.plan:hover { box-shadow: 0 0 0.5px rgba(0,0,0,0.14), 0 4px 8px rgba(0,0,0,0.16); }

.plan__head {
	display: flex; align-items: center; gap: var(--space-2);
	flex-wrap: wrap;
	margin-bottom: var(--space-3);
}

.plan__net {
	font-size: var(--text-xs); font-weight: 700;
	letter-spacing: var(--track);
	padding: 4px 10px;
	border-radius: var(--radius-pill);
}
.plan__net--kt { background: var(--kt-wash); color: var(--kt); }
.plan__net--lg { background: var(--lg-wash); color: var(--lg); }

.plan__flag {
	font-size: var(--text-xs); font-weight: 700;
	color: var(--green-accent);
}

.plan__name { font-size: var(--text-xl); font-weight: 700; color: var(--green-brand); margin: 0 0 var(--space-1); }
.plan__tag { font-size: var(--text-sm); color: var(--ink-soft); margin: 0 0 var(--space-3); }

.plan__price {
	display: flex; align-items: baseline; gap: var(--space-1);
	margin: 0 0 var(--space-3);
	padding-bottom: var(--space-3);
	border-bottom: 1px solid var(--rule-hair);
}
.plan__price b {
	font-size: 1.75rem; font-weight: 800;
	letter-spacing: var(--track);
	color: var(--ink);
}
.plan__price span { font-size: var(--text-sm); color: var(--ink-soft); }

.specs { list-style: none; margin: 0 0 var(--space-4); padding: 0; }
.specs li {
	display: grid;
	grid-template-columns: minmax(0, 3.75rem) minmax(0, 1fr);
	gap: var(--space-3);
	padding-block: var(--space-1);
	align-items: baseline;
}
.spec__k { font-size: var(--text-xs); font-weight: 700; color: var(--ink-soft); }
.spec__v { font-size: var(--text-sm); color: var(--ink); }
.spec__v small { display: block; font-size: var(--text-xs); color: var(--ink-soft); }

.plan .btn { margin-top: auto; }

/* 추천 요금제를 망별로 묶습니다 */
.plangroup + .plangroup { margin-top: var(--space-7); }
.plangroup__head {
	margin: 0 0 var(--space-3);
	padding-bottom: var(--space-3);
	border-bottom: 1px solid var(--rule-hair);
}

/* 요금제 전체 표 */
.ptable { font-size: var(--text-sm); }
.ptable th[scope="row"] {
	font-weight: 700; color: var(--ink);
	white-space: normal;
	min-width: 11rem;
}
.ptable td { color: var(--ink); white-space: nowrap; }
.ptable small {
	display: block;
	font-size: var(--text-xs); font-weight: 400;
	color: var(--ink-soft);
	white-space: normal;
}
.ptable__price { font-weight: 800; }
.ptable__gen {
	display: inline-block; margin-left: var(--space-1);
	padding: 1px 7px;
	background: var(--green-light); color: var(--green-brand);
	border-radius: var(--radius-pill);
	font-size: var(--text-xs); font-weight: 700;
}
.ptable tbody tr:hover { background: var(--paper-cream); }

.plans__note {
	margin: var(--space-4) 0 0;
	font-size: var(--text-sm);
	color: var(--ink-soft);
}

/* 망 비교 */
.nets { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); }
.net {
	padding: var(--space-5);
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
}
.net h3 { margin-block: var(--space-3) var(--space-2); color: var(--green-brand); }
.net p { color: var(--ink-soft); font-size: var(--text-md); }
.net__note {
	padding: var(--space-3) var(--space-4);
	font-size: var(--text-md);
	border-radius: var(--radius-card);
	margin-bottom: var(--space-3);
}
.net__note--warn { background: var(--paper-ceramic); color: var(--ink); }
.net__note--ok   { background: var(--green-light); color: var(--green-house); }

/* =========================================================================
   9-b. 유심 비교 카드
   ====================================================================== */
.usims {
	display: grid; gap: var(--space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
}

.usim {
	display: grid;
	grid-template-columns: minmax(0, 8.5rem) minmax(0, 1fr);
	gap: var(--space-4);
	padding: var(--space-4);
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
}

/* 실물 포장 사진 — 크림 배경 위에 놓아 물건처럼 보이게 합니다.
   align-self: start 가 없으면 상자가 칸 높이만큼 늘어나 사진 아래로
   빈 크림색 꼬리가 생깁니다. 사진 높이에 맞춰 붙입니다. */
.usim__shot {
	align-self: start;
	display: flex; justify-content: center;
	padding: var(--space-2);
	background: var(--paper-cream);
	border-radius: var(--radius-input);
}
.usim__shot img { width: 100%; height: auto; border-radius: 2px; }

.usim__body > :last-child { margin-bottom: 0; }
.usim__body h3 { margin: var(--space-2) 0 var(--space-1); font-size: var(--text-lg); color: var(--green-brand); }
.usim__body h4 {
	margin: var(--space-4) 0 0;
	font-size: var(--text-xs); font-weight: 700;
	letter-spacing: var(--track-loose);
	color: var(--ink-soft);
}

.usim__price {
	display: flex; align-items: baseline; gap: 2px;
	margin: 0 0 var(--space-3);
	padding-bottom: var(--space-3);
	border-bottom: 1px solid var(--rule-hair);
}
.usim__price b { font-size: 1.625rem; font-weight: 800; letter-spacing: var(--track); }
.usim__price span { font-size: var(--text-sm); color: var(--ink-soft); }

.usim__spec { list-style: none; margin: 0; padding: 0; }
.usim__spec li {
	display: grid;
	grid-template-columns: minmax(0, 4.5rem) minmax(0, 1fr);
	gap: var(--space-2);
	padding-block: 3px;
	align-items: baseline;
	font-size: var(--text-sm);
}
.usim__spec .k { color: var(--ink-soft); font-weight: 700; font-size: var(--text-xs); }
.usim__spec .v { color: var(--ink); }

.usim__tip {
	margin: var(--space-3) 0 0;
	font-size: var(--text-sm);
	color: var(--ink-soft);
}
.usim__tip strong { color: var(--ink); font-weight: 700; }

@media (max-width: 520px) {
	.usim { grid-template-columns: minmax(0, 1fr); }
	.usim__shot { max-width: 11rem; margin-inline: auto; }
}

/* =========================================================================
   10. FAQ — 300ms 계측된 이즈아웃
   ====================================================================== */
.faq { border-top: 1px solid var(--rule-hair); }
.faq__item { border-bottom: 1px solid var(--rule-hair); }

.faq__q {
	width: 100%; display: flex; align-items: baseline; gap: var(--space-3);
	padding: var(--space-4) 0;
	background: none; border: 0;
	text-align: left;
	font-family: var(--font-display);
	font-size: var(--text-lg); font-weight: 700;
	letter-spacing: var(--track);
	color: var(--ink);
	transition: color var(--dur-expander) var(--ease-expander);
	min-height: 44px;
}
.faq__q:hover { color: var(--green-accent); }
.faq__q::after {
	content: "+"; margin-left: auto; flex-shrink: 0;
	font-weight: 400; color: var(--green-accent);
}
.faq__q[aria-expanded="true"]::after { content: "−"; }

.faq__a {
	padding: 0 0 var(--space-5);
	max-width: var(--measure);
	font-size: var(--text-md);
	color: var(--ink-soft);
}
.faq__a > :last-child { margin-bottom: 0; }

/* =========================================================================
   11. 블로그 — 목록
   ====================================================================== */

/* ── 카테고리 칩 줄 ─────────────────────────────────────────────
 * 좁은 화면에서는 줄바꿈 대신 가로 스크롤로 흘립니다. 분류가 늘어나도
 * 목록 위쪽 높이가 들쭉날쭉해지지 않습니다.
 * ------------------------------------------------------------------- */
.catbar {
	display: flex; gap: var(--space-2);
	margin-bottom: var(--space-5);
	overflow-x: auto;
	scrollbar-width: none;
	padding-bottom: var(--space-1);
}
.catbar::-webkit-scrollbar { display: none; }

.catbar__chip {
	display: inline-flex; align-items: center; gap: 6px;
	flex-shrink: 0;
	min-height: 40px; padding-inline: var(--space-4);
	background: var(--paper-white);
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm); font-weight: 700;
	color: var(--ink);
	white-space: nowrap;
	transition: all var(--dur) var(--ease);
}
.catbar__chip:hover { border-color: var(--green-accent); color: var(--green-accent); text-decoration: none; }
.catbar__chip:active { transform: var(--press); }
.catbar__chip.is-on {
	background: var(--green-accent); border-color: var(--green-accent); color: var(--on-dark);
}
.catbar__n { font-size: var(--text-xs); font-weight: 500; color: var(--ink-soft); font-variant-numeric: tabular-nums; }
.catbar__chip.is-on .catbar__n { color: var(--on-dark-soft); }

/* ── 검색 상자 ────────────────────────────────────────────────── */
.search {
	display: flex; gap: var(--space-2);
	margin-top: var(--space-5);
	max-width: 460px;
}
.search__field {
	flex: 1 1 auto; min-width: 0;
	min-height: 48px; padding-inline: var(--space-4);
	font: inherit; font-size: var(--text-md);
	letter-spacing: var(--track);
	color: var(--ink);
	background: var(--paper-white);
	border: 1px solid var(--input-border);
	border-radius: var(--radius-pill);
}
.search__field::placeholder { color: var(--ink-soft); }
.search__field:focus { outline: 2px solid var(--green-accent); outline-offset: 1px; }
.search__go {
	flex-shrink: 0;
	min-height: 48px; padding-inline: var(--space-5);
	background: var(--green-accent); color: var(--on-dark);
	border: 1px solid var(--green-accent);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm); font-weight: 700;
	letter-spacing: var(--track);
	transition: all var(--dur) var(--ease);
}
.search__go:hover { background: var(--green-brand); border-color: var(--green-brand); }
.search__go:active { transform: var(--press); }

/* ── 카드 격자 ──────────────────────────────────────────────────
 * 카드 안쪽 여백은 .post 가 아니라 .post__body 가 집니다 —
 * 썸네일이 카드 모서리까지 꽉 차야 하기 때문입니다.
 * ------------------------------------------------------------------- */
.posts { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.posts--lead { grid-template-columns: minmax(0, 1fr); margin-bottom: var(--space-4); }

.post {
	display: flex; flex-direction: column;
	overflow: hidden;
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
	color: var(--ink);
	transition: box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.post:hover {
	text-decoration: none;
	transform: translateY(-2px);
	box-shadow: 0 0 0.5px rgba(0, 0, 0, 0.14), 0 4px 8px rgba(0, 0, 0, 0.16);
}
.post:hover .post__title { color: var(--green-accent); }
.post:hover .post__more::after { transform: translateX(3px); }

.post__thumb {
	aspect-ratio: 16 / 10;
	background: var(--paper-ceramic);
	overflow: hidden;
}
.post__thumb img { width: 100%; height: 100%; object-fit: cover; }

.post__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: var(--space-4); }

.post__meta {
	display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
	margin: 0 0 var(--space-2);
	font-size: var(--text-xs);
	color: var(--ink-soft);
}
.post__meta > * + *::before { content: "·"; margin-right: 6px; color: var(--ink-faint); }
.post__cat { font-weight: 700; color: var(--green-accent); }
.post__mins { font-variant-numeric: tabular-nums; }

.post__title {
	font-family: var(--font-display);
	font-size: var(--text-lg); font-weight: 700;
	letter-spacing: var(--track); line-height: 1.35;
	color: var(--ink);
	margin: 0 0 var(--space-2);
	transition: color var(--dur) var(--ease);
}
.post__excerpt { font-size: var(--text-sm); color: var(--ink-soft); margin: 0 0 var(--space-4); }

.post__more {
	margin-top: auto;
	font-size: var(--text-sm); font-weight: 700;
	color: var(--green-accent);
}
.post__more::after {
	content: "→"; display: inline-block; margin-left: 6px;
	transition: transform var(--dur) var(--ease);
}

/* 목록 아래 "전체 보기" */
.more { display: flex; justify-content: center; margin: var(--space-5) 0 0; }

/* 대표 글 — 첫 페이지 맨 위 한 장만 가로형으로 키웁니다 */
@media (min-width: 720px) {
	.post--lead { flex-direction: row; align-items: stretch; }
	.post--lead .post__thumb { flex: 0 0 46%; aspect-ratio: auto; }
	.post--lead .post__body { justify-content: center; padding: var(--space-6); }
	.post--lead .post__title { font-size: var(--text-xl); }
	.post--lead .post__excerpt { font-size: var(--text-md); }

	/* 대표 이미지를 안 걸면 카드가 화면 전폭으로 늘어납니다.
	   그때 글줄이 너무 길어지지 않게 본문 쪽만 붙잡아 둡니다. */
	.post--lead .post__body > * { max-width: 62ch; }
}

/* ── 비어 있는 목록 ──────────────────────────────────────────── */
.empty {
	padding: var(--space-8) var(--space-4);
	text-align: center;
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
}
.empty__msg {
	margin: 0 0 var(--space-2);
	font-family: var(--font-display);
	font-size: var(--text-xl); font-weight: 700;
	letter-spacing: var(--track);
	color: var(--ink);
}
.empty__sub { margin: 0 0 var(--space-5); color: var(--ink-soft); }
.empty__links {
	display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2);
	margin-bottom: var(--space-5);
}
.empty__search { display: flex; justify-content: center; margin-bottom: var(--space-5); }
.empty__search .search { margin-top: 0; width: 100%; }

/* =========================================================================
   11-2. 블로그 — 글 상세
   ====================================================================== */
.phead--article h1 { font-size: var(--text-h2); }

.entry__hero { margin: 0 0 var(--space-6); }
.entry__hero img { width: 100%; border-radius: var(--radius-card); }

/* ── 목차 ─────────────────────────────────────────────────────
 * 본문 h2 를 화면에서 읽어 만듭니다. h2 가 둘 미만이면 나타나지 않습니다.
 * ------------------------------------------------------------------- */
.toc {
	margin-bottom: var(--space-6);
	padding: var(--space-4) var(--space-5);
	background: var(--green-light);
	border-radius: var(--radius-card);
}
.toc[hidden] { display: none; }
.toc__head {
	margin: 0 0 var(--space-2);
	font-size: var(--text-xs); font-weight: 700;
	letter-spacing: var(--track-loose);
	text-transform: uppercase;
	color: var(--green-house);
}
.toc__list { margin: 0; padding-left: 1.2em; columns: 1; }
.toc__list li { margin-bottom: var(--space-1); font-size: var(--text-sm); }
.toc__list li::marker { color: var(--green-house); font-weight: 700; }
.toc__list a { color: var(--green-house); }
.toc__list a.is-on { font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

@media (min-width: 640px) {
	.toc__list { columns: 2; column-gap: var(--space-6); }
}

/* ── 공유 · 태그 ──────────────────────────────────────────────── */
.share {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
	margin-top: var(--space-7);
	padding-top: var(--space-5);
	border-top: 1px solid var(--rule-hair);
}
.share__label { margin-right: var(--space-2); font-size: var(--text-sm); color: var(--ink-soft); }
.btn--sm { padding: 8px 18px; font-size: var(--text-sm); min-height: 38px; }
.btn.is-done { border-color: var(--green-accent); color: var(--green-accent); }

.tags { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-4) 0 0; }
.tags a {
	padding: 4px 12px;
	background: var(--paper-ceramic);
	border-radius: var(--radius-pill);
	font-size: var(--text-xs); font-weight: 500;
	color: var(--ink-soft);
}
.tags a:hover { color: var(--green-accent); text-decoration: none; }

/* ── 이전 · 다음 글 ───────────────────────────────────────────── */
.postnav__grid {
	display: grid; gap: var(--space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}
.postnav__item {
	display: flex; flex-direction: column; gap: var(--space-1);
	padding: var(--space-4);
	background: var(--paper-cream);
	border-radius: var(--radius-card);
	color: var(--ink);
	transition: all var(--dur) var(--ease);
}
.postnav__item:hover { text-decoration: none; box-shadow: var(--shadow-card); }
.postnav__item:hover .postnav__title { color: var(--green-accent); }
.postnav__item--next { text-align: right; }
.postnav__dir { font-size: var(--text-xs); font-weight: 700; color: var(--green-accent); }
.postnav__title {
	font-size: var(--text-md); font-weight: 700;
	line-height: 1.35;
	transition: color var(--dur) var(--ease);
}

.pagination--inpost { margin-top: var(--space-6); align-items: center; }
.pagination--inpost > span:first-child { font-size: var(--text-sm); color: var(--ink-soft); margin-right: var(--space-2); }

/* =========================================================================
   12. 마무리 CTA (다크 그린 피처 밴드)
   ====================================================================== */
.close__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, auto);
	gap: var(--space-4) var(--space-9);
	align-items: end;
}
.close__grid h2 { margin: 0 0 var(--space-2); }
.close__grid p { margin: 0; }
.close__actions { display: flex; flex-wrap: wrap; gap: var(--space-3); }

@media (max-width: 780px) {
	.close__grid { grid-template-columns: minmax(0, 1fr); align-items: start; }
}

/* =========================================================================
   13. 서브페이지 / 본문
   ====================================================================== */
.phead {
	padding-block: var(--space-7) var(--space-6);
	background: var(--paper-cream);
}
.phead h1 { margin: 0 0 var(--space-3); font-size: var(--text-h2); }
.phead p { margin: 0; max-width: var(--measure); color: var(--ink-soft); font-size: var(--text-lg); font-weight: 500; }
.phead__crumb { font-size: var(--text-sm); color: var(--ink-soft); margin-bottom: var(--space-3); }

.entry { max-width: 760px; }

.entry__meta {
	display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2);
	margin: 0;
	font-size: var(--text-sm); color: var(--ink-soft);
}
.entry__meta > * + *::before { content: "·"; margin-right: var(--space-2); color: var(--ink-faint); }
/* 머리말 안에서는 .phead p 가 더 구체적이라 여기서 되돌립니다 */
.phead .entry__meta { max-width: none; font-size: var(--text-sm); margin-top: var(--space-4); }

/* 본문 — 읽는 화면이라 기본 화면보다 행간을 한 단계 넉넉히 둡니다 */
.entry__content { font-size: var(--text-lg); line-height: 1.75; }
.entry__content > :first-child { margin-top: 0; }
.entry__content > :last-child { margin-bottom: 0; }
.entry__content h2 { margin-top: 1.8em; margin-bottom: 0.5em; }
.entry__content h3 { margin-top: 1.5em; margin-bottom: 0.4em; }
.entry__content ul, .entry__content ol { margin-bottom: 1.2em; padding-left: 1.3em; }
.entry__content li { margin-bottom: 0.4em; }
.entry__content li::marker { color: var(--green-accent); }
.entry__content a { text-decoration: underline; text-underline-offset: 3px; }
.entry__content strong { font-weight: 700; color: var(--ink); }
.entry__content img { border-radius: var(--radius-card); margin-block: 1.5em; }
.entry__content figcaption {
	margin-top: calc(var(--space-2) * -1 + 4px);
	font-size: var(--text-sm); color: var(--ink-soft); text-align: center;
}
.entry__content hr { margin-block: var(--space-7); border: 0; border-top: 1px solid var(--rule-hair); }
.entry__content code {
	padding: 2px 6px;
	background: var(--paper-ceramic);
	border-radius: var(--radius-input);
	font-family: var(--font-mono); font-size: 0.9em;
}
.entry__content pre {
	overflow-x: auto; margin-block: 1.5em; padding: var(--space-4);
	background: var(--green-house); color: var(--on-dark);
	border-radius: var(--radius-card);
	font-family: var(--font-mono); font-size: var(--text-sm); line-height: 1.6;
}
.entry__content pre code { background: none; padding: 0; color: inherit; }
.entry__content blockquote {
	margin: 1.5em 0; padding: var(--space-4) var(--space-5);
	background: var(--green-light);
	border-radius: var(--radius-card);
	color: var(--green-house);
	font-size: var(--text-md);
}
.entry__content blockquote > :last-child { margin-bottom: 0; }
.entry__content table { margin-block: 1.5em; font-size: var(--text-md); }

table { width: 100%; border-collapse: collapse; font-size: var(--text-md); }
th, td {
	padding: var(--space-3) var(--space-4);
	text-align: left;
	border-bottom: 1px solid var(--rule-hair);
}
th { font-weight: 700; color: var(--ink); font-size: var(--text-sm); }
td { color: var(--ink-soft); }
td:first-child { color: var(--ink); }

.tscroll {
	overflow-x: auto;
	margin-block: var(--space-4);
	background: var(--paper-white);
	border-radius: var(--radius-card);
	box-shadow: var(--shadow-card);
}
.tscroll table { margin: 0; }
.tscroll th:first-child, .tscroll td:first-child { padding-left: var(--space-4); }
.tscroll tr:last-child td { border-bottom: 0; }

.pagination { display: flex; gap: var(--space-2); margin-top: var(--space-7); flex-wrap: wrap; }
.pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 44px; min-height: 44px; padding-inline: var(--space-3);
	background: var(--paper-white);
	border: 1px solid var(--rule-hair);
	border-radius: var(--radius-pill);
	font-size: var(--text-sm); font-weight: 700;
	color: var(--ink);
	white-space: nowrap;
}
.pagination .page-numbers:hover { border-color: var(--green-accent); color: var(--green-accent); text-decoration: none; }
.pagination .page-numbers.current {
	background: var(--green-accent); border-color: var(--green-accent); color: var(--on-dark);
}

/* =========================================================================
   14. 푸터 — 하우스 그린 밴드
   ====================================================================== */
.foot {
	background: var(--green-house);
	color: var(--on-dark-soft);
	padding-block: var(--space-7);
}
.foot__mast {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, auto);
	gap: var(--space-4) var(--space-9);
	align-items: start;
	margin-bottom: var(--space-6);
}
.foot__mark {
	font-family: var(--font-display);
	font-size: var(--text-xl); font-weight: 800;
	letter-spacing: var(--track);
	color: var(--on-dark);
	margin: 0 0 var(--space-2);
}
.foot__tag { margin: 0; color: var(--on-dark-soft); font-size: var(--text-md); max-width: 44ch; }

.foot__links { display: flex; flex-wrap: wrap; gap: var(--space-3) var(--space-5); list-style: none; margin: 0; padding: 0; }
.foot__links a { font-size: var(--text-md); font-weight: 700; color: var(--on-dark); white-space: nowrap; }
.foot__links a:hover { color: var(--green-light); }

.foot__legal {
	padding-top: var(--space-4);
	border-top: 1px solid rgba(255, 255, 255, 0.16);
	font-size: var(--text-sm);
	color: var(--on-dark-soft);
	line-height: 1.9;
}
.foot__legal p { margin: 0; }
.foot__legal a { color: var(--on-dark); }

@media (max-width: 780px) {
	.foot__mast { grid-template-columns: minmax(0, 1fr); }
}

/* =========================================================================
   15. 플로팅 원형 CTA — 시스템에서 가장 높이 떠 있는 요소
   ====================================================================== */
.dock {
	position: fixed; right: var(--space-4); bottom: var(--space-4);
	z-index: 90;
	display: flex; flex-direction: column; gap: var(--space-3);
}
.dock__btn {
	display: flex; align-items: center; justify-content: center;
	width: 56px; height: 56px;
	border-radius: 50%;
	background: var(--green-accent);
	color: var(--on-dark);
	box-shadow: var(--shadow-float);
	transition: all var(--dur) var(--ease);
	/* 시각 경계보다 8px 넓게 잡아 누르기 편하게 */
	outline-offset: 8px;
}
.dock__btn:hover { background: var(--green-brand); text-decoration: none; color: var(--on-dark); }
.dock__btn:active { transform: var(--press); box-shadow: var(--shadow-float-active); }
.dock__btn svg { width: 26px; height: 26px; }

.dock__btn--kakao { background: var(--kakao); color: var(--on-kakao); }
.dock__btn--kakao:hover { background: var(--kakao-press); color: var(--on-kakao); }

@media (max-width: 620px) {
	.dock { right: var(--space-3); bottom: var(--space-3); }
	.dock__btn { width: 52px; height: 52px; }
	.dock__btn svg { width: 24px; height: 24px; }
}
