/* Allow long unbreakable strings (email addresses) to wrap on narrow screens.
   Only takes effect when the text would otherwise overflow. */
.elementor-icon-box-title,
.elementor-icon-list-text {
  overflow-wrap: anywhere;
}

/* Reading measure. Long lines are hard to track back to the next line;
   50-75 characters is the comfortable range. These two centred intro
   paragraphs were running 125 characters per line at 1245px wide. */
.elementor-element-4db7008 p,
.elementor-element-5402b42 p {
  max-width: 68ch;
  margin-left: auto;
  margin-right: auto;
}

/* Same cap for icon box body copy (was ~78 characters). Left aligned,
   so no centring needed. */
.elementor-icon-box-description {
  max-width: 68ch;
}

/* ============================================================
   Revolve page design system. Used by .rv-page templates.
   All colours inherit Elementor Global Colors, so changing the
   Accent global recolours every accent element site-wide.
   ============================================================ */
.rv-page{
  --ink:var(--e-global-color-primary,#212121);
  --body:var(--e-global-color-text,#333);
  --muted:var(--e-global-color-secondary,#54595F);
  --line:#ececec;
  --accent:var(--e-global-color-accent,#212121);
  --gap:clamp(48px,7vw,96px);
  color:var(--body);font-size:16px;line-height:1.5;
}
.rv-page *{box-sizing:border-box}
.rv-page h1,.rv-page h2,.rv-page h3{font-family:Roboto,sans-serif;font-weight:600;color:var(--ink);line-height:1.2;margin:0}
.rv-page p{margin:0}
.rv-page > section{padding:0;margin:0 0 var(--gap)}
.rv-page > section:last-child{margin-bottom:0}
.rv-page .rv-rule{height:1px;background:var(--line);border:0;margin:0 0 var(--gap)}

/* hero */
.rv-page .rv-hero{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,64px);align-items:center}
.rv-page .rv-hero--text{display:block;max-width:60ch}
.rv-page .rv-eyebrow{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:600;margin:0 0 16px}
.rv-page .rv-hero h1{font-size:clamp(2rem,4.2vw,3.15rem);letter-spacing:-.02em}
.rv-page .rv-lede{font-size:1.0625rem;color:var(--muted);margin:20px 0 0;max-width:52ch;line-height:1.6}
.rv-page .rv-figure{margin:0}
.rv-page .rv-figure img{width:100%;height:auto;display:block;border-radius:2px}

/* section heads */
.rv-page .rv-sec-head{max-width:62ch;margin:0 0 clamp(28px,3.5vw,44px)}
.rv-page .rv-sec-head h2{font-size:clamp(1.5rem,2.6vw,2.05rem)}
.rv-page .rv-sec-head p{color:var(--muted);margin:12px 0 0;line-height:1.6}

/* item grids */
.rv-page .rv-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(24px,3vw,40px)}
.rv-page .rv-item{padding:20px 0 0;border-top:1px solid var(--line)}
.rv-page .rv-num{font-size:.7rem;font-weight:600;letter-spacing:.14em;color:var(--accent);display:block;margin:0 0 10px}
.rv-page .rv-item h3{font-size:1.0625rem;margin:0 0 8px}
.rv-page .rv-item p{color:var(--muted);font-size:.9375rem;line-height:1.6}

/* service blocks: description left, benefits right */
.rv-page .rv-svc{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,4vw,56px);padding:clamp(28px,3.5vw,40px) 0;border-top:1px solid var(--line)}
.rv-page .rv-svc h2{font-size:clamp(1.35rem,2.2vw,1.75rem);margin:0 0 14px}
.rv-page .rv-svc p{color:var(--muted);line-height:1.65;max-width:52ch}
.rv-page .rv-svc-label{font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 14px}
.rv-page .rv-svc ul{list-style:none;margin:0;padding:0}
.rv-page .rv-svc li{position:relative;padding:0 0 0 20px;margin:0 0 10px;color:var(--body);font-size:.9375rem;line-height:1.55}
.rv-page .rv-svc li:before{content:"";position:absolute;left:0;top:.62em;width:8px;height:1px;background:var(--accent)}

/* contact detail cards */
.rv-page .rv-places{display:grid;grid-template-columns:1fr;max-width:52ch}
.rv-page .rv-contact-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(20px,3vw,36px)}
.rv-page .rv-place{border-left:2px solid var(--accent);padding:2px 0 2px 18px}
.rv-page .rv-place h3{font-size:1rem;margin:0 0 6px}
.rv-page .rv-place p{color:var(--muted);font-size:.9375rem;line-height:1.7}
.rv-page .rv-place a{color:var(--body);text-decoration:none;border-bottom:1px solid var(--line)}
.rv-page .rv-place a:hover{border-bottom-color:var(--accent)}

/* map */
.rv-page .rv-map{border-radius:2px;overflow:hidden;line-height:0}
.rv-page .rv-map iframe{width:100%;height:clamp(280px,38vw,440px);border:0;display:block}

/* cta */
.rv-page .rv-cta{background:#f4f4f4;color:var(--body);padding:clamp(32px,4.5vw,56px);border-radius:2px;display:grid;grid-template-columns:1fr auto;gap:32px;align-items:center}
.rv-page .rv-cta h2{color:var(--ink);font-size:clamp(1.3rem,2.2vw,1.75rem)}
.rv-page .rv-cta p{margin:12px 0 0;color:var(--muted);max-width:52ch;line-height:1.6}
.rv-page .rv-btn{display:inline-block;background:var(--accent);color:#fff !important;text-decoration:none;padding:14px 28px;border-radius:2px;font-weight:500;font-size:.9375rem;white-space:nowrap;font-family:Roboto,sans-serif}

@media(max-width:880px){
  .rv-page .rv-hero,.rv-page .rv-grid,.rv-page .rv-svc,.rv-page .rv-contact-grid,.rv-page .rv-cta{grid-template-columns:1fr}
  .rv-page .rv-figure{order:-1}
  .rv-page .rv-btn{justify-self:start}
}

/* --- logo walls: greyscale so they support the page rather than compete
       with it; colour returns on hover --- */
.rv-page .rv-logos{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:clamp(18px,2.6vw,36px);align-items:center}
.rv-page .rv-logos img{width:100%;height:36px;object-fit:contain;display:block;filter:grayscale(1);opacity:.5;transition:opacity .2s ease,filter .2s ease}
.rv-page .rv-logos img:hover{filter:grayscale(0);opacity:1}
.rv-page .rv-logos--sm img{height:28px}

/* three-up grid for service summaries */
.rv-page .rv-grid--3{grid-template-columns:repeat(3,1fr)}

/* full-bleed-ish media block */
.rv-page .rv-media{margin:0}
.rv-page .rv-media img{width:100%;height:auto;display:block;border-radius:2px}

/* split section: text one side, image the other */
.rv-page .rv-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);align-items:center}

@media(max-width:880px){
  .rv-page .rv-grid--3,.rv-page .rv-split{grid-template-columns:1fr}
}

/* --- photo hero: full-bleed image with a left-weighted scrim so the
       headline stays legible over any part of the photo --- */
.rv-page .rv-hero--photo{position:relative;display:flex;align-items:center;min-height:clamp(400px,60vh,620px);padding:clamp(28px,5vw,64px);border-radius:2px;overflow:hidden;background:#111}
.rv-page .rv-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;border-radius:0}
.rv-page .rv-hero--photo:after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(12,12,12,.9) 0%,rgba(12,12,12,.68) 42%,rgba(12,12,12,.18) 100%)}
.rv-page .rv-hero-inner{position:relative;z-index:2;max-width:54ch}
.rv-page .rv-hero--photo h1{color:#fff}
.rv-page .rv-hero--photo .rv-lede{color:#e4e4e4;max-width:50ch}
.rv-page .rv-hero--photo .rv-eyebrow{color:#fff;opacity:.72}
.rv-page .rv-hero--photo .rv-btn{background:#fff;color:#141414 !important}
@media(max-width:880px){.rv-page .rv-hero--photo:after{background:linear-gradient(180deg,rgba(12,12,12,.72) 0%,rgba(12,12,12,.86) 100%)}}

/* industries strip */
.rv-page .rv-tags{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0;list-style:none}
.rv-page .rv-tags li{font-size:.8125rem;color:var(--muted);border:1px solid var(--line);border-radius:2px;padding:7px 13px}
