:root { --s2-ic-arrow: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.8%22 aria-hidden=%22true%22%3E%3Cpath d=%22M4 12h15M13 6l6 6-6 6%22/%3E%3C/svg%3E"); --s2-ic-chev: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 class=%22chev%22 viewBox=%220 0 12 8%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 aria-hidden=%22true%22%3E%3Cpath d=%22M1 1.5l5 5 5-5%22/%3E%3C/svg%3E"); --s2-ic-lock: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.9%22 aria-hidden=%22true%22%3E%3Crect x=%225%22 y=%2211%22 width=%2214%22 height=%229%22/%3E%3Cpath d=%22M8 11V8a4 4 0 0 1 8 0v3%22/%3E%3C/svg%3E"); --s2-ic-ext: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 12 12%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.4%22 aria-hidden=%22true%22%3E%3Cpath d=%22M4 2H2v8h8V8M6.5 2H10v3.5M10 2L5 7%22/%3E%3C/svg%3E"); --s2-ic-down: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.8%22 aria-hidden=%22true%22%3E%3Cpath d=%22M12 4v13M6 12l6 6 6-6M5 21h14%22/%3E%3C/svg%3E"); }
/* S2 Safety Systems — native Divi 5 adaptation, loaded after site.css.
   Divi's Button module renders a bare <a>: the concept's arrow, lock and download icons are drawn here. */
.s2 .et_pb_button.btn { line-height: 1.2 !important; }    /* Divi sets 1.7em !important on every button */
.s2 .et_pb_button.link { line-height: 1.3 !important; }
.s2 .et_pb_button.btn::after,
.s2 .et_pb_button.link::after,
.s2 .card__go::after {
  content: "" !important; display: block !important; position: static !important; flex: none;
  width: 18px; height: 18px; margin: 0 !important; opacity: 1 !important; font-size: 0 !important; line-height: 0 !important;
  background: currentColor; -webkit-mask: var(--s2-ic-arrow) center / contain no-repeat; mask: var(--s2-ic-arrow) center / contain no-repeat;
  transition: transform .3s var(--ease);
}
.s2 .et_pb_button.link::after, .s2 .et_pb_button.btn--sm::after, .s2 .card__go::after { width: 16px; height: 16px; }
.s2 .et_pb_button.btn:hover::after, .s2 .et_pb_button.link:hover::after, .s2 .card:hover .card__go::after { transform: translateX(4px); }
.s2 .et_pb_button.btn--down::after { -webkit-mask-image: var(--s2-ic-down); mask-image: var(--s2-ic-down); }
.s2 .et_pb_button.btn--lock::after { display: none !important; }
.s2 .et_pb_button.btn--lock::before {
  content: "" !important; display: block !important; position: static !important; flex: none; width: 18px; height: 18px;
  margin: 0 !important; opacity: 1 !important; font-size: 0 !important;
  background: currentColor; -webkit-mask: var(--s2-ic-lock) center / contain no-repeat; mask: var(--s2-ic-lock) center / contain no-repeat;
}
.s2 .linklist i::after {
  content: ""; display: inline-block; width: 12px; height: 12px; margin-left: 6px; vertical-align: -1px;
  background: currentColor; -webkit-mask: var(--s2-ic-ext) center / contain no-repeat; mask: var(--s2-ic-ext) center / contain no-repeat;
}

/* Video and SVG modules fill their concept frames */
.s2 .et_pb_video .et_pb_video_box, .s2 .et_pb_video video { display: block; width: 100%; height: 100%; }
.s2 .et_pb_video video { object-fit: cover; }
.s2 .et_pb_svg .et_pb_svg_inner { display: block; }

/* A column marked u-flat lets its modules sit directly in the row's flex/grid layout */
.s2 .u-flat { display: contents; }

/* Editorial text: the concept spaced the direct children of .prose; in Divi they sit inside the Text module */
.s2 .prose :where(.et_pb_text_inner) > * + * { margin-top: 1.05em; }

/* Rail labels: in the concept they were flex items (blockified); in Divi they sit inside Text modules */
.s2 :is(.shead__rail, .rail__side) .eyebrow { display: block; }

/* A lone inline-block label inside a Text module: drop the wrapper's line strut so the label sits
   where the concept put it (there, the spacing margin sat on the label itself) */
.s2 .et_pb_module + .et_pb_text > .et_pb_text_inner:has(> .eyebrow:only-child) { line-height: 0; }
.s2 .et_pb_module + .et_pb_button_module_wrapper:has(> .link) { line-height: 0; }
/* Card arrow line: a flex item of the card in the concept (inline-flex blockifies to flex) */
.s2 .card .card__go { display: flex; }

/* Where the concept let a child's own margin override the column's "> * + *" spacing */
.s2 .split__copy > .et_pb_text:has(> .et_pb_text_inner > .ticks:first-child) { margin-top: 8px; }
.s2 .split__copy > .et_pb_button_module_wrapper:has(> .link) { margin-top: 0; }
/* Divi wraps quote text in a paragraph; keep the quote's own type */
.s2 .person blockquote > p { margin: 0; font: inherit; color: inherit; }

/* ---------- Enquiry form: Divi's Contact Form module dressed as the concept's .form ---------- */
.s2 .s2-form .et_pb_contact { margin: 0; padding: 0; }
.s2 .s2-form .et_pb_contact_form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 24px; margin: 0; }
.s2 .s2-form .et_pb_contact_form > .et_pb_contact_field { width: auto; max-width: none; margin: 0; padding: 0; float: none; clear: none; flex: none; }
.s2 .s2-form :is([data-id="kind"], [data-id="topic"], [data-id="message"], [data-id="consent"]),
.s2 .s2-form .et_contact_bottom_container { grid-column: 1 / -1; }
.s2 .s2-form .et_pb_contact_form_label { display: block; margin: 0 0 8px; padding: 0; font: 500 11.5px/1.4 var(--f-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
.s2 .s2-form [data-required_mark="required"] { }
.s2 .s2-form .et_pb_contact_field .input:not([type="radio"]):not([type="checkbox"]) {
  width: 100%; font: 400 16px/1.4 var(--f-body); color: var(--ink); background-color: #fff; border: 1px solid #BDB9B3; border-radius: 0;
  padding: 15px 16px; transition: border-color .2s; -webkit-appearance: none; appearance: none; box-shadow: none;
}
.s2 .s2-form .et_pb_contact_field .input::placeholder { color: transparent; }
.s2 .s2-form .et_pb_contact_field .input:hover { border-color: var(--ink); }
.s2 .s2-form .et_pb_contact_field .input:focus { outline: 2px solid var(--purple); outline-offset: 0; border-color: var(--purple); }
.s2 .s2-form .et_pb_contact_field textarea.input { min-height: 150px; resize: vertical; }
.s2 .s2-form .et_pb_contact_field select.input {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%2316121A' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 16px center; background-size: 12px; padding-right: 44px;
}
.s2 .s2-form .et_pb_contact_field_options_title { display: none; }
.s2 .s2-form .et_pb_contact_field_options_wrapper { display: block; }
/* Type of enquiry: segmented control */
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_options_list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid #BDB9B3; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio { position: relative; margin: 0; display: block; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio + .et_pb_contact_field_radio { border-left: 1px solid #BDB9B3; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio input { position: absolute; inset: 0; opacity: 0; margin: 0; width: 100%; height: 100%; cursor: pointer; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio label { display: block; margin: 0; padding: 15px 12px; text-align: center; font: 500 14.5px/1.3 var(--f-body); color: var(--ink); cursor: pointer; transition: background-color .2s, color .2s; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio label i { display: none; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio input:checked + label { background: var(--purple); color: #fff; }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio input:focus-visible + label { outline: 2px solid var(--purple); outline-offset: 2px; }
/* Consent: plain checkbox + statement */
.s2 .s2-form [data-id="consent"] > .et_pb_contact_form_label { display: none; }
.s2 .s2-form .et_pb_contact_field_checkbox { position: relative; display: grid; grid-template-columns: 22px 1fr; gap: 12px; align-items: start; margin: 0; font-size: 14.5px; line-height: 1.55; }
.s2 .s2-form .et_pb_contact_field_checkbox input { position: static; opacity: 1; display: block; width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--purple); }
.s2 .s2-form .et_pb_contact_field_checkbox label { margin: 0; padding: 0; color: var(--charcoal); font-size: 14.5px; line-height: 1.55; }
.s2 .s2-form .et_pb_contact_field_checkbox label i { display: none; }
/* Submit: the concept's primary button */
.s2 .s2-form .et_contact_bottom_container { display: block; float: none; margin: 0; padding: 0; text-align: left; }
.s2 .s2-form .et_pb_contact_submit.et_pb_button {
  display: inline-flex; align-items: center; gap: 14px; min-height: 54px; margin: 0; padding: 14px 26px; border: 0; border-radius: 0;
  font: 600 15px/1.2 var(--f-body) !important; letter-spacing: .01em; color: var(--ink); background: var(--orange); cursor: pointer;
  --cham: 14px; clip-path: polygon(0 0, calc(100% - var(--cham)) 0, 100% calc(var(--cham) * .9), 100% 100%, 0 100%);
  transition: background-color .25s var(--ease), color .25s var(--ease);
}
.s2 .s2-form .et_pb_contact_submit.et_pb_button:hover { background: var(--ink); color: #fff; padding: 14px 26px; }
.s2 .s2-form .et_pb_contact_submit.et_pb_button::after {
  content: "" !important; display: block !important; position: static !important; width: 18px; height: 18px; margin: 0 !important; opacity: 1 !important; font-size: 0 !important;
  background: currentColor; -webkit-mask: var(--s2-ic-arrow) center / contain no-repeat; mask: var(--s2-ic-arrow) center / contain no-repeat; transition: transform .3s var(--ease);
}
.s2 .s2-form .et_pb_contact_submit.et_pb_button:hover::after { transform: translateX(4px); }
.s2 .s2-form .et-pb-contact-message { margin: 0 0 22px; font-size: 16px; }
.s2 .s2-form .et-pb-contact-message:not(:empty) { padding: 20px 22px; border-left: 3px solid var(--purple); background: var(--mist); }
@media (max-width: 767px) {
  .s2 .s2-form .et_pb_contact_form { grid-template-columns: minmax(0, 1fr); }
  .s2 .s2-form [data-id="kind"] .et_pb_contact_field_options_list { grid-template-columns: minmax(0, 1fr); }
  .s2 .s2-form [data-id="kind"] .et_pb_contact_field_radio + .et_pb_contact_field_radio { border-left: 0; border-top: 1px solid #BDB9B3; }
}
.s2 .s2-form [data-id="consent"] > .et_pb_contact_form_label,
.s2 .s2-form .et_pb_contact_field_checkbox label i,
.s2 .s2-form [data-type="select"]::after,
.s2 .s2-form [data-type="select"]::before { display: none !important; }
.s2 .s2-form .et_pb_button_wrapper { display: block; float: none; margin: 0; text-align: left; justify-content: flex-start; }
.s2 .s2-form .et_contact_bottom_container { justify-self: start; width: auto; max-width: none; margin: 0 !important; }

/* Primary button text: one step more specific than Divi's own button defaults (seen in the Visual Builder) */
.s2 .et_pb_button.btn--primary { color: var(--ink); }
.s2 .et_pb_button.btn--primary:hover { color: #fff; }
.s2 .on-dark .et_pb_button.btn--primary:hover { color: var(--ink); }

/* Consent checkbox: Divi sets appearance:none, which hides the tick */
.s2 .s2-form .et_pb_contact_field_checkbox input[type="checkbox"] { -webkit-appearance: checkbox; appearance: auto; cursor: pointer; }

/* ---------- S2 review, 8 Oct 2026 ---------- */
/* Section 7 acknowledgement (added by functions.php) spans the form, directly above Submit */
.s2 .s2-form .form-ack { grid-column: 1 / -1; margin: 0; }
/* S2-Hoist™ module photograph in plates (Divi Image module) */
.s2 .plate__img img { display: block; width: 100%; height: auto; }
.s2 .card__img--contain img { width: 100%; height: 100%; object-fit: contain; }

/* ---------- Accessibility fixes (24 Oct 2026 scan) ---------- */
/* Divi's reset sets outline: 0 on every element: keep a visible keyboard focus everywhere */
.s2 :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline: 2px solid var(--purple) !important; outline-offset: 3px !important; }
.s2 .on-dark :is(a, button, input, select, textarea, summary, [tabindex]):focus-visible { outline-color: var(--orange) !important; }
/* outline buttons: Divi's default light-blue button text (2.5:1) replaced with the design's colours */
.s2 .et_pb_module.et_pb_button.btn--ghost { color: var(--ink); }
.s2 .et_pb_module.et_pb_button.btn--ghost:hover { color: #fff; }
.s2 .on-dark .et_pb_module.et_pb_button.btn--ghost { color: #fff; }
.s2 .on-dark .et_pb_module.et_pb_button.btn--ghost:hover { color: var(--ink); }
/* text-style links built from Divi Button modules: the design's purple (white on dark), not Divi's light blue */
.s2 .et_pb_module.et_pb_button.link { color: var(--purple); }
.s2 .et_pb_module.et_pb_button.link:hover { color: var(--ink); }
.s2 .on-dark .et_pb_module.et_pb_button.link { color: #fff; }
.s2 .on-dark .et_pb_module.et_pb_button.link:hover { color: var(--orange); }
/* links inside running text are underlined, not shown by colour alone */
.s2 :is(.body, .prose) a { text-decoration: underline; text-underline-offset: 3px; }
/* enquiry form: required fields say so, and the enquiry-type group shows its name */
.s2 .s2-form .et_pb_contact_field:has([data-required_mark="required"]) > .et_pb_contact_form_label::after { content: " (required)"; color: var(--purple); }
.s2 .s2-form [data-id="kind"] .et_pb_contact_field_options_title { display: block; margin: 0 0 8px; padding: 0; font: 500 11.5px/1.4 var(--f-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--ink); }
/* founders: the name column may shrink at 320px (400% zoom) instead of pushing the page sideways */
.s2 .person { grid-template-columns: 168px minmax(0, 1fr); }
.s2 .person h3 { overflow-wrap: anywhere; }
@media (max-width: 400px) { .s2 .person { grid-template-columns: minmax(0, 1fr); } .s2 .person__img { max-width: 168px; } }

/* generated */
.s2 .ip-1 img { object-position: 78% 50%; }
.s2 .st-2 { margin-top:32px; }
.s2 .ip-3 img { object-position: 50% 62%; }
.s2 .sv-4 { font-family: 'IBM Plex Mono', monospace; font-size: 8.5px; }
.s2 .sv-5 { font-family: 'IBM Plex Mono', monospace; font-size: 8px; letter-spacing: 1px; }
.s2 .sv-6 { text-anchor: end; font-family: 'IBM Plex Mono', monospace; font-size: 8px; letter-spacing: 1px; }
.s2 .sv-7 { font-family: 'IBM Plex Mono', monospace; font-size: 8px; letter-spacing: 1.2px; }
.s2 .sv-8 { stroke-dasharray: 4 3; }
.s2 .st-9 { aspect-ratio:4/3; }
.s2 .sv-10 { text-anchor: middle; font-family: Microgramma, Michroma, sans-serif; font-weight: 700; font-size: 9px; }
.s2 .sv-11 { font-family: 'IBM Plex Mono', monospace; font-size: 7.5px; letter-spacing: 1px; }
.s2 .sv-12 { text-anchor: end; font-family: 'IBM Plex Mono', monospace; font-size: 7.5px; letter-spacing: 1px; }
.s2 .st-13 { max-width:380px;margin-left:auto; }
.s2 .ip-14 img { object-position: 50% 45%; }
.s2 .st-15 { aspect-ratio:16/9;background:#000; }
.s2 .st-16 { align-items:center; }
.s2 .ip-17 img { object-position: 50% 20%; }
.s2 .ip-18 img { object-position: 50% 30%; }
