/* One-off services: the established desktop grid and a focused service catalogue. */
.one-off-page { --so-gap:clamp(24px,2.22vw,40px); }
.one-off-page .so-scope-note { margin-top:32px; padding:24px; border:1px solid #fff; border-radius:20px; background:#ffffff80; }
.one-off-page .so-scope-note p { font-size:17px; line-height:1.4; letter-spacing:-.015em; }
.one-off-page .so-scope-note span { display:block; margin-top:12px; font-size:14px; line-height:1.6; color:var(--sp-copy); }
.one-off-page .so-service-cta { margin-top:24px; color:var(--ink); font-weight:500; }
.one-off-page .so-section-heading { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--so-gap); align-items:end; margin-bottom:48px; }
.one-off-page .so-section-heading>h2 { grid-column:1 / 3; text-wrap:pretty; }
.one-off-page .so-case { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:var(--so-gap); padding:clamp(32px,4vw,64px); border:1px solid #fff; border-radius:26px; background:#ffffff80; }
.one-off-page .so-case-project { min-width:0; display:flex; flex-direction:column; align-items:flex-start; }
.one-off-page .so-case-project h3 { font-size:clamp(28px,2.6vw,42px); font-weight:500; letter-spacing:-.035em; margin-top:28px; line-height:1.15; }
.one-off-page .so-case-project>p:not(.sp-label) { font-size:14px; line-height:1.5; margin-top:12px; color:var(--sp-copy); }
.one-off-page .so-case-project img { width:190px; height:auto; max-width:90%; margin-top:auto; padding-top:40px; }
.one-off-page .so-case-review { min-width:0; padding-left:clamp(24px,3vw,48px); border-left:1px solid var(--sp-border); }
.one-off-page .so-review-stars { display:block; color:#008f75; font-size:16px; letter-spacing:4px; line-height:1; }
.one-off-page .so-case-review blockquote { font-size:clamp(26px,2.4vw,40px); line-height:1.3; letter-spacing:-.028em; margin-top:25px; text-wrap:pretty; }
.one-off-page .so-case-review figcaption { display:flex; flex-direction:column; gap:5px; margin-top:28px; font-size:14px; line-height:1.4; }
.one-off-page .so-case-review figcaption strong { font-weight:500; }
.one-off-page .so-case-review figcaption span { color:var(--sp-copy); }
.one-off-page .so-process-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px var(--so-gap); list-style:none; padding:0; margin:0; }
.one-off-page .so-process-grid>li { display:grid; grid-template-rows:subgrid; grid-row:span 3; min-width:0; padding:28px clamp(20px,2vw,32px) 32px; border:1px solid #ffffffaa; border-radius:24px; background:#ffffff80; }
.one-off-page .so-step-number { display:grid; place-items:center; width:40px; height:40px; border-radius:50%; background:var(--ink); color:var(--accent); font-size:12px; line-height:1; font-variant-numeric:tabular-nums; }
.one-off-page .so-process-grid h3 { font-size:clamp(23px,1.8vw,30px); line-height:1.17; font-weight:400; letter-spacing:-.025em; }
.one-off-page .so-process-grid p { font-size:16px; line-height:1.6; color:var(--sp-copy); text-wrap:pretty; }
.one-off-page .so-follow-on { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:clamp(32px,4vw,64px); margin-top:32px; padding:clamp(32px,3.5vw,56px); border:1px solid #ffffff12; border-radius:26px; background:var(--ink); color:#fff; }
.one-off-page .so-follow-on-copy { min-width:0; }
.one-off-page .so-follow-on h3 { font-size:clamp(28px,2.6vw,42px); font-weight:400; line-height:1.15; letter-spacing:-.03em; text-wrap:pretty; }
.one-off-page .so-follow-on-copy p { max-width:620px; margin-top:16px; color:#b9c0bc; font-size:17px; line-height:1.6; text-wrap:pretty; }
.one-off-page .so-follow-on-actions { display:flex; flex-direction:column; gap:12px; width:max-content; max-width:100%; }
.one-off-page .so-follow-on .button { width:100%; justify-content:space-between; }
.one-off-page .so-follow-on .so-button-light { --cta-fill:#f1f2f1; --cta-text:var(--ink); --cta-hover:#fff; --cta-icon-fill:var(--ink); --cta-icon-text:var(--accent); }
.one-off-page .so-follow-on .button:focus-visible { outline-color:var(--accent); }
@media(min-width:901px) {
  .one-off-page .sp-hero-grid { grid-template-columns:minmax(0,1fr) minmax(0,1.08fr); gap:clamp(32px,4vw,64px); align-items:center; }
  .one-off-page .sp-hero-art { min-height:0; aspect-ratio:4 / 3; }
  .one-off-page .sp-hero-art>img { object-position:50% center; }
  .one-off-page .sp-hero-copy .sp-lead { max-width:620px; }
  .one-off-page .sp-split { gap:var(--so-gap); }
  .one-off-page .sp-side-heading { padding-right:0; }
  .one-off-page .sp-side-heading .sp-body-copy { max-width:360px; }
  .one-off-page .sp-contact-person { width:100%; max-width:386px; justify-self:center; }
}
@media(min-width:901px) and (max-width:1200px) {
  .one-off-page .sp-hero-grid { align-items:stretch; }
  .one-off-page .sp-hero-art { aspect-ratio:auto; }
  .one-off-page .sp-hero-art>img { object-fit:cover; }
  .one-off-page .sp-client-caption { inset:auto 16px 16px; max-width:calc(100% - 32px); padding:12px 16px; }
  .one-off-page .so-process-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* Desktop polish: shared type, insets and column starts across the page. */
@media(min-width:901px) {
  .one-off-page {
    --so-card-inset:clamp(24px,2.3vw,40px);
    --so-title-size:clamp(24px,2vw,32px);
  }
  .one-off-page .sp-hero-grid { align-items:stretch; }
  .one-off-page .sp-hero-art { aspect-ratio:auto; }
  .one-off-page .sp-side-heading .sp-body-copy { max-width:none; }
  .one-off-page .so-scope-note { padding:var(--so-card-inset); border-radius:24px; }
  .one-off-page .so-scope-note span { font-size:15px; }
  .one-off-page .so-services .sp-accordion summary h3,
  .one-off-page .so-process-grid h3 { font-size:var(--so-title-size); line-height:1.14; }
  .one-off-page .sp-accordion-content { line-height:1.6; }
  .one-off-page .so-case { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .one-off-page .so-case-review { grid-column:2 / -1; padding-left:var(--so-card-inset); }
  .one-off-page .so-case-project h3,
  .one-off-page .so-case-review blockquote { margin-top:24px; }
  .one-off-page .so-case-review figcaption { margin-top:24px; }
  .one-off-page .so-process-grid { row-gap:16px; }
  .one-off-page .so-process-grid>li { padding:32px var(--so-card-inset); }
  .one-off-page .so-process-grid h3 { margin-top:8px; }
  .one-off-page .so-process-grid p { font-size:17px; }
}
@media(min-width:901px) and (max-width:1200px) {
  .one-off-page .so-process-grid>li:nth-child(n+3) { margin-top:8px; }
}
@media(min-width:901px) and (max-height:640px) {
  .one-off-page .so-services .sp-side-heading { position:static; }
}

@media(max-width:900px) {
  .one-off-page .so-section-heading { grid-template-columns:minmax(0,1fr); gap:24px; margin-bottom:32px; }
  .one-off-page .so-section-heading>h2 { grid-column:auto; }
  .one-off-page .so-case { grid-template-columns:minmax(0,1fr); gap:28px; padding:28px; }
  .one-off-page .so-case-project h3 { margin-top:20px; }
  .one-off-page .so-case-project img { margin-top:24px; padding-top:0; width:165px; }
  .one-off-page .so-case-review { padding:28px 0 0; border-left:0; border-top:1px solid var(--sp-border); }
  .one-off-page .so-case-review blockquote { font-size:clamp(25px,4vw,34px); }
  .one-off-page .so-process-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
  .one-off-page .so-process-grid>li { padding:26px 24px; row-gap:18px; }
  .one-off-page .so-follow-on { grid-template-columns:minmax(0,1fr); gap:28px; padding:28px; }
  .one-off-page .so-follow-on-copy p { font-size:16px; }
  .one-off-page .so-follow-on-actions { width:100%; max-width:360px; }
}
@media(max-width:600px) {
  .one-off-page .so-process-grid { grid-template-columns:minmax(0,1fr); }
  .one-off-page .so-process-grid>li { grid-template-rows:auto; grid-row:auto; gap:18px; }
  .one-off-page .so-case,.one-off-page .so-follow-on { padding:24px 20px; border-radius:20px; }
  .one-off-page .so-service-cta { font-size:14px; }
}
