/**
 * TOPページ CSS — Figma準拠
 * Design spec: data/design-specs/top-page-spec.md
 * Figma: スススメTOPデザイン (node 526-812)
 *
 * Font: "Tsukushi A Round Gothic" (Figma) → "筑紫A丸ゴシック", sans-serif
 *
 * Colors:
 *   --tp-primary:    #005ea1    --tp-dark-blue:  #002c56
 *   --tp-link:       #0b63c5    --tp-accent:     #d2497e
 *   --tp-pink:       #ff66a9    --tp-hotpink:    #ff69b4
 *   --tp-yellow:     #ffe861    --tp-orange:     #ffb84d
 *   --tp-gold:       #feb100    --tp-cyan:       #81ccdc
 *   --tp-teal:       #5b9ab8    --tp-cream:      #fffef2
 *   --tp-light-blue: #f0f7fa    --tp-light-yellow: #fff9e6
 *   --tp-text:       #1d2838    --tp-text-body:  #333333
 *   --tp-text-sub:   #495565    --tp-text-muted: #697282
 *   --tp-gray:       #a9a9a9    --tp-arrow-bg:   #d9d9d9
 */

html {
    scroll-behavior: smooth !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * Elementor コンテナリセット（TOPページ専用）
 * 他ページ（検索結果等）では適用しないよう body.home にスコープ
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* e-con-boxed の max-width 制限を解除 */
body.home .elementor-element.e-con-boxed > .e-con-inner {
    max-width: 100% !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

/* 全ショートコードウィジェットの幅制限解除 */
body.home .elementor-widget-shortcode,
body.home .elementor-widget-shortcode .elementor-widget-container,
body.home .elementor-widget-shortcode .elementor-shortcode {
    width: 100% !important;
    max-width: none !important;
    overflow: visible !important;
}

/* Elementor親コンテナのoverflow解除 */
body.home .elementor-element.e-con {
    overflow: visible !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 共通 / セクションヘッダー
 * Figma: Service section, News section, Column section
 * icon 60x60 丸 #005ea1 + 黄20px + ピンク16px + drop-shadow
 * en: 14px #697282 / title: 30px #005ea1 700
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-section-header {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    text-align: center !important;
    padding-top: 48px !important;
    margin-bottom: 32px !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
    overflow: visible !important;
    height: auto !important;
}

.tp-section-header__icon {
    width: 60px !important;
    height: 60px !important;
    background: #005ea1 !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 auto 8px !important;
    position: relative !important;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1), 0 10px 15px rgba(0,0,0,0.06) !important;
}

.tp-section-header__icon > i,
.tp-section-header__icon > .iconify {
    color: #fff !important;
    font-size: 28px !important;
}

.tp-section-header__icon-img {
    display: block !important;
    margin: 0 auto 8px !important;
    height: 60px !important;
    width: auto !important;
}

/* 装飾ドット（黄+ピンク） */
.tp-section-header__dot {
    position: absolute !important;
    border-radius: 50% !important;
    display: block !important;
}

.tp-section-header__dot--yellow {
    width: 20px !important;
    height: 20px !important;
    background: #ffe861 !important;
    top: -6px !important;
    right: -8px !important;
}

.tp-section-header__dot--pink {
    width: 16px !important;
    height: 16px !important;
    background: #ff66a9 !important;
    bottom: -2px !important;
    right: -12px !important;
}

.tp-section-header__en {
    font-size: 14px !important;
    color: #697282 !important;
    margin: 0 !important;
    font-weight: 400 !important;
    letter-spacing: -0.15px !important;
    line-height: 20px !important;
}

/* もっと見るリンク */
.tp-section-more {
    text-align: center !important;
    margin-top: 32px !important;
}

.tp-section-more__link {
    display: inline-block !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #005ea1 !important;
    text-decoration: none !important;
    border: 2px solid #005ea1 !important;
    border-radius: 50px !important;
    padding: 12px 48px !important;
    transition: background 0.2s, color 0.2s !important;
}

.tp-section-more__link:hover {
    background: #005ea1 !important;
    color: #fff !important;
    text-decoration: none !important;
}

.tp-section-header__title {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    font-size: 30px !important;
    color: #005ea1 !important;
    margin: 4px 0 0 !important;
    padding: 0 !important;
    font-weight: 700 !important;
    line-height: 36px !important;
    letter-spacing: 0.4px !important;
    height: auto !important;
    overflow: visible !important;
}

/* 自治体ニュース: 装飾パターン（星型3つ） */
.tp-section-header--municipality .tp-section-header__decorations {
    position: relative !important;
    display: inline-block !important;
    width: 60px !important;
    height: 60px !important;
    margin: 0 auto 8px !important;
}

.tp-section-header__deco {
    position: absolute !important;
    border-radius: 50% !important;
}

.tp-section-header__deco--yellow {
    width: 32px !important;
    height: 32px !important;
    background: #ffe861 !important;
    top: 0 !important;
    left: 0 !important;
}

.tp-section-header__deco--pink {
    width: 40px !important;
    height: 40px !important;
    background: #ff66a9 !important;
    top: 10px !important;
    right: -10px !important;
}

.tp-section-header__deco--cyan {
    width: 24px !important;
    height: 24px !important;
    background: #81ccdc !important;
    bottom: 0 !important;
    left: 10px !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * バナーセクション
 * Figma: 1229x552 bg image + loop 171px + content centered
 * buttons: pill (radius 50), border 2px #000, padding 16px 40px
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
/* Figma: Banner section 1229x552
 * Background image fills the area
 * Loop image at bottom (171px)
 * Content (840x266) centered: top-row (text 439x184 + character 85x155), buttons below (840x62)
 */
.tp-banner {
    position: relative !important;
    overflow: hidden !important;
    min-height: 552px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-banner__bg-wrap {
    position: absolute !important;
    inset: 0 !important;
    z-index: 0 !important;
}

.tp-banner__bg {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

/* ループ画像: バナー背景に40px被せて配置 */
.tp-loop {
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    overflow: hidden !important;
    margin-top: -110px !important;
}

.tp-loop__track {
    display: flex !important;
    width: 200% !important;
    height: 100% !important;
    animation: tp-loop-slide 40s linear infinite !important;
}

.tp-loop__track img {
    width: 50% !important;
    height: auto !important;
    flex-shrink: 0 !important;
}

@keyframes tp-loop-slide {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

.tp-banner__content {
    position: relative !important;
    z-index: 2 !important;
    width: 840px !important;
    max-width: 100% !important;
    padding: 40px 24px !important;
}

/* 上段: テキスト(439px) + キャラクター(85px) 横並び中央寄せ */
.tp-banner__top-row {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 24px !important;
    margin-bottom: 20px !important;
}

.tp-banner__text {
    text-align: center !important;
    max-width: 439px !important;
}

.tp-banner__title {
    font-size: 40px !important;
    color: #005ea1 !important;
    font-weight: 700 !important;
    margin: 0 0 28px !important;
    line-height: 60px !important;
    letter-spacing: 0 !important;
    text-align: center !important;
    white-space: pre-line !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
}

.tp-banner__subtitle {
    font-size: 16px !important;
    color: #000 !important;
    line-height: 32px !important;
    margin: 0 !important;
    font-weight: 700 !important;
    text-align: center !important;
    letter-spacing: 0 !important;
    white-space: pre-line !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
}

.tp-banner__character {
    width: 85px !important;
    height: 155px !important;
    object-fit: contain !important;
    flex-shrink: 0 !important;
}

/* 下段: ボタン3つ横並び (840x62)
 * Elementor e-flex/e-con の flex-wrap: wrap 競合対策 */
.tp-banner__buttons {
    display: flex !important;
    justify-content: center !important;
    gap: 16px !important;
    flex-wrap: nowrap !important;
    flex-direction: row !important;
    align-items: center !important;
    width: 100% !important;
}

/* Figma: pill型 radius 50, border 2px #000, padding 16px 40px */
.tp-banner__btn {
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
    background: #fff !important;
    border: 2px solid #000 !important;
    border-radius: 50px !important;
    padding: 16px 40px !important;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s !important;
    flex-shrink: 0 !important;
    flex-grow: 0 !important;
}

.tp-banner__btn:hover {
    background: #f8f8f8 !important;
    transform: translateY(-2px) !important;
}

.tp-banner__btn-label {
    font-size: 16px !important;
    color: #333 !important;
    font-weight: 700 !important;
    line-height: 24px !important;
    white-space: nowrap !important;
}

/* Figma: 30x30 丸 #d9d9d9, 内側16x16 白 */
.tp-banner__btn-arrow {
    width: 30px !important;
    height: 30px !important;
    background: #d9d9d9 !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-banner__btn-arrow i,
.tp-banner__btn-arrow .iconify {
    color: #fff !important;
    font-size: 16px !important;
}

/* 検索ボタン（中央配置） */
.tp-banner__search-wrap {
    display: flex !important;
    justify-content: center !important;
    margin-top: 16px !important;
    width: 100% !important;
}

.tp-banner__search-btn {
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
    background: #d2497e !important;
    border: 2px solid #000 !important;
    border-radius: 50px !important;
    padding: 16px 48px !important;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s !important;
}

.tp-banner__search-btn:hover {
    background: #b83a6a !important;
    transform: translateY(-2px) !important;
    text-decoration: none !important;
}

.tp-banner__search-btn-text {
    font-size: 18px !important;
    color: #fff !important;
    font-weight: 700 !important;
    line-height: 24px !important;
    white-space: nowrap !important;
}

.tp-banner__search-btn-arrow {
    width: 30px !important;
    height: 30px !important;
    background: rgba(255,255,255,0.3) !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-banner__search-btn-arrow i,
.tp-banner__search-btn-arrow .iconify {
    color: #fff !important;
    font-size: 16px !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 検索セクション
 * Figma: Container 1100x1311, bg #f0f7fa, padding 32px 16px, gap 24px
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-search {
    background: #f0f7fa !important;
    padding: 32px 16px !important;
    max-width: none !important;
    margin: 0 !important;
    border-radius: 0 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-search__inner {
    max-width: 1068px !important;
    margin: 0 auto !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 24px !important;
}

/* キーワード検索 */
.tp-search__keyword-title,
.tp-search__service-title,
.tp-search__map-title {
    font-size: 24px !important;
    color: #005ea1 !important;
    font-weight: 700 !important;
    margin: 0 0 12px !important;
    line-height: 36px !important;
}

.tp-search__keyword-row {
    display: flex !important;
    align-items: center !important;
    gap: 40px !important;
}

.tp-search__keyword-bar {
    flex: 1 !important;
    display: flex !important;
    align-items: center !important;
}

.tp-search__form {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
}

.tp-search__input {
    flex: 1 1 0% !important;
    height: auto !important;
    min-height: 50px !important;
    border: 1px solid #ddd !important;
    border-right: none !important;
    border-radius: 6px 0 0 6px !important;
    padding: 0 16px !important;
    font-size: 16px !important;
    color: #333 !important;
    background: #fff !important;
    outline: none !important;
    line-height: 24px !important;
    box-sizing: border-box !important;
    margin: 0 !important;
}

.tp-search__input::placeholder {
    color: #a9a9a9 !important;
}

.tp-search__submit {
    flex-shrink: 0 !important;
    width: 170px !important;
    height: auto !important;
    min-height: 50px !important;
    background: #d2497e !important;
    color: #fff !important;
    border: none !important;
    border-radius: 0 6px 6px 0 !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    transition: background 0.2s !important;
    padding: 12px 42px !important;
    line-height: 24px !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    align-self: stretch !important;
}

.tp-search__submit:hover {
    background: #b83a6a !important;
}

.tp-search__submit--loading {
    pointer-events: none !important;
    opacity: 0.7 !important;
}

.tp-search__submit-spinner {
    display: none !important;
    width: 20px !important;
    height: 20px !important;
    border: 3px solid rgba(255,255,255,0.3) !important;
    border-top-color: #ffffff !important;
    border-radius: 50% !important;
    animation: tp-spin 0.6s linear infinite !important;
    vertical-align: middle !important;
}
.tp-search__submit--loading .tp-search__submit-spinner {
    display: inline-block !important;
}
.tp-search__submit--loading .tp-search__submit-text {
    display: none !important;
}

@keyframes tp-spin {
    to { transform: rotate(360deg); }
}

/* キーワード検索件数 */
.tp-search__keyword-count {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    margin-left: 16px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #005ea1 !important;
    white-space: nowrap !important;
    min-width: 60px !important;
}

/* 共通spinner */
.tp-search__keyword-count-spinner,
.tp-modal__count-spinner {
    display: none;
    width: 18px !important;
    height: 18px !important;
    border: 3px solid #ddd !important;
    border-top-color: #005ea1 !important;
    border-radius: 50% !important;
    animation: tp-spin 0.6s linear infinite !important;
}

.tp-modal__count-spinner {
    width: 24px !important;
    height: 24px !important;
}

@keyframes tp-spin {
    to { transform: rotate(360deg); }
}


/* サービスカード — 背景画像+下部ブラー+色別ボーダー */
.tp-search__cards {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 24px !important;
}

.tp-search__card {
    position: relative !important;
    border-radius: 16px !important;
    min-height: 184px !important;
    cursor: pointer !important;
    transition: transform 0.2s, box-shadow 0.2s !important;
    background-size: cover !important;
    background-position: center !important;
    background-repeat: no-repeat !important;
    overflow: hidden !important;
    display: flex !important;
    align-items: flex-end !important;
    border: 2px solid transparent !important;
}

.tp-search__card:hover {
    transform: translateY(-4px) !important;
    box-shadow: 0 8px 24px rgba(0,0,0,0.15) !important;
}

/* 色別ボーダー */
.tp-search__card--blue  { border-color: #005EA1 !important; }
.tp-search__card--yellow { border-color: #FFB84D !important; }
.tp-search__card--pink  { border-color: #FF69B4 !important; }

.tp-search__card::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0) 50%,
        #ffffff 72.65%,
        #ffffff 100%
    ) !important;
    pointer-events: none !important;
    z-index: 1 !important;
}

.tp-search__card-body {
    position: relative !important;
    z-index: 2 !important;
    width: 100% !important;
    padding: 16px 20px !important;
    background: transparent !important;
    display: flex !important;
    align-items: flex-end !important;
    justify-content: space-between !important;
    gap: 8px !important;
}

.tp-search__card-text {
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 26px !important;
    margin: 0 !important;
    letter-spacing: -0.45px !important;
}

/* 色別テキスト */
.tp-search__card--blue .tp-search__card-text,
.tp-search__card--blue .tp-search__card-link  { color: #005EA1 !important; }
.tp-search__card--yellow .tp-search__card-text,
.tp-search__card--yellow .tp-search__card-link { color: #FFB84D !important; }
.tp-search__card--pink .tp-search__card-text,
.tp-search__card--pink .tp-search__card-link   { color: #FF69B4 !important; }

.tp-search__card-link {
    font-size: 13px !important;
    font-weight: 700 !important;
    line-height: 19.5px !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
}

/* 地図検索 */

.tp-search__map-image {
    position: relative !important;
    border-radius: 8px !important;
    overflow: hidden !important;
    max-height: 700px !important;
}

.tp-search__map-image > img {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
    display: block !important;
    max-height: 700px !important;
}

/* エリアカード（地図上オーバーレイ） */
.tp-search__map-areas {
    position: absolute !important;
    inset: 0 !important;
    pointer-events: none !important;
}

.tp-search__map-area {
    position: absolute !important;
    background: #fff !important;
    border-radius: 3px !important;
    padding: 8px 16px !important;
    pointer-events: auto !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important;
    text-decoration: none !important;
    display: block !important;
    transition: box-shadow 0.2s, transform 0.2s !important;
}

.tp-search__map-area:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,0.2) !important;
    transform: translateY(-2px) !important;
    cursor: pointer !important;
}

.tp-search__map-area-title {
    font-size: 18px !important;
    color: #005ea1 !important;
    font-weight: 700 !important;
    margin: 0 0 4px !important;
    line-height: 27px !important;
}

.tp-search__map-area-list {
    font-size: 14px !important;
    color: #a9a9a9 !important;
    line-height: 24px !important;
    margin: 0 !important;
}

.tp-search__map-ward-link {
    color: #a9a9a9 !important;
    text-decoration: none !important;
    transition: color 0.2s !important;
}

.tp-search__map-ward-link:hover {
    color: #005ea1 !important;
    text-decoration: underline !important;
}

.tp-search__map-area-sep {
    color: #d0d0d0 !important;
    margin: 0 2px !important;
}

.tp-search__map-subarea-link {
    color: #a9a9a9 !important;
    text-decoration: none !important;
    transition: color 0.2s !important;
}

.tp-search__map-subarea-link:hover {
    color: #005ea1 !important;
    text-decoration: underline !important;
}

/* 北部・東部は縦並び（北部がやや左、東部はやや右・下） */
.tp-search__map-area-column {
    position: absolute !important;
    top: calc(2% + 80px) !important;
    right: 2% !important;
    left: auto !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 0 !important;
    pointer-events: none !important;
}

.tp-search__map-area-column .tp-search__map-area {
    position: relative !important;
    top: auto !important;
    right: auto !important;
    left: auto !important;
    bottom: auto !important;
}

.tp-search__map-area-column .tp-search__map-area--east {
    margin-left: 14px !important;
    margin-top: 60px !important;
}

/* エリアカード配置 */
.tp-search__map-area--center  { bottom: 20% !important; right: 2% !important; }
.tp-search__map-area--south   { bottom: 5% !important; left: 38% !important; }
.tp-search__map-area--west    { top: 45% !important; left: 35% !important; }
.tp-search__map-area--outside { top: 38% !important; left: 8% !important; }


/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * ニュースセクション
 * Figma: Featured 2-col (534+534), Cards 3-col (345 each)
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-news {
    padding: 0 !important;
    background: #fff !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-news__inner {
    max-width: 1400px !important;
    margin: 0 auto !important;
    padding: 0 40px !important;
}

/* 大きい記事: 2カラム */
.tp-news__featured {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 32px !important;
    margin-bottom: 24px !important;
}

.tp-news__featured-image {
    border-radius: 8px !important;
    overflow: hidden !important;
    height: 365px !important;
}

.tp-news__featured-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

.tp-news__featured-content {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
}

.tp-news__badge {
    display: inline-block !important;
    background: #ff66a9 !important;
    color: #fff !important;
    font-size: 12px !important;
    padding: 4px 12px !important;
    border-radius: 4px !important;
    font-weight: 500 !important;
    align-self: flex-start !important;
    line-height: 16px !important;
}

.tp-news__featured-title {
    font-size: 22px !important;
    color: #005ea1 !important;
    font-weight: 700 !important;
    line-height: 1.5 !important;
    margin: 0 !important;
}

.tp-news__featured-title a {
    color: inherit !important;
    text-decoration: none !important;
}

.tp-news__featured-title a:hover {
    text-decoration: underline !important;
}

.tp-news__featured-excerpt {
    font-size: 14px !important;
    color: #495565 !important;
    line-height: 26px !important;
    margin: 0 !important;
}

.tp-news__featured-meta {
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
    flex-wrap: wrap !important;
}

.tp-news__featured-meta time {
    font-size: 14px !important;
    color: #697282 !important;
    line-height: 20px !important;
}

.tp-news__tag {
    display: inline-block !important;
    font-size: 12px !important;
    color: #0a0a0a !important;
    border: 1px solid #e0e0e0 !important;
    border-radius: 4px !important;
    padding: 2px 8px !important;
    line-height: 16px !important;
}

/* 小さい記事カード 3列 */
.tp-news__cards {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 24px !important;
}

.tp-news__card {
    background: #fff !important;
    border-radius: 8px !important;
    overflow: hidden !important;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06) !important;
    transition: box-shadow 0.2s, transform 0.2s !important;
}

.tp-news__card:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important;
    transform: translateY(-2px) !important;
}

.tp-news__card-link {
    text-decoration: none !important;
    display: block !important;
}

.tp-news__card-image {
    height: 216px !important;
    overflow: hidden !important;
}

.tp-news__card-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

.tp-news__card-title {
    font-size: 16px !important;
    color: #005ea1 !important;
    font-weight: 600 !important;
    line-height: 26px !important;
    margin: 12px 16px 8px !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

.tp-news__card-date {
    display: block !important;
    font-size: 13px !important;
    color: #697282 !important;
    padding: 0 16px 16px !important;
    line-height: 20px !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 自治体ニュース
 * Figma: bg #fff4d7, cards 350x323
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-municipality {
    padding: 48px 0 !important;
    background: #fff4d7 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-municipality__inner {
    max-width: 1400px !important;
    margin: 0 auto !important;
    padding: 0 40px !important;
}

.tp-municipality__grid {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 24px !important;
}

.tp-municipality__card {
    border-radius: 8px !important;
    overflow: hidden !important;
    transition: transform 0.2s !important;
}

.tp-municipality__card:hover {
    transform: translateY(-2px) !important;
}

.tp-municipality__card-link {
    text-decoration: none !important;
    display: block !important;
}

.tp-municipality__card-image {
    height: 190px !important;
    overflow: hidden !important;
}

.tp-municipality__card-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

.tp-municipality__card-title {
    font-size: 16px !important;
    color: #002c56 !important;
    font-weight: 600 !important;
    line-height: 26px !important;
    height: 52px !important;
    margin: 12px 0 8px !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

.tp-municipality__card-meta {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 4px !important;
}

.tp-municipality__card-meta time {
    font-size: 14px !important;
    color: #002c56 !important;
    line-height: 21px !important;
}

.tp-municipality__badge {
    display: inline-block !important;
    background: #81ccdc !important;
    color: #005ea1 !important;
    font-size: 14px !important;
    padding: 4px 12px !important;
    border-radius: 16px !important;
    font-weight: 500 !important;
    text-decoration: none !important;
    transition: opacity 0.2s !important;
}

.tp-municipality__badge:hover {
    opacity: 0.8 !important;
    color: #005ea1 !important;
    line-height: 21px !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 介護のコラム
 * Figma: cards 346x412, image 346x256
 * tags: ピンク#d2497e, シアン#5b9ab8, オレンジ#ffb84d
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-columns {
    padding: 0 0 48px !important;
    background: #fff !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-columns__inner {
    max-width: 1400px !important;
    margin: 0 auto !important;
    padding: 0 40px !important;
}

.tp-columns__grid {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 24px !important;
}

.tp-columns__card {
    background: #fff !important;
    border-radius: 8px !important;
    overflow: hidden !important;
    box-shadow: 0 1px 4px rgba(0,0,0,0.06) !important;
    transition: box-shadow 0.2s, transform 0.2s !important;
}

.tp-columns__card:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.1) !important;
    transform: translateY(-2px) !important;
}

.tp-columns__card-link {
    text-decoration: none !important;
    display: block !important;
}

.tp-columns__card-image {
    height: 256px !important;
    overflow: hidden !important;
}

.tp-columns__card-image img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    display: block !important;
}

.tp-columns__card-body {
    padding: 12px 16px 16px !important;
}

.tp-columns__card-title {
    font-size: 16px !important;
    color: #002c56 !important;
    font-weight: 600 !important;
    line-height: 26px !important;
    margin: 0 0 8px !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

.tp-columns__card-meta {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}

.tp-columns__card-meta time {
    font-size: 14px !important;
    color: #002c56 !important;
    line-height: 21px !important;
}

.tp-columns__card-tags {
    display: flex !important;
    gap: 6px !important;
    flex-wrap: wrap !important;
}

.tp-columns__tag {
    display: inline-block !important;
    font-size: 12px !important;
    color: #fff !important;
    padding: 4px 10px !important;
    border-radius: 4px !important;
    font-weight: 500 !important;
    background: #5b9ab8 !important;
    line-height: 21px !important;
}

/* タグ色バリエーション（nth-child で自動割当） */
.tp-columns__tag:nth-child(3n+1) { background: #d2497e !important; }
.tp-columns__tag:nth-child(3n+2) { background: #5b9ab8 !important; }
.tp-columns__tag:nth-child(3n+3) { background: #ffb84d !important; }

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * プロモーションバナー
 * Figma: bg #fff9e6, 2カラム layout
 * title: 28px #d2497e 700, button: #d2497e
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-promo {
    position: relative !important;
    background: linear-gradient(180deg, #FFE8A3 0%, #FFF4D6 100%) !important;
    padding: 60px 0 !important;
    overflow: hidden !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

/* 足跡パターンオーバーレイ */
.tp-promo::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: url('../images/top/promo-bg-pattern.png') repeat center !important;
    background-size: auto !important;
    pointer-events: none !important;
    z-index: 0 !important;
}

.tp-promo__inner {
    position: relative !important;
    z-index: 1 !important;
    max-width: 1400px !important;
    margin: 0 auto !important;
    padding: 0 40px !important;
    display: flex !important;
    align-items: center !important;
    gap: 40px !important;
}

.tp-promo__content {
    flex: 1 !important;
}

.tp-promo__logo {
    width: 200px !important;
    height: auto !important;
    margin-bottom: 16px !important;
}

.tp-promo__title {
    font-size: 28px !important;
    color: #d2497e !important;
    font-weight: 700 !important;
    line-height: 48px !important;
    margin: 0 0 24px !important;
}

.tp-promo__btn {
    display: inline-flex !important;
    align-items: center !important;
    background: #d2497e !important;
    color: #fff !important;
    border-radius: 40px !important;
    text-decoration: none !important;
    transition: background 0.2s, transform 0.2s !important;
    overflow: hidden !important;
}

.tp-promo__btn:hover {
    background: #b83a6a !important;
    transform: translateY(-2px) !important;
    color: #fff !important;
}

.tp-promo__btn-text {
    font-size: 20px !important;
    font-weight: 700 !important;
    padding: 20px 40px !important;
    line-height: 30px !important;
}

/* 右側: 2枚のスクショを重ねて表示 */
.tp-promo__images {
    position: relative !important;
    flex-shrink: 0 !important;
    width: 520px !important;
    height: 340px !important;
}

.tp-promo__img {
    position: absolute !important;
    border-radius: 8px !important;
    box-shadow: 0 8px 30px rgba(0,0,0,0.12) !important;
    width: auto !important;
    height: auto !important;
}

.tp-promo__img--overview {
    max-width: 420px !important;
    top: 0 !important;
    right: 0 !important;
    z-index: 1 !important;
}

.tp-promo__img--detail {
    max-width: 420px !important;
    bottom: 0 !important;
    left: 0 !important;
    z-index: 2 !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 都道府県から探す
 * Figma: title 24px #000, links #0b63c5
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-prefectures {
    padding: 48px 0 !important;
    background: #fff !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-prefectures__inner {
    max-width: 1100px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
}

.tp-prefectures__title {
    font-size: 24px !important;
    color: #000 !important;
    font-weight: 700 !important;
    margin: 0 0 24px !important;
    line-height: 36px !important;
}

.tp-prefectures__region {
    margin-bottom: 8px !important;
    line-height: 2 !important;
}

.tp-prefectures__region-name {
    font-size: 14px !important;
    color: #333 !important;
    font-weight: 700 !important;
    margin-right: 8px !important;
}

.tp-prefectures__link {
    color: #0b63c5 !important;
    text-decoration: none !important;
    font-size: 14px !important;
    margin-right: 6px !important;
}

.tp-prefectures__link:hover {
    text-decoration: underline !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * ケアマネバナー
 * Figma: title 32px #005ea1, subtitle 18px #000
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-caremanager {
    padding: 32px 0 !important;
    background: #fff !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-caremanager__inner {
    max-width: 800px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
    text-align: center !important;
}

.tp-caremanager__title {
    font-size: 32px !important;
    color: #005ea1 !important;
    font-weight: 700 !important;
    margin: 0 0 16px !important;
    line-height: 48px !important;
}

.tp-caremanager__subtitle {
    font-size: 18px !important;
    color: #000 !important;
    line-height: 32px !important;
    margin: 0 0 24px !important;
}

.tp-caremanager__btn {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
    background: #005ea1 !important;
    color: #fff !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    padding: 14px 32px !important;
    border-radius: 8px !important;
    text-decoration: none !important;
    transition: background 0.2s !important;
}

.tp-caremanager__btn:hover {
    background: #004a80 !important;
    color: #fff !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * ニュースレター
 * Figma: bg #5b9ab8, title 24px white, input 540x50, button 120x36 #d2497e
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-newsletter {
    padding: 48px 0 !important;
    background: #5b9ab8 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-newsletter__inner {
    max-width: 800px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
    text-align: center !important;
}

.tp-newsletter__title {
    font-size: 24px !important;
    color: #fff !important;
    font-weight: 700 !important;
    margin: 0 0 8px !important;
    line-height: 32px !important;
}

.tp-newsletter__desc {
    font-size: 14px !important;
    color: #fff !important;
    margin: 0 0 24px !important;
    line-height: 20px !important;
}

.tp-newsletter__form {
    display: flex !important;
    max-width: 672px !important;
    margin: 0 auto !important;
    align-items: center !important;
    gap: 12px !important;
}

.tp-newsletter__input {
    flex: 1 !important;
    max-width: 540px !important;
    height: 50px !important;
    border: none !important;
    border-radius: 8px !important;
    padding: 0 16px !important;
    font-size: 16px !important;
    color: #005ea1 !important;
    background: #fff !important;
    outline: none !important;
    line-height: 24px !important;
}

.tp-newsletter__input::placeholder {
    color: #005ea1 !important;
    opacity: 0.6 !important;
}

.tp-newsletter__submit {
    width: 120px !important;
    height: 36px !important;
    background: #d2497e !important;
    color: #fff !important;
    border: none !important;
    border-radius: 6px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    line-height: 20px !important;
    white-space: nowrap !important;
}

.tp-newsletter__submit:hover {
    background: #b83a6a !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * 検索モーダル
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-modal {
    border: none !important;
    padding: 0 !important;
    background: transparent !important;
    max-width: none !important;
    max-height: none !important;
    width: 100% !important;
    height: 100% !important;
    overflow: hidden !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-modal[open] {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-modal::backdrop {
    background: rgba(0,0,0,0.5) !important;
}

.tp-modal__container {
    position: relative !important;
    background: #fff !important;
    width: 900px !important;
    max-width: 95vw !important;
    max-height: 90vh !important;
    border-radius: 8px !important;
    padding: 0 !important;
    box-shadow: 0 8px 40px rgba(0,0,0,0.2) !important;
    margin: auto !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
}

.tp-modal__header {
    flex-shrink: 0 !important;
    padding: 32px 40px 0 !important;
}

.tp-modal__body {
    flex: 1 1 auto !important;
    overflow-y: auto !important;
    padding: 0 40px !important;
    min-height: 0 !important;
}

.tp-modal__close {
    position: absolute !important;
    top: 12px !important;
    right: 16px !important;
    background: none !important;
    border: none !important;
    font-size: 28px !important;
    color: #697282 !important;
    cursor: pointer !important;
    line-height: 1 !important;
}

.tp-modal__title {
    font-size: 24px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
    text-align: center !important;
    margin: 0 0 16px !important;
}

.tp-modal__hr {
    border: none !important;
    border-top: 1px solid #e0e0e0 !important;
    margin: 0 0 24px !important;
}

.tp-modal__hr--blue {
    border-top: 3px solid #005ea1 !important;
    margin: 24px 0 16px !important;
}

/* ステップタブ */
.tp-modal__steps {
    display: flex !important;
    gap: 16px !important;
    margin-bottom: 32px !important;
}

.tp-modal__step {
    flex: 1 !important;
    background: #e0e0e0 !important;
    border: 2px solid transparent !important;
    border-radius: 8px !important;
    padding: 16px !important;
    text-align: center !important;
    cursor: pointer !important;
    transition: background 0.2s, border-color 0.2s !important;
}

.tp-modal__step--active {
    background: #dbeaf5 !important;
    border-color: #005ea1 !important;
}

.tp-modal__step-label {
    display: block !important;
    font-size: 13px !important;
    color: #005ea1 !important;
    margin-bottom: 4px !important;
}

.tp-modal__step-name {
    display: block !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
}

.tp-modal__step-arrow {
    flex-shrink: 0 !important;
    font-size: 16px !important;
    color: #aab4bf !important;
    align-self: center !important;
}

/* パネル */
.tp-modal__panel {
    display: none !important;
}

.tp-modal__panel--active {
    display: block !important;
}

/* エリア行 */
.tp-modal__area-row {
    display: flex !important;
    align-items: flex-start !important;
    padding: 16px 0 !important;
    border-bottom: 1px solid #e0e0e0 !important;
    gap: 24px !important;
}

/* 各 care_type グループの最終行の線は、
   他グループが続いている場合はグループ間の区切り線として残したい。
   → 「全グループ中の最終行」のみ線を消す（care_type 切替で単一表示でも自然に）。 */
.tp-modal__service-group:last-child .tp-modal__area-row:last-child,
.tp-modal__panel[data-panel="3"] .tp-modal__area-row:last-child {
    border-bottom: none !important;
}

.tp-modal__area-label {
    flex-shrink: 0 !important;
    width: 140px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
    padding-top: 2px !important;
}

.tp-modal__area-checks {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 8px 20px !important;
}

/* カスタムチェックボックス */
.tp-modal__check {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    font-size: 15px !important;
    color: #333 !important;
    cursor: pointer !important;
    white-space: nowrap !important;
}

.tp-modal__check input[type="checkbox"] {
    display: none !important;
}

.tp-modal__check-box {
    width: 20px !important;
    height: 20px !important;
    border: 2px solid #ccc !important;
    border-radius: 4px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
    transition: background 0.15s, border-color 0.15s !important;
}

.tp-modal__check input:checked + .tp-modal__check-box {
    background: #d2497e !important;
    border-color: #d2497e !important;
}

.tp-modal__check input:checked + .tp-modal__check-box::after {
    content: "" !important;
    display: block !important;
    width: 6px !important;
    height: 10px !important;
    border: solid #fff !important;
    border-width: 0 2px 2px 0 !important;
    transform: rotate(45deg) !important;
    margin-top: -2px !important;
}

.tp-modal__check--disabled {
    opacity: 0.35 !important;
}

/* サマリー */
.tp-modal__summary {
    display: flex !important;
    gap: 24px !important;
    font-size: 14px !important;
    color: #333 !important;
    margin-bottom: 16px !important;
    flex-wrap: wrap !important;
}

.tp-modal__summary strong {
    color: #1d2838 !important;
    font-weight: 700 !important;
}

/* フッター（常時表示） */
.tp-modal__footer-wrap {
    flex-shrink: 0 !important;
    padding: 16px 40px 24px !important;
    background: #fff !important;
    border-top: 1px solid #e0e0e0 !important;
}

.tp-modal__footer {
    display: flex !important;
    align-items: center !important;
    gap: 20px !important;
    justify-content: center !important;
}

.tp-modal__count {
    font-size: 40px !important;
    font-weight: 700 !important;
    color: #005ea1 !important;
    line-height: 1 !important;
}

.tp-modal__count span {
    font-size: 40px !important;
    color: #005ea1 !important;
}

.tp-modal__btn-next {
    background: #d2497e !important;
    color: #fff !important;
    border: none !important;
    border-radius: 8px !important;
    padding: 14px 40px !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    cursor: pointer !important;
    transition: background 0.2s !important;
}

.tp-modal__btn-next:hover {
    background: #b83a6a !important;
}

.tp-modal__btn-reset {
    background: none !important;
    border: none !important;
    color: #697282 !important;
    font-size: 14px !important;
    text-decoration: underline !important;
    cursor: pointer !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * レスポンシブ
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* ── 地図検索: タブレット幅（~1024px）では地図が縮んでボックスが
   重なる問題が発生するため、絶対配置をやめてグリッド表示に切り替える。
   768px 以下はより下の @media ブロックで 1 カラムに上書きされる。 ── */
@media (max-width: 1024px) {
    .tp-search__map-image {
        max-height: none !important;
        overflow: visible !important;
    }
    .tp-search__map-area {
        position: static !important;
        overflow: visible !important;
        max-height: none !important;
        padding: 12px 16px 16px !important;
    }
    /* 北部・東部カラムをフラット化し、個別のグリッドアイテムに */
    .tp-search__map-area-column {
        position: static !important;
        display: contents !important;
    }
    .tp-search__map-area-column .tp-search__map-area--east {
        margin-left: 0 !important;
        margin-top: 0 !important;
    }
    .tp-search__map-areas {
        position: static !important;
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 12px !important;
        margin-top: 16px !important;
        pointer-events: auto !important;
    }
    .tp-search__map-area-list {
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
        line-height: 24px !important;
        margin-top: 4px !important;
    }
}

@media (max-width: 768px) {
    /* ── 全体: はみ出し防止 + 日本語禁則 ── */
    .tp-banner,
    .tp-search,
    .tp-municipality,
    .tp-columns,
    .tp-cm-feat,
    .tp-user-feat,
    .tp-prov-feat,
    .tp-promo,
    .tp-intro,
    .tp-why {
        overflow-x: hidden !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
        line-break: strict !important;
    }

    /* ── バナー ── */
    .tp-banner { min-height: 400px !important; }
    .tp-banner__title {
        font-size: 24px !important;
        line-height: 38px !important;
        white-space: normal !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }
    .tp-banner__subtitle {
        white-space: normal !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }
    .tp-banner__top-row { flex-direction: column !important; }
    .tp-banner__buttons { flex-direction: column !important; align-items: center !important; flex-wrap: wrap !important; }
    .tp-banner__character { display: none !important; }
    .tp-banner__search-btn { padding: 14px 32px !important; }
    .tp-banner__search-btn-text { font-size: 16px !important; }

    /* ── 検索フォーム ── */
    .tp-search__cards { grid-template-columns: 1fr !important; }
    .tp-search__keyword-row { flex-direction: column !important; align-items: stretch !important; gap: 12px !important; }
    .tp-search__keyword-bar { width: 100% !important; flex-direction: column !important; align-items: stretch !important; }
    .tp-search__form { flex-direction: column !important; gap: 10px !important; }
    .tp-search__input {
        box-sizing: border-box !important;
        height: 50px !important;
        min-height: 50px !important;
        line-height: 50px !important;
        padding: 0 16px !important;
        border-right: 1px solid #ddd !important;
        border-radius: 6px !important;
        -webkit-appearance: none !important;
        appearance: none !important;
    }
    .tp-search__submit {
        box-sizing: border-box !important;
        width: 100% !important;
        height: 50px !important;
        min-height: 50px !important;
        line-height: 50px !important;
        border-radius: 6px !important;
        padding: 0 16px !important;
    }
    .tp-search__keyword-count { margin-left: 0 !important; margin-top: 8px !important; justify-content: flex-start !important; }

    /* ── 地図エリア: 全体表示 ── */
    .tp-search__map-image {
        max-height: none !important;
        overflow: visible !important;
    }
    .tp-search__map-area { position: static !important; }
    .tp-search__map-area-column {
        position: static !important;
        display: contents !important;
    }
    .tp-search__map-area-column .tp-search__map-area--east {
        margin-left: 0 !important;
        margin-top: 0 !important;
    }
    .tp-search__map-areas {
        position: static !important;
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 12px !important;
        margin-top: 16px !important;
    }
    .tp-search__map-area {
        overflow: visible !important;
        max-height: none !important;
        padding: 12px 16px 16px !important;
    }
    .tp-search__map-area-list {
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
        line-height: 24px !important;
        margin-top: 4px !important;
    }

    /* ── ニュース・コラム: 画像全体表示 ── */
    .tp-news__featured { grid-template-columns: 1fr !important; }
    .tp-news__featured-image { height: auto !important; }
    .tp-news__featured-image img { width: 100% !important; height: auto !important; object-fit: cover !important; }
    .tp-news__cards { grid-template-columns: 1fr !important; }

    .tp-municipality__grid { grid-template-columns: 1fr !important; }
    .tp-municipality__card-image { overflow: visible !important; }
    .tp-municipality__card-image img { width: 100% !important; height: auto !important; object-fit: cover !important; }

    .tp-columns__grid { grid-template-columns: 1fr !important; }
    .tp-columns__card-image { overflow: hidden !important; height: auto !important; aspect-ratio: 16 / 10 !important; }
    .tp-columns__card-image img { width: 100% !important; height: 100% !important; object-fit: cover !important; }

    /* ── プロモ ── */
    .tp-promo__inner { flex-direction: column !important; }
    .tp-promo__images {
        width: 100% !important;
        height: 260px !important;
    }
    .tp-promo__img--overview,
    .tp-promo__img--detail {
        max-width: 80% !important;
    }

    .tp-newsletter__form { flex-direction: column !important; }
    .tp-newsletter__input { max-width: 100% !important; }

    .tp-section-header__title { font-size: 22px !important; }

    /* ── モーダル レスポンシブ ── */
    .tp-modal__container { max-height: 95vh !important; }
    .tp-modal__header { padding: 20px 16px 0 !important; }
    .tp-modal__body { padding: 0 16px !important; }
    .tp-modal__footer-wrap { padding: 12px 16px 16px !important; }
    .tp-modal__steps { flex-direction: column !important; gap: 8px !important; }
    .tp-modal__step { padding: 10px !important; }
    .tp-modal__step-arrow { display: none !important; }
    .tp-modal__area-row { flex-direction: column !important; gap: 8px !important; }
    .tp-modal__area-label { width: auto !important; }
    .tp-modal__footer { flex-wrap: wrap !important; }
    .tp-modal__count { font-size: 28px !important; }
    .tp-modal__count span { font-size: 28px !important; }
}

@media (max-width: 480px) {
    .tp-search__map-areas { grid-template-columns: 1fr !important; }
    .tp-banner__title { font-size: 20px !important; line-height: 32px !important; }
    .tp-banner__subtitle { font-size: 13px !important; line-height: 22px !important; }
    .tp-banner__btn { padding: 12px 20px !important; font-size: 13px !important; }
    .tp-banner__buttons { gap: 8px !important; }
    .tp-banner__search-btn { padding: 12px 24px !important; }
    .tp-banner__search-btn-text { font-size: 14px !important; }

    .tp-section-header__title { font-size: 18px !important; line-height: 28px !important; }
    .tp-section-header__icon-img { height: 48px !important; }

    .tp-search__card-text { font-size: 14px !important; line-height: 20px !important; }
    .tp-search__card-link { font-size: 12px !important; }

    .tp-cm-feat { padding: 32px 0 !important; }
    .tp-cm-feat__title { font-size: 18px !important; line-height: 28px !important; }

    .tp-user-feat { padding: 32px 0 !important; }
    .tp-user-feat__title { font-size: 16px !important; line-height: 26px !important; }
    .tp-user-feat__inner { padding: 0 16px !important; }

    .tp-prov-feat { padding: 32px 0 !important; }
    .tp-prov-feat__title { font-size: 18px !important; line-height: 28px !important; }
    .tp-prov-feat__item-title { font-size: 13px !important; }
    .tp-prov-feat__item-sub { font-size: 11px !important; }

    .tp-promo__title { font-size: 18px !important; }
    .tp-promo__btn { padding: 12px 24px !important; }

    .tp-columns__card-title { font-size: 14px !important; }
    .tp-municipality__card-title { font-size: 14px !important; }

    .tp-section-more__link { padding: 10px 36px !important; font-size: 14px !important; }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_intro] こんなサービスがなかったんです
 * Figma: 652:814, 652:803, 652:813
 * bg: #FFFFFF / 2カラム
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
/* アンカーリンクのスクロール位置をヘッダーに被らないように */
#section-intro,
#section-caremanager,
#section-search,
#section-user,
#section-provider {
    scroll-margin-top: 140px !important;
}

.tp-intro {
    background: #ffffff !important;
    padding: 64px 0 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-intro__inner {
    max-width: 1100px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
    text-align: center !important;
}

/* タイトル: 32px/700/#005EA1 lh=48px (Figma: 652:814) */
.tp-intro__title {
    font-size: 32px !important;
    font-weight: 700 !important;
    line-height: 48px !important;
    color: #005ea1 !important;
    margin: 0 0 24px !important;
    font-family: inherit !important;
    line-break: strict !important;
    word-break: keep-all !important;
    overflow-wrap: break-word !important;
}

/* 説明文: 16px/400/#000000 lh=32px (Figma: 652:813) */
.tp-intro__desc {
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 32px !important;
    color: #000000 !important;
    margin: 0 !important;
    font-family: inherit !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_caremanager_features] ケアマネのためにできること
 * Figma: 658:2146, 658:2152〜665:2199, Group 272
 * アコーディオン / bg: #FFFFFF
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-cm-feat {
    background: #ffffff !important;
    padding: 64px 0 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-cm-feat__inner {
    max-width: 1100px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
}

/* セクションタイトル: 32px/700/#005EA1 lh=30px ls=-0.449px (Figma: 658:2146) */
.tp-cm-feat__title {
    font-size: 32px !important;
    font-weight: 700 !important;
    line-height: 48px !important;
    letter-spacing: -0.449px !important;
    color: #005ea1 !important;
    margin: 0 0 32px !important;
    font-family: inherit !important;
    text-align: center !important;
}

.tp-cm-feat__list {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 12px !important;
}


/* カード: 自然な高さ */
.tp-cm-feat__item {
    background: #ffffff !important;
    border-radius: 16px !important;
    border: 1px solid #c1c1c1 !important;
    overflow: hidden !important;
    width: 100% !important;
    max-width: 1000px !important;
}

/* トリガーボタン: HORIZONTAL gap=10px pad: 8px 32px 8px 16px */
.tp-cm-feat__trigger {
    width: 100% !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 8px 32px 8px 16px !important;
    background: none !important;
    border: none !important;
    cursor: pointer !important;
    text-align: left !important;
    min-height: 110px !important;
    font-family: inherit !important;
    color: inherit !important;
}

/* 番号バッジ: 楕円97×97px 24px/700/#005EA1 (Figma: 665:2155) */
.tp-cm-feat__badge {
    flex: 0 0 97px !important;
    width: 97px !important;
    height: 97px !important;
    border-radius: 0 !important;
    background: url('../images/top/balloon.svg') no-repeat center / contain !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-cm-feat__badge span {
    font-size: 24px !important;
    font-weight: 700 !important;
    line-height: 30px !important;
    color: #005ea1 !important;
    font-family: inherit !important;
}

/* カードタイトル: 24px/700/#333333 lh=30px */
.tp-cm-feat__item-title {
    flex: 1 1 0 !important;
    font-size: 24px !important;
    font-weight: 700 !important;
    line-height: 30px !important;
    color: #333333 !important;
    font-family: inherit !important;
}

/* 展開矢印: circle 45×45px border #E0E0E0 (Figma: 665:2163) */
.tp-cm-feat__arrow {
    flex: 0 0 45px !important;
    width: 45px !important;
    height: 45px !important;
    border-radius: 50% !important;
    border: 1px solid #e0e0e0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #333333 !important;
    transition: transform 0.35s ease !important;
}

.tp-cm-feat__item--open .tp-cm-feat__arrow {
    transform: rotate(180deg) !important;
    color: #005ea1 !important;
    border-color: #005ea1 !important;
}

/* 展開パネル */
.tp-cm-feat__panel {
    padding-left: 123px !important;
    padding-right: 32px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 16px !important;
    max-height: 0 !important;
    overflow: hidden !important;
    opacity: 0 !important;
    transition: max-height 0.4s ease, opacity 0.3s ease, padding 0.4s ease !important;
}

.tp-cm-feat__item--open .tp-cm-feat__panel {
    max-height: 600px !important;
    opacity: 1 !important;
    padding-top: 8px !important;
    padding-bottom: 32px !important;
}

/* ヘッドライン: 24px/700/#005EA1 (Figma: 665:2224) */
.tp-cm-feat__headline {
    font-size: 24px !important;
    font-weight: 700 !important;
    line-height: 36px !important;
    color: #005ea1 !important;
    margin: 0 !important;
    font-family: inherit !important;
}

/* 本文: 16px/700/#565656 (Figma: 665:2225) */
.tp-cm-feat__body {
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 28px !important;
    color: #565656 !important;
    margin: 0 !important;
    font-family: inherit !important;
}

/* CTAボタン: #d2497e bg 白文字 20px/700 */
.tp-cm-feat__cta {
    display: inline-block !important;
    background: #d2497e !important;
    color: #ffffff !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    padding: 14px 32px !important;
    border-radius: 9999px !important;
    text-decoration: none !important;
    font-family: inherit !important;
    transition: opacity 0.2s ease !important;
}

.tp-cm-feat__cta:hover {
    opacity: 0.85 !important;
    color: #ffffff !important;
    text-decoration: none !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_user_features] 利用者・ご家族のためにできること
 * Figma: 886:481 介護サービス案内セクションデザイン_ver4
 * bg: #FFFFFF / 2カラムグリッド
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-user-feat {
    background: #ffffff !important;
    padding: 64px 0 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-user-feat__inner {
    max-width: 1260px !important;
    margin: 0 auto !important;
    padding: 0 80px !important;
}

/* セクションヘッダー: VERTICAL gap=12px w=707px 中央揃え */
.tp-user-feat__header {
    text-align: center !important;
    margin-bottom: 48px !important;
}

/* タイトル: 30px/700/#0A0A0A lh=36px (Figma: 886:507) */
.tp-user-feat__title {
    font-size: 32px !important;
    font-weight: 700 !important;
    line-height: 48px !important;
    letter-spacing: -0.449px !important;
    color: #005ea1 !important;
    margin: 0 0 32px !important;
    font-family: inherit !important;
    text-align: center !important;
}

/* サブタイトル: 16px/400/#4A5565 lh=26px (Figma: 886:509) */
.tp-user-feat__subtitle {
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 26px !important;
    color: #4a5565 !important;
    margin: 0 !important;
    font-family: inherit !important;
}

/* 2カラムグリッド: 各534px (Figma: 886:510) */
.tp-user-feat__grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 32px !important;
}

.tp-user-feat__col {
    display: grid !important;
    grid-template-rows: auto 1fr 1fr !important; /* ヘッダー, カード1, カード2 */
    gap: 16px !important;
    min-width: 0 !important;
}

/* カラムヘッダー: HORIZONTAL gap=12px */
.tp-user-feat__col-header {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
}

/* アイコン: 40×40px (Figma: 886:513 / 886:553) */
.tp-user-feat__col-icon {
    flex: 0 0 40px !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 8px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-user-feat__col-icon--orange {
    background: #fef3c6 !important; /* Figma: #FEF3C6 */
}

.tp-user-feat__col-icon--blue {
    background: #dbeafe !important; /* Figma: #DBEAFE */
}

/* カラムタイトル: 28px h=28px (Figma: 886:518 / 886:560) */
.tp-user-feat__col-title {
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 28px !important;
    margin: 0 !important;
    font-family: inherit !important;
}

.tp-user-feat__col-title--orange {
    color: #92400e !important;
}

.tp-user-feat__col-title--blue {
    color: #1e40af !important;
}

.tp-user-feat__cards {
    display: contents !important; /* カードを親グリッドに直接参加させる */
}

/* カード: radius=14px pad=21px (Figma: 886:521 / 886:534 / 886:563 / 886:576) */
.tp-user-feat__card {
    border-radius: 14px !important;
    padding: 21px !important;
    display: flex !important;
    flex-direction: row !important;
    align-items: stretch !important;
    gap: 16px !important;
    background: #ffffff !important;
    flex: 1 !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
}

/* カード内メディア: 全画像 102.75×102.75px の正方形に統一。カード内で y 軸中央揃え */
.tp-user-feat__card-media {
    flex: 0 0 102.75px !important;
    width: 102.75px !important;
    height: 102.75px !important;
    align-self: center !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.tp-user-feat__card-media img {
    display: block !important;
    width: 102.75px !important;
    height: 102.75px !important;
    border-radius: 8px !important;
    object-fit: cover !important;
}

/* カード内コンテンツ: grid で「[icon][title]」を同じ行に、desc / button は下にフル幅 */
.tp-user-feat__card-content {
    display: grid !important;
    grid-template-columns: auto 1fr !important;
    grid-template-areas:
        "icon title"
        "desc desc"
        "btn  btn" !important;
    column-gap: 8px !important;
    row-gap: 8px !important;
    flex: 1 1 auto !important;
    min-width: 0 !important;
    align-content: center !important; /* content を縦方向中央寄せに */
    justify-items: stretch !important;
}

.tp-user-feat__card-icon {
    grid-area: icon !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    align-self: center !important; /* タイトル行の中心に揃える */
}

.tp-user-feat__card--orange {
    border: 1px solid #fef3c6 !important; /* Figma: stroke=#FEF3C6 */
}

.tp-user-feat__card--blue {
    border: 1px solid #dbeafe !important; /* Figma: stroke=#DBEAFE */
}

.tp-user-feat__card-title {
    grid-area: title !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 26px !important;
    color: #1d2838 !important;
    margin: 0 !important;
    font-family: inherit !important;
    min-width: 0 !important;
    /* 改行位置は PHP 側の <wbr> で指定。CJK 文字間の自動改行は抑制 */
    word-break: keep-all !important;
    line-break: strict !important;
    overflow-wrap: anywhere !important; /* はみ出し時の安全網 */
}

.tp-user-feat__card-desc {
    grid-area: desc !important;
    font-size: 14px !important;
    font-weight: 400 !important;
    line-height: 22px !important;
    color: #6B7280 !important;
    margin: 0 !important;
    font-family: inherit !important;
    min-width: 0 !important;
    word-break: keep-all !important;
    line-break: strict !important;
    overflow-wrap: anywhere !important;
}

/* CTAボタン共通 */
.tp-user-feat__btn {
    grid-area: btn !important;
    display: block !important;
    width: 100% !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    padding: 12px 24px !important;
    border-radius: 10px !important;
    text-decoration: none !important;
    font-family: inherit !important;
    transition: opacity 0.2s ease !important;
    text-align: center !important;
    box-sizing: border-box !important;
}

.tp-user-feat__btn:hover {
    opacity: 0.85 !important;
    text-decoration: none !important;
}

/* オレンジボタン */
.tp-user-feat__btn--orange {
    background: #d97706 !important;
    color: #ffffff !important;
}

.tp-user-feat__btn--orange:hover {
    color: #ffffff !important;
}

/* ブルーボタン */
.tp-user-feat__btn--blue {
    background: #005ea1 !important;
    color: #ffffff !important;
}

.tp-user-feat__btn--blue:hover {
    color: #ffffff !important;
}

@media (max-width: 768px) {
    .tp-user-feat__inner {
        padding: 0 16px !important;
    }
    .tp-user-feat__grid {
        grid-template-columns: 1fr !important;
        gap: 32px !important;
    }
    /* モバイル: 画像左・コンテンツ右の横並びを維持（画像は少し縮小） */
    .tp-user-feat__card {
        flex-direction: row !important;
        align-items: stretch !important;
        padding: 16px !important;
        gap: 12px !important;
    }
    .tp-user-feat__card-media {
        flex: 0 0 96px !important;
        width: 96px !important;
        height: 96px !important;
        align-self: center !important; /* 画像はカード高さに対して垂直中央 */
    }
    .tp-user-feat__card-media img {
        width: 96px !important;
        height: 96px !important;
    }
}

@media (max-width: 480px) {
    .tp-user-feat__card {
        padding: 14px !important;
        gap: 10px !important;
    }
    .tp-user-feat__card-media {
        flex: 0 0 84px !important;
        width: 84px !important;
        height: 84px !important;
    }
    .tp-user-feat__card-media img {
        width: 84px !important;
        height: 84px !important;
    }
    .tp-user-feat__card-title {
        font-size: 15px !important;
        line-height: 22px !important;
    }
    .tp-user-feat__card-desc {
        font-size: 13px !important;
        line-height: 20px !important;
    }
    .tp-user-feat__btn {
        padding: 10px 16px !important;
        font-size: 13px !important;
    }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_provider_features] 介護事業者のためにできること
 * Figma: 654:1733, 654:1734
 * アコーディオン w=896px / bg: #FFFFFF
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-prov-feat {
    background: #ffffff !important;
    padding: 64px 0 !important;
    font-family: "筑紫A丸ゴシック", "Tsukushi A Round Gothic", "Hiragino Maru Gothic ProN", "Hiragino Maru Gothic Pro", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif !important;
}

.tp-prov-feat__inner {
    max-width: 1100px !important;
    margin: 0 auto !important;
    padding: 0 24px !important;
}

/* セクションタイトル: 32px/700/#005EA1 ls=-0.449px (Figma: 654:1733) */
.tp-prov-feat__title {
    font-size: 32px !important;
    font-weight: 700 !important;
    line-height: 48px !important;
    letter-spacing: -0.449px !important;
    color: #005ea1 !important;
    margin: 0 0 32px !important;
    font-family: inherit !important;
    text-align: center !important;
}

.tp-prov-feat__list {
    display: flex !important;
    flex-direction: column !important;
    gap: 16px !important;
    max-width: 896px !important;
    margin: 0 auto !important;
}

/* カード: 自然な高さ */
.tp-prov-feat__item {
    background: #ffffff !important;
    border-radius: 14px !important;
    border: 1px solid #e5e7eb !important;
    box-shadow: 0 4px 6px -4px rgba(0,0,0,0.1), 0 10px 15px -3px rgba(0,0,0,0.1) !important;
    overflow: hidden !important;
}

/* トリガー: HORIZONTAL h=92px pad: right=24px left=24px (Figma: 654:1736) */
.tp-prov-feat__trigger {
    width: 100% !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 0 24px !important;
    min-height: 92px !important;
    background: none !important;
    border: none !important;
    cursor: pointer !important;
    text-align: left !important;
    font-family: inherit !important;
    color: inherit !important;
}

.tp-prov-feat__texts {
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important; /* Figma: gap=4px */
    flex: 1 1 0 !important;
    min-width: 0 !important;
}

/* カードタイトル: 18px/700/#005EA1 lh=28px (Figma: 654:1739) */
.tp-prov-feat__item-title {
    font-size: 18px !important;
    font-weight: 700 !important;
    line-height: 28px !important;
    color: #005ea1 !important;
    display: block !important;
    font-family: inherit !important;
}

/* カードサブテキスト: 14px/700/#4A5565 lh=20px (Figma: 654:1741) */
.tp-prov-feat__item-sub {
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 20px !important;
    color: #4a5565 !important;
    display: block !important;
    font-family: inherit !important;
}

/* 展開矢印: 12×6px #99A1AF (Figma: 654:1742) */
.tp-prov-feat__arrow {
    flex: 0 0 24px !important;
    color: #99a1af !important;
    margin-left: 16px !important;
    transition: transform 0.35s ease !important;
}

.tp-prov-feat__item--open .tp-prov-feat__arrow {
    transform: rotate(180deg) !important;
}

/* 展開パネル */
.tp-prov-feat__panel {
    padding-left: 24px !important;
    padding-right: 24px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 16px !important;
    max-height: 0 !important;
    overflow: hidden !important;
    opacity: 0 !important;
    transition: max-height 0.4s ease, opacity 0.3s ease, padding 0.4s ease !important;
}

.tp-prov-feat__item--open .tp-prov-feat__panel {
    max-height: 400px !important;
    opacity: 1 !important;
    padding-top: 16px !important;
    padding-bottom: 24px !important;
}

.tp-prov-feat__body {
    font-size: 16px !important;
    font-weight: 400 !important;
    line-height: 28px !important;
    color: #4a5565 !important;
    margin: 16px 0 0 !important;
    font-family: inherit !important;
}

/* CTAボタン: #D2497E bg 白文字 radius=40px pad: 8px 40px (Figma: 654:1750) */
.tp-prov-feat__cta {
    display: inline-block !important;
    background: #d2497e !important;
    color: #ffffff !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    padding: 8px 40px !important;
    border-radius: 40px !important;
    text-decoration: none !important;
    font-family: inherit !important;
    transition: opacity 0.2s ease !important;
}

.tp-prov-feat__cta:hover {
    opacity: 0.85 !important;
    color: #ffffff !important;
    text-decoration: none !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * ショートコード版セクション (top-page-sections.php)
 * [top_why_built] [top_for_caremanager] [top_for_users] [top_for_business]
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */


/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_why_built]
 * こんなサービスがなかったんです。だから作りました。
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-why {
    background: #ffffff !important;
    border-top: 1px solid #e8eaed !important;
    padding: 64px 24px !important;
    text-align: center !important;
}

.tp-why__inner {
    max-width: 700px !important;
    margin: 0 auto !important;
}

.tp-why__title {
    font-size: 26px !important;
    font-weight: 700 !important;
    color: #005ea1 !important;
    line-height: 1.55 !important;
    margin: 0 0 28px !important;
}

.tp-why__body {
    font-size: 16px !important;
    color: #697282 !important;
    line-height: 2 !important;
    margin: 0 !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * アコーディオン共通 (.tp-acc-section / .tp-acc)
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-acc-section {
    padding: 64px 24px !important;
}

.tp-acc-section--caremanager {
    background: #f0f7fa !important;
}

.tp-acc-section--business {
    background: #fdf6f0 !important;
}

.tp-acc-section__inner {
    max-width: 760px !important;
    margin: 0 auto !important;
}

.tp-acc-section__title {
    font-size: 22px !important;
    font-weight: 700 !important;
    color: #005ea1 !important;
    text-align: center !important;
    line-height: 1.5 !important;
    margin: 0 0 36px !important;
}

.tp-acc {
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
}

.tp-acc__item {
    background: #ffffff !important;
    border: 1px solid #e0e5eb !important;
    border-radius: 12px !important;
    overflow: hidden !important;
}

.tp-acc__trigger {
    display: flex !important;
    align-items: center !important;
    gap: 16px !important;
    padding: 20px 24px !important;
    cursor: pointer !important;
    width: 100% !important;
    background: none !important;
    border: none !important;
    text-align: left !important;
    list-style: none !important;
}

.tp-acc__badge {
    flex-shrink: 0 !important;
    width: 52px !important;
    height: 52px !important;
    border-radius: 50% !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #ffffff !important;
    letter-spacing: 0.02em !important;
}

.tp-acc__badge--orange {
    background: linear-gradient(135deg, #FFD166 0%, #FF8C42 100%) !important;
}

.tp-acc__badge--pink {
    background: linear-gradient(135deg, #FF90C0 0%, #E84888 100%) !important;
}

.tp-acc__title-wrap {
    flex: 1 !important;
    min-width: 0 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 4px !important;
}

.tp-acc__title {
    font-size: 17px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
    line-height: 1.5 !important;
}

.tp-acc__title--blue {
    color: #005ea1 !important;
}

.tp-acc__sub {
    font-size: 13px !important;
    color: #888888 !important;
    line-height: 1.5 !important;
}

.tp-acc__arrow {
    flex-shrink: 0 !important;
    width: 32px !important;
    height: 32px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #aab4bf !important;
    font-size: 14px !important;
    transition: transform 0.25s ease !important;
}

.tp-acc__item.is-open .tp-acc__arrow {
    transform: rotate(180deg) !important;
}

.tp-acc__body {
    display: none !important;
    padding: 4px 24px 24px 92px !important;
}

.tp-acc__item.is-open .tp-acc__body {
    display: block !important;
}

.tp-acc__body-text {
    font-size: 15px !important;
    color: #495565 !important;
    line-height: 1.85 !important;
    margin: 0 0 20px !important;
}

.tp-acc__btn {
    display: inline-block !important;
    padding: 10px 32px !important;
    border-radius: 999px !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    cursor: pointer !important;
    border: none !important;
    transition: opacity 0.2s !important;
}

.tp-acc__btn:hover {
    opacity: 0.85 !important;
}

.tp-acc__btn--blue {
    background: #005ea1 !important;
    color: #ffffff !important;
}

.tp-acc__btn--pink {
    background: #e84888 !important;
    color: #ffffff !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * [top_for_users] 2カラムカードUI
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
.tp-users {
    background: #ffffff !important;
    padding: 64px 24px !important;
}

.tp-users__inner {
    max-width: 860px !important;
    margin: 0 auto !important;
}

.tp-users__title {
    font-size: 24px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
    text-align: center !important;
    line-height: 1.5 !important;
    margin: 0 0 12px !important;
}

.tp-users__sub {
    font-size: 15px !important;
    color: #697282 !important;
    text-align: center !important;
    line-height: 1.8 !important;
    margin: 0 0 40px !important;
}

.tp-users__columns {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 24px !important;
}

.tp-users__col {
    display: flex !important;
    flex-direction: column !important;
    gap: 16px !important;
}

.tp-users__col-header {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 0 0 12px !important;
    border-bottom: 2px solid #FFB347 !important;
}

.tp-users__col--act .tp-users__col-header {
    border-bottom-color: #005ea1 !important;
}

.tp-users__col-icon {
    width: 36px !important;
    height: 36px !important;
    border-radius: 50% !important;
    background: linear-gradient(135deg, #FFD166 0%, #FF8C42 100%) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #ffffff !important;
    font-size: 16px !important;
    flex-shrink: 0 !important;
}

.tp-users__col-icon--blue {
    background: linear-gradient(135deg, #4fb3f7 0%, #005ea1 100%) !important;
}

.tp-users__col-label {
    font-size: 16px !important;
    font-weight: 700 !important;
    color: #FF8C42 !important;
}

.tp-users__col-label--blue {
    color: #005ea1 !important;
}

.tp-users__card {
    background: #fffbf3 !important;
    border: 1.5px solid #FFD166 !important;
    border-radius: 12px !important;
    padding: 20px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
}

.tp-users__card--blue {
    background: #ffffff !important;
    border-color: #d8e6f3 !important;
}

.tp-users__card-icon {
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    background: linear-gradient(135deg, #FFD166 0%, #FF8C42 100%) !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #ffffff !important;
    font-size: 17px !important;
    flex-shrink: 0 !important;
}

.tp-users__card-icon--blue {
    background: linear-gradient(135deg, #4fb3f7 0%, #005ea1 100%) !important;
}

.tp-users__card-title {
    font-size: 15px !important;
    font-weight: 700 !important;
    color: #1d2838 !important;
    line-height: 1.5 !important;
    margin: 0 !important;
}

.tp-users__card-desc {
    font-size: 13px !important;
    color: #697282 !important;
    line-height: 1.75 !important;
    margin: 0 !important;
}

.tp-users__card-btn {
    display: inline-block !important;
    padding: 10px 20px !important;
    border-radius: 999px !important;
    font-size: 13px !important;
    font-weight: 700 !important;
    text-decoration: none !important;
    text-align: center !important;
    transition: opacity 0.2s !important;
    margin-top: auto !important;
}

.tp-users__card-btn:hover {
    opacity: 0.85 !important;
}

.tp-users__card-btn--orange {
    background: #FF8C42 !important;
    color: #ffffff !important;
}

.tp-users__card-btn--blue {
    background: #005ea1 !important;
    color: #ffffff !important;
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * レスポンシブ: 対象者別セクション群
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
@media (max-width: 768px) {
    .tp-why { padding: 48px 20px !important; }
    .tp-why__title { font-size: 20px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }
    .tp-why__body { font-size: 14px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }

    .tp-acc-section { padding: 48px 20px !important; }
    .tp-acc-section__title { font-size: 18px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }
    .tp-acc__trigger { padding: 16px 16px !important; gap: 12px !important; }
    .tp-acc__badge { width: 44px !important; height: 44px !important; font-size: 14px !important; }
    .tp-acc__title { font-size: 15px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }
    .tp-acc__body { padding: 4px 16px 20px 16px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }
    .tp-acc__item { overflow: visible !important; }
    .tp-acc__item.is-open .tp-acc__body { display: block !important; }

    .tp-users { padding: 48px 20px !important; }
    .tp-users__title { font-size: 20px !important; word-break: keep-all !important; overflow-wrap: break-word !important; }
    .tp-users__columns { grid-template-columns: 1fr !important; gap: 32px !important; }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * タブレット対応 (769px〜1024px)
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
@media (min-width: 769px) and (max-width: 1024px) {
    /* バナー */
    .tp-banner__title { font-size: 32px !important; line-height: 48px !important; }
    .tp-banner__subtitle { font-size: 14px !important; }
    .tp-banner__buttons { gap: 12px !important; }
    .tp-banner__btn { padding: 14px 24px !important; font-size: 14px !important; }

    /* 検索カード 2列 */
    .tp-search__cards { grid-template-columns: repeat(2, 1fr) !important; }
    .tp-search__card { min-height: 160px !important; }
    .tp-search__card-text { font-size: 16px !important; }

    /* ニュース */
    .tp-news__cards { grid-template-columns: repeat(2, 1fr) !important; }
    .tp-municipality__grid { grid-template-columns: repeat(2, 1fr) !important; }
    .tp-columns__grid { grid-template-columns: repeat(2, 1fr) !important; }

    /* ケアマネ機能 */
    .tp-cm-feat__title { font-size: 26px !important; }
    .tp-cm-feat__badge { flex: 0 0 72px !important; width: 72px !important; height: 72px !important; }
    .tp-cm-feat__badge span { font-size: 20px !important; }
    .tp-cm-feat__item-title { font-size: 20px !important; }
    .tp-cm-feat__panel { padding-left: 100px !important; }

    /* 利用者向け */
    .tp-user-feat__inner { padding: 0 40px !important; }
    .tp-user-feat__title { font-size: 26px !important; }

    /* 事業者向け */
    .tp-prov-feat__title { font-size: 26px !important; }

    /* プロモ */
    .tp-promo__inner { gap: 24px !important; }
    .tp-promo__title { font-size: 22px !important; }

    /* セクションヘッダー */
    .tp-section-header__title { font-size: 26px !important; }

    /* モーダル */
    .tp-modal__header { padding: 28px 24px 0 !important; }
    .tp-modal__body { padding: 0 24px !important; }
    .tp-modal__footer-wrap { padding: 14px 24px 20px !important; }
}

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 * モバイル最終オーバーライド（ベーススタイルより後に配置）
 * ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */
@media (max-width: 768px) {
    /* ── inner パディング統一 ── */
    .tp-cm-feat__inner,
    .tp-prov-feat__inner {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }
    .tp-intro__inner,
    .tp-news__inner,
    .tp-municipality__inner,
    .tp-columns__inner,
    .tp-promo__inner,
    .tp-user-feat__inner {
        padding-left: 16px !important;
        padding-right: 16px !important;
    }

    /* ── ケアマネ機能 ── */
    .tp-cm-feat__title {
        font-size: 18px !important;
        line-height: 28px !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }
    .tp-cm-feat__trigger {
        min-height: auto !important;
        padding: 8px 8px !important;
        gap: 6px !important;
        box-sizing: border-box !important;
        max-width: 100% !important;
        overflow: hidden !important;
    }
    .tp-cm-feat__badge {
        flex: 0 0 40px !important;
        width: 40px !important;
        height: 40px !important;
    }
    .tp-cm-feat__badge span {
        font-size: 14px !important;
    }
    .tp-cm-feat__item {
        overflow: hidden !important;
    }
    .tp-cm-feat__item-title {
        flex: 1 1 0 !important;
        min-width: 0 !important;
        font-size: 13px !important;
        line-height: 20px !important;
        white-space: normal !important;
        word-break: break-word !important;
        overflow-wrap: break-word !important;
    }
    .tp-cm-feat__arrow {
        flex: 0 0 28px !important;
        width: 28px !important;
        height: 28px !important;
    }
    .tp-cm-feat__panel {
        padding: 8px 12px 0 12px !important;
    }
    .tp-cm-feat__item--open .tp-cm-feat__panel {
        max-height: none !important;
        padding-bottom: 8px !important;
    }
    .tp-cm-feat__headline {
        font-size: 14px !important;
        line-height: 22px !important;
        white-space: normal !important;
        word-break: break-word !important;
        overflow-wrap: break-word !important;
    }
    .tp-cm-feat__body {
        font-size: 13px !important;
    }
    .tp-cm-feat__cta {
        font-size: 13px !important;
        padding: 10px 20px !important;
    }

    /* ── 利用者向け ── */
    .tp-user-feat__title {
        font-size: 18px !important;
        line-height: 28px !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }

    /* ── 事業者向け ── */
    .tp-prov-feat__title {
        font-size: 18px !important;
        line-height: 32px !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }
    .tp-prov-feat__item {
        overflow: hidden !important;
    }
    .tp-prov-feat__trigger {
        padding: 10px 12px !important;
        min-height: auto !important;
        box-sizing: border-box !important;
        max-width: 100% !important;
        overflow: hidden !important;
    }
    .tp-prov-feat__item-title {
        font-size: 13px !important;
        line-height: 20px !important;
        word-break: break-word !important;
        overflow-wrap: break-word !important;
        white-space: normal !important;
    }
    .tp-prov-feat__item-sub {
        font-size: 11px !important;
        line-height: 18px !important;
        word-break: break-word !important;
        overflow-wrap: break-word !important;
        white-space: normal !important;
    }
    .tp-prov-feat__panel {
        padding: 0 12px 0 !important;
    }
    .tp-prov-feat__item--open .tp-prov-feat__panel {
        max-height: none !important;
        padding-bottom: 8px !important;
    }
    .tp-prov-feat__body {
        font-size: 13px !important;
        margin-top: 0 !important;
    }
    .tp-prov-feat__cta {
        font-size: 13px !important;
        padding: 8px 20px !important;
    }

    /* ── コラムカード画像 ── */
    .tp-columns__card-image {
        height: auto !important;
        aspect-ratio: 16 / 10 !important;
        overflow: hidden !important;
    }
    .tp-columns__card-image img {
        width: 100% !important;
        height: 100% !important;
        object-fit: cover !important;
    }

    /* ── intro ── */
    .tp-intro__title {
        font-size: 20px !important;
        line-height: 34px !important;
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
        line-break: strict !important;
    }
    .tp-intro__desc {
        font-size: 14px !important;
        line-height: 26px !important;
    }
    .tp-intro__body {
        word-break: keep-all !important;
        overflow-wrap: break-word !important;
    }

    /* ── バナーボタン横幅統一 ── */
    .tp-banner__buttons {
        width: 100% !important;
        padding: 0 24px !important;
        box-sizing: border-box !important;
    }
    .tp-banner__btn {
        width: 100% !important;
        justify-content: center !important;
        box-sizing: border-box !important;
    }
    .tp-banner__search-wrap {
        width: 100% !important;
        padding: 0 24px !important;
        box-sizing: border-box !important;
        margin-bottom: 16px !important;
    }
    .tp-banner__search-btn {
        width: 100% !important;
        justify-content: center !important;
        box-sizing: border-box !important;
        border: 2px solid #000 !important;
    }
}

@media (max-width: 480px) {
    .tp-cm-feat { padding: 32px 0 !important; }
    .tp-cm-feat__title { font-size: 16px !important; line-height: 26px !important; }

    .tp-user-feat { padding: 32px 0 !important; }
    .tp-user-feat__title { font-size: 16px !important; line-height: 26px !important; }
    .tp-user-feat__inner { padding: 0 16px !important; }

    .tp-prov-feat { padding: 32px 0 !important; }
    .tp-prov-feat__title { font-size: 16px !important; line-height: 26px !important; }
    .tp-prov-feat__item-title { font-size: 12px !important; }
    .tp-prov-feat__item-sub { font-size: 10px !important; }

    .tp-intro__title { font-size: 18px !important; line-height: 30px !important; }
}
