.gptm-wrap{
  --gptm-ink:#23392e;
  --gptm-green:#2f6d49;
  --gptm-cream:#fff9e9;
  max-width:1600px;
  margin:28px auto;
  color:var(--gptm-ink);
  font-family:inherit;
}

.gptm-map-title{
  margin:0 0 20px;
  text-align:center;
  font-size:clamp(1.8rem,3vw,2.8rem);
  line-height:1.1;
}

.gptm-villages{display:grid;gap:32px}
.gptm-village-title{margin:0 0 12px;text-align:center;font-size:1.25rem;color:#315441}

.gptm-scroll{
  overflow-x:auto;
  overflow-y:hidden;
  max-width:100%;
  border-radius:28px;
  background:#355844;
  box-shadow:0 24px 70px rgba(25,48,35,.28);
  scrollbar-width:thin;
  overscroll-behavior-inline:contain;
  -webkit-overflow-scrolling:touch;
}

.gptm-scroll:focus-visible{
  outline:3px solid #e7a53d;
  outline-offset:4px;
}

.gptm-map-stage{
  position:relative;
  width:max(100%,1080px);
  aspect-ratio:1448 / 1086;
  overflow:hidden;
  isolation:isolate;
  background:#789454;
}

.gptm-map-stage::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:8;
  pointer-events:none;
  box-shadow:inset 0 0 70px rgba(31,52,36,.15);
}

.gptm-map-base{
  position:absolute;
  inset:0;
  z-index:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  user-select:none;
  pointer-events:none;
}

.gptm-house-layers{position:absolute;inset:0;z-index:2}

.gptm-house-slot{
  --gptm-card-x:-50%;
  --gptm-card-arrow:50%;
  position:absolute;
  left:var(--gptm-left);
  top:var(--gptm-top);
  width:var(--gptm-width);
  height:var(--gptm-height);
  z-index:3;
  display:block;
  color:inherit;
  text-decoration:none!important;
  outline:none;
  transform-origin:center bottom;
  -webkit-tap-highlight-color:transparent;
}

.gptm-house-slot--edge-left{
  --gptm-card-x:0;
  --gptm-card-arrow:28%;
}

.gptm-house-slot--edge-right{
  --gptm-card-x:0;
  --gptm-card-arrow:72%;
}

.gptm-house-overlay{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:contain;
  user-select:none;
  pointer-events:none;
  transform:translateZ(0);
  transform-origin:center bottom;
  transition:transform .2s ease,filter .2s ease;
}

.gptm-house-focus{
  position:absolute;
  left:24%;
  right:24%;
  top:20%;
  bottom:16%;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,225,108,.44),rgba(255,225,108,.08) 56%,transparent 74%);
  filter:blur(6px);
  opacity:0;
  pointer-events:none;
  transition:opacity .2s ease,transform .2s ease;
}

.gptm-house-slot:hover,
.gptm-house-slot:focus-visible,
.gptm-house-slot.is-open{z-index:40}

.gptm-house-slot:hover .gptm-house-overlay,
.gptm-house-slot:focus-visible .gptm-house-overlay,
.gptm-house-slot.is-open .gptm-house-overlay{
  transform:translateY(-1.5%) scale(1.018);
  filter:brightness(1.07) saturate(1.08) drop-shadow(0 12px 12px rgba(37,49,31,.28));
}

.gptm-house-slot:hover .gptm-house-focus,
.gptm-house-slot:focus-visible .gptm-house-focus,
.gptm-house-slot.is-open .gptm-house-focus{
  opacity:1;
  transform:scale(1.12);
}

.gptm-house-slot:focus-visible::before{
  content:"";
  position:absolute;
  inset:18% 22% 14%;
  z-index:5;
  border:3px solid rgba(255,255,255,.95);
  border-radius:50%;
  box-shadow:0 0 0 3px rgba(38,92,61,.75);
  pointer-events:none;
}

.gptm-card{
  position:absolute;
  left:50%;
  bottom:calc(100% - 10px);
  z-index:60;
  width:min(300px,72vw);
  padding:15px 16px 14px;
  border:1px solid rgba(91,73,43,.16);
  border-radius:17px;
  background:rgba(255,250,234,.98);
  box-shadow:0 18px 45px rgba(24,49,34,.32);
  color:#263b31;
  text-align:left;
  line-height:1.35;
  backdrop-filter:blur(9px);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translate(var(--gptm-card-x),10px) scale(.96);
  transform-origin:center bottom;
  transition:opacity .18s ease,transform .18s ease,visibility .18s ease;
}

.gptm-house-slot--edge-left .gptm-card{left:0}
.gptm-house-slot--edge-right .gptm-card{left:auto;right:0}

.gptm-card::after{
  content:"";
  position:absolute;
  left:var(--gptm-card-arrow);
  top:100%;
  border:9px solid transparent;
  border-top-color:rgba(255,250,234,.98);
  transform:translateX(-50%);
}

.gptm-house-slot--card-below .gptm-card{
  top:calc(100% - 8px);
  bottom:auto;
  transform-origin:center top;
}

.gptm-house-slot--card-below .gptm-card::after{
  top:auto;
  bottom:100%;
  border-top-color:transparent;
  border-bottom-color:rgba(255,250,234,.98);
}

.gptm-house-slot:hover .gptm-card,
.gptm-house-slot:focus-visible .gptm-card,
.gptm-house-slot.is-open .gptm-card{
  opacity:1;
  visibility:visible;
  transform:translate(var(--gptm-card-x),0) scale(1);
}

.gptm-card__name,
.gptm-card__city,
.gptm-card__bio,
.gptm-card__cta{display:block}

.gptm-card__name{margin-bottom:4px;color:#234a35;font-size:1rem;font-weight:800}
.gptm-card__city{margin-bottom:6px;color:#577261;font-size:.84rem}
.gptm-card__bio{margin-bottom:9px;color:#59675f;font-size:.8rem}
.gptm-card__cta{color:#2f6d49;font-size:.82rem;font-weight:800}

.gptm-map-legend{
  position:absolute;
  right:18px;
  bottom:16px;
  z-index:10;
  max-width:min(500px,72%);
  padding:10px 15px;
  border:1px solid rgba(84,69,42,.13);
  border-radius:999px;
  background:rgba(255,250,235,.94);
  box-shadow:0 8px 24px rgba(35,58,40,.2);
  color:#355a45;
  font-size:.78rem;
  font-weight:750;
  line-height:1.3;
  backdrop-filter:blur(8px);
}

.gptm-map-legend__dot{
  display:inline-block;
  width:9px;
  height:9px;
  margin-right:7px;
  border-radius:50%;
  background:#c8613e;
}

.gptm-empty-message{
  margin:14px 0 0;
  text-align:center;
  color:#5b6c62;
  font-size:.95rem;
}

/* Public farmer profile. */
.gptm-profile-shell{max-width:1180px;margin:36px auto 70px;padding:0 20px;color:#24382d}
.gptm-profile-hero{position:relative;overflow:hidden;min-height:300px;border-radius:28px;background:linear-gradient(145deg,#6a9855,#9fc269 52%,#e2b86a);box-shadow:0 18px 55px rgba(39,65,47,.16)}
.gptm-profile-hero__landscape{position:absolute;inset:0;background:radial-gradient(circle at 82% 22%,rgba(255,237,160,.72) 0 5%,transparent 5.4%),linear-gradient(165deg,transparent 0 46%,rgba(61,113,79,.38) 46.5% 62%,transparent 62.5%),linear-gradient(25deg,rgba(255,255,255,.09),transparent 45%)}
.gptm-profile-hero__content{position:relative;z-index:1;display:flex;align-items:flex-end;gap:24px;min-height:300px;padding:42px;color:#fff;background:linear-gradient(0deg,rgba(24,53,37,.58),rgba(24,53,37,.03) 70%)}
.gptm-profile-avatar{display:grid;place-items:center;width:92px;height:92px;flex:0 0 auto;border:5px solid rgba(255,255,255,.84);border-radius:24px;background:#f8e7be;color:#396349;font-size:2.6rem;font-weight:800;box-shadow:0 8px 26px rgba(28,48,34,.2)}
.gptm-profile-kicker{display:inline-block;margin-bottom:5px;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;opacity:.9}
.gptm-profile-hero h1{margin:0;color:#fff;font-size:clamp(2rem,5vw,4rem);line-height:1.02;text-shadow:0 2px 12px rgba(24,47,34,.22)}
.gptm-profile-location{margin:10px 0 0;font-size:1rem}
.gptm-profile-section{margin-top:38px;padding:30px;border:1px solid #e8e4d8;border-radius:22px;background:#fff;box-shadow:0 9px 34px rgba(49,65,53,.07)}
.gptm-profile-section h2{margin:0 0 18px;color:#294e39;font-size:1.65rem}
.gptm-profile-copy{color:#4c5d53;font-size:1.04rem;line-height:1.75}
.gptm-profile-copy p:last-child{margin-bottom:0}

@media (max-width:900px){
  .gptm-wrap{margin:18px auto}
  .gptm-scroll{border-radius:18px}
  .gptm-map-stage{width:1050px}
  .gptm-map-legend{right:auto;left:14px;bottom:12px;max-width:560px}
  .gptm-card{width:250px}
}

@media (max-width:600px){
  .gptm-map-title{margin-bottom:14px;font-size:1.65rem}
  .gptm-map-stage{width:920px}
  .gptm-map-legend{max-width:390px;padding:8px 11px;font-size:.72rem}
  .gptm-profile-shell{margin-top:18px;padding:0 14px}
  .gptm-profile-hero{min-height:260px;border-radius:20px}
  .gptm-profile-hero__content{min-height:260px;padding:26px;align-items:flex-end;gap:16px}
  .gptm-profile-avatar{width:72px;height:72px;border-radius:18px;font-size:2rem}
  .gptm-profile-section{padding:22px;border-radius:18px}
}

@media (prefers-reduced-motion:reduce){
  .gptm-house-overlay,.gptm-house-focus,.gptm-card{transition:none}
}
