:root {
  --rail: 1308px;
  --ink: #10130f;
  --muted: #565b55;
  --forest: #0b4b2c;
  --blue: #1763ff;
  --line: #c9ccc7;
  --paper: #fbfcfa;
  --font-body: 16px;
  --font-card: 14px;
  --font-meta: 12px;
  --own-site-eyebrow-font-size: 14px;
  --own-site-eyebrow-line-height: 1.2;
  --own-site-eyebrow-font-weight: 600;
  --own-site-eyebrow-heading-gap: 12px;
  --own-site-hero-title-max: 44px;
  --own-site-section-title-max: 30px;
  --own-site-card-title-max: 24px;
  --own-site-hero-title-min: 32px;
  --own-site-section-title-min: 26px;
  --own-site-card-title-min: 20px;
  --own-site-hero-title-fluid: 9vw;
  --own-site-section-title-fluid: 7vw;
  --own-site-card-title-fluid: 5.25vw;
  --own-site-compact-title-max: 20px;
  --own-site-compact-title-min: 18px;
  --own-site-compact-title-fluid: 4.5vw;
  --own-site-small-title-max: 16px;
  --own-site-small-title-min: 15px;
  --own-site-small-title-fluid: 4vw;
  --own-site-hero-title-font-size: var(--own-site-hero-title-max);
  --own-site-hero-title-line-height: 1.08;
  --own-site-hero-title-font-weight: 700;
  --own-site-hero-title-letter-spacing: 0;
  --own-site-section-title-font-size: var(--own-site-section-title-max);
  --own-site-section-title-line-height: 1.15;
  --own-site-section-title-font-weight: 700;
  --own-site-section-title-letter-spacing: 0;
  --own-site-card-title-font-size: var(--own-site-card-title-max);
  --own-site-card-title-line-height: 1.2;
  --own-site-card-title-font-weight: 700;
  --own-site-card-title-letter-spacing: 0;
  --own-site-compact-title-font-size: clamp(var(--own-site-compact-title-min), var(--own-site-compact-title-fluid), var(--own-site-compact-title-max));
  --own-site-compact-title-line-height: 1.25;
  --own-site-compact-title-font-weight: 700;
  --own-site-compact-title-letter-spacing: 0;
  --own-site-small-title-font-size: clamp(var(--own-site-small-title-min), var(--own-site-small-title-fluid), var(--own-site-small-title-max));
  --own-site-small-title-line-height: 1.25;
  --own-site-small-title-font-weight: 700;
  --own-site-small-title-letter-spacing: 0;
  font-family:
    Inter,
    ui-sans-serif,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
}

* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  min-width: 320px;
  overflow-x: hidden;
  color: var(--ink);
  background: var(--paper);
  font-family:
    Inter,
    ui-sans-serif,
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
}
.form-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
a {
  color: inherit;
  text-decoration: none;
}
img {
  display: block;
  max-width: 100%;
}
h1,
h2,
h3,
h4,
h5,
h6,
p,
figure {
  margin: 0;
}
p,
figure {
  letter-spacing: 0;
}
/* Shared semantic heading defaults also cover new and previously unmapped pages. */
h1 {
  font-size: var(--own-site-hero-title-font-size);
  line-height: var(--own-site-hero-title-line-height);
  font-weight: var(--own-site-hero-title-font-weight);
  letter-spacing: var(--own-site-hero-title-letter-spacing);
}
h2 {
  font-size: var(--own-site-section-title-font-size);
  line-height: var(--own-site-section-title-line-height);
  font-weight: var(--own-site-section-title-font-weight);
  letter-spacing: var(--own-site-section-title-letter-spacing);
}
h3, h4, h5, h6 {
  font-size: var(--own-site-compact-title-font-size);
  line-height: var(--own-site-compact-title-line-height);
  font-weight: var(--own-site-compact-title-font-weight);
  letter-spacing: var(--own-site-compact-title-letter-spacing);
}
button,
input,
select,
textarea,
summary {
  font: inherit;
}
[id] {
  scroll-margin-top: 80px;
}

.rail {
  width: min(var(--rail), calc(100vw - 56px));
  margin-inline: auto;
}

/* Keep the first hero label on one stable baseline across every page. */
.hero-copy-offset {
  align-self: start;
  margin-top: 55.59375px;
  padding-top: 0 !important;
}

#quality > .hero {
  padding-top: 0 !important;
}
.ruled {
  border-top: 1px solid var(--line);
}
.image-slot {
  position: relative;
  overflow: hidden;
}
.image-slot img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
/* Shared Home design note: desktop and mobile profiles use the same visual component. */
.design-first-note {
  display: grid;
  grid-template-columns: minmax(220px, 0.45fr) minmax(0, 1fr);
  gap: 28px;
  align-items: center;
  margin-top: 22px;
  padding: 18px 22px;
  border-left: 3px solid var(--blue);
  background: #f5f8ff;
}
.design-first-note h3,
.design-first-note p {
  margin: 0;
}
.design-first-note p {
  color: var(--muted);
  font-size: var(--font-card);
  line-height: 1.5;
}
/* Primary content-card titles share one implementation across desktop and mobile profiles. */
.calculation-record h2,
.choice-panel h3,
.delivery-glance h2,
.delivery-policy-row__title h2,
.delivery-support h2,
.demo-action__content strong,
.design-first-note h3,
.direction-card h3,
.mp-boundary-grid h3,
.mp-core h2,
.mp-delivery-paths h3,
.mp-payment-milestones h3,
.mp-profile span,
.mp-summary h2,
.portal-area-card h2,
.preview-item h2,
.portal-card h1,
.portal-card h2,
.portal-card--purchase-form h2,
.portal-order-card__content h2,
.portal-order__next h2,
.portal-project-index__heading h2,
.portal-project-summary h2,
.portal-panel h2,
.workspace-concept-card h3,
[data-payment-milestone] h3,
.portal-workspace > h3,
.portal-site-access-card__content strong,
.pr-fact-card h2,
.pr-feature-card h3,
.pr-important-card h3,
.pr-policy-card h2,
.pr-pricing-card h2,
.privacy-role-card > h2,
.privacy-summary-card h2,
.privacy-support h2,
.route-card h3,
.terms-controls h2,
.terms-summary-card h2 {
  font-size: var(--own-site-card-title-font-size);
  line-height: var(--own-site-card-title-line-height);
  font-weight: var(--own-site-card-title-font-weight);
  letter-spacing: var(--own-site-card-title-letter-spacing);
}

.own-site-heading--hero { font-size: var(--own-site-hero-title-font-size); line-height: var(--own-site-hero-title-line-height); font-weight: var(--own-site-hero-title-font-weight); letter-spacing: var(--own-site-hero-title-letter-spacing); }
.own-site-heading--section { font-size: var(--own-site-section-title-font-size); line-height: var(--own-site-section-title-line-height); font-weight: var(--own-site-section-title-font-weight); letter-spacing: var(--own-site-section-title-letter-spacing); }
.own-site-heading--card { font-size: var(--own-site-card-title-font-size); line-height: var(--own-site-card-title-line-height); font-weight: var(--own-site-card-title-font-weight); letter-spacing: var(--own-site-card-title-letter-spacing); }
.own-site-heading--compact { font-size: var(--own-site-compact-title-font-size); line-height: var(--own-site-compact-title-line-height); font-weight: var(--own-site-compact-title-font-weight); letter-spacing: var(--own-site-compact-title-letter-spacing); }
.mp-example-page > h3,
.own-site-heading--small { font-size: var(--own-site-small-title-font-size); line-height: var(--own-site-small-title-line-height); font-weight: var(--own-site-small-title-font-weight); letter-spacing: var(--own-site-small-title-letter-spacing); }

/* Dense operational headings use one shared compact role instead of page-local sizes. */
.portal-compose h2,
.portal-empty-state h2,
.portal-order__summary h2,
.portal-scope-item h2 {
  font-size:var(--own-site-compact-title-font-size);
  line-height:var(--own-site-compact-title-line-height);
  font-weight:var(--own-site-compact-title-font-weight);
  letter-spacing:var(--own-site-compact-title-letter-spacing);
}

.customer-preview > h1,
.mp-section > .rail > h1,
.portal-workspace > h1,
.portal-card--purchase-summary h1,
.portal-order__header h1,
.portal-page-heading h1,
.demo-workspace h1 {
  font-size:var(--own-site-hero-title-font-size);
  line-height:var(--own-site-hero-title-line-height);
  font-weight:var(--own-site-hero-title-font-weight);
  letter-spacing:var(--own-site-hero-title-letter-spacing);
}

.customer-preview > h2,
.portal-workspace > h2 {
  font-size:var(--own-site-section-title-font-size);
  line-height:var(--own-site-section-title-line-height);
  font-weight:var(--own-site-section-title-font-weight);
  letter-spacing:var(--own-site-section-title-letter-spacing);
}

.eyebrow,
.mp-lock {
  margin: 0 0 var(--own-site-eyebrow-heading-gap);
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--forest);
  font-size: var(--own-site-eyebrow-font-size);
  font-weight: var(--own-site-eyebrow-font-weight);
  line-height: var(--own-site-eyebrow-line-height);
  letter-spacing: 0;
  text-transform: none;
}
.eyebrow::before,
.mp-lock::before {
  content: "";
  width: 24px;
  height: 2px;
  flex: 0 0 24px;
  background: var(--blue);
}
.review-hub-hero__copy > h1 {
  font-size:var(--own-site-hero-title-font-size);
  line-height:var(--own-site-hero-title-line-height);
  font-weight:var(--own-site-hero-title-font-weight);
  letter-spacing:var(--own-site-hero-title-letter-spacing);
}
/* The portal paragraph reset loads after core.css; keep the shared component margin authoritative. */
.portal-content .eyebrow {
  margin-bottom: var(--own-site-eyebrow-heading-gap);
}
.button {
  min-width: 198px;
  height: 54px;
  padding: 0 28px 2px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--blue);
  border-radius: 8px;
  color: var(--blue);
  background: #fff;
  font-size: var(--font-body);
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
}
.button.primary {
  color: #fff;
  background: var(--blue);
}
.button.secondary {
  color: var(--blue);
  background: #fff;
}

body:is(
  [data-site-own-profile="desktop"],
  [data-presentation-profile="desktop"]
) picture.mobile-raster-contract {
  display: contents !important;
}

picture > source {
  display: none !important;
}

picture.mobile-raster-contract > img {
  display: block;
  max-width: 100%;
}

body:is(
  [data-site-own-profile="mobile"],
  [data-presentation-profile="mobile"]
) {
  --own-site-hero-title-font-size: clamp(var(--own-site-hero-title-min), var(--own-site-hero-title-fluid), var(--own-site-hero-title-max));
  --own-site-hero-title-line-height: 1.04;
  --own-site-section-title-font-size: clamp(var(--own-site-section-title-min), var(--own-site-section-title-fluid), var(--own-site-section-title-max));
  --own-site-section-title-line-height: 1.12;
  --own-site-card-title-font-size: clamp(var(--own-site-card-title-min), var(--own-site-card-title-fluid), var(--own-site-card-title-max));
}

@media (max-width: 1365px) {
  :root {
    --own-site-hero-title-font-size: clamp(var(--own-site-hero-title-min), var(--own-site-hero-title-fluid), var(--own-site-hero-title-max));
    --own-site-hero-title-line-height: 1.04;
    --own-site-section-title-font-size: clamp(var(--own-site-section-title-min), var(--own-site-section-title-fluid), var(--own-site-section-title-max));
    --own-site-section-title-line-height: 1.12;
    --own-site-card-title-font-size: clamp(var(--own-site-card-title-min), var(--own-site-card-title-fluid), var(--own-site-card-title-max));
  }
}

@media (min-width: 1366px) {
  body:is(
    [data-site-own-profile="auto"],
    [data-presentation-profile="auto"]
  ) picture.mobile-raster-contract {
    display: contents !important;
  }
}

@media (max-width: 1100px) {
  .rail {
    width: min(1000px, calc(100vw - 40px));
  }
}

@media (max-width: 1365px) {
  .hero-copy-offset {
    margin-top: 44px;
  }

  .hero-grid,
  .hero-inner,
  .demo-hero-grid,
  .error-hero-inner {
    padding-top: 0 !important;
  }

  [id] {
    scroll-margin-top: 132px;
  }
  .rail {
    width: calc(100vw - 28px);
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}

/* Opt-in authored information rows; preserve other notices and editable text slots. */
.notice.info.info-callout {
  box-sizing: border-box;
  width: 100%;
  height: auto;
  min-height: 64px;
  margin: 20px 0 0;
  padding: 16px 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  border: 1px solid #7ca4ff;
  border-radius: 7px;
  color: var(--blue);
  font-size: 14px;
  line-height: 1.45;
  text-align: center;
  overflow-wrap: anywhere;
}
.notice.info.info-callout > img {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  align-self: center;
  margin: 0;
  object-fit: contain;
}
.notice.info.info-callout > .info-callout__content {
  min-width: 0;
  max-width: 100%;
}

/* Concepts comparison diagram: real copy, decorative image fragments and SVG leaders. */
.decision-diagram { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; width: min(1180px, 100%); margin: 24px auto 0; text-align: left; }
.decision-notes-left, .decision-notes-right { display: grid; gap: 24px; min-width: 0; }
.decision-note { position: relative; min-width: 0; }
.decision-note h3 { margin: 0; font-size: 15px; line-height: 1.35; font-weight: 700; }
.decision-note p { margin: 8px 0 0; font-size: 14px; line-height: 1.45; color: var(--muted); }
.decision-preview { order: -1; align-self: center; min-width: 0; }
.decision-preview > img { display: block; width: 100%; max-width: 403px; height: auto; margin: auto; border-radius: 4px; }
.decision-notes-right > .decision-note { display: grid; grid-template-columns: minmax(0, 1fr) 100px; align-items: center; gap: 16px; }
.decision-mini { display: block; width: 100%; height: auto; }
.decision-connector { display: none; }
.decision-palette { display: flex; gap: 4px; margin-top: 14px; }
.decision-palette i { display: block; width: 23px; height: 23px; border: 1px solid #ccc; background: #1c252a; }
.decision-palette i:nth-child(2) { background: #626767; }
.decision-palette i:nth-child(3) { background: #ffb800; }
.decision-palette i:nth-child(4) { background: #e5e5e5; }
.decision-palette i:nth-child(5) { background: #fff; }
@media (min-width: 1366px) {
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-diagram { grid-template-columns: 210px minmax(0, 403px) minmax(0, 1fr); gap: 48px; align-items: center; margin-top: 0; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-preview { order: 0; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-notes-left { gap: 40px; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-notes-right > .decision-note { grid-template-columns: minmax(0, 1fr) 130px; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-connector { display: block; position: absolute; width: 56px; height: 40px; top: calc(50% - 24px); right: -54px; overflow: visible; pointer-events: none; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-notes-right .decision-connector { right: auto; left: -54px; top: calc(50% - 12px); }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-notes-right .decision-note-copy { min-width: 0; padding-left: 12px; }
  body:not([data-presentation-profile="mobile"]):not([data-site-own-profile="mobile"]) .decision-notes-left > .decision-note > :is(h3, p, .decision-palette) { position: relative; left: -12px; }
}

/* Centre the icon/text group; align wrapped copy and its icon to the first line. */
.notice.info,
.notice.warning,
.notice.info.info-callout { text-align: left; }
.notice.info > .info-callout__content,
.notice.warning > .info-callout__content { min-width: 0; max-width: 100%; text-align: left; }
.notice.info[data-notice-multiline],
.notice.warning[data-notice-multiline] { align-items: flex-start; }
.notice.info[data-notice-multiline] > img,
.notice.warning[data-notice-multiline] > img { align-self: flex-start; margin: 3px 0 0; }

/* Numbers are presentation labels, not part of editable approved copy. */
.timing-grid { counter-reset: workflow-timing; }
.timing-grid article { counter-increment: workflow-timing; }
.timing-grid article h3::before { content: counter(workflow-timing) ". "; }

/* Explanatory diagrams retain the original screen geometry on desktop. */
.explanatory-frame { position: relative; }
.explanatory-frame > .ex-screen { position: absolute; height: auto; object-fit: contain; display: block; }
.explanatory-frame > .ex-home-admin { left: 2.851%; top: 8.284%; width: 42.325%; }
.explanatory-frame > .ex-home-website { left: 53.399%; top: 8.284%; width: 43.531%; }
.explanatory-frame > .ex-platform-project { left: .769%; top: 5.866%; width: 46.154%; }
.explanatory-frame > .ex-platform-runtime { left: 65.846%; top: 12.570%; width: 33.692%; }
.explanatory-frame > .ex-platform-projects { left: .794%; top: 7.317%; width: 43.254%; }
.explanatory-frame > .ex-platform-handover { left: 67.540%; top: 7.317%; width: 31.746%; }
.ex-link { position: absolute; height: 40px; }
/* Connectors share fixed-size dots, dashes and arrowheads in both orientations. */
.ex-link { color: #39443d; }
.ex-link > .ex-line { display: none; }
.ex-link::before { content: ''; position: absolute; left: 4px; right: 4px; top: 50%; border-top: 1.5px dashed currentColor; }
.ex-link::after { content: ''; position: absolute; right: 4px; top: 50%; width: 8px; height: 8px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: translateY(-50%) rotate(45deg); }
.ex-home-link { color: #1763ff; background: radial-gradient(circle, currentColor 0 3.5px, transparent 4px) left center / 8px 8px no-repeat, radial-gradient(circle, currentColor 0 3.5px, transparent 4px) right center / 8px 8px no-repeat; }
.ex-home-link::after { display: none; }
.ex-link > .ex-check { position: absolute; width: 36px; height: 36px; left: calc(50% - 18px); top: calc(50% - 18px); }
.ex-home-link { left: 45.175%; width: 8.224%; top: calc(46.45% - 20px); }
.ex-project-link { left: 46.923%; width: 18.923%; top: calc(46.09% - 20px); }
.ex-map-link-before { left: 44.048%; width: 4.286%; top: calc(48.29% - 20px); }
.ex-map-link-after { left: 62.698%; width: 4.842%; top: calc(48.29% - 20px); }
.ex-steps { position: absolute; left: 48.333%; top: 3.902%; width: 14.365%; height: 91.951%; margin: 0; padding: 28px 18px; list-style: none; display: grid; grid-template-rows: repeat(4,1fr); gap: 12px; border: 1px solid #e6e8e7; border-radius: 13px; background: linear-gradient(110deg,#fff,#fdfdff); text-align: left; }
.ex-steps > li { position: relative; display: grid; grid-template-columns: 36px minmax(0,1fr); align-items: center; gap: 8px; min-width: 0; font-size: 12px; line-height: 1.35; }
.ex-steps > li:not(:last-child)::after { content: ''; position: absolute; left: 17px; top: calc(50% + 25px); bottom: calc(-50% + 13px); border-left: 2px dashed #727774; }
.ex-steps svg { display: block; width: 36px; height: 36px; fill: none; stroke: #075527; stroke-width: 1.7; }
.ex-steps > li:nth-child(3) svg { stroke: var(--blue,#165cff); }

/* Shared comparison palettes, visible in both presentation profiles. */
.swatches {
  display: flex;
  gap: 7px;
}
.swatches i {
  width: 23px;
  height: 23px;
  border: 1px solid #d4d6d3;
}
.construction-swatches i:nth-child(1) {
  background: #0a1c2d;
}
.construction-swatches i:nth-child(2) {
  background: #37414a;
}
.construction-swatches i:nth-child(3) {
  background: #ffb400;
}
.construction-swatches i:nth-child(4) {
  background: #f7f7f5;
}
.legal-swatches i:nth-child(1) {
  background: #061d35;
}
.legal-swatches i:nth-child(2) {
  background: #e6dccb;
}
.legal-swatches i:nth-child(3) {
  background: #f5f1e8;
}
.legal-swatches i:nth-child(4) {
  background: #e5e7e8;
}
.marketing-swatches i:nth-child(1) {
  background: #6d22c8;
}
.marketing-swatches i:nth-child(2) {
  background: #090909;
}
.marketing-swatches i:nth-child(3) {
  background: #d8dde4;
}
.marketing-swatches i:nth-child(4) {
  background: #f5f4f8;
}
