/*
Theme Name: GolfTown
Theme URI: https://example.com
Author: 골프타운
Description: 김캐디 스타일 골프 매장 디렉토리 테마 (골프타운). ACF 필드(golf_*) 기반, 시멘틱 마크업 + JSON-LD 스키마 내장.
Version: 1.2.0
Requires PHP: 7.4
Text Domain: golftown
*/

:root{
  --gp-green:#054D32;
  --gp-green-dark:#043D28;
  --gp-green-deep:#032A1C;
  --gp-mint:#E7F3EC;
  --gp-mint-mid:#A8D8BC;
  --gp-amber:#A87E1E;
  --gp-amber-bg:#F8EFD8;
  --gp-gold:#D9A93A;
  --gp-ink:#1A1D1C;
  --gp-gray:#5F6663;
  --gp-gray-light:#9AA19E;
  --gp-line:#E7EAE8;
  --gp-divider:#F1F4F2;
  --gp-bg:#F7F9F8;
  --gp-white:#FFFFFF;
  --gp-radius:10px;
}

*{margin:0;padding:0;box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  font-family:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,system-ui,'Segoe UI','Apple SD Gothic Neo','Noto Sans KR',sans-serif;
  color:var(--gp-ink);
  background:var(--gp-bg);
  line-height:1.6;
  font-size:16px;
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;height:auto;display:block;}
ul{list-style:none;}
button{font-family:inherit;cursor:pointer;}

.gp-container{max-width:720px;margin:0 auto;padding:0 16px;}
.gp-wide{max-width:1080px;}
.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}

/* ---------- 헤더 ---------- */
.gp-header{background:var(--gp-white);border-bottom:1px solid var(--gp-line);position:sticky;top:0;z-index:100;}
.gp-header-inner{display:flex;align-items:center;justify-content:space-between;height:60px;max-width:1080px;margin:0 auto;padding:0 16px;}
.gp-logo{display:flex;align-items:center;gap:9px;}
.gp-logo img,.gp-logo svg{height:32px;width:auto;border-radius:8px;}
.gp-logo-text{font-size:19px;font-weight:800;letter-spacing:-0.03em;color:var(--gp-ink);}
.gp-logo-text b{color:var(--gp-gold);font-weight:800;}
.gp-nav{display:flex;gap:4px;}
.gp-nav a{font-size:14px;font-weight:500;color:var(--gp-gray);padding:8px 12px;border-radius:8px;}
.gp-nav a:hover{background:var(--gp-bg);color:var(--gp-green);}
.gp-search-toggle{display:flex;align-items:center;gap:6px;background:var(--gp-bg);border:1px solid var(--gp-line);border-radius:999px;padding:7px 14px;font-size:13px;color:var(--gp-gray-light);}
@media(max-width:640px){
  .gp-nav{display:none;}
  .gp-search-toggle span{display:none;}
  .gp-search-toggle{padding:8px;}
}

/* ---------- 히어로 (메인) ---------- */
.gp-hero{background:var(--gp-green);color:#fff;padding:44px 0 52px;}
.gp-hero h1{font-size:26px;font-weight:700;letter-spacing:-0.02em;line-height:1.35;}
.gp-hero p{margin-top:8px;font-size:14px;color:var(--gp-mint);}
.gp-hero-search{margin-top:20px;}
.gp-hero-search form{display:flex;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 4px 16px rgba(3,42,28,.3);}
.gp-hero-search input[type=search]{flex:1;border:0;padding:15px 18px;font-size:15px;outline:0;font-family:inherit;min-width:0;}
.gp-hero-search button{border:0;background:var(--gp-green-dark);color:#fff;padding:0 22px;font-size:15px;font-weight:600;}
@media(min-width:768px){.gp-hero h1{font-size:32px;}}

/* ---------- 칩/뱃지 ---------- */
.gp-chips{display:flex;gap:8px;flex-wrap:wrap;}
.gp-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--gp-line);background:var(--gp-white);color:var(--gp-gray);font-size:13px;font-weight:500;padding:7px 15px;border-radius:999px;white-space:nowrap;}
.gp-chip:hover{border-color:var(--gp-green);color:var(--gp-green);}
.gp-chip.is-active{background:var(--gp-green);border-color:var(--gp-green);color:#fff;}
.gp-badge{display:inline-block;font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--gp-mint);color:var(--gp-green-dark);}
.gp-badge.alt{background:var(--gp-amber-bg);color:#8A6516;}
.gp-badge.plain{background:var(--gp-bg);color:var(--gp-gray);font-weight:500;}

/* ---------- 섹션 (메인 페이지) ---------- */
.gp-section{padding:32px 0;}
.gp-section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px;}
.gp-section-head h2{font-size:19px;font-weight:700;letter-spacing:-0.01em;}
.gp-section-head a{font-size:13px;color:var(--gp-gray);}

/* ---------- 매장 카드 (목록) ---------- */
.gp-list{background:var(--gp-white);border:1px solid var(--gp-line);border-radius:14px;overflow:hidden;}
.gp-card{display:flex;gap:14px;padding:16px;border-bottom:1px solid var(--gp-line);transition:background .15s;}
.gp-card:last-child{border-bottom:0;}
.gp-card:hover{background:var(--gp-bg);}
.gp-card-thumb{width:96px;height:96px;border-radius:10px;overflow:hidden;flex-shrink:0;background:var(--gp-mint);position:relative;}
.gp-card-thumb img{width:100%;height:100%;object-fit:cover;}
.gp-card-thumb .noimg{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--gp-mint-mid);}
.gp-card-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;}
.gp-card-badges{display:flex;gap:4px;margin-bottom:5px;flex-wrap:wrap;}
.gp-card-title{font-size:16px;font-weight:600;letter-spacing:-0.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gp-card-meta{font-size:12.5px;color:var(--gp-gray);margin-top:3px;}
.gp-card-meta .star{color:var(--gp-amber);font-weight:600;}
.gp-card-tags{font-size:12px;color:var(--gp-gray-light);margin-top:7px;}
@media(min-width:768px){
  .gp-card{padding:18px 20px;}
  .gp-card-thumb{width:120px;height:104px;}
}

/* ---------- 카드 그리드 (메인 하단) ---------- */
.gp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
@media(min-width:768px){.gp-grid{grid-template-columns:repeat(3,1fr);}}
.gp-gcard{background:var(--gp-white);border:1px solid var(--gp-line);border-radius:12px;overflow:hidden;}
.gp-gcard-thumb{aspect-ratio:4/3;background:var(--gp-mint);overflow:hidden;}
.gp-gcard-thumb img{width:100%;height:100%;object-fit:cover;}
.gp-gcard-body{padding:12px 14px 14px;}
.gp-gcard-title{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gp-gcard-meta{font-size:12px;color:var(--gp-gray);margin-top:3px;}

/* ---------- 목록 상단 바 ---------- */
.gp-listbar{display:flex;justify-content:space-between;align-items:center;margin:14px 0 12px;font-size:13px;color:var(--gp-gray);}
.gp-listbar strong{color:var(--gp-green);font-weight:700;}
.gp-archive-title{margin-top:26px;font-size:22px;font-weight:700;letter-spacing:-0.02em;}
.gp-archive-desc{font-size:14px;color:var(--gp-gray);margin-top:4px;}
.gp-filter-scroll{display:flex;gap:8px;overflow-x:auto;padding:16px 0 2px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.gp-filter-scroll::-webkit-scrollbar{display:none;}

/* ---------- 광고 ---------- */

/* =====================================================
   상세 페이지 v2 — 김캐디 스타일 (섹션 분리형 + PC 사이드 패널)
   ===================================================== */
.gp-detail-wrap{background:var(--gp-white);}
.gp-breadcrumb{max-width:1080px;margin:0 auto;padding:12px 16px 0;font-size:12.5px;color:var(--gp-gray-light);}
.gp-breadcrumb ol{display:flex;flex-wrap:wrap;gap:4px;list-style:none;}
.gp-breadcrumb li:not(:last-child)::after{content:"›";margin-left:4px;color:var(--gp-line);}
.gp-breadcrumb a:hover{color:var(--gp-green);}
.gp-breadcrumb [aria-current]{color:var(--gp-gray);}

.gp-detail{max-width:1080px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr);}
.gp-detail > article{min-width:0;}
@media(min-width:960px){
  .gp-detail{grid-template-columns:minmax(0,1fr) 340px;gap:32px;padding:0 16px;align-items:start;}
}

/* 갤러리 : 큰 사진 1 + 작은 사진 4 (김캐디식) */
.gp-gallery{display:grid;grid-template-columns:2fr 1fr;gap:2px;height:240px;background:var(--gp-mint);overflow:hidden;}
.gp-gallery a{display:block;overflow:hidden;position:relative;}
.gp-gallery img{width:100%;height:100%;object-fit:cover;}
.gp-gallery-side{display:grid;grid-template-rows:1fr 1fr;gap:2px;}
.gp-gallery-more{position:absolute;inset:0;background:rgba(3,42,28,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;}
.gp-gallery.single{grid-template-columns:1fr;}
@media(min-width:960px){
  .gp-gallery{height:340px;border-radius:0 0 14px 14px;grid-template-columns:2fr 1fr 1fr;}
  .gp-gallery-side{grid-template-rows:1fr 1fr;}
}

/* 매장 헤더 */
.gp-shop-head{padding:18px 16px 16px;}
.gp-shop-head .gp-chips{gap:5px;}
.gp-shop-title{font-size:23px;font-weight:800;letter-spacing:-0.02em;margin-top:9px;line-height:1.3;}
.gp-shop-sub{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:13.5px;color:var(--gp-gray);margin-top:7px;}
.gp-shop-sub .star{color:var(--gp-amber);font-weight:700;display:inline-flex;align-items:center;gap:3px;}
.gp-shop-sub .star svg{color:var(--gp-gold);}
.gp-shop-addr{font-size:13.5px;color:var(--gp-gray);margin-top:6px;font-style:normal;display:flex;align-items:center;gap:5px;}
.gp-shop-addr svg{color:var(--gp-gray-light);flex-shrink:0;}

/* 고정 탭 내비 */
.gp-tabs{position:sticky;top:60px;z-index:90;background:var(--gp-white);border-top:1px solid var(--gp-line);border-bottom:1px solid var(--gp-line);display:flex;overflow-x:auto;scrollbar-width:none;}
.gp-tabs::-webkit-scrollbar{display:none;}
.gp-tabs a{flex-shrink:0;padding:13px 18px;font-size:14.5px;font-weight:600;color:var(--gp-gray-light);border-bottom:2px solid transparent;margin-bottom:-1px;}
.gp-tabs a:hover{color:var(--gp-green);}
.gp-tabs a.is-active{color:var(--gp-green);border-bottom-color:var(--gp-green);}

/* 섹션 (굵은 회색 띠로 분리 — 앱 스타일) */
.gp-sect{padding:24px 16px;border-top:8px solid var(--gp-divider);}
.gp-sect:first-of-type{border-top:0;}
.gp-sect > h2{font-size:17px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:7px;}
.gp-sect > h2 svg{color:var(--gp-green);}
@media(min-width:960px){
  .gp-sect{border-top-width:1px;padding:26px 0;}
  .gp-shop-head{padding-left:0;padding-right:0;}
  .gp-tabs{top:60px;}
}

/* 핵심 정보 행 (김캐디식 세로 나열) */
.gp-inforows{display:flex;flex-direction:column;gap:2px;}
.gp-inforow{display:flex;gap:12px;padding:10px 0;align-items:flex-start;}
.gp-inforow svg{color:var(--gp-green);flex-shrink:0;margin-top:2px;}
.gp-inforow .k{font-size:13px;color:var(--gp-gray-light);width:64px;flex-shrink:0;padding-top:1px;}
.gp-inforow .v{font-size:14.5px;color:var(--gp-ink);line-height:1.55;}
.gp-inforow .v a{color:var(--gp-green);font-weight:600;}
.gp-inforow .v small{display:block;color:var(--gp-gray-light);font-size:12.5px;}

/* 영업시간 표 */
.gp-hours{border:1px solid var(--gp-line);border-radius:10px;overflow:hidden;}
.gp-hours-row{display:flex;justify-content:space-between;gap:12px;padding:10px 14px;font-size:14px;border-bottom:1px solid var(--gp-line);}
.gp-hours-row:last-child{border-bottom:0;}
.gp-hours-row:nth-child(odd){background:var(--gp-bg);}
.gp-hours-row .k{color:var(--gp-gray);}
.gp-hours-row .v{font-weight:500;}

/* 시설/서비스 */
.gp-services{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.gp-service{background:var(--gp-bg);border-radius:10px;padding:13px 4px;text-align:center;}
.gp-service svg{color:var(--gp-gray);margin:0 auto;}
.gp-service p{font-size:11.5px;color:var(--gp-gray);margin-top:5px;word-break:keep-all;}
@media(min-width:768px){.gp-services{grid-template-columns:repeat(6,1fr);}}

/* 지도 */
.gp-map{border:1px solid var(--gp-line);border-radius:10px;overflow:hidden;}
#gp-kakao-map{width:100%;height:280px;}
.gp-map-fallback{height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--gp-gray-light);font-size:13px;background:var(--gp-bg);}
.gp-map-addr{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:13.5px;color:var(--gp-gray);margin-top:10px;}
.gp-map-addr a{color:var(--gp-green);font-weight:600;font-size:13px;white-space:nowrap;}

/* 본문 */
.gp-content{font-size:15px;color:#333;line-height:1.85;}
.gp-content p{margin-bottom:1em;}
.gp-content h2,.gp-content h3{margin:1.2em 0 .5em;font-weight:700;}

/* 버튼 */
.gp-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;border-radius:10px;padding:14px;font-size:15px;font-weight:600;border:1px solid transparent;}
.gp-btn-primary{background:var(--gp-green);color:#fff;}
.gp-btn-primary:hover{background:var(--gp-green-dark);}
.gp-btn-outline{background:#fff;border-color:var(--gp-line);color:var(--gp-ink);}
.gp-btn-outline:hover{border-color:var(--gp-green);color:var(--gp-green);}

/* PC 사이드 문의 패널 (김캐디 예약 패널 위치) */
.gp-side{display:none;}
@media(min-width:960px){
  .gp-side{display:block;position:sticky;top:84px;margin-top:24px;}
  .gp-side-card{border:1px solid var(--gp-line);border-radius:14px;padding:20px;background:#fff;box-shadow:0 2px 12px rgba(3,42,28,.05);}
  .gp-side-card .name{font-size:16px;font-weight:700;}
  .gp-side-card .meta{font-size:12.5px;color:var(--gp-gray);margin-top:3px;}
  .gp-side-card .rows{margin:14px 0;border-top:1px solid var(--gp-line);padding-top:12px;display:flex;flex-direction:column;gap:8px;font-size:13px;color:var(--gp-gray);}
  .gp-side-card .rows b{color:var(--gp-ink);font-weight:600;}
  .gp-side-card .gp-btn{width:100%;margin-top:8px;}
}

/* 주변 매장 */
.gp-related-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;}
@media(min-width:768px){.gp-related-grid{grid-template-columns:repeat(4,1fr);}}
.gp-rcard{border:1px solid var(--gp-line);border-radius:10px;overflow:hidden;}
.gp-rcard-thumb{aspect-ratio:16/10;background:var(--gp-mint);overflow:hidden;}
.gp-rcard-thumb img{width:100%;height:100%;object-fit:cover;}
.gp-rcard-body{padding:9px 11px 11px;}
.gp-rcard-title{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gp-rcard-meta{font-size:11.5px;color:var(--gp-gray-light);margin-top:2px;}

/* 모바일 하단 고정 CTA */
.gp-sticky-cta{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--gp-line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));display:flex;gap:8px;z-index:200;}
.gp-sticky-cta .gp-btn{padding:12px;}
@media(min-width:960px){.gp-sticky-cta{display:none;}}
body.single .gp-footer{padding-bottom:80px;}
@media(min-width:960px){body.single .gp-footer{padding-bottom:0;}}

/* ---------- 페이지네이션 ---------- */
.gp-pagination{display:flex;justify-content:center;gap:6px;margin:26px 0;}
.gp-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 8px;border:1px solid var(--gp-line);border-radius:8px;background:#fff;font-size:14px;color:var(--gp-gray);}
.gp-pagination .page-numbers.current{background:var(--gp-green);border-color:var(--gp-green);color:#fff;font-weight:600;}

/* ---------- 푸터 ---------- */
.gp-footer{background:var(--gp-white);border-top:1px solid var(--gp-line);margin-top:44px;padding:28px 0;}
body.single .gp-footer{margin-top:0;}
.gp-footer-inner{max-width:1080px;margin:0 auto;padding:0 16px;}
.gp-footer-menu{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--gp-gray);margin-bottom:12px;}
.gp-footer-copy{font-size:12px;color:var(--gp-gray-light);line-height:1.7;}

/* ---------- 검색결과 없음 ---------- */
.gp-empty{background:#fff;border:1px solid var(--gp-line);border-radius:14px;padding:48px 20px;text-align:center;color:var(--gp-gray);}
.gp-empty strong{display:block;font-size:16px;color:var(--gp-ink);margin-bottom:6px;}

/* ---------- 지역 그리드 (메인) ---------- */
.gp-region-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
@media(min-width:600px){.gp-region-grid{grid-template-columns:repeat(6,1fr);}}
.gp-region{background:var(--gp-white);border:1px solid var(--gp-line);border-radius:12px;padding:14px 6px;text-align:center;transition:border-color .15s, box-shadow .15s;}
.gp-region:hover{border-color:var(--gp-green);box-shadow:0 2px 10px rgba(3,42,28,.07);}
.gp-region .name{display:block;font-size:14.5px;font-weight:700;color:var(--gp-ink);}
.gp-region .cnt{display:block;font-size:11.5px;color:var(--gp-gray-light);margin-top:2px;}
.gp-region:hover .name{color:var(--gp-green);}

/* ---------- 팝업 (검색 · 전화 문의) ---------- */
.gp-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;}
.gp-modal[hidden]{display:none;}
.gp-modal-overlay{position:absolute;inset:0;background:rgba(3,42,28,.55);}
.gp-modal-box{position:relative;background:#fff;border-radius:16px;padding:26px 22px 20px;width:100%;max-width:360px;text-align:center;box-shadow:0 10px 40px rgba(0,0,0,.2);}
.gp-modal-title{font-size:16px;font-weight:700;margin-bottom:6px;word-break:keep-all;}
.gp-modal-number{font-size:22px;font-weight:800;color:var(--gp-green);letter-spacing:0.02em;margin-bottom:16px;}
.gp-modal-box .gp-btn{width:100%;}
.gp-modal-close{display:block;width:100%;margin-top:10px;background:none;border:0;font-size:13px;color:var(--gp-gray-light);padding:8px;}
.gp-modal-close:hover{color:var(--gp-gray);}
.gp-modal-search{display:flex;flex-direction:column;gap:10px;margin-bottom:4px;}
.gp-modal-search input[type=search]{width:100%;border:1px solid var(--gp-line);border-radius:10px;padding:13px 14px;font-size:15px;font-family:inherit;outline:0;}
.gp-modal-search input[type=search]:focus{border-color:var(--gp-green);}
.gp-search-toggle{border:1px solid var(--gp-line);background:var(--gp-bg);}

/* 전화번호 텍스트형 버튼 */
.gp-linklike{background:none;border:0;padding:0;font-size:inherit;font-family:inherit;color:var(--gp-green);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}

/* ---------- 애드센스 슬롯 ---------- */
.gp-adslot{max-width:1080px;margin:0 auto;padding:10px 16px 0;text-align:center;}
.gp-adslot-top{padding-top:14px;}
.gp-detail .gp-adslot{max-width:none;padding:14px 16px 0;}
@media(min-width:960px){.gp-detail .gp-adslot{padding:14px 0 0;}}

/* ---------- 갤러리 반응형 보정 ---------- */
/* 모바일(2열 그리드)에서는 두 번째 작은 사진 열 숨김 */
.gp-gallery .gp-gallery-side + .gp-gallery-side{display:none;}
.gp-gallery-more.gp-more-desktop{display:none;}
@media(min-width:960px){
  .gp-gallery .gp-gallery-side + .gp-gallery-side{display:grid;}
  .gp-gallery-more.gp-more-mobile{display:none;}
  .gp-gallery-more.gp-more-desktop{display:flex;}
}

/* ---------- 모바일 가로 오버플로우 방지 ---------- */
/* 애드센스 full-width 반응형 광고가 화면 폭을 넘겨 가로 스크롤이 생기는 것 차단 */
html,body{overflow-x:hidden;max-width:100%;}
.gp-adslot{min-width:0;}
.gp-adslot ins.adsbygoogle{max-width:100%;}
