/*
Theme Name: Do Good To People
Description: Theme made for Hello
Author: Sander | Firma Netjes
Author URI: https://firmanetjes.nl
Template: hello-elementor
Version: 1.2.4
Text Domain: hello-elementor-child
License: GNU General Public License v3 or later.
License URI: https://www.gnu.org/licenses/gpl-3.0.html
Tags: flexible-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, rtl-language-support, threaded-comments, translation-ready
*/

/* ==========================================================================
   Inhoud
   1. Centrale maten
   2. Lay-out classes (sectie, kaart, rij, smal)
   3. Achtergronden (honingraat)
   4. Header en menu
   5. Hero's
   6. Loops (vraagstukken, sectoren, cases)
   7. Case-template (quote)
   8. Partnerlogo's
   9. Knoppen en links
   10. Algemeen
   11. Formulieren (Gravity Forms)
   ========================================================================== */


/* ==========================================================================
   1. Centrale maten
   Pas hier aan om de ruimte op de hele site te veranderen.
   ========================================================================== */

:root {
  --dgtp-ruimte-s:  clamp(12px, 1.5vw, 16px);
  --dgtp-ruimte-m:  clamp(16px, 2.5vw, 32px);
  --dgtp-ruimte-l:  clamp(28px, 4vw, 52px);
  --dgtp-ruimte-xl: clamp(48px, 6vw, 80px);

  /* Honingraattegel (wit, 2px) */
  --dgtp-honingraat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='204' height='117.78'%3E%3Cpath d='M0 58.89L34 0H102L136 58.89L102 117.78H34ZM136 58.89H204' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E");
}


/* ==========================================================================
   2. Lay-out classes
   Elementor regelt padding en richting via eigen variabelen
   (--padding-top, --flex-direction). Deze classes zetten die variabelen,
   zodat ze werken zonder !important. Laat padding/richting in het
   Elementor-paneel leeg op containers met deze classes.
   ========================================================================== */

/* Sectie: ruimte boven en onder een blok */
.e-con.dgtp-sectie {
  --padding-top: var(--dgtp-ruimte-xl);
  --padding-bottom: var(--dgtp-ruimte-xl);
}

/* Kaart: witte box met binnenruimte */
.e-con.dgtp-kaart {
  --padding-top: var(--dgtp-ruimte-l);
  --padding-right: var(--dgtp-ruimte-l);
  --padding-bottom: var(--dgtp-ruimte-l);
  --padding-left: var(--dgtp-ruimte-l);
  background-color: #fff;
}

/* Rij die op tablet en mobiel onder elkaar valt */
.e-con.dgtp-rij {
  --flex-direction: row;
  --row-gap: var(--dgtp-ruimte-l);
  --column-gap: var(--dgtp-ruimte-l);
}
@media (max-width: 1024px) {
  .e-con.dgtp-rij {
    --flex-direction: column;
  }
}

/* Rij zonder eigen padding (behalve als hij ook een kaart of sectie is) */
.e-con.dgtp-rij:not(.dgtp-kaart):not(.dgtp-sectie) {
  --padding-top: 0px;
  --padding-right: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
}

/* Rij zonder ruimte tussen de kolommen (bijv. foto direct naast tekstvlak) */
.e-con.dgtp-rij.dgtp-aaneen {
  --row-gap: 0px;
  --column-gap: 0px;
}

/* Kolommen binnen een rij: geen eigen padding (de rij/kaart regelt de ruimte),
   behalve kolommen die zelf een kaart zijn */
.e-con.dgtp-rij > .e-con:not(.dgtp-kaart),
.e-con.dgtp-rij > .e-con-inner > .e-con:not(.dgtp-kaart) {
  --padding-top: 0px;
  --padding-right: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
}

/* Sectie die direct aansluit op de sectie erboven (geen ruimte boven) */
.e-con.dgtp-sectie.dgtp-aansluitend {
  --padding-top: 0px;
}

/* Smalle tekstkolom (leesbaarheid) */
.e-con.dgtp-smal {
  max-width: 760px;
  margin-inline: auto;
}

/* Staande tablet: meer ruimte links en rechts op alle hoofdsecties
   (pagina's, header, footer en de secties binnen de <main>-wrapper van de templates) */
@media (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {
  :root {
    --dgtp-zijruimte-tablet: 30px;
  }
  body .e-con.e-parent:not(.dgtp-main),
  body .dgtp-main > .e-con.e-con {
    --padding-left: var(--dgtp-zijruimte-tablet);
    --padding-right: var(--dgtp-zijruimte-tablet);
  }
}


/* ==========================================================================
   3. Achtergronden
   ========================================================================== */

/* Beige vlak met honingraat */
.dgtp-honingraat {
  background-color: var(--e-global-color-accent);
  background-image: var(--dgtp-honingraat);
  background-repeat: repeat;
}
@media (max-width: 767px) {
  .dgtp-honingraat {
    background-size: 150px auto;
  }
}


/* ==========================================================================
   4. Header en menu
   ========================================================================== */

/* Header: ruimte en uitlijning komen hier vandaan, niet uit Elementor.
   --dgtp-header-ruimte = ruimte boven en onder; de dropdown gebruikt
   dezelfde waarde, zodat hij altijd precies onder de header aansluit. */
.e-con.dgtp-header {
  --dgtp-header-ruimte: 40px;
  --padding-top: var(--dgtp-header-ruimte);
  --padding-bottom: var(--dgtp-header-ruimte);
  --flex-direction: row;
  --flex-wrap: nowrap;
  --justify-content: space-between;
  --align-items: center;
  transition: padding .3s ease, box-shadow .3s ease;
}
/* Desktop: logo even ver van de linkerrand als de tekst 'Contact' van de
   rechterrand. Rechts telt de padding van de menulink mee, dus de
   containerpadding rechts = zijruimte - linkruimte. */
@media (min-width: 1025px) {
  .e-con.dgtp-header {
    --dgtp-header-zijruimte: 30px;
    --dgtp-menu-linkruimte: 20px;
    --padding-left: var(--dgtp-header-zijruimte);
    --padding-right: calc(var(--dgtp-header-zijruimte) - var(--dgtp-menu-linkruimte));
  }
}
/* Kleine desktop (1025-1199px): minder ruimte rond de menulinks, zodat het
   menu op één regel blijft */
@media (min-width: 1025px) and (max-width: 1199px) {
  .e-con.dgtp-header {
    --dgtp-menu-linkruimte: 12px;
  }
  .dgtp-header .dgtp-menu .elementor-nav-menu--main > ul {
    flex-wrap: nowrap;
  }
  .dgtp-header .dgtp-menu .elementor-nav-menu--main > ul > li > a {
    padding-left: var(--dgtp-menu-linkruimte) !important;
    padding-right: var(--dgtp-menu-linkruimte) !important;
  }
}
.dgtp-header .dgtp-logo {
  transform-origin: left center;
  transition: transform .3s ease;
}

/* Na scrollen: kleiner, met lichte schaduw */
.e-con.dgtp-header.elementor-sticky--effects {
  --dgtp-header-ruimte: 8px;
  box-shadow: 0 2px 12px rgba(0, 0, 0, .08);
}
.dgtp-header.elementor-sticky--effects .dgtp-logo {
  transform: scale(.75);
}

/* Tablet en mobiel: hamburger links, logo rechts, op één lijn
   (vanaf 1024px, het punt waarop het menu een hamburger wordt) */
@media (max-width: 1024px) {
  .e-con.dgtp-header {
    --dgtp-header-ruimte: 16px;
  }
  .e-con.dgtp-header.elementor-sticky--effects {
    --dgtp-header-ruimte: 8px;
  }
  /* Menu (hamburger) links, alleen zo breed als de knop.
     Vaste breedte, anders rekent de (verborgen) uitklaplijst mee en duwt
     het logo van het scherm. */
  .dgtp-header .dgtp-menu {
    order: -1;
    width: 48px !important;
    max-width: 48px;
    flex: 0 0 48px;
  }
  .dgtp-header .dgtp-menu .elementor-menu-toggle {
    width: 48px;
    height: 48px;
    margin: 0 !important;
    align-self: flex-start;
    justify-content: center;
  }
  /* Logo rechts, vaste breedte (SVG heeft geen eigen maat en krimpt anders weg) */
  .dgtp-header .dgtp-logo {
    order: 2;
    width: auto !important;
    flex: 0 0 auto;
    margin-left: auto;
    transform-origin: right center;
  }
  .dgtp-header .dgtp-logo img {
    width: 200px !important;
    max-width: none;
    height: auto;
  }
}
/* Mobiel: logo zo groot mogelijk in de ruimte naast de hamburger */
@media (max-width: 767px) {
  .dgtp-header .dgtp-logo {
    flex: 1 1 0;
    min-width: 0;
    margin-left: 16px;
    text-align: right;
  }
  .dgtp-header .dgtp-logo img {
    width: 100% !important;
    max-width: 320px;
  }
}

/* Dropdown zoals ontwerp (desktopmenu; op mobiel vult de lijst de breedte) */
.dgtp-menu .elementor-nav-menu--main .sub-menu {
  min-width: 300px !important;
}
.dgtp-menu .sub-menu {
  box-shadow: none;
}
.dgtp-menu .sub-menu .elementor-sub-item::before {
  content: "\2192";
  margin-right: .4em;
}

/* Ingesprongen scheidingslijnen tussen de items
   (dropdown op desktop én het uitklapmenu op tablet/mobiel) */
.dgtp-menu .sub-menu li,
.dgtp-menu .elementor-nav-menu__container.elementor-nav-menu--dropdown li {
  position: relative;
}
.dgtp-menu .sub-menu li:not(:last-child)::after,
.dgtp-menu .elementor-nav-menu__container.elementor-nav-menu--dropdown li:not(:last-child)::after {
  content: "";
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 0;
  border-bottom: 1px solid var(--e-global-color-text);
  pointer-events: none;
}

/* Uitklapmenu op tablet/mobiel: items 4px hoger dan de dropdown (14px + 4px) */
.dgtp-menu .elementor-nav-menu__container.elementor-nav-menu--dropdown a {
  padding-top: 18px !important;
  padding-bottom: 18px !important;
}

/* Hoofditem blijft teal op een vraagstuk- of sectorpagina */
.dgtp-menu .elementor-item.has-submenu.elementor-item-active,
.dgtp-menu .current-menu-ancestor > .elementor-item {
  color: var(--e-global-color-secondary);
}

/* Dropdown sluit aan op de onderkant van de header (groot én verkleind) */
.dgtp-header .dgtp-menu.elementor-widget-nav-menu .elementor-nav-menu--main > .elementor-nav-menu > li > .elementor-nav-menu--dropdown {
  margin-top: var(--dgtp-header-ruimte) !important;
  transition: margin-top .3s ease;
}

/* Ankers niet onder de sticky header laten vallen */
.elementor-menu-anchor {
  scroll-margin-top: 90px;
}


/* ==========================================================================
   5. Hero's
   Min. hoogte staat in Elementor (clamp per scherm).
   ========================================================================== */

/* Homehero: titel onderaan */
.e-con.dgtp-hero-home {
  --padding-top: 0px;
  --padding-bottom: clamp(32px, 4.5vw, 64px);
}

/* Vraagstuk-, Aanpak- en Over ons-hero: illustratie nooit herhalen */
.dgtp-hero::before {
  background-repeat: no-repeat !important;
}

/* Illustratie op mobiel kleiner, rechts */
@media (max-width: 767px) {
  .dgtp-hero::before {
    background-size: auto 80% !important;
    background-position: right bottom !important;
  }
}

/* Vraagstuk-hero op mobiel: illustratie bovenin, titel eronder.
   (In Elementor staat "Uitlijnen" op mobiel op Einde.) */
@media (max-width: 767px) {
  .e-con.dgtp-hero-mobiel-boven {
    --padding-bottom: 32px;
  }
  .dgtp-hero.dgtp-hero-mobiel-boven::before {
    background-size: auto 58% !important;
    background-position: right 0 top 16px !important;
  }
}

/* Sectorhero: teal + honingraat linksonder, vervagend naar rechtsboven */
.dgtp-sector-hero {
  position: relative;
}
.e-con.dgtp-sector-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='204' height='117.78'%3E%3Cpath d='M0 58.89L34 0H102L136 58.89L102 117.78H34ZM136 58.89H204' fill='none' stroke='%23fff' stroke-opacity='.5'/%3E%3C/svg%3E"),
    linear-gradient(
      color-mix(in srgb, var(--e-global-color-secondary) 90%, transparent),
      color-mix(in srgb, var(--e-global-color-secondary) 90%, transparent));
  background-size: auto, cover !important;
  background-position: 0 100%, center !important;
  background-repeat: repeat, no-repeat !important;
  -webkit-mask-image: linear-gradient(to top right, #000 0%, rgba(0, 0, 0, .75) 30%, transparent 45%);
  mask-image: linear-gradient(to top right, #000 0%, rgba(0, 0, 0, .75) 30%, transparent 45%);
}
.dgtp-sector-hero > * {
  position: relative;
  z-index: 1;
}
@media (max-width: 767px) {
  .e-con.dgtp-sector-hero::before {
    background-size: 150px auto, cover !important;
  }
}


/* ==========================================================================
   6. Loops
   ========================================================================== */

/* Hangende pijl voor titels (vraagstukken, sectoren, cases) */
.dgtp-vk-titel .elementor-heading-title {
  position: relative;
}
.dgtp-vk-titel .elementor-heading-title::before {
  content: "\2192";
  position: absolute;
  right: 100%;
  margin-right: .5em;
}
@media (max-width: 767px) {
  .dgtp-vk-titel .elementor-heading-title::before {
    position: static;
    margin-right: .4em;
  }
}

/* Vraagstukken: geen lijn onder het laatste item */
.e-loop-item:last-child:has(.dgtp-vk-titel) > .e-con {
  border-bottom: 0;
}

/* Sectorkaarten: foto's even hoog */
.dgtp-sector-img img {
  width: 100%;
  aspect-ratio: 9 / 5;
  object-fit: cover;
  display: block;
}

/* Sectorkaarten: "Lees meer" altijd onderaan uitgelijnd */
.e-loop-item:has(.dgtp-sector-img) > .e-con > .e-con {
  flex-grow: 1;
}
.e-loop-item:has(.dgtp-sector-img) .elementor-widget-button {
  margin-top: auto;
}

/* Case-kaarten: vierkant, hover en focus */
.dgtp-case-kaart {
  aspect-ratio: 1 / 1;
  text-decoration: none;
  transition: filter .3s ease;
}
.dgtp-case-kaart:hover {
  filter: brightness(1.08);
}
.dgtp-case-kaart:focus-visible {
  outline: 3px solid var(--e-global-color-primary);
  outline-offset: 3px;
}

/* Case-carrousel: ronde witte pijlknoppen */
.dgtp-cases .elementor-swiper-button {
  width: 64px;
  height: 64px;
  border: 2px solid #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 24px;
}
.dgtp-cases .elementor-swiper-button.swiper-button-disabled {
  opacity: 0;
  pointer-events: none;
}


/* ==========================================================================
   7. Case-template (quote)
   ========================================================================== */

/* Aanhalingstekens, openingsteken hangend */
.dgtp-quote-tekst .elementor-heading-title {
  text-indent: -.45em;
}
.dgtp-quote-tekst .elementor-heading-title::before {
  content: "\201C";
}
.dgtp-quote-tekst .elementor-heading-title::after {
  content: "\201D";
}

/* Quote-blok verbergen als er geen quote is (niet in de editor) */
body:not(.elementor-editor-active) .dgtp-quote:not(:has(.dgtp-quote-tekst .elementor-heading-title)) {
  display: none;
}


/* ==========================================================================
   8. Partnerlogo's
   Logo's zijn zwarte SVG's; kleur = globale kleur Secundair.
   Vereist een witte achtergrond achter de carrousel.
   ========================================================================== */

.dgtp-partnerlogos .swiper-slide-inner {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  height: var(--dgtp-logo-vak);
  background: #fff;
  isolation: isolate;
}
.dgtp-partnerlogos .swiper-slide-inner::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--e-global-color-secondary);
  mix-blend-mode: lighten;
  pointer-events: none;
}
/* Logo vult zijn vak: zo breed als de slide, maximaal --dgtp-logo-hoogte hoog.
   Brede logo's worden door de breedte begrensd, hoge door de hoogte.
   Ruimte tussen de logo's (80px) en aantal per scherm (4/3/2) staan in
   de carrousel-widget zelf. */
.dgtp-partnerlogos {
  --dgtp-logo-hoogte: 64px;
  --dgtp-logo-vak: 88px;
}
@media (max-width: 767px) {
  .dgtp-partnerlogos {
    --dgtp-logo-hoogte: 48px;
    --dgtp-logo-vak: 64px;
  }
}
.dgtp-partnerlogos .swiper-slide-image {
  width: 100% !important;
  height: var(--dgtp-logo-hoogte) !important;
  max-width: 100%;
  object-fit: contain;
  /* Elk logo eerst naar zwart/wit, zodat de laag hierboven het in de
     secundaire kleur zet, ook bij gekleurde logo's (png/jpg/webp).
     grayscale: kleur eruit. brightness(.6): lichte tinten (geel, lichtgrijs)
     worden donker genoeg. contrast(1000%): alles wordt zwart óf wit.
     Alleen bijna-wit (zoals een witte achtergrond) blijft wit. */
  filter: grayscale(1) brightness(.6) contrast(1000%);
}

/* Geen partners ingevuld (geen enkele slide): hele sectie verbergen,
   inclusief de kop 'Samenwerkingen waar we trots op zijn'.
   In de Elementor-editor blijft hij zichtbaar, zodat je hem kunt bewerken. */
body:not(.elementor-editor-active) .dgtp-partners-sectie:not(:has(.swiper-slide)) {
  display: none !important;
}


/* ==========================================================================
   9. Knoppen en links
   ========================================================================== */

/* Knoppen in een groep even breed (breedte van de langste) */
.dgtp-knoppen {
  width: fit-content !important;
  max-width: 100%;
  align-items: stretch !important;
}
.dgtp-knoppen .elementor-widget-button,
.dgtp-knoppen .elementor-button {
  width: 100%;
}
.dgtp-knoppen .elementor-button-content-wrapper {
  justify-content: center;
}

/* Onderstreepte links in de footer */
.dgtp-footer-underline a,
.dgtp-footer-underline .elementor-heading-title a {
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  color: inherit;
}
.dgtp-footer-underline a:hover,
.dgtp-footer-underline a:focus-visible {
  color: var(--e-global-color-secondary);
}

/* Links op een donker (teal) vlak, bijv. de kaart 'Direct contact' */
.dgtp-link-wit a,
.dgtp-link-wit .elementor-heading-title a {
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}
.dgtp-link-wit a:hover,
.dgtp-link-wit a:focus-visible {
  color: #fff;
  text-decoration-thickness: 2px;
}

/* Footer op mobiel: kolommen zonder eigen zijruimte, zodat de inhoud
   op dezelfde lijn staat als de rest van de pagina */
@media (max-width: 767px) {
  [data-elementor-type="footer"] .e-con-inner > .e-con.e-con {
    --padding-left: 0px;
    --padding-right: 0px;
  }
  /* Logo links uitlijnen (widget staat op 'midden') */
  [data-elementor-type="footer"] .elementor-element.elementor-widget.elementor-widget-image {
    text-align: left;
  }
}

/* Footer op tablet: twee rijen van 50/50. Boven logo en contactgegevens,
   onder de twee kantoren; contact staat zo op één lijn met Amsterdam,
   het logo met Den Haag. */
@media (min-width: 768px) and (max-width: 1024px) {
  [data-elementor-type="footer"] > .e-con.e-con.e-parent {
    --dgtp-footer-gap: 20px;
    --flex-wrap: wrap;
    --column-gap: var(--dgtp-footer-gap);
    --row-gap: var(--dgtp-ruimte-m);
  }
  [data-elementor-type="footer"] .e-con-inner > .e-con.e-con {
    --width: calc(50% - var(--dgtp-footer-gap) / 2);
    min-width: 0;
  }
  [data-elementor-type="footer"] .elementor-element.elementor-widget.elementor-widget-image {
    text-align: left;
  }
}


/* ==========================================================================
   10. Algemeen
   ========================================================================== */

/* Minder beweging voor wie dat in het systeem heeft ingesteld */
@media (prefers-reduced-motion: reduce) {
  .dgtp-header,
  .dgtp-header .dgtp-logo,
  .dgtp-case-kaart,
  .dgtp-header .dgtp-menu .elementor-nav-menu--dropdown {
    transition: none !important;
  }
}


/* ==========================================================================
   11. Formulieren (Gravity Forms, Orbital-thema)
   Labels en velden in de bodytekst van de site, verstuurknop als de
   knoppen elders. !important is nodig omdat het Orbital-thema van
   Gravity Forms zeer specifieke selectors gebruikt.
   ========================================================================== */

.gform_wrapper.gform-theme {
  --dgtp-form-font: var(--e-global-typography-text-font-family), sans-serif;
}

/* Labels, verplicht-markering, toelichting en invoervelden: bodytekst */
.gform_wrapper.gform-theme .gfield_label,
.gform_wrapper.gform-theme .gform-field-label,
.gform_wrapper.gform-theme .gfield_required,
.gform_wrapper.gform-theme .gfield_description,
.gform_wrapper.gform-theme .gform_required_legend,
.gform_wrapper.gform-theme .gfield_validation_message,
.gform_wrapper.gform-theme input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper.gform-theme textarea,
.gform_wrapper.gform-theme select {
  font-family: var(--dgtp-form-font) !important;
  font-size: var(--e-global-typography-text-font-size) !important;
  font-weight: var(--e-global-typography-text-font-weight) !important;
  line-height: 1.5 !important;
  letter-spacing: normal !important;
}
.gform_wrapper.gform-theme .gfield_label,
.gform_wrapper.gform-theme .gform-field-label,
.gform_wrapper.gform-theme input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper.gform-theme textarea,
.gform_wrapper.gform-theme select {
  color: var(--e-global-color-text) !important;
}

/* Invoervelden meegroeien met de grotere tekst (min. 48px, ook als aanraakdoel) */
.gform_wrapper.gform-theme input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper.gform-theme select {
  height: auto !important;
  min-height: 48px !important;
  padding-block: 8px !important;
}

/* Verstuurknop: zelfde stijl als de knoppen op de rest van de site */
.gform_wrapper.gform-theme .gform_footer .gform_button,
.gform_wrapper.gform-theme .gform_page_footer .gform_button {
  font-family: var(--dgtp-form-font) !important;
  font-size: 16px !important;
  font-weight: 600 !important;
  line-height: 1.25 !important;
  letter-spacing: normal !important;
  color: var(--e-global-color-secondary) !important;
  background: transparent !important;
  border: 1.5px solid var(--e-global-color-secondary) !important;
  border-radius: 999px !important;
  padding: 8px 24px !important;
  min-height: 0 !important;
  box-shadow: none !important;
  cursor: pointer;
  transition: background-color .2s ease, color .2s ease;
}
.gform_wrapper.gform-theme .gform_footer .gform_button:hover,
.gform_wrapper.gform-theme .gform_footer .gform_button:focus-visible,
.gform_wrapper.gform-theme .gform_page_footer .gform_button:hover,
.gform_wrapper.gform-theme .gform_page_footer .gform_button:focus-visible {
  background: var(--e-global-color-secondary) !important;
  color: #fff !important;
}
