/* 
Theme Name: Strive Child Theme
Description: Strive Child Theme Built With Elementor
Author: Strive Team
Author URI: https://strivepracticeconsulting.com.au
Template: hello-elementor
Version: 2.0.0
Text Domain: strive-elementor-theme
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
*/


/* =============================================================================
   EO SITE STYLES
   1) Tokens
   2) Sticky mobile call bar
   3) Scroll reveal
   4) Focus + buttons
   5) Accordion (FAQ)
   6) Elementor Pro form polish
   7) Scroll-reveal JS (reference)
   8) Gravity Forms
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1) TOKENS
   --------------------------------------------------------------------------- */
:root{
  --eo-fern:#475738;
  --eo-ink:#14233b;
  --eo-ink-soft:#46566f;
  --eo-gold:#bf9450;        /* teal alt: #3f9a8f */
  --eo-gold-deep:#9a7434;   /* teal alt: #2f7d73 */
  --eo-gold-tint:#f4ecdc;   /* teal alt: #e7f2f0 */
  --eo-cream:#faf7f1;
  --eo-line:#e7e0d4;
  --eo-success:#2f7d5b;
  --eo-radius:16px;
  --eo-radius-pill:999px;
  --eo-shadow:0 22px 55px -24px rgba(20,35,59,.30);
  --eo-shadow-gold:0 16px 40px -16px rgba(154,116,52,.45);
  --eo-ring:0 0 0 3px rgba(191,148,80,.45);

  /* form control sizing — change in one place */
  --eo-field-height:48px;
  --eo-control-size:20px;   /* checkbox + radio box size */
}


/* -----------------------------------------------------------------------------
   2) STICKY MOBILE CALL BAR
   --------------------------------------------------------------------------- */
.eo-callbar{ display:none; }

@media (max-width:760px){
  .eo-callbar{
    display:grid !important;
    grid-template-columns:1fr 1fr;
    gap:.6rem;
    position:fixed; left:0; right:0; bottom:0; z-index:9999;
    padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom));
    background:rgba(250,247,241,.96);
    -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
    border-top:1px solid var(--eo-line);
    box-shadow:0 -8px 30px -12px rgba(20,35,59,.25);
  }
  /* keep the footer from hiding behind the bar */
  body{ padding-bottom:78px !important; }
  /* tidy the inner button widths */
  .eo-callbar .elementor-button,
  .eo-callbar a.btn{ width:100%; min-height:50px; }
}


/* -----------------------------------------------------------------------------
   3) SCROLL ANIMATION
   --------------------------------------------------------------------------- */
.eo-reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.eo-reveal.eo-in{ opacity:1; transform:none; }

@media (prefers-reduced-motion:reduce){
  .eo-reveal{ opacity:1 !important; transform:none !important; transition:none !important; }
}


/* -----------------------------------------------------------------------------
   4) FOCUS + BUTTONS
   Note: the focus ring follows each element's own radius, so no radius is set
   here — pill buttons keep their pill shape while focused.
   --------------------------------------------------------------------------- */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
.elementor-button:focus-visible{
  outline:none !important;
  box-shadow:var(--eo-ring) !important;
}

/* Primary Button */
.eo-btn-primary .elementor-button,
.eo-btn-primary.elementor-button{
  box-shadow:var(--eo-shadow-gold);
  transition:transform .18s ease, box-shadow .22s ease, background .2s ease;
}
.eo-btn-primary .elementor-button:hover,
.eo-btn-primary.elementor-button:hover{
  transform:translateY(-2px);
}

@media (prefers-reduced-motion:reduce){
  .eo-btn-primary .elementor-button:hover,
  .eo-btn-primary.elementor-button:hover{ transform:none; }
}

/* Ensure every clickable shows a pointer */
.elementor-button, .eo-callbar a, a[href]{ cursor:pointer; }


/* -----------------------------------------------------------------------------
   5) ACCORDION (FAQ) — give the widget the CSS class "eo-faq"
   --------------------------------------------------------------------------- */
.eo-faq .elementor-accordion-item{
  background:#fff;
  border:1px solid var(--eo-line) !important;
  border-radius:var(--eo-radius);
  overflow:hidden;
  margin-bottom:.85rem;
  box-shadow:0 2px 10px rgba(20,35,59,.06);
}
.eo-faq .elementor-tab-title{
  padding:1.25rem 1.4rem !important;
  font-weight:600;
}
.eo-faq .elementor-tab-content{
  padding:0 1.4rem 1.35rem !important;
  color:var(--eo-ink-soft);
}
/* rotate Elementor's accordion icon when active */
.eo-faq .elementor-accordion-icon svg,
.eo-faq .elementor-accordion-icon i{
  color:var(--eo-gold-deep);
  transition:transform .25s ease;
}
.eo-faq .elementor-tab-title.elementor-active .elementor-accordion-icon svg,
.eo-faq .elementor-tab-title.elementor-active .elementor-accordion-icon i{
  transform:rotate(180deg);
}


/* -----------------------------------------------------------------------------
   6) FORM POLISH (Elementor Pro Form widget)
   Give the Form widget the CSS class "eo-form".
   --------------------------------------------------------------------------- */
.eo-form .elementor-field-group{ margin-bottom:.95rem; }

/* text-style fields only — checkbox, radio and acceptance groups excluded */
.eo-form .elementor-field:not(.elementor-field-type-checkbox):not(.elementor-field-type-radio):not(.elementor-field-type-acceptance):not([type="checkbox"]):not([type="radio"]){
  min-height:var(--eo-field-height) !important;
  border:1.5px solid var(--eo-line) !important;
  border-radius:12px !important;
  padding:.85rem .95rem !important;
}
.eo-form .elementor-field:focus{
  border-color:var(--eo-fern) !important;
  box-shadow:var(--eo-ring) !important;
}
.eo-form .elementor-field-label{ font-weight:600 !important; font-size:.85rem !important; }
/* required asterisk + helper text in gold/muted */
.eo-form .elementor-mark-required .elementor-field-label:after{ color:var(--eo-fern); }

/* Elementor checkbox / radio / acceptance controls */
.eo-form .elementor-field-subgroup .elementor-field-option{
  display:flex; align-items:flex-start; gap:.6rem;
}
.eo-form input[type="checkbox"],
.eo-form input[type="radio"]{
  min-height:0 !important;
  width:var(--eo-control-size) !important;
  height:var(--eo-control-size) !important;
  flex:0 0 auto;
  margin-top:.15rem;
  padding:0 !important;
  accent-color:var(--eo-fern);
}


/* =============================================================================
   7) JAVASCRIPT — scroll reveal
   Paste the block below into an Elementor "HTML" widget at the bottom of the
   page, or into your child theme's wp_footer via a code snippet plugin.

   ----------------------------------------------------------------------------
   <script>
   (function () {
     var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
     var els = document.querySelectorAll('.eo-reveal');
     if (reduce || !('IntersectionObserver' in window)) {
       els.forEach(function (el) { el.classList.add('eo-in'); });
       return;
     }
     var io = new IntersectionObserver(function (entries) {
       entries.forEach(function (entry) {
         if (entry.isIntersecting) {
           entry.target.classList.add('eo-in');
           io.unobserve(entry.target);
         }
       });
     }, { rootMargin: '0px 0px -10% 0px', threshold: 0.1 });
     els.forEach(function (el) { io.observe(el); });
   })();
   </script>
   ----------------------------------------------------------------------------
   ============================================================================= */


/* =============================================================================
   8) GRAVITY FORMS — global defaults, applied to all forms
   ============================================================================= */

/* privacy / consent note block */
.form-privacy{
  padding:15px;
  border:1.5px solid var(--eo-fern) !important;
  border-radius:5px;
}
.form-privacy p{
  font-size:.8rem;
  margin-bottom:0;
  color:#332E2E;
}
.form-privacy a{ color:#475538; }
.form-privacy a:hover{ color:#769E8D; }

/* layout + labels */
.gform-theme--foundation{ --gf-form-gap-y:10px !important; }
.gform_wrapper.gravity-theme .gform_fields{ gap:.95rem; }
.gform_wrapper.gravity-theme .gfield_label{
  font-weight:600 !important;
  font-size:.85rem !important;
  color:var(--eo-ink) !important;
  margin-bottom:.35rem !important;
}
/* required asterisk in gold */
.gform_wrapper.gravity-theme .gfield_required,
.gform_wrapper.gravity-theme .gfield_required_asterisk{ color:var(--eo-gold-deep) !important; }

/* ---- SECTION HEADERS (gsection) ------------------------------------------ */
.gform_wrapper.gravity-theme .gsection{
  margin:1.6rem 0 .35rem !important;
  padding:0 0 .7rem !important;
  border-bottom:1px solid var(--eo-line) !important;
}
/* no leading gap when a section opens the form */
.gform_wrapper.gravity-theme .gform_fields > .gsection:first-child{
  margin-top:0 !important;
}
.gform_wrapper.gravity-theme .gsection_title{
  display:block;
  margin:0 0 .2rem !important;
  padding:0 0 0 .75rem;
  border-left:3px solid var(--eo-gold);
  font-size:1.05rem !important;
  line-height:1.3;
  font-weight:700 !important;
  letter-spacing:.01em;
  color:var(--eo-ink) !important;
}
.gform_wrapper.gravity-theme .gsection_description{
  margin:0 !important;
  padding:0 0 0 .75rem;
  font-size:.85rem !important;
  line-height:1.5;
  color:var(--eo-ink-soft) !important;
}
/* section header inside a multi-column row still spans full width */
.gform_wrapper.gravity-theme .gsection{ grid-column:1 / -1; }

/* ---- TEXT-STYLE INPUTS ---------------------------------------------------- */
/* checkbox, radio, file, submit, hidden and image inputs are excluded so they
   keep their native box size — file uploads are styled in their own block */
.gform_wrapper.gravity-theme .ginput_container input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]):not([type="hidden"]),
.gform_wrapper.gravity-theme .ginput_container select,
.gform_wrapper.gravity-theme .ginput_container textarea{
  min-height:var(--eo-field-height) !important;
  border:1.5px solid var(--eo-fern) !important;
  border-radius:12px !important;
  padding:.85rem .95rem !important;
  background:#fff !important;
  color:var(--eo-ink) !important;
  transition:border-color .18s ease, box-shadow .18s ease;
}
.gform_wrapper.gravity-theme .ginput_container input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):not([type="submit"]):not([type="button"]):not([type="reset"]):not([type="image"]):not([type="hidden"]):focus,
.gform_wrapper.gravity-theme .ginput_container select:focus,
.gform_wrapper.gravity-theme .ginput_container textarea:focus{
  border-color:var(--eo-fern) !important;
  box-shadow:var(--eo-ring) !important;
  outline:none !important;
}
.gform_wrapper.gravity-theme .ginput_container textarea{ min-height:140px !important; }

/* ---- CHECKBOXES, RADIOS + CONSENT ---------------------------------------- */
.gform_wrapper.gravity-theme .gfield_checkbox .gchoice,
.gform_wrapper.gravity-theme .gfield_radio .gchoice,
.gform_wrapper.gravity-theme .ginput_container_consent{
  display:flex;
  align-items:flex-start;
  gap:.6rem;
  margin-bottom:.45rem;
}
.gform_wrapper.gravity-theme .ginput_container input[type="checkbox"],
.gform_wrapper.gravity-theme .ginput_container input[type="radio"]{
  min-height:0 !important;
  width:var(--eo-control-size) !important;
  height:var(--eo-control-size) !important;
  flex:0 0 auto;
  margin:.15rem 0 0 !important;
  padding:0 !important;
  border-radius:5px;
  background:#fff;
  accent-color:var(--eo-fern);
  cursor:pointer;
}
.gform_wrapper.gravity-theme .ginput_container input[type="radio"]{ border-radius:50%; }
.gform_wrapper.gravity-theme .gfield_checkbox label,
.gform_wrapper.gravity-theme .gfield_radio label,
.gform_wrapper.gravity-theme .ginput_container_consent label{
  font-weight:400 !important;
  font-size:.9rem !important;
  line-height:1.45;
  color:var(--eo-ink-soft) !important;
  margin:0 !important;
  cursor:pointer;
}

/* ---- FILE UPLOAD ---------------------------------------------------------- */
/* single file upload — the input is the shell, the picker button is styled below */
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]{
  width:100% !important;
  min-height:var(--eo-field-height) !important;
  padding:.5rem .55rem !important;
  border:1.5px dashed var(--eo-fern) !important;
  border-radius:12px !important;
  background:#fff !important;
  color:var(--eo-ink-soft) !important;
  font-size:.85rem !important;
  line-height:1.8;
  cursor:pointer;
  transition:border-color .18s ease, background .18s ease;
}
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]:hover{
  background:var(--eo-cream) !important;
}

/* Native picker button.
   ::file-selector-button and ::-webkit-file-upload-button must stay in
   SEPARATE rules — a browser that doesn't know one would discard the whole
   group and you'd lose the styling entirely. */
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]::file-selector-button{
  margin-right:.75rem;
  min-height:36px;
  padding:.5rem 1.1rem;
  border:1.5px solid var(--eo-fern);
  border-radius:var(--eo-radius-pill);
  background:#fff;
  color:var(--eo-fern);
  font-weight:600;
  font-size:.85rem;
  font-family:inherit;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, box-shadow .22s ease;
}
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]:hover::file-selector-button{
  background:var(--eo-fern);
  color:#fff;
}
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]::-webkit-file-upload-button{
  margin-right:.75rem;
  min-height:36px;
  padding:.5rem 1.1rem;
  border:1.5px solid var(--eo-fern);
  border-radius:var(--eo-radius-pill);
  background:#fff;
  color:var(--eo-fern);
  font-weight:600;
  font-size:.85rem;
  font-family:inherit;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, box-shadow .22s ease;
}
.gform_wrapper.gravity-theme .ginput_container_fileupload input[type="file"]:hover::-webkit-file-upload-button{
  background:var(--eo-fern);
  color:#fff;
}

/* Multi-file upload — drag & drop area */
.gform_wrapper.gravity-theme .gform_drop_area{
  margin:0;
  padding:1.6rem 1.2rem;
  border:1.5px dashed var(--eo-fern) !important;
  border-radius:var(--eo-radius) !important;
  background:var(--eo-cream) !important;
  text-align:center;
  transition:border-color .18s ease, background .18s ease;
}
.gform_wrapper.gravity-theme .gform_drop_area:hover{
  border-color:var(--eo-gold-deep) !important;
  background:#fff !important;
}
.gform_wrapper.gravity-theme .gform_drop_instructions{
  display:block;
  margin-bottom:.8rem;
  font-size:.85rem;
  color:var(--eo-ink-soft);
}
/* "Select files" button — matches the native picker button above */
.gform_wrapper.gravity-theme .gform_button_select_files{
  min-height:44px !important;
  padding:.6rem 1.5rem !important;
  border:1.5px solid var(--eo-fern) !important;
  border-radius:var(--eo-radius-pill) !important;
  background:#fff !important;
  color:var(--eo-fern) !important;
  font-weight:600 !important;
  font-size:.9rem !important;
  cursor:pointer;
  transition:background .18s ease, color .18s ease, transform .18s ease;
}
.gform_wrapper.gravity-theme .gform_button_select_files:hover{
  background:var(--eo-fern) !important;
  color:#fff !important;
  transform:translateY(-1px);
}

/* upload rules / allowed types hint */
.gform_wrapper.gravity-theme .gform_fileupload_rules,
.gform_wrapper.gravity-theme .ginput_container_fileupload .gfield_description{
  display:block;
  margin-top:.45rem;
  font-size:.78rem !important;
  color:var(--eo-ink-soft) !important;
}

/* uploaded file list */
.gform_wrapper.gravity-theme .ginput_preview{
  display:flex;
  align-items:center;
  gap:.6rem;
  margin:.5rem 0 0 !important;
  padding:.55rem .8rem;
  border:1px solid var(--eo-line);
  border-radius:10px;
  background:#fff;
  font-size:.85rem;
  color:var(--eo-ink);
}
.gform_wrapper.gravity-theme .gform_delete_file,
.gform_wrapper.gravity-theme .gform_delete{
  margin-left:auto;
  border:0 !important;
  background:none !important;
  color:#c0392b !important;
  font-size:.8rem !important;
  cursor:pointer;
}

/* upload progress */
.gform_wrapper.gravity-theme .gform_progress_bar{
  height:22px;
  border:0 !important;
  border-radius:var(--eo-radius-pill) !important;
  background:var(--eo-line) !important;
  box-shadow:none !important;
  overflow:hidden;
}
.gform_wrapper.gravity-theme .gform_progress_bar_percentage{
  height:22px;
  border-radius:var(--eo-radius-pill) !important;
  background:var(--eo-fern) !important;
  color:#fff !important;
  font-size:.75rem !important;
  line-height:22px !important;
  text-align:right;
  padding-right:.6rem;
  transition:width .25s ease;
}

@media (prefers-reduced-motion:reduce){
  .gform_wrapper.gravity-theme .gform_button_select_files:hover{ transform:none; }
}

/* ---- SUBMIT BUTTON -------------------------------------------------------- */
.gform_wrapper.gravity-theme .gform_footer{ margin-top:1.1rem !important; }
.gform_wrapper.gravity-theme .gform_button{
  width:100% !important;
  min-height:52px !important;
  padding:.95rem 1.8rem !important;
  border:1.5px solid transparent !important;
  border-radius:var(--eo-radius-pill) !important;
  font-weight:600 !important;
  background:var(--eo-gold) !important;
  color:#fff !important;
  box-shadow:var(--eo-shadow-gold) !important;
  transition:transform .18s ease, box-shadow .22s ease, background .2s ease !important;
  cursor:pointer;
}
.gform_wrapper.gravity-theme .gform_button:hover{
  background:var(--eo-gold-deep) !important;
  transform:translateY(-2px);
}

@media (prefers-reduced-motion:reduce){
  .gform_wrapper.gravity-theme .gform_button:hover{ transform:none; }
}

/* ---- VALIDATION + CONFIRMATION -------------------------------------------- */
.gform_wrapper.gravity-theme .gfield_error .ginput_container input,
.gform_wrapper.gravity-theme .gfield_error .ginput_container select,
.gform_wrapper.gravity-theme .gfield_error .ginput_container textarea{ border-color:#c0392b !important; }
.gform_wrapper.gravity-theme .validation_message{ color:#c0392b !important; font-size:.8rem !important; }
.gform_wrapper .gform_confirmation_message{
  background:var(--eo-gold-tint);
  border:1px solid var(--eo-line);
  border-radius:var(--eo-radius);
  padding:1.1rem 1.25rem;
  color:var(--eo-ink);
}