/* ===========================
   Shop：コンポーネント / 加盟店一覧 / 加盟店詳細
=========================== */

/* ページ内リンク用スクロール余白 */
#shop {
   scroll-margin-top: calc(var(--header-top) + var(--header-height));
}

/* --------------------------------
   Shop Section（使えるお店）コンポーネント
-------------------------------- */
.shop {
   background: var(--color-white);
   border-radius: 72px 72px 0 0;
   margin-top: -65px;
}

.shop-inner {
   max-width: 1350px;
   margin: 0 auto;
   padding: 0 35px;
}

.shop-header {
   display: flex;
   align-items: center;
   justify-content: space-between;
   gap: 40px;
   padding-top: 120px;
   padding-bottom: 80px;
}

.shop-heading {
   font-size: 48px;
   font-weight: 500;
   color: var(--color-green-dark);
   line-height: 130%;
   flex-shrink: 0;
}

.shop-desc {
   font-size: 18px;
   line-height: 175%;
   color: var(--color-text);
   font-weight: 500;
   max-width: 540px;
}

.shop-desc-accent {
   color: var(--color-green);
}

.shop .town-scroll {
   margin-bottom: 80px;
}

/* カードエリア */
.shop-inner--cards {
   padding-bottom: 100px;
}

.shop-cards {
   display: grid;
   grid-template-columns: repeat(3, 1fr);
   gap: 40px 20px;
}

/* トップ・conceptページの「使えるお店」はPCで3件のみ表示（4件目はSP用） */
@media (min-width: 768px) {
   .shop-cards:not(.shoplist-cards) .shop-card:nth-child(4) {
      display: none;
   }
}

/* カード全体 */
.shop-card {
   display: flex;
   flex-direction: column;
   color: inherit;
   text-decoration: none;
}

.shop-card-img {
   position: relative;
   border-radius: 16px;
   aspect-ratio: 1.5 / 1;
   overflow: hidden;
}

.shop-card-thumbnail {
   position: absolute;
   inset: 0;
   width: 100%;
   height: 100%;
   object-fit: cover;
   display: block;
}

/* カテゴリタグ（左上） */
.shop-card-tags {
   position: absolute;
   top: 10px;
   left: 10px;
   display: flex;
   gap: 8px;
   flex-wrap: wrap;
}

.shop-card-tag {
   font-size: 12px;
   font-weight: 500;
   background: rgb(228 237 235 / 90%);
   border-radius: var(--radius-pill);
   padding: 0 15px;
   color: #545756;
}

/* 詳しく見るボタン（右下） */
.shop-card-detail {
   position: absolute;
   bottom: 8px;
   right: 8px;
   display: inline-flex;
   align-items: center;
   gap: 5px;
   color: var(--color-white);
   font-size: 16px;
   font-weight: 500;
   line-height: 15px;
   text-shadow: 0 1px 4px rgb(0 0 0 / 60%);
}

.shop-card-detail-arrow {
   display: flex;
   align-items: center;
   justify-content: center;
   width: 25px;
   height: 25px;
   border-radius: 50%;
   background: var(--color-white);
   flex-shrink: 0;
   box-shadow: 0 1px 4px rgb(0 0 0 / 30%);
}

.shop-card-detail-arrow img {
   width: 10px;
   height: 10px;
   display: block;
}

/* カード情報エリア */
.shop-card-body {
   padding: 10px 0 23px;
   flex: 1;
}

.shop-card-name {
   font-size: 16px;
   font-weight: 500;
   color: var(--color-text);
}

.shop-card-address {
   display: flex;
   align-items: center;
   gap: 10px;
   font-size: 12px;
   line-height: 175%;
   color: #888888;
   margin-bottom: 16px;
}

.shop-card-address img {
   flex-shrink: 0;
}

.shop-card-features {
   display: flex;
   flex-wrap: wrap;
   gap: 8px;
}

.shop-card-feature {
   font-size: 13px;
   border-radius: 3px;
   padding: 2px 9px;
   border: 1px solid var(--color-border);
   color: var(--color-text);
}

.shop-card-feature--filled {
   background: var(--color-white);
   color: var(--color-text);
   border-color: var(--color-border);
}

.shop-card-feature--special {
   color: var(--color-white);
   font-weight: 700;
   background: linear-gradient(118deg, #7FC591 0%, #6DBDAE 42.66%, #5BB5D5 85.32%);
   border: none;
}

/* もっと見るボタン */
.shop-more-wrap {
   display: flex;
   justify-content: center;
   margin-top: 50px;
}

/* --------------------------------
   Responsive: Shop Mobile (< 768px)
-------------------------------- */
@media (max-width: 767px) {
   .shop {
      border-radius: 36px 36px 0 0;
      margin-top: calc(-65px - 35vh);
   }

   .shop-header {
      flex-direction: column;
      align-items: flex-start;
      gap: 30px;
      padding-top: 50px;
      padding-bottom: 0;
   }

   .shop-heading {
      font-size: 28px;
   }

   .shop-desc {
      font-size: 16px;
   }

   .shop .town-scroll {
      margin: 30px 0;
   }

   .shop-inner--cards {
      padding-bottom: 68px;
   }

   .shop-cards {
      grid-template-columns: repeat(2, 1fr);
      gap: 20px;
      margin-bottom: 30px;
   }

   .shop-card-img {
      border-radius: 8px;
   }

   .shop-card-tags {
      top: 4px;
      left: 5px;
      gap: 5px;
   }

   .shop-card-tag {
      font-size: 10px;
      padding: 0 8px;
   }

   .shop-card-detail {
      display: none;
   }

   .shop-card-body {
      padding: 5px 0;
   }

   .shop-card-name {
      font-size: 14px;
   }

   .shop-card-address {
      gap: 5px;
      margin-bottom: 8px;
   }

   .shop-card-address img {
      width: 12px;
      height: 12px;
   }

   .shop-card-features {
      gap: 4px;
   }

   .shop-card-feature {
      font-size: 10px;
      padding: 0 5px;
   }

   .shop-more-wrap {
      margin-top: 32px;
   }
}

/* --------------------------------
   conceptページ版モディファイア
-------------------------------- */
.shop--concept {
  background: var(--color-bg-green);
  margin-top: 0;
  border-radius: 0;
}

.shop--concept .shop-header {
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 8px;
  padding: 80px 0 8px;
}

.shop--concept .shop-heading {
  color: var(--color-green);
  font-size: 40px;
  font-weight: 700;
}

.shop--concept .shop-desc {
  color: var(--color-green-dark);
  font-size: 16px;
}

.shop--concept .shop-inner--cards {
  padding-bottom: 80px;
}

@media (max-width: 767px) {
  .shop--concept .shop-header {
    padding-top: 50px;
  }

  .shop--concept .shop-heading {
    font-size: 29px;
  }

  .shop--concept .shop-header {
    gap: 22px;
  }

  .shop--concept .shop-inner--cards {
    padding-bottom: 37px;
  }
}

/* ===========================
   Page: 加盟店一覧（/shoplist/）
=========================== */

/* --------------------------------
   Shop Hero
-------------------------------- */
.page-hero--shoplist .page-hero-inner {
   min-height: 450px;
   display: flex;
   align-items: center;
   padding-bottom: 100px;
}

.page-hero--shoplist .page-hero-heading {
   font-size: 40px;
   font-weight: 500;
   margin-bottom: 8px;
}

.page-hero--shoplist .page-hero-desc {
   font-size: 16px;
   font-weight: 400;
   opacity: 0.9;
}

.shoplist-hero-btn {
   margin-top: 32px;
   width: 100%;
   max-width: 480px;
   font-size: 18px;
}

@media (max-width: 767px) {
   .page-hero--shoplist .page-hero-inner {
         min-height: 292px;
         padding-top: 0;
         padding-bottom: 65px;
      }

   .page-hero--shoplist .page-hero-heading {
      font-size: 28px;
   }

   .page-hero--shoplist .page-hero-desc {
      font-size: 14px;
   }

   .shoplist-hero-btn {
      margin-top: 20px;
      max-width: 95%;
      font-size: 14px;
   }
}

/* --------------------------------
   Page Body
-------------------------------- */
.shoplist-body {
   padding-bottom: 84px;
}

@media (max-width: 767px) {
   .shoplist-body {
      padding-bottom: 50px;
   }
}

/* --------------------------------
   Search Filter
-------------------------------- */
.shoplist-search-wrap {
   max-width: 1440px;
   margin: 0 auto;
   padding: 0 80px;
}

.shoplist-search {
   background: var(--color-bg-green);
   border-radius: 16px;
   margin-bottom: 37px;
   padding: 24px 38px 30px;
}

.shoplist-search-inner {
   display: flex;
   align-items: flex-end;
   gap: 12px;
}

.shoplist-search-fields {
   display: flex;
   gap: 12px;
   flex: 1;
   flex-wrap: wrap;
}

.shoplist-search-field {
   flex: 0 1 260px;
}

.shoplist-search-field--text {
   flex-basis: 280px;
}

.shoplist-search-label {
   display: block;
   font-size: 16px;
   line-height: 175%;
   margin-bottom: 4px;
}

.shoplist-search-select {
   display: flex;
   align-items: center;
   background: var(--color-white);
   border: 1px solid var(--color-border);
   border-radius: 8px;
   padding: 11px 16px;
   cursor: pointer;
   user-select: none;
   gap: 8px;
}

.shoplist-search-placeholder {
   font-size: 14px;
   color: #aaa;
}

.shoplist-search-select--has-value {
   gap: 8px;
}

.shoplist-search-value {
   font-size: 16px;
   color: var(--color-text);
   font-weight: 500;
   white-space: nowrap;
}

.shoplist-search-badge {
   display: inline-flex;
   align-items: center;
   background: var(--color-background);
   color: var(--color-text-muted);
   font-size: 11px;
   font-weight: 500;
   padding: 2px 8px;
   border-radius: 20px;
   white-space: nowrap;
   flex-shrink: 0;
}

.shoplist-search-arrow {
   margin-left: auto;
   display: inline-block;
   width: 10px;
   height: 5px;
   background: url('/wp-content/themes/picoca/img/icons/arrow_select.svg') no-repeat center / contain;
   flex-shrink: 0;
}

.shoplist-search-input {
   width: 100%;
   background: var(--color-white);
   border: 1px solid var(--color-border);
   border-radius: 8px;
   padding: 14px 16px;
   font-size: 14px;
   color: var(--color-text);
   font-family: inherit;
   cursor: text;
   outline: none;
   transition: border-color 0.2s;
}

.shoplist-search-input:focus {
   border-color: var(--color-green);
}

.shoplist-search-input::placeholder {
   color: #aaa;
}

.shoplist-search-btn {
   flex: none;
   width: 94px;
   display: inline-flex;
   align-items: center;
   justify-content: center;
   gap: 8px;
   background: var(--color-text);
   color: var(--color-white);
   border: none;
   border-radius: 8px;
   padding: 12px 0;
   font-size: 15px;
   font-weight: 700;
   font-family: inherit;
   cursor: pointer;
   transition: opacity 0.2s;
}

.shoplist-search-btn:hover {
   opacity: 0.8;
}

/* ドロップダウンパネル */
.shoplist-search-field {
   position: relative;
}

.shoplist-search-panel {
   display: none;
   position: absolute;
   top: calc(100% + 4px);
   left: 0;
   min-width: 200px;
   background: var(--color-white);
   border: 1px solid var(--color-border);
   border-radius: 8px;
   padding: 8px;
   z-index: 100;
   box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}

.shoplist-search-panel.is-open {
   display: block;
}

.shoplist-search-option {
   display: flex;
   align-items: center;
   gap: 8px;
   padding: 8px 10px;
   border-radius: 6px;
   cursor: pointer;
   font-size: 14px;
   color: var(--color-text);
   transition: background 0.15s;
}

.shoplist-search-option:hover {
   background: var(--color-bg-green);
}

.shoplist-search-clear {
   width: 100%;
   border: none;
   background: none;
   text-align: left;
   font-family: inherit;
}

.shoplist-search-clear .js-clear-indicator {
   width: 16px;
   height: 16px;
   accent-color: var(--color-green);
   flex-shrink: 0;
   pointer-events: none;
}

.shoplist-search-option input[type="checkbox"] {
   width: 16px;
   height: 16px;
   accent-color: var(--color-green);
   flex-shrink: 0;
   cursor: pointer;
}

/* トリガーのopen状態 */
.js-search-trigger.is-open {
   border-color: var(--color-green);
}


@media (max-width: 1100px) {
   .shoplist-search-wrap {
      padding: 0 35px;
   }

   .shoplist-search {
      margin-bottom: 48px;
   }
}

@media (max-width: 768px) {
   .shoplist-search-wrap {
      padding: 0 20px;
   }

   .shoplist-search {
      margin-top: 50px;
      margin-bottom: 25px;
      padding: 34px 20px;
      border-radius: 8px;
   }

   .shoplist-search-inner {
      flex-direction: column;
      align-items: stretch;
      gap: 15px;
   }

   .shoplist-search-fields {
      flex-direction: column;
      gap: 15px;
   }

   .shoplist-search-field {
      flex: none;
      max-width: none;
      width: 100%;
   }

   .shoplist-search-btn {
      width: 220px;
      justify-content: center;
      padding: 12px;
      margin: 0 auto;
   }
}

/* --------------------------------
   Inner Area（件数 + カード）
-------------------------------- */
.shoplist-inner {
   max-width: 1440px;
   margin: 0 auto;
   padding: 0 80px;
}

@media (max-width: 1100px) {
   .shoplist-inner {
      padding: 0 35px;
   }
}

@media (max-width: 767px) {
   .shoplist-inner {
      padding: 0 20px;
   }
}

/* --------------------------------
   ページネーション
-------------------------------- */
.shoplist-pagination {
   display: flex;
   justify-content: center;
}

.shoplist-pagination .page-numbers {
   display: flex;
   align-items: center;
   gap: 8px;
   list-style: none;
   padding: 0;
   margin: 0;
}

.shoplist-pagination .page-numbers li a,
.shoplist-pagination .page-numbers li span {
   display: flex;
   align-items: center;
   justify-content: center;
   width: 40px;
   height: 40px;
   border-radius: 50%;
   font-size: 14px;
   font-weight: 500;
   color: var(--color-text);
   text-decoration: none;
   border: 1px solid var(--color-border);
   transition: background 0.2s, color 0.2s;
}

.shoplist-pagination .page-numbers li .current {
   background: var(--color-text);
   color: var(--color-white);
   border-color: var(--color-text);
}

.shoplist-pagination .page-numbers li a:hover {
   background: var(--color-bg-green);
}

.shoplist-pagination .page-numbers li .prev,
.shoplist-pagination .page-numbers li .next {
   font-size: 18px;
   border: none;
}

/* --------------------------------
   Empty State
-------------------------------- */
.shoplist-empty {
   text-align: center;
   color: var(--color-gray);
   padding: 60px 0;
}

/* ===========================
   Page: 加盟店 詳細（/shoplist/{slug}/）
=========================== */

/* --------------------------------
   ヒーローセクション
-------------------------------- */
.page-hero--shoplist-single .shoplist-single-hero-inner {
   min-height: 380px;
   display: flex;
   align-items: center;
   padding-bottom: 100px;
}

.shoplist-single-hero-content {
   display: flex;
   flex-direction: column;
   gap: 20px;
}

.shoplist-single-hero-title {
   font-size: 48px;
   font-weight: 500;
   color: var(--color-white);
   line-height: 130%;
}

.shoplist-single-hero-address {
   display: flex;
   align-items: center;
   gap: 10px;
   font-size: 16px;
   color: var(--color-white);
   line-height: 175%;
}

.shoplist-single-hero-meta {
   display: flex;
   align-items: center;
   gap: 8px;
   flex-wrap: wrap;
   margin-top: -4px;
}

.shoplist-single-hero-tags {
   display: flex;
   gap: 8px;
   flex-wrap: wrap;
}

.shoplist-single-hero-tag {
   font-size: 12px;
   font-weight: 500;
   background: rgba(228, 237, 235, 0.50);
   border-radius: var(--radius-pill);
   padding: 0 15px;
   color: #545756;
}

.shoplist-single-hero-website {
   display: inline-flex;
   align-items: flex-start;
   gap: 4px;
   font-size: 16px;
   font-weight: 700;
   color: var(--color-white);
   line-height: 1;
}

/* ヒーロー上での通常バッジ：白ボーダー・白テキスト */
.shoplist-single-hero-features .shop-card-feature--hero {
   color: var(--color-text);
   border-color: var(--color-border);
   background: var(--color-white);
}

@media (max-width: 767px) {
   .page-hero--shoplist-single .shoplist-single-hero-inner {
      min-height: 285px;
   }

   .shoplist-single-hero-title {
      font-size: 29px;
      margin-bottom: 18px;
   }

   .shoplist-single-hero-features {
      display: none;
   }

   .shoplist-single-hero-content {
      gap: 12px;
   }
}

/* --------------------------------
   詳細ボディ
-------------------------------- */
.shop-detail-body {
   background: var(--color-white);
   border-radius: 72px 72px 72px 72px;
   margin-top: -100px;
   position: relative;
   z-index: 1;
   padding-bottom: 120px;
}

.shop-detail-inner {
   max-width: 1440px;
   margin: 0 auto;
   padding: 0 80px;
}

/* --------------------------------
   セクション見出し
-------------------------------- */
.shop-detail-section-title {
   font-size: 20px;
   font-weight: 500;
   color: var(--color-green-dark);
   margin-bottom: 50px;
   padding-bottom: 0;
}

/* --------------------------------
   上段：画像 ＋ 店舗情報
-------------------------------- */
.shop-detail-top {
   display: grid;
   grid-template-columns: 535px 1fr;
   gap: 115px;
   align-items: flex-start;
   margin-bottom: 0;
}

.shop-detail-thumbnail {
   width: 100%;
   aspect-ratio: 4 / 3;
   object-fit: cover;
   border-radius: 12px;
}

/* --------------------------------
   店舗情報テーブル
-------------------------------- */
.shop-detail-table {
   width: 100%;
   border-collapse: collapse;
}

.shop-detail-table tr {
   display: grid;
   grid-template-columns: 120px 1fr;
   padding-bottom: 18px;
}

.shop-detail-table tr:last-child {
   padding-bottom: 0;
}

.shop-detail-table th,
.shop-detail-table td {
   font-size: 16px;
   text-align: left;
   align-self: stretch;
}

.shop-detail-table th {
   padding: 0 0 18px;
   font-weight: 500;
   white-space: nowrap;
   border-bottom: 1px solid #BBC7C4;
}

.shop-detail-table td {
   padding: 0 0 18px 10px;
   border-bottom: 1px solid #F2F2F2;
}

.shop-detail-url {
   color: var(--color-green);
   text-decoration: underline;
   word-break: break-all;
}

.shop-detail-url:hover {
   opacity: 0.7;
}

/* --------------------------------
   アクセス・地図
-------------------------------- */
.shop-detail-access {
   margin-top: 80px;
}

.shop-detail-access-info {
   display: flex;
   align-items: center;
   gap: 24px;
   margin-bottom: 50px;
}

.shop-detail-access-address {
   font-size: 16px;
}

.shop-detail-map-link {
   display: inline-flex;
   align-items: center;
   gap: 6px;
   font-size: 14px;
   color: var(--color-green);
   white-space: nowrap;
   flex-shrink: 0;
   text-decoration: underline;
}

.shop-detail-map-link:hover {
   opacity: 0.7;
}

.shop-detail-map iframe {
   width: 100%;
   height: 455px;
   display: block;
}

/* --------------------------------
   前後店舗ナビ
-------------------------------- */
.shoplist-post-nav {
   display: flex;
   align-items: center;
   justify-content: space-between;
   padding: 280px 0 0;
   gap: 16px;
   max-width: 1064px;
   margin: 0 auto;
}

.shoplist-post-nav__prev,
.shoplist-post-nav__center,
.shoplist-post-nav__next {
   flex: 1;
   display: flex;
}

.shoplist-post-nav .btn-link-arrow {
   gap: 6px;
   font-weight: 400;
   padding: 0 28px;
}

.shoplist-post-nav .btn-link-arrow--center {
   justify-content: center;
   padding: 0 28px;
   font-weight: 500;
}

/* --------------------------------
   Responsive
-------------------------------- */
@media (max-width: 1100px) {
   .shop-detail-inner {
      padding: 0 35px;
   }

   .shop-detail-top {
      grid-template-columns: 1fr 1fr;
      gap: 40px;
   }
}

@media (max-width: 820px) {
   .shoplist-post-nav {
      flex-wrap: wrap;
      gap: 15px;
      padding: 80px 0 0;
   }

   .shoplist-post-nav__prev,
   .shoplist-post-nav__next {
      flex: 0 0 calc(50% - 8px);
      width: calc(50% - 8px);
      order: 1;
      justify-content: flex-start;
   }

   .shoplist-post-nav__next {
      order: 2;
      justify-content: flex-start;
   }

   .shoplist-post-nav__center {
      flex: 0 0 100%;
      width: 100%;
      order: 3;
      justify-content: flex-start;
   }

   .shoplist-post-nav .btn-link-arrow {
      width: 100%;
      height: auto;
      min-height: 60px;
      margin: 0;
      min-width: 0;
      padding: 12px 20px;
   }

   .shoplist-post-nav .btn-link-arrow span {
      display: -webkit-box;
      -webkit-line-clamp: 2;
      line-clamp: 2;
      -webkit-box-orient: vertical;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: normal;
      min-width: 0;
      line-height: 1.3;
   }

   .shop-detail-body {
      border-radius: 36px 36px 36px 36px;
      margin-top: -65px;
      padding-bottom: 80px;
   }

   .shop-detail-inner {
      padding: 50px 15px 0;
   }

   .shop-detail-top {
      grid-template-columns: 1fr;
      gap: 40px;
   }

   .shop-detail-section-title {
      font-size: 18px;
      margin-bottom: 30px;
   }

   .shop-detail-table th {
      padding-bottom: 15px;
   }

   .shop-detail-table td {
      padding-bottom: 15px;
   }

   .shop-detail-access {
      margin-top: 50px;
   }

   .shop-detail-access-info {
      flex-direction: column;
      align-items: flex-start;
      gap: 0;
      margin-bottom: 30px;
   }

   .shop-detail-map iframe {
      height: 276px;
   }
}
