/* 서브 — 말씀·찬양 갤러리형(주일예배 등). main.css 이후 로드 */

.top_banner {
    position: relative;
    z-index: 1;
    background: var(--main3-section-bg, #fbfbfb);
    color: var(--main3-heading, #4a2d7a);
    padding: clamp(36px, 5vw, 56px) 0;
}
/* script.js initTopBannerArt — SVG(sub-top-banner-n)와 동일 보조 그라데이션 톤 */
.top_banner.top_banner--art {
    position: relative;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center right;
}
.top_banner.top_banner--art::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
}
/* 1 우리 교회는 — 따뜻한 크림·로즈(메시지 스카이 톤과 대비) */
.top_banner.top_banner--art.top_banner--art-1 {
    background-color: #fff8f4;
}
.top_banner.top_banner--art.top_banner--art-1::before {
    background: linear-gradient(
        90deg,
        rgba(255, 250, 245, 0.97) 0%,
        rgba(244, 232, 238, 0.82) 36%,
        rgba(253, 232, 232, 0.34) 68%,
        transparent 100%
    );
}
/* 2 메시지 — 차가운 스카이·시안(우리 교회 웜 톤과 구분) */
.top_banner.top_banner--art.top_banner--art-2 {
    background-color: #eff8ff;
}
.top_banner.top_banner--art.top_banner--art-2::before {
    background: linear-gradient(
        90deg,
        rgba(239, 248, 255, 0.97) 0%,
        rgba(219, 234, 254, 0.82) 38%,
        rgba(207, 250, 254, 0.32) 70%,
        transparent 100%
    );
}
/* 3 다음 세대 — 영아~유초등: 크레파스 / 청소년·청년: 블루·역동적 SVG */
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-kids {
    background-color: #fff9e7;
}
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-kids::before {
    background: linear-gradient(
        90deg,
        rgba(255, 249, 231, 0.97) 0%,
        rgba(255, 244, 220, 0.85) 36%,
        rgba(255, 236, 244, 0.38) 72%,
        transparent 100%
    );
}
/* 청소년: 연한 시안 파스텔(다른 서브 배너와 톤 맞춤) + 두들 SVG */
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-teen {
    background-color: #ecfeff;
}
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-teen::before {
    background: linear-gradient(
        90deg,
        rgba(255, 255, 255, 0.94) 0%,
        rgba(236, 254, 255, 0.72) 34%,
        rgba(224, 247, 250, 0.28) 58%,
        transparent 78%
    );
}
/* 청년 공동체 — 몽글·파스텔 버블 톤 */
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-youth {
    background-color: #fffbfb;
}
/* 다음 세대: 데스크톱 가로 맞춤(JS 동일). 모바일은 세로 맞춤 — 긴 배너에서 위·아래 빈 띠 방지 */
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-kids,
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-teen,
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-youth {
    background-size: 100% auto;
    background-position: center center;
}
@media (max-width: 767.98px) {
    .top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-kids {
        background-size: auto 100%;
        background-position: center center;
    }
    /* 청소년: 장식(＊·스파크)이 좌·우 끝 → 세로 맞춤 시 가운데만 크롭됨 → 왼쪽 정렬로 리드와 맞춤 */
    .top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-teen {
        background-size: auto 100%;
        background-position: left center;
    }
    /* 청년: 세로 맞춤 시 가로 크롭이 중앙만 보여 블롭이 사라짐 → 우측 프레이밍 */
    .top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-youth {
        background-size: auto 100%;
        background-position: right center;
    }
}
.top_banner.top_banner--art.top_banner--art-3.top_banner--art-3-youth::before {
    background: linear-gradient(
        90deg,
        rgba(255, 251, 251, 0.62) 0%,
        rgba(255, 255, 255, 0.22) 40%,
        rgba(255, 251, 251, 0) 58%
    );
}
/* 4 양육과 훈련 — b4 */
.top_banner.top_banner--art.top_banner--art-4 {
    background-color: #f4f9ff;
}
.top_banner.top_banner--art.top_banner--art-4::before {
    background: linear-gradient(
        90deg,
        rgba(244, 249, 255, 0.96) 0%,
        rgba(232, 236, 252, 0.76) 40%,
        rgba(228, 240, 248, 0.28) 72%,
        transparent 100%
    );
}
/* 5 사역 — 민트·세이지(교육위 등 전체 사역 공통) */
.top_banner.top_banner--art.top_banner--art-5 {
    background-color: #f2faf6;
}
.top_banner.top_banner--art.top_banner--art-5::before {
    background: linear-gradient(
        90deg,
        rgba(242, 250, 246, 0.97) 0%,
        rgba(228, 243, 235, 0.82) 40%,
        rgba(210, 238, 224, 0.32) 72%,
        transparent 100%
    );
}
/* 6 나눔 — 크림·연노랑(다른 상위 메뉴와 구분) */
.top_banner.top_banner--art.top_banner--art-6 {
    background-color: #fffbeb;
}
.top_banner.top_banner--art.top_banner--art-6::before {
    background: linear-gradient(
        90deg,
        rgba(255, 253, 245, 0.97) 0%,
        rgba(255, 248, 228, 0.85) 38%,
        rgba(254, 240, 199, 0.42) 70%,
        transparent 100%
    );
}
.top_banner.top_banner--art .container {
    position: relative;
    z-index: 1;
}
.top_banner .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 30px;
}
.top_banner h2 {
    font-size: clamp(22px, 2.5vw, 28px);
    font-weight: 800;
    letter-spacing: -0.06em;
    margin-bottom: 10px;
    line-height: 1.32;
}
.top_banner p {
    font-size: 15px;
    font-weight: 500;
    color: var(--main3-text-body, #6b5a8c);
    line-height: 1.55;
    letter-spacing: -0.03em;
    max-width: 52em;
    margin-top: 0;
}
/* 부서 페이지: 부서명 · 슬로건(성경) 한 줄 */
.top_banner p.top_banner_lead {
    font-size: clamp(18px, 2.1vw, 24px);
    font-weight: 800;
    color: var(--main3-heading, #4a2d7a);
    line-height: 1.35;
    letter-spacing: -0.05em;
    margin-bottom: 12px;
    max-width: none;
}
.top_banner .top_banner_dept {
    color: var(--main3-accent, #6b4ba3);
}
.top_banner .top_banner_sep {
    color: #c4bdc9;
    font-weight: 600;
    margin: 0 0.1em;
}
.top_banner .top_banner_ref {
    color: #8e8899;
    font-weight: 600;
    white-space: nowrap;
}

/* 부서형 배너 — 좁은 화면: 긴 슬로건·성경 구절 줄바꿈·여백 */
@media (max-width: 639.98px) {
    .top_banner:has(p.top_banner_lead) {
        padding-top: clamp(26px, 4.5vw, 40px);
        padding-bottom: clamp(26px, 4.5vw, 40px);
    }
    .top_banner p.top_banner_lead {
        font-size: clamp(16px, 4vw, 21px);
        line-height: 1.38;
        letter-spacing: -0.045em;
    }
}
@media (max-width: 399.98px) {
    .top_banner .top_banner_ref {
        white-space: normal;
    }
}

.tab_menu_depth2,
.tab_menu_depth3 {
    background: #fff;
    border-bottom: 1px solid #e8e6ec;
}
.tab_menu_depth2 .wrap,
.tab_menu_depth3 .wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 30px;
    display: flex;
    flex-wrap: wrap;
    gap: 0;
}
.tab_menu_depth2 .wrap a,
.tab_menu_depth3 .wrap a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 14px 18px;
    font-size: 15px;
    font-weight: 600;
    color: #6b6578;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.tab_menu_depth2 .wrap a:hover,
.tab_menu_depth3 .wrap a:hover {
    color: var(--main3-accent, #6b4ba3);
}
.tab_menu_depth2 .wrap a.active,
.tab_menu_depth3 .wrap a.active {
    color: var(--main3-accent, #6b4ba3);
    font-weight: 700;
    border-bottom-color: var(--main3-accent, #6b4ba3);
}

.tab_menu_depth3 .wrap a {
    padding: 12px 14px;
    font-size: 14px;
}

.board_gallery_type {
    padding: clamp(40px, 5vw, 64px) 0 80px;
    background: #fff;
}
/* main.css 전역 section{padding:110px}와 겹치지 않도록(말씀·찬양은 div 권장) */
section.board_gallery_type {
    padding: clamp(40px, 5vw, 64px) 0 80px;
}
.board_gallery_type > .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 30px;
}
/* LNB 있는 서브: 부서 페이지(.sub_text)와 동일 — 바깥 .container 패딩만 쓰고 이중 여백 제거 */
.sub_page .board_gallery_type > .container {
    max-width: none;
    margin: 0;
    padding-left: 0;
    padding-right: 0;
}
.board_gallery_type .title {
    margin-bottom: 28px;
}
.board_gallery_type .title h1 {
    font-size: clamp(26px, 3vw, 34px);
    font-weight: 800;
    color: #141118;
    letter-spacing: -0.06em;
}
.board_gallery_type .title .underline {
    display: block;
    width: 48px;
    height: 3px;
    margin-top: 12px;
    background: var(--main3-accent, #6b4ba3);
    border-radius: 2px;
}

.board_gallery_type .board_top {
    display: flex;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
    margin-bottom: 24px;
}
.board_gallery_type .search_group {
    display: flex;
    align-items: stretch;
    margin-left: auto;
    flex: 0 0 auto;
    width: auto;
    max-width: min(400px, 100%);
    min-width: 0;
    border: 1px solid #ddd;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    box-sizing: border-box;
}
.board_gallery_type .search_group input {
    flex: 1;
    min-width: 0;
    padding: 12px 14px;
    border: none;
    font-size: 15px;
    font-family: inherit;
    letter-spacing: -0.03em;
    outline: none;
}
.board_gallery_type .search_group button {
    padding: 0 14px;
    border-left: 1px solid #eee;
    background: #fafafa;
}
.board_gallery_type .search_group button:hover {
    background: #f0eef5;
}
.board_gallery_type .search_group button img {
    width: 20px;
    height: 20px;
    display: block;
}

.board_gallery_type .board_list .row {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 24px 20px;
}
/* 메시지형 영상 갤러리: 4×4 그리드(주일·타 메시지 페이지 공통) */
.board_gallery_type--message .board_list .row {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}
.board_gallery_type--message .board_list a.item .thumb .thumb--empty {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: linear-gradient(145deg, #f2eef8, #e8e4f0);
}
@media (max-width: 991.98px) {
    .board_gallery_type--message .board_list .row {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 479.98px) {
    .board_gallery_type--message .board_list .row {
        grid-template-columns: minmax(0, 1fr);
    }
}
.board_gallery_type .board_list .row > p {
    grid-column: 1 / -1;
    padding: 48px 16px;
    text-align: center;
    color: #888;
    font-size: 15px;
}

.board_gallery_type .board_list a.item {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    border-radius: 14px;
    border: 1px solid #e8e6ec;
    overflow: hidden;
    background: #fff;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.board_gallery_type .board_list a.item:hover {
    border-color: rgba(107, 75, 163, 0.35);
    box-shadow: 0 8px 28px rgba(74, 45, 122, 0.08);
}
.board_gallery_type .board_list a.item .thumb {
    aspect-ratio: 16 / 9;
    border-radius: 0;
}
.board_gallery_type .board_list a.item .text {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px 16px 18px;
    text-align: left;
}
.board_gallery_type .board_category {
    font-size: 12px;
    font-weight: 800;
    color: var(--main3-accent, #6b4ba3);
    letter-spacing: -0.03em;
}
.board_gallery_type .board_title {
    font-size: 15px;
    font-weight: 700;
    color: #1a1720;
    line-height: 1.45;
    letter-spacing: -0.04em;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.board_gallery_type .board_bottom {
    margin-top: 4px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.board_gallery_type .board_bottom li {
    font-size: 13px;
    color: #6b6578;
    font-weight: 500;
    letter-spacing: -0.02em;
}
.board_gallery_type .board_bottom li.board_date {
    color: #9a96a3;
    font-variant-numeric: tabular-nums;
    margin-top: 2px;
}

.board_gallery_type .pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 6px;
    margin-top: 40px;
}
.board_gallery_type .pagination button {
    min-width: 40px;
    height: 40px;
    padding: 0 10px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    color: #555;
    background: #f5f5f7;
    border: 1px solid transparent;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.board_gallery_type .pagination button:hover:not(:disabled):not(.active) {
    background: #ebe8f0;
    color: var(--main3-heading, #4a2d7a);
}
.board_gallery_type .pagination button.active {
    background: var(--main3-accent, #6b4ba3);
    color: #fff;
    border-color: transparent;
}
.board_gallery_type .pagination button.disabled {
    opacity: 0.4;
    cursor: not-allowed;
}
.board_gallery_type .pagination button.page-prev,
.board_gallery_type .pagination button.page-next {
    font-weight: 700;
}

@media (max-width: 1199.98px) {
    .top_banner .container,
    .tab_menu_depth2 .wrap,
    .tab_menu_depth3 .wrap,
    .board_gallery_type > .container {
        padding-left: 16px;
        padding-right: 16px;
    }
    .sub_page .board_gallery_type > .container {
        padding-left: 0;
        padding-right: 0;
    }
    .top_banner p.top_banner_body,
    .top_banner h2 + p {
        font-size: 14px;
        line-height: 1.6;
        letter-spacing: -0.02em;
    }
}

/* 준비 중 페이지 — 아이콘 + 안내 + 홈으로 가기(박스 없음) */
.page-soon {
    max-width: 520px;
    margin: 0 auto;
    padding: clamp(32px, 6vw, 56px) 0 clamp(48px, 8vw, 80px);
}
.page-soon_inner {
    text-align: center;
    padding: 0;
    background: none;
    border: none;
    box-shadow: none;
    border-radius: 0;
}
.page-soon_icon {
    display: flex;
    justify-content: center;
    margin: 0 0 18px;
}
.page-soon_icon img {
    width: clamp(26px, 6.5vw, 32px);
    height: auto;
    display: block;
}
.page-soon_msg {
    margin: 0 0 20px;
    font-size: clamp(15px, 1.9vw, 17px);
    font-weight: 600;
    color: var(--main3-heading, #4a2d7a);
    letter-spacing: -0.03em;
    line-height: 1.65;
}
.page-soon_msg_sub {
    display: block;
    margin-top: 8px;
    font-size: clamp(13px, 1.65vw, 15px);
    font-weight: 500;
    color: #6b6578;
    line-height: 1.55;
}
.page-soon .btn_type1 {
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 132px;
    max-width: 100%;
    height: 36px;
    margin: 0 auto;
    padding: 0 14px;
    text-decoration: none;
    border: 2px solid var(--main3-accent, #6b4ba3);
    border-radius: 10px;
    color: var(--main3-accent, #6b4ba3);
    font-weight: 600;
    font-size: 13px;
    letter-spacing: -0.02em;
    transition: background 0.2s ease-in-out, color 0.2s ease-in-out;
}
.page-soon .btn_type1:hover {
    background: var(--main3-accent, #6b4ba3);
    color: #fff;
}
.page-soon .btn_type1 span {
    display: inline;
}
@media (max-width: 1199.98px) {
    .page-soon .btn_type1 {
        width: 118px;
        height: 34px;
        border-radius: 9px;
        font-size: 12px;
    }
}

/* 예배 안내 — 보라 톤·카드형 표 */
.worship_guide {
    max-width: 720px;
    margin: 0 auto;
    padding: clamp(28px, 4vw, 48px) 0 clamp(48px, 6vw, 80px);
}
.worship_guide_intro {
    margin: 0 0 clamp(28px, 4vw, 36px);
    font-size: 16px;
    line-height: 1.65;
    font-weight: 500;
    color: var(--main3-text-body, #6b5a8c);
    letter-spacing: -0.03em;
}
.worship_guide_section {
    margin-bottom: clamp(28px, 3.5vw, 36px);
}
.worship_guide_section:last-of-type {
    margin-bottom: 0;
}
.worship_guide_h {
    margin: 0 0 14px;
    font-size: clamp(17px, 2vw, 19px);
    font-weight: 800;
    letter-spacing: -0.05em;
    color: var(--main3-heading, #4a2d7a);
    padding-bottom: 10px;
    border-bottom: 2px solid var(--main3-accent, #6b4ba3);
}
.worship_guide_list {
    background: #faf9fc;
    border: 1px solid rgba(107, 75, 163, 0.12);
    border-radius: 12px;
    overflow: hidden;
}
.worship_guide_row {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(0, 1.25fr) minmax(0, 0.9fr);
    gap: 10px 16px;
    padding: 14px 18px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.06);
    font-size: 15px;
    line-height: 1.5;
    letter-spacing: -0.03em;
    align-items: start;
}
.worship_guide_row:last-child {
    border-bottom: none;
}
.worship_guide_name {
    font-weight: 700;
    color: #2a2633;
}
.worship_guide_time {
    font-weight: 500;
    color: #4a4458;
    font-variant-numeric: tabular-nums;
}
.worship_guide_place {
    font-weight: 600;
    color: var(--main3-accent, #6b4ba3);
}
.worship_guide_note {
    margin: clamp(20px, 3vw, 28px) 0 0;
    padding: 14px 16px;
    border-radius: 10px;
    background: rgba(107, 75, 163, 0.06);
    border: 1px solid rgba(107, 75, 163, 0.1);
    font-size: 14px;
    line-height: 1.55;
    color: #5c5668;
    letter-spacing: -0.02em;
}
@media (max-width: 639.98px) {
    .worship_guide_row {
        grid-template-columns: 1fr;
        gap: 6px;
        padding: 16px 16px;
    }
    .worship_guide_time::before {
        content: "시간 · ";
        font-weight: 700;
        color: #6b6578;
        font-size: 12px;
    }
    .worship_guide_place::before {
        content: "장소 · ";
        font-weight: 700;
        color: #6b6578;
        font-size: 12px;
    }
}

/* 예배 안내 표 — 예배·시간·장소 3열 동일 너비 */
.dept_plan_table.dept_plan_table--worship {
    table-layout: fixed;
    --worship-line: rgba(107, 75, 163, 0.22);
}
.dept_plan_table.dept_plan_table--worship thead th {
    width: 33.333%;
    min-width: 0;
    text-align: center;
}
.dept_plan_table.dept_plan_table--worship thead th:first-child {
    border-right: 1px solid var(--worship-line);
}
.dept_plan_table.dept_plan_table--worship thead th:nth-child(2) {
    border-right: 1px solid var(--worship-line);
}
.dept_plan_table.dept_plan_table--worship tbody th[scope="row"] {
    white-space: normal;
    word-break: keep-all;
    text-align: center;
    border-right: 1px solid var(--worship-line);
    border-bottom: 1px solid var(--worship-line);
}
.dept_plan_table.dept_plan_table--worship tbody td {
    border-bottom: 1px solid var(--worship-line);
    text-align: center;
}
.dept_plan_table.dept_plan_table--worship tbody td:first-of-type {
    border-right: 1px solid var(--worship-line);
}
.dept_plan_table.dept_plan_table--worship tbody tr:last-child th[scope="row"],
.dept_plan_table.dept_plan_table--worship tbody tr:last-child td {
    border-bottom: 1px solid var(--worship-line);
}
.dept_plan_table.dept_plan_table--worship tbody td[rowspan] {
    vertical-align: middle;
}

/* 연락처·간단 정보 — dept_plan_table 행 높이 축소 */
.dept_plan_table.dept_plan_table--contact {
    font-size: 15px;
    line-height: 1.42;
    width: 100%;
    max-width: 38rem;
}
.dept_plan_table.dept_plan_table--contact tbody th[scope="row"] {
    font-size: 14px;
    padding: 7px 11px;
    width: 1%;
    white-space: nowrap;
}
.dept_plan_table.dept_plan_table--contact tbody td {
    padding: 7px 11px;
    font-variant-numeric: tabular-nums;
}
.dept_plan_table.dept_plan_table--contact .directions_info_phone {
    font-size: inherit;
    font-weight: 800;
    color: var(--main3-text-body, #6b5a8c);
}
.dept_plan_table.dept_plan_table--contact .directions_info_phone:hover {
    color: var(--main3-heading, #4a2d7a);
    text-decoration: underline;
    text-underline-offset: 3px;
}
.dept_plan_table.dept_plan_table--contact .directions_info_muted {
    font-size: inherit;
    font-weight: 700;
}
@media (max-width: 1199.98px) {
    .dept_plan_table.dept_plan_table--contact {
        font-size: 14px;
    }
    .dept_plan_table.dept_plan_table--contact tbody th[scope="row"],
    .dept_plan_table.dept_plan_table--contact tbody td {
        padding: 6px 9px;
    }
}

/* 예배 안내 — 하단 「안내」문단(부서 페이지 본문보다 한 단계 작게) */
.dept_page .worship_foot_note {
    font-size: 16px;
    line-height: 1.62;
    font-weight: 500;
    color: var(--main3-text-body, #6b5a8c);
    letter-spacing: -0.02em;
}

/* 오시는 길 */
.directions_section--map .directions_map_wrap {
    margin-top: 0;
}
.directions_section--map .directions_info_address {
    margin-top: clamp(16px, 2.2vw, 22px);
    margin-bottom: 0;
    padding: 0;
    padding-bottom: 0;
    border: none;
    border-bottom: none;
    border-radius: 0;
    background: none;
    box-shadow: none;
    box-sizing: border-box;
    text-align: left;
}
.directions_section--map .directions_info_address .directions_info_badge {
    margin-bottom: 10px;
}
.directions_section--map .directions_info_address .directions_addr_stack {
    align-items: flex-start;
    margin-left: 0;
    width: 100%;
    max-width: 100%;
    gap: 6px;
}
/* 지도 아래 주소 — 읽기 순서: 시·구(보조) → 도로(핵심) → 건물명 */
.directions_section--map .directions_addr_stack > .directions_addr_line:first-child {
    font-size: clamp(14px, 1.55vw, 15px);
    font-weight: 500;
    line-height: 1.55;
    letter-spacing: -0.02em;
    color: var(--main3-text-body, #6b5a8c);
}
.directions_section--map .directions_addr_line--road {
    font-size: clamp(17px, 1.95vw, 19px);
    font-weight: 800;
    line-height: 1.45;
    letter-spacing: -0.035em;
    color: var(--main3-heading, #4a2d7a);
}
.directions_section--map .directions_addr_line--place {
    margin-top: 6px;
    padding-top: 10px;
    border-top: 1px solid rgba(107, 75, 163, 0.14);
    font-size: clamp(16px, 1.85vw, 18px);
    font-weight: 800;
    line-height: 1.4;
    letter-spacing: -0.04em;
    color: var(--main3-heading, #4a2d7a);
}
.directions_addr_stack {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    margin: 0;
}
.directions_addr_line {
    display: block;
    margin: 0;
    font-size: clamp(16px, 1.85vw, 18px);
    font-weight: 600;
    line-height: 1.5;
    letter-spacing: -0.03em;
    color: var(--default-color, #2a2633);
}
.directions_addr_line--road {
    font-weight: 700;
    color: var(--main3-heading, #4a2d7a);
}
.directions_addr_line--place {
    margin-top: 10px;
    padding-top: 12px;
    border-top: 1px dashed rgba(107, 75, 163, 0.22);
    font-size: clamp(17px, 2vw, 20px);
    font-weight: 800;
    letter-spacing: -0.04em;
    color: var(--main3-heading, #4a2d7a);
}
.directions_info_panel {
    margin: 0;
    padding: clamp(22px, 3.2vw, 32px);
    border-radius: 14px;
    border: 1px solid rgba(107, 75, 163, 0.14);
    background: linear-gradient(165deg, #fdfcfe 0%, #f7f4fc 45%, #faf8fc 100%);
    box-shadow: 0 4px 24px rgba(74, 45, 122, 0.06);
    box-sizing: border-box;
}
.directions_info_badge {
    display: inline-block;
    margin-bottom: 8px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: var(--main3-accent, #6b4ba3);
    background: rgba(107, 75, 163, 0.1);
    border: 1px solid rgba(107, 75, 163, 0.16);
}
.directions_info_address {
    padding-bottom: clamp(18px, 2.5vw, 22px);
    margin-bottom: clamp(18px, 2.5vw, 22px);
    border-bottom: 1px solid rgba(107, 75, 163, 0.12);
}
.directions_info_address_text {
    margin: 0;
    font-size: clamp(17px, 2vw, 20px);
    font-weight: 700;
    line-height: 1.55;
    letter-spacing: -0.04em;
    color: var(--main3-heading, #4a2d7a);
    word-break: keep-all;
}
.directions_info_grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(16px, 3vw, 28px);
    align-items: start;
}
.directions_info_cell {
    min-width: 0;
}
.directions_info_phone {
    display: inline-block;
    margin: 0;
    font-size: clamp(18px, 2.1vw, 22px);
    font-weight: 800;
    letter-spacing: -0.03em;
    color: var(--main3-accent, #6b4ba3);
    text-decoration: none;
    font-variant-numeric: tabular-nums;
    transition: color 0.15s ease;
}
.directions_info_phone:hover {
    color: var(--main3-heading, #4a2d7a);
    text-decoration: underline;
    text-underline-offset: 4px;
}
.directions_info_muted {
    display: inline-block;
    font-size: clamp(17px, 2vw, 20px);
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--main3-text-body, #6b5a8c);
    font-variant-numeric: tabular-nums;
}
.directions_contact_plain {
    margin: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(14px, 2vw, 20px) clamp(20px, 4vw, 40px);
    align-items: start;
}
.directions_contact_line {
    margin: 0;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 12px;
    min-width: 0;
}
.directions_contact_line .directions_info_badge {
    margin-bottom: 0;
    flex-shrink: 0;
    width: auto;
    min-width: 0;
    height: 34px;
    padding: 0 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: -0.05em;
    line-height: 1.15;
    text-align: center;
    box-sizing: border-box;
}
@media (max-width: 639.98px) {
    .directions_contact_plain {
        grid-template-columns: 1fr;
    }
}
.directions_map_wrap {
    position: relative;
    width: 100%;
    max-width: 100%;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(107, 75, 163, 0.2);
    background: #ece8f4;
    aspect-ratio: 16 / 9;
    min-height: 240px;
    box-shadow: 0 6px 28px rgba(74, 45, 122, 0.08);
}
.directions_map_wrap iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.directions_map_actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 16px;
    align-items: center;
}
.directions_map_chip {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 16px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--main3-heading, #4a2d7a);
    background: #fff;
    border: 1px solid rgba(107, 75, 163, 0.22);
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.directions_map_chip:hover {
    border-color: var(--main3-accent, #6b4ba3);
    color: var(--main3-accent, #6b4ba3);
    background: rgba(107, 75, 163, 0.06);
}
.directions_map_chip--primary {
    color: #fff;
    background: var(--main3-accent, #6b4ba3);
    border-color: var(--main3-accent, #6b4ba3);
}
.directions_map_chip--primary:hover {
    color: #fff;
    background: var(--main3-heading, #4a2d7a);
    border-color: var(--main3-heading, #4a2d7a);
}
@media (max-width: 639.98px) {
    .directions_map_wrap {
        aspect-ratio: 4 / 3;
        min-height: 200px;
        border-radius: 12px;
    }
    .directions_info_grid {
        grid-template-columns: 1fr;
        gap: 20px;
    }
    .directions_map_actions {
        flex-direction: column;
        align-items: stretch;
    }
    .directions_map_chip {
        width: 100%;
        box-sizing: border-box;
    }
}

/* 오시는 길 — 교통 카드 */
.directions_route_cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(14px, 2.5vw, 20px);
    margin: 0;
}
.directions_route_card {
    margin: 0;
    padding: clamp(20px, 2.8vw, 26px) clamp(16px, 2vw, 22px);
    border-radius: 14px;
    border: 1px solid rgba(107, 75, 163, 0.22);
    background: #fff;
    box-shadow: 0 4px 18px rgba(74, 45, 122, 0.06);
    box-sizing: border-box;
    min-width: 0;
}
.directions_route_icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 14px;
    font-size: 20px;
    color: var(--main3-accent, #6b4ba3);
    background: rgba(107, 75, 163, 0.1);
    border: 1px solid rgba(107, 75, 163, 0.15);
}
.directions_route_title {
    margin: 0 0 10px;
    font-size: clamp(17px, 1.9vw, 19px);
    font-weight: 800;
    letter-spacing: -0.04em;
    color: var(--main3-heading, #4a2d7a);
}
.directions_route_text {
    margin: 0;
    font-size: 15px;
    line-height: 1.62;
    letter-spacing: -0.02em;
    color: var(--default-color, #2a2633);
    word-break: keep-all;
}
.directions_metro_line3 {
    color: #ef7c1c;
    font-weight: 800;
}
.directions_route_steps {
    margin: 0;
}
/* 기본: 일반 문단(번호 span 없을 때) — 다른 카드 본문과 동일 톤 */
.directions_route_pstep {
    margin: 0 0 10px;
    font-size: 15px;
    line-height: 1.62;
    letter-spacing: -0.02em;
    color: var(--default-color, #2a2633);
    word-break: keep-all;
}
.directions_route_pstep:last-child {
    margin-bottom: 0;
}
/* 1. / 2. 열이 있을 때만 이전 그리드 정렬 */
.directions_route_pstep:has(.directions_route_pstep_n) {
    display: grid;
    grid-template-columns: 1.4em minmax(0, 1fr);
    column-gap: 0.45em;
    align-items: start;
    font-size: 14.5px;
    line-height: 1.58;
}
.directions_route_pstep_n {
    font-weight: 800;
    color: var(--main3-heading, #4a2d7a);
    text-align: right;
    line-height: inherit;
}
.directions_route_pstep_txt {
    min-width: 0;
}
.directions_route_footnote {
    margin: clamp(20px, 3vw, 28px) 0 0;
    padding: 14px 16px;
    border-radius: 10px;
    font-size: 14px;
    line-height: 1.65;
    letter-spacing: -0.02em;
    color: var(--main3-text-body, #6b5a8c);
    background: rgba(107, 75, 163, 0.06);
    border: 1px solid rgba(107, 75, 163, 0.1);
}
@media (max-width: 899.98px) {
    .directions_route_cards {
        grid-template-columns: 1fr;
    }
}

/* 담임목사 인사말 레이아웃 */
.pastor_intro_bg {
    position: relative;
    overflow: visible;
}
@media (max-width: 1199.98px) {
    .pastor_intro_bg {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        box-sizing: border-box;
    }
    .pastor_intro_bg .sub_visual,
    .pastor_intro_bg .sub_text {
        min-width: 0;
        max-width: 100%;
        box-sizing: border-box;
    }
}
@media (max-width: 767.98px) {
    .pastor_intro_bg {
        overflow-x: clip;
    }
}
.sub_page .sub_main:has(> .pastor_intro_bg) {
    position: relative;
    overflow: visible;
}
.sub_page .container.sub_with_lnb:has(.pastor_intro_bg) {
    overflow: visible;
}
.pastor_intro_bg .sub_visual,
.pastor_intro_bg .sub_text {
    position: relative;
}
/* 텍스트 열과 같은 z-index면 노란 선(왼쪽으로 삐져나감)이 사진 위에 그려짐 → 사진만 위로 */
.pastor_intro_bg .sub_visual {
    z-index: 2;
}
.pastor_intro_bg .sub_text {
    z-index: 1;
    overflow: visible;
}
.pastor_intro_bg .sub_body {
    position: relative;
}
/* 리드 강조 타이포(본문 p와 동일 규칙과 맞춤 — flex만으로 작아 보이던 것 방지) */
.pastor_intro_bg .sub_lead_text {
    font-size: 1.08em;
    line-height: 1.42;
    font-weight: 800;
    letter-spacing: -0.04em;
    flex: 0 0 auto;
    min-width: 0;
}

/* 담임목사 인사말 서명: 직함·「올림」은 회색, 이름만 기존 헤딩 컬러 */
.pastor_intro_bg .sub_sign {
    color: #737373;
}
.pastor_intro_bg .sub_sign_name {
    color: var(--main3-heading, #4a2d7a);
}

/* 처음 로딩 시 숨김 */
.pastor_intro_bg .sub_lead,
.pastor_intro_bg .sub_body_content {
    opacity: 0;
    transform: translateY(24px);
}

/* 1단계: 환영 문구 fade-in */
.pastor_intro_bg.is-show .sub_lead {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.8s ease, transform 0.8s ease;
}

/* 2단계: 본문 fade-in */
.pastor_intro_bg.is-show .sub_body_content {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 0.9s ease 0.65s, transform 0.9s ease 0.65s;
}

