/* Accessibility, privacy notice and legal-page enhancements */
.skip-link{
  position:fixed;
  top:8px;
  right:8px;
  z-index:2000;
  transform:translateY(-160%);
  background:#fff;
  color:#1a1a1a;
  border:2px solid #1a1a1a;
  border-radius:8px;
  padding:10px 14px;
  font-weight:600;
}
.skip-link:focus{transform:none}

:where(a,button,input,textarea,select,[tabindex]):focus-visible{
  outline:3px solid #1a1a1a;
  box-shadow:0 0 0 7px #fff;
  outline-offset:4px;
}

.contact-form input:focus-visible{
  outline:3px solid #1a1a1a;
  box-shadow:0 0 0 7px #fff;
  outline-offset:4px;
  border-bottom-color:#fff;
}

.privacy-notice{
  grid-column:1/-1;
  margin:4px 0 0;
  font-size:14px;
  line-height:1.55;
  font-weight:400;
  text-align:right;
  color:#fff;
}
.privacy-notice a,.legal-links a,.legal-page a{text-decoration:underline;text-underline-offset:3px}

.legal-links{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:8px;
}
.legal-disclaimer{
  margin:10px 0 0!important;
  font-size:14px;
  font-weight:400;
  line-height:1.5;
}

.legal-page{
  min-height:100vh;
  background:#fff;
  color:#1a1a1a;
  padding:72px 20px;
}
.legal-page .legal-shell{
  width:min(860px,100%);
  margin:0 auto;
}
.legal-page h1{
  margin:0 0 28px;
  font-size:48px;
  line-height:1.05;
  font-weight:200;
}
.legal-page h2{
  margin:32px 0 10px;
  font-size:24px;
  line-height:1.2;
  font-weight:600;
}
.legal-page p,.legal-page li{
  font-size:18px;
  line-height:1.65;
}
.legal-page ul{padding-inline-start:24px}
.legal-page .legal-meta{
  color:#555;
  font-size:15px;
}
.legal-page .legal-back{
  display:inline-block;
  margin-bottom:26px;
  font-weight:600;
}
.legal-page .legal-note{
  border-inline-start:4px solid #1a1a1a;
  padding:12px 16px;
  background:#f5f5f5;
}

@media (max-width:520px){
  .privacy-notice{text-align:center;font-size:13px}
  .legal-links{font-size:18px}
  .legal-page{padding:44px 20px}
  .legal-page h1{font-size:40px}
  .legal-page p,.legal-page li{font-size:17px}
}

@media (prefers-reduced-motion:reduce){
  .skip-link{transition:none}
}


/* A native modal provides focus containment and an inert background. */
.mobile-menu{margin:0;padding:0;border:0;width:100%;height:100dvh;max-width:none;max-height:none}
.mobile-menu::backdrop{background:#1a1a1a}
.mobile-menu nav{padding-bottom:32px}
.mobile-menu nav a{min-height:44px;display:flex;align-items:center}
/* Text must wrap rather than be clipped at narrow widths or enlarged spacing. */
h1,h2,h3,p,a,.stats span{overflow-wrap:anywhere}
.contact-form>*{min-width:0}
.contact-form input{min-height:44px}
.header-contact,.submit-button{min-height:44px;height:auto;padding:8px 16px}
.service-card:hover p,.service-card:focus-within p{max-height:none}
.hero-copy{display:grid;height:auto;min-height:300px}
.hero-stage{position:relative;inset:auto;grid-area:1 / 1;min-width:0}
/* Figma composition: text remains in flow so enlarged text can grow. */
.hero-actions{position:relative}
.motion-stop{display:none;color:inherit;background:none;border:0;text-decoration:underline;text-underline-offset:3px;font-size:14px;min-height:32px;padding:6px 0;margin-top:8px}
.js .motion-stop{display:block}
.hero-actions .hero-more{position:static;margin:0;max-width:100%}
@media(min-width:901px){
 .hero-inner{height:auto;min-height:566px;display:block;padding:90px 0 60px}
 .hero-copy{position:relative;top:auto;left:auto;width:46.667%;margin:0 auto 0 7.292%;min-height:300px}
 .hero-actions{width:308px;max-width:46.667%;margin:20px 46.04% 0 auto}
 .hero-portrait{position:absolute;right:-3.14%;top:0;width:33%;height:590px}
 .hero-portrait img{height:100%;object-fit:cover}
}
@media(min-width:521px) and (max-width:900px){
 .hero-inner{display:block;height:auto;min-height:566px;padding:80px 0 60px}
 .hero-copy{position:relative;left:auto;top:auto;width:48%;min-height:330px;margin:0 auto 0 6.25%}
 .hero-actions{width:308px;max-width:48%;margin:20px auto 0 6.25%}
 .hero-portrait{position:absolute;right:-5.8%;top:30px;width:39.063%;height:480px}
 .hero-portrait img{height:100%;object-fit:cover}
}
@media(max-width:520px){
 .hero-actions{order:1;align-self:center;width:308px;max-width:100%}
 .hero-actions .hero-more{width:100%}
}
/* Keep the original compact button shape with a larger transparent hit area. */
@media(min-width:901px){.header-contact{height:36px;min-height:36px;padding:0;position:relative}.header-contact::after{content:"";position:absolute;inset:-4px 0}}
@media(min-width:901px) and (max-width:1200px){
 .content-width{width:calc(100% - 96px)}
 .service-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
 .contact-form{grid-template-columns:repeat(2,minmax(0,1fr))}
 .desktop-nav{gap:16px}
}
@media(max-width:520px){
 .hero-copy{min-height:0}
 .hero-more{height:auto;min-height:48px;padding:10px}
 .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
 .stats article:last-child{max-width:100%}
}
@media(forced-colors:active){
 :where(a,button,input,textarea,select,[tabindex]):focus-visible{outline:3px solid Highlight;box-shadow:none}
}
html:not(.js) .testimonial-track{display:grid;transform:none}
html:not(.js) .carousel-controls{display:none}

html.motion-stopped{scroll-behavior:auto}
html.motion-stopped *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html.motion-stopped .process-grid .process-card{opacity:1!important;transform:none!important}
html:not(.js) .menu-toggle{display:none}
html:not(.js) .header-contact{display:inline-flex}
@media(prefers-reduced-motion:reduce){.motion-stop{display:none!important}}

/* Inline errors survive zoom and remain attached to their labelled fields. */
.field-error{font-size:16px;font-weight:400;line-height:1.5}
.field-error:empty{display:none}
.contact-form input[aria-invalid="true"]{border-bottom:3px dashed currentColor}
.contact-form[aria-busy="true"] .submit-button{cursor:progress}
/* Large touch screens also need explanations without hovering. */
@media(hover:none){.service-card p{opacity:1;max-height:none}}
@media(max-width:900px){
 .stats{grid-template-columns:repeat(3,minmax(0,1fr))}
 .stats article{min-width:0}
}
@media(max-width:520px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
