.elementor-kit-6{--e-global-color-primary:#00A4AB;--e-global-color-secondary:#212B52;--e-global-color-text:#212B52;--e-global-color-accent:#F89624;--e-global-color-63ec952:#0A7A7C;--e-global-color-457d595:#088787;--e-global-color-e29291e:#00A4AB;--e-global-color-c4a96fb:#7FDFE2;--e-global-color-8b34150:#F89624;--e-global-color-7ba2d21:#BC2526;--e-global-color-5a731df:#EE3434;--e-global-color-686fd80:#212B52;--e-global-color-9d64203:#0F1830;--e-global-color-1a37bd1:#0F1830;--e-global-color-9032ed3:#18213F;--e-global-color-08c90fe:#2C3865;--e-global-color-be7433f:#3B4878;--e-global-color-d916c9f:#8B93AC;--e-global-color-1c3cbcf:#CDD3E4;--e-global-color-3c75daa:#FBFBFC;--e-global-color-ab54bc1:#F1F4F6;--e-global-color-beef98b:#E3E7EC;--e-global-color-01d096f:#CBD2DB;--e-global-color-d829cf2:#5B6478;--e-global-color-e37aeec:#AAB2C9;--e-global-color-36fe03a:#8B93AC;--e-global-color-0faf10d:#CDD3E4;--e-global-color-9dcd101:#FFFFFF;--e-global-typography-primary-font-family:"Sora";--e-global-typography-primary-font-weight:700;--e-global-typography-secondary-font-family:"Sora";--e-global-typography-secondary-font-weight:700;--e-global-typography-text-font-family:"Sora";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Sora";--e-global-typography-accent-font-weight:800;background-color:#FBFBFC;font-family:var( --e-global-typography-primary-font-family ), 'Sora', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;font-weight:var( --e-global-typography-primary-font-weight );}.elementor-kit-6 button,.elementor-kit-6 input[type="button"],.elementor-kit-6 input[type="submit"],.elementor-kit-6 .elementor-button{background-color:var( --e-global-color-e29291e );font-family:"Sora", 'Sora', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;font-size:16px;font-weight:600;line-height:1px;letter-spacing:-0.01px;text-shadow:0px 0px 0px rgba(0,0,0,0.3);color:#212B52;border-style:none;border-radius:100px 100px 100px 100px;padding:14px 26px 14px 26px;}.elementor-kit-6 button:hover,.elementor-kit-6 button:focus,.elementor-kit-6 input[type="button"]:hover,.elementor-kit-6 input[type="button"]:focus,.elementor-kit-6 input[type="submit"]:hover,.elementor-kit-6 input[type="submit"]:focus,.elementor-kit-6 .elementor-button:hover,.elementor-kit-6 .elementor-button:focus{background-color:#0A7A7C;color:#FFFFFF;}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --gutter-page:40px; --gutter-page-narrow:28px; --bar-utility:36px; --bar-main-scrolled:68px; --bar-tablet:80px; --bar-mobile:64px; --container-max:1240px; --radius-pill:100px; --radius-panel:14px; --radius-item:6px; --teal:#00a4ab; --navy:#212b52; --navy-deep:#0f1830; --navy-800:#18213f; --navy-600:#2c3865; --navy-500:#3b4878; --slate:#8b93ac; --mist:#cdd3e4; --teal-interactive:#0a7a7c; --teal-deep:#088787; --teal-light:#7fdfe2; --orange:#f89624; --red-deep:#bc2526; --red:#ee3434; --paper:#fbfbfc; --panel:#f1f4f6; --line:#e3e7ec; --line-strong:#cbd2db; --muted:#5b6478; --white:#ffffff; --mist-soft:#e7eaf2; --mist-faint:#aab2c9; --radius-form:16px; --e-gv-3047dbf:#ffffff; --e-gv-492e2a4:#cdd3e4; --e-gv-e91db1c:#212b52; --e-gv-46a4684:#00a4ab; --e-gv-7a5b095:#0a7a7c; --e-gv-a3dba81:100px; --e-gv-788228c:1240px; }
/* Start custom CSS *//* ============================================================
   PSC â€” Site Settings â†’ Custom CSS, master copy

   This is the single source of truth for the whole Custom CSS
   box on staging. Paste it WHOLE. Never append a snippet by
   hand â€” an unclosed brace in a hand-pasted block silently
   killed everything after it once already.

   Started 21 August 2026 as the header condense. Now also
   carries the pricing page rules V4's panel cannot reach, and
   (28 Sept) the .prose system for standard and legal pages.
   Filename kept unchanged because two build sequences cite it.

   Selectors are the global-class ids Elementor generates.
   From the header export:
     g-b1f883a  header-outer     g-1258011  utility-bar
     g-78ff214  header-main      g-f810908  main-inner
     g-ec7e46d  header-left      g-998465d  btn-primary

   These ids are stable unless a class is deleted and rebuilt.
   If the condense ever stops working, re-export and check them.

   15 OCTOBER 2026: Elementor now renders global classes by their
   LABEL (header-outer, btn-primary...), not the g- id, so every
   g- .elementor-kit-6 here had silently stopped matching: no sticky, no
   condense, and nav dropdowns hidden behind page content. All
   .elementor-kit-6s below now use the labels. The g- ids in the table
   above are kept for reference only.

   Pricing rules mostly use the class label directly (.card-bullet
   and friends) and those demonstrably match â€” the card ticks
   render. The closing band is no longer in this file at all: as
   of 25 September 2026 its entire layout lives on the cta-row /
   cta-copy / cta-actions classes in the V4 panel, and the
   data-id crutch that held it before was removed once the band
   verified portable off /pricing/. See the note where the block
   used to sit.
   ============================================================ */


/* --- Sticky ------------------------------------------------
   V4 offers no sticky control on atomic elements, so the header
   is pinned in CSS instead. Both bars move together because the
   pin is on header-outer, which wraps them. */

/* 15 Oct 2026: the pin moved up to Elementor's <header> wrapper.
   Sticky only sticks within its parent, and the wrapper is exactly
   as tall as header-outer, so pinning header-outer did nothing.
   header-outer keeps the z-index so dropdowns sit over the page. */
.elementor-location-header {
  position: sticky;
  top: 0;
  z-index: 100;
}

.header-outer {
  position: relative;
  z-index: 100;
}


/* --- Transitions -------------------------------------------
   On the elements that change, so it animates both directions. */

.header-main,
.header-left img,
.btn-primary {
  transition:
    min-height 180ms cubic-bezier(.2, .6, .2, 1),
    background-color 180ms cubic-bezier(.2, .6, .2, 1),
    width 180ms cubic-bezier(.2, .6, .2, 1),
    padding 180ms cubic-bezier(.2, .6, .2, 1),
    font-size 180ms cubic-bezier(.2, .6, .2, 1);
}


/* --- Scrolled state ----------------------------------------
   Elementor adds .elementor-sticky--effects to header-outer
   once the 80px offset is passed. Nothing hides. */

/* Main bar 92 -> 68. The translucency and blur belong here and
   only here â€” at rest over a white page they just look faded. */
/* !important: header-main's own V4 style sets the solid navy and
   outranks this rule otherwise (checked 15 Oct 2026). */
/* 16 Oct 2026: min-height needs !important too. header-main's
   V4 style sets min-height 92px at equal specificity and loads
   later, so the bar never condensed (stuck at 92). */
.elementor-sticky--effects .header-main {
  min-height: 68px !important;
  background-color: rgba(33, 43, 82, .92) !important;
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
}

/* Logo 132 -> 120. !important because V4 writes the width the
   image control sets as an inline style, which beats a class. */
.elementor-sticky--effects .header-left img {
  width: 120px !important;
}

/* CTA drops to the small size â€” the btn-sm values, applied
   without needing the class on the element. */
/* !important for the same reason as header-main (16 Oct 2026). */
.elementor-sticky--effects .btn-primary {
  font-size: 14px !important;
  min-height: 38px !important;
  padding: 10px 20px !important;
}


/* --- Disabled buttons --------------------------------------
   V4 has no disabled state. Keep the fill and text, drop the
   opacity. No grey substitute fill. */

.elementor-button[disabled],
.elementor-button.is-disabled,
.btn-primary[disabled],
.btn-primary[aria-disabled="true"] {
  opacity: .45;
  pointer-events: none;
}


/* --- Pricing: card bullets ---------------------------------
   Added 23 August 2026.

   The tick is a masked pseudo-element rather than an SVG
   element, because SVG upload is disabled on this site and
   V4's SVG element takes a media file, not pasted code.

   Masked, not a background image, so the colour comes from
   background-color â€” which is what makes the National card's
   override a single line. */

.card-bullet {
  position: relative;
  padding-left: 25px;   /* 15px tick + Design's 10px gap */
}

.card-bullet::before {
  content: "";
  position: absolute;
  left: 0;
  top: 3px;             /* optical centre of a 14px/1.5 line */
  width: 15px;
  height: 15px;
  background-color: #0a7a7c;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") no-repeat center / contain;
}

/* National card. Add card-bullet-navy as a second class on
   those five bullets, after card-bullet. */
.card-bullet-navy::before {
  background-color: #7fdfe2;
}


/* --- Pricing: National card top bar ------------------------
   V4's Border control sets one colour for all four sides, so
   the 4px teal marker on the emphasised tier cannot be done
   in the panel. Everything else about the card is on the
   price-card-navy class.

   Doubled .elementor-kit-6 so it beats price-card's own border
   regardless of which stylesheet Elementor prints last. */

.price-card.price-card-navy {
  border-top: 4px solid #00a4ab;
}


/* --- Section clipping --------------------------------------
   Added 24 August 2026.

   Any section carrying a motif that bleeds off its corner needs
   position: relative for the absolute placement and overflow:
   hidden to crop it. Without the crop the motif widens the page
   and produces a horizontal scrollbar.

   V4's Overflow control could not be located in the panel on
   this build, so it lives here. Apply section-clip to any
   section outer that holds an absolutely-placed motif â€”
   currently hero-outer and close-outer on the pricing page. */

.section-clip {
  position: relative;
  overflow: hidden;
}


/* --- Pricing: price line -----------------------------------
   V4's Align items control offers no baseline option. Needed
   so "From" sits on the same baseline as Â£22,000 on the
   Enterprise card, and so "per year" does the same once it
   moves beside the price at tablet and below. */

.price-line {
  align-items: baseline;
}


/* --- Pricing: closing band â€” now fully class-driven ---------
   25 September 2026.

   The closing band's layout used to live in this file, first as
   a doubled-.elementor-kit-6 INERT spec block and then as a single
   .elementor-element-0a0c494 { width: auto; } fix keyed to the
   pricing instance's data-id. Both have been removed.

   The band now carries its whole layout on three global classes
   built in the V4 panel â€” cta-row (on close-inner, beside
   section-inner), cta-copy (on close-text) and cta-actions (on
   close-actions) â€” so it travels by copy/paste with no CSS
   behind it. The root cause the old fix worked around is handled
   at source: cta-actions sets Width: auto explicitly, which
   overrides Elementor's .e-con width:100% default that had been
   collapsing close-text to zero.

   Nothing to maintain here. If the band ever misbehaves again,
   the cause is a value on one of those three classes or a stray
   local override, not this file. */


/* --- FAQ accordion -----------------------------------------
   Moved here 25 September 2026, out of the HTML widget that
   held the accordion on /pricing/. It lived inline in a
   <style> inside that widget, which meant every page carrying
   an FAQ shipped another copy of these same rules. In the
   master it ships once per site.

   Styles the .psc-faq markup block, which stays in the HTML
   widget. Drop that markup on any page that needs an FAQ and
   the look comes from here. The JSON-LD schema is NOT part of
   this â€” it is page-specific and written by hand per page
   against that page's visible answers, in a second widget.

   HARD-CODED HEX, recorded deliberately. A <style> inside an
   HTML widget cannot reach V4's variables, so these were typed
   as hex, and they stay hex here too. They are the only text
   colours on the site not coming from a variable. If the
   palette ever moves, this is the sweep list:
     #e3e7ec  detail divider (line)
     #212b52  summary text (navy)
     #0a7a7c  chevron (teal)
     #5b6478  answer text (muted)
   The focus ring rgba(0,164,171,.35) is the teal focus colour
   at 35% â€” a box-shadow, not a text colour. */

.psc-faq{max-width:900px;margin-top:26px}
.psc-faq details{border-bottom:1px solid #e3e7ec}
.psc-faq summary{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:24px 0;
  font:600 1.05rem/1.4 'Sora',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;
  letter-spacing:-.01em;color:#212b52;cursor:pointer;list-style:none}
.psc-faq summary::-webkit-details-marker{display:none}
.psc-faq summary svg{flex:none;color:#0a7a7c;transition:transform 180ms cubic-bezier(.2,.6,.2,1)}
.psc-faq details[open] summary svg{transform:rotate(180deg)}
.psc-faq summary:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(0,164,171,.35);border-radius:6px}
.psc-faq p{margin:0 0 28px;max-width:76ch;
  font:400 .95rem/1.62 'Sora',system-ui,-apple-system,'Segoe UI',Roboto,Arial,sans-serif;color:#5b6478}
@media (max-width:767px){
  .psc-faq summary{gap:16px;padding:18px 0;font-size:.95rem}
  .psc-faq p{margin-bottom:22px;font-size:.875rem;max-width:100%}
}


/* --- Prose system ------------------------------------------
   Added 28 September 2026. Templates A and G (standard and
   legal pages).

   The body copy is a legacy Text Editor, which has no Classes
   box, so it cannot be styled per element. Instead the Text
   Editor sits inside an atomic Div Block carrying the global
   class "prose". The class itself carries only the measure
   (68ch, set in the V4 panel). Every descendant rule is here.

   Session 6 adds the single-post Post Content widget's
   .elementor-kit-6 alongside .prose so posts and pages share this one
   ruleset. Do not fork it.

   Session 6 (6 October 2026): .elementor-widget-theme-post-content
   added alongside every .prose .elementor-kit-6, so single posts share
   this ruleset. The Text Editor on legal pages carries the raw
   CSS class "prose" (Advanced, CSS Classes); the old prose
   global class was deleted and is no longer used.

   Content classes typed into the Text Editor's Text tab:
     lead         opening paragraph, larger
     toc          "On this page" panel (legal pages)
     toc-label    its small caps label
     table-wrap   frame that scrolls a table sideways
     note         grey callout box
     note-label   its small caps label
     end          closing hairline + link row

   HARD-CODED HEX, recorded deliberately, same reason as the
   FAQ block. Sweep list if the palette moves:
     #212b52 ink      #0a7a7c link      #00a4ab link hover
     #5b6478 labels   #e3e7ec hairline  #f1f4f6 panel
   Values are Design's, from the 25 Sept build spec, section B. */

.prose h2,
.prose h3,
.prose p,
.prose li,
.prose blockquote,
.prose table,
.prose .note-label,
.prose .toc-label,
.elementor-widget-theme-post-content h2,
.elementor-widget-theme-post-content h3,
.elementor-widget-theme-post-content p,
.elementor-widget-theme-post-content li,
.elementor-widget-theme-post-content blockquote,
.elementor-widget-theme-post-content table,
.elementor-widget-theme-post-content .note-label,
.elementor-widget-theme-post-content .toc-label {
  font-family: 'Sora', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  color: #212b52;
}

.prose p,
.elementor-widget-theme-post-content p {
  margin: 0 0 1.1em;
  font-size: 1.0625rem;
  font-weight: 400;
  line-height: 1.65em;
  text-wrap: pretty;
}

.prose p.lead,
.elementor-widget-theme-post-content p.lead {
  font-size: 1.1875rem;
  line-height: 1.55em;
}

.prose h2,
.elementor-widget-theme-post-content h2 {
  margin: 2.2em 0 .6em;
  font-size: clamp(1.5rem, 1.2rem + .9vw, 2rem);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.2em;
  scroll-margin-top: 120px;   /* clears the 104px sticky header */
}

.prose h3,
.elementor-widget-theme-post-content h3 {
  margin: 1.8em 0 .5em;
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.3em;
}

/* Only the very first widget in .prose loses its top margin.
   A second Text Editor (after the cookie button) must keep the
   gap above its opening H2, so this is scoped to the first
   child of .prose, not to every :first-child. */
.prose > :first-child h2:first-child,
.prose > :first-child h3:first-child,
.prose > :first-child p:first-child,
.elementor-widget-theme-post-content > :first-child h2:first-child,
.elementor-widget-theme-post-content > :first-child h3:first-child,
.elementor-widget-theme-post-content > :first-child p:first-child {
  margin-top: 0;
}

.prose strong,
.elementor-widget-theme-post-content strong {
  font-weight: 600;
  color: inherit;
}

.prose a,
.elementor-widget-theme-post-content a {
  color: #0a7a7c;
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

.prose a:hover,
.elementor-widget-theme-post-content a:hover {
  color: #00a4ab;
}

.prose ul,
.prose ol,
.elementor-widget-theme-post-content ul,
.elementor-widget-theme-post-content ol {
  margin: 0 0 1.1em;
  padding-left: 1.25em;
}

.prose ol,
.elementor-widget-theme-post-content ol {
  padding-left: 1.4em;
}

.prose li,
.elementor-widget-theme-post-content li {
  margin: 0 0 .45em;
  padding-left: .25em;
  font-size: 1.0625rem;
  line-height: 1.65em;
}

.prose blockquote,
.elementor-widget-theme-post-content blockquote {
  margin: 2em 0;
  padding: 28px 0;
  border: 0;
  border-top: 1px solid #e3e7ec;
  border-bottom: 1px solid #e3e7ec;
  font-size: 1.375rem;
  font-weight: 600;
  letter-spacing: -.01em;
  line-height: 1.4em;
}

.prose blockquote p,
.elementor-widget-theme-post-content blockquote p {
  margin: 0;
  font: inherit;
  letter-spacing: inherit;
}

.prose .table-wrap,
.elementor-widget-theme-post-content .table-wrap {
  overflow-x: auto;
  margin: 1.6em 0;
  border: 1px solid #e3e7ec;
  border-radius: 14px;
  background: #ffffff;
}

.prose table,
.elementor-widget-theme-post-content table {
  width: 100%;
  min-width: 520px;
  margin: 0;
  border-collapse: collapse;
  font-size: .9375rem;
  line-height: 1.55em;
}

.prose th,
.elementor-widget-theme-post-content th {
  padding: 14px 18px;
  background: #f1f4f6;
  border-bottom: 1px solid #e3e7ec;
  font-weight: 600;
  text-align: left;
}

.prose td,
.elementor-widget-theme-post-content td {
  padding: 14px 18px;
  border-bottom: 1px solid #e3e7ec;
  vertical-align: top;
}

.prose tbody tr:last-child td,
.elementor-widget-theme-post-content tbody tr:last-child td {
  border-bottom: 0;
}

/* 16 Oct 2026: the legal pages' tables sit straight in .prose,
   not inside a .table-wrap, so the 520px min-width pushed the
   whole page sideways at 390px (Privacy and Cookies scrolled
   horizontally). Below tablet the table shrinks to the column
   instead; two-column tables read fine at that width. */
@media (max-width: 767px) {
  .prose table,
  .elementor-widget-theme-post-content table {
    min-width: 0;
  }
  .prose th,
  .prose td,
  .elementor-widget-theme-post-content th,
  .elementor-widget-theme-post-content td {
    padding: 12px;
    overflow-wrap: anywhere;
  }
}

.prose .note,
.elementor-widget-theme-post-content .note {
  margin: 1.6em 0;
  padding: 22px 24px;
  background: #f1f4f6;
  border-radius: 14px;
}

.prose .note p,
.elementor-widget-theme-post-content .note p {
  margin: 0;
  font-size: 1rem;
  line-height: 1.6em;
}

.prose .note-label,
.prose .toc-label,
.elementor-widget-theme-post-content .note-label,
.elementor-widget-theme-post-content .toc-label {
  margin: 0 0 8px;
  font-size: .74rem;
  font-weight: 600;
  letter-spacing: .16em;
  line-height: 1.2em;
  text-transform: uppercase;
  color: #5b6478;
}

.prose .toc,
.elementor-widget-theme-post-content .toc {
  margin: 2em 0 2.4em;
  padding: 22px 24px;
  background: #f1f4f6;
  border-radius: 14px;
}

.prose .toc-label,
.elementor-widget-theme-post-content .toc-label {
  margin-bottom: 12px;
}

.prose .toc ol,
.elementor-widget-theme-post-content .toc ol {
  display: grid;
  gap: 8px;
  margin: 0;
  padding-left: 1.4em;
  font-size: .9375rem;
  line-height: 1.5em;
}

.prose .toc li,
.elementor-widget-theme-post-content .toc li {
  margin: 0;
  padding-left: 0;
  font-size: inherit;
  line-height: inherit;
}

.prose .end,
.elementor-widget-theme-post-content .end {
  margin-top: 3em;
  padding-top: 24px;
  border-top: 1px solid #e3e7ec;
}

.prose .end a,
.elementor-widget-theme-post-content .end a {
  font-size: .9375rem;
  font-weight: 600;
  text-decoration: none;
}


/* --- Reduced motion ----------------------------------------
   The condense still happens, it just doesn't animate. */

@media (prefers-reduced-motion: reduce) {
  .header-main,
  .header-left img,
  .btn-primary {
    transition: none;
  }
}


/* --- Anchor offset, #book ----------------------------------
   Added 18 Sep 2026. Every Book a demo button on the pricing
   page links to #book, the CSS ID on form-outer. The header is
   sticky at 104px total, so without this the jump lands with
   "Book your walkthrough" hidden underneath it.

   120 = the 104px sticky header plus breathing room.
   Elementor's own Scrolling Offset setting does the same job,
   but it has moved between versions and could not be found on
   this install. */

#book {
  scroll-margin-top: 120px;
}


/* --- Pricing: form submit button ---------------------------
   18 Sep 2026. Nothing needed here â€” recorded so the question
   is not reopened.

   The submit stretches because Elementor sets flex-basis:100%
   on it, keyed to an .elementor-button-align-stretch class on
   the form. Centring the container does nothing against that.

   The control is in the Form widget: Buttons > Align, and it
   is per-breakpoint. Desktop = Center, Mobile = Stretch.
   A CSS override here would only fight the widget. */


/* --- Headings: balanced line breaks ------------------------
   29 Sep 2026. Stops one-word orphans on the last line of an
   H1 ("of this / page", "you / cover"). Balance evens the
   lines within the element's max-width; it does not change
   the width, only where the break falls.

   Keyed to h1-display, the global class on the H1s (pricing,
   404). Applies sitewide to any element carrying that class.
   Browsers without support ignore it and wrap as before. */

.h1-display {
  text-wrap: balance;
}


/* --- Form messages: no icon glyph ---------------------------
   16 Oct 2026. Elementor's form messages draw an icon from the
   eicons font (.elementor-message:before). V4 pages never load
   eicons, so the icon renders as an empty box before every
   error and success message. Drop the glyph; the message text
   and colour carry the meaning. The SVG tick variant is left
   alone because it does not use the font. */

.elementor-message:not(.elementor-message-svg)::before {
  content: none !important;
  display: none !important;
}/* End custom CSS */