.site-footer {
    border-top: 1px solid var(--townary-line);
    background:
        linear-gradient(
            180deg,
            var(--townary-white) 0%,
            #f7faff 100%
        );
}

.site-footer__inner {
    display: block;
    min-height: 0;
    padding-block:
        clamp(3rem, 5vw, 4.75rem)
        1.5rem;
    text-align: left;
}

.site-footer__main {
    display: grid;
    grid-template-columns:
        minmax(190px, 0.72fr)
        minmax(0, 2fr);
    align-items: start;
    gap: clamp(2.75rem, 6vw, 6rem);
}

.site-footer__brand {
    min-width: 0;
}

.site-footer .footer-logo {
    width: 154px;
}

.site-footer__copy {
    max-width: 17rem;
    margin-top: 1.25rem;
    color: var(--townary-navy);
    font-size: 0.88rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.8;
}

.site-footer__navigation {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(1.75rem, 3vw, 3.5rem);
}

.site-footer__group {
    min-width: 0;
}

.site-footer__group-title {
    margin: 0 0 1rem;
    color: var(--townary-red);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    line-height: 1.4;
}

.site-footer__group-title::after {
    display: block;
    width: 28px;
    height: 1px;
    margin-top: 0.7rem;
    background: var(--townary-red);
    content: "";
}

.site-footer__list {
    margin: 0;
    padding: 0;
    border-top: 1px solid rgba(8, 47, 99, 0.12);
    list-style: none;
}

.site-footer__item {
    margin: 0;
    border-bottom: 1px solid rgba(8, 47, 99, 0.1);
}

.site-footer__link {
    position: relative;
    display: flex;
    min-height: 46px;
    align-items: center;
    padding: 0.72rem 1.4rem 0.72rem 0;
    color: var(--townary-navy);
    font-size: 0.84rem;
    font-weight: 500;
    line-height: 1.55;
    text-decoration: none;
    transition:
        color 160ms ease,
        padding-left 160ms ease;
}

.site-footer__link::after {
    position: absolute;
    right: 0;
    color: var(--townary-red);
    content: "›";
    font-size: 1rem;
    line-height: 1;
    transition: transform 160ms ease;
}

.site-footer__link:hover,
.site-footer__link:focus-visible,
.site-footer__link[aria-current="page"] {
    color: var(--townary-red);
}

.site-footer__link:hover,
.site-footer__link:focus-visible {
    padding-left: 0.28rem;
}

.site-footer__link:hover::after,
.site-footer__link:focus-visible::after {
    transform: translateX(3px);
}

.site-footer__link:focus-visible {
    outline: 2px solid var(--townary-red);
    outline-offset: 3px;
}

.site-footer__link[aria-current="page"] {
    font-weight: 700;
}

.site-footer__bottom {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    margin-top: clamp(2.5rem, 5vw, 4rem);
    padding-top: 1.25rem;
    border-top: 1px solid rgba(8, 47, 99, 0.12);
}

.site-footer__copyright {
    margin: 0;
    color: var(--townary-muted);
    font-size: 0.75rem;
    letter-spacing: 0.04em;
}

@media (max-width: 980px) {
    .site-footer__main {
        grid-template-columns: 1fr;
        gap: 2.75rem;
    }

    .site-footer__brand {
        display: grid;
        justify-items: start;
    }

    .site-footer__copy {
        max-width: none;
    }
}

@media (max-width: 720px) {
    .site-footer__inner {
        width: 100%;
        max-width: none;
        margin-inline: 0;
        padding:
            2.75rem
            20px
            1.25rem;
    }

    .site-footer__main,
    .site-footer__navigation,
    .site-footer__group,
    .site-footer__list {
        width: 100%;
    }

    .site-footer__navigation {
        grid-template-columns: 1fr;
        gap: 2.25rem;
    }

    .site-footer__link {
        min-height: 44px;
        font-size: 0.82rem;
    }

    .site-footer__bottom {
        justify-content: flex-start;
        margin-top: 2.75rem;
    }
}

/* TOWNARY SHARED SUBFOOTER START */

:root {
    --townary-subfooter-space-top:
        clamp(4.5rem, 7vw, 7rem);
    --townary-subfooter-space-bottom:
        clamp(4rem, 6vw, 5.5rem);
}

/*
 * Canvas -> SubFooter -> Footer
 *
 * Footerまでの距離はページ固有ブロックではなく
 * このSubFooterが一元的に担当する。
 */
.site-subfooter {
    width: 100%;
    background: #fbfcff;
}

.site-subfooter__inner {
    display: grid;
    grid-template-columns:
        minmax(0, .55fr)
        minmax(0, .9fr)
        minmax(0, 1.4fr);
    align-items: start;
    gap: 2rem;

    padding-block:
        var(--townary-subfooter-space-top)
        var(--townary-subfooter-space-bottom);

    border-top: 1px solid var(--townary-line);
}

.site-subfooter__label {
    margin: 0;
    color: var(--townary-green);
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .2em;
    line-height: 1.5;
}

.site-subfooter__title {
    margin: 0;
    color: var(--townary-navy-deep);
    font-family: var(--townary-font-system);
    font-size: clamp(2rem, 3vw, 3.2rem);
    font-weight: 700;
    line-height: 1.45;
}

.site-subfooter__text {
    margin: 0;
    color: var(--townary-muted);
    font-size: 1rem;
    line-height: 2.1;
}

/*
 * CANVAS END CONTRACT
 *
 * ページ側がFooter位置を決めない。
 * 条件付きブロックの有無に関係なく、
 * 最終的な余白はSubFooterへ渡す。
 */
.site-main > :last-child {
    margin-bottom: 0;
}

.site-main > .municipality-search:last-child,
.municipality-page > .municipality-summary:last-child,
.municipality-page > .prefecture-map:last-child,
.municipality-page > .municipality-ward-map:last-child,
.prefecture-page > .prefecture-map:last-child,
.municipality-regional-spots:last-child,
.regional-spot-single-page > .townary-container:last-child,
.townary-castle-single-prototype > .townary-container:last-child,
.townary-information-page__body:last-child,
.site-search-page {
    padding-bottom: 0;
}

.townary-information-page,
.site-search-page {
    min-height: 0;
}

@media (max-width: 980px) {
    .site-subfooter__inner {
        grid-template-columns: 1fr;
        gap: 1.75rem;
    }
}

@media (max-width: 640px) {
    :root {
        --townary-subfooter-space-top: 3.5rem;
        --townary-subfooter-space-bottom: 3.75rem;
    }

    .site-subfooter__inner {
        gap: 1.4rem;
    }

    .site-subfooter__title {
        font-size: clamp(1.8rem, 8vw, 2.35rem);
    }

    .site-subfooter__text {
        font-size: .92rem;
        line-height: 1.95;
    }

    .site-subfooter__text br {
        display: none;
    }
}

/* TOWNARY SHARED SUBFOOTER END */

/* SUBFOOTER TITLE ACCENT START */
.site-subfooter__title {
    position: relative;
    display: block;
    width: fit-content;
    margin: 0;
    padding-bottom: 18px;
    color: var(--townary-navy) !important;
    -webkit-text-fill-color: var(--townary-navy) !important;
}

.site-subfooter__title-line,
.site-subfooter__title-line--accent,
.site-subfooter__title-line--second {
    display: block !important;
    width: auto !important;
    color: var(--townary-navy) !important;
    -webkit-text-fill-color: var(--townary-navy) !important;
}

.site-subfooter__title-mark {
    color: var(--townary-red) !important;
    -webkit-text-fill-color: var(--townary-red) !important;
}

.site-subfooter__title::after {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 46px;
    height: 2px;
    background: var(--townary-red);
    content: "";
}

.site-subfooter__title-line::after,
.site-subfooter__title-line--accent::after,
.site-subfooter__title-line--second::after {
    display: none !important;
    content: none !important;
}
/* SUBFOOTER TITLE ACCENT END */
/* SUBFOOTER GLOBAL END CONTRACT START */
:root {
    --townary-subfooter-gap: clamp(72px, 7vw, 112px);
}

/* SubFooter上端はHeroと同じ全幅ラインで区切る */
.site-subfooter {
    border-top: 1px solid var(--townary-line) !important;
}

.site-subfooter__inner {
    border-top: 0 !important;
}

/* CanvasからSubFooterまでの余白はここだけが持つ */
.site-subfooter {
    margin-top: 0 !important;
    padding-top: var(--townary-subfooter-gap) !important;
}

.site-subfooter__inner {
    padding-top: 0 !important;
}

/* 外側Canvas自身はFooter用の末尾余白を持たない */
.site-main {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
}

.site-main > :last-child {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
}

/* 各公開ページの最終ブロックもFooter用余白を持たない */
.municipality-page > :last-child,
.prefecture-page > :last-child,
.local-gourmet-page > :last-child,
.castle-page > :last-child,
.roadside-station-page > :last-child,
.regional-spot-single-page > :last-child,
.townary-castle-single-prototype > :last-child,
.site-search-page > :last-child,
.townary-information-page > :last-child {
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
    border-bottom: 0 !important;
}

@media (max-width: 640px) {
    :root {
        --townary-subfooter-gap: 56px;
    }
}
/* SUBFOOTER GLOBAL END CONTRACT END */

/* SUBFOOTER PRE-GAP TEMP START */
/*
 * 各Parts末尾の下線・下余白を整理するまでの共通緩衝帯。
 * SubFooter直前のCanvasに15pxを確保する。
 */
.site-main {
    padding-bottom: 15px !important;
}
/* SUBFOOTER PRE-GAP TEMP END */
