/* ==========================================================================
   Greenshead Portal — base
   Loaded before every other plugin stylesheet.

   Two jobs:
   1. Self-host Poppins. No CDN — client hosting silently blocks Google Fonts
      and the text falls back to something that looks close enough to miss.
   2. Stop the theme and Elementor's global colours from bleeding into plugin
      UI. Elementor's kit stylesheet paints every button with the global
      Accent colour, which is why buttons were coming out pink. It loads after
      plugin CSS, so specificity alone does not win — the colour properties on
      interactive elements are forced.
   ========================================================================== */

@font-face{
  font-family:'GHP Poppins';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('../fonts/poppins-latin-400-normal.woff2') format('woff2');
}
@font-face{
  font-family:'GHP Poppins';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('../fonts/poppins-latin-500-normal.woff2') format('woff2');
}
@font-face{
  font-family:'GHP Poppins';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('../fonts/poppins-latin-600-normal.woff2') format('woff2');
}
@font-face{
  font-family:'GHP Poppins';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('../fonts/poppins-latin-700-normal.woff2') format('woff2');
}
@font-face{
  font-family:'GHP Poppins';
  font-style:normal;
  font-weight:800;
  font-display:swap;
  src:url('../fonts/poppins-latin-800-normal.woff2') format('woff2');
}

/* --------------------------------------------------------------------------
   Shared tokens
   -------------------------------------------------------------------------- */
.ghp-scope,
.ghp-portal,
.ghp-auth,
.ghp-search,
.ghp-sp,
.ghp-profile{
  --ghp-font:'GHP Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --ghp-brand:#1D9E75;
  --ghp-brand-600:#17835F;
  --ghp-brand-700:#116349;
  --ghp-brand-50:#E9F7F2;
  --ghp-brand-100:#CBEBDF;

  --ghp-ink:#0F1F1A;
  --ghp-ink-2:#33463F;
  --ghp-muted:#6B7B76;
  --ghp-line:#E2EAE7;
  --ghp-card:#fff;
  --ghp-bg:#F4F7F6;
  --ghp-radius:14px;

  font-family:var(--ghp-font);
}

.ghp-scope,
.ghp-portal,
.ghp-auth,
.ghp-search,
.ghp-sp,
.ghp-profile,
.ghp-scope *,
.ghp-portal *,
.ghp-auth *,
.ghp-search *,
.ghp-sp *,
.ghp-profile *{
  font-family:var(--ghp-font);
}

/* --------------------------------------------------------------------------
   Interactive reset

   Deliberately blunt. The theme and the Elementor kit both paint buttons and
   links with global colours, and the kit stylesheet is enqueued after plugin
   CSS, so a specificity fight is not winnable. Only the properties that
   actually clash are forced; layout is left alone so the component styles
   further down still apply normally.
   -------------------------------------------------------------------------- */
.ghp-scope button,
.ghp-portal button,
.ghp-auth button,
.ghp-search button,
.ghp-sp button,
.ghp-profile button,
.ghp-scope input[type=submit],
.ghp-portal input[type=submit],
.ghp-auth input[type=submit],
.ghp-sp input[type=submit],
.ghp-profile input[type=submit]{
  background-image:none !important;
  box-shadow:none;
  text-transform:none !important;
  letter-spacing:normal !important;
  text-decoration:none !important;
  font-family:var(--ghp-font) !important;
  cursor:pointer;
}

/* Anything the plugin has not explicitly coloured falls back to neutral,
   never to the theme's accent. */
.ghp-scope button:not([class*="ghp-"]),
.ghp-portal button:not([class*="ghp-"]),
.ghp-auth button:not([class*="ghp-"]),
.ghp-search button:not([class*="ghp-"]),
.ghp-sp button:not([class*="ghp-"]),
.ghp-profile button:not([class*="ghp-"]){
  background-color:transparent;
  color:inherit;
  border-color:var(--ghp-line);
}

/* Links inside plugin UI use the brand, not the theme accent. */
.ghp-scope a,
.ghp-portal a,
.ghp-auth a,
.ghp-search a,
.ghp-sp a,
.ghp-profile a{
  text-decoration:none;
}
.ghp-scope a:hover,
.ghp-portal a:hover,
.ghp-auth a:hover,
.ghp-search a:hover,
.ghp-sp a:hover,
.ghp-profile a:hover{
  color:var(--ghp-brand-600);
}

/* Focus ring is the brand colour everywhere, including where the theme
   would otherwise draw its own. */
.ghp-scope :focus-visible,
.ghp-portal :focus-visible,
.ghp-auth :focus-visible,
.ghp-search :focus-visible,
.ghp-sp :focus-visible,
.ghp-profile :focus-visible{
  outline:2px solid var(--ghp-brand) !important;
  outline-offset:2px;
}

.ghp-scope input:focus,
.ghp-portal input:focus,
.ghp-auth input:focus,
.ghp-search input:focus,
.ghp-sp input:focus,
.ghp-profile input:focus,
.ghp-scope select:focus,
.ghp-portal select:focus,
.ghp-auth select:focus,
.ghp-search select:focus,
.ghp-sp select:focus,
.ghp-profile select:focus,
.ghp-scope textarea:focus,
.ghp-portal textarea:focus,
.ghp-auth textarea:focus,
.ghp-sp textarea:focus,
.ghp-profile textarea:focus{
  border-color:var(--ghp-brand) !important;
  box-shadow:0 0 0 3px var(--ghp-brand-50) !important;
  outline:none !important;
}

/* Form controls keep the plugin's own look rather than the theme's. */
.ghp-scope input[type=text],
.ghp-portal input[type=text],
.ghp-auth input[type=text],
.ghp-search input[type=text],
.ghp-sp input[type=text],
.ghp-profile input[type=text],
.ghp-scope input[type=email],
.ghp-portal input[type=email],
.ghp-auth input[type=email],
.ghp-sp input[type=email],
.ghp-profile input[type=email],
.ghp-scope input[type=tel],
.ghp-portal input[type=tel],
.ghp-auth input[type=tel],
.ghp-sp input[type=tel],
.ghp-profile input[type=tel],
.ghp-scope input[type=url],
.ghp-portal input[type=url],
.ghp-scope input[type=number],
.ghp-portal input[type=number],
.ghp-search input[type=number],
.ghp-scope input[type=password],
.ghp-portal input[type=password],
.ghp-auth input[type=password],
.ghp-scope select,
.ghp-portal select,
.ghp-auth select,
.ghp-search select,
.ghp-profile select,
.ghp-scope textarea,
.ghp-portal textarea,
.ghp-auth textarea,
.ghp-sp textarea,
.ghp-profile textarea{
  font-family:var(--ghp-font) !important;
  background-image:none !important;
  text-transform:none !important;
  letter-spacing:normal !important;
}

/* Accent colour for native controls. */
.ghp-scope input[type=checkbox],
.ghp-portal input[type=checkbox],
.ghp-auth input[type=checkbox],
.ghp-sp input[type=checkbox],
.ghp-scope input[type=radio],
.ghp-portal input[type=radio],
.ghp-sp input[type=radio]{
  accent-color:var(--ghp-brand) !important;
}

/* Every plugin button, in every state, is brand-coloured. Hover states were
   the most visible leak — the theme repainted them on hover only. */
.ghp-scope .ghp-btn.ghp-btn-primary,
.ghp-portal .ghp-btn.ghp-btn-primary,
.ghp-auth .ghp-btn.ghp-btn-primary,
.ghp-sp .ghp-btn.ghp-btn-primary,
.ghp-profile .ghp-btn.ghp-btn-primary{
  background-color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-scope .ghp-btn.ghp-btn-primary:hover,
.ghp-portal .ghp-btn.ghp-btn-primary:hover,
.ghp-auth .ghp-btn.ghp-btn-primary:hover,
.ghp-sp .ghp-btn.ghp-btn-primary:hover,
.ghp-profile .ghp-btn.ghp-btn-primary:hover,
.ghp-scope .ghp-btn.ghp-btn-primary:focus,
.ghp-portal .ghp-btn.ghp-btn-primary:focus,
.ghp-auth .ghp-btn.ghp-btn-primary:focus,
.ghp-sp .ghp-btn.ghp-btn-primary:focus{
  background-color:var(--ghp-brand-600) !important;
  border-color:var(--ghp-brand-600) !important;
  color:#fff !important;
}

.ghp-scope .ghp-btn.ghp-btn-ghost,
.ghp-portal .ghp-btn.ghp-btn-ghost,
.ghp-auth .ghp-btn.ghp-btn-ghost,
.ghp-sp .ghp-btn.ghp-btn-ghost,
.ghp-profile .ghp-btn.ghp-btn-ghost{
  background-color:var(--ghp-card) !important;
  border-color:var(--ghp-line) !important;
  color:var(--ghp-ink-2) !important;
}
.ghp-scope .ghp-btn.ghp-btn-ghost:hover,
.ghp-portal .ghp-btn.ghp-btn-ghost:hover,
.ghp-auth .ghp-btn.ghp-btn-ghost:hover,
.ghp-sp .ghp-btn.ghp-btn-ghost:hover,
.ghp-profile .ghp-btn.ghp-btn-ghost:hover{
  background-color:var(--ghp-brand-50) !important;
  border-color:var(--ghp-brand) !important;
  color:var(--ghp-brand-600) !important;
}

.ghp-portal .ghp-btn.ghp-btn-danger,
.ghp-sp .ghp-btn.ghp-btn-danger{
  background-color:var(--ghp-card) !important;
  border-color:#EBC9C7 !important;
  color:#A93C36 !important;
}
.ghp-portal .ghp-btn.ghp-btn-danger:hover,
.ghp-sp .ghp-btn.ghp-btn-danger:hover{
  background-color:#FCF2F1 !important;
  border-color:#D9A6A3 !important;
  color:#A93C36 !important;
}

/* Selected pills and toggles. */
.ghp-portal .ghp-choice button.is-on,
.ghp-portal .ghp-typepanel button.is-on,
.ghp-portal .ghp-typetabs button.is-on,
.ghp-search .ghp-s-tg.is-on,
.ghp-search .ghp-s-topt.is-on,
.ghp-search .ghp-s-lopt.is-sel,
.ghp-search .ghp-s-city-list li.is-sel,
.ghp-search .ghp-s-rlist li.is-sel{
  background-color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-portal .ghp-typetabs button.is-on{
  background-color:var(--ghp-card) !important;
  color:var(--ghp-brand-600) !important;
}

/* Unselected pills stay neutral until hovered, then go brand — never accent. */
.ghp-portal .ghp-choice button:not(.is-on),
.ghp-portal .ghp-typepanel button:not(.is-on),
.ghp-search .ghp-s-tg:not(.is-on),
.ghp-search .ghp-s-topt:not(.is-sel){
  background-color:var(--ghp-card) !important;
  color:var(--ghp-ink-2) !important;
  border-color:var(--ghp-line) !important;
}
.ghp-portal .ghp-choice button:not(.is-on):hover,
.ghp-portal .ghp-typepanel button:not(.is-on):hover,
.ghp-search .ghp-s-topt:not(.is-sel):hover{
  background-color:var(--ghp-brand-50) !important;
  color:var(--ghp-brand-600) !important;
  border-color:var(--ghp-brand) !important;
}
.ghp-search .ghp-s-tg:not(.is-on):hover{
  background-color:var(--ghp-brand-600) !important;
  color:#fff !important;
  border-color:var(--ghp-brand-600) !important;
}

/* Search panel chrome. */
.ghp-search .ghp-find{
  background-color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-search .ghp-find:hover{
  background-color:var(--ghp-brand-600) !important;
  border-color:var(--ghp-brand-600) !important;
}
.ghp-search .ghp-s-done{
  background-color:var(--ghp-brand) !important;
  color:#fff !important;
  border-color:var(--ghp-brand) !important;
}
.ghp-search .ghp-s-done:hover{ background-color:var(--ghp-brand-600) !important; }
.ghp-search .ghp-s-reset,
.ghp-search .ghp-s-link{
  background-color:transparent !important;
  border-color:transparent !important;
  color:var(--ghp-muted) !important;
}
.ghp-search .ghp-s-link{ color:var(--ghp-brand) !important; }
.ghp-search .ghp-s-reset:hover,
.ghp-search .ghp-s-link:hover{ color:var(--ghp-brand-600) !important; }
.ghp-search .ghp-s-nav-item.is-on{
  color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  background-color:var(--ghp-brand-50) !important;
}
.ghp-search .ghp-s-nav-item:not(.is-on):hover{
  color:#fff !important;
  background-color:var(--ghp-brand-600) !important;
  border-color:var(--ghp-brand-600) !important;
}
.ghp-search .ghp-s-trigger,
.ghp-search .ghp-s-loc{
  background-color:var(--ghp-card) !important;
  border-color:var(--ghp-line) !important;
}
.ghp-search .ghp-s-trigger:hover{ border-color:var(--ghp-brand) !important; }

/* Portal chrome. */
.ghp-portal .ghp-p-burger,
.ghp-portal .ghp-iconbtn{
  background-color:var(--ghp-card) !important;
  color:var(--ghp-ink-2) !important;
}
.ghp-portal .ghp-p-burger{ border-color:transparent !important; }
.ghp-portal .ghp-iconbtn{ border-color:var(--ghp-line) !important; }
.ghp-portal .ghp-iconbtn:hover{
  background-color:var(--ghp-brand-50) !important;
  border-color:var(--ghp-brand) !important;
  color:var(--ghp-brand-600) !important;
}
.ghp-portal .ghp-p-nav a.is-on{
  background-color:var(--ghp-brand-50) !important;
  color:var(--ghp-brand-700) !important;
}
.ghp-portal .ghp-p-tabs a.is-on{
  color:var(--ghp-brand-600) !important;
  border-bottom-color:var(--ghp-brand) !important;
}
.ghp-portal .ghp-thumb-x{
  background-color:rgba(15,31,26,.72) !important;
  border-color:transparent !important;
  color:#fff !important;
}
.ghp-portal .ghp-thumb-x:hover{ background-color:#A93C36 !important; }

/* Single property page. */
.ghp-sp .ghp-btn-call,
.ghp-sp .ghp-btn-send{
  background-color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-sp .ghp-btn-call:hover,
.ghp-sp .ghp-btn-send:hover{
  background-color:var(--ghp-brand-600) !important;
  border-color:var(--ghp-brand-600) !important;
}
.ghp-sp .ghp-btn-wa{
  background-color:var(--ghp-brand-50) !important;
  border-color:var(--ghp-brand) !important;
  color:var(--ghp-brand-600) !important;
}
.ghp-sp .ghp-btn-wa:hover{
  background-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-sp .ghp-sh{
  background-color:var(--ghp-brand-50) !important;
  border-color:var(--ghp-line) !important;
  color:var(--ghp-brand-600) !important;
}
.ghp-sp .ghp-sh:hover,
.ghp-sp .ghp-sh.is-copied{
  background-color:var(--ghp-brand) !important;
  border-color:var(--ghp-brand) !important;
  color:#fff !important;
}
.ghp-sp .ghp-gal-nav{
  background-color:rgba(255,255,255,.94) !important;
  border-color:transparent !important;
  color:var(--ghp-ink) !important;
}
.ghp-sp .ghp-gal-thumb{ background-color:var(--ghp-bg) !important; border-color:transparent !important; }
.ghp-sp .ghp-gal-thumb.is-on{ border-color:var(--ghp-brand) !important; }
.ghp-sp .ghp-desc-toggle{
  background-color:transparent !important;
  border-color:transparent !important;
  color:var(--ghp-brand) !important;
}

/* Cards never pick up a theme hover border. */
.ghp-scope .ghp-card:hover,
.ghp-profile .ghp-card:hover{ border-color:var(--ghp-brand) !important; }
.ghp-scope .ghp-card-badge,
.ghp-profile .ghp-card-badge{ background-color:var(--ghp-brand) !important; color:#fff !important; }

@media (prefers-reduced-motion:reduce){
  .ghp-scope *,
  .ghp-portal *,
  .ghp-auth *,
  .ghp-search *,
  .ghp-sp *,
  .ghp-profile *{ transition-duration:.01ms !important; animation-duration:.01ms !important; }
}
