/* Canonical shared stylesheet. Historical layers are not loaded. */
/* Source section: release-polish.css */ /* Hallmark · design-system: design.md · audit refinements */ .review-service-photo figcaption {
  min-height:50px
}
 .review-site .service-links>a.is-previewed h3,.review-site .service-links>a.is-previewed svg {
  color:var(--accent-text)
}
 /* Button state contract. Important colours intentionally supersede legacy page-specific hover rules. */ :root {
  --button-hover:var(--surface-dark);
  --button-hover-ink:var(--white);
  --button-pressed:var(--ink-soft);
  --button-disabled:oklch(85% .005 95);
  --button-disabled-ink:oklch(40% .003 250)
}
 body.site-shared :is(.hero-panorama,.service-hero,.editorial-cta,.service-scope,.site-footer) .button {
  --button-hover:var(--paper);
  --button-hover-ink:var(--surface-dark);
  --button-pressed:var(--paper-deep)
}
 body.site-shared .button {
  background:var(--accent)!important;
  color:var(--accent-ink)!important;
  border-color:var(--accent)!important;
  box-shadow:none;
  text-decoration:none;
  cursor:pointer;
  transition:transform var(--dur-short) var(--ease-out)
}
 body.site-shared .button::before,body.site-shared .button::after {
  content:none!important;
  display:none!important
}
 body.site-shared .button svg,body.site-shared .button span {
  color:inherit
}
 body.site-shared .button:focus-visible {
  outline:none!important;
  box-shadow:none!important;
  background:var(--ink)!important;
  color:var(--paper)!important;
  text-decoration:underline;
  text-underline-offset:5px
}
 @media(hover:hover) and (pointer:fine) {
    body.site-shared .button:not(:disabled):not([aria-disabled="true"]):hover {
    background:var(--button-hover)!important;
    color:var(--button-hover-ink)!important;
    border-color:var(--button-hover)!important
  }
  body.site-shared :is(.close-button,.cookie-settings-close):hover {
    background:transparent!important;
    color:var(--accent-text)!important
  }
  body.site-shared .rail-controls button:not(:disabled):hover {
    background:var(--accent)!important;
    color:var(--accent-ink)!important;
    border-color:var(--accent)!important
  }
  body.site-shared .menu-toggle:hover {
    color:var(--accent)!important
  }
}
 body.site-shared .button:not(:disabled):not([aria-disabled="true"]):active {
  background:var(--button-pressed)!important;
  color:var(--button-hover-ink)!important;
  border-color:var(--button-pressed)!important
}
 body.site-shared .button:is(:disabled,[aria-disabled="true"]) {
  background:var(--button-disabled)!important;
  color:var(--button-disabled-ink)!important;
  border-color:var(--button-disabled)!important;
  opacity:1;
  cursor:not-allowed;
  transform:none
}
 body.site-shared .button[aria-busy="true"],body.site-shared [aria-busy="true"] .button:disabled {
  cursor:wait
}
 body.site-shared :is(.close-button,.cookie-settings-close) {
  background:transparent!important;
  color:var(--ink)!important;
  border:0;
  border-radius:0;
  min-width:44px;
  min-height:44px;
  cursor:pointer
}
 body.site-shared :is(.close-button,.cookie-settings-close):active {
  background:transparent!important;
  color:var(--accent-text)!important
}
 /* Same two 24 x 1 px strokes as the expanded menu; aria-label stays on the button. */ body.site-shared :is(.close-button,.cookie-settings-close) {
  font-size:0;
  line-height:0
}
 body.site-shared :is(.close-button,.cookie-settings-close)::before,body.site-shared :is(.close-button,.cookie-settings-close)::after {
  content:'';
  position:absolute;
  left:50%;
  top:50%;
  width:24px;
  height:1px;
  background:currentColor;
  transform:translate(-50%,-50%) rotate(45deg);
  pointer-events:none
}
 body.site-shared :is(.close-button,.cookie-settings-close)::after {
  transform:translate(-50%,-50%) rotate(-45deg)
}
 body.site-shared :is(.close-button,.cookie-settings-close,.menu-toggle,.rail-controls button):focus-visible {
  outline:none!important;
  box-shadow:none!important;
  color:var(--accent-text)!important;
  background:var(--paper)!important;
  text-decoration:underline;
  text-underline-offset:5px
}
 body.site-shared .rail-controls button {
  background:var(--surface-dark);
  color:var(--white);
  border-color:var(--light-muted)
}
 body.site-shared .rail-controls button:disabled {
  background:var(--surface-dark)!important;
  color:var(--light-muted)!important;
  border-color:var(--line-dark)!important;
  opacity:.5;
  cursor:not-allowed
}
 body.site-shared .rail-controls button:not(:disabled):active {
  background:var(--paper-deep)!important;
  color:var(--ink)!important;
  border-color:var(--paper-deep)!important
}
 body.site-shared .menu-toggle:active {
  color:var(--accent)!important
}
 @media(prefers-reduced-motion:reduce) {
  body.site-shared .button,body.site-shared .button svg {
    transition:none!important;
    transform:none!important
  }
}
 .cookie-settings-dialog {
  width:min(600px,calc(100% - 32px));
  max-height:calc(100dvh - 48px);
  padding:0;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--paper);
  color:var(--ink);
  overflow:auto
}
 .cookie-settings-dialog::backdrop {
  background:var(--overlay)
}
 .cookie-settings-inner {
  position:relative;
  padding:clamp(24px,4vw,40px)
}
 .cookie-settings-inner h2 {
  font-family:var(--font-display);
  font-size:36px;
  font-weight:400;
  line-height:1.1;
  margin:0 40px 24px 0
}
 .cookie-settings-inner h3 {
  font-family:var(--font-body);
  font-size:18px;
  text-transform:none;
  margin:0 0 12px
}
 .cookie-settings-inner p {
  font-size:15px;
  line-height:1.7;
  margin:0 0 20px;
  color:var(--muted)
}
 .cookie-settings-inner section {
  border-top:1px solid var(--line);
  padding-top:20px
}
 .cookie-settings-close {
  position:absolute;
  right:16px;
  top:12px;
  width:44px;
  height:44px;
  font-size:28px;
  background:none;
  border:0;
  color:var(--ink);
  cursor:pointer
}
 .cookie-settings-done {
  background:var(--accent);
  color:var(--ink);
  border:0;
  cursor:pointer
}
 .cookie-settings-close:focus-visible,.cookie-settings-done:focus-visible,.cookie-settings-inner a:focus-visible {
  outline:2px solid var(--accent-text);
  outline-offset:4px
}
 .footer-contact-details a {
  color:inherit;
  text-decoration:none;
  text-underline-offset:5px
}
 .footer-contact-details a:hover {
  text-decoration:underline
}
 .company-details {
  border-top:1px solid var(--line-dark);
  margin-top:32px;
  padding-top:24px;
  color:var(--light-muted);
  font-size:13px;
  line-height:1.7
}
 .company-details p {
  margin:0 0 8px;
  max-width:80ch
}
 .reading-note {
  border-left:0;
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)
}
 .service-brief {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:24px;
  margin:32px 0 48px;
  padding:28px 0;
  border-block:1px solid var(--line)
}
 .service-brief h2 {
  font-family:var(--font-body);
  font-size:16px;
  line-height:1.4;
  text-transform:none;
  margin:0 0 12px
}
 .service-brief p {
  font-size:15px;
  line-height:1.65;
  color:var(--muted);
  margin:0
}
 .reading-table:focus-visible {

  outline-offset:4px
}
 .table-hint {

  color:var(--muted);
  margin:12px 0
}
 .editorial-main .editorial-lead {
  max-width:64ch
}
 .editorial-main h1 {
  font-size:clamp(40px,4.5vw,72px);
  max-width:26ch
}
 .editorial-main .breadcrumbs {
  margin-bottom:32px
}
 .editorial-card:focus-visible {
  outline:2px solid var(--accent-text);
  outline-offset:4px
}
 .editorial-card:hover img {
  transform:none
}
 @media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
    .editorial-card:hover img {
    transform:scale(1.04)
  }
}
 .editorial-card h2 {
  transition:color var(--dur-short) var(--ease-out)
}
 .request [aria-busy="true"] {
  cursor:wait
}
 .request button:disabled {
  cursor:wait;
  opacity:.65
}
 .request .form-status {
  min-height:1.5em
}
 .request-trap {
  position:absolute;
  left:-10000px;
  width:1px;
  height:1px;
  overflow:hidden
}
 /* Grid placement must not depend on the position of the anti-spam field. */ @media(min-width:60rem) {
    :is(.inline-form-slot,.menu-form-slot) .request-fields>.field:has(#request-name) {
    grid-column:1;
    grid-row:1
  }
  :is(.inline-form-slot,.menu-form-slot) .request-fields>.field:has(#request-contact) {
    grid-column:2;
    grid-row:1
  }
}
 @media(max-width:767px) {
  .service-brief {
    grid-template-columns:minmax(0,1fr);
    gap:20px
  }
.editorial-main h1 {
    font-size:clamp(36px,9vw,48px)
  }
.company-details {
    font-size:12px
  }
.reading-table table {
    min-width:520px
  }
}
 @media(prefers-reduced-motion:reduce) {
  .editorial-card h2 {
    transition:none
  }
}
  /* Source section: form-fields.css */ /* Shared request fields: inline, menu and dialog use the same component.
 * A thicker inward border keeps the outer box and text position unchanged. */ body.site-shared .request :is(input:not([type=checkbox]),textarea) {
    box-sizing:border-box;
  width:100%;
  height:60px;
  min-height:60px;
  margin:0;
    padding:16px;
  border:1px solid var(--muted);
  border-radius:0;
    background:transparent;
  color:var(--ink);
  font-family:var(--font-body);
  font-size:16px;
    outline:none;
  box-shadow:none;
}
 body.site-shared .request textarea {
  height:auto;
  min-height:140px;
  resize:vertical
}
 body.site-shared .request :is(input:not([type=checkbox]),textarea):is(:focus,:focus-visible) {
    border:2px solid var(--ink);
  padding:15px;
  outline:none;
  box-shadow:none;
  background:var(--paper);
}
 body.site-shared .request :is(input:not([type=checkbox]),textarea)[aria-invalid=true] {
  border-color:var(--error)
}
 body.site-shared .request input[type=checkbox]:focus-visible {
  outline:2px solid var(--ink);
  outline-offset:3px
}
 body.site-shared .request :is(input,textarea):disabled {
  opacity:.55;
  cursor:not-allowed
}
  /* Source section: ../legran-release/site-system.css */ /* Hallmark · genre: editorial · design-system: design.md · designed-as-app
 * Shared geometry, not a new theme. Visual browser verification pending. */ :root {
    --site-width:1480px;
    --site-gutter:clamp(20px,5.5vw,88px);
    --section-space:clamp(56px,7vw,104px);
    --column-space:clamp(24px,4vw,64px);
    --panel-inset:clamp(20px,3vw,40px);
    --panel-radius:16px;
    --section-title:clamp(34px,3.5vw,54px);
    --content-columns:minmax(0,2fr) minmax(0,3fr);
}
 html,body {
  overflow-x:clip
}
 body.site-shared {
  background:var(--paper);
  color:var(--ink)
}
 body.site-shared .shell, body.site-shared .header-inner, body.site-shared .site-menu .menu-content, body.site-shared>main.editorial-main, body.site-shared>main.legal-page {
    width:calc(100% - var(--site-gutter)*2);
  max-width:var(--site-width);
  margin-inline:auto;
}
 body.site-shared .site-footer {
  background:var(--surface-dark);
  color:var(--white)
}
 body.site-shared .site-footer::before {
  display:none
}
 body.site-shared :is(.editorial-main,.legal-page) {
  padding-top:144px;
  padding-bottom:var(--section-space)
}
 body.site-shared :is(.editorial-main,.legal-page) h1 {
  animation:none;
  opacity:1;
  transform:none
}
 body.site-shared .breadcrumbs {
  margin-bottom:var(--space-lg);
  gap:var(--space-xs) var(--space-sm);
  line-height:1.6
}
 body.site-shared .breadcrumbs a {
  min-height:24px
}
 body.site-shared .editorial-related {
  margin-top:var(--section-space);
  padding-top:var(--space-xl)
}
 body.site-shared .editorial-related>h2 {
  font-size:var(--section-title);
  max-width:none;
  margin:0 0 var(--space-lg)
}
 body.site-shared .editorial-related .editorial-grid {
  margin-bottom:0
}
 @media(min-width:64rem) {
  body.site-shared .article-page .editorial-related .editorial-grid {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:var(--space-md)
  }
 }
  /* A single pair of columns throughout a service, including inset surfaces. */ .service-presentation {
  --service-section-gap:var(--section-space);
  --content-columns:repeat(2,minmax(0,1fr))
}
 body.site-shared .service-presentation .service-section {
  margin-top:var(--section-space);
  padding:0 var(--panel-inset)
}
 .service-presentation .service-section h2 {
  font-size:var(--section-title);
  line-height:1.12;
  max-width:22ch;
  margin:0 0 var(--space-lg)
}
 .service-presentation .service-section p {
  font-size:clamp(16px,1.12vw,18px);
  line-height:1.75;
  max-width:none
}
 .service-presentation .service-section p:last-child {
  margin-bottom:0
}
 .service-presentation .service-hero {
  position:relative;
  isolation:isolate;
  overflow:clip;
  border-radius:var(--panel-radius);
  background:var(--surface-dark);
  color:var(--white);
  min-height:360px;
  display:flex;
  align-items:center
}
 .service-presentation .service-hero-copy {
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  width:100%;
  padding:var(--panel-inset);
  gap:0
}
 .service-presentation .service-hero-copy .service-location {
  margin:0 0 var(--space-sm);
  color:var(--light-muted)
}
 body.site-shared .service-presentation .service-hero h1 {
  font-size:clamp(36px,3.7vw,56px);
  line-height:1.08;
  max-width:23ch;
  overflow-wrap:normal;
  margin:0 0 var(--space-sm);
  color:var(--white)
}
 .service-presentation .service-hero-copy .service-intro {
  max-width:52ch;
  width:min(100%,620px);
  font-size:clamp(16px,1.3vw,19px);
  line-height:1.6;
  margin:0 0 var(--space-md);
  color:var(--white)
}
 .service-presentation .service-hero-copy>.service-action {
  align-self:flex-start;
  min-width:240px
}
 .service-presentation>.breadcrumbs {
  padding-inline:var(--panel-inset)
}
 .service-presentation .service-hero-photo {
  position:absolute;
  inset:0;
  z-index:0;
  margin:0;
  width:100%;
  height:100%;
  border-radius:0
}
 .service-presentation .service-hero-photo img {
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:65% center
}
 .service-presentation .service-hero-photo img[src*="hero-service-networks"] {
  transform:scaleX(-1)
 }
 .service-presentation .service-hero::after {
  content:'';
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(90deg,var(--service-shade-strong) 0%,var(--service-shade-strong) 36%,var(--service-shade-soft) 78%,var(--service-shade-clear) 100%)
}
 .service-presentation .service-facts {
  padding:var(--space-xs) var(--panel-inset)
}
 .service-presentation .service-facts dd {
  font-size:clamp(36px,3.5vw,52px)
}
 .service-presentation .service-facts dd span {
  font-size:var(--text-small);
  line-height:1.6
}
 .service-presentation .service-scope, .service-presentation .service-work, .service-presentation .service-estimate {
  position:relative;
  background:none;
  isolation:isolate
}
 .service-presentation .service-scope::before, .service-presentation .service-work::before, .service-presentation .service-estimate::before {
    content:'';
  position:absolute;
  inset:0;
  z-index:-1;
  border-radius:var(--panel-radius);
  background:var(--surface-dark);
}
 .service-presentation .service-work::before, .service-presentation .service-estimate::before {
  background:var(--white);
  border:1px solid var(--line)
}
 body.site-shared .service-presentation :is(.service-scope,.service-work,.service-estimate) {
  margin-block:var(--section-space);
  padding:var(--panel-inset)
}
 .service-presentation>.editorial-related>h2 {
  padding-inline:var(--panel-inset)
}
 .service-presentation .editorial-related .editorial-grid {
  gap:var(--space-md);
  grid-template-columns:minmax(0,1fr)
}
 @media(min-width:40rem) {
  .service-presentation .editorial-related .editorial-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}
 @media(min-width:64rem) {
  .service-presentation .editorial-related .editorial-grid {
    grid-template-columns:repeat(3,minmax(0,1fr))
  }
}
 .service-presentation .service-other-links {
  padding-inline:var(--panel-inset);
  column-gap:var(--column-space)
}
 .service-presentation .service-scope-list {
  margin-block:var(--space-lg)
}
 .service-presentation .service-scope-list>div {
  padding-block:var(--space-md)
}
 .service-presentation .service-scope-list h3 {
  font-size:18px;
  line-height:1.55
}
 .service-presentation .service-scope .service-note {
  max-width:76ch
}
 .service-presentation .service-process {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--space-lg)
}
 .service-presentation .service-process-heading {
  align-self:center;
  min-width:0
}
 .service-presentation .service-process-heading p {
  color:var(--muted)
}
 .service-presentation .service-process .service-steps {
  display:block;
  margin:0;
  padding:0;
  list-style:none;
  min-width:0
}
 .service-presentation .service-process .service-steps li {
  position:relative;
  display:grid;
  grid-template-columns:44px minmax(0,1fr);
  column-gap:var(--space-md);
  row-gap:var(--space-xs);
  padding:0 0 var(--space-xl);
  border:0;
  min-width:0
}
 .service-presentation .service-process .service-steps li:last-child {
  padding-bottom:0;
  border:0
}
 .service-presentation .service-process .service-steps li:not(:last-child)::before {
  content:'';
  position:absolute;
  left:21px;
  top:44px;
  bottom:0;
  width:1px;
  background:var(--line)
}
 .service-presentation .service-process .service-step-number {
  position:relative;
  left:auto;
  top:auto;
  grid-column:1;
  grid-row:1 / 3;
  display:flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  width:44px;
  height:44px;
  border:1px solid var(--accent-text);
  border-radius:50%;
  font-size:22px;
  line-height:1;
  margin:0;
  background:var(--paper)
}
 .service-presentation .service-process .service-steps h3 {
  grid-column:2;
  grid-row:1;
  padding:0;
  margin:0;
  font-size:20px;
  line-height:1.5;
  font-weight:500
}
 .service-presentation .service-process .service-steps p {
  grid-column:2;
  grid-row:2;
  margin:0;
  min-width:0
}
 .service-presentation .service-work > h2 {
  margin-bottom:16px;
 }
 .service-presentation .service-work > .service-section-lead {
  margin:0;
 }
 /* Hallmark · component: service scope · theme: existing Legran · static content
  * pre-emit critique: P4 H4 E4 S4 R5 V4 */
 .service-presentation .work-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--space-lg);
  margin-block:var(--space-lg) var(--space-xl)
}
 .service-presentation .service-work-card {
  min-width:0
}
 .service-presentation .work-photo {
  position:relative;
  min-width:0;
  width:100%;
  max-width:none;
  aspect-ratio:4/3;
  overflow:clip;
  border-radius:var(--panel-radius);
  margin:0;
  background:var(--paper)
}
 .service-presentation .work-photo img {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  display:block
}
 .service-presentation .service-work-card :is(h3,h4) {
  font-family:var(--font-body);
  font-size:18px;
  font-weight:600;
  line-height:1.3;
  margin:0 0 var(--space-xs)
}
 .service-presentation .service-work-card p {
  color:var(--muted);
  line-height:1.5;
  margin:0
}
 .service-presentation .work-list {
  display:grid;
  gap:var(--space-md);
  min-width:0;
  align-content:start
 }
 .service-presentation .work-list .service-work-card + .service-work-card {
  border-top:1px solid var(--line);
  padding-top:var(--space-md)
 }
 .service-presentation .work-layout--cards {
  gap:var(--space-xl) var(--space-md)
 }
 .service-presentation .work-layout--cards .work-photo {
  aspect-ratio:16/10;
  margin-bottom:var(--space-sm)
 }
 .service-presentation .work-layout--uncropped .work-photo {
  aspect-ratio:1;
  align-self:start
 }
 .service-presentation .service-work .service-note {
  color:var(--muted);
  max-width:none;
  width:100%;
  box-sizing:border-box;
  border-top:1px solid var(--line);
  padding-top:var(--space-md);
  margin:0
}
 @media(min-width:40rem) {
  .service-presentation .work-layout--cards {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}
 @media(min-width:60rem) {
  .service-presentation .work-layout--route {
    grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);
    gap:var(--space-xl)
  }
  .service-presentation .work-layout--route .work-photo {
    aspect-ratio:auto;
    min-height:480px
  }
  .service-presentation .work-layout--cards {
    grid-template-columns:repeat(6,minmax(0,1fr));
  }
  .service-presentation .work-layout--cards .service-work-card {
    grid-column:span 2
  }
  .service-presentation .work-layout--cards .service-work-card:nth-child(n+4) {
    grid-column:span 3
  }
  .service-presentation .work-layout--cards .work-photo {
    aspect-ratio:auto;
    height:clamp(180px,17vw,250px)
  }
  .service-presentation .work-layout--uncropped .work-photo {
    aspect-ratio:1;
    min-height:0
  }
}
 .service-presentation .service-checklist {
  align-self:start
}
 .service-presentation .service-checklist li {
  padding-block:var(--space-sm);
  line-height:1.5
}
 .service-presentation .service-estimate .service-action {
  margin-top:var(--space-md)
}
 .service-presentation .service-faq summary {
  padding-block:var(--space-md);
  font-size:clamp(17px,1.5vw,21px);
  line-height:1.5
}
 .service-presentation .service-faq details p {
  max-width:72ch;
  padding-bottom:var(--space-md)
}
 @media(min-width:60rem) {
    .service-presentation :is(.service-context,.service-cost,.service-estimate),  .service-presentation .service-scope-list>div {
    grid-template-columns:var(--content-columns);
    gap:var(--column-space)
  }
  .service-presentation .service-process {
    grid-template-columns:var(--content-columns);
    column-gap:var(--column-space)
  }
  .service-presentation .service-scope .service-section-lead {
    margin-left:0;
    max-width:70ch
  }
  .service-presentation .service-faq {
    display:grid;
    grid-template-columns:var(--content-columns);
    column-gap:var(--column-space);
    align-items:start
  }
  .service-presentation .service-faq h2 {
    grid-column:1;
    grid-row:1 / span 6
  }
  .service-presentation .service-faq details {
    grid-column:2
  }
}
 @media(max-width:59.99rem) {
    .service-presentation .service-scope-list>div {
    grid-template-columns:minmax(0,1fr);
    gap:var(--space-xs)
  }
  .service-presentation .service-section h2 {
    max-width:none
  }
}
  /* Reading pages: a consistent outer grid and a quiet, readable inner measure. */ .article-shell {
  padding:var(--panel-inset);
  border-radius:var(--panel-radius)
}
 .article-shell>header,.article-shell>.editorial-cover,.article-shell .reading-body {
  max-width:760px
}
 body.site-shared .article-shell h1 {
  font-size:clamp(36px,3.7vw,60px);
  line-height:1.08;
  max-width:none;
  overflow-wrap:normal
}
 body.site-shared .article-shell .reading-body h2 {
  font-family:var(--font-body);
  font-size:clamp(24px,2vw,32px);
  line-height:1.35;
  max-width:none;
  margin:0 0 var(--space-md)
}
 body.site-shared .article-shell .reading-body h3 {
  font-size:21px;
  line-height:1.4;
  max-width:none
}
 .article-shell .reading-body section {
  margin-bottom:var(--space-xl)
}
 body.site-shared .article-shell .reading-body :is(p,li) {
  font-size:clamp(16px,1.12vw,18px);
  line-height:1.8
}
 body.site-shared .article-shell .reading-body .editorial-cta h2 {
  font-family:var(--font-display);
  font-size:var(--section-title);
  line-height:1.12
}
 .article-shell .editorial-cta {
  border-radius:12px;
  padding:var(--space-lg)
}
 .article-shell .reading-note {
  border-radius:0 8px 8px 0
}
 .article-layout>.reading-toc {
  padding:var(--space-md)
}
 .article-layout>.reading-toc a {
  min-height:48px
}
 .reading-table:focus-visible {
  outline:2px solid var(--accent-text);
  outline-offset:4px
}
 .reading-table caption {
  text-align:left;
  padding-bottom:var(--space-sm);
  font-weight:600
}
 .table-hint {
  font-size:var(--text-small);
  color:var(--muted)
}
  /* Blog cards keep their own type hierarchy, independent of article headings. */ body.site-shared .editorial-card h2, body.site-shared .editorial-card h3 {
  font-family:var(--font-body);
  font-size:clamp(20px,1.65vw,25px);
  line-height:1.4;
  max-width:none;
  margin:0 0 var(--space-sm)
}
 body.site-shared .editorial-card p {
  font-size:15px;
  line-height:1.7;
  margin:0 0 var(--space-md)
}
 .editorial-card .card-copy {
  padding:var(--space-md)
}
 .editorial-card .editorial-meta {
  margin-bottom:var(--space-sm)
}
 .editorial-card .card-end {
  padding-top:var(--space-sm);
  border-top:1px solid var(--line)
}
 .editorial-tabs a {
  min-height:56px;
  display:flex;
  align-items:center;
  white-space:nowrap
}
 .editorial-notice {
  min-height:240px;
  padding-block:var(--space-xl);
  max-width:760px
}
 .contacts-layout {
  gap:var(--space-lg);
  margin-top:var(--space-xl)
}
 .contacts-layout>section {
  padding:var(--panel-inset)
}
 .contacts-layout h2 {
  font-size:var(--section-title);
  line-height:1.1
}
  /* Homepage rhythm; the approved LiDAR hero and its animation are untouched. */ body.review-site .company-section {
  padding-top:var(--section-space)
}
 body.review-site :is(.service-section,.project-section,.inline-request-section) {
  padding-block:var(--section-space)
}
 body.review-site .company-heading {
  max-width:none;
  margin-bottom:var(--space-xl);
  gap:var(--column-space)
}
 body.review-site .company-heading h2, body.review-site .section-heading h2, body.review-site .inline-form-slot .modal-inner>h2 {
  font-size:var(--section-title);
  line-height:1.12
}
 body.review-site .metrics {
  border-radius:var(--panel-radius)
}
 .review-service-photo {
  position:relative;
  min-height:330px;
  margin:0;
  border-radius:var(--panel-radius);
  overflow:clip
}
 /* The preview must never contribute its intrinsic dimensions to the grid row. */ .review-service-photo img {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  min-height:0;
  max-width:100%;
  object-fit:cover;
  object-position:center
}
 @media(max-width:959px) {
    body.review-site .service-links>a.is-previewed .service-index {
    color:var(--accent-text);
    font-weight:700
  }
}
 body.review-site .object-card {
  border-radius:var(--panel-radius)
}
 @media(min-width:60rem) {
    body.review-site .company-heading {
    display:grid;
    grid-template-columns:var(--content-columns);
    align-items:start
  }
  body.review-site .company-heading p {
    margin:0
  }
  .review-services {
    grid-template-columns:var(--content-columns);
    gap:var(--column-space)
  }
  .review-service-photo {
    min-height:0;
    align-self:stretch
  }
}
  /* Shared forms, menu, footer and documents. */ @media(min-width:60rem) {
    body.site-shared .site-menu {
    height:auto;
    min-height:0;
    max-height:100dvh;
    inset:0 0 auto;
    margin:0;
    overflow-y:auto;
    overscroll-behavior:contain
  }
  body.site-shared .site-menu::backdrop {
    background:var(--overlay)
  }
}
 .service-preview-progress { position:absolute; inset:auto 0 0; height:4px; background:var(--accent); transform:scaleX(0); transform-origin:left center; pointer-events:none; }
 .service-preview-progress[hidden] { display:none; }
 .review-service-photo { position:relative; }
 .menu-contacts-link { display:none; }
 .consent-check:has(input[aria-invalid="true"]) { color:var(--accent-text); }
 .consent-check input[aria-invalid="true"] { outline:2px solid var(--accent-text); outline-offset:2px; }
 @media(max-width:959px) {
  body.site-shared .site-menu .menu-contact-band { display:contents; }
  body.site-shared .site-menu .menu-contact-heading { order:-1; padding-bottom:24px; border-bottom:1px solid var(--line); }
  body.site-shared .site-menu .menu-contact-band .menu-form-slot { order:2; }
  body.site-shared .site-menu .menu-contacts-link { display:inline-flex; }
  body.site-shared .site-menu .menu-direct-links { align-items:flex-start; }
  body.site-shared .site-menu .menu-direct-links a+a { border:0; padding-left:0; }
 }
 .menu-viewport,.menu-panel { display:contents; }
 @media(min-width:60rem) {
  body.site-shared .site-menu[open] { background:transparent; overflow:hidden; animation:none; transform:none; }
  body.site-shared .site-menu .menu-viewport { display:block; margin-top:var(--menu-header-height); overflow:hidden; }
  body.site-shared .site-menu .menu-panel { display:block; background:var(--paper); max-height:calc(100dvh - var(--menu-header-height)); overflow-y:auto; overscroll-behavior:contain; }
  body.site-shared .site-menu .menu-content { padding-top:40px; }
  body.site-shared .header .desktop-nav { transition:opacity 180ms var(--ease-out); }
  body.site-shared .header.menu-is-open .desktop-nav { visibility:visible; opacity:0; pointer-events:none; }
 }
 @media(min-width:60rem) and (prefers-reduced-motion:no-preference) {
  body.site-shared .header.menu-is-open .desktop-nav { animation:menu-links-out 180ms var(--ease-out) both; }
  body.site-shared .site-menu[open] .menu-panel { animation:menu-curtain-in 320ms var(--ease-out) both; }
  body.site-shared .site-menu[open].is-closing .menu-panel { animation:menu-curtain-out 240ms var(--ease-in) both; pointer-events:none; }
  body.site-shared .site-menu[open] .menu-column,
  body.site-shared .site-menu[open] .menu-form-slot,
  body.site-shared .site-menu[open] .menu-content { animation:none; }
 }
 @keyframes menu-curtain-in {
  from { transform:translateY(-100%); }
  to { transform:translateY(0); }
 }
 @keyframes menu-links-out {
  from { opacity:1; }
  to { opacity:0; }
 }
 @keyframes menu-curtain-out {
  from { transform:translateY(0); }
  to { transform:translateY(-100%); }
 }
 /* Hallmark · component: compact menu B · existing Legran tokens · P4 H4 E4 S4 R5 V4 */ body.site-shared .site-menu .menu-content {
  gap:32px;
  padding-bottom:40px
}
 body.site-shared .site-menu .menu-contact-band {
  border-top:1px solid var(--line);
  padding-top:32px;
  min-width:0
}
 body.site-shared .site-menu .menu-contact-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-bottom:24px
}
 body.site-shared .site-menu .menu-contact-heading h2 {
  font-family:var(--font-display);
  font-size:36px;
  font-weight:400;
  line-height:1.1;
  margin:0
}
 body.site-shared .site-menu .menu-direct-links {
  display:flex;
  align-items:center;
  gap:24px
}
 body.site-shared .site-menu .menu-direct-links a {
  font-family:var(--font-body);
  font-size:20px;
  font-weight:600;
  line-height:1.4;
  color:var(--ink);
  white-space:nowrap;
  text-decoration:none;
  padding-block:8px
}
 body.site-shared .site-menu .menu-direct-links a+a {
  border-left:1px solid var(--line);
  padding-left:24px
}
 body.site-shared .site-menu .menu-direct-links a:is(:hover,:focus-visible) {
  color:var(--accent-text)
}
 body.site-shared .site-menu .menu-contact-band .menu-form-slot {
  border:0;
  padding:0;
  margin:0
}
 body.site-shared .site-menu .menu-contact-band .modal-inner {
  padding:0;
  margin:0
}
 body.site-shared .site-menu .menu-contact-band .modal-inner>h2, body.site-shared .site-menu .menu-contact-band .modal-lead {
  display:none
}
 body.site-shared .site-menu .menu-directory nav a {

  font-weight:500;

  min-height:40px
}
 @media(max-width:999px) {
    body.site-shared .site-menu .menu-contact-heading {
    align-items:flex-start;
    flex-direction:column;
    gap:16px
  }
}
 @media(max-width:599px) {
    body.site-shared .site-menu .menu-direct-links {
    flex-direction:column;
    align-items:flex-start;
    gap:0
  }
  body.site-shared .site-menu .menu-direct-links a+a {
    border:0;
    padding-left:0
  }
  body.site-shared .site-menu .menu-contact-heading h2 {
    font-size:32px
  }
}
 body.site-shared .site-menu .menu-company-contacts h2, body.site-shared .site-menu .menu-form-slot .modal-inner>h2, body.site-shared .site-menu .menu-directory h2 {
  font-size:32px;
  line-height:1.15;
  margin:0 0 var(--space-md)
}
 body.site-shared .footer-identity .brand {
  width:220px;
  max-width:100%
}
 body.site-shared .footer-identity {
  align-items:center;
  margin-bottom:var(--space-xl);
  padding-bottom:var(--space-lg)
}
 body.site-shared .footer-directory nav {
  gap:0
}
 body.site-shared .footer-directory a {
  padding-block:10px;
  line-height:1.6
}
 body.site-shared .company-details {
  margin-top:var(--space-xl);
  line-height:1.7
}
 body.site-shared .form-messengers {
  flex-wrap:wrap;
  gap:var(--space-sm) var(--space-lg)
}
 body.site-shared .request #check-request {
  height:60px;
  min-height:60px
}
 body.site-shared .form-status {
  min-height:1.5em
}
 body.site-shared .form-status:empty {
  display:none
}
 body.site-shared .request[data-requests-paused="true"] .form-status:not(:empty) {
  grid-column:1 / -1;
  width:100%;
  max-width:none;
  box-sizing:border-box;
  display:block;
  margin:20px 0 0;
  padding:16px 20px;
  border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;
  background:color-mix(in srgb,var(--accent) 8%,var(--paper));
  color:var(--ink);
  font-size:14px;
  line-height:1.6;
 }
 body.site-shared .request[data-requests-paused="true"] .form-status a {
  color:var(--accent-text);
  font-weight:600;
  white-space:nowrap;
  text-decoration:underline;
  text-underline-offset:3px;
 }
 body.site-shared .request .consent-check a:is(:hover,:focus-visible) {
  color:var(--accent-text);
  text-decoration-color:currentColor
}
 body.site-shared .site-menu .menu-directory nav a {
  font-size:15px;
  line-height:1.6;
  min-height:40px;
  padding-block:8px;
  color:var(--ink);
  transform:none;
  text-decoration:none
}
 body.site-shared .site-menu a:focus-visible,
 body.site-shared .site-menu .menu-directory nav a:focus-visible,
 body.site-shared .site-menu .menu-direct-links a:focus-visible {
  color:var(--accent-text);
  outline:none;
  box-shadow:none;
  text-decoration:none;
  transition:none;
 }
 body.site-shared .site-menu .menu-directory nav {
  gap:0
}
 body.site-shared .site-menu .menu-directory nav a:hover {
  color:var(--accent-text);
  transform:none;
  text-decoration:underline;
  text-underline-offset:4px
}
 body.site-shared .contact-dialog .modal-inner {
  padding:40px
}
 body.site-shared .contact-dialog .modal-inner>h2 {
  font-size:44px;
  line-height:1.1;
  padding-right:40px
}
 body.site-shared .legal-page>section {
  max-width:900px;
  margin-top:var(--space-xl)
}
 body.site-shared .legal-page>h1 {
  max-width:24ch;
  font-size:clamp(36px,4.5vw,68px);
  line-height:1.08
}
 body.site-shared .legal-page h2 {
  font-size:clamp(26px,2.7vw,40px);
  line-height:1.2;
  margin-bottom:var(--space-md)
}
 body.site-shared .legal-page :is(p,li) {
  line-height:1.8;
  overflow-wrap:break-word
}
 @media(max-width:639px) {
    :root {
    --panel-inset:16px;
    --section-space:56px;
    --panel-radius:12px
  }
  body.site-shared :is(.editorial-main,.legal-page) {
    padding-top:112px
  }
  body.site-shared .editorial-related {
    padding-top:var(--space-lg)
  }
  .service-presentation .service-hero-photo {
    margin:0
  }
  .service-presentation .service-hero-copy {
    padding:var(--space-lg) var(--space-md)
  }
  .service-presentation .service-hero::after {
    background:var(--service-shade-strong)
  }
  .service-presentation .service-hero-copy>.service-action {
    min-width:0;
    width:100%
  }
  .service-presentation .service-section p {
    font-size:16px
  }
  .service-presentation .service-facts>div {
    padding-block:var(--space-sm)
  }
  .article-shell .editorial-cta {
    padding:var(--space-md) var(--space-sm)
  }
  body.site-shared .article-shell .reading-body h3 {
    font-size:19px
  }
  body.site-shared .footer-identity {
    align-items:flex-start;
    gap:var(--space-lg)
  }
  body.site-shared .footer-identity .brand {
    width:180px
  }
  body.site-shared .editorial-card .card-copy {
    padding:20px
  }
  body.site-shared .site-menu .menu-directory h2 {
    font-size:28px
  }
  body.site-shared .contact-dialog .modal-inner {
    padding:32px 24px
  }
 body.site-shared .contact-dialog .modal-inner>h2 {
    font-size:36px
  }
}
 /* Modal form: one spacing system, without residual space from removed notes. */ body.site-shared .contact-dialog .modal-inner>h2 {
  margin:0 0 16px
}
 body.site-shared .contact-dialog .modal-lead {
  margin:0 0 32px;
  line-height:1.5
}
 body.site-shared .contact-dialog .request {
  margin:0
}
 body.site-shared .contact-dialog .request-fields {
  display:flex;
  flex-direction:column;
  gap:24px
}
 body.site-shared .contact-dialog .request .field {
  margin:0
}
 body.site-shared .contact-dialog .request .field>label {
  display:block;
  margin:0 0 8px
}
 body.site-shared .contact-dialog .request label.consent-check {
  margin:0;
  gap:12px;
  line-height:1.6
}
 body.site-shared .contact-dialog .request #check-request {
  margin:0;
  width:100%
}
 body.site-shared .contact-dialog .form-status:not(:empty) {
  margin:0;
  min-height:0
}
 body.site-shared .service-presentation .inline-request-section {
  width:100%;
  max-width:none;
  margin-inline:auto;
  padding:calc(var(--section-space) + 16px) 0 0 !important;
  background:transparent
 }
 body.site-shared .service-presentation .inline-form-slot {
  width:100%;
  min-height:0;
  padding:40px var(--panel-inset);
  background:#111214;
  border:0;
  border-radius:16px;
  box-shadow:none
 }
 body.site-shared .service-presentation>.editorial-related {
  margin-top:104px !important
 }
 body.site-shared .service-presentation .inline-form-slot .modal-inner>h2,
 body.site-shared .service-presentation .inline-form-slot .modal-lead,
 body.site-shared .service-presentation .inline-form-slot .request label,
 body.site-shared .service-presentation .inline-form-slot .request .consent-check {
  color:#f5f2ee
 }
 body.site-shared .service-presentation .inline-form-slot .modal-lead,
 body.site-shared .service-presentation .inline-form-slot .form-status {
  color:#b8b5b1
 }
 body.site-shared .service-presentation .inline-form-slot .request .field>label {
  color:#d9d5d0
 }
 body.site-shared .service-presentation .inline-form-slot .request input[type=text],
 body.site-shared .service-presentation .inline-form-slot .request input[type=tel] {
  color:#f5f2ee;
  background:#1b1d20;
  border-color:#55585c
 }
 body.site-shared .service-presentation .inline-form-slot .request input::placeholder {
  color:#8e918f
 }
 body.site-shared .service-presentation .inline-form-slot .request input:focus {
  border-color:#ff572f;
  box-shadow:0 0 0 3px rgba(255,87,47,.2)
 }
 body.site-shared .service-presentation .inline-form-slot .request .consent-check a {
  color:#ff9278
 }
 body.site-shared .service-presentation .inline-form-slot .request .consent-check span,
 body.site-shared .service-presentation .inline-form-slot .request .consent-check span a {
  color:#d9d5d0
 }
 body.site-shared .service-presentation .inline-form-slot .request .consent-check span a {
  color:#ff9278
 }
 body.site-shared .service-presentation .inline-form-slot .button-dark {
  background:#f3f1ed !important;
  color:#111214 !important;
  border-color:#f3f1ed !important
 }
 body.site-shared .service-presentation .inline-form-slot .button-dark:hover,
 body.site-shared .service-presentation .inline-form-slot .button-dark:focus-visible {
  background:#ff572f !important;
  color:#111214;
  border-color:#ff572f !important;
  transform:none
 }
 @media(max-width:639px) {
  body.site-shared .service-presentation .inline-request-section {
   width:100%;
   padding:40px 0 0
  }
  body.site-shared .service-presentation .inline-form-slot {
   padding:28px 20px
  }
 }
 body.site-shared .contact-dialog .request-result {
  display:grid;
  grid-template-columns:64px minmax(0,1fr);
  column-gap:20px;
  align-items:start;
  padding:36px 0;
  max-width:520px;
  min-width:360px
 }
 body.site-shared .contact-dialog .request-result .result-symbol {
  grid-row:1 / span 2;
  align-self:center;
  width:112px;
  height:112px;
  border:0;
  border-radius:50%;
  background:var(--accent);
  color:#fff;
  font-size:30px;
  font-weight:600;
  box-shadow:0 10px 24px rgba(255,83,42,.22)
 }
 body.site-shared .contact-dialog .request-result h3 {
  grid-column:2;
  margin:0 0 10px;
  font-size:clamp(28px,3.5vw,38px);
  line-height:1.05;
  letter-spacing:-.025em
 }
 body.site-shared .contact-dialog .request-result p {
  grid-column:2;
  margin:0;
  max-width:38ch;
  font-size:16px;
  line-height:1.55
 }
 body.site-shared .contact-dialog .request-result .text-link {
  display:none
 }
 body.site-shared .contact-dialog .request-result .text-link:hover {
  background:var(--ink);
  color:var(--paper)
 }
 @media(max-width:639px) {
  body.site-shared .contact-dialog .request-result {
    padding:24px 0;
    min-width:0
  }
  body.site-shared .contact-dialog .request-result .result-symbol {
    width:88px;
    height:88px;
    font-size:27px
  }
  body.site-shared .contact-dialog .request-result h3 {
    margin-top:2px;
    font-size:32px
  }
 }
 @media(prefers-reduced-motion:reduce) {
  .editorial-card img {
    transition:none!important;
    transform:none!important
  }
}
  /* Hallmark · component: footer legal details · existing Legran tokens
 * Static content; no interaction states or motion. P4 H4 E4 S4 R5 V3. */ body.site-shared .footer-legal {
    display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--space-md);
    border-top:1px solid var(--line-dark);
  margin-top:var(--space-lg);
  padding-top:var(--space-md);
}
 body.site-shared .company-details {
    display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:var(--space-xs);
    border:0;
  margin:0;
  padding:0;
    color:var(--light-muted);
  font-size:var(--text-small);
  line-height:1.65;
}
 body.site-shared .company-details p {
  margin:0;
  max-width:none;
  min-width:0
}
 body.site-shared .company-registration {
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:var(--space-xs) var(--space-md)
}
 body.site-shared .company-address {
  display:flex;
  flex-direction:column;
  gap:var(--space-xs)
}
 body.site-shared .company-registration strong {
  color:var(--white);
  font-size:var(--text-small);
  font-weight:500
}
 body.site-shared .company-identifiers {
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-xs) var(--space-md);
  font-variant-numeric:tabular-nums
}
 body.site-shared .company-identifiers>span {
  white-space:nowrap
}
 body.site-shared .company-address-label {
  display:none
}
 body.site-shared .company-details+.footer-bottom {
    border:0;
  margin:0;
  padding:0;
  align-self:end;
    justify-content:flex-start;
  text-align:left;
  font-size:var(--text-small);
  line-height:1.65;
}
 @media(min-width:60rem) {
    body.site-shared .footer-legal {
    grid-template-columns:minmax(0,1fr) auto;
    column-gap:var(--space-xl)
  }
  body.site-shared .company-details+.footer-bottom {
    justify-content:flex-end;
    text-align:right;
    white-space:nowrap
  }
}

/* Keyboard focus: colour and surface changes, without an outer frame. */
body.site-shared :focus-visible {
  outline:none!important;
  box-shadow:none!important;
  transition:none!important;
}
body.site-shared a:focus-visible,
body.site-shared summary:focus-visible,
body.site-shared button:not(.button):focus-visible {
  color:var(--accent-text)!important;
}
body.site-shared :is(.header,.site-footer,.hero) a:focus-visible,
body.site-shared :is(.header,.site-footer,.hero) button:not(.button):focus-visible {
  color:var(--accent)!important;
}
body.site-shared .button:focus-visible {
  background:var(--ink)!important;
  color:var(--white)!important;
}
body.site-shared :is(.hero,.service-hero,.site-footer) .button:focus-visible {
  background:var(--white)!important;
  color:var(--ink)!important;
}
body.site-shared .editorial-card:focus-visible :is(h2,h3),
body.site-shared .service-links>a:focus-visible :is(h3,svg) {
  color:var(--accent-text);
}
body.site-shared a.brand:focus-visible img { opacity:.6; }
body.site-shared .consent-check:has(input:focus-visible) { color:var(--accent-text); }
body.site-shared input[type=checkbox]:focus-visible { border-color:var(--accent-text); background-color:var(--paper-deep); }
body.site-shared .reading-table:focus-visible { background:var(--paper-deep); }
@media(forced-colors:active) {
 body.site-shared :focus-visible { outline:2px solid Highlight!important; }
}
/* Contacts CTA: keep the same light-to-accent interaction as the dark request form. */
body.site-shared .contacts-direct .button.button-dark{background:#f3f1ed!important;color:#111214!important;border:1px solid #f3f1ed!important;box-shadow:none!important}
body.site-shared .contacts-direct .button.button-dark::before{display:none!important}
body.site-shared .contacts-direct .button.button-dark:hover,body.site-shared .contacts-direct .button.button-dark:focus-visible{background:#ff572f!important;color:#111214!important;border-color:#ff572f!important;box-shadow:none!important;transform:none!important}
body.site-shared .service-presentation .inline-form-slot .button-dark::before{display:none!important}
body.site-shared .service-presentation .inline-form-slot .button-dark:hover,body.site-shared .service-presentation .inline-form-slot .button-dark:focus-visible{background:#ff572f!important;color:#111214!important;border-color:#ff572f!important;box-shadow:none!important;transform:none!important}
body.site-shared .service-presentation .inline-form-slot .button-dark,
body.site-shared .service-presentation .inline-form-slot .button-dark:hover,
body.site-shared .service-presentation .inline-form-slot .button-dark:focus-visible,
body.site-shared .service-presentation .inline-form-slot .button-dark:active{top:0!important;translate:none!important;transform:none!important;will-change:auto!important}
body.site-shared .service-presentation .inline-form-slot .button-dark svg{transform:none!important}
