﻿


@font-face {
    font-family: 'BIZUDGothic';
    src: url('../fonts/BIZUDGothic-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

:root {
    --joy-fs-1: 1.000rem; /* 16px */
    --joy-fs-2: 1.125rem; /* 18px */
    --joy-fs-3: 1.250rem; /* 20px */
    --joy-fs-4: 1.375rem; /* 22px */
    --joy-fs-5: 1.500rem; /* 24px */
    --joy-fs-6: 1.625rem; /* 26px */
    --joy-fs-7: 1.750rem; /* 28px */
    --joy-fs-8: 1.875rem; /* 30px */
    --joy-fs-9: 2.000rem; /* 32px */
    --bs-body-font-size: var(--joy-fs-1);
    --bs-btn-font-size: var(--joy-fs-1);
    --contact-btn-fs: var(--joy-fs-1);
    --contact-btn-fs-header: var(--joy-fs-3);
    --app-bg-color: #fde8ee;
    --app-bg-image: none;
    --app-bg-size: auto;
}



body {
    font-family: 'BIZUDGothic', 'Hiragino Kaku Gothic Pro', 'Meiryo', 'Noto Sans JP', system-ui, sans-serif;
}

small, .small {
    font-size: var(--joy-fs-1);
}

.btn-sm {
    --bs-btn-font-size: var(--joy-fs-1);
}

.form-select-sm,
.form-control-sm {
    font-size: var(--joy-fs-1);
}


.main-container {
    max-width: 1120px;
    margin: 0 auto;
    background: #fff;
    box-shadow: 0 6px 24px rgba(0,0,0,.06);
}

.header-bar {
    border-top: 4px solid #2c4aa0;
    padding: 14px 18px;
}

.logo {
    height: 40px;
}

.font-bold {
    font-weight: bold;
}

.contact-btn {
    border-radius: 999px;
    padding: .45rem .9rem;
}

.hero {
    position: relative;
}

    .hero img.hero-bg {
        width: 100%;
        height: 160px;
        object-fit: cover;
        border-radius: 10px;
    }

.hero-search {
    display: flex;
    align-items: center;
    gap: 10px;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    width: min(760px,92%);
}

    .hero-search textarea {
        flex: 1 1 auto;
        min-width: 0;
        min-height: 46px;
        max-height: calc(46px * 4);
        padding: 5px 5px;
        font-size: var(--home-fs-control);
        line-height: 1.4;
        resize: none;
        overflow: auto;
        border: 0px solid #111;
    }

        .hero-search textarea::placeholder {
            color: #d0d0d0;
            font-weight: 400;
            opacity: 1;
        }

        .hero-search textarea::-webkit-input-placeholder {
            color: #d0d0d0;
            font-weight: 400;
        }

    .hero-search input {
        flex: 1; /* 输入框自动撑满剩余空间 */
        min-width: 0;
    }

    .hero-search .btn-search {
        flex-shrink: 0; /* 防止按钮被压缩换行 */
        white-space: nowrap;
    }

.hero .search-box {
    background: rgba(255,255,255,.95);
    border-radius: 999px;
    padding: 10px;
    display: flex;
    gap: 10px;
    box-shadow: 0 10px 30px rgba(0,0,0,.12);
}

.hero input[type="text"] {
    border: none;
    outline: none;
    padding: 10px 16px;
    width: 100%;
    border-radius: 999px;
}

.hero-search input::placeholder {
    color: rgba(0, 0, 0, 0.25);
    font-weight: 400;
}

.hero-search input::-webkit-input-placeholder {
    color: rgba(0, 0, 0, 0.25);
    font-weight: 400;
}

.hero .btn-search {
    border-radius: 999px;
    padding: .6rem 1.1rem;
}

.notice-list .badge {
    border-radius: 6px;
}

/* ===== 区块标题 ===== */
.section {
    padding: 22px 18px;
}

@media (min-width: 992px) {
    .section {
        padding-left: 50px;
        padding-right: 50px;
    }
}

body.page-searchresult .section {
    padding-left: 0px;
    padding-right: 0px;
}

@media (min-width: 992px) {
    body.page-searchresult .section {
        padding-left: 0px;
        padding-right: 0px;
    }
}

.sec-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
    font-weight: 700;
}

    .sec-title .bar {
        width: 3px;
        height: 30px;
        background: #2c9f5b;
        border-radius: 4px;
    }

    .sec-title .bar-address {
        background: #AA428E;
    }

    .sec-title .bar-joken {
        background: #ff6b6b;
    }

.sec-subtle {
    background: #f6fbff;
    border: 1px solid #e7eef7;
    border-radius: 10px;
    padding: 14px;
}

.icon-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 12px; /* 卡片之间的间距 */
}

.form-check-label {
    user-select: none;
}

/* ===== 卡片本体：统一大小 ===== */
.icon-item {
    display: flex;
    flex-direction: column; /* 上图下文字 */
    align-items: center;
    justify-content: flex-start; /* 从上开始排 */
    gap: 6px;
    padding: 8px 10px;
    width: 180px; /* ✅ 统一宽度（或改成 160/170） */
    height: 150px; /* ✅ 统一高度（关键） */

    border-radius: 8px;
    border: 1px solid #eee;
    background: #f8f9fa;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    box-shadow: 0 2px 6px rgba(0,0,0,.04);
    transition: transform .15s ease, box-shadow .15s ease;
}

    /* hover */
    .icon-item:hover {
        transform: translateY(-2px);
        box-shadow: 0 6px 14px rgba(0,0,0,.08);
    }

    /* 图片固定 */
    .icon-item img {
        width: 56px;
        height: 56px;
        object-fit: cover;
        border-radius: 50%;
        border: 1px solid #eee;
        background: #f8f9fa;
        pointer-events: none;
        flex-shrink: 0;
    }

    /* ===== checkbox + 文字：同一行 + 可换行 ===== */
    .icon-item .txt {
        display: flex;
        align-items: flex-start;
        gap: 8px;
        width: 100%;
    }

    /* checkbox 不要默认上边距 */
    .icon-item .form-check-input {
        margin: 2px;
        flex-shrink: 0;
    }

    /* 文字：最多两行，超出省略号，并占固定高度 => 卡片不再忽高忽低 */
    .icon-item .txt .txt-label {
        flex: 1;
        min-width: 0;
        line-height: 1.25;
        text-align: center;
        display: -webkit-box;
        -webkit-line-clamp: 2; /* ✅ 最多两行 */
        -webkit-box-orient: vertical;
        overflow: hidden;
        min-height: calc(1.25em * 2); /* ✅ 即使一行也占两行高度，统一视觉 */
    }

    /* ✅ 选中高亮 */
    .icon-item:has(.form-check-input:checked) {
        border-color: #0d6efd;
        background: #e7f1ff;
        box-shadow: 0 0 0 2px rgba(13, 110, 253, .15);
    }

        .icon-item:has(.form-check-input:checked) .txt-label {
            color: #0d3b8f;
            font-weight: 600;
        }

/* センターメッセージ */
.center-message {
    white-space: pre-wrap;
    text-align: center;
    font-size: var(--joy-fs-4);
}


/* ===== 水平多选项（蓝色块） ===== */
.blue-group {
    background: #eef6ff;
    border: 1px solid #dbe9ff;
    border-radius: 10px;
    padding: 12px;
}

    .blue-group .check-row {
        display: flex;
        flex-wrap: wrap;
        gap: 16px 22px;
    }

/* ===== 町/丁目网格 ===== */
.block-grid {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px 18px;
}

/* ===== 地址与半径 ===== */
.addr-box {
    display: flex;
    gap: 12px;
    align-items: center;
}

.addr-zip {
    max-width: 160px;
}

.addr-city {
    flex: 1;
}

/* ===== 底部固定操作栏 ===== */
.bottom-bar {
    position: sticky;
    bottom: 0;
    background: #2e2f39;
    color: #fff;
    padding: 14px;
    display: flex;
    gap: 10px;
    justify-content: center;
    align-items: center;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    box-shadow: 0 -10px 20px rgba(0,0,0,.15);
}

    .bottom-bar .chip {
        background: #fff;
        color: #333;
        border: none;
        border-radius: 10px;
        padding: .6rem 1rem;
        font-weight: 600;
    }

    .bottom-bar .btn-primary {
        border-radius: 10px;
        padding: .6rem 1.2rem;
    }

.fixed-footer {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    background: #262730;
    padding: 12px 24px;
    z-index: 999;
}


/* ===== 回到顶部 ===== */
.goto-top {
    position: fixed;
    right: 20px;
    bottom: 90px;
    z-index: 11;
}

    .goto-top .btn {
        border-radius: 4px;
        padding: 12px 16px;
        font-size: var( --home-fs-bottom-chip);
        background: #ffffff;
        color: #344EBB;
        border-color: #344EBB;
    }

    .goto-top .goto-top-icon {
        width: 28px;
        height: 28px;
        border-radius: 999px;
        background: #344EBB;
        color: #ffffff;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
    }


/* ===== 响应式 ===== */
@media screen and (max-width: 991px) {
    .block-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}



@media screen and (max-width: 575px) {
    .icon-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .hero img.hero-bg {
        height: 220px;
    }
}

.sr-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    border-radius: 0.25rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
    flex: 0 0 auto;
}

.sr-badge--list {
    font-size: var(--joy-fs-4);
    padding: 0.22em 0.55em;
}

.sr-badge--detail {
    font-size: var(--joy-fs-5);
    padding: 0.28em 0.65em;
}

.sr-badge-upd {
    background-color: #20c997 !important;
    color: #fff !important;
}

/* 上部条件バー */
.condition-bar {
    background: #f0f6ff;
    border-radius: .5rem;
    padding: .75rem 1rem;
}

.condition-tabs {
    display: flex;
    flex-direction: column; /* 纵向排 */
    gap: .25rem;
}

    .condition-tabs .cond-tab {
        background: #ffffff;
        border-radius: .4rem;
        padding: .35rem .75rem;
        border: 1px solid #d0d7e2;
    }

.view-btn {
    white-space: nowrap; /* 文本不换行 */
    min-width: 110px; /* 适当宽度，防止被压缩 */
}

.cond-label {
    font-size: var(--joy-fs-1);
    color: #6b7280;
    margin-right: .25rem;
}

.qr-col {
    border-left: 1px solid #e5e7eb; /* 中间竖线 */
    background: #fff;
}

.result-qr {
    max-width: 96px;
    max-height: 96px;
    display: block;
}

.label-nowrap {
    white-space: nowrap;
}


/* 一覧カード */
.result-card {
    border: 1px solid #e5e7eb;
    border-radius: .75rem;
    overflow: hidden;
    position: relative;
}

    .result-card::before {
        content: "";
        position: absolute;
        left: 0;
        top: 0;
        bottom: 0;
        width: 4px;
        background: #2cb4ff;
    }

.badge-new {
    background: #ff5b5b;
    color: #fff;
    font-weight: 700;
    font-size: var(--joy-fs-1);
    border-radius: 999px;
    padding: .2rem .6rem;
}

.result-title {
    font-weight: 600;
    font-size: var(--joy-fs-1);
}

.result-description {
    font-size: var(--joy-fs-1);
    color: #4b5563;
}



/* 左側の「現在の検索条件」大きなボックス */
.cond-current {
    background-color: #cfe5ff; /* 想要更深一点就再调 */
    border-radius: 10px;
    min-width: 180px; /* 方块宽度 */
    padding: 8px 16px;
    text-align: center;
}

/* 标签的样式（你可以根据需要调整） */
.condition-tabs .cond-tab .cond-label {
    display: inline-block;
    padding: 4px 10px;
    background-color: #f5f5f5;
    border-radius: 4px;
    font-size: var(--joy-fs-1);
    margin-right: 4px;
    min-width: 7em;
    white-space: nowrap;
}

.condition-tabs .cond-tab .cond-value {
    font-size: var(--joy-fs-3);
    font-weight: 600;
}

.mini-icon {
    width: 50px;
    height: 50px;
    object-fit: contain;
}


.detail-wrap {
    max-width: 1100px;
    margin: 0 auto;
    padding-inline: 30px;
    box-sizing: border-box;
}

.detail-title {
    font-weight: 800;
}

.kv {
    width: 100%;
    border: 1px solid #e5e7eb;
    border-collapse: separate;
    border-spacing: 0;
}

    .kv th {
        width: 230px;
        background: #f3f6fb;
        color: #374151;
        padding: 14px 16px;
        vertical-align: top;
        border-bottom: 1px solid #e5e7eb;
    }

    .kv td {
        padding: 14px 16px;
        border-bottom: 1px solid #e5e7eb;
    }

    .kv tr:last-child th, .kv tr:last-child td {
        border-bottom: none;
    }

.muted {
    color: #6b7280;
    font-size: var(--joy-fs-1);
}

.chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border: 1px solid #B0B0B0;
    border-radius: 999px;
    font-size: var(--joy-fs-1);
    background: #fff;
}


/* ===== Detail画面 ===== */
.detail-wrap {
    --detail-fs-title: var(--joy-fs-9); /* タイトル */
    --detail-fs-label: var(--joy-fs-5); /* 「更新日」などラベル、th */
    --detail-fs-body: var(--joy-fs-4); /* 本文（td） */
    --detail-fs-chip: var(--joy-fs-4); /* チップ */
    --detail-fs-muted: var(--joy-fs-3); /* muted */
    --detail-fs-link: var(--joy-fs-4); /* リンク（地図表示など） */
}

    /* タイトル（既存 .detail-title を上書き） */
    .detail-wrap .detail-title {
        font-size: var(--detail-fs-title);
    }

    /* ラベル（更新日） */
    .detail-wrap .upd-label {
        font-size: var(--detail-fs-label);
    }

    .detail-wrap .period-msg {
        color: #FF3F3F;
        font-weight: 700;
        font-size: var(--detail-fs-muted);
    }

    /* 表（th/td） */
    .detail-wrap .kv th {
        font-size: var(--detail-fs-label);
    }

    .detail-wrap .kv td {
        font-size: var(--detail-fs-body);
    }

    /* 補助テキスト */
    .detail-wrap .muted {
        font-size: var(--detail-fs-muted);
    }

    /* チップ */
    .detail-wrap .chip {
        font-size: var(--detail-fs-chip);
    }

    /* リンク */
    .detail-wrap a {
        font-size: var(--detail-fs-link);
    }

/* 地図 */
.maps-box {
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden; /* 角丸でiframeを切る */
    padding: 0; /* ←内側余白は消す */
    background: #fff;
}

    .maps-box > iframe {
        display: block;
        width: 100%;
        height: clamp(240px, 40vh, 420px); /* PC/スマホ両対応の目安 */
        border: 0;
    }

.btn-linklike {
    color: #2563eb;
    text-decoration: none;
}

    .btn-linklike:hover {
        text-decoration: underline;
    }


.svc-images {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
}

.svc-img {
    height: 220px;
    overflow: hidden;
    display: flex; /* ✅ 让图片居中 */
    justify-content: center;
}

    .svc-img img {
        max-width: 100%;
        max-height: 100%;
        width: auto; /* ✅ 保持原比例 */
        height: auto;
        object-fit: contain; /* ✅ 不裁切 */
        display: block;
    }


/* 窄屏：变成一列 */
@media (max-width: 768px) {
    .svc-images {
        grid-template-columns: 1fr;
    }

    .svc-img img {
        height: 200px;
    }
}


table th {
    width: 180px;
    vertical-align: middle;
    background: #f7fbff; /* 淡蓝背景（接近截图） */
}

table td {
    padding: 20px;
}

table.kv th {
    background: #EAF2FF;
}

.addr-city::placeholder {
    color: #d0d0d0;
}


/* ===== 分页：放大版 ===== */
.custom-pagination .page-link {
    font-size: var(--joy-fs-1); /* 字体放大 */
    padding: 8px 14px; /* 点击区域变大 */
    min-width: 40px; /* 每个按钮一样宽 */
    text-align: center;
}

.custom-pagination .page-item.active .page-link {
    background-color: #0d6efd;
    border-color: #0d6efd;
    font-weight: 600;
    transform: scale(1.05);
}

.custom-pagination .page-item:first-child .page-link,
.custom-pagination .page-item:last-child .page-link {
    padding-left: 18px;
    padding-right: 18px;
}

.custom-pagination .page-link:hover {
    background: #e7f1ff;
}

html, body {
    height: 100%;
}

    body.app-bg {
        min-height: 100vh;
        background-color: var(--app-bg-color);
        background-image: var(--app-bg-image);
        background-size: var(--app-bg-size);
    }

        /* ===== 背景パターン===== */
        body.app-bg[data-bg-pattern="stripe" i] {
            --app-bg-image: repeating-linear-gradient( 45deg, rgba(255,255,255,.25) 0, rgba(255,255,255,.25) 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px );
            --app-bg-size: auto;
        }

        body.app-bg[data-bg-pattern="dot" i] {
            --app-bg-image: radial-gradient(rgba(255,255,255,.35) 1px, transparent 1px);
            --app-bg-size: 10px 10px;
        }

        body.app-bg[data-bg-pattern="grid" i] {
            --app-bg-image: linear-gradient(rgba(255,255,255,.25) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.25) 1px, transparent 1px);
            --app-bg-size: 16px 16px;
        }

.header-bar {
    position: relative;
}


.header-title {
    max-width: 60%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

a.btn.contact-btn {
    border-radius: 6px;
}

a.btn.contact-btn {
    font-size: var(--contact-btn-fs);
    line-height: 1;
    padding: 11px 34px;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.header-title {
    font-size: var(--joy-fs-8);
    line-height: 1.1;
}

.header-bar a.btn.contact-btn {
    font-size: var(--contact-btn-fs-header);
}

.header-title {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}


/* スマホ用：ヘッダーの1段下に出すタイトル */
.header-title-mobile-wrap {
    padding: 0 18px 12px;
}

.header-title-mobile {
    font-size: var(--joy-fs-3);
    line-height: 1.2;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.hero-search input[type="text"] {
    border-radius: 0;
}

.hero-search .btn-search {
    border-radius: 4px;
}

.notice-list {
    --notice-accent: #B79B3A;
    --notice-rule: #D9D9D9;
    --notice-inset: 10px;
}

    .notice-list .d-flex.flex-column .notice {
        padding-left: var(--notice-inset);
        padding-top: 6px;
        padding-bottom: 6px;
        position: relative;
    }

        /* 区切り線（左右に余白あり） */
        .notice-list .d-flex.flex-column .notice::after {
            content: "";
            position: absolute;
            left: var(--notice-inset);
            right: var(--notice-inset);
            bottom: -5px;
            border-bottom: 1px solid rgba(0,0,0,.12);
        }

    /* PC幅以上：左に日付、右に本文＋URL */
    .notice-list .notice-text {
        display: grid;
        grid-template-columns: 10ch 1fr;
        column-gap: 15px;
        row-gap: 4px;
        align-items: start;
        width: 100%;
    }

    .notice-list .notice-date {
        grid-column: 1;
        grid-row: 1 / span 2;
        display: block;
        white-space: nowrap;
        line-height: 1.5;
    }

    .notice-list .notice-msg {
        grid-column: 2;
        grid-row: 1;
        display: block;
        white-space: normal;
        overflow-wrap: break-word;
        line-height: 1.5;
    }

    .notice-list .notice-link-wrap {
        grid-column: 2;
        grid-row: 2;
        display: block;
        line-height: 1.5;
    }

    .notice-list .notice-link {
        display: inline;
        overflow-wrap: anywhere;
        word-break: break-word;
    }


    .notice-list .notice-chip {
        display: inline-block;
        min-width: 70px;
        text-align: center;
        padding: 4px 10px;
        border: 1px solid var(--notice-accent);
        color: var(--notice-accent);
        background: transparent;
        border-radius: 0;
        font-weight: 600;
        font-size: var(--joy-fs-1);
        line-height: 1.1;
        margin-left: var(--notice-inset);
    }

.btn-back-custom {
    color: #2945B7;
    border-color: #2945B7;
    background: #FFF;
    margin-bottom: 12px;
    margin-top: 12px;
}

    .btn-back-custom:hover {
        color: #FFF;
        border-color: #344EBB;
        background: #344EBB;
    }

.btn.btn-back-custom:active,
.btn.btn-back-custom:focus-visible {
    color: #FFF;
    border-color: #344EBB;
    box-shadow: 0 0 0 .25rem rgba(41, 69, 183, .25);
}

.btn-print-pdf {
    font-size: var(--joy-fs-4);
    padding: 12px 22px;
    border-radius: 12px;
    font-weight: 700;
    line-height: 1;
}

.upd-label {
    display: inline-block;
    border: 1px solid #111;
    padding: 6px 22px;
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    min-width: 64px;
    text-align: center;
}

@media (max-width: 575.98px) {
    /* スマホ：左右余白をゼロ */
    .notice-list {
        --notice-inset: 0px;
    }

    .hero-search {
        flex-direction: column;
        align-items: stretch;
    }

        .hero-search textarea {
            width: 100%;
        }

        .hero-search .btn-search {
            width: 100%;
        }

    .notice-list .d-flex.flex-column .notice {
        display: grid !important;
        grid-template-columns: auto 1fr; /* 左:バッジ / 右:日付 */
        column-gap: 10px;
        row-gap: 4px;
    }

    /* small（notice-text）を“箱”として消して、子要素をグリッド要素として扱う */
    .notice-list .notice-text {
        display: contents;
    }

    /* 日付：1行目の右側 */
    .notice-list .notice-date {
        grid-column: 1;
        grid-row: 1;
        display: block;
        white-space: nowrap;
    }

    /* 本文：2行目。左右いっぱい＝バッジの下から開始 */
    .notice-list .notice-msg {
        grid-column: 1;
        grid-row: 2;
        display: block;
        white-space: normal;
        overflow-wrap: break-word;
    }

    .notice-list .notice-link-wrap {
        grid-column: 1;
        grid-row: 3;
        display: block;
        white-space: normal;
        overflow-wrap: break-word;
    }

    .notice-list .notice-link {
        display: inline;
        overflow-wrap: anywhere;
        word-break: break-word;
    }

    /* スマホ用：検索ボタン */
    .btn-mobile-search {
        padding: 16px 18px;
        font-size: var(--joy-fs-2);
        border-radius: 6px;
    }

    .btn-mobile-reset {
        background: #fff;
        border: 1px solid rgba(220, 53, 69, 0.40);
        color: rgba(220, 53, 69, 0.95);
        font-weight: 600;
        min-height: 52px;
        font-size: var(--home-fs-bottom-chip);
        border-radius: 4px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        line-height: 1.2;
        white-space: nowrap;
        margin-top: 0;
    }

    .site-footer.fixed-footer .footer-inner.main-container {
        padding-top: 8px;
    }

    .site-footer.fixed-footer .goto-top .goto-top-text {
        display: none;
    }

    .site-footer.fixed-footer .goto-top .btn {
        padding: 12px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    .detail-wrap {
        max-width: 1100px;
        margin: 0 auto;
        padding-inline: 10px;
        box-sizing: border-box;
    }

    .kv {
        border: none; /* 外枠は消して、行ごとに枠を持たせる */
        border-spacing: 0;
    }

        .kv,
        .kv tbody,
        .kv tr,
        .kv th,
        .kv td {
            display: block;
            width: 100%;
        }

            .kv tr {
                border: 1px solid #e5e7eb;
                border-radius: 10px;
                overflow: hidden;
                margin-bottom: 12px;
                margin-top: 12px;
                background: #fff;
            }

            .kv th {
                width: auto; /* PCの固定幅を解除 */
                border-bottom: 1px solid #e5e7eb;
                padding: 10px 12px;
                background: #EAF2FF;
                color: rgba(0,0,0,.80);
                border-left: 4px solid #2F6FEB;
                padding-left: 12px;
            }

            .kv td {
                border-bottom: none;
            }


    .maps-box > iframe {
        height: 520px;
    }

    .kv td ol {
        padding-left: 1.2rem;
    }
}

@media (max-width: 850px) {
    #address-section .addr-box {
        flex-direction: column;
        align-items: stretch; /* 子要素を横いっぱい */
    }

    #address-section .radius-select {
        width: 100%;
    }

    #address-section #radius-area {
        flex-wrap: wrap;
    }
}

/* 住所指定検索だけに適用 */
#address-section .sec-title {
    position: relative !important; /* 基準を固定 */
    padding-bottom: 8px;
    margin-bottom: 10px;
    width: 100%;
}

    /* 区切り線 */
    #address-section .sec-title::after {
        content: "";
        position: absolute;
        left: 0px;
        right: 0px;
        bottom: 0;
        height: 1px;
        background: rgba(0,0,0,.12);
    }

#address-section .addr-box {
    max-width: 960px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0px;
    padding-right: 0px;
}

#address-section .radius-select {
    width: 100px;
}


/* ===== 開催条件検索（condition-section） ===== */
#condition-section .condition-groups {
    display: flex;
    flex-direction: column;
}


#condition-section .sec-title {
    position: relative;
    padding-bottom: 8px;
    margin-bottom: 10px;
    width: 100%;
}

    #condition-section .sec-title::after {
        content: "";
        position: absolute;
        left: 0;
        right: 0;
        bottom: 0;
        height: 1px;
        background: rgba(0,0,0,.12);
    }

#condition-section .condition-groups .blue-group.condition-group {
    border: none;
    margin: 0;
    border-radius: 0;
}

    #condition-section .condition-groups .blue-group.condition-group:first-child {
        border-radius: 10px 10px 0 0;
    }


    #condition-section .condition-groups .blue-group.condition-group:last-child {
        border-radius: 0 0 10px 10px;
    }

    #condition-section .condition-groups .blue-group.condition-group + .blue-group.condition-group {
        position: relative;
    }

        #condition-section .condition-groups .blue-group.condition-group + .blue-group.condition-group::before {
            content: "";
            position: absolute;
            left: 12px;
            right: 12px;
            top: 0;
            height: 1px;
            background: rgba(196,217,255,1);
        }

#condition-section .condition-group + .condition-group {
    border-top: 0;
}

#condition-section .cond-row {
    display: flex;
    align-items: center;
    gap: 12px;
}

#condition-section .cond-title {
    width: 5em;
}

#condition-section .cond-title,
#condition-section .js-select-all {
    white-space: nowrap;
    flex: 0 0 auto;
}

#condition-section .cond-row .check-row {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
}

@media (max-width: 575.98px) {
    /* 1行目：タイトル＋ボタン / 2行目：チェックボックス群 */
    #condition-section .cond-row {
        flex-wrap: wrap;
        align-items: center;
    }

    /* タイトル幅固定をやめて詰める */
    #condition-section .cond-title {
        width: auto;
    }

    /* ボタンを右端へ寄せる */
    #condition-section .js-select-all {
        margin-left: auto;
        min-height: 44px;
        padding: 8px 14px;
        border-radius: 999px;
    }

    /* チェック群は次の行に回す */
    #condition-section .cond-row .check-row {
        flex: 0 0 100%;
        margin-top: 8px;
    }
}

/* 全選択ボタン */
#condition-section .js-select-all {
    color: #2945B7;
    border-color: #2945B7;
    background: #EEF6FF;
    padding: 2px 19px;
    font-size: var(--joy-fs-1);
    touch-action: manipulation;
    -webkit-tap-highlight-color: transparent;
    transition: background-color .12s ease, border-color .12s ease, color .12s ease, transform .06s ease, box-shadow .12s ease;
}

/* hover：hoverできる端末だけ */
@media (hover: hover) and (pointer: fine) {
    #condition-section .js-select-all:hover {
        border-color: #344EBB;
        color: #ffffff;
        background: #344EBB;
    }
}

/* focus：focus-visible だけにリングを出す */
@supports selector(:focus-visible) {
    #condition-section .js-select-all:focus {
        outline: none;
        box-shadow: none;
    }

    #condition-section .js-select-all:focus-visible {
        outline: 3px solid rgba(52, 78, 187, .55);
        outline-offset: 2px;
    }
}

/* focus-visible 非対応ブラウザのフォールバック */
@supports not selector(:focus-visible) {
    #condition-section .js-select-all:focus {
        outline: 3px solid rgba(52, 78, 187, .55);
        outline-offset: 2px;
    }
}

/* pressed：押下中だけ明確に反応（PC/スマホ共通） */
#condition-section .js-select-all:active {
    border-color: #344EBB;
    color: #ffffff;
    background: #344EBB;
    transform: scale(0.98);
}

/* 動きを抑える設定の場合 */
@media (prefers-reduced-motion: reduce) {
    #condition-section .js-select-all {
        transition: none;
    }

        #condition-section .js-select-all:active {
            transform: none;
        }
}

/* 解除モード（全チェック時）：軽い色差 */
#condition-section .js-select-all.is-allselected {
    background: #fff5f6;
    border-color: rgba(220, 53, 69, 0.55);
    color: rgba(200, 35, 51, 0.95);
}

#condition-section .js-select-all .bi {
    vertical-align: -0.125em;
}

/* hover：解除モードだけ赤寄り */
@media (hover: hover) and (pointer: fine) {
    #condition-section .js-select-all.is-allselected:hover {
        background-color: #ffecee;
        border-color: rgba(220, 53, 69, 0.65);
        color: rgba(200, 35, 51, 0.95);
    }
}

/* pressed：解除モードだけ赤寄り */
#condition-section .js-select-all.is-allselected:active {
    background-color: #ffecee;
    border-color: rgba(220, 53, 69, 0.75);
    color: rgba(200, 35, 51, 0.95);
    transform: scale(0.98);
}

body.has-fixed-footer main {
    padding-bottom: 170px;
}

.site-footer {
    position: static;
}

    .site-footer.fixed-footer {
        position: fixed;
        left: 0;
        right: 0;
        bottom: 0;
        z-index: 1030;
        background: transparent;
        padding: 0;
    }

        /* 中身を main-container 幅に合わせる */
        .site-footer.fixed-footer .footer-inner.main-container {
            margin: 0 auto;
            position: relative;
            background: transparent;
            box-shadow: none;
            padding: 22px 0 0 0;
        }

        .site-footer.fixed-footer .bottom-bar {
            width: 100%;
            position: static;
            bottom: auto;
            border-radius: 0;
            padding: 16px 16px;
            gap: 12px;
            flex-wrap: wrap;
            align-items: center;
        }

        .site-footer.fixed-footer .bottom-bar-mobile {
            width: 100%;
            position: static;
            padding: 16px 16px;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #2e2f39;
            color: #fff;
            border-top-left-radius: 10px;
            border-top-right-radius: 10px;
            box-shadow: 0 -10px 20px rgba(0,0,0,.15);
        }

        /* 4つのチップ：同サイズ・大きめ・中央寄せ */
        .site-footer.fixed-footer .bottom-bar .chip {
            width: 130px;
            min-height: 52px;
            padding: 12px 18px;
            font-size: var(--home-fs-bottom-chip);
            border-radius: 4px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            line-height: 1.2;
            white-space: nowrap;
        }

            .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset) {
                cursor: pointer;
                touch-action: manipulation;
                -webkit-tap-highlight-color: transparent;
                transition: transform 0.06s ease, box-shadow 0.15s ease, filter 0.15s ease;
            }

@media (hover: hover) and (pointer: fine) {
    .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):hover {
        filter: brightness(0.97);
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
        transform: translateY(-1px);
    }
}

.site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):active {
    filter: brightness(0.93);
    box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.18);
    transform: translateY(0);
}

@supports selector(:focus-visible) {
    .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):focus {
        outline: none;
    }

    .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):focus-visible {
        outline: 3px solid rgba(52, 78, 187, 0.55);
        outline-offset: 2px;
    }
}

@supports not selector(:focus-visible) {
    .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):focus {
        outline: 3px solid rgba(52, 78, 187, 0.55);
        outline-offset: 2px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset) {
        transition: none;
    }

        .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):hover,
        .site-footer.fixed-footer .bottom-bar .chip:not(.chip-reset):active {
            transform: none;
        }
}

/* 検索ボタン */
.site-footer.fixed-footer .bottom-bar #btnFooter,
.site-footer.fixed-footer .bottom-bar-mobile #btnFooterMobile {
    min-height: 60px;
    padding: 14px 24px;
    font-size: var(--home-fs-bottom-chip);
    border-radius: 4px;
}

.site-footer.fixed-footer .bottom-bar #btnFooter {
    width: 220px;
}

.site-footer.fixed-footer .bottom-bar-mobile #btnFooterMobile {
    width: 100%;
}

/* 検索条件リセットボタン  */
.site-footer.fixed-footer .bottom-bar .chip.chip-reset {
    background: #fff;
    border: 1px solid rgba(220, 53, 69, 0.40);
    color: rgba(220, 53, 69, 0.95);
    font-weight: 600;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease;
    width: 170px;
}

    .site-footer.fixed-footer .bottom-bar .chip.chip-reset:hover,
    .site-footer.fixed-footer .bottom-bar .chip.chip-reset:focus-visible {
        background-color: #fff5f6;
        border-color: rgba(220, 53, 69, 0.55);
        color: rgba(200, 35, 51, 0.95);
        outline: none;
    }

    .site-footer.fixed-footer .bottom-bar .chip.chip-reset:active {
        background-color: #ffecee;
        border-color: rgba(220, 53, 69, 0.60);
    }

.site-footer.fixed-footer .goto-top {
    position: absolute;
    right: 0;
    top: -31px;
    z-index: 2;
    height: 55px;
}

    /* ページトップへ */
    .site-footer.fixed-footer .goto-top .btn {
        border-radius: 4px;
        padding: 12px 16px;
        font-size: var(--home-fs-bottom-chip);
        background: #ffffff;
        color: #344EBB;
        border-color: #344EBB;
    }

    /* ページトップへ：右側の青丸アイコン */
    .site-footer.fixed-footer .goto-top .goto-top-icon {
        width: 28px;
        height: 28px;
        border-radius: 999px;
        background: #344EBB;
        color: #ffffff;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
    }

        .site-footer.fixed-footer .goto-top .goto-top-icon i {
            font-size: var(--joy-fs-1);
            line-height: 1;
        }

@media (max-width: 575.98px) {
    body.has-fixed-footer main {
        padding-bottom: 130px;
    }

    .site-footer.fixed-footer .bottom-bar-mobile {
        padding: 12px 12px 14px;
    }
}

/* ===== CategorySearch  ===== */
.category-search {
    /* 見出し */
    --cs-fs-title: var(--joy-fs-7);
    /* 「全選択」ボタン */
    --cs-fs-selectall: var(--joy-fs-4);
    /* 第1階層  */
    --cs-fs-icon-label: var(--joy-fs-4);
    /* 地域（テキストのみ）・第2/第3階層（チェックラベル） */
    --cs-fs-check-label: var(--joy-fs-4);
    /* 第2階層ブロック見出し */
    --cs-fs-block-head: var(--joy-fs-4);
    /* アイコン内チェックボックス（top-category）*/
    --cs-icon-check-size: var(--joy-fs-3);
}

    .category-search .sec-title {
        font-size: var(--cs-fs-title);
    }

    .category-search .cat-block__head {
        font-size: var(--cs-fs-block-head);
    }

    .category-search .icon-item .txt .txt-label {
        font-size: var(--cs-fs-icon-label);
    }

    .category-search .form-check-label {
        font-size: var(--cs-fs-check-label);
    }

    .category-search .icon-item input.top-category.form-check-input {
        width: var(--cs-icon-check-size);
        height: var(--cs-icon-check-size);
    }

body.page-home {
    /* ノブ：Index の文字サイズをまとめて動かす */
    --home-fs-hero-input: var(--joy-fs-4); /* ヒーロー検索の入力 */
    --home-fs-hero-btn: var(--joy-fs-4); /* ヒーロー検索のボタン */
    --home-fs-sec-title: var(--joy-fs-7); /* 各セクション見出し（sec-title） */
    --home-fs-body: var(--joy-fs-3); /* セクション内の通常文字 */
    --home-fs-control: var(--joy-fs-3); /* input/select 等の操作部品 */
    --home-fs-selectall: var(--joy-fs-3); /* 条件の全選択ボタン */
    --home-fs-bottom-chip: var(--joy-fs-3); /* 下部固定バーのチップ */
    --home-fs-notice-chip: var(--joy-fs-1); /* お知らせラベル */
    --home-fs-notice-text: var(--joy-fs-1); /* お知らせ本文/日付 */
}

    /* ヒーロー検索（入力とボタン） */
    body.page-home .hero-search input[type="text"] {
        font-size: var(--home-fs-hero-input);
    }

    body.page-home .hero-search .btn-search {
        --bs-btn-font-size: var(--home-fs-hero-btn);
        font-size: var(--home-fs-hero-btn);
    }

    /* 提供場所（住所）セクション */
    body.page-home #address-section {
        font-size: var(--home-fs-body);
    }

        body.page-home #address-section .sec-title {
            font-size: var(--home-fs-sec-title);
        }

        body.page-home #address-section .input-group-text,
        body.page-home #address-section input,
        body.page-home #address-section select,
        body.page-home #address-section textarea {
            font-size: var(--home-fs-control);
        }

    /* 条件セクション */
    body.page-home #condition-section {
        font-size: var(--home-fs-body);
    }

        body.page-home #condition-section .sec-title {
            font-size: var(--home-fs-sec-title);
        }

        body.page-home #condition-section .form-check-label {
            font-size: var(--home-fs-body);
        }

        body.page-home #condition-section .js-select-all {
            font-size: var(--home-fs-selectall);
        }

    /* 下部固定バー（チップ） */
    body.page-home .bottom-bar .chip {
        font-size: var(--home-fs-bottom-chip);
    }

    body.page-home .notice-list .notice-date,
    body.page-home .notice-list .notice-msg {
        font-size: var(--home-fs-notice-text);
    }
