/* ==========================================================================
   Grace Message — Main Stylesheet
   v0.1.0 — 잉크 네이비 + 솔라피 indigo 디자인 시스템

   prefix:
     .gm-*  메인 페이지 + 폼 공통 (grace main)
     .gp-*  설교자 개인 페이지 (grace preacher)
     .gs-*  설교 재생 페이지 (grace sermon)
     .gd-*  설교자 대시보드 (grace dashboard)
   ========================================================================== */

:root {
	--ink-900: #0A1428;
	--ink-800: #0E1B36;
	--ink-700: #1A2547;
	--ink-600: #2B3760;
	--ink-500: #4A5E89;
	--ink-400: #7A8AB0;
	--ink-300: #A8B3CC;
	--ink-200: #C7CFDF;
	--ink-100: #DDE3EE;
	--ink-50:  #EEF0F4;
	--paper:   #F7F8FB;
	--paper-2: #F1F3F8;
	--white:   #FFFFFF;

	--indigo:      #4541FF;
	--indigo-2:    #7A78FF;
	--indigo-soft: #EEEEFF;
	--indigo-deep: #2E2CB3;

	--gold:    #B8860B;
	--gold-soft: #FEF3C7;
	--green:   #059669;
	--green-soft: #D1FAE5;
	--red:     #B91C1C;
	--red-soft: #FEE2E2;
	--diamond: #0891B2;
	--diamond-soft: #CFFAFE;
	--silver:  #94A3B8;
	--silver-soft: #F1F5F9;
	--bronze:  #A16207;
	--bronze-soft: #FEF3C7;
	--platinum: #6D28D9;
	--platinum-soft: #EDE9FE;

	--f-sans:  'Pretendard', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', sans-serif;
	--f-serif: 'Noto Serif KR', 'Nanum Myeongjo', serif;
	--f-mono:  'JetBrains Mono', 'D2Coding', monospace;

	--container: 1240px;
	--container-narrow: 760px;
}

/* ── 베이스 ─────────────────────── */
.grace-message-page {
	background: var(--paper);
	color: var(--ink-900);
	font-family: var(--f-sans);
	font-feature-settings: 'ss06' 1, 'ss10' 1;
	-webkit-font-smoothing: antialiased;
}
.grace-message-page .serif { font-family: var(--f-serif); }
.grace-message-page .mono  { font-family: var(--f-mono); font-feature-settings: 'tnum' 1; }

.grace-message-page *,
.grace-message-page *::before,
.grace-message-page *::after { box-sizing: border-box; }

.grace-message-page .gm-main a,
.grace-message-page .gp-page a,
.grace-message-page .gs-page a,
.grace-message-page .gd-page a {
	text-decoration: none;
	transition: color .15s, background-color .15s, border-color .15s;
}
.grace-message-page button { font-family: inherit; cursor: pointer; border: none; background: none; }
.grace-message-page img { display: block; max-width: 100%; height: auto; }

/* 테마(Astra·HCJM) .entry-content a 링크색이 버튼·아이콘을 덮어쓰지 않도록 — 전 페이지 공통 */
body.grace-message-page .entry-content .gm-main,
body.grace-message-page .entry-content .gp-page,
body.grace-message-page .entry-content .gs-page,
body.grace-message-page .entry-content .gd-page {
	isolation: isolate;
}
body.grace-message-page .entry-content [class^="ri-"],
body.grace-message-page .entry-content [class*=" ri-"] {
	font-family: "remixicon", remixicon, sans-serif !important;
	font-style: normal !important;
	font-weight: normal !important;
	-webkit-font-smoothing: antialiased;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn,
body.grace-message-page .entry-content .gm-main a.gm-btn,
body.grace-message-page .entry-content .gp-page a.gp-btn,
body.grace-message-page .entry-content .gd-page a.gd-btn,
body.grace-message-page .entry-content .gd-page button.gd-btn {
	text-decoration: none !important;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn-primary,
body.grace-message-page .entry-content .gm-main .gm-hero a.gm-btn-primary {
	color: var(--ink-900) !important;
	-webkit-text-fill-color: var(--ink-900) !important;
	background-color: var(--white) !important;
	border-color: var(--white) !important;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn-primary:hover,
body.grace-message-page .entry-content .gm-main .gm-hero a.gm-btn-primary:hover {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
	background-color: var(--indigo) !important;
	border-color: var(--indigo) !important;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn-primary i,
body.grace-message-page .entry-content .gm-main .gm-hero a.gm-btn-primary i {
	color: inherit !important;
	-webkit-text-fill-color: inherit !important;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn-ghost,
body.grace-message-page .entry-content .gm-main .gm-hero a.gm-btn-ghost {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
	background-color: transparent !important;
}
body.grace-message-page .entry-content .gm-hero a.gm-btn-ghost i,
body.grace-message-page .entry-content .gm-main .gm-hero a.gm-btn-ghost i {
	color: inherit !important;
	-webkit-text-fill-color: inherit !important;
}
body.grace-message-page .entry-content .gm-main a.gm-section-link,
body.grace-message-page .entry-content .gm-main a.gm-section-link i {
	color: var(--ink-700) !important;
	-webkit-text-fill-color: var(--ink-700) !important;
}
body.grace-message-page .entry-content .gm-main a.gm-preacher-card,
body.grace-message-page .entry-content .gm-main a.gm-sermon-card {
	color: var(--ink-900) !important;
	-webkit-text-fill-color: var(--ink-900) !important;
}
body.grace-message-page .entry-content .gm-kpi-strip,
body.grace-message-page .entry-content .gm-kpi-strip .gm-kpi-label,
body.grace-message-page .entry-content .gm-kpi-strip .gm-kpi-value {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
}
body.grace-message-page .entry-content .gm-hero,
body.grace-message-page .entry-content .gm-hero .gm-hero-title,
body.grace-message-page .entry-content .gm-hero .gm-hero-desc,
body.grace-message-page .entry-content .gm-hero .gm-hero-eyebrow {
	color: var(--white);
	-webkit-text-fill-color: unset;
}
body.grace-message-page .entry-content .gm-hero .gm-hero-title em {
	color: var(--ink-400) !important;
	-webkit-text-fill-color: var(--ink-400) !important;
}
body.hcjoyn-jmp-light-content.grace-message-page .entry-content .gp-hero a.gp-btn-primary,
body.grace-message-page .entry-content .gp-hero a.gp-btn-primary,
body.grace-message-page .gp-hero a.gp-btn-primary {
	color: var(--ink-900) !important;
	-webkit-text-fill-color: var(--ink-900) !important;
	background-color: var(--white) !important;
	border-color: var(--white) !important;
}
body.hcjoyn-jmp-light-content.grace-message-page .entry-content .gp-hero a.gp-btn-primary:hover,
body.grace-message-page .entry-content .gp-hero a.gp-btn-primary:hover,
body.grace-message-page .gp-hero a.gp-btn-primary:hover {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
	background-color: var(--indigo) !important;
	border-color: var(--indigo) !important;
}
body.grace-message-page .entry-content .gp-hero a.gp-btn-primary i,
body.grace-message-page .gp-hero a.gp-btn-primary i,
body.grace-message-page .entry-content .gp-hero a.gp-btn-ghost,
body.grace-message-page .gp-hero a.gp-btn-ghost {
	color: inherit !important;
	-webkit-text-fill-color: inherit !important;
}
body.grace-message-page .entry-content .gp-hero a.gp-btn-ghost,
body.grace-message-page .gp-hero a.gp-btn-ghost {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
	background-color: transparent !important;
}
/* 설교자 프로필 히어로 — 테마 .entry-content h1 등이 이름을 검정으로 덮어쓰지 않도록 */
body.grace-message-page .entry-content .gp-hero,
body.grace-message-page .gp-hero {
	color: var(--white);
}
body.hcjoyn-jmp-light-content.grace-message-page .entry-content .gp-hero h1,
body.grace-message-page .entry-content .gp-hero h1.gp-name,
body.grace-message-page .entry-content .gp-hero .gp-name,
body.grace-message-page .gp-hero h1.gp-name,
body.grace-message-page .gp-hero .gp-name {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
}
body.grace-message-page .entry-content .gp-hero .gp-name small,
body.grace-message-page .gp-hero .gp-name small {
	color: var(--ink-400) !important;
	-webkit-text-fill-color: var(--ink-400) !important;
}
body.grace-message-page .entry-content .gp-hero .gp-info-eyebrow,
body.grace-message-page .gp-hero .gp-info-eyebrow {
	color: var(--ink-400) !important;
	-webkit-text-fill-color: var(--ink-400) !important;
}
body.grace-message-page .entry-content .gp-hero .gp-bio,
body.grace-message-page .entry-content .gp-hero .gp-bio p,
body.grace-message-page .gp-hero .gp-bio,
body.grace-message-page .gp-hero .gp-bio p {
	color: var(--ink-200) !important;
	-webkit-text-fill-color: var(--ink-200) !important;
}
body.grace-message-page .entry-content .gp-hero .gp-kpi-value,
body.grace-message-page .gp-hero .gp-kpi-value {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
}
body.grace-message-page .entry-content .gs-page a.gs-action,
body.grace-message-page .gs-page a.gs-action {
	color: var(--ink-700) !important;
	-webkit-text-fill-color: var(--ink-700) !important;
}
body.grace-message-page .entry-content .gs-page a.gs-action:hover,
body.grace-message-page .gs-page a.gs-action:hover {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
}
body.grace-message-page .entry-content .gd-page a.gd-btn-primary,
body.grace-message-page .entry-content .gd-page button.gd-btn-primary,
body.grace-message-page .gd-page a.gd-btn-primary,
body.grace-message-page .gd-page button.gd-btn-primary {
	color: var(--white) !important;
	-webkit-text-fill-color: var(--white) !important;
	background-color: var(--ink-900) !important;
	border-color: var(--ink-900) !important;
}
body.grace-message-page .entry-content .gd-page a.gd-btn-primary i,
body.grace-message-page .entry-content .gd-page button.gd-btn-primary i,
body.grace-message-page .gd-page a.gd-btn-primary i,
body.grace-message-page .gd-page button.gd-btn-primary i {
	color: inherit !important;
	-webkit-text-fill-color: inherit !important;
}

/* hcjoyn-jmp-light-content + 히어로 링크 상속(color:#fff) — entry-content 없이도 적용 */
body.grace-message-page .gm-hero a.gm-btn-primary,
body.hcjoyn-jmp-light-content.grace-message-page .gm-hero a.gm-btn-primary {
	color: var(--ink-900) !important;
	-webkit-text-fill-color: var(--ink-900) !important;
	background-color: var(--white) !important;
	border-color: var(--white) !important;
}
body.grace-message-page .gm-hero a.gm-btn-primary i,
body.hcjoyn-jmp-light-content.grace-message-page .gm-hero a.gm-btn-primary i {
	color: inherit !important;
	-webkit-text-fill-color: inherit !important;
}

/* ==========================================================================
   메인 페이지 (.gm-)
   ========================================================================== */

.gm-main { background: var(--paper); }

/* 히어로 */
.gm-hero {
	background: var(--ink-900);
	color: var(--white);
	padding: 80px 24px 96px;
	position: relative;
	overflow: hidden;
}
.gm-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 70% 60% at 15% 10%, rgba(69, 65, 255, 0.22), transparent 60%),
		radial-gradient(ellipse 50% 40% at 85% 90%, rgba(69, 65, 255, 0.10), transparent 60%);
	pointer-events: none;
}
.gm-hero::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(255,255,255,0.018) 1px, transparent 1px),
		linear-gradient(90deg, rgba(255,255,255,0.018) 1px, transparent 1px);
	background-size: 32px 32px;
	pointer-events: none;
}
.gm-hero-inner {
	max-width: var(--container);
	margin: 0 auto;
	position: relative;
	z-index: 1;
}
.gm-hero-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-family: var(--f-mono);
	font-size: 12px;
	color: var(--ink-300);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	padding: 6px 12px;
	border: 1px solid var(--ink-700);
	background: rgba(255,255,255,0.02);
}
.gm-hero-eyebrow .dot {
	width: 6px;
	height: 6px;
	background: var(--green);
	border-radius: 50%;
	animation: gm-pulse 2s infinite;
}
@keyframes gm-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

.gm-hero-title {
	margin-top: 28px;
	font-family: var(--f-serif);
	font-size: clamp(36px, 6vw, 64px);
	font-weight: 500;
	line-height: 1.15;
	letter-spacing: -0.025em;
	color: var(--white);
}
.gm-hero-title em { font-style: italic; color: var(--ink-400); }

.gm-hero-desc {
	margin-top: 20px;
	max-width: 640px;
	color: var(--ink-200);
	font-size: 17px;
	line-height: 1.7;
}

.gm-hero-actions {
	margin-top: 36px;
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

/* 버튼 공통 */
.gm-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 14px 22px;
	font-size: 14px;
	font-weight: 600;
	border: 1px solid transparent;
	transition: all .15s;
	cursor: pointer;
	text-align: left;
}
.gm-btn i { font-size: 16px; }
.gm-btn-primary { background: var(--white); color: var(--ink-900); border-color: var(--white); }
.gm-btn-primary:hover { background: var(--indigo); color: var(--white); border-color: var(--indigo); }
.gm-btn-accent { background: var(--indigo); color: var(--white); border-color: var(--indigo); }
.gm-btn-accent:hover { background: var(--indigo-deep); border-color: var(--indigo-deep); }
.gm-btn-ghost { background: transparent; color: var(--white); border-color: var(--ink-600); }
.gm-btn-ghost:hover { background: var(--ink-700); border-color: var(--ink-500); }
.gm-btn-light { background: var(--ink-50); color: var(--ink-900); border-color: var(--ink-100); }
.gm-btn-light:hover { background: var(--ink-900); color: var(--white); border-color: var(--ink-900); }
.gm-btn-block { width: 100%; justify-content: center; }
.gm-btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* KPI 스트립 */
.gm-kpi-strip {
	background: var(--ink-800);
	border-bottom: 1px solid var(--ink-700);
}
.gm-kpi-inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 24px;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1px;
	background: var(--ink-700);
	border-left: 1px solid var(--ink-700);
	border-right: 1px solid var(--ink-700);
}
.gm-kpi {
	padding: 22px 24px;
	background: var(--ink-800);
	color: var(--white);
}
.gm-kpi-label {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-400);
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.gm-kpi-value {
	margin-top: 8px;
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
.gm-kpi-unit { font-size: 13px; color: var(--ink-400); font-weight: 500; }

@media (max-width: 767px) {
	.gm-kpi-inner {
		grid-template-columns: repeat(2, 1fr);
	}
	.gm-kpi.gm-kpi--hide-mobile {
		display: none !important;
	}
	.gm-kpi {
		text-align: center;
		padding-left: 16px;
		padding-right: 16px;
	}
	.gm-kpi-label,
	.gm-kpi-value {
		text-align: center;
	}
}

/* 섹션 공통 */
.gm-section {
	padding: 72px 24px;
	max-width: var(--container);
	margin: 0 auto;
}
.gm-section-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 36px;
	flex-wrap: wrap;
}
.gm-section-title {
	font-size: 28px;
	font-weight: 700;
	letter-spacing: -0.02em;
	color: var(--ink-900);
}
.gm-section-title.serif { font-family: var(--f-serif); font-weight: 500; }
.gm-section-sub {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.gm-section-link {
	font-size: 13px;
	font-weight: 600;
	color: var(--ink-700);
	display: inline-flex;
	align-items: center;
	gap: 4px;
}
.gm-section-link:hover { color: var(--indigo); }
.gm-empty {
	padding: 60px 0;
	text-align: center;
	color: var(--ink-400);
	font-size: 14px;
}

/* 설교자 그리드 — 데스크탑 4열, 모바일·태블릿 2열 */
.gm-preacher-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}
@media (max-width: 1023px) {
	.gm-preacher-grid {
		grid-template-columns: repeat(2, 1fr);
	}
	.gm-preacher-card-stats {
		display: none !important;
	}
}

.gm-preacher-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	display: flex;
	flex-direction: column;
	transition: all .2s;
	color: var(--ink-900);
}
.gm-preacher-card:hover {
	border-color: var(--ink-900);
	transform: translateY(-2px);
	box-shadow: 0 14px 28px -10px rgba(14, 27, 54, 0.16);
}

.gm-preacher-card-avatar {
	aspect-ratio: 4 / 3;
	background: linear-gradient(135deg, var(--ink-700) 0%, var(--ink-900) 100%);
	color: var(--white);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--f-serif);
	font-size: 64px;
	font-weight: 500;
	letter-spacing: -0.04em;
	position: relative;
	overflow: hidden;
}
.gm-preacher-card-avatar img { width: 100%; height: 100%; object-fit: cover; }
.gm-avatar-initial { display: inline-block; }

.gm-grade-badge {
	position: absolute;
	bottom: 12px;
	right: 12px;
	font-family: var(--f-mono);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	padding: 4px 9px;
	background: var(--white);
}
.gm-grade-bronze   { background: var(--bronze-soft); color: var(--bronze); }
.gm-grade-silver   { background: var(--silver-soft); color: var(--silver); }
.gm-grade-gold     { background: var(--gold-soft); color: var(--gold); }
.gm-grade-platinum { background: var(--platinum-soft); color: var(--platinum); }
.gm-grade-diamond  { background: var(--diamond-soft); color: var(--diamond); }

.gm-preacher-card-body {
	padding: 20px;
	flex: 1;
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.gm-preacher-card-meta {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.04em;
}
.gm-preacher-card-name {
	font-family: var(--f-serif);
	font-size: 22px;
	font-weight: 500;
	letter-spacing: -0.015em;
	line-height: 1.25;
}
.gm-preacher-card-name small {
	display: inline-block;
	margin-left: 4px;
	font-family: var(--f-sans);
	font-size: 13px;
	color: var(--ink-500);
	font-weight: 400;
}
.gm-preacher-card-affil { color: var(--ink-600); font-size: 13px; }
.gm-preacher-card-stats {
	margin-top: auto;
	padding-top: 14px;
	border-top: 1px solid var(--ink-100);
	display: flex;
	gap: 14px;
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-500);
}
.gm-preacher-card-stats span { display: inline-flex; align-items: center; gap: 4px; }

/* 설교 그리드 (메인) */
.gm-section-sermons { background: var(--white); margin: 0; padding: 80px 24px; max-width: none; border-top: 1px solid var(--ink-100); }
.gm-section-sermons > .gm-section-head,
.gm-section-sermons > .gm-sermon-grid {
	max-width: var(--container);
	margin-left: auto;
	margin-right: auto;
}

.gm-sermon-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 16px;
}
@media (max-width: 1023px) {
	.gm-sermon-grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 14px;
	}
}

.gm-sermon-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	display: flex;
	flex-direction: column;
	transition: all .2s;
}
.gm-sermon-card:hover { border-color: var(--ink-900); transform: translateY(-2px); }

.gm-sermon-card-thumb {
	aspect-ratio: 16/9;
	background: linear-gradient(135deg, #1a3a52 0%, #0d1b3a 100%);
	background-size: cover;
	background-position: center;
	position: relative;
	display: block;
}
.gm-sermon-duration {
	position: absolute;
	bottom: 10px;
	right: 10px;
	padding: 3px 8px;
	background: rgba(0,0,0,0.6);
	color: var(--white);
	font-size: 11px;
	backdrop-filter: blur(4px);
}
.gm-sermon-card-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 6px; }
.gm-sermon-card-meta { font-size: 11px; color: var(--ink-500); }
.gm-sermon-card-meta .sep { color: var(--ink-200); margin: 0 6px; }
.gm-sermon-card-title { font-size: 15px; line-height: 1.35; font-weight: 500; }
.gm-sermon-card-title a { color: var(--ink-900); }
.gm-sermon-card-title a:hover { color: var(--indigo); }
.gm-sermon-card-bible { font-size: 12px; color: var(--ink-600); line-height: 1.4; }

/* 페이지네이션 — 교회 찾기(.jmp-church-pagination)와 동일 형태, Grace 색상 */
.gm-pagination--sermons {
	padding: 16px 12px;
	margin-top: 40px;
}
.gm-pagination--sermons .gm-pagination-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 5px;
	justify-content: center;
	align-items: center;
	max-width: 100%;
	box-sizing: border-box;
}
.gm-pagination--sermons .gm-pagination-list li {
	margin: 0;
	flex-shrink: 0;
}
.gm-pagination--sermons .gm-pagination-list a,
.gm-pagination--sermons .gm-pagination-list .current,
.gm-pagination--sermons .gm-pagination-ellipsis {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	padding: 0 8px;
	border-radius: 8px;
	text-decoration: none !important;
	font-size: 12px;
	font-weight: 500;
	font-family: var(--f-sans);
	border: 1px solid var(--ink-100) !important;
	background: var(--white) !important;
	color: var(--ink-600) !important;
	transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
	white-space: nowrap;
}
.gm-pagination--sermons .gm-pagination-list a i {
	font-size: 1rem;
	line-height: 1;
}
.gm-pagination--sermons .gm-pagination-list a:hover {
	border-color: var(--indigo-2) !important;
	background: var(--indigo-soft) !important;
	color: var(--indigo) !important;
}
.gm-pagination--sermons .gm-pagination-list .current {
	background: var(--indigo) !important;
	border-color: var(--indigo) !important;
	color: var(--white) !important;
	font-weight: 700;
	box-shadow: 0 2px 8px rgba(69, 65, 255, 0.25);
}
.gm-pagination--sermons .gm-pagination-ellipsis {
	border: none !important;
	background: transparent !important;
	min-width: auto;
	cursor: default;
	color: var(--ink-400) !important;
}

body.grace-message-page .entry-content .gm-pagination--sermons .gm-pagination-list a,
body.grace-message-page .entry-content .gm-pagination--sermons .gm-pagination-list .current {
	-webkit-text-fill-color: unset;
}
body.grace-message-page .entry-content .gm-pagination--sermons .gm-pagination-list a {
	color: var(--ink-600) !important;
}
body.grace-message-page .entry-content .gm-pagination--sermons .gm-pagination-list a:hover {
	color: var(--indigo) !important;
}
body.grace-message-page .entry-content .gm-pagination--sermons .gm-pagination-list .current {
	color: var(--white) !important;
}

@media (max-width: 1023px) {
	.gm-sermon-grid .gm-sermon-card-body {
		padding: 12px 14px 14px;
		gap: 5px;
	}
	.gm-sermon-grid .gm-sermon-card-meta {
		font-size: 10px;
	}
	.gm-sermon-grid .gm-sermon-card-title {
		font-size: 14px;
		line-height: 1.32;
	}
	.gm-sermon-grid .gm-sermon-card-bible {
		font-size: 11px;
	}
}

/* ==========================================================================
   설교자 개인 페이지 (.gp-)
   ========================================================================== */

.gp-page { background: var(--paper); }

/* 히어로 */
.gp-hero {
	background: var(--ink-900);
	color: var(--white);
	padding: 56px 24px 72px;
	position: relative;
	overflow: hidden;
}
.gp-hero::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(ellipse 60% 50% at 12% 8%, rgba(69, 65, 255, 0.20), transparent 60%),
		radial-gradient(ellipse 50% 40% at 88% 92%, rgba(69, 65, 255, 0.10), transparent 60%);
}
.gp-hero-inner { max-width: var(--container); margin: 0 auto; position: relative; z-index: 1; }

.gp-hero-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-300);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-bottom: 28px;
}
.gp-hero-meta .dot { width: 6px; height: 6px; background: var(--green); border-radius: 50%; animation: gm-pulse 2s infinite; }
.gp-hero-meta .sep { color: var(--ink-600); }

.gp-hero-row {
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 36px;
	align-items: center;
}
@media (max-width: 980px) { .gp-hero-row { grid-template-columns: 1fr; gap: 24px; } }

.gp-avatar-wrap { position: relative; }
.gp-avatar {
	width: 152px;
	height: 152px;
	background: linear-gradient(135deg, var(--indigo) 0%, var(--ink-700) 100%);
	color: var(--white);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--f-serif);
	font-weight: 500;
	font-size: 64px;
	overflow: hidden;
}
.gp-avatar img { width: 100%; height: 100%; object-fit: cover; }
.gp-grade-badge {
	position: absolute;
	bottom: -8px;
	right: -8px;
	background: var(--diamond-soft);
	color: var(--diamond);
	font-family: var(--f-mono);
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.1em;
	padding: 4px 10px;
	border: 1px solid var(--white);
}

.gp-info { min-width: 0; }
.gp-info-eyebrow {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-400);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-bottom: 8px;
}
.gp-name {
	font-size: clamp(32px, 5vw, 52px);
	font-weight: 500;
	line-height: 1.1;
	letter-spacing: -0.02em;
	color: var(--white);
}
.gp-hero .gp-name {
	color: var(--white);
}
.gp-name small {
	font-family: var(--f-sans);
	font-size: 0.42em;
	color: var(--ink-400);
	font-weight: 400;
	margin-left: 12px;
}
.gp-bio { margin-top: 14px; color: var(--ink-200); font-size: 15px; line-height: 1.7; max-width: 560px; }
.gp-bio p + p { margin-top: 8px; }

.gp-tags { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 6px; }
.gp-tag {
	padding: 5px 11px;
	border: 1px solid var(--ink-600);
	color: var(--ink-200);
	font-size: 12px;
	font-family: var(--f-mono);
	display: inline-flex;
	align-items: center;
	gap: 5px;
}
.gp-tag-accent { background: var(--indigo); color: var(--white); border-color: var(--indigo); }

.gp-actions {
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-width: 220px;
}
@media (max-width: 980px) { .gp-actions { flex-direction: row; flex-wrap: wrap; min-width: 0; } }

.gp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 14px 20px;
	font-size: 14px;
	font-weight: 600;
	border: 1px solid transparent;
	transition: all .15s;
	cursor: pointer;
	text-align: center;
}
.gp-btn i { font-size: 16px; }
.gp-btn-primary { background: var(--white); color: var(--ink-900); border-color: var(--white); }
.gp-btn-primary:hover:not(:disabled) { background: var(--indigo); color: var(--white); border-color: var(--indigo); }
.gp-btn-accent { background: var(--indigo); color: var(--white); border-color: var(--indigo); }
.gp-btn-accent:hover { background: var(--indigo-deep); border-color: var(--indigo-deep); }
.gp-btn-ghost { background: transparent; color: var(--white); border-color: var(--ink-600); }
.gp-btn-ghost:hover { background: var(--ink-700); border-color: var(--ink-500); }
.gp-btn-dashboard {
	background: rgba(99, 102, 241, 0.2);
	color: var(--white);
	border-color: rgba(129, 140, 248, 0.65);
}
.gp-btn-dashboard:hover {
	background: var(--indigo);
	border-color: var(--indigo);
	color: var(--white);
}
.gp-actions .gp-btn-dashboard { width: 100%; }
.gp-btn:disabled { opacity: 0.7; cursor: default; }

/* KPI */
.gp-kpi-row {
	margin-top: 44px;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1px;
	background: var(--ink-700);
	border: 1px solid var(--ink-700);
}
@media (max-width: 720px) { .gp-kpi-row { grid-template-columns: repeat(2, 1fr); } }
.gp-kpi { background: var(--ink-800); padding: 20px 22px; }
.gp-kpi-label { font-family: var(--f-mono); font-size: 11px; color: var(--ink-400); letter-spacing: 0.08em; text-transform: uppercase; display: flex; align-items: center; gap: 6px; }
.gp-kpi-label i { font-size: 13px; color: var(--ink-500); }
.gp-kpi-value { margin-top: 8px; font-size: 26px; font-weight: 700; color: var(--white); letter-spacing: -0.02em; }

/* Sticky 탭 네비 */
.gp-sticky-nav {
	background: var(--white);
	border-bottom: 1px solid var(--ink-100);
	position: sticky;
	top: 0;
	z-index: 50;
}
.gp-sticky-nav-inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 24px;
	display: flex;
	gap: 4px;
	overflow-x: auto;
	scrollbar-width: none;
}
.gp-sticky-nav-inner::-webkit-scrollbar { display: none; }
.gp-nav-item {
	padding: 16px 14px;
	font-size: 14px;
	font-weight: 500;
	color: var(--ink-500);
	border-bottom: 2px solid transparent;
	transition: all .15s;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.gp-nav-item:hover { color: var(--ink-900); }
.gp-nav-item.active { color: var(--ink-900); border-bottom-color: var(--indigo); font-weight: 600; }
.gp-nav-item i { font-size: 16px; }

/* 섹션 공통 */
.gp-section {
	padding: 72px 24px;
	max-width: var(--container);
	margin: 0 auto;
}
.gp-section-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 36px;
	flex-wrap: wrap;
}
.gp-section-title { font-size: 28px; font-weight: 700; letter-spacing: -0.02em; }
.gp-section-title.serif { font-family: var(--f-serif); font-weight: 500; }
.gp-section-sub { display: block; margin-top: 6px; font-size: 11px; color: var(--ink-500); letter-spacing: 0.1em; text-transform: uppercase; }
.gp-empty { padding: 60px 0; text-align: center; color: var(--ink-400); font-size: 14px; }

/* 설교 그리드 (개인 페이지) */
.gp-sermon-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
}
@media (max-width: 900px) { .gp-sermon-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gp-sermon-grid { grid-template-columns: 1fr; } }

.gp-sermon-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	display: flex;
	flex-direction: column;
	transition: all .2s;
}
.gp-sermon-card:hover {
	border-color: var(--ink-900);
	transform: translateY(-2px);
	box-shadow: 0 14px 28px -10px rgba(14, 27, 54, 0.16);
}
.gp-sermon-thumb {
	aspect-ratio: 16/9;
	background: linear-gradient(135deg, var(--ink-700) 0%, var(--ink-900) 100%);
	background-size: cover;
	background-position: center;
	position: relative;
	display: block;
}
.gp-sermon-duration {
	position: absolute;
	bottom: 10px;
	right: 10px;
	padding: 3px 8px;
	background: rgba(0,0,0,0.6);
	color: var(--white);
	font-size: 11px;
	backdrop-filter: blur(4px);
}
.gp-sermon-body { padding: 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.gp-sermon-meta { font-size: 11px; color: var(--ink-500); }
.gp-sermon-title { font-size: 17px; line-height: 1.35; font-weight: 500; }
.gp-sermon-title a { color: var(--ink-900); }
.gp-sermon-title a:hover { color: var(--indigo); }
.gp-sermon-bible { font-size: 13px; color: var(--ink-600); }
.gp-sermon-stats {
	margin-top: auto;
	padding-top: 12px;
	border-top: 1px solid var(--ink-100);
	display: flex;
	gap: 12px;
	font-size: 11px;
	color: var(--ink-500);
}
.gp-sermon-stats span { display: inline-flex; align-items: center; gap: 4px; }

/* 멤버십 섹션 */
.gp-section-membership { background: var(--paper); margin: 0; padding: 80px 24px; max-width: none; border-top: 1px solid var(--ink-100); }
.gp-section-membership > .gp-section-head,
.gp-section-membership > .gp-membership-grid {
	max-width: var(--container);
	margin-left: auto;
	margin-right: auto;
}

.gp-membership-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}
@media (max-width: 900px) { .gp-membership-grid { grid-template-columns: 1fr; } }

.gp-member-counter {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 32px 36px;
}
.gp-member-counter-label {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	display: flex;
	align-items: center;
	gap: 8px;
}
.gp-member-counter-label i { color: var(--indigo); font-size: 14px; }
.gp-member-counter-value {
	font-family: var(--f-serif);
	font-size: 72px;
	font-weight: 500;
	color: var(--ink-900);
	letter-spacing: -0.04em;
	line-height: 1;
	margin: 10px 0 24px;
}
.gp-member-distribution { padding-top: 20px; border-top: 1px dashed var(--ink-100); }
.gp-distribution-row { display: flex; align-items: center; padding: 7px 0; }
.gp-distribution-label {
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.08em;
	width: 80px;
}
.gp-distribution-bar { flex: 1; height: 4px; background: var(--ink-50); margin: 0 12px; position: relative; }
.gp-distribution-fill { position: absolute; inset: 0; background: var(--ink-900); transform-origin: left; }
.gp-fill-visitor { background: var(--ink-400); }
.gp-fill-member { background: var(--indigo); }
.gp-fill-baptized { background: var(--gold); }
.gp-fill-officer { background: var(--diamond); }
.gp-distribution-count { font-family: var(--f-mono); color: var(--ink-700); font-weight: 600; min-width: 36px; text-align: right; font-size: 13px; }

.gp-membership-cta {
	background: var(--ink-900);
	color: var(--white);
	padding: 32px 36px;
	position: relative;
	overflow: hidden;
}
.gp-membership-cta::before {
	content: '';
	position: absolute;
	top: -30px; right: -30px;
	width: 200px; height: 200px;
	background: radial-gradient(circle, var(--indigo) 0%, transparent 70%);
	opacity: 0.4;
	pointer-events: none;
}
.gp-membership-cta-eyebrow {
	font-family: var(--f-mono);
	font-size: 11px;
	color: var(--ink-300);
	letter-spacing: 0.1em;
	text-transform: uppercase;
	margin-bottom: 14px;
	position: relative;
}
.gp-membership-cta-title {
	font-size: 28px;
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: -0.015em;
	margin-bottom: 12px;
	position: relative;
}
.gp-membership-cta-title em { font-style: italic; color: var(--ink-400); }
.gp-membership-cta-desc { color: var(--ink-300); font-size: 14px; line-height: 1.7; margin-bottom: 22px; position: relative; }

/* 후원 섹션 */
.gp-section-donation { background: var(--white); margin: 0; padding: 80px 24px; max-width: none; border-top: 8px solid var(--ink-900); }
.gp-section-donation > .gp-section-head,
.gp-section-donation > .gp-donation-grid {
	max-width: var(--container);
	margin-left: auto;
	margin-right: auto;
}

.gp-donation-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
}
@media (max-width: 900px) { .gp-donation-grid { grid-template-columns: 1fr; } }

.gp-donation-channel {
	border: 1px solid var(--ink-100);
	padding: 32px;
	display: flex;
	flex-direction: column;
	gap: 16px;
	position: relative;
}
.gp-donation-jseeds { background: var(--paper-2); }
.gp-donation-real { background: var(--ink-900); color: var(--white); border-color: var(--ink-900); }
.gp-donation-real::before {
	content: '';
	position: absolute;
	top: 0; right: 0;
	width: 140px; height: 140px;
	background: radial-gradient(circle, var(--indigo) 0%, transparent 70%);
	opacity: 0.3;
}

.gp-donation-tag {
	align-self: flex-start;
	font-family: var(--f-mono);
	font-size: 10px;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	padding: 4px 10px;
	font-weight: 700;
	position: relative;
}
.gp-donation-jseeds .gp-donation-tag { background: var(--ink-900); color: var(--white); }
.gp-donation-real .gp-donation-tag { background: var(--indigo); color: var(--white); }

.gp-donation-title {
	font-size: 28px;
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.2;
	position: relative;
}
.gp-donation-title small {
	display: block;
	font-family: var(--f-mono);
	font-size: 12px;
	color: inherit;
	opacity: 0.6;
	font-weight: 400;
	margin-top: 6px;
	letter-spacing: 0.04em;
}
.gp-donation-desc { font-size: 14px; line-height: 1.65; position: relative; }
.gp-donation-jseeds .gp-donation-desc { color: var(--ink-700); }
.gp-donation-real .gp-donation-desc { color: var(--ink-300); }

.gp-amount-chips {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 6px;
	position: relative;
}
.gp-amount-chip {
	padding: 11px 8px;
	text-align: center;
	border: 1px solid var(--ink-100);
	background: var(--white);
	color: var(--ink-900);
	font-family: var(--f-mono);
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
	transition: all .15s;
}
.gp-amount-chip:hover, .gp-amount-chip.selected {
	background: var(--ink-900);
	color: var(--white);
	border-color: var(--ink-900);
}
.gp-amount-chip small { font-size: 10px; opacity: 0.7; display: inline-block; margin-left: 3px; }

.gp-balance {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 12px 14px;
	background: var(--white);
	border: 1px dashed var(--ink-200);
	position: relative;
}
.gp-balance-label { font-size: 12px; color: var(--ink-500); letter-spacing: 0.04em; }
.gp-balance-value { font-size: 16px; font-weight: 600; color: var(--ink-900); }

.gp-donate-submit {
	margin-top: 6px;
	padding: 14px;
	font-weight: 600;
	font-size: 15px;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	border: 1px solid;
	transition: all .15s;
	cursor: pointer;
	text-align: center;
	position: relative;
}
.gp-donation-jseeds .gp-donate-submit { background: var(--ink-900); color: var(--white); border-color: var(--ink-900); }
.gp-donation-jseeds .gp-donate-submit:hover { background: var(--indigo); border-color: var(--indigo); }
.gp-donation-real .gp-donate-submit { background: var(--white); color: var(--ink-900); border-color: var(--white); }
.gp-donation-real .gp-donate-submit:hover { background: var(--indigo); color: var(--white); border-color: var(--indigo); }

.gp-donate-note {
	font-family: var(--f-mono);
	font-size: 10px;
	opacity: 0.6;
	letter-spacing: 0.04em;
	text-align: center;
	position: relative;
}
.gp-donation-unavailable {
	padding: 16px;
	color: var(--ink-300);
	font-size: 13px;
	border: 1px dashed var(--ink-600);
	text-align: center;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	justify-content: center;
	position: relative;
}

/* 상담 섹션 */
.gp-section-counsel { background: var(--paper); margin: 0; padding: 80px 24px; max-width: none; border-top: 1px solid var(--ink-100); }
.gp-section-counsel > .gp-section-head,
.gp-section-counsel > .gp-counsel-card {
	max-width: var(--container);
	margin-left: auto;
	margin-right: auto;
}
.gp-counsel-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 48px;
	display: flex;
	flex-direction: column;
	gap: 18px;
	align-items: flex-start;
}
.gp-counsel-eyebrow {
	font-size: 11px;
	color: var(--indigo);
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.gp-counsel-title {
	font-size: 32px;
	font-weight: 500;
	color: var(--ink-900);
	letter-spacing: -0.02em;
	line-height: 1.3;
}
.gp-counsel-desc {
	color: var(--ink-700);
	font-size: 15px;
	line-height: 1.7;
	max-width: 560px;
}

/* ==========================================================================
   설교 재생 페이지 (.gs-)
   ========================================================================== */

.gs-page { background: var(--white); min-height: 60vh; }

.gs-player-wrap {
	background: var(--ink-900);
	padding: 24px 0;
}
.gs-iframe-wrap {
	max-width: var(--container);
	margin: 0 auto;
	aspect-ratio: 16/9;
	background: #000;
}
.gs-iframe-wrap iframe { width: 100%; height: 100%; border: 0; }
.gs-no-video {
	max-width: var(--container);
	margin: 0 auto;
	padding: 80px 24px;
	color: var(--ink-300);
	text-align: center;
}

.gs-info { background: var(--white); padding: 48px 24px; }
.gs-info-inner { max-width: var(--container-narrow); margin: 0 auto; }

.gs-breadcrumb { font-size: 12px; color: var(--ink-500); margin-bottom: 16px; }
.gs-breadcrumb a { color: var(--ink-500); }
.gs-breadcrumb a:hover { color: var(--ink-900); }
.gs-breadcrumb .sep { color: var(--ink-200); margin: 0 8px; }

.gs-title {
	font-family: var(--f-serif);
	font-size: clamp(28px, 4vw, 40px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.25;
}
.gs-bible { margin-top: 10px; color: var(--ink-700); font-size: 15px; }
.gs-meta { margin-top: 14px; font-size: 12px; color: var(--ink-500); }
.gs-meta .sep { color: var(--ink-200); margin: 0 6px; }

.gs-actions { margin-top: 28px; display: flex; gap: 8px; flex-wrap: wrap; }
.gs-action {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 11px 18px;
	background: var(--paper);
	border: 1px solid var(--ink-100);
	color: var(--ink-700);
	font-size: 13px;
	font-weight: 600;
	transition: all .15s;
}
.gs-action:hover { background: var(--ink-900); color: var(--white); border-color: var(--ink-900); }
.gs-action.liked { background: var(--indigo-soft); color: var(--indigo); border-color: var(--indigo); }
.gs-action.liked:hover { background: var(--indigo); color: var(--white); }
.gs-action i { font-size: 16px; }

.gs-description { margin-top: 36px; color: var(--ink-700); font-size: 15px; line-height: 1.75; }
.gs-description p + p { margin-top: 12px; }

.gs-preacher-card {
	margin-top: 48px;
	background: var(--paper);
	border: 1px solid var(--ink-100);
	padding: 24px;
	display: grid;
	grid-template-columns: auto 1fr auto;
	gap: 20px;
	align-items: center;
}
@media (max-width: 600px) { .gs-preacher-card { grid-template-columns: 1fr; text-align: center; } }
.gs-preacher-avatar {
	width: 72px;
	height: 72px;
	background: linear-gradient(135deg, var(--indigo) 0%, var(--ink-700) 100%);
	color: var(--white);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--f-serif);
	font-size: 32px;
	font-weight: 500;
	overflow: hidden;
}
.gs-preacher-avatar img { width: 100%; height: 100%; object-fit: cover; }
.gs-preacher-name {
	font-size: 20px;
	font-weight: 500;
	color: var(--ink-900);
	display: inline-block;
}
.gs-preacher-name small { font-family: var(--f-sans); font-size: 13px; color: var(--ink-500); font-weight: 400; margin-left: 6px; }
.gs-preacher-meta { font-size: 12px; color: var(--ink-500); margin-top: 4px; }
.gs-preacher-stats { display: flex; gap: 14px; font-size: 11px; color: var(--ink-500); margin-top: 8px; }
.gs-preacher-stats span { display: inline-flex; align-items: center; gap: 4px; }
.gs-preacher-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 10px 16px;
	background: var(--ink-900);
	color: var(--white);
	font-size: 13px;
	font-weight: 600;
	transition: background .15s;
}
.gs-preacher-link:hover { background: var(--indigo); }

/* ==========================================================================
   대시보드 (.gd-)
   ========================================================================== */

.gd-page { background: var(--paper); min-height: 80vh; }

.gd-header {
	background: var(--ink-900);
	color: var(--white);
	padding: 44px 24px;
	border-bottom: 1px solid var(--ink-700);
}
.gd-header-inner {
	max-width: var(--container);
	margin: 0 auto;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 32px;
	align-items: center;
}
@media (max-width: 800px) { .gd-header-inner { grid-template-columns: 1fr; } }

.gd-header-eyebrow { font-family: var(--f-mono); font-size: 11px; color: var(--ink-400); letter-spacing: 0.1em; text-transform: uppercase; }
.gd-header-title {
	font-family: var(--f-serif);
	font-size: 36px;
	font-weight: 500;
	color: var(--white);
	letter-spacing: -0.02em;
	margin-top: 4px;
}
.gd-header-meta { margin-top: 6px; font-size: 12px; color: var(--ink-300); }
.gd-header-meta .sep { color: var(--ink-600); margin: 0 6px; }

.gd-header-side { display: flex; flex-direction: column; align-items: flex-end; gap: 16px; }
.gd-header-stats { display: flex; gap: 32px; }
.gd-header-actions { display: flex; align-items: center; }
@media (max-width: 800px) { .gd-header-stats { flex-wrap: wrap; gap: 20px; } }

.gd-admin-context {
	max-width: var(--container);
	margin: 0 auto 16px;
	padding: 14px 18px;
	background: rgba(99, 102, 241, 0.12);
	border: 1px solid rgba(129, 140, 248, 0.35);
	border-radius: 12px;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 20px;
	font-size: 14px;
	color: var(--ink-200);
}
.gd-admin-context p { margin: 0; flex: 1 1 240px; display: flex; align-items: center; gap: 8px; }
.gd-admin-context-link {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 13px;
	color: var(--indigo-light, #a5b4fc);
	text-decoration: none;
}
.gd-admin-context-link:hover { color: var(--white); text-decoration: underline; }
.gd-stat-label { display: block; font-family: var(--f-mono); font-size: 10px; color: var(--ink-400); letter-spacing: 0.1em; text-transform: uppercase; }
.gd-stat-value { display: block; margin-top: 4px; font-family: var(--f-mono); font-size: 22px; font-weight: 700; color: var(--white); }

.gd-nav { background: var(--white); border-bottom: 1px solid var(--ink-100); position: sticky; top: 0; z-index: 50; }
.gd-nav-inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 24px;
	display: flex;
	gap: 4px;
	overflow-x: auto;
	scrollbar-width: none;
}
.gd-nav-inner::-webkit-scrollbar { display: none; }
.gd-nav-item {
	padding: 16px 14px;
	font-size: 14px;
	font-weight: 500;
	color: var(--ink-500);
	border-bottom: 2px solid transparent;
	transition: all .15s;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.gd-nav-item:hover { color: var(--ink-900); }
.gd-nav-item.active { color: var(--ink-900); border-bottom-color: var(--indigo); font-weight: 600; }
.gd-nav-item i { font-size: 16px; }

.gd-content { max-width: var(--container); margin: 0 auto; padding: 36px 24px 80px; }

.gd-row {
	display: grid;
	gap: 18px;
	margin-bottom: 24px;
}
.gd-row-2 { grid-template-columns: 1fr 1fr; }
.gd-row-3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) {
	.gd-row-2 { grid-template-columns: 1fr; }
	.gd-row-3 { grid-template-columns: 1fr; }
}

.gd-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 24px 28px;
}
.gd-card-eyebrow {
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.gd-card-value {
	font-family: var(--f-serif);
	font-size: 44px;
	font-weight: 500;
	color: var(--ink-900);
	letter-spacing: -0.025em;
	margin: 8px 0 6px;
}
.gd-card-sub { font-size: 12px; color: var(--ink-500); }

.gd-block { background: var(--white); border: 1px solid var(--ink-100); }
.gd-block-head {
	padding: 16px 20px;
	border-bottom: 1px solid var(--ink-100);
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.gd-block-title { font-size: 14px; font-weight: 700; color: var(--ink-900); }
.gd-block-link { font-size: 12px; font-weight: 600; color: var(--ink-500); }
.gd-block-link:hover { color: var(--indigo); }
.gd-list { padding: 8px 0; }
.gd-list-row {
	padding: 12px 20px;
	border-bottom: 1px dashed var(--ink-100);
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
}
.gd-list-row:last-child { border-bottom: none; }
.gd-list-title { font-size: 14px; font-weight: 500; color: var(--ink-900); }
.gd-list-meta { margin-top: 3px; font-size: 11px; color: var(--ink-500); }
.gd-list-meta .sep { color: var(--ink-200); margin: 0 4px; }
.gd-list-stats { font-size: 12px; color: var(--ink-700); white-space: nowrap; }
.gd-list-stats strong { color: var(--ink-900); font-weight: 700; }
.gd-empty { padding: 28px 20px; text-align: center; color: var(--ink-400); font-size: 13px; }

.gd-tab-empty {
	padding: 80px 24px;
	background: var(--white);
	border: 1px dashed var(--ink-200);
	text-align: center;
	color: var(--ink-400);
}
.gd-tab-empty i { font-size: 32px; display: block; margin-bottom: 14px; color: var(--ink-300); }

/* ==========================================================================
   폼 공통 (.gm-form-*)
   ========================================================================== */

.gm-form-page {
	background: var(--paper);
	padding: 56px 24px 80px;
	min-height: 70vh;
}
.gm-form-inner {
	max-width: 720px;
	margin: 0 auto;
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 48px;
}
@media (max-width: 600px) { .gm-form-inner { padding: 28px 20px; } }

.gm-form-header { margin-bottom: 36px; padding-bottom: 24px; border-bottom: 1px solid var(--ink-100); }
.gm-form-eyebrow { font-size: 11px; color: var(--indigo); letter-spacing: 0.12em; text-transform: uppercase; margin-bottom: 12px; }
.gm-form-title { font-family: var(--f-serif); font-size: 36px; font-weight: 500; color: var(--ink-900); letter-spacing: -0.02em; }
.gm-form-desc { margin-top: 10px; color: var(--ink-700); font-size: 14px; line-height: 1.7; }

.gm-field-group { margin-bottom: 28px; }
.gm-field-group-title {
	font-size: 13px;
	font-weight: 700;
	color: var(--ink-900);
	letter-spacing: -0.005em;
	margin-bottom: 14px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--ink-100);
}
.gm-field-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	margin-bottom: 14px;
}
.gm-field-row:has(.gm-field-small) { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 600px) {
	.gm-field-row,
	.gm-field-row:has(.gm-field-small) { grid-template-columns: 1fr; }
}
.gm-field { display: block; margin-bottom: 14px; }
.gm-field-label {
	display: block;
	font-size: 12px;
	color: var(--ink-700);
	font-weight: 500;
	margin-bottom: 6px;
}
.gm-field-label .req { color: var(--red); }
.gm-field input[type="text"],
.gm-field input[type="email"],
.gm-field input[type="tel"],
.gm-field input[type="url"],
.gm-field input[type="number"],
.gm-field input[type="date"],
.gm-field select,
.gm-field textarea {
	width: 100%;
	padding: 11px 13px;
	border: 1px solid var(--ink-100);
	background: var(--white);
	font-family: inherit;
	font-size: 14px;
	color: var(--ink-900);
	transition: border-color .15s;
}
.gm-field input:focus,
.gm-field select:focus,
.gm-field textarea:focus {
	outline: none;
	border-color: var(--indigo);
}
.gm-field textarea { resize: vertical; min-height: 80px; }

.gm-checkbox {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 14px;
	background: var(--paper-2);
	border: 1px solid var(--ink-100);
	cursor: pointer;
	margin-bottom: 10px;
}
.gm-checkbox input { margin-top: 3px; flex-shrink: 0; }
.gm-checkbox span { font-size: 13px; line-height: 1.55; color: var(--ink-700); }
.gm-checkbox span .req { color: var(--red); }

.gm-form-actions { margin-top: 32px; }
.gm-form-feedback { margin-top: 16px; min-height: 20px; font-size: 13px; }
.gm-form-feedback.success { color: var(--green); }
.gm-form-feedback.error   { color: var(--red); }

.gm-notice {
	display: flex;
	gap: 14px;
	padding: 18px 22px;
	border: 1px solid;
	margin-bottom: 24px;
}
.gm-notice i { font-size: 22px; flex-shrink: 0; }
.gm-notice strong { display: block; font-size: 15px; margin-bottom: 4px; }
.gm-notice p { font-size: 13px; margin: 0; }
.gm-notice p + p { margin-top: 6px; }
.gm-notice-success { background: var(--green-soft); border-color: var(--green); color: var(--green); }
.gm-notice-info    { background: var(--indigo-soft); border-color: var(--indigo); color: var(--indigo); }
.gm-notice-error   { background: var(--red-soft); border-color: var(--red); color: var(--red); }

.gm-link { color: var(--indigo); font-weight: 600; }
.gm-link:hover { color: var(--indigo-deep); text-decoration: underline; }

/* ==========================================================================
   모달 (헌금·상담)
   ========================================================================== */

.grace-modal-backdrop {
	position: fixed;
	inset: 0;
	background: rgba(10, 20, 40, 0.7);
	backdrop-filter: blur(4px);
	z-index: 99998;
	display: none;
	align-items: center;
	justify-content: center;
	padding: 20px;
}
.grace-modal-backdrop.open { display: flex; }
.grace-modal {
	background: var(--white);
	max-width: 480px;
	width: 100%;
	max-height: 90vh;
	overflow-y: auto;
	z-index: 99999;
}
.grace-modal-head {
	padding: 22px 26px;
	border-bottom: 1px solid var(--ink-100);
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.grace-modal-title { font-family: var(--f-serif); font-size: 22px; font-weight: 500; }
.grace-modal-close {
	width: 32px; height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--ink-500);
	font-size: 20px;
}
.grace-modal-body { padding: 26px; }
.grace-modal-foot {
	padding: 18px 26px;
	border-top: 1px solid var(--ink-100);
	display: flex;
	gap: 8px;
	justify-content: flex-end;
}

/* ==========================================================================
   유틸리티
   ========================================================================== */
.grace-message-page .sep { color: var(--ink-200); margin: 0 6px; }
.grace-message-page .req { color: var(--red); }

/* ==========================================================================
   대시보드 — 탭별 추가 스타일 (v0.2.0)
   ========================================================================== */

/* 액션 바 */
.gd-action-bar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	margin-bottom: 20px;
	flex-wrap: wrap;
}
.gd-action-bar-left,
.gd-action-bar-right {
	display: flex;
	align-items: center;
	gap: 10px;
}

.gd-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 10px 18px;
	font-size: 13px;
	font-weight: 600;
	border: 1px solid transparent;
	transition: all .15s;
	cursor: pointer;
}
.gd-btn i { font-size: 16px; }
.gd-btn-primary { background: var(--ink-900); color: var(--white); border-color: var(--ink-900); }
.gd-btn-primary:hover { background: var(--indigo); color: var(--white); border-color: var(--indigo); }
.gd-btn-light { background: var(--white); color: var(--ink-700); border-color: var(--ink-100); }
.gd-btn-light:hover { background: var(--ink-50); }

.gd-search-form {
	display: flex;
	gap: 6px;
	align-items: center;
}
.gd-search-input {
	padding: 9px 12px;
	border: 1px solid var(--ink-100);
	font-family: inherit;
	font-size: 13px;
	min-width: 240px;
	background: var(--white);
	color: var(--ink-900);
}
.gd-search-input:focus { outline: none; border-color: var(--indigo); }

/* 서브 탭 */
.gd-subtabs {
	display: flex;
	gap: 4px;
	flex-wrap: wrap;
	margin-bottom: 16px;
}
.gd-subtab {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 8px 14px;
	background: var(--white);
	border: 1px solid var(--ink-100);
	color: var(--ink-600);
	font-size: 13px;
	font-weight: 500;
	transition: all .15s;
}
.gd-subtab:hover { color: var(--ink-900); border-color: var(--ink-300); }
.gd-subtab.active {
	background: var(--ink-900);
	color: var(--white);
	border-color: var(--ink-900);
}
.gd-subtab-count {
	display: inline-block;
	padding: 1px 7px;
	background: var(--ink-50);
	color: var(--ink-600);
	font-size: 11px;
	font-weight: 600;
}
.gd-subtab.active .gd-subtab-count {
	background: rgba(255,255,255,0.2);
	color: var(--white);
}

/* 테이블 */
.gd-table-wrap {
	background: var(--white);
	border: 1px solid var(--ink-100);
	overflow-x: auto;
}
.gd-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}
.gd-table th {
	background: var(--paper-2);
	padding: 12px 14px;
	text-align: left;
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.05em;
	text-transform: uppercase;
	font-weight: 600;
	border-bottom: 1px solid var(--ink-100);
}
.gd-table td {
	padding: 12px 14px;
	border-bottom: 1px solid var(--ink-50);
	vertical-align: middle;
}
.gd-table tr:last-child td { border-bottom: none; }
.gd-table tr:hover { background: var(--paper-2); }

.gd-th-thumb { width: 80px; }
.gd-th-status { width: 100px; }
.gd-th-stats { width: 80px; text-align: right; }
.gd-th-date { width: 100px; }
.gd-th-actions { width: 120px; text-align: right; }
.gd-th-amount { text-align: right; }
.gd-td-stat { text-align: right; }
.gd-td-date, .gd-td-amount { text-align: right; }
.gd-td-truncate {
	max-width: 200px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.gd-td-thumb img {
	width: 64px;
	height: 36px;
	object-fit: cover;
}
.gd-thumb-placeholder {
	width: 64px;
	height: 36px;
	background: var(--ink-50);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--ink-300);
	font-size: 16px;
}

.gd-sermon-title {
	font-weight: 500;
	color: var(--ink-900);
}
.gd-sermon-title:hover { color: var(--indigo); }
.gd-sermon-bible {
	margin-top: 3px;
	font-size: 11px;
	color: var(--ink-500);
}

.gd-status-badge {
	display: inline-block;
	padding: 3px 9px;
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	background: var(--ink-50);
	color: var(--ink-700);
}
.gd-status-draft     { background: var(--ink-50); color: var(--ink-700); }
.gd-status-pending   { background: var(--gold-soft); color: var(--gold); }
.gd-status-published { background: var(--green-soft); color: var(--green); }
.gd-status-private   { background: var(--indigo-soft); color: var(--indigo); }
.gd-status-deleted   { background: var(--red-soft); color: var(--red); }
.gd-grade-visitor    { background: var(--ink-50); color: var(--ink-700); }
.gd-grade-member     { background: var(--indigo-soft); color: var(--indigo); }
.gd-grade-baptized   { background: var(--gold-soft); color: var(--gold); }
.gd-grade-officer    { background: var(--diamond-soft); color: var(--diamond); }

.gd-row-actions {
	display: inline-flex;
	gap: 4px;
	justify-content: flex-end;
}
.gd-action-btn {
	width: 30px;
	height: 30px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--paper-2);
	color: var(--ink-600);
	font-size: 15px;
	transition: all .15s;
	border: 1px solid transparent;
}
.gd-action-btn:hover {
	background: var(--ink-900);
	color: var(--white);
}
.gd-action-btn.gd-action-publish:hover  { background: var(--green); color: var(--white); }
.gd-action-btn.gd-action-unpublish:hover{ background: var(--gold); color: var(--white); }
.gd-action-btn.gd-action-delete:hover   { background: var(--red); color: var(--white); }

/* 빈 상태 */
.gd-empty-state {
	background: var(--white);
	border: 1px dashed var(--ink-200);
	padding: 60px 24px;
	text-align: center;
	color: var(--ink-500);
}
.gd-empty-state i {
	display: block;
	font-size: 48px;
	color: var(--ink-300);
	margin-bottom: 16px;
}
.gd-empty-state h3 {
	font-family: var(--f-serif);
	font-size: 20px;
	font-weight: 500;
	color: var(--ink-700);
	margin-bottom: 8px;
}
.gd-empty-state p {
	margin-bottom: 20px;
	font-size: 14px;
}

/* 폼 */
.gd-form {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 28px;
}
.gd-form-inline {
	display: flex;
	gap: 8px;
	align-items: center;
	margin: 16px 0;
}
.gd-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
	margin-bottom: 16px;
}
.gd-field { display: flex; flex-direction: column; }
.gd-field-full { grid-column: 1 / -1; }
.gd-field-label {
	font-size: 12px;
	color: var(--ink-700);
	font-weight: 500;
	margin-bottom: 6px;
}
.gd-field-help {
	font-size: 11px;
	color: var(--ink-500);
	margin-top: 4px;
}
.gd-field input[type="text"],
.gd-field input[type="url"],
.gd-field input[type="date"],
.gd-field input[type="time"],
.gd-field input[type="number"],
.gd-field input[type="email"],
.gd-field input[type="tel"],
.gd-field input[type="search"],
.gd-field select,
.gd-field textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--ink-100);
	font-family: inherit;
	font-size: 13px;
	background: var(--white);
	color: var(--ink-900);
}
.gd-field input:focus,
.gd-field select:focus,
.gd-field textarea:focus { outline: none; border-color: var(--indigo); }
.gd-field textarea { resize: vertical; min-height: 80px; }

.gd-checkbox-row {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 12px 16px;
	background: var(--paper-2);
	border: 1px solid var(--ink-100);
	cursor: pointer;
	margin-bottom: 10px;
}
.gd-checkbox-row input { margin-top: 3px; }
.gd-checkbox-row strong { display: block; font-size: 14px; color: var(--ink-900); }
.gd-checkbox-row small { display: block; font-size: 11px; color: var(--ink-500); margin-top: 3px; }

.gd-form-actions {
	margin-top: 24px;
	display: flex;
	gap: 8px;
}
.gd-form-feedback {
	margin-top: 12px;
	min-height: 20px;
	font-size: 13px;
}
.gd-form-feedback.success { color: var(--green); }
.gd-form-feedback.error { color: var(--red); }

.gd-tab-header {
	margin-bottom: 24px;
}
.gd-tab-title {
	font-family: var(--f-serif);
	font-size: 24px;
	font-weight: 500;
	color: var(--ink-900);
	letter-spacing: -0.015em;
	margin-bottom: 6px;
}
.gd-tab-desc {
	font-size: 14px;
	color: var(--ink-600);
	line-height: 1.6;
}

/* 4-card 그리드 */
.gd-row-4 {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 14px;
	margin-bottom: 24px;
}
@media (max-width: 900px) { .gd-row-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .gd-row-4 { grid-template-columns: 1fr; } }

/* 채널 배지 */
.gd-channel-badge {
	display: inline-block;
	padding: 3px 8px;
	font-size: 10px;
	font-weight: 700;
	letter-spacing: 0.06em;
	background: var(--paper-2);
	color: var(--ink-700);
}
.gd-channel-jseeds { background: var(--ink-900); color: var(--white); }
.gd-channel-donationbox_cms,
.gd-channel-donationbox_card { background: var(--indigo); color: var(--white); }

/* 차트 (월별 막대) */
.gd-chart {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: 6px;
	padding: 24px;
	min-height: 200px;
	align-items: end;
}
.gd-bar-col {
	display: flex;
	flex-direction: column;
	align-items: center;
}
.gd-bar-wrap {
	width: 100%;
	height: 140px;
	display: flex;
	align-items: flex-end;
	background: var(--paper-2);
}
.gd-bar {
	width: 100%;
	background: var(--indigo);
	transition: height .6s ease-out;
	min-height: 2px;
}
.gd-bar-label {
	margin-top: 6px;
	font-size: 10px;
	color: var(--ink-500);
}

/* 설정 블록 */
.gd-settings-block {
	background: var(--white);
	border: 1px solid var(--ink-100);
	margin-bottom: 18px;
}
.gd-settings-head {
	padding: 18px 24px;
	border-bottom: 1px solid var(--ink-100);
	background: var(--paper-2);
}
.gd-settings-head h3 {
	font-size: 15px;
	font-weight: 700;
	color: var(--ink-900);
}
.gd-settings-block .gd-form {
	border: none;
	padding: 24px;
}
.gd-help-text {
	font-size: 13px;
	color: var(--ink-600);
	margin-top: 4px;
}

/* 프로필 사진 (대시보드 설정) */
.gd-profile-photo {
	display: flex;
	align-items: flex-start;
	gap: 20px;
	flex-wrap: wrap;
}
.gd-profile-photo-preview {
	width: 120px;
	height: 120px;
	border-radius: 12px;
	overflow: hidden;
	background: linear-gradient(145deg, var(--grace-primary, #5b4ee6) 0%, #7c6cf5 100%);
	flex-shrink: 0;
	border: 1px solid var(--ink-100);
}
.gd-profile-photo-preview img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.gd-profile-photo-placeholder {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: rgba(255, 255, 255, 0.75);
	font-size: 2.5rem;
}
.gd-profile-photo-actions {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 8px;
}
.gd-profile-photo-upload-label {
	cursor: pointer;
	margin: 0;
}
.gd-profile-photo-hint--warn {
	color: #b45309;
}
#gd-profile-photo-feedback {
	margin-top: 8px;
}

/* 시간 그리드 (상담 가능 시간) */
.gd-hours-grid {
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.gd-hour-row {
	display: grid;
	grid-template-columns: 150px auto auto auto;
	gap: 12px;
	align-items: center;
	padding: 10px 14px;
	background: var(--paper-2);
}
.gd-hour-row input[type="time"] {
	width: 110px;
	padding: 6px 10px;
	border: 1px solid var(--ink-100);
	font-family: inherit;
}
.gd-hour-sep { color: var(--ink-400); }

/* 등급별 카드 강조 */
.gd-grade-card-visitor  .gd-card-value { color: var(--ink-700); }
.gd-grade-card-member   .gd-card-value { color: var(--indigo); }
.gd-grade-card-baptized .gd-card-value { color: var(--gold); }
.gd-grade-card-officer  .gd-card-value { color: var(--diamond); }

/* 필터 바 (목록 페이지) */
.gm-filter-bar {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	background: var(--white);
	padding: 16px 20px;
	border: 1px solid var(--ink-100);
	flex-wrap: wrap;
}
.gm-filter-group {
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
}
.gm-filter-chip {
	padding: 7px 14px;
	background: var(--white);
	color: var(--ink-600);
	border: 1px solid var(--ink-100);
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
	transition: all .15s;
}
.gm-filter-chip:hover { border-color: var(--ink-300); color: var(--ink-900); }
.gm-filter-chip.active {
	background: var(--ink-900);
	color: var(--white);
	border-color: var(--ink-900);
}
.gm-filter-bar--search-only {
	justify-content: flex-end;
}
.gm-filter-bar--search-only .gm-filter-search {
	flex: 1;
	max-width: 480px;
	margin-left: auto;
}
.gm-filter-search {
	display: flex;
	gap: 6px;
}
.gm-search-input {
	padding: 9px 14px;
	border: 1px solid var(--ink-100);
	font-family: inherit;
	font-size: 13px;
	min-width: 260px;
	background: var(--white);
}
.gm-search-input:focus { outline: none; border-color: var(--indigo); }

.muted { color: var(--ink-300); }

/* ==========================================================================
   v0.4.0 — 기도제목 / 약정 / 추가 상태 배지
   ========================================================================== */

/* 기도제목 카드 */
.gd-prayer-list {
	display: flex;
	flex-direction: column;
	gap: 14px;
}
.gd-prayer-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 22px 26px;
}
.gd-prayer-card-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	padding-bottom: 12px;
	border-bottom: 1px dashed var(--ink-100);
	margin-bottom: 14px;
	flex-wrap: wrap;
}
.gd-prayer-author {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
}
.gd-prayer-author i { color: var(--ink-400); font-size: 16px; }
.gd-prayer-author strong { color: var(--ink-900); }
.gd-prayer-time {
	color: var(--ink-500);
	font-size: 11px;
	margin-left: 8px;
}
.gd-prayer-meta {
	display: flex;
	gap: 6px;
	align-items: center;
}
.gd-prayer-tag {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	padding: 3px 8px;
	background: var(--paper-2);
	color: var(--ink-600);
	font-size: 11px;
	font-family: var(--f-mono);
}
.gd-prayer-tag i { font-size: 12px; }
.gd-prayer-title {
	font-family: var(--f-serif);
	font-size: 18px;
	font-weight: 500;
	color: var(--ink-900);
	margin-bottom: 10px;
}
.gd-prayer-content {
	font-size: 14px;
	line-height: 1.7;
	color: var(--ink-700);
}
.gd-prayer-content p + p { margin-top: 8px; }

.gd-prayer-response {
	margin-top: 16px;
	padding: 14px 18px;
	background: var(--indigo-soft);
	border-left: 3px solid var(--indigo);
}
.gd-prayer-response-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 600;
	color: var(--indigo);
	margin-bottom: 8px;
}
.gd-prayer-response-label i { font-size: 14px; }
.gd-prayer-response-body {
	font-size: 14px;
	line-height: 1.7;
	color: var(--ink-800);
}

.gd-prayer-actions {
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px dashed var(--ink-100);
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

/* 기도제목 상태 배지 */
.gd-prayer-status-pending   { background: var(--gold-soft); color: var(--gold); }
.gd-prayer-status-responded { background: var(--indigo-soft); color: var(--indigo); }
.gd-prayer-status-answered  { background: var(--green-soft); color: var(--green); }
.gd-prayer-status-archived  { background: var(--ink-50); color: var(--ink-600); }

/* 약정 상태 배지 */
.gd-pledge-status-active    { background: var(--green-soft); color: var(--green); }
.gd-pledge-status-paused    { background: var(--gold-soft); color: var(--gold); }
.gd-pledge-status-cancelled { background: var(--red-soft); color: var(--red); }


/* ==========================================================================
   v0.5.0 — 토스트 알림 (라이브 출석 등록 시)
   ========================================================================== */
.gm-toast {
	position: fixed;
	bottom: 32px;
	left: 50%;
	transform: translateX(-50%);
	background: var(--ink-900);
	color: var(--white);
	padding: 12px 22px;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	font-weight: 500;
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
	z-index: 99999;
	transition: opacity 0.35s, transform 0.35s;
}
.gm-toast i { font-size: 18px; }
.gm-toast-success {
	background: var(--green, #059669);
}
.gm-toast-hide {
	opacity: 0;
	transform: translateX(-50%) translateY(20px);
}

/* ==========================================================================
   v0.5.0 — 다국어 영상 소스 편집 모달
   ========================================================================== */
.grace-modal-lg {
	max-width: 880px !important;
	width: 95vw;
}
.gd-ml-list {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.gd-ml-row {
	background: var(--paper-2);
	border: 1px solid var(--ink-100);
	padding: 12px;
}
.gd-ml-row-grid {
	display: grid;
	grid-template-columns: 80px 1fr 100px 1.6fr 1.6fr auto auto;
	gap: 8px;
	align-items: center;
}
.gd-ml-row-grid input,
.gd-ml-row-grid select {
	padding: 7px 10px;
	border: 1px solid var(--ink-100);
	background: var(--white);
	font-family: inherit;
	font-size: 13px;
	color: var(--ink-900);
}
.gd-ml-row-grid input:focus,
.gd-ml-row-grid select:focus { outline: none; border-color: var(--indigo); }

.gd-ml-default {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	color: var(--ink-600);
	cursor: pointer;
}
.gd-ml-default input { margin: 0; }

@media (max-width: 700px) {
	.gd-ml-row-grid {
		grid-template-columns: 1fr 1fr;
	}
	.gd-ml-row-grid select,
	.gd-ml-row-grid input[data-k="url"],
	.gd-ml-row-grid input[data-k="subtitle_url"] {
		grid-column: 1 / -1;
	}
}

/* ==========================================================================
   v0.6.0 — 분석문서 §22.11 신규 페이지 스타일
   ========================================================================== */

/* QR 출석 결과 카드 */
.gm-result-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 40px 28px;
	text-align: center;
}
.gm-result-icon {
	font-size: 64px;
	margin-bottom: 16px;
	line-height: 1;
}
.gm-result-success .gm-result-icon { color: var(--green); }
.gm-result-error .gm-result-icon { color: var(--red); }
.gm-result-title {
	font-size: 22px;
	font-weight: 500;
	color: var(--ink-900);
	margin-bottom: 24px;
}
.gm-result-message {
	font-size: 14px;
	color: var(--ink-600);
	line-height: 1.6;
}
.gm-result-detail {
	background: var(--paper-2);
	padding: 18px 22px;
	margin: 0 auto 24px;
	max-width: 360px;
	text-align: left;
}
.gm-result-row {
	display: flex;
	justify-content: space-between;
	padding: 8px 0;
	border-bottom: 1px dashed var(--ink-100);
	font-size: 14px;
}
.gm-result-row:last-child { border-bottom: none; }
.gm-result-label { color: var(--ink-500); }
.gm-result-value { color: var(--ink-900); font-weight: 500; }
.gm-btn-large {
	padding: 14px 28px;
	font-size: 15px;
}

/* 도네이션 플로우 — 절차 안내 */
.gm-flow-steps {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 24px 0;
}
.gm-flow-step {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 18px 22px;
}
.gm-flow-step-num {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
	background: var(--ink-900);
	color: var(--white);
	font-family: var(--f-mono);
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
}
.gm-flow-step-title {
	font-size: 15px;
	font-weight: 600;
	color: var(--ink-900);
	margin-bottom: 4px;
}
.gm-flow-step-body p {
	font-size: 13px;
	color: var(--ink-600);
	line-height: 1.6;
}

.gm-info-block {
	background: var(--paper-2);
	border-left: 3px solid var(--indigo);
	padding: 18px 22px;
	margin: 20px 0;
}
.gm-info-title {
	font-size: 14px;
	font-weight: 700;
	color: var(--ink-900);
	margin-bottom: 10px;
}
.gm-info-list {
	margin: 0;
	padding-left: 20px;
	font-size: 13px;
	color: var(--ink-700);
	line-height: 1.7;
}
.gm-info-list li { margin-bottom: 6px; }

.gm-preacher-card-compact {
	display: flex;
	align-items: center;
	gap: 14px;
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 14px 20px;
	margin: 20px 0;
}
.gm-preacher-card-compact img,
.gm-preacher-card-compact .gm-avatar-initial {
	width: 48px;
	height: 48px;
	border-radius: 0;
	object-fit: cover;
}
.gm-preacher-card-compact .gm-avatar-initial {
	background: var(--ink-100);
	color: var(--ink-700);
	font-family: var(--f-serif);
	font-size: 20px;
	font-weight: 500;
	display: flex;
	align-items: center;
	justify-content: center;
}
.gm-preacher-card-compact .gm-preacher-card-name {
	font-weight: 600;
	color: var(--ink-900);
}
.gm-preacher-card-compact .gm-preacher-card-affil {
	font-size: 12px;
	color: var(--ink-500);
}

.gm-flow-actions {
	display: flex;
	gap: 10px;
	margin-top: 24px;
	flex-wrap: wrap;
}

/* 영수증 조회 */
.gm-receipts-section {
	margin-top: 32px;
}
.gm-section-title {
	font-size: 22px;
	font-weight: 500;
	color: var(--ink-900);
	letter-spacing: -0.015em;
	margin-bottom: 14px;
}
.gm-section-desc {
	font-size: 13px;
	color: var(--ink-600);
	margin-bottom: 16px;
}
.gm-receipt-group {
	background: var(--white);
	border: 1px solid var(--ink-100);
	margin-bottom: 18px;
}
.gm-receipt-group-head {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 22px;
	border-bottom: 1px solid var(--ink-100);
	background: var(--paper-2);
}
.gm-receipt-group-head img,
.gm-receipt-group-head .gm-avatar-initial {
	width: 42px;
	height: 42px;
	border-radius: 0;
	object-fit: cover;
}
.gm-receipt-group-head .gm-avatar-initial {
	background: var(--ink-100);
	color: var(--ink-700);
	font-family: var(--f-serif);
	font-size: 18px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.gm-receipt-group-head strong {
	display: block;
	color: var(--ink-900);
}
.gm-receipt-group-head small {
	font-size: 12px;
	color: var(--ink-500);
}
.gm-receipt-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}
.gm-receipt-table th {
	padding: 11px 16px;
	text-align: left;
	font-size: 11px;
	color: var(--ink-500);
	letter-spacing: 0.05em;
	text-transform: uppercase;
	font-weight: 600;
	background: var(--paper-2);
}
.gm-receipt-table td {
	padding: 12px 16px;
	border-top: 1px solid var(--ink-50);
}
.gm-receipt-action { text-align: right; }
.gm-btn-small {
	padding: 6px 12px;
	font-size: 12px;
}

/* 기도제목 보드 */
.gm-prayer-board-page { background: var(--paper); }
.gm-prayer-list {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 16px;
}
@media (max-width: 768px) {
	.gm-prayer-list { grid-template-columns: 1fr; }
}
.gm-prayer-board-card {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 22px 26px;
}
.gm-prayer-board-head {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-bottom: 12px;
	margin-bottom: 14px;
	border-bottom: 1px dashed var(--ink-100);
	flex-wrap: wrap;
	gap: 8px;
}
.gm-prayer-board-meta {
	font-size: 12px;
	color: var(--ink-500);
	display: flex;
	align-items: center;
	gap: 6px;
	flex-wrap: wrap;
}
.gm-prayer-board-meta i { font-size: 14px; }
.gm-prayer-board-author { color: var(--ink-900); font-weight: 500; }
.gm-prayer-board-preacher { color: var(--ink-700); }
.gm-prayer-board-sep { color: var(--ink-300); }
.gm-prayer-board-time { font-family: var(--f-mono); }
.gm-prayer-board-tag {
	display: inline-block;
	padding: 3px 9px;
	font-size: 11px;
	background: var(--ink-50);
	color: var(--ink-700);
}
.gm-prayer-board-title {
	font-size: 17px;
	font-weight: 500;
	color: var(--ink-900);
	margin-bottom: 10px;
}
.gm-prayer-board-content {
	font-size: 14px;
	line-height: 1.7;
	color: var(--ink-700);
	margin-bottom: 14px;
}
.gm-prayer-board-content p + p { margin-top: 8px; }
.gm-prayer-board-answered {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 10px 14px;
	background: var(--green-soft);
	color: var(--green);
	font-size: 13px;
	margin-top: 12px;
}
.gm-prayer-board-answered i { font-size: 16px; }
.gm-prayer-board-response {
	margin-top: 14px;
	padding: 12px 16px;
	background: var(--indigo-soft);
	border-left: 3px solid var(--indigo);
}
.gm-prayer-board-response-label {
	display: flex;
	align-items: center;
	gap: 6px;
	font-size: 12px;
	font-weight: 600;
	color: var(--indigo);
	margin-bottom: 6px;
}
.gm-prayer-board-response-body {
	font-size: 13px;
	color: var(--ink-800);
	line-height: 1.6;
}
.gm-prayer-board-footer {
	margin-top: 14px;
	padding-top: 12px;
	border-top: 1px dashed var(--ink-100);
}
.gm-prayer-board-pray-btn {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 9px 16px;
	background: var(--white);
	color: var(--ink-700);
	border: 1px solid var(--ink-200);
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
	transition: all .15s;
}
.gm-prayer-board-pray-btn:hover {
	border-color: var(--indigo);
	color: var(--indigo);
}
.gm-prayer-board-pray-btn.is-prayed {
	background: var(--indigo);
	color: var(--white);
	border-color: var(--indigo);
	cursor: default;
}
.gm-prayer-board-pray-btn:disabled {
	opacity: 0.95;
}
.gm-prayer-board-count {
	font-family: var(--f-mono);
	font-weight: 600;
	margin-left: 4px;
}

/* 실화폐 헌금 — 동기화 상태 */
.gd-sync-status {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 12px 18px;
	background: var(--paper-2);
	border-left: 3px solid var(--green);
	margin-top: 20px;
	font-size: 13px;
}
.gd-sync-status code {
	font-family: var(--f-mono);
	font-size: 12px;
	background: var(--white);
	padding: 3px 8px;
	color: var(--ink-900);
}
.gd-sync-status small {
	color: var(--ink-500);
	margin-left: auto;
}

/* ==========================================================================
   v0.7.0 — 미납 약정 알림 배지 (대시보드 pledges 탭)
   ========================================================================== */
.gd-overdue-alert {
	display: flex;
	gap: 16px;
	background: #FEF3C7;
	border-left: 4px solid #D97706;
	padding: 16px 20px;
	margin-bottom: 20px;
}
.gd-overdue-alert-icon {
	color: #D97706;
	font-size: 28px;
	line-height: 1;
	flex-shrink: 0;
}
.gd-overdue-alert-body strong {
	display: block;
	color: #92400E;
	font-size: 15px;
	margin-bottom: 4px;
}
.gd-overdue-alert-body p {
	font-size: 13px;
	color: var(--ink-700);
	line-height: 1.6;
	margin-bottom: 8px;
}
.gd-overdue-alert-list {
	margin: 8px 0 0;
	padding-left: 18px;
	font-size: 13px;
	color: var(--ink-800);
}
.gd-overdue-alert-list li { margin-bottom: 4px; }

/* ==========================================================================
   v0.8.0 — 멤버 가입 4종 약관 동의 UI
   ========================================================================== */
.gm-consent-group {
	border: 1px solid var(--ink-100);
	background: var(--paper-2);
	padding: 22px 26px;
	margin-bottom: 24px;
}
.gm-consent-title {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 15px;
	font-weight: 600;
	color: var(--ink-900);
	margin: 0 0 16px;
}
.gm-consent-title i {
	color: var(--indigo);
	font-size: 18px;
}
.gm-consent-row {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 10px 0;
	cursor: pointer;
	font-size: 14px;
	color: var(--ink-800);
	line-height: 1.5;
}
.gm-consent-row input[type="checkbox"] {
	margin-top: 2px;
	flex-shrink: 0;
	width: 16px;
	height: 16px;
	cursor: pointer;
}
.gm-consent-row strong { color: var(--ink-900); font-weight: 600; }
.gm-consent-row small {
	display: block;
	color: var(--ink-500);
	font-size: 12px;
	margin-top: 2px;
}
.gm-consent-all-label {
	display: block;
}
.gm-consent-divider {
	border-bottom: 1px dashed var(--ink-200);
	margin: 8px 0;
}
.gm-consent-badge {
	display: inline-block;
	padding: 1px 8px;
	font-size: 11px;
	font-weight: 600;
	font-family: var(--f-mono);
	margin-right: 6px;
	vertical-align: middle;
}
.gm-consent-badge-required {
	background: var(--red-soft, #FEE2E2);
	color: var(--red, #B91C1C);
}
.gm-consent-badge-optional {
	background: var(--ink-100);
	color: var(--ink-600);
}
.gm-consent-toggle {
	background: transparent;
	border: none;
	color: var(--indigo);
	font-size: 12px;
	cursor: pointer;
	margin-left: 6px;
	padding: 0;
	text-decoration: underline;
	font-family: inherit;
}
.gm-consent-toggle:hover { opacity: 0.8; }
.gm-consent-content {
	background: var(--white);
	border: 1px solid var(--ink-100);
	padding: 14px 18px;
	margin: 8px 0 4px 26px;
	font-size: 12px;
	color: var(--ink-700);
	line-height: 1.7;
	max-height: 200px;
	overflow-y: auto;
}
.gm-consent-content p { margin-bottom: 8px; }
.gm-consent-content p:last-child { margin-bottom: 0; }

/* 사용자 가이드 (/grace-message/guide/) — 인라인 HTML·브라우저 스크롤 */
body.grace-message-guide .gm-user-guide-page {
	padding: 0;
	max-width: none;
	overflow: visible;
	min-height: 0;
}
body.grace-message-guide .entry-content,
body.grace-message-guide .site-content,
body.grace-message-guide .ast-container,
body.grace-message-guide #primary,
body.grace-message-guide main {
	overflow: visible !important;
	max-height: none !important;
}
.gm-guide-toolbar {
	display: flex;
	align-items: center;
	gap: 16px;
	flex-wrap: wrap;
	padding: 16px 24px;
	background: var(--ink-900);
	border-bottom: 1px solid var(--ink-700);
	position: sticky;
	top: 0;
	z-index: 50;
}
.gm-guide-title {
	margin: 0;
	font-size: 20px;
	color: var(--white);
	flex: 1;
}
.gm-guide-back {
	flex-shrink: 0;
}
.gm-user-guide-shell {
	width: 100%;
	max-width: 100%;
	overflow: visible;
}
.gm-user-guide-inline {
	width: 100%;
	max-width: 100%;
	overflow: visible;
}
.gm-user-guide-inline .grace-guide-doc {
	width: 100%;
}
