/*
   GENERATED by nativize.py -- do not edit, it is overwritten.
   Bridges Elementor's container defaults to Kent's CSS on the sections
   converted to native widgets. Every declaration below is copied out of
   style.css; none of it is written by hand.
*/

/*
   1. Elementor wraps every widget in a div. Where Kent's parent is a flex or
      grid container that wrapper becomes the flex item and his real child stops
      being one -- .hero-badge went from 166px wide to 607 and the row stacked.
      display:contents removes the wrapper from layout entirely, so the rendered
      tree has exactly the parent/child relationships he wrote. Same fix already
      used for wp_nav_menu's <li> at the foot of style.css.

      It also retires Elementor's inter-widget margin, which is not part of his
      rhythm -- his own element margins already set it.

      Frontend only. In the editor the wrappers stay real boxes, or widgets
      become impossible to select and drag.
*/
body:not(.elementor-editor-active) .e-con.kent > .elementor-widget { display: contents; }

/*
   2. Back to nothing, so a container whose classes say nothing about spacing
      inherits Kent's nothing and not Elementor's kit values.

      `div.e-con:where(.kent)` is deliberate: one element + one class =
      specificity (0,1,1). That beats Elementor's `.e-con` defaults at (0,1,0)
      and LOSES to every descendant selector Kent wrote at (0,2,0) --
      `.hero-portrait .photo { display: flex }` and its like. Written as
      `.e-con.kent` it was (0,2,0), tied with those, won on load order, and
      flattened the portrait frame. :where() keeps the .kent scoping without
      paying specificity for it.

      Every value here is the CSS initial, so Kent's rules and the browser's
      defaults behave as they did before Elementor was in the tree. width
      included: `.e-con` forces 100%, where his divs sized to content as flex
      and grid items.

      min-width matters on /book/ and nowhere else. Elementor sets
      `.e-con { min-width: 0 }`, which lets a grid item shrink below its content.
      Kent's booking form has a wide min-content, so with min-width:0 the columns
      narrowed and the form spilled out of its card instead of widening it.
      Neither version fits 390 -- that page has a horizontal overflow predating
      all of this -- but converting a page is not the moment to change how it
      breaks.
*/
div.e-con:where(.kent) {
  display: block; gap: 0; padding: 0; margin: 0;
  width: auto; min-width: auto;
}

/*
   2b. The flex properties come from `.e-con.e-flex` at (0,2,0), not from
       `.e-con`, so the rule above at (0,1,1) never reached them. Elementor
       defaults a container to flex-direction:column; Kent writes
       `.hero-badges { display: flex }` and relies on the CSS initial `row`, so
       he never overrides it -- and his three-across badge row and four-across
       trust bar both rendered stacked. Matching e-flex explicitly makes this
       (0,2,1): above Elementor, below every lifted rule, which is also (0,2,1)
       and comes later.
*/
div.e-con.e-flex:where(.kent) {
  flex-direction: row; flex-wrap: nowrap;
  align-items: normal; justify-content: normal; align-content: normal;
}

/*
   3. Kent's rules, verbatim, one specificity step up.
*/
h1.elementor-heading-title, h2.elementor-heading-title, h3.elementor-heading-title, h4.elementor-heading-title { font-family: var(--font-serif); font-optical-sizing: auto; font-weight: 600; margin: 0 0 .5em; color: var(--color-dark); }
div.e-con.container { max-width: var(--container); margin: 0 auto; padding: 0 24px; }
div.e-con.section { padding: 88px 0; }
div.e-con.section-tight { padding: 56px 0; }
div.e-con.section-alt { background: var(--color-bg-alt); }
div.e-con.section-tint { background: var(--color-bg-tint); }
.section-dark h1.elementor-heading-title, .section-dark h2.elementor-heading-title, .section-dark h3.elementor-heading-title { color: var(--color-white); }
div.e-con.section-head { max-width: 640px; margin-bottom: 48px; }
div.e-con.section-head.center { margin-left: auto; margin-right: auto; text-align: center; }
h1.elementor-heading-title { font-size: clamp(36px, 5vw, 56px); line-height: 1.08; letter-spacing: -.015em; font-weight: 600; }
h2.elementor-heading-title { font-size: clamp(27px, 3.4vw, 38px); line-height: 1.18; letter-spacing: -.01em; }
h3.elementor-heading-title { font-size: 20px; line-height: 1.32; font-weight: 600; }
div.e-con.hero { background: radial-gradient(120% 140% at 15% 0%, #386c5c 0%, var(--color-primary) 45%, var(--color-primary-dark) 100%); color: #fff; padding: 76px 0 90px; position: relative; overflow: hidden; }
div.e-con.hero-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: 56px; align-items: center; position: relative; }
.hero h1.elementor-heading-title { color: #fff; }
div.e-con.hero-badges { display: flex; gap: 26px; margin-top: 40px; flex-wrap: wrap; }
div.e-con.hero-portrait { text-align: center; max-width: 300px; margin-left: auto; margin-right: auto; }
.hero-portrait div.e-con.photo { width: 100%; aspect-ratio: 1/1; border-radius: 50%; overflow: hidden; margin: 0 auto 20px; background: linear-gradient(160deg,#cfe0d6,#8fb39f); display:flex; align-items:center; justify-content:center; border: 4px solid rgba(255,255,255,.35); box-shadow: 0 16px 40px rgba(0,0,0,.18); }
@media (max-width: 860px) { div.e-con.hero-grid { grid-template-columns: 1fr; } }
div.e-con.grid { display: grid; gap: 22px; }
div.e-con.grid-5 { grid-template-columns: repeat(5, 1fr); }
div.e-con.grid-4 { grid-template-columns: repeat(4, 1fr); }
div.e-con.grid-3 { grid-template-columns: repeat(3, 1fr); }
div.e-con.grid-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 1080px) { div.e-con.grid-5 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1080px) { div.e-con.grid-4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px) { div.e-con.grid-5, div.e-con.grid-4, div.e-con.grid-3, div.e-con.grid-2 { grid-template-columns: 1fr; } }
div.e-con.card { background: var(--color-white); border-radius: var(--radius-md); padding: 30px 26px; border: 1px solid var(--color-border); }
div.e-con.card-flat { background: transparent; border: none; padding: 0; }
.card h3.elementor-heading-title { margin-bottom: 8px; }
div.e-con.process-row { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; position: relative; }
div.e-con.process-step { position: relative; text-align: center; padding: 0 8px; }
@media (max-width: 860px) { div.e-con.process-row { grid-template-columns: 1fr 1fr; row-gap: 32px; } }
@media (max-width: 520px) { div.e-con.process-row { grid-template-columns: 1fr; } }
div.e-con.stat-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
div.e-con.stat-box { background: var(--color-white); border: 1px solid var(--color-border); border-top: 3px solid var(--color-accent); border-radius: var(--radius-md); padding: 22px 16px; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 112px; }
@media (min-width: 640px) { div.e-con.stat-grid { grid-template-columns: repeat(4, 1fr); } }
div.e-con.case-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; align-items: center; }
@media (max-width: 860px) { div.e-con.case-grid { grid-template-columns: 1fr; } }
div.e-con.testi-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
div.e-con.testi-card { background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 28px; display: flex; flex-direction: column; }
@media (max-width: 860px) { div.e-con.testi-grid { grid-template-columns: 1fr; } }
div.e-con.trust-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 40px; padding: 26px 0; }
div.e-con.cta-banner { background: linear-gradient(120deg, var(--color-primary-dark), var(--color-primary)); color: #fff; text-align: center; padding: 76px 0; border-radius: var(--radius-lg); }
.cta-banner h2.elementor-heading-title { color: #fff; }
div.e-con.page-hero { padding: 64px 0 48px; text-align: center; }
.page-hero div.e-con.section-head { margin: 0 auto; }
.footer-col h4.elementor-heading-title { color: #fff; font-family: var(--font-mono); font-weight: 500; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; margin-bottom: 18px; }
div.e-con.text-center { text-align: center; }
div.e-con.reveal { opacity: 0; transform: translateY(16px); transition: opacity .5s ease, transform .5s ease; }
div.e-con.reveal.in { opacity: 1; transform: none; }
div.e-con.notice { display: flex; gap: 18px; background: var(--color-primary-light); border: 1px solid #cfe0d6; border-radius: var(--radius-md); padding: 26px; align-items: flex-start; }
.notice h3.elementor-heading-title { margin-bottom: 8px; }
div.e-con.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
@media (max-width: 860px) { div.e-con.two-col { grid-template-columns: 1fr; } }
div.e-con.form-card { background: var(--color-white); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 34px; box-shadow: var(--shadow-md); }
div.e-con.article-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; padding: 22px 0; border-bottom: 1px solid var(--color-border); }
.article-row h3.elementor-heading-title { font-size: 16.5px; margin-bottom: 6px; }
div.e-con.case-study { border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; margin-bottom: 24px; }
div.e-con.case-study-head { padding: 22px 28px; background: var(--color-primary-light); }
div.e-con.case-study-body { padding: 26px 28px; display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; }
@media (max-width: 860px) { div.e-con.case-study-body { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { div.e-con.case-study-body { grid-template-columns: 1fr; } }
@media (max-width: 620px) { div.e-con.notice { flex-direction: column; gap: 14px; } }

/*
   4. Inline style attributes off the containers Kent wrote them on. Elementor
      has no passthrough for a style attribute and dropping one changes the
      design, so each moves here under a class hashed from its own declarations
      -- stable across rebuilds, and identical styles collapse to one rule.

      LAST, and at the same (0,2,1) the lifted rules carry, so an inline style
      still beats the class rules for the element it was written on, which is
      what it did as an attribute. This is how Kent's per-page overrides work:
      /book/ narrows cards to 22px padding and the grid to an 18px gap inline,
      and at (0,2,0) those lost to the global .card and .grid, silently
      reverting that page to the site-wide spacing.
*/
div.e-con.kx-010d8b3 { max-width:820px; }
div.e-con.kx-07077f9 { text-align:center; }
div.e-con.kx-1000d8b { background:linear-gradient(160deg,#dbe7de,#8fb39f); }
div.e-con.kx-58b2847 { display:flex;gap:18px;align-items:flex-start;padding:22px; }
div.e-con.kx-7240976 { max-width:280px;margin:0 auto; }
div.e-con.kx-8d5e69b { padding:20px;margin-top:24px; }
div.e-con.kx-a355613 { margin-top:36px; }
div.e-con.kx-a8a94a6 { grid-template-columns:1fr;gap:18px;margin-bottom:36px; }
div.e-con.kx-a9b2a41 { align-items:center; }
div.e-con.kx-c152175 { border-bottom:1px solid var(--color-border); }
div.e-con.kx-f809cf6 { max-width:900px;margin:0 auto; }
