/*
Theme Name: SVIO Doneren
Theme URI: https://doneeraansvio.nl
Author: SVIO
Description: Licht thema voor doneeraansvio.nl. Twee pagina's: de doneerpagina en de bedanktpagina met conversiemeting. Geen pagebuilder, geen plugins nodig.
Version: 2.2
Requires at least: 6.0
Tested up to: 6.9
License: GNU General Public License v2 or later
Text Domain: svio-doneren
*/

:root{
  --navy:#171E3E;
  --navy-diep:#0F1530;
  --inkt:#1C182B;
  --paars:#5D41DD;
  --paars-licht:#EEEBFC;
  --tekst:#5E626C;
  --gedempt:#8A8F9C;
  --zand:#EEF0F4;
  --wit:#FFFFFF;
  --rand:#DDE1E8;
  --rand-sterk:#C6CCD8;
  --groen:#2E9E6B;
  --r-kaart:18px;
  --r-veld:12px;
  --r-pil:100px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'Manrope',system-ui,-apple-system,sans-serif;
  background:var(--zand);
  background-image:radial-gradient(900px 500px at 50% -180px,#FFFFFF 0%,rgba(255,255,255,0) 70%);
  color:var(--inkt);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  padding:clamp(24px,5vw,56px) clamp(16px,4vw,24px) 140px;
}
body.svio-bedankt{padding-bottom:56px}
img{max-width:100%;height:auto}
.wrap{max-width:560px;margin:0 auto}

.kop{text-align:center;margin-bottom:clamp(20px,4vw,28px)}
.kop img{width:clamp(150px,38vw,190px);display:block;margin:0 auto 18px}
.svio-bedankt .kop img{margin-bottom:0}
.kop p{font-size:clamp(15px,3.6vw,17px);color:var(--tekst);max-width:38ch;margin:0 auto;text-wrap:balance}
.kop strong{color:var(--inkt);font-weight:700}

.kaart{
  background:var(--wit);
  border:1px solid var(--rand);
  border-radius:var(--r-kaart);
  box-shadow:0 1px 2px rgba(23,30,62,.04),0 18px 40px -24px rgba(23,30,62,.28);
  padding:clamp(18px,4.5vw,26px);
}
.kaart.midden{padding:clamp(22px,5vw,32px);text-align:center}

.schakelaar{
  display:grid;grid-template-columns:1fr 1fr;gap:4px;
  background:var(--zand);border:1px solid var(--rand);border-radius:var(--r-pil);
  padding:4px;margin-bottom:16px;
}
.schakelaar button{
  font:inherit;font-weight:700;font-size:15px;
  border:0;background:transparent;color:var(--tekst);
  padding:11px 8px;border-radius:var(--r-pil);cursor:pointer;
  transition:background .18s,color .18s,box-shadow .18s;
}
.schakelaar button[aria-selected="true"]{
  background:var(--navy);color:#fff;box-shadow:0 2px 8px -2px rgba(23,30,62,.5);
}

.bedragen{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.bedrag{
  font:inherit;font-weight:700;font-size:17px;
  background:var(--wit);border:1.5px solid var(--rand);color:var(--inkt);
  border-radius:var(--r-veld);padding:14px 4px;cursor:pointer;
  transition:border-color .15s,background .15s,color .15s;
}
.bedrag:hover{border-color:var(--rand-sterk)}
.bedrag[aria-pressed="true"]{
  border-color:var(--paars);background:var(--paars-licht);color:var(--paars);
  box-shadow:inset 0 0 0 1px var(--paars);
}
.bedrag span{display:block;font-size:11px;font-weight:600;color:var(--gedempt);margin-top:2px}
.bedrag[aria-pressed="true"] span{color:var(--paars)}

.eigen{margin-top:8px;position:relative}
.eigen .euro{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-weight:700;color:var(--gedempt);pointer-events:none}
input,select{
  font:inherit;width:100%;background:var(--wit);
  border:1.5px solid var(--rand);border-radius:var(--r-veld);
  padding:13px 14px;color:var(--inkt);
}
#eigenBedrag{padding-left:30px;font-weight:700}
input::placeholder{color:var(--gedempt);font-weight:400}
input:focus,select:focus{outline:none;border-color:var(--paars);box-shadow:0 0 0 3px rgba(93,65,221,.14)}

.velden{margin-top:22px;display:grid;gap:10px}
.rij{display:grid;grid-template-columns:1fr 1fr;gap:10px}

.doneer,.terug{
  margin-top:20px;display:block;width:100%;font:inherit;font-weight:800;font-size:17px;
  color:#fff;background:var(--navy);border:0;border-radius:var(--r-veld);
  padding:17px 16px;cursor:pointer;text-align:center;text-decoration:none;
  box-shadow:0 10px 24px -12px rgba(23,30,62,.75);
  transition:background .18s,transform .06s;
}
.doneer:hover,.terug:hover{background:var(--navy-diep)}
.doneer:active{transform:translateY(1px)}
.doneer[disabled]{opacity:.5;cursor:not-allowed}

.voet{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12.5px;color:var(--gedempt);text-align:center}
.voet svg{flex:0 0 auto}
.onder{margin-top:18px;text-align:center;font-size:12px;color:var(--gedempt);line-height:1.6}

.mobiel{
  position:fixed;left:0;right:0;bottom:0;z-index:20;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border-top:1px solid var(--rand);
  transform:translateY(120%);transition:transform .25s ease;
}
.mobiel.zichtbaar{transform:none}
.mobiel button{width:100%;font:inherit;font-weight:800;font-size:16px;color:#fff;background:var(--navy);border:0;border-radius:var(--r-veld);padding:15px;cursor:pointer}
@media(min-width:721px){.mobiel{display:none}}
@media(max-width:380px){.bedragen{grid-template-columns:repeat(2,1fr)}}

.vink{width:56px;height:56px;border-radius:50%;background:#E6F5ED;display:flex;align-items:center;justify-content:center;margin:0 auto 18px}
.kaart.midden h1{font-size:clamp(22px,5vw,27px);font-weight:800;letter-spacing:-.01em;margin-bottom:8px}
.intro{color:var(--tekst);font-size:15.5px;max-width:36ch;margin:0 auto 24px;text-wrap:balance}
.bon{border:1px solid var(--rand);border-radius:var(--r-veld);background:#FBFCFD;padding:4px 16px;text-align:left;margin-bottom:22px}
.regel{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--rand)}
.regel:last-child{border-bottom:0}
.regel dt{color:var(--gedempt);font-size:13.5px;font-weight:600}
.regel dd{font-weight:700;font-size:14.5px;text-align:right;word-break:break-word}
.groot dd{font-size:19px;color:var(--paars)}
.mono{font-family:'JetBrains Mono',ui-monospace,monospace;font-weight:500;font-size:13px}

#debug{
  display:none;margin-top:22px;background:var(--inkt);color:#D8DCE8;
  border-radius:var(--r-kaart);padding:18px 20px;
  font-family:'JetBrains Mono',ui-monospace,monospace;font-size:12px;line-height:1.7;
  overflow-x:auto;white-space:pre-wrap;word-break:break-word;
}
#debug h2{font-size:11px;letter-spacing:.09em;text-transform:uppercase;color:#8A93AD;margin-bottom:10px;font-weight:600}
#debug .ok{color:#7BD8A8}
#debug .nee{color:#F2889F}

/* ==================================================================
   Gravity Forms in de SVIO-huisstijl
   ================================================================== */
.svio-formulier .gform_wrapper,
.svio-formulier form{margin:0}
.svio-formulier .gform_fields{row-gap:10px !important}

/* labels verbergen, schermlezers houden ze */
.svio-formulier .gfield_label{
  position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.svio-formulier .gfield_required{display:none}

/* schakelaar maandelijks of eenmalig */
.svio-soort{margin-bottom:6px}
.svio-soort .gfield_radio{
  display:grid;grid-template-columns:1fr 1fr;gap:4px;
  background:var(--zand);border:1px solid var(--rand);
  border-radius:var(--r-pil);padding:4px;
}
.svio-soort .gchoice{margin:0}
.svio-soort input[type=radio]{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.svio-soort label{
  display:block;text-align:center;font-weight:700;font-size:15px;
  color:var(--tekst);padding:11px 8px;border-radius:var(--r-pil);cursor:pointer;
  transition:background .18s,color .18s,box-shadow .18s;
}
.svio-soort input[type=radio]:checked + label{
  background:var(--navy);color:#fff;box-shadow:0 2px 8px -2px rgba(23,30,62,.5);
}
.svio-soort input[type=radio]:focus-visible + label{outline:2px solid var(--paars);outline-offset:2px}

/* bedragenladder */
.svio-ladder .gfield_radio{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.svio-ladder .gchoice{margin:0}
.svio-ladder input[type=radio]{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.svio-ladder label{
  display:block;text-align:center;font-weight:700;font-size:17px;color:var(--inkt);
  background:var(--wit);border:1.5px solid var(--rand);border-radius:var(--r-veld);
  padding:14px 4px;cursor:pointer;line-height:1.25;
  transition:border-color .15s,background .15s,color .15s;
}
.svio-ladder label:hover{border-color:var(--rand-sterk)}
.svio-ladder label span{display:block;font-size:11px;font-weight:600;color:var(--gedempt);margin-top:2px}
.svio-ladder input[type=radio]:checked + label{
  border-color:var(--paars);background:var(--paars-licht);color:var(--paars);
  box-shadow:inset 0 0 0 1px var(--paars);
}
.svio-ladder input[type=radio]:checked + label span{color:var(--paars)}
.svio-ladder input[type=radio]:focus-visible + label{outline:2px solid var(--paars);outline-offset:2px}

/* velden */
.svio-formulier input[type=text],
.svio-formulier input[type=email],
.svio-formulier input[type=tel],
.svio-formulier input[type=number]{
  font:inherit !important;width:100% !important;background:var(--wit);
  border:1.5px solid var(--rand) !important;border-radius:var(--r-veld) !important;
  padding:13px 14px !important;color:var(--inkt);
}
.svio-formulier input::placeholder{color:var(--gedempt);font-weight:400}
.svio-formulier input:focus{
  outline:none !important;border-color:var(--paars) !important;
  box-shadow:0 0 0 3px rgba(93,65,221,.14) !important;
}
.svio-eigen{margin-top:2px}
.svio-half{grid-column:span 6 !important}
.svio-half-eind{grid-column:span 6 !important}
.svio-formulier .gfield--type-email{margin-top:12px}

/* verborgen velden */
.svio-verborgen,
.svio-formulier .gfield--type-hidden,
.svio-formulier .gform_hidden{display:none !important}

/* knop */
.svio-formulier .gform_footer{margin:20px 0 0 !important;padding:0 !important}
.svio-formulier .gform_button{
  width:100%;font:inherit;font-weight:800;font-size:17px;color:#fff;
  background:var(--navy);border:0;border-radius:var(--r-veld);
  padding:17px 16px;cursor:pointer;
  box-shadow:0 10px 24px -12px rgba(23,30,62,.75);
  transition:background .18s,transform .06s;
}
.svio-formulier .gform_button:hover{background:var(--navy-diep)}
.svio-formulier .gform_button:active{transform:translateY(1px)}

/* foutmeldingen */
.svio-formulier .gform_validation_errors{
  background:#FDF0F4;border:1px solid #F3C9D7;border-radius:var(--r-veld);
  padding:12px 14px;margin:0 0 14px;color:#8F2A4C;font-size:13.5px;box-shadow:none;
}
.svio-formulier .gform_validation_errors h2{font-size:14px;margin:0;color:#8F2A4C}
.svio-formulier .gfield_error input{border-color:#D8477B !important}
.svio-formulier .validation_message{
  color:#D8477B;font-size:12.5px;margin-top:6px;background:none;border:0;padding:0;
}
.svio-formulier .gform_ajax_spinner{display:block;margin:12px auto 0}

/* GF eigen thema overschrijven: de keuzes moeten een raster worden */
.svio-formulier .gfield_radio{display:grid !important;margin:0 !important;padding:0 !important;border:0 !important}
.svio-soort .gfield_radio{grid-template-columns:1fr 1fr !important;gap:4px !important}
.svio-ladder .gfield_radio{grid-template-columns:repeat(3,1fr) !important;gap:8px !important}
.svio-formulier .gchoice{display:block !important;margin:0 !important;padding:0 !important;min-height:0 !important}
.svio-formulier .gfield_radio input[type=radio]{
  position:absolute !important;opacity:0 !important;width:1px !important;height:1px !important;
  margin:0 !important;padding:0 !important;border:0 !important;appearance:none !important;
  min-width:0 !important;min-height:0 !important;inset-inline-start:auto !important;
}
.svio-formulier .gfield_radio input[type=radio]::before,
.svio-formulier .gfield_radio input[type=radio]::after{display:none !important;content:none !important}
.svio-formulier .gfield_radio label{
  margin:0 !important;width:100% !important;max-width:none !important;
  padding-inline-start:0 !important;
}
@media(max-width:380px){.svio-ladder .gfield_radio{grid-template-columns:repeat(2,1fr) !important}}

/* knop en laatste keuze */
.svio-formulier .gform_footer .gform_button,
.svio-formulier .gform_button.button{
  width:100% !important;display:block !important;
  font:inherit !important;font-weight:800 !important;font-size:17px !important;
  color:#fff !important;background:var(--navy) !important;border:0 !important;
  border-radius:var(--r-veld) !important;padding:17px 16px !important;
  margin:0 !important;cursor:pointer;
  box-shadow:0 10px 24px -12px rgba(23,30,62,.75) !important;
}
.svio-formulier .gform_footer .gform_button:hover{background:var(--navy-diep) !important}
.svio-ladder .gchoice:last-child{grid-column:1 / -1}
.svio-ladder .gchoice:last-child label{font-size:15px;color:var(--tekst);padding:13px 4px}
.svio-ladder .gchoice:last-child input[type=radio]:checked + label{color:var(--paars)}

/* euroteken voor het eigen bedrag */
.svio-eigen .ginput_container{position:relative}
.svio-eigen .ginput_container::before{
  content:'\20AC';position:absolute;left:14px;top:50%;transform:translateY(-50%);
  font-weight:700;color:var(--gedempt);pointer-events:none;z-index:1;
}
.svio-eigen input{padding-left:30px !important;font-weight:700}

/* jaarbedrag onder de maandladder */
.svio-jaar{
  margin:10px 0 0;text-align:center;font-size:12.5px;color:var(--gedempt);
}
.svio-jaar strong{color:var(--tekst);font-weight:700}

/* betaalblok */
.svio-betaling{margin-top:18px;padding-top:18px;border-top:1px solid var(--rand)}
.svio-betaling .gfield_label{
  position:static !important;width:auto !important;height:auto !important;
  clip:auto !important;margin:0 0 10px !important;white-space:normal !important;
  font-family:'JetBrains Mono',ui-monospace,monospace;font-size:11px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;color:var(--gedempt);display:block;
}
.svio-betaling .ginput_container{background:var(--wit)}

/* knop tijdens verzenden */
.svio-formulier .gform_button[disabled]{opacity:.65;cursor:progress}

/* jaarregel, tweede poging met genoeg gewicht */
.svio-formulier .svio-jaar{
  margin:10px 0 0 !important;text-align:center !important;
  font-size:12.5px !important;color:var(--gedempt) !important;line-height:1.5;
}
.svio-formulier .svio-jaar strong{color:var(--tekst);font-weight:700}

/* Stripe-blok */
.svio-betaling .ginput_complex{display:grid;gap:10px}
.svio-betaling .gform-field-label--type-sub{display:none !important}
.svio-betaling .StripeElement{
  border:1.5px solid var(--rand) !important;border-radius:var(--r-veld) !important;
  padding:13px 14px !important;background:var(--wit) !important;
}
.svio-betaling .StripeElement--focus{
  border-color:var(--paars) !important;box-shadow:0 0 0 3px rgba(93,65,221,.14) !important;
}
.svio-betaling input[type=text]{margin:0 !important}

/* ------------------------------------------------------------------
   Eigen bedrag: het euroteken stond onder de tekst omdat Gravity Forms
   zijn uitleg ("Voer een getal groter dan of gelijk aan 1 in") binnen
   hetzelfde blok zet. Uitleg weg, teken op de invoerregel.
   ------------------------------------------------------------------ */
.svio-eigen .ginput_container{position:relative}
.svio-eigen .ginput_container .instruction,
.svio-eigen .gfield_description,
.svio-formulier .gfield_description.instruction{display:none !important}
.svio-eigen .ginput_container::before{
  content:'\20AC';position:absolute;left:15px;top:23px;transform:translateY(-50%);
  font-weight:700;font-size:16px;color:var(--gedempt);pointer-events:none;z-index:2;line-height:1;
}
.svio-eigen input{padding-left:32px !important;font-weight:700 !important}
.svio-eigen input::placeholder{font-weight:400}

/* foutmelding bij het eigen bedrag mag wel, maar in onze stijl */
.svio-eigen .validation_message{
  display:block !important;color:#D8477B;font-size:12.5px;margin-top:6px;
  background:none;border:0;padding:0;
}

/* euroteken netjes midden in het invoerveld, met genoeg ruimte ervoor */
.svio-formulier .svio-eigen .ginput_container::before{
  top:50% !important;transform:translateY(-50%) !important;left:16px !important;
}
.svio-formulier .svio-eigen input{padding-left:34px !important}