/* ============================================================
   Greenly — Partner Map (partnerships page)
   Everything is scoped under .pm / .pm-* to avoid clashing with site styles.
   ============================================================ */

.pm{margin:0 0 64px;}
.pm:not(.pm-ready){display:none;}

/* ---------- Heading row ---------- */
.pm-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-bottom:26px;}
.pm-head-text{max-width:560px;}
.pm-head h2{font-family:var(--font-display);font-size:clamp(1.7rem,3vw,2.3rem);font-weight:800;color:var(--forest-dark);margin-bottom:10px;}
.pm-head p{font-size:1rem;color:var(--muted);line-height:1.7;}
.pm-stats{display:flex;gap:30px;flex-wrap:wrap;}
.pm-stat{min-width:84px;}
.pm-stat-num{font-family:var(--font-display);font-size:2.1rem;font-weight:800;color:var(--green-dark);line-height:1;font-variant-numeric:tabular-nums;}
.pm-stat-num small{font-size:1rem;font-weight:700;margin-left:3px;}
.pm-stat-label{margin-top:6px;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-soft);}

/* ---------- Shell ---------- */
.pm-shell{
  display:grid;grid-template-columns:minmax(0,1fr) 340px;
  border-radius:20px;overflow:hidden;background:#0c1f15;
  box-shadow:0 24px 60px rgba(12,31,21,.28),0 2px 0 rgba(255,255,255,.04) inset;
}

/* ---------- Stage (the map) ---------- */
.pm-stage{
  position:relative;height:0;overflow:hidden;align-self:start;
  background:
    radial-gradient(ellipse at 62% 42%,rgba(64,145,108,.16) 0%,rgba(64,145,108,0) 60%),
    radial-gradient(ellipse at 50% 50%,#10291c 0%,#0b1d13 100%);
  touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none;
}
.pm-stage.is-zoomed{cursor:grab;touch-action:none;}
.pm-stage.is-dragging{cursor:grabbing;}
.pm-stage.is-dragging .pm-pin,.pm-stage.is-dragging .pm-cluster,.pm-stage.is-dragging .pm-country{pointer-events:none;}

.pm-svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:hidden;}
.pm-grat{fill:none;stroke:rgba(149,213,178,.07);stroke-width:1;vector-effect:non-scaling-stroke;}
.pm-country{fill:#1a3325;stroke:rgba(149,213,178,.16);stroke-width:.7;vector-effect:non-scaling-stroke;stroke-linejoin:round;transition:fill .35s ease,stroke .35s ease;}
.pm-country.is-partner{fill:#2b5e45;stroke:rgba(183,228,199,.5);cursor:pointer;}
.pm-country.is-partner:hover,.pm-country.is-partner.is-hover{fill:#3a7d5b;stroke:rgba(216,243,220,.8);}
.pm-country.is-selected{fill:#3f8a63;stroke:#d8f3dc;stroke-width:1.4;}
.pm-has-selection .pm-country.is-partner:not(.is-selected):not(:hover):not(.is-hover){fill:#23503a;stroke:rgba(183,228,199,.3);}

.pm-arc{fill:none;stroke:rgba(183,228,199,.5);stroke-width:1.3;stroke-dasharray:2 5;stroke-linecap:round;vector-effect:non-scaling-stroke;transition:opacity .5s ease;}
.pm-packet{fill:#e9fff1;}
.pm-arcs{transition:opacity .45s ease;}
.pm-stage.hide-arcs .pm-arcs{opacity:0;}
.pm-has-selection .pm-arc:not(.is-lit){opacity:.28;}

/* ---------- Overlay (labels, pins) ---------- */
.pm-overlay{position:absolute;inset:0;pointer-events:none;}
.pm-overlay > *{position:absolute;}

.pm-label{transform:translate(-50%,-50%);white-space:nowrap;pointer-events:none;transition:opacity .35s ease;}
.pm-label-country{font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:rgba(216,243,220,.78);text-shadow:0 1px 8px rgba(8,22,14,.9);}
.pm-label-sea{font-family:var(--font-display);font-style:italic;font-weight:700;font-size:.8rem;letter-spacing:.06em;color:rgba(149,213,178,.3);}
.pm-stage.hide-seas .pm-label-sea,.pm-stage.hide-countries .pm-label-country{opacity:0;}
.pm-stage.is-compact .pm-label-sea{display:none;}
.pm-label-country.is-clash{opacity:0!important;}
.pm-has-selection .pm-label-country:not(.is-selected){opacity:.45;}

/* HQ marker (Greenly, Dubai) */
.pm-hq{width:0;height:0;pointer-events:none;transition:opacity .4s ease;}
.pm-hq i{position:absolute;left:-6px;top:-6px;width:12px;height:12px;border-radius:50%;border:1px solid rgba(233,255,241,.55);animation:pm-radar 3.4s ease-out infinite;}
.pm-hq i:nth-child(2){animation-delay:1.7s;}
.pm-hq b{position:absolute;left:-4px;top:-4px;width:8px;height:8px;background:#fff;transform:rotate(45deg);box-shadow:0 0 12px rgba(255,255,255,.8);}
.pm-stage.hide-arcs .pm-hq{opacity:0;}
@keyframes pm-radar{0%{transform:scale(1);opacity:.9;}100%{transform:scale(8);opacity:0;}}

/* Pins */
.pm-pin{
  width:30px;height:30px;margin:-15px 0 0 -15px;padding:0;border:0;background:none;
  cursor:pointer;pointer-events:auto;z-index:3;border-radius:50%;
}
.pm-pin:focus{outline:none;}
.pm-pin:focus-visible{outline:2px solid #d8f3dc;outline-offset:2px;}
.pm-pin-dot{
  position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  background:#b7e4c7;box-shadow:0 0 0 3px rgba(11,29,19,.9),0 0 16px 3px rgba(149,213,178,.55);
  transition:transform .2s ease,background .2s ease;
}
.pm-pin::after{
  content:"";position:absolute;left:50%;top:50%;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;
  border:1.5px solid rgba(183,228,199,.75);animation:pm-ping 2.8s ease-out infinite;animation-delay:var(--pulse,0s);
}
.pm-pin:hover .pm-pin-dot,.pm-pin.is-hot .pm-pin-dot{transform:scale(1.35);background:#fff;}
.pm-pin.is-active{z-index:4;}
.pm-pin.is-active .pm-pin-dot{transform:scale(1.5);background:#fff;box-shadow:0 0 0 3px #2d6a4f,0 0 0 6px rgba(233,255,241,.35),0 0 22px 6px rgba(183,228,199,.7);}
.pm-dim .pm-pin:not(.is-lit):not(.is-active){opacity:.4;}
.pm-dim .pm-cluster:not(.is-lit):not(:hover){background:#5d8a71;color:rgba(11,29,19,.8);box-shadow:0 0 0 4px rgba(149,213,178,.08),0 6px 16px rgba(0,0,0,.35);}
@keyframes pm-ping{0%{transform:scale(1);opacity:.9;}80%,100%{transform:scale(3.2);opacity:0;}}

.pm-pin-label{
  position:absolute;left:25px;top:50%;transform:translateY(-50%);white-space:nowrap;
  font-size:.7rem;font-weight:600;color:#e9f5ee;background:rgba(11,29,19,.82);
  border:1px solid rgba(149,213,178,.18);padding:3px 8px;border-radius:6px;
  opacity:0;pointer-events:none;transition:opacity .25s ease;
}
.pm-pin-label.is-left{left:auto;right:25px;}
.pm-pin.show-label .pm-pin-label{opacity:1;}

/* Clusters */
.pm-cluster{
  width:38px;height:38px;margin:-19px 0 0 -19px;padding:0;border:0;border-radius:50%;
  background:#d8f3dc;color:#0b1d13;font:800 .95rem/1 var(--font-body);cursor:pointer;pointer-events:auto;z-index:3;
  box-shadow:0 0 0 5px rgba(216,243,220,.16),0 0 0 11px rgba(216,243,220,.06),0 8px 22px rgba(0,0,0,.4);
  transition:transform .2s ease,box-shadow .2s ease;
}
.pm-cluster:hover,.pm-cluster.is-hot{transform:scale(1.1);box-shadow:0 0 0 6px rgba(216,243,220,.26),0 0 0 13px rgba(216,243,220,.1),0 8px 22px rgba(0,0,0,.4);}
.pm-cluster.is-active{background:#fff;box-shadow:0 0 0 3px #2d6a4f,0 0 0 8px rgba(233,255,241,.3),0 8px 22px rgba(0,0,0,.4);}
.pm-cluster:focus{outline:none;}
.pm-cluster:focus-visible{outline:2px solid #fff;outline-offset:4px;}

.pm-enter{animation:pm-pop .55s cubic-bezier(.2,1.5,.4,1) backwards;animation-delay:var(--enter,0s);}
@keyframes pm-pop{0%{transform:scale(0);opacity:0;}100%{transform:scale(1);opacity:1;}}
.pm-stage.pm-pre .pm-pin,.pm-stage.pm-pre .pm-cluster,.pm-stage.pm-pre .pm-hq,.pm-stage.pm-pre .pm-arcs{opacity:0;}

/* Tooltip */
.pm-tip{
  z-index:6;left:0;top:0;width:250px;pointer-events:none;
  background:#fff;color:var(--ink);border-radius:12px;padding:12px 14px 13px;
  box-shadow:0 14px 36px rgba(0,0,0,.38);opacity:0;transform:translateY(4px);transition:opacity .15s ease,transform .15s ease;
}
.pm-tip.show{opacity:1;transform:none;}
.pm-tip::after{
  content:"";position:absolute;left:var(--arrow,50%);bottom:-6px;width:12px;height:12px;margin-left:-6px;
  background:#fff;transform:rotate(45deg);border-radius:2px;
}
.pm-tip.is-below::after{bottom:auto;top:-6px;}
.pm-tip .tag{font-size:.6rem;padding:3px 9px;}
.pm-tip-title{font-family:var(--font-display);font-size:.98rem;font-weight:700;line-height:1.3;color:var(--forest-dark);margin:8px 0 5px;}
.pm-tip-place{font-size:.75rem;color:var(--muted);}
.pm-tip-hint{font-size:.72rem;font-weight:600;color:var(--green-dark);margin-top:6px;}

/* Map chrome */
.pm-controls{position:absolute;top:14px;right:14px;display:flex;flex-direction:column;gap:6px;z-index:5;}
.pm-ctrl{
  width:34px;height:34px;display:flex;align-items:center;justify-content:center;padding:0;
  border-radius:10px;border:1px solid rgba(149,213,178,.25);background:rgba(11,29,19,.78);
  color:#d8f3dc;font:600 1.15rem/1 var(--font-body);cursor:pointer;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .2s,border-color .2s,opacity .2s;
}
.pm-ctrl:hover{background:rgba(45,106,79,.9);border-color:rgba(216,243,220,.5);}
.pm-ctrl:disabled{opacity:.35;cursor:default;background:rgba(11,29,19,.78);border-color:rgba(149,213,178,.25);}
.pm-ctrl:focus-visible{outline:2px solid #d8f3dc;outline-offset:2px;}
.pm-ctrl svg{width:16px;height:16px;}
.pm-ctrl.pm-reset{margin-top:6px;}
.pm-ctrl.pm-reset[hidden]{display:none;}

.pm-legend{
  position:absolute;left:14px;bottom:14px;z-index:5;display:flex;flex-direction:column;gap:7px;
  font-size:.7rem;font-weight:600;color:rgba(216,243,220,.82);
  background:rgba(11,29,19,.7);border:1px solid rgba(149,213,178,.16);border-radius:12px;padding:10px 12px;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);pointer-events:none;
}
.pm-legend span{display:flex;align-items:center;gap:9px;}
.pm-key-pin{width:9px;height:9px;border-radius:50%;background:#b7e4c7;box-shadow:0 0 0 2px rgba(11,29,19,.9),0 0 8px rgba(149,213,178,.8);}
.pm-key-hq{width:7px;height:7px;background:#fff;transform:rotate(45deg);margin:0 1px;box-shadow:0 0 8px rgba(255,255,255,.8);}
.pm-key-arc{width:12px;border-top:1.5px dotted rgba(183,228,199,.8);}

.pm-credit{position:absolute;right:12px;bottom:9px;z-index:5;font-size:.6rem;color:rgba(149,213,178,.4);pointer-events:none;}
.pm-hint{
  position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:5;white-space:nowrap;
  font-size:.74rem;font-weight:600;color:#e9f5ee;background:rgba(11,29,19,.78);border:1px solid rgba(149,213,178,.2);
  border-radius:999px;padding:7px 14px;pointer-events:none;transition:opacity .4s ease;
}
.pm-hint.is-gone{opacity:0;}
.pm-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ---------- Side panel ---------- */
.pm-panel{position:relative;background:#0f2419;border-left:1px solid rgba(149,213,178,.12);color:#e9f5ee;}
.pm-panel-inner{position:absolute;inset:0;overflow-y:auto;padding:26px 24px 24px;scrollbar-width:thin;scrollbar-color:rgba(149,213,178,.3) transparent;}
.pm-view{animation:pm-fade .35s ease both;}
@keyframes pm-fade{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}

.pm-kicker{font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#95d5b2;margin-bottom:10px;}
.pm-ptitle{font-family:var(--font-display);font-size:1.45rem;font-weight:800;line-height:1.2;color:#fff;margin-bottom:6px;}
.pm-psub{font-size:.86rem;color:#9fc3ad;line-height:1.6;margin-bottom:18px;}

.pm-back{
  display:inline-flex;align-items:center;gap:6px;margin:0 0 18px;padding:0;border:0;background:none;
  font:600 .8rem var(--font-body);color:#95d5b2;cursor:pointer;transition:color .2s,gap .2s;
}
.pm-back:hover{color:#fff;gap:9px;}
.pm-back:focus-visible{outline:2px solid #d8f3dc;outline-offset:3px;border-radius:4px;}

.pm-countries{display:flex;flex-direction:column;gap:8px;}
.pm-crow{
  width:100%;display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 12px;text-align:left;
  padding:13px 14px;border-radius:12px;border:1px solid rgba(149,213,178,.12);background:rgba(255,255,255,.025);
  color:#e9f5ee;font-family:var(--font-body);cursor:pointer;transition:background .2s,border-color .2s,transform .2s;
}
.pm-crow:hover,.pm-crow:focus-visible{background:rgba(149,213,178,.09);border-color:rgba(149,213,178,.35);transform:translateX(3px);outline:none;}
.pm-crow-name{font-weight:700;font-size:.95rem;}
.pm-crow-count{font-size:.78rem;font-weight:700;color:#95d5b2;}
.pm-crow-places{grid-column:1/-1;font-size:.74rem;color:#8fb59d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-crow-bar{grid-column:1/-1;height:3px;border-radius:3px;background:rgba(149,213,178,.12);overflow:hidden;margin-top:4px;}
.pm-crow-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#52b788,#b7e4c7);transform-origin:left;animation:pm-bar .9s cubic-bezier(.2,.8,.2,1) both;animation-delay:var(--d,0s);}
@keyframes pm-bar{from{transform:scaleX(0);}to{transform:scaleX(1);}}
.pm-tipline{margin-top:20px;font-size:.76rem;color:#7fa58d;line-height:1.6;}

.pm-items{display:flex;flex-direction:column;gap:8px;}
.pm-item{
  width:100%;display:flex;gap:12px;align-items:center;text-align:left;padding:10px;border-radius:12px;
  border:1px solid rgba(149,213,178,.1);background:rgba(255,255,255,.025);color:#e9f5ee;cursor:pointer;
  font-family:var(--font-body);transition:background .2s,border-color .2s;
}
.pm-item:hover,.pm-item:focus-visible{background:rgba(149,213,178,.09);border-color:rgba(149,213,178,.35);outline:none;}
.pm-thumb{flex:0 0 54px;width:54px;height:54px;border-radius:9px;object-fit:cover;background:#1a3325;}
.pm-thumb.is-logo{object-fit:contain;background:#fff;padding:5px;}
.pm-item-text{min-width:0;display:flex;flex-direction:column;gap:3px;}
.pm-item-title{font-size:.86rem;font-weight:700;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.pm-item-meta{font-size:.72rem;color:#8fb59d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pm-jump{display:inline-flex;margin-top:16px;font-size:.8rem;font-weight:600;color:#95d5b2;border-bottom:1px solid rgba(149,213,178,.35);padding-bottom:1px;transition:color .2s;}
.pm-jump:hover{color:#fff;}

.pm-spot-img{height:128px;border-radius:12px;overflow:hidden;background:#1a3325;margin-bottom:16px;}
.pm-spot-img img{width:100%;height:100%;object-fit:cover;}
.pm-spot-img.is-logo{background:#fff;}
.pm-spot-img.is-logo img{object-fit:contain;padding:18px;}
.pm-spot-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;font-size:.74rem;color:#8fb59d;}
.pm-spot-title{font-family:var(--font-display);font-size:1.28rem;font-weight:800;line-height:1.25;color:#fff;margin-bottom:10px;}
.pm-spot-place{display:flex;align-items:flex-start;gap:7px;font-size:.82rem;font-weight:600;color:#b7e4c7;margin-bottom:10px;}
.pm-spot-place svg{flex:0 0 14px;width:14px;height:14px;margin-top:2px;}
.pm-spot-desc{font-size:.86rem;line-height:1.65;color:#c3dccb;margin-bottom:12px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}
.pm-spot-dist{font-size:.74rem;color:#7fa58d;margin-bottom:18px;}
.pm-cta{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 16px;border-radius:10px;
  background:#d8f3dc;color:#0b1d13;font-weight:700;font-size:.9rem;transition:background .2s,gap .2s;
}
.pm-cta:hover{background:#fff;gap:12px;}
.pm-spot-nav{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:.74rem;color:#8fb59d;}
.pm-navbtn{
  width:34px;height:34px;border-radius:10px;border:1px solid rgba(149,213,178,.22);background:rgba(255,255,255,.03);
  color:#d8f3dc;font-size:1rem;cursor:pointer;transition:background .2s,border-color .2s;
}
.pm-navbtn:hover:not(:disabled){background:rgba(149,213,178,.12);border-color:rgba(149,213,178,.45);}
.pm-navbtn:disabled{opacity:.3;cursor:default;}
.pm-navbtn:focus-visible{outline:2px solid #d8f3dc;outline-offset:2px;}

/* ---------- Responsive ---------- */
@media (max-width:980px){
  .pm-shell{grid-template-columns:1fr;}
  .pm-panel{border-left:0;border-top:1px solid rgba(149,213,178,.12);}
  .pm-panel-inner{position:static;overflow:visible;}
  .pm-countries{display:grid;grid-template-columns:1fr 1fr;}
}
@media (max-width:600px){
  .pm-head{gap:18px;}
  .pm-stats{gap:22px;}
  .pm-stat-num{font-size:1.7rem;}
  .pm-legend{display:none;}
  .pm-countries{grid-template-columns:1fr;}
  .pm-label-country{font-size:.56rem;letter-spacing:.14em;}
  .pm-label-sea{font-size:.66rem;}
  .pm-ctrl{width:30px;height:30px;}
  .pm-controls{top:10px;right:10px;}
  .pm-hint{font-size:.68rem;bottom:auto;top:10px;}
  .pm-panel-inner{padding:22px 18px;}
  .pm-shell{border-radius:16px;}
}

@media (prefers-reduced-motion:reduce){
  .pm-pin::after,.pm-hq i{animation:none;opacity:0;}
  .pm-enter,.pm-view,.pm-crow-bar i{animation:none;}
  .pm-country,.pm-arcs,.pm-label{transition:none;}
}
