/* Charlotte's Home Care - WordPress additions. Generated by chc_sync_design(). Do not hand-edit.
   Elementor (free) cannot set data-* attributes on containers, so the design's
   data-reveal / data-stagger hooks also answer to the classes .rv .rv-left .rv-right
   .rv-scale and .stg, set in the container's Advanced > CSS Classes field. */
.js .rv:not(.in){opacity:0}
.js .rv.in{animation:revealUp .8s var(--ease) forwards}
.js .rv-left.in{animation-name:revealLeft}
.js .rv-right.in{animation-name:revealRight}
.js .rv-scale.in{animation-name:revealScale}
.js .stg:not(.in) > *{opacity:0}
.js .stg.in > *{animation:revealUp .7s var(--ease) forwards}
.js .stg.in > *:nth-child(1){animation-delay:.04s}
.js .stg.in > *:nth-child(2){animation-delay:.10s}
.js .stg.in > *:nth-child(3){animation-delay:.16s}
.js .stg.in > *:nth-child(4){animation-delay:.22s}
.js .stg.in > *:nth-child(5){animation-delay:.28s}
.js .stg.in > *:nth-child(6){animation-delay:.34s}
/* cost meters: the design hardcodes the four widths by position; the widget
   carries them as --w so the client can edit each figure. Same specificity as
   the design's rule, printed later, so it wins. */
.costs.in .costbar[style] .costbar__meter i{width:var(--w)}
/* Elementor gives every container and widget width:100%. Inside the design's
   space-between heading rows (.svc__head) that forced the right-hand item onto
   its own line; the design's children shrink to fit. */
.svc__head > .e-con,.svc__head > .elementor-widget{width:auto;max-width:100%}
/* In the design a paragraph's bottom margin collapses with the top margin of the
   element after it (chips, a button row, the trust rows). Flex items never
   collapse, so inside a container both margins would add up. A text widget
   marked chc-collapse drops its last paragraph's margin and lets the next
   element's top margin stand, which is the value the design's collapse produced. */
.elementor-widget.chc-collapse > :last-child{margin-bottom:0}
/* Elementor resets text-align on every container (initial = start), which breaks
   the design's inherited centring (.nf, .phero--center). Inherit instead; a
   container's own Text Align control still writes its variable on the element. */
.e-con{--text-align:inherit}
/* the design's handful of inline styles on layout blocks, as classes a container
   can carry (Elementor free has no per-element CSS) */
.sec.chc-pt0{padding-top:0}
.chc-max420{max-width:420px}.chc-max700{max-width:700px}.chc-max900{max-width:900px}
.chc-left{text-align:left}
/* the design's `<h2 style=\"margin-bottom:1rem\">` above a form; must outrank .rail__box h2 (0,2,1) */
.elementor-widget.chc-mb16 > .elementor-heading-title{margin-bottom:1rem}
/* FAQ answers on service pages: the design has bare text inside .acc__body, the
   editor stores paragraphs; .prose p would otherwise resize them */
.prose .acc__body p{font-size:inherit;line-height:inherit}
/* a grid item that overlaps its neighbour with a negative margin relies on width:auto
   (stretch); Elementor's width:100% made the card 4rem narrower and rewrapped its copy */
.e-con.lay-overlap__card{width:auto}
/* four service categories (client update, Sep 2026): the design's .svc__grid is three
   across; a cards widget marked svc--4 lays its four cards in one row on desktop */
.svc--4 .svc__grid{grid-template-columns:repeat(4,1fr)}
@media (max-width:1080px){.svc--4 .svc__grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.svc--4 .svc__grid{grid-template-columns:1fr}}
/* Elementor's `.elementor img{border-radius:0;box-shadow:none}` reset squared the logo and
   dropped its shadow; the design crops it to a circle in the header and the footer */
.elementor .brand__mark{border-radius:50%;box-shadow:var(--shadow-sm)}
.elementor .ft__brand img{border-radius:50%}
/* header bar white (client, 10 Sep 2026) so the logo's white ground blends; the design's
   translucency and blur are kept */
.hd{background:rgba(255,255,255,.92)}
/* form fields must never dictate layout: a <select>'s intrinsic width is its longest
   option, and grid items refuse to shrink below it. In the design that quietly widened
   the contact page's form column; inside Elementor containers (min-width:0) the same
   row spilled out of its card once a longer option was added. */
.form > *,.form__row > .field,.field{min-width:0}
.field input,.field select,.field textarea{min-width:0;width:100%}
/* the design's contact split renders near-even (569/579 at 1220) because the form column
   grows to the fields; keep that look deterministically, and let the design's own
   max-width:900px rule stack the columns as before */
@media (min-width:901px){.split.chc-split-even{grid-template-columns:1fr 1fr}}
/* contact: the two columns differ in height (contact list vs form + Follow Us), so they start together at the top */
.split.chc-split-even{align-items:start}
/* contact rows with a small label above the value (CHC Sidebar Box rows that have a label) */
.rail__item{display:block}
.rail__label{display:block;padding:.6rem .7rem 0 calc(.7rem + 2px);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.rail__nav .rail__item > a{padding-top:.15rem}
.rail__val{display:block;padding:.15rem .7rem .5rem calc(.7rem + 2px);font-size:.9rem;line-height:1.55;color:var(--body)}
.rail__item > a,.rail__val{overflow-wrap:anywhere}
/* Follow Us (CHC Social Links) */
.chc-social__text{font-size:.9rem;line-height:1.6;margin:0 0 .9rem}
.chc-social__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.chc-social__list a{display:inline-flex;align-items:center;gap:.6rem;min-height:44px;padding:.35rem 1.1rem .35rem .4rem;border:1px solid var(--line);border-radius:999px;background:var(--white);font-size:.9rem;font-weight:600;color:var(--ink);transition:border-color .25s,color .25s}
.chc-social__list svg{width:34px;height:34px;padding:8px;border-radius:50%;background:var(--red-wash);color:var(--red);flex:none;transition:background .25s,color .25s}
.chc-social__list a:hover{border-color:var(--red);color:var(--red)}
.chc-social__list a:hover svg{background:var(--red);color:#fff}
.chc-social--empty p{margin:0;font-size:.85rem;color:var(--mut)}
/* about: the founder's quote, set apart from the bio */
.chc-quote{font-family:var(--serif);font-size:1.12rem;line-height:1.55;color:var(--ink);border-left:2px solid var(--gold);padding-left:1rem}
.chc-quote strong{display:block;margin-top:.45rem;font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
/* about: the founder bio is long, so the photo stays in view while the card scrolls beside
   it (desktop only; below 1081px the design's stacked overlap is unchanged) */
@media (min-width:1081px){
  .lay-overlap.chc-overlap-long{align-items:start}
  .lay-overlap.chc-overlap-long > .lay-overlap__img{position:sticky;top:calc(var(--topbar-h) + 84px)}
}
/* careers: the three hiring lists sit in linen panels on the design's three-up grid */
.lay-trio > .panel{display:flex;flex-direction:column}
.lay-trio > .panel .tick{margin-top:.9rem}
/* careers: eight benefits, four across */
.chc-benefits .scen__cards{grid-template-columns:repeat(4,1fr)}
.chc-benefits .scard{align-items:center}
.chc-benefits .scard b{margin-bottom:0}
@media (max-width:1080px){.chc-benefits .scen__cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.chc-benefits .scen__cards{grid-template-columns:1fr}}
/* in-page jump targets (careers: #apply, #benefits) land below the sticky header */
section.e-con[id]{scroll-margin-top:96px}
/* home welcome: the team video replaces the two arches (client media, Sep 2026) */
.intro__art.chc-intro-video{grid-template-columns:1fr;gap:.8rem}
.elementor-widget.chc-video{border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow);background:var(--linen)}
.chc-video-cap{margin:0;font-size:.88rem;line-height:1.5;color:var(--mut)}
.chc-video-cap strong{color:var(--ink);font-weight:600}
.chc-video-cap span{margin-left:.4rem;font-variant-numeric:tabular-nums}
/* careers hero: the team member stands right of centre; keep her in frame at every width */
.phero--overlay .phero__bg.chc-focus-right img{object-position:62% 35%}
/* service area: the cities grouped under their county (client update, Sep 2026) */
.chc-sa__groups{margin:1.6rem 0 0;columns:2;column-gap:.8rem}
.chc-sa__group{break-inside:avoid;margin:0 0 .9rem}
.chc-sa__county{margin:0;padding:.35rem .7rem .2rem calc(.7rem + 2px);font-family:var(--sans);font-size:.68rem;font-weight:600;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;color:var(--mut)}
.chc-sa__groups .chc-sa__list{margin:0;grid-template-columns:1fr;gap:.1rem}
.chc-sa__groups .chc-sa__rowco{display:none}
@media (max-width:340px){.chc-sa__groups{columns:1}}
/* testimonials: the design quote cards; two reviews share a row, a single one sits centred */
.tst__grid--1{grid-template-columns:minmax(0,760px);justify-content:center}
.tst__grid--2{grid-template-columns:repeat(2,1fr)}
@media (max-width:640px){.tst__grid--1,.tst__grid--2{grid-template-columns:1fr}}
.quote__mark{display:block}
.quote blockquote{margin:0;padding:0;border:0}
.quote blockquote p{margin:0}
.quote blockquote p + p{margin-top:.8rem}
/* careers: two panels once the job positions merged into the hiring list */
.lay-trio.chc-duo{grid-template-columns:1.2fr 1fr}
@media (max-width:640px){.lay-trio.chc-duo{grid-template-columns:1fr}}
.lay-trio > .panel > .chc-panel-cta{margin-top:auto;padding-top:1.4rem}
/* announcement bar: two numbers and the email stay on one line each; the tagline, then the
   area link, then the email give way as the screen narrows (both numbers always show) */
.topbar__left .topbar__tel{flex:none;white-space:nowrap}
@media (max-width:1000px){.topbar__note{display:none}}
@media (max-width:760px){.topbar__mail{display:none}}
@media (max-width:560px){.topbar__left .topbar__tel[href^=mailto]{display:none}}
/* decorative layers position against the section, not the zero-height widget box */
.elementor-widget-chc-atmos{position:static}
/* the design attaches the hero animations to elements that are widget wrappers here */
.hero .elementor-widget.hero__lead-w{animation:fadeUp .8s var(--ease) .34s both}
.hero .elementor-widget.hero__proof-w{animation:fadeUp .8s var(--ease) .54s both}
.motion-done .hero .elementor-widget.hero__lead-w,.motion-done .hero .elementor-widget.hero__proof-w{animation:none!important;opacity:1!important;transform:none!important}
@media (prefers-reduced-motion:reduce){
  .js .rv,.js .stg > *{opacity:1!important;transform:none!important;animation:none!important}
  .hero .elementor-widget.hero__lead-w,.hero .elementor-widget.hero__proof-w{animation:none!important;opacity:1!important;transform:none!important}
}
