:root{
  --jptg-blue:#234f7f;
  --jptg-blue-2:#0d7db8;
  --jptg-gold:#d6ac50;
  --jptg-ink:#253344;
  --jptg-muted:#657285;
  --jptg-bg:#f5f8fb;
  --jptg-card:#ffffff;
  --jptg-border:#dfe8f1;
  --jptg-shadow:0 14px 40px rgba(24,46,78,.08);
}
.jptg-wrap{max-width:1180px;margin:0 auto;color:var(--jptg-ink);font:400 16px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
.jptg-wrap *{box-sizing:border-box}
.jptg-hero{display:grid;grid-template-columns:1.2fr .8fr;gap:24px;padding:44px;border-radius:28px;background:linear-gradient(135deg,#f8fbff,#edf5fb);border:1px solid var(--jptg-border);box-shadow:var(--jptg-shadow);overflow:hidden;position:relative}
.jptg-hero:before{content:"";position:absolute;inset:auto -80px -80px auto;width:260px;height:260px;background:radial-gradient(circle,var(--jptg-gold),transparent 65%);opacity:.18}
.jptg-eyebrow,.jptg-kicker{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--jptg-blue-2);margin-bottom:10px}
.jptg-hero h1{margin:0 0 10px;font-size:clamp(34px,5vw,58px);line-height:1.02;color:var(--jptg-blue)}
.jptg-hero p{margin:0 0 18px;color:var(--jptg-muted);font-size:18px;max-width:700px}
.jptg-actions{display:flex;flex-wrap:wrap;gap:12px}
.jptg-btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 18px;border-radius:999px;text-decoration:none;font-weight:700;transition:.25s ease}
.jptg-btn-primary{background:var(--jptg-blue);color:#fff}.jptg-btn-primary:hover{transform:translateY(-2px);background:#193f68}
.jptg-btn-secondary{background:#fff;color:var(--jptg-blue);border:1px solid var(--jptg-border)}.jptg-btn-secondary:hover{transform:translateY(-2px);border-color:#bdd0e3}
.jptg-hero-panels{display:grid;gap:14px;align-content:center}
.jptg-stat{background:rgba(255,255,255,.86);border:1px solid var(--jptg-border);border-radius:22px;padding:18px 20px;box-shadow:var(--jptg-shadow)}
.jptg-stat strong{display:block;color:var(--jptg-blue);font-size:20px}.jptg-stat span{color:var(--jptg-muted)}
.jptg-nav{position:sticky;top:18px;z-index:30;display:flex;gap:10px;flex-wrap:wrap;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border:1px solid var(--jptg-border);padding:12px;border-radius:18px;box-shadow:var(--jptg-shadow);margin:24px 0}
.jptg-nav a{padding:10px 14px;border-radius:999px;background:#eef5fb;color:var(--jptg-blue);text-decoration:none;font-weight:700;font-size:14px}.jptg-nav a:hover{background:var(--jptg-blue);color:#fff}
.jptg-section{padding:18px 0 12px}.jptg-section-head{margin-bottom:18px}.jptg-section-head h2{margin:0;color:var(--jptg-blue);font-size:clamp(28px,4vw,42px);line-height:1.08}.jptg-section-head p{margin:10px 0 0;color:var(--jptg-muted)}
.jptg-grid-2{display:grid;grid-template-columns:1.2fr .8fr;gap:24px}.jptg-highlight{background:var(--jptg-bg);border:1px solid var(--jptg-border);border-radius:24px;padding:22px;box-shadow:var(--jptg-shadow)}
.jptg-overview-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}.jptg-overview-gallery figure{margin:0;background:#fff;border:1px solid var(--jptg-border);border-radius:20px;overflow:hidden;box-shadow:var(--jptg-shadow)}.jptg-overview-gallery img{display:block;width:100%;height:210px;object-fit:cover}.jptg-overview-gallery figcaption{padding:12px 14px;color:var(--jptg-muted);font-size:14px;line-height:1.5}

.jptg-highlight h3{margin:0 0 10px;color:var(--jptg-blue)}.jptg-highlight ul{margin:0;padding-left:18px}.jptg-highlight li{margin:0 0 8px}
.jptg-map-toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.jptg-map-toolbar button{border:1px solid var(--jptg-border);background:#fff;padding:10px 14px;border-radius:999px;font-weight:700;color:var(--jptg-blue);cursor:pointer}.jptg-map-toolbar button.is-active,.jptg-map-toolbar button:hover{background:var(--jptg-blue);color:#fff;border-color:var(--jptg-blue)}
.jptg-map-layout{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.jptg-map-canvas{min-height:480px;border-radius:26px;border:1px solid var(--jptg-border);background:linear-gradient(135deg,#eef6fc,#f8fbfe);box-shadow:var(--jptg-shadow);position:relative;overflow:hidden}.jptg-map-canvas.is-fallback:before{content:"Google Maps API not detected. The interactive map will appear automatically when your site loads the API.";position:absolute;inset:18px auto auto 18px;max-width:320px;background:rgba(255,255,255,.92);border:1px solid var(--jptg-border);border-radius:18px;padding:14px;color:var(--jptg-muted);font-weight:600;z-index:2}.jptg-map-canvas.is-fallback:after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.08),rgba(255,255,255,.08)), url(../images/nature-park.jpg) center/cover no-repeat;opacity:.95}
.jptg-side-list{display:grid;gap:10px}.jptg-side-list article{background:var(--jptg-card);border:1px solid var(--jptg-border);box-shadow:var(--jptg-shadow);border-radius:20px;padding:16px 18px}.jptg-side-list strong{display:block;color:var(--jptg-blue)}.jptg-side-list span{color:var(--jptg-muted)}
.jptg-beach-grid,.jptg-card-grid,.jptg-gem-grid,.jptg-season-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.jptg-beach-card,.jptg-card,.jptg-gem,.jptg-season{background:var(--jptg-card);border:1px solid var(--jptg-border);border-radius:24px;box-shadow:var(--jptg-shadow);overflow:hidden}
.jptg-beach-card{transition:transform .25s ease, box-shadow .25s ease}.jptg-beach-card:hover,.jptg-card:hover,.jptg-gem:hover,.jptg-season:hover{transform:translateY(-6px)}
.jptg-beach-media{height:220px;background-size:cover;background-position:center}.jptg-beach-body{padding:18px 18px 20px}.jptg-pill,.jptg-tag{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eef5fb;color:var(--jptg-blue);font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.jptg-beach-body h3,.jptg-card h3,.jptg-gem h3,.jptg-season h3,.jptg-tab-panel h3,.jptg-timeline-item h3{margin:10px 0 8px;color:var(--jptg-blue);font-size:24px;line-height:1.15}
.jptg-beach-body p,.jptg-card p,.jptg-gem p,.jptg-season p,.jptg-tab-panel p,.jptg-timeline-item p{margin:0;color:var(--jptg-muted)}
.jptg-beach-body ul{margin:14px 0 0;padding-left:18px}.jptg-beach-body li{margin:0 0 6px}
.jptg-card{padding:20px}.jptg-card-top{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}.jptg-small-meta{margin-top:14px;color:var(--jptg-muted)}
.jptg-note{margin-top:18px;background:#fff9ef;border:1px solid #f0dfb8;border-radius:22px;padding:18px 20px;box-shadow:var(--jptg-shadow)}.jptg-note p{margin:6px 0 0;color:var(--jptg-muted)}
.jptg-tabs{border:1px solid var(--jptg-border);border-radius:28px;background:var(--jptg-card);box-shadow:var(--jptg-shadow);overflow:hidden}.jptg-tab-buttons{display:flex;gap:8px;flex-wrap:wrap;padding:16px;background:var(--jptg-bg);border-bottom:1px solid var(--jptg-border)}.jptg-tab-buttons button{padding:11px 16px;border-radius:999px;border:1px solid var(--jptg-border);background:#fff;color:var(--jptg-blue);font-weight:800;cursor:pointer}.jptg-tab-buttons button.is-active,.jptg-tab-buttons button:hover{background:var(--jptg-blue);border-color:var(--jptg-blue);color:#fff}.jptg-tab-panel{display:none;padding:24px}.jptg-tab-panel.is-active{display:block}.jptg-tab-panel ul{margin:0;padding-left:18px}.jptg-tab-panel li{margin:0 0 10px}
.jptg-timeline{display:grid;gap:16px;position:relative}.jptg-timeline:before{content:"";position:absolute;left:19px;top:0;bottom:0;width:2px;background:linear-gradient(var(--jptg-blue),transparent)}.jptg-timeline-item{position:relative;padding:4px 0 4px 58px}.jptg-timeline-item:before{content:"";position:absolute;left:10px;top:14px;width:20px;height:20px;border-radius:999px;background:var(--jptg-gold);box-shadow:0 0 0 6px rgba(214,172,80,.16)}.jptg-year{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eef5fb;color:var(--jptg-blue);font-weight:800;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.jptg-gem{padding:22px}.jptg-gem-icon{font-size:26px}
.jptg-reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease, transform .7s ease}.jptg-reveal.is-visible{opacity:1;transform:none}
@media (max-width:980px){.jptg-hero,.jptg-grid-2,.jptg-map-layout,.jptg-beach-grid,.jptg-card-grid,.jptg-gem-grid,.jptg-season-grid{grid-template-columns:1fr 1fr}.jptg-map-layout{grid-template-columns:1fr}.jptg-hero{grid-template-columns:1fr}}
@media (max-width:720px){.jptg-wrap{font-size:15px}.jptg-hero{padding:26px;border-radius:22px}.jptg-nav{top:8px}.jptg-beach-grid,.jptg-card-grid,.jptg-gem-grid,.jptg-season-grid,.jptg-grid-2,.jptg-overview-gallery{grid-template-columns:1fr}.jptg-map-canvas{min-height:340px}.jptg-beach-media{height:180px}.jptg-beach-body h3,.jptg-card h3,.jptg-gem h3,.jptg-season h3,.jptg-tab-panel h3,.jptg-timeline-item h3{font-size:21px}}

.jptg-map-side{display:grid;gap:14px}
.jptg-map-detail{background:var(--jptg-card);border:1px solid var(--jptg-border);border-radius:24px;overflow:hidden;box-shadow:var(--jptg-shadow)}
.jptg-map-detail-media{height:190px;background-size:cover;background-position:center}
.jptg-map-detail-body{padding:18px}
.jptg-map-detail-body h3{margin:10px 0 8px;color:var(--jptg-blue);font-size:26px;line-height:1.12}
.jptg-map-detail-body p{margin:0;color:var(--jptg-muted)}
.jptg-side-list article{cursor:pointer;transition:transform .2s ease,border-color .2s ease,background .2s ease}
.jptg-side-list article:hover,.jptg-side-list article:focus,.jptg-side-list article.is-active{transform:translateY(-2px);border-color:#bfd0e2;background:#f8fbff;outline:none}
.jptg-side-list article.is-hidden{display:none}
.jptg-card-grid-restaurants{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}
.jptg-card-media{height:180px;background-size:cover;background-position:center;border-bottom:1px solid var(--jptg-border);margin:-20px -20px 16px}
.jptg-section-media-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:0 0 20px}
.jptg-section-media-row figure{margin:0;background:#fff;border:1px solid var(--jptg-border);border-radius:24px;overflow:hidden;box-shadow:var(--jptg-shadow)}
.jptg-section-media-row img{display:block;width:100%;height:240px;object-fit:cover}
.jptg-section-media-row figcaption{padding:12px 14px;color:var(--jptg-muted);font-size:14px;line-height:1.5}
.jptg-season-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin-top:10px}
.jptg-season{overflow:hidden;margin-top:10px}
.jptg-season-media{height:130px;background-size:cover;background-position:center}
.jptg-season-body{padding:18px}
.jptg-season h3{margin-top:8px}
.jptg-gem-media{height:150px;background-size:cover;background-position:center;margin:-22px -22px 16px}
@media (max-width:1180px){.jptg-card-grid-restaurants{grid-template-columns:repeat(2,minmax(0,1fr))}.jptg-season-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:980px){.jptg-map-side{grid-template-columns:1fr}.jptg-section-media-row{grid-template-columns:1fr 1fr}}
@media (max-width:720px){.jptg-card-grid-restaurants,.jptg-season-grid,.jptg-section-media-row{grid-template-columns:1fr}.jptg-map-detail-media{height:160px}.jptg-season-media{height:110px}.jptg-card-media{height:150px}.jptg-gem-media{height:130px}}

/* Front-page travel guide promo banner */
.jptg-promo{position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;width:100vw;padding:0 16px 10px;box-sizing:border-box}
.jptg-promo-stage{position:relative;max-width:1360px;margin:0 auto;min-height:190px}
.jptg-promo-slide{display:none;position:relative;min-height:190px;border-radius:0;overflow:hidden;background-size:cover;background-position:center;box-shadow:0 10px 24px rgba(24,41,64,.12)}
.jptg-promo-slide.is-active{display:block;animation:jptgPromoFade .3s ease}
.jptg-promo-slide:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,24,44,.9) 0%,rgba(10,34,60,.64) 35%,rgba(10,34,60,.22) 70%,rgba(10,34,60,.14) 100%)}
.jptg-promo-inner{position:relative;z-index:1;max-width:1360px;margin:0 auto;min-height:190px;display:grid;grid-template-columns:1fr;gap:10px;padding:14px 28px 18px;align-items:center}
.jptg-promo-copy{max-width:500px;color:#fff}
.jptg-promo-copy h2{margin:0;font-size:clamp(22px,2.8vw,34px);line-height:.94;color:#fff;letter-spacing:-.05em}
.jptg-promo-subtitle{max-width:420px;margin:6px 0 8px;font-size:clamp(12px,.95vw,14px);line-height:1.32;color:rgba(255,255,255,.92)}
.jptg-promo-fact-card{max-width:380px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(8px);padding:9px 11px;border-radius:14px;box-shadow:0 8px 18px rgba(8,18,30,.1)}
.jptg-promo-kicker{display:inline-flex;padding:4px 8px;border-radius:999px;background:rgba(255,255,255,.16);color:#fff;font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.jptg-promo-fact-card h3{margin:6px 0 5px;color:#fff;font-size:clamp(15px,1.4vw,20px);line-height:1.02}
.jptg-promo-fact-card p{margin:0;color:rgba(255,255,255,.88);font-size:12px;line-height:1.28;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.jptg-promo-stat{margin-top:7px;display:inline-flex;padding:5px 10px;border-radius:999px;background:#fff;color:var(--jptg-blue);font-size:11px;font-weight:800;box-shadow:0 5px 12px rgba(0,0,0,.1)}
.jptg-promo-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.jptg-promo-actions .jptg-btn{padding:8px 12px;font-size:13px;border-radius:999px}
.jptg-promo-actions .jptg-btn-secondary{background:rgba(255,255,255,.10);color:#fff;border-color:rgba(255,255,255,.24)}
.jptg-promo-actions .jptg-btn-secondary:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.3)}
.jptg-promo-rail{display:none}
.jptg-promo-controls{position:absolute;right:18px;bottom:14px;z-index:2;display:flex;gap:8px;align-items:center;padding:0;margin:0}
.jptg-promo-controls button{flex:0 0 auto;width:12px;height:12px;padding:0;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(255,255,255,.22);box-shadow:none;cursor:pointer;transition:.2s ease;color:transparent;font-size:0;line-height:0;overflow:hidden}
.jptg-promo-controls button span{display:none}
.jptg-promo-controls button:hover,.jptg-promo-controls button.is-active{width:28px;background:#fff;border-color:#fff;box-shadow:0 6px 16px rgba(0,0,0,.14)}
@keyframes jptgPromoFade{from{opacity:.45}to{opacity:1}}
@media (max-width:980px){.jptg-promo-stage,.jptg-promo-slide,.jptg-promo-inner{min-height:180px}.jptg-promo-inner{padding:12px 20px 16px}.jptg-promo-copy{max-width:460px}.jptg-promo-controls{right:14px;bottom:12px}}
@media (max-width:720px){.jptg-promo{padding:0 10px 8px}.jptg-promo-stage,.jptg-promo-slide,.jptg-promo-inner{min-height:auto}.jptg-promo-inner{padding:12px 12px 42px}.jptg-promo-copy h2{font-size:24px;line-height:.98}.jptg-promo-subtitle{font-size:12px;max-width:100%}.jptg-promo-fact-card{max-width:100%;padding:8px 10px}.jptg-promo-fact-card h3{font-size:16px}.jptg-promo-fact-card p{font-size:11px}.jptg-promo-actions .jptg-btn{padding:8px 11px;font-size:12px}.jptg-promo-controls{left:12px;right:auto;bottom:12px}}

  .jptg-promo-copy h2{
    font-size:24px;
    line-height:.98;
  }

  .jptg-promo-subtitle{
    font-size:12px;
    max-width:100%;
  }

  .jptg-promo-rail{
    justify-content:flex-start;
  }

  .jptg-promo-rail > *,
  .jptg-promo-fact-card{
    width:100%;
    max-width:100%;
    padding:12px 14px;
  }

  .jptg-promo-actions .jptg-btn{
    padding:8px 11px;
    font-size:12px;
  }

  .jptg-promo-controls{
    left:12px;
    right:auto;
    bottom:12px;
  }
}