/*
Theme Name:   Hello Elementor Child
Theme URI:    https://github.com/elementor/hello-theme-child
Description:  Last Minute Bookings. Compatibility and customisation layer.
Author:       Erish Paolo Vital
Template:     hello-elementor
Version:      1.0.7
Text Domain:  hello-elementor-child
*/

/* ============================================================================
   LMB CHILD LAYER  v1.0.7

   Cascade, lowest to highest:
     1. Elementor frontend base CSS
     2. Prototype CSS  (assets/css/*.css, never edited)
     3. This file      (compatibility + customisation)
     4. Elementor per-element CSS from the panel  (always wins)

   Everything below either sets an Elementor CSS VARIABLE, or sits at a
   specificity Elementor's own per-element output beats. Panel edits win.
   ========================================================================= */


/* 1. TOKEN BRIDGE ---------------------------------------------------------
   On body, never :root. Elementor scopes kit variables to .elementor-kit-{id}
   which is printed on <body>. A bridge on :root resolves to its fallback
   forever and Global Colour changes move nothing.
   Only these four slots have stable variable names. Custom global colours get
   a regenerated hash and break at migration, so nothing binds to them.        */

body {
  --ink:         var(--e-global-color-primary,   #1d1d1f);
  --ink-soft:    var(--e-global-color-text,      #6e6e73);
  --accent:      var(--e-global-color-secondary, #FE630D);
  --accent-text: var(--e-global-color-accent,    #cf4b01);
}


/* 2. CONTAINER DEFAULTS ---------------------------------------------------
   Elementor containers default to display:flex / flex-direction:column.
   Prototype classes that relied on the CSS defaults have no declaration to
   raise, so they are declared here.

   v1.0.1: this was written as --display / --flex-direction so panel edits
   would win. Measured on the real install and it does not work: Elementor
   writes --display:flex per element for every container whether or not the
   Layout control was touched, at 0-3-0, so the variable never survived.
   Literal properties at 0-3-0, loading after Elementor's base sheet.
   Consequence: the panel Display and Direction controls do nothing on a
   container carrying one of these classes. Change the class list here.        */

/* Elementor gives every container a default inline and block padding from the
   kit. The prototype owns its own padding, and with five levels of nesting the
   default compounds and squeezes the content: it is why the phone mockups lost
   about 40px and the filter chips wrapped. Zeroed as a VARIABLE, so a padding
   set in the panel writes --padding-* and still wins.                          */
.e-con.e-con {
  --container-default-padding-block-start: 0px;
  --container-default-padding-block-end: 0px;
  --container-default-padding-inline-start: 0px;
  --container-default-padding-inline-end: 0px;
}

/* Structural wrappers: block, as in the prototype */
.e-con.e-con:is(.article-footer, .article-head, .nav, .nav--over, .footer, .footer--dark, .bandwait, .bandwait-inner, .bandwait-media,
  .bhero-copy, .bhero-inner, .bhero-media, .bhero-scrim, .calc-divider, .calc-row-big,
  .contact-card, .error-page--img, .faq-group, .faq-item, .feature, .filmband,
  .footer-brand, .footer-col, .form-card, .glass-card, .glass-card-bg, .grain,
  .hero-visual, .legal-notice, .legal-toc, .lightbox-inner, .p-divider, .p-hero,
  .page-hero, .page-hero--img, .page-hero--plain, .ph-media, .phone, .phone-caption,
  .phone-head, .phones--3, .phones--4, .plate, .plate--21x9, .plate--4x5, .plate--fill,
  .plate--sq-corners, .problem-col, .prose, .section, .section--flush-bottom,
  .section--flush-top, .section--soft, .section--tight, .seq-item, .spread--flip,
  .spread-inner, .spread-media, .stage, .statement-copy, .statement-media,
  .statement-rule, .waitlist, .wrap, .wrap-narrow) {
  display: block;
}

/* Rows: flex, explicit direction */
.e-con.e-con:is(.article-byline, .bhero, .board-foot, .board-side, .board-toast, .board-top,
  .calc-input-wrap, .calc-result, .calc-row, .cat-body, .cat-roadmap, .categories,
  .chip-row, .cta-row, .error-links, .faq-q, .footer-bottom, .form-row, .lightbox,
  .marquee-track, .nav-inner, .nav-links, .p-check, .p-filters, .p-kv, .p-row,
  .pagination, .phone-bar, .post-thumb, .proof-row, .scroll-cue, .slot, .slot-left,
  .slot-right, .step-glyph, .videoslot-foot, .videoslot-play) {
  display: flex;
  flex-direction: row;
}

/* Grids */
.e-con.e-con:is(.board-slot, .calc, .cat-grid, .contact-aside, .egrid, .features,
  .footer-cols, .fork, .phones, .post-featured, .post-grid, .problems, .seq,
  .spread, .stages, .statement, .steps, .steps-v2) {
  display: grid;
}

/* v1.0.4: .nav and .footer joined the block list. The header and footer
   templates are generated from the prototype now, so their layout comes from
   .nav-inner and .footer-cols rather than from panel settings. */


/* 3. HEADING WIDGET WRAPPERS ---------------------------------------------
   A CSS class lands on the widget's outer div, not on the heading inside it,
   so the inner h1-h6 keeps its browser defaults and Elementor's
   .elementor-widget-heading .elementor-heading-title (0-2-0) leading.
   Both DOM shapes are covered because Optimized Markup removes
   .elementor-widget-container from a growing list of widgets.
   0-3-0 here. Elementor's per-element heading rule is 0-4-0, so the Style
   tab still wins.                                                            */

.elementor-widget:is(.article-title, .bandwait-title, .display, .faq-group-title,
  .feature-title, .h1, .post-card-title, .post-featured-title, .section-title,
  .seq-title, .spread-title, .stage-title, .waitlist-title)
  > :is(h1, h2, h3, h4, h5, h6, p, span, .elementor-heading-title),
.elementor-widget:is(.article-title, .bandwait-title, .display, .faq-group-title,
  .feature-title, .h1, .post-card-title, .post-featured-title, .section-title,
  .seq-title, .spread-title, .stage-title, .waitlist-title)
  > .elementor-widget-container > :is(h1, h2, h3, h4, h5, h6, p, div, span, .elementor-heading-title) {
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  color: inherit;
  text-wrap: inherit;
  margin: 0;
  padding: 0;
}

/* Bottom margin.
   v1.0.1: this was a wrapper rule fighting Elementor's widget margin reset and
   it lost on the real install. The margin now goes on the inner element, which
   the rule above already owns at 0-3-0 and Elementor never touches. A margin
   set in the panel sits on the wrapper and still adds on top of it.           */
.elementor-widget.article-title       > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.article-title       > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 20px; }
.elementor-widget.bandwait-title      > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.bandwait-title      > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 18px; }
.elementor-widget.faq-group-title     > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.faq-group-title     > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 4px; }
.elementor-widget.feature-title       > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.feature-title       > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 8px; }
.elementor-widget.h1                  > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.h1                  > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 24px; }
.elementor-widget.post-card-title     > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.post-card-title     > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 10px; }
.elementor-widget.post-featured-title > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.post-featured-title > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 14px; }
.elementor-widget.section-title       > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.section-title       > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 20px; }
.elementor-widget.seq-title           > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.seq-title           > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 10px; }
.elementor-widget.spread-title        > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.spread-title        > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block: 16px 18px; }
.elementor-widget.stage-title         > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.stage-title         > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 10px; }
.elementor-widget.waitlist-title      > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title),
.elementor-widget.waitlist-title      > .elementor-widget-container > :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { margin-block-end: 16px; }


/* 4. COMPONENT BRIDGES ----------------------------------------------------
   Elementor's Button and Form widgets render their own markup, so a prototype
   class on the widget wrapper never reaches the element that needs it.

   Buttons carry no duplicated values. The wrapper keeps the .btn styling it
   already has from the prototype and the inner anchor is stripped back to a
   stretched hit area covering the wrapper's padding. Change a button anywhere
   and both stay in step, because there is only one set of values.
   0-2-0, so the Style tab still overrides.                                    */

.elementor-widget:is(.btn, .nav-cta) {
  position: relative;
  text-decoration: none;
}
.elementor-widget:is(.btn, .nav-cta) .elementor-button {
  all: unset;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font: inherit;
  color: inherit;
  cursor: pointer;
}
.elementor-widget:is(.btn, .nav-cta) :is(.elementor-button-content-wrapper, .elementor-button-text) {
  all: unset;
}
/* the anchor covers the wrapper's padding, so the whole pill is clickable */
.elementor-widget:is(.btn, .nav-cta) .elementor-button::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
}
.elementor-widget:is(.btn, .nav-cta):has(.elementor-button:focus-visible) {
  outline: 2px solid var(--accent-text);
  outline-offset: 3px;
}

/* Forms. These values are duplicated from .form-row / .form-input / .form-btn
   because Elementor's field markup has no element the prototype class can sit
   on. If the prototype's form styling changes, change it here too.            */
.elementor-widget.form-row .elementor-form { width: 100%; }
.elementor-widget.form-row .elementor-form-fields-wrapper {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: 10px;
}
.elementor-widget.form-row .elementor-field-group {
  padding: 0;
  margin: 0;
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
}
.elementor-widget.form-row .elementor-field-group.elementor-field-type-submit {
  flex: 0 0 auto;
}
/* The inline form is a single field and a button. Labels are for screen
   readers only, exactly as in the prototype. */
.elementor-widget.form-row .elementor-field-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}
.elementor-widget.form-row .elementor-form .elementor-field-type-submit .elementor-button-content-wrapper,
.elementor-widget.form-row .elementor-form .elementor-field-type-submit .elementor-button-text { color: inherit; }
.elementor-widget.form-row .elementor-form .elementor-field-group .elementor-field-textual {
  width: 100%;
  padding: 14px 20px;
  border: none;
  background: rgba(255, 255, 255, 0.12);
  color: #fff;
  border-radius: var(--radius-pill);
  font-size: 15px;
  font-family: inherit;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  outline: none;
  transition: background 0.2s ease;
}
.elementor-widget.form-row .elementor-form .elementor-field-group .elementor-field-textual::placeholder { color: rgba(255, 255, 255, 0.5); }
.elementor-widget.form-row .elementor-form .elementor-field-group .elementor-field-textual:focus { background: rgba(255, 255, 255, 0.18); }
.elementor-widget.form-row .elementor-form .elementor-field-type-submit .elementor-button {
  padding: 14px 24px;
  background: #fff;
  color: var(--ink);
  border-radius: var(--radius-pill);
  font-weight: 600;
  font-size: 15px;
  border: none;
  white-space: nowrap;
  transition: transform 0.2s ease;
}
.elementor-widget.form-row .elementor-form .elementor-field-type-submit .elementor-button:hover { transform: scale(1.03); }

@media (max-width: 640px) {
  .elementor-widget.form-row .elementor-form { width: 100%; }
.elementor-widget.form-row .elementor-form-fields-wrapper { flex-direction: column; align-items: stretch; }
}

/* Nav Menu. The prototype styles .nav-links and its anchors, and both survive
   on the widget wrapper. Only Elementor's own list chrome needs clearing.     */
.elementor-widget.nav-links .elementor-nav-menu {
  display: flex;
  align-items: center;
  gap: 28px;
}
.elementor-widget.nav-links .elementor-nav-menu li { margin: 0; }
.elementor-widget.nav-links .elementor-item {
  padding: 0;
  margin: 0;
  fill: currentColor;
}
.elementor-widget.nav-links .elementor-item.elementor-item-active,
.elementor-widget.nav-links .elementor-item[aria-current="page"] {
  color: var(--ink);
  font-weight: 500;
}
.elementor-widget.nav-links .elementor-nav-menu .elementor-item,
.elementor-widget.nav-links .elementor-nav-menu .elementor-item:hover,
.elementor-widget.nav-links .elementor-nav-menu .elementor-item:focus,
.elementor-widget.nav-links .elementor-nav-menu .elementor-item:active,
.elementor-widget.nav-links .elementor-nav-menu .elementor-item.highlighted {
  padding: 0;
  margin: 0;
  background: none;
  transform: none;
  font-size: inherit;
  transition: color 0.2s ease;
}
@media (max-width: 860px) {
  .elementor-widget.nav-links { display: none; }
}

/* Sticky header. .nav carries position:sticky in the prototype, but in the
   Theme Builder it sits inside <header class="elementor-location-header">,
   whose height is exactly the header's own. A sticky box cannot move inside a
   containing block its own size, so it never sticks. The sticky moves up to
   the wrapper and .nav keeps its background, blur and border.                 */
.elementor-location-header {
  position: sticky;
  top: 0;
  z-index: 100;
}
.e-con.e-con.nav { position: static; }

/* Footer link lists. Icon List renders <ul><li><a>, which the prototype's
   .footer-col li and .footer-col a rules already reach. Only Elementor's own
   list spacing and the empty icon slot need clearing.                         */
.elementor-widget.footer-links .elementor-icon-list-items {
  display: block;
  padding: 0;
  margin: 0;
}
.elementor-widget.footer-links .elementor-icon-list-item {
  margin-bottom: 11px;
  padding: 0;
  display: block;
}
.elementor-widget.footer-links .elementor-icon-list-item:last-child { margin-bottom: 0; }
.elementor-widget.footer-links .elementor-icon-list-icon { display: none; }
.elementor-widget.footer-links .elementor-icon-list-text { padding: 0; }
.elementor-widget.footer-links .elementor-icon-list-item > a {
  display: inline;
  font-size: 14px;
}

/* Image-band hero scrim, restated. The prototype declares this at 0-1-0 on
   .page-hero--img::after and it was not surviving on a real container, so the
   hero image showed at full brightness with white text over it. 0-2-0 here.
   ::before is left alone: that is Elementor's Background Overlay control.
   Leave that control off, the gradient below is the design system's own.      */
.e-con.page-hero--img::after,
.e-con.error-page--img::after,
.e-con.bhero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(to top, rgba(6, 9, 13, 0.90) 0%, rgba(6, 9, 13, 0.58) 46%, rgba(6, 9, 13, 0.40) 100%),
    linear-gradient(to right, rgba(6, 9, 13, 0.72) 0%, rgba(6, 9, 13, 0.24) 60%, rgba(6, 9, 13, 0.10) 100%);
}
.e-con.page-hero--img > *,
.e-con.error-page--img > * { position: relative; z-index: 2; }
/* The homepage hero carries its own scrim div, so it opts out of the one above. */
.e-con.bhero::after { background: none; }

/* Stacked forms, the contact card. Same situation as the inline form: Elementor
   renders .elementor-field-group where the prototype has .field, so these
   values are duplicated from the .field block in the prototype. One place to
   change, flagged here.                                                       */
.elementor-widget.contact-form .elementor-field-group {
  display: flex;
  flex-direction: column;
  gap: 9px;
  margin-bottom: 24px;
  padding: 0;
  width: 100%;
}
.elementor-widget.contact-form .elementor-field-label {
  font-size: 14px;
  font-weight: 500;
  color: var(--ink-soft);
  letter-spacing: -0.005em;
}
.elementor-widget.contact-form .elementor-field-required .elementor-field-label::after {
  content: " *";
  color: var(--accent-text);
}
.elementor-widget.contact-form .elementor-form .elementor-field-group :is(.elementor-field-textual, select.elementor-field) {
  width: 100%;
  font-family: inherit;
  font-size: 16px;
  color: var(--ink);
  background: var(--bg-soft);
  border: 0.5px solid transparent;
  border-radius: var(--radius-sm);
  padding: 14px 16px;
  outline: none;
  transition: background 0.2s ease, border-color 0.2s ease;
  -webkit-appearance: none;
  appearance: none;
}
.elementor-widget.contact-form select.elementor-field {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%236e6e73' d='M1 1l5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 16px center;
  padding-right: 44px;
}
.elementor-widget.contact-form textarea.elementor-field-textual {
  min-height: 150px;
  resize: vertical;
  line-height: 1.55;
}
.elementor-widget.contact-form .elementor-form .elementor-field-group :is(.elementor-field-textual, select.elementor-field):focus {
  background: #fff;
  border-color: var(--ink);
}
.elementor-widget.contact-form .elementor-field-type-submit { width: 100%; }
.elementor-widget.contact-form .elementor-form .elementor-field-type-submit .elementor-button {
  width: 100%;
  justify-content: center;
  background: var(--ink);
  color: #fff;
  border: none;
  border-radius: var(--radius-pill);
  padding: 13px 26px;
  font: inherit;
  font-size: 16px;
  font-weight: 500;
  transition: background 0.25s ease, transform 0.25s ease;
}
.elementor-widget.contact-form .elementor-form .elementor-field-type-submit .elementor-button:hover { background: #000; transform: translateY(-1px); }

/* Absolutely positioned media and scrims inside an HTML widget.
   Elementor's base CSS sets `.elementor-widget { position: relative }`, so a
   child with `position:absolute; inset:0` sizes itself to a wrapper that is a
   zero-height flex item, and disappears. It also still takes part in the flex
   row, which is why the hero copy sits pushed right in the editor.
   Making the WRAPPER the absolute layer fixes both at once.                    */
.e-con:is(.bhero, .bandwait, .page-hero, .error-page) > .elementor-widget-html:first-child {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.e-con.bhero > .elementor-widget-html:first-child > .bhero-scrim,
.e-con.bandwait > .elementor-widget-html:first-child > .bandwait-media { inset: 0; }

/* The scroll cue is absolute against the hero, same story. */
.e-con.bhero > .elementor-widget:has(> .scroll-cue) { position: static; }


/* Overlay header on the front page only.
   The prototype uses .nav--over, which cannot live on a global header template,
   so the class is added at runtime on the front page and the sticky moves to
   the Theme Builder wrapper. .nav--over is fixed in the prototype, so the
   wrapper is fixed here and the hero runs full bleed underneath it.
   .is-scrolled, which darkens it past 40px, is toggled by v2.js.               */
body.home .elementor-location-header,
body.front-page .elementor-location-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
}
body.home .nav.nav--over,
body.front-page .nav.nav--over {
  background: transparent;
  border-bottom-color: transparent;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  transition: background 0.4s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.4s ease;
}
body.home .nav.nav--over.is-scrolled,
body.front-page .nav.nav--over.is-scrolled {
  background: rgba(12, 15, 20, 0.78);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border-bottom-color: rgba(255, 255, 255, 0.10);
}
/* White chrome while transparent, on the widgets Elementor renders. */
body.home .nav--over .logo,
body.home .nav--over .elementor-widget.nav-links .elementor-item {
  color: #fff;
}
body.home .nav--over .elementor-widget.nav-links .elementor-item-active,
body.home .nav--over .elementor-widget.nav-links .elementor-item:hover { color: #fff; opacity: 1; }
body.home .nav--over .elementor-widget.nav-cta { background: #fff; color: var(--ink); }


/* 5. REVEAL ANIMATION -----------------------------------------------------
   The prototype hides .fade-up by default and reveals it with JavaScript.
   Elementor re-renders widget markup as the client types and re-rendered
   nodes are never observed, so sections would sit invisible while editing.
   Inverted: visible by default, the animation arms itself.                    */

.fade-up,
.fade-up--stagger > * { opacity: 1; transform: none; }

html.js-reveal .fade-up            { opacity: 0; transform: translateY(20px); }
html.js-reveal .fade-up.in         { opacity: 1; transform: translateY(0); }
html.js-reveal .fade-up--stagger > *    { opacity: 0; transform: translateY(16px); }
html.js-reveal .fade-up--stagger.in > * { opacity: 1; transform: translateY(0); }


/* 6. MARKER
   The diagnostic reads this to confirm the file loaded and in what order.     */
body { --lmb-child: "1.0.7"; }


/* 7. CUSTOMISATION --------------------------------------------------------
   Project overrides. Deliberate departures from the prototype live here.     */

/* Waitlist card: the three-colour gradient rule across the top is removed at
   the client's request. The radial glows inside the card stay.               */
.waitlist,
.e-con.waitlist {
  border-top: 0;
  border-image: none;
}

/* FAQ questions are real <button> elements, so Hello Elementor's default button
   styling applies on hover: pink fill, white text. The prototype only resets
   `button` at 0-0-1 and Hello's `button:hover` is 0-1-1, so it wins. Restated
   here at the same specificity, loaded later. */
.faq-q,
.faq-q:hover,
.faq-q:focus,
.faq-q:active,
.faq-q:focus-visible {
  background: none;
  border: none;
  box-shadow: none;
  text-decoration: none;
}
.faq-q:hover { color: var(--ink-soft); }
.faq-q:focus-visible {
  outline: 2px solid var(--accent-text);
  outline-offset: 3px;
}

/* Contact form, final. Scoped to this one widget and forced, because Elementor
   writes per-element form styling from the widget's Style tab and it has been
   winning. Clearing the Style tab on that widget is the real fix, and then the
   !important flags here can come out. */
.elementor-widget-form.contact-form .elementor-form-fields-wrapper {
  display: block !important;
  margin: 0 !important;
}
.elementor-widget-form.contact-form .elementor-field-group {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 9px !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 0 24px !important;
  padding: 0 !important;
}
.elementor-widget-form.contact-form .elementor-field-label {
  font-size: 14px !important;
  font-weight: 500 !important;
  color: var(--ink-soft) !important;
  margin: 0 !important;
}
.elementor-widget-form.contact-form .elementor-field-required .elementor-field-label::after {
  content: " *";
  color: var(--accent-text);
}
.elementor-widget-form.contact-form :is(input.elementor-field, select.elementor-field, textarea.elementor-field) {
  width: 100% !important;
  min-height: 0 !important;
  font-family: inherit !important;
  font-size: 16px !important;
  line-height: 1.4 !important;
  color: var(--ink) !important;
  background-color: var(--bg-soft) !important;
  border: 0.5px solid transparent !important;
  border-radius: var(--radius-sm) !important;
  padding: 14px 16px !important;
  box-shadow: none !important;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}
.elementor-widget-form.contact-form textarea.elementor-field {
  min-height: 150px !important;
  resize: vertical;
  line-height: 1.55 !important;
}
.elementor-widget-form.contact-form select.elementor-field {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='none' stroke='%236e6e73' stroke-width='1.6' d='M1 1.5l5 5 5-5'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 16px center !important;
  padding-right: 44px !important;
}
.elementor-widget-form.contact-form :is(input, select, textarea).elementor-field:focus {
  background-color: #fff !important;
  border-color: var(--ink) !important;
}
.elementor-widget-form.contact-form .elementor-field-type-submit {
  width: 100% !important;
  padding: 0 !important;
}
.elementor-widget-form.contact-form .elementor-field-type-submit .elementor-button,
.elementor-widget-form.contact-form .elementor-field-type-submit .elementor-button:hover,
.elementor-widget-form.contact-form .elementor-field-type-submit .elementor-button:focus {
  width: 100% !important;
  justify-content: center !important;
  background-color: var(--ink) !important;
  color: #fff !important;
  border: none !important;
  border-radius: var(--radius-pill) !important;
  padding: 13px 26px !important;
  font-size: 16px !important;
  font-weight: 500 !important;
  box-shadow: none !important;
}
.elementor-widget-form.contact-form .elementor-field-type-submit .elementor-button:hover {
  background-color: #000 !important;
}

.home header .elementor-nav-menu--main .elementor-nav-menu a,
.home header .elementor-heading-title {
    color: #fff;
}

header .elementor-heading-title {
    font-weight: 700 !important;
}
img.logo-mark {
    border-radius: 5px;
}

/* Four-card variant of .features. The base class is repeat(3, 1fr) at 0-1-0,
   so the modifier needs 0-3-0 to beat it. */
.e-con.e-con.features--2 {
  grid-template-columns: repeat(2, 1fr);
}
@media (max-width: 880px) {
  .e-con.e-con.features--2 { grid-template-columns: 1fr; }
}