/* Specialist composition. Loaded after atelier.css; all rules stay inside
   the five specialist fragments. Native links, details and language controls
   retain the shared site's behaviour. */
.spf-page {
  --sp-ground: #151922;
  --sp-surface: #222934;
  --sp-raised: #2a3340;
  --sp-ink: #eef0ec;
  --sp-muted: #a5aeb9;
  --sp-gold: var(--gold);
  --sp-line: rgba(210, 220, 229, .15);
  --sp-ease: cubic-bezier(.28, .11, .32, 1);
  color: var(--sp-ink);
  background: var(--sp-ground);
}
.spf-page .wrap { width: min(87.5%, 1380px); }
.spf-page .muted, .spf-page .small { color: var(--sp-muted); }
.spf-page .eyebrow, .spf-page .number { color: var(--sp-gold); }
.spf-page .eyebrow { font-size: 11px; letter-spacing: .14em; }
.spf-page .section-head { gap: 60px; margin-bottom: 48px; }
.spf-page .section-head > p { color: var(--sp-muted); font-size: 16px; line-height: 1.85; }
.spf-page .section-head h2 { max-width: 16em; }
.spf-page .section-head h2, .spf-page .sp-intake h2 { line-height: 1.3; }
.spf-page .text-link { color: var(--sp-gold); }
.spf-page .button { background: var(--sp-gold); border-color: var(--sp-gold); color: #151922; }
.spf-page .button:hover { background: var(--gold); border-color: var(--gold); }
.spf-page .spf-section { padding-block: clamp(76px, 7.5vw, 116px); }
.spf-page .section--tint { background: #1a202a; }
.spf-page .section--dark { background: #151922; }

/* The photograph and headline share a frame. Each scene has its own focal
   point and shade, rather than applying one dark wash to the whole image. */
.spf-page .spf-hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: min(880px, max(720px, 94svh));
  overflow: hidden;
  background: #10151d;
}
.spf-hero__media { position: absolute; inset: 0; margin: 0; z-index: -2; }
.spf-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.spf-hero:after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(90deg, rgba(12,17,24,.91), rgba(12,17,24,.68) 30%, rgba(12,17,24,.14) 68%, rgba(12,17,24,.08)),
    linear-gradient(0deg, #151922 0%, rgba(21,25,34,.1) 24%, transparent 70%, rgba(12,17,24,.3));
}
.spf-hero__inner { padding-block: 148px 108px; }
.spf-hero__copy { max-width: 650px; }
.spf-hero__copy .eyebrow { margin-bottom: 30px; }
.spf-hero__copy h1 { color: #f5f3ee; font-size: clamp(44px, 4.65vw, 72px); line-height: 1.24; letter-spacing: -.025em; margin: 0 0 28px; max-width: 12em; }
html[lang=en] .spf-hero__copy h1 { font-size: clamp(44px, 4.4vw, 68px); line-height: 1.12; letter-spacing: -.025em; }
.spf-hero__copy .lede { color: #c5cbd2; max-width: 35em; font-size: 17px; line-height: 1.9; }
.spf-hero__copy .actions { margin-top: 34px; gap: 20px 28px; }
.spf-hero__copy .text-link { font-size: 14px; color: var(--gold); }
.spf-hero-caption { position: absolute; bottom: 25px; right: 6.25%; z-index: 3; max-width: 36em; margin:0; color: #b7c0ca; font-size: 10px; line-height: 1.7; letter-spacing: .045em; text-align: right; }
.spf-page .spf-hero--vp { min-height: min(920px, max(760px, 100svh)); }
.spf-hero--vp .spf-hero__copy { margin-left: auto; max-width: 540px; }
.spf-hero--vp:after { background: linear-gradient(270deg, rgba(12,17,24,.85), rgba(12,17,24,.69) 28%, rgba(12,17,24,.14) 62%, transparent), linear-gradient(0deg,#151922,transparent 32%,transparent 76%,rgba(12,17,24,.25)); }
.spf-hero--vp .spf-hero__media img { object-position: 42% center; }
.spf-hero--bi .spf-hero__media img { object-position: 62% center; }
.spf-hero--bi:after { background: linear-gradient(90deg,rgba(12,17,24,.87),rgba(12,17,24,.6) 35%,transparent 75%),linear-gradient(0deg,#151922,transparent 45%); }
.spf-hero--drone .spf-hero__copy { max-width: 610px; }
.spf-hero--drone .spf-hero__media img { object-position: 59% center; }
.spf-page .spf-hero--nt { min-height: 610px; align-items: flex-start; }
.spf-hero--nt .spf-hero__inner { padding-block: 158px 94px; }
.spf-hero--nt .spf-hero__copy { max-width: 790px; }
.spf-hero--nt .spf-hero__media img { object-position: center bottom; }
.spf-hero--nt:after { background: linear-gradient(90deg,rgba(21,25,34,.55),transparent 80%),linear-gradient(0deg,#151922,rgba(21,25,34,.15) 26%,rgba(21,25,34,.12)); }

/* Photographs identify the work before the service description is read. */
.spf-services { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 32px; }
.spf-service { min-width: 0; overflow: hidden; border: 1px solid var(--sp-line); border-radius: 24px; background: var(--sp-surface); }
.spf-service__image { margin: 0; position: relative; overflow: hidden; }
.spf-service__image img { display: block; width: 100%; aspect-ratio: 1.9; object-fit: cover; filter: saturate(.82) contrast(1.035); }
.spf-service__image figcaption { position: absolute; right: 22px; bottom: 14px; font-size: 10px; color: #c0c7cf; letter-spacing: .04em; }
.spf-service__body { padding: 32px 36px 36px; }
.spf-service__body > .number { display: block; margin-bottom: 17px; font-size: 11px; letter-spacing: .15em; }
.spf-service__body h3 { color: var(--sp-ink); font-size: clamp(23px, 2vw, 28px); line-height: 1.42; margin-bottom: 18px; }
.spf-service__body p { color: #b5bec8; font-size: 15px; line-height: 1.9; margin: 0; }
.spf-service .sp-service-detail { margin-top: 26px; padding: 20px 0 0; border: 0; border-top: 1px solid var(--sp-line); }
.spf-service .sp-service-detail .eyebrow { color: var(--sp-gold); font-size: 10px; letter-spacing: .1em; margin: 0 0 10px; }
.spf-service .sp-service-detail p:not(.eyebrow) { font-size: 14px; line-height: 1.85; color: #d1d6dc; }
.spf-services--bi > .spf-service:first-child { grid-column: 1/-1; display: grid; grid-template-columns: 1fr 1.05fr; }
.spf-services--bi > .spf-service:first-child .spf-service__image img { height: 100%; min-height: 460px; aspect-ratio: auto; }
.spf-services--bi > .spf-service:first-child .spf-service__body { padding: 44px 48px; }
.spf-services--bi > .spf-service:first-child h3 { font-size: 34px; }
.spf-page .spf-caption { margin: 22px 0 0; font-size: 11px; line-height: 1.8; color: #8e9ba9; }

/* Quiet tangible planning detail, set beside the actual sequence of work. */
.spf-page .spf-image { margin-top: 38px; overflow: hidden; }
.spf-page .spf-image img, .spf-closing .media img { width: 100%; aspect-ratio: 1.35; object-fit: cover; border-radius: 22px; filter: saturate(.82); }
.spf-page .spf-image figcaption, .spf-closing .media figcaption { color: #95a2b0; margin-top: 13px; font-size: 11px; line-height: 1.75; }
.spf-method .split { align-items: start; grid-template-columns: 1.04fr 1fr; gap: 76px; }
.spf-method .sp-note { color: #b3bdc8; font-size: 16px; line-height: 1.9; }
.spf-page .sp-steps { gap: 0; }
.spf-page .sp-steps > li { padding: 27px 0; border-top: 1px solid var(--sp-line); grid-template-columns: 32px minmax(0,1fr); gap: 20px; }
.spf-page .sp-steps > li:first-child { padding-top: 0; border-top: 0; }
.spf-page .sp-steps h3 { font-size: 23px; line-height: 1.4; margin-bottom: 14px; }
.spf-page .sp-steps p { color: #abb6c2; font-size: 15px; line-height: 1.9; }
.spf-page .sp-qualifications { margin-top: 22px; }
.spf-page .accordion, .spf-page .accordion details { border-color: var(--sp-line); }
.spf-page .accordion summary { color: #e6e9e9; }
.spf-page .accordion details > p, .spf-page .accordion details > div, .spf-page .accordion li { color: #aebac7; }
.spf-page .accordion details > ul { font-size: 14px; padding-inline: 18px 24px; line-height: 1.9; }
.spf-page .accordion details > ul + p { margin-top: 18px; }
.spf-page .spf-routine { background: #1b212b; }
.spf-routine .sp-scenarios { gap: 26px; }
.spf-routine .spf-routine-card { background: linear-gradient(150deg,#27313e,#202733); border: 1px solid var(--sp-line); border-radius: 22px; padding: 32px; }
.spf-routine-card .number { display: inline-flex; align-items: center; gap: 16px; }
.spf-routine-card .number:after { content: ""; height: 1px; width: 42px; background: color-mix(in srgb,var(--gold) 30.20%,transparent); }
.spf-routine-card h3 { margin-top: 30px; font-size: 24px; }
.spf-routine-card p { font-size: 15px; line-height: 1.9; color: #b0bbc7; }

/* A focused hub: the whole card is one real, keyboard-operable link. */
.spf-page .spf-tech-areas { padding-top: 52px; }
.spf-tech-grid { gap: 24px; }
.spf-page .sp-tech-card { overflow: hidden; border: 1px solid var(--sp-line); border-radius: 24px; background: var(--sp-surface); transition: transform .48s var(--sp-ease),background .24s,border-color .24s; }
.spf-tech-image { position: relative; overflow: hidden; }
.spf-page .sp-tech-card .card__image { aspect-ratio: 1.32; filter: saturate(.8) brightness(.94); transition: transform .8s var(--sp-ease),filter .48s; }
.spf-page .sp-tech-card .card__body { padding: 28px 30px 32px; }
.sp-tech-card .number { font-size: 10px; letter-spacing: .14em; margin-bottom: 19px; }
.spf-page .sp-tech-card h3 { color: #eef0ec; font-size: 25px; line-height: 1.4; }
.spf-page .sp-tech-card .card__body > p { color: #aab6c3; font-size: 15px; line-height: 1.85; margin-bottom: 28px; }
.spf-page .sp-tech-card .sp-card-link { display: flex; align-items: center; justify-content: space-between; gap: 16px; border-top: 1px solid var(--sp-line); padding-top: 19px; font-size: 13px; color: var(--sp-gold); line-height: 1.6; }
.spf-page .sp-card-link:after { font-size: 21px; margin: 0; transition: transform .48s var(--sp-ease); }
.spf-page .sp-tech-card:is(:hover,:focus-visible) { transform: translateY(-5px); background: var(--sp-raised); border-color: color-mix(in srgb,var(--gold) 45.88%,transparent); }
.spf-page .sp-tech-card:is(:hover,:focus-visible) .card__image { transform: scale(1.045); filter: saturate(.95) brightness(1); }
.spf-page .sp-tech-card:is(:hover,:focus-visible) .sp-card-link { text-decoration: none; }
.spf-page .sp-tech-card:is(:hover,:focus-visible) .sp-card-link:after { transform: translate(3px,-3px); }
.spf-method--nt .spf-image img { aspect-ratio: 1.75; }

/* The connector carries a real sequence: observe, verify, record, escalate.
   Static symbols clarify the task; there are no decorative status readouts. */
.spf-page .spf-flow-section { background: radial-gradient(ellipse at 50% 20%,#293442 0%,#1c242f 56%,#151922 100%); }
.spf-flow-section .section-head > p { color: #afbcca; }
.spf-page .sp-flow { position: relative; gap: 22px; margin-top: 58px; }
.spf-page .sp-flow:before { content: ""; position: absolute; left: 8%; right: 8%; top: 53px; height: 1px; background: color-mix(in srgb,var(--gold) 39.61%,transparent); }
.spf-page .sp-flow > li { position: relative; display: flex; flex-direction: column; background: #232d3a; border: 1px solid #61708457; border-radius: 22px; padding: 28px; min-height: 390px; }
.spf-page .sp-flow > li:after { content: none; }
.spf-flow-symbol { display: flex; align-items: center; justify-content: center; width: 50px; height: 50px; background: #323d4b; border: 1px solid color-mix(in srgb,var(--gold) 32.16%,transparent); border-radius: 50%; color: var(--gold); margin-bottom: 28px; }
.spf-flow-icon { display: block; width: 25px; height: 25px; }
.spf-page .sp-flow .number { position: absolute; top: 39px; right: 26px; font-size: 10px; letter-spacing: .12em; color: #94a4b5; }
.spf-page .sp-flow h3 { font-size: 23px; line-height: 1.4; margin: 0 0 15px; }
.spf-page .sp-flow p { color: #afbdca; font-size: 14px; line-height: 1.9; }
.spf-page .sp-flow .sp-owner { margin-top: auto; padding-top: 24px; color: var(--gold); font-size: 11px; letter-spacing: .035em; }
.spf-page .sp-flow-note { color: #96a6b7; font-size: 12px; margin-top: 26px; max-width: 64em; }
.spf-page .sp-survey { gap: 0; }
.spf-page .sp-survey > div { border-top: 1px solid var(--sp-line); padding-block: 26px; }
.spf-page .sp-survey > div:first-child { padding-top: 0; border-top: 0; }
.spf-page .sp-survey dt { color: #e0e6e9; font-size: 22px; margin-bottom: 15px; }
.spf-page .sp-survey dd { color: #a8b6c3; font-size: 15px; line-height: 1.9; }
.spf-method--survey .spf-image img { aspect-ratio: 1.6; }
.spf-page .spf-faq-section { background: #1c232e; }
.spf-page .sp-faq { max-width: 980px; }
.spf-page .sp-faq summary { padding-block: 26px; font-size: 18px; }
.spf-page .sp-faq summary:after { top: 27px; color: var(--sp-gold); }

/* Closing is a deliberate final surface, not another generic content row. */
.spf-page .spf-closing { background: #202832; border-top: 1px solid var(--sp-line); }
.spf-closing .split { gap: 80px; }
.spf-closing .sp-intake > p { color: #b8c3ce; font-size: 16px; line-height: 1.9; }
.spf-closing .sp-expertise { border-top-color: var(--sp-line); }
.spf-closing .sp-expertise .small { font-size: 13px; color: #a7b4c1; }
.spf-closing__wide .sp-intake { display: grid; grid-template-columns: 1fr 1fr; max-width: none; column-gap: 90px; }
.spf-closing__wide .sp-intake > .eyebrow { grid-column: 1/-1; }
.spf-closing__wide .sp-intake h2 { grid-column: 1; grid-row: 2/5; margin: 0; }
.spf-closing__wide .sp-intake > p:not(.eyebrow), .spf-closing__wide .actions { grid-column: 2; margin-top: 0; }
.spf-closing__wide .actions { margin-block: 26px; }
.spf-closing__wide .sp-intake > .sp-note { font-size: 12px; }

@media (prefers-reduced-motion:no-preference) {
  .spf-hero__media img { animation: spf-scene-in 24s cubic-bezier(.22,.68,.28,1) both; }
  @keyframes spf-scene-in { from { transform:scale(1.02); } to { transform:scale(1.055); } }
}
@media (max-width:1100px) {
  .spf-hero--vp .spf-hero__copy { max-width: 480px; }
  .spf-service__body { padding: 28px; }
  .spf-method .split, .spf-closing .split { gap: 44px; }
  .spf-page .sp-flow { gap: 14px; }
  .spf-page .sp-flow > li { padding: 24px 20px; }
  .spf-page .sp-flow h3 { font-size: 21px; }
  .spf-page .sp-tech-card .card__body { padding: 26px 23px; }
  .spf-page .sp-tech-card h3 { font-size: 23px; }
  .spf-routine .spf-routine-card { padding: 27px; }
}
@media (max-width:900px) {
  .spf-page .section-head { gap: 30px; }
  .spf-page .spf-hero { min-height: 760px; }
  .spf-hero__copy { max-width: 570px; }
  .spf-hero--vp .spf-hero__copy { margin-left: 0; }
  .spf-hero--vp:after { background: linear-gradient(90deg,rgba(12,17,24,.8),rgba(12,17,24,.25) 72%,transparent),linear-gradient(0deg,#151922,transparent 50%); }
  .spf-page .spf-hero--nt { min-height: 590px; }
  .spf-services { gap: 24px; }
  .spf-services--bi > .spf-service:first-child .spf-service__body { padding: 32px; }
  .spf-services--bi > .spf-service:first-child { grid-template-columns: .85fr 1fr; }
  .spf-method .split, .spf-closing .split { grid-template-columns: 1fr; gap: 44px; }
  .spf-method .spf-image { max-width: 650px; }
  .spf-method--vp .spf-image img { aspect-ratio: 1.8; }
  .spf-page .spf-routine .sp-scenarios { grid-template-columns: 1fr; gap: 16px; }
  .spf-routine .spf-routine-card { display:grid;grid-template-columns:42px 1fr 1.2fr;gap:22px;align-items:start; }
  .spf-routine-card .number:after { content: none; }
  .spf-routine-card h3 { margin: 0; font-size: 23px; }
  .spf-page .sp-flow { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 20px; }
  .spf-page .sp-flow:before { content:none; }
  .spf-page .sp-flow > li { min-height: 340px; padding: 28px; }
  .spf-tech-grid { grid-template-columns: 1fr; }
  .spf-page .sp-tech-card { display:grid;grid-template-columns: .9fr 1fr; }
  .spf-page .sp-tech-card .card__image { height:100%;aspect-ratio:auto;min-height:300px; }
  .spf-page .sp-tech-card .card__body { padding:32px; }
}
@media (max-width:600px) {
  .spf-page .wrap { width: calc(100% - 44px); }
  .spf-page .spf-section { padding-block:64px; }
  .spf-page .section-head { display:block;margin-bottom:32px; }
  .spf-page .section-head > p { margin-top:23px;font-size:15px; }
  .spf-page .section-head h2,.spf-page .sp-intake h2 { font-size:32px;line-height:1.4; }
  .spf-page .spf-hero { min-height:780px;align-items:flex-end; }
  .spf-hero__inner { padding-block:145px 88px; }
  .spf-hero__copy { max-width:none; }
  .spf-hero__copy .eyebrow { font-size:10px;letter-spacing:.1em;margin-bottom:24px; }
  .spf-hero__copy h1 { font-size:40px;line-height:1.32;margin-bottom:24px; }
  html[lang=en] .spf-hero__copy h1 { font-size:42px;line-height:1.12; }
  .spf-hero__copy .lede { font-size:15px;line-height:1.85;max-width:none; }
  .spf-hero__copy .actions { gap:20px;margin-top:27px;align-items:flex-start;flex-direction:column; }
  .spf-hero__copy .button { font-size:13px;max-width:100%; }
  .spf-hero__copy .text-link { font-size:13px; }
  .spf-hero:after,.spf-hero--vp:after,.spf-hero--bi:after { background:linear-gradient(0deg,#151922 0%,rgba(12,17,24,.9) 24%,rgba(12,17,24,.58) 53%,rgba(12,17,24,.1) 90%); }
  .spf-hero-caption { bottom:22px;right:22px;left:22px;font-size:9px;text-align:left; }
  .spf-hero--vp .spf-hero__media img { object-position:36% center; }
  .spf-hero--drone .spf-hero__media img { object-position:65% center; }
  .spf-page .spf-hero--nt { min-height:620px; }
  .spf-hero--nt .spf-hero__inner { padding-block:145px 84px; }
  .spf-services { grid-template-columns:1fr;gap:24px; }
  .spf-service { border-radius:20px; }
  .spf-service__image img { aspect-ratio:1.5; }
  .spf-service__image figcaption { right:18px;bottom:12px;font-size:9px; }
  .spf-service__body { padding:26px 25px 30px; }
  .spf-service__body h3 { font-size:24px; }
  .spf-service__body p { font-size:14px;line-height:1.9; }
  .spf-service .sp-service-detail { margin-top:22px; }
  .spf-service .sp-service-detail p:not(.eyebrow) { font-size:13px; }
  .spf-services--bi > .spf-service:first-child { grid-column:auto;display:block; }
  .spf-services--bi > .spf-service:first-child .spf-service__image img { height:auto;min-height:0;aspect-ratio:1.5; }
  .spf-services--bi > .spf-service:first-child .spf-service__body { padding:26px 25px 30px; }
  .spf-services--bi > .spf-service:first-child h3 { font-size:26px; }
  .spf-page .spf-image { margin-top:30px; }
  .spf-page .spf-image img,.spf-closing .media img,.spf-method--vp .spf-image img { border-radius:18px;aspect-ratio:1.35; }
  .spf-page .sp-steps > li { grid-template-columns:24px 1fr;gap:15px;padding-block:25px; }
  .spf-page .sp-steps h3 { font-size:21px; }
  .spf-page .sp-steps p { font-size:14px; }
  .spf-routine .spf-routine-card { display:block;padding:26px;border-radius:20px; }
  .spf-routine-card h3 { margin:22px 0 16px; }
  .spf-routine-card p { font-size:14px; }
  .spf-page .spf-tech-areas { padding-top:34px; }
  .spf-page .sp-tech-card { display:flex;border-radius:20px; }
  .spf-page .sp-tech-card .card__image { min-height:0;height:auto;aspect-ratio:1.4; }
  .spf-page .sp-tech-card .card__body { padding:26px; }
  .spf-page .sp-tech-card h3 { font-size:25px; }
  .spf-page .sp-flow { grid-template-columns:1fr;gap:18px;margin-top:38px; }
  .spf-page .sp-flow:before { content:"";display:block;left:26px;right:auto;top:35px;bottom:35px;height:auto;width:1px;background:color-mix(in srgb,var(--gold) 39.61%,transparent); }
  .spf-page .sp-flow > li { margin-left:12px;min-height:0;padding:27px 25px 27px 60px;border-radius:18px; }
  .spf-flow-symbol { position:absolute;top:24px;left:-12px;width:48px;height:48px;box-shadow:0 0 0 6px #1c2531; }
  .spf-page .sp-flow .number { position:static;margin:0 0 17px; }
  .spf-page .sp-flow h3 { font-size:23px; }
  .spf-page .sp-flow .sp-owner { padding-top:19px; }
  .spf-page .sp-flow-note { font-size:11px; }
  .spf-page .sp-survey dt { font-size:21px; }
  .spf-page .sp-survey dd { font-size:14px; }
  .spf-page .sp-faq summary { font-size:16px;padding-right:32px; }
  .spf-page .sp-faq details > p { font-size:14px;padding-right:12px; }
  .spf-closing__wide .sp-intake { display:block; }
  .spf-closing__wide .sp-intake h2 { margin-bottom:25px; }
  .spf-closing__wide .sp-intake > .eyebrow { margin-bottom:21px; }
  .spf-closing__wide .actions { margin-block:28px; }
  .spf-closing .sp-intake > p { font-size:15px; }
}
@media (prefers-reduced-motion:reduce) {
  .spf-page *, .spf-page *:before, .spf-page *:after { animation:none!important;transition:none!important; }
  .spf-page .sp-tech-card:is(:hover,:focus-visible), .spf-page .sp-tech-card:is(:hover,:focus-visible) .card__image { transform:none; }
}

/* Visual explanations: short labels carry the first reading; native details
   keep the full scope available. Lines show relationships, not live status. */
.spf-page .ucs-icon { display:block; width:24px; height:24px; flex:none; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.spf-page .spf-visual { margin:0; padding:30px; border:1px solid var(--sp-line); border-radius:24px; background:linear-gradient(145deg,#252e3b,#1c2430); }
.spf-page .spf-visual__title { display:block; margin:0 0 28px; color:var(--sp-ink); font-size:20px; font-weight:500; line-height:1.45; text-wrap:balance; }
.spf-page .spf-visual__note { color:var(--sp-muted); font-size:12px; line-height:1.7; margin:24px 0 0; }
.spf-page .spf-node { display:flex; flex-direction:column; align-items:center; gap:11px; min-width:0; text-align:center; text-decoration:none; }
.spf-page .spf-node__icon { display:grid; place-items:center; width:62px; height:62px; color:var(--sp-gold); border:1px solid color-mix(in srgb,var(--gold) 27.06%,transparent); border-radius:18px; background:color-mix(in srgb,var(--gold) 3.53%,transparent); }
.spf-page .spf-node__icon .ucs-icon { width:33px; height:33px; }
.spf-page .spf-node strong { color:var(--sp-ink); font-size:16px; font-weight:500; line-height:1.5; }
.spf-page .spf-node small { color:#a8b6c4; font-size:12px; line-height:1.6; }
.spf-page .spf-service__mark { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; color:var(--sp-gold); }
.spf-page .spf-service__mark > .ucs-icon { width:36px; height:36px; }
.spf-page .spf-service__mark .number { margin:0; font-size:10px; letter-spacing:.14em; }
.spf-page .spf-labels { list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.spf-page :is(.spf-labels,.spf-branch-grid,.spf-source-grid,.spf-output-grid,.spf-data-output,.spf-role-strip,.spf-process) > li { margin:0; }
.spf-page .spf-labels > li { display:flex; flex-direction:column; align-items:flex-start; gap:11px; min-width:0; color:#c0cad4; font-size:13px; line-height:1.55; }
.spf-page .spf-labels .ucs-icon { color:var(--gold); width:26px; height:26px; }
.spf-page .spf-boundary { font-size:13px; color:#b4bec8; margin:0 0 20px; }
.spf-page .spf-expander { border-top:1px solid var(--sp-line); margin-top:24px; }
.spf-page .spf-expander > summary { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:17px 0; color:var(--sp-gold); font-size:13px; line-height:1.65; cursor:pointer; list-style:none; }
.spf-page .spf-expander > summary::-webkit-details-marker { display:none; }
.spf-page .spf-expander > summary:after { content:"+"; position:static; flex:none; color:var(--sp-gold); font:20px/1 sans-serif; }
.spf-page .spf-expander[open] > summary:after { content:"−"; }
.spf-page .spf-expander > summary:focus-visible { outline:2px solid var(--sp-gold); outline-offset:6px; border-radius:3px; }
.spf-page .spf-expander__body { padding:2px 0 22px; }
.spf-page .spf-expander__body p { color:#b1bdc9; font-size:14px; line-height:1.85; }
.spf-page .spf-expander__body h3 { font-size:18px; line-height:1.5; margin:0 0 12px; }
.spf-page .spf-expander__body .sp-steps { margin:0; }
.spf-page .spf-expander__body .sp-steps > li { padding:20px 0; }
.spf-page .spf-expander__body .sp-steps > li:first-child { padding-top:0; }
.spf-page .spf-expander__body .sp-steps h3 { font-size:18px; }
.spf-page .spf-disclosure-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 36px; }
.spf-page .spf-disclosure-grid p { margin:0; }
.spf-page .spf-scope-visual .spf-expander { margin-top:22px; }
.spf-page .spf-scope-visual .spf-expander__body { padding-bottom:4px; }
.spf-page .spf-scope-visual + .sp-service-detail { margin-top:14px; }

/* IT is a choice of disciplines, so these branches deliberately have no
   sequential arrows. Each label links to the detailed service below. */
.spf-page .spf-branches { margin-bottom:40px; padding:32px 38px 36px; }
.spf-branches .spf-visual__title { text-align:center; }
.spf-page .spf-branch-root { position:relative; display:flex; justify-content:center; padding-bottom:33px; }
.spf-page .spf-branch-root:after { content:""; position:absolute; bottom:0; height:28px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-branch-root .spf-node { display:grid; grid-template-columns:48px 1fr; gap:4px 17px; text-align:left; max-width:540px; }
.spf-page .spf-branch-root .spf-node__icon { grid-row:1/3; width:48px; height:48px; border:0; background:none; }
.spf-page .spf-branch-root .spf-node strong { font-size:20px; }
.spf-page .spf-branch-grid { position:relative; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px; list-style:none; margin:0; padding:0; }
.spf-page .spf-branch-grid:before { content:""; position:absolute; left:12.5%; right:12.5%; top:0; height:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-branch-grid > li { position:relative; padding-top:26px; }
.spf-page .spf-branch-grid > li:before { content:""; position:absolute; width:1px; height:26px; top:0; left:50%; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-branch-grid .spf-node { padding:20px 12px; height:100%; border-radius:18px; border:1px solid #a9b7c523; background:#1b2430; transition:background .2s,border-color .2s; }
.spf-page .spf-branch-grid a:is(:hover,:focus-visible) { background:#2a3544; border-color:color-mix(in srgb,var(--gold) 50.20%,transparent); }
.spf-page .spf-branch-grid a:focus-visible { outline:2px solid var(--sp-gold); outline-offset:4px; }

/* A route through daily life: home, movement, destination. */
.spf-page .spf-route { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:30px; }
.spf-page .spf-route-stop { position:relative; min-width:0; padding:30px; border:1px solid var(--sp-line); border-radius:22px; background:#222c39; }
.spf-page .spf-route-stop:not(:last-child):after { content:""; position:absolute; top:71px; right:-31px; width:30px; height:1px; background:var(--sp-gold); }
.spf-page .spf-route-stop:not(:last-child):before { content:""; position:absolute; top:68px; right:-31px; width:7px; height:7px; border-right:1px solid var(--sp-gold); border-top:1px solid var(--sp-gold); transform:rotate(45deg); }
.spf-page .spf-route-stop__top { display:flex; align-items:center; justify-content:space-between; gap:20px; }
.spf-page .spf-route-stop__icon { display:grid; place-items:center; width:82px; height:82px; border:1px solid color-mix(in srgb,var(--gold) 33.33%,transparent); background:color-mix(in srgb,var(--gold) 3.92%,transparent); border-radius:24px; color:var(--sp-gold); }
.spf-page .spf-route-stop__icon .ucs-icon { width:45px; height:45px; }
.spf-page .spf-route-stop__top .number { align-self:flex-start; padding-top:8px; font-size:11px; }
.spf-page .spf-route-stop h3 { font-size:24px; line-height:1.5; margin:24px 0 26px; }
.spf-page .spf-route-stop .spf-labels { grid-template-columns:repeat(2,minmax(0,1fr)); }
.spf-page .spf-route-stop .spf-expander { margin-top:24px; }
.spf-page .spf-route-team { display:flex; align-items:center; justify-content:space-between; gap:30px; margin-top:32px; padding:24px 0 0; border-top:1px solid var(--sp-line); }
.spf-page .spf-route-team > p { color:#a9b6c4; font-size:14px; margin:0; }
.spf-page .spf-role-strip { display:flex; gap:28px; list-style:none; padding:0; margin:0; }
.spf-page .spf-role-strip > li { display:flex; align-items:center; gap:10px; font-size:13px; line-height:1.4; color:#d2d9df; }
.spf-page .spf-role-strip .ucs-icon { color:var(--sp-gold); width:23px; height:23px; }

/* Sources converge on a human task, then separate into useful outputs. */
.spf-page .spf-source-grid { list-style:none; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:0; padding:0 0 25px; position:relative; }
.spf-page .spf-source-grid:after { content:""; position:absolute; left:16.66%; right:16.66%; bottom:0; height:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-source-grid > li { position:relative; min-width:0; }
.spf-page .spf-source-grid > li:after { content:""; position:absolute; left:50%; bottom:-25px; height:18px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-source-grid .spf-node { gap:12px; }
.spf-page .spf-source-grid .spf-node strong { font-size:13px; line-height:1.55; }
.spf-page .spf-source-grid .spf-node__icon { width:56px; height:56px; border-radius:16px; }
.spf-page .spf-merge { display:flex; justify-content:center; position:relative; margin-top:26px; }
.spf-page .spf-merge:before { content:""; position:absolute; height:26px; top:-26px; width:1px; left:50%; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-merge > .spf-node { width:100%; padding:22px 18px; background:color-mix(in srgb,var(--gold) 4.31%,transparent); border:1px solid color-mix(in srgb,var(--gold) 31.37%,transparent); border-radius:18px; }
.spf-page .spf-merge .spf-node__icon { border:0; height:38px; width:44px; background:none; }
.spf-page .spf-merge .spf-node strong { font-size:19px; }
.spf-page .spf-output-grid { list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; padding:0; margin:32px 0 0; position:relative; }
.spf-page .spf-output-grid:before { content:""; position:absolute; left:50%; top:-32px; height:16px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-output-grid:after { content:""; position:absolute; left:25%; right:25%; top:-16px; height:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-output-grid > li { position:relative; border:1px solid var(--sp-line); padding:18px 12px; border-radius:16px; }
.spf-page .spf-output-grid > li:before { content:""; position:absolute; top:-16px; left:50%; height:16px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-output-grid .spf-node__icon { width:35px; height:35px; border:0; background:none; }
.spf-page .spf-output-grid .spf-node strong { font-size:14px; }
.spf-page .spf-decision { padding-top:23px; margin-top:24px; border-top:1px solid color-mix(in srgb,var(--gold) 33.33%,transparent); }
.spf-page .spf-decision .spf-node { flex-direction:row; justify-content:center; gap:16px; }
.spf-page .spf-decision .spf-node__icon { width:35px; height:35px; background:none; border:0; }
.spf-page .spf-decision .spf-node strong { font-size:15px; text-align:left; }

/* Technology cards expose the criteria, with explanatory prose outside the
   linked cards so disclosure controls never nest inside a link. */
.spf-page .spf-tech-cues { grid-template-columns:1fr; gap:12px; margin:20px 0 26px; }
.spf-page .spf-tech-cues > li { flex-direction:row; align-items:center; gap:12px; font-size:14px; }
.spf-page .spf-tech-cues .ucs-icon { width:23px; height:23px; }
.spf-page .spf-intake-cues { margin-top:30px; gap:20px; }
.spf-page .spf-intake-cues .ucs-icon { width:32px; height:32px; }
.spf-page .spf-process { position:relative; display:grid; gap:25px; margin:0; padding:0; list-style:none; }
.spf-page .spf-process:before { content:""; position:absolute; top:32px; bottom:45px; left:28px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-process > li { position:relative; display:grid; grid-template-columns:58px minmax(0,1fr) 18px; gap:20px; align-items:start; }
.spf-page .spf-process__icon { position:relative; z-index:1; display:grid; place-items:center; width:58px; height:58px; background:#273341; border:1px solid color-mix(in srgb,var(--gold) 33.33%,transparent); border-radius:18px; color:var(--sp-gold); box-shadow:0 0 0 7px #222c39; }
.spf-page .spf-process__icon .ucs-icon { width:31px; height:31px; }
.spf-page .spf-process h3 { margin:3px 0 10px; font-size:21px; line-height:1.5; }
.spf-page .spf-process p { margin:0; font-size:13px; line-height:1.8; color:#aab9c8; }
.spf-page .spf-process .number { padding-top:10px; font-size:10px; }

/* The compact handling sequence is distinct from its underlying information
   sources, shown in the site-appraisal diagram. */
.spf-page .sp-flow > li { min-height:300px; }
.spf-page .spf-flow-symbol { width:64px; height:64px; border-radius:19px; margin-bottom:23px; }
.spf-page .spf-flow-symbol .ucs-icon { width:34px; height:34px; }
.spf-page .sp-flow:before { top:60px; }
.spf-page .sp-flow .spf-flow-key { color:#c5d0da; font-size:14px; line-height:1.85; }
.spf-page .sp-flow .sp-owner { font-size:12px; padding-top:27px; }
.spf-page .spf-data-output { list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:25px; margin:30px 0 0; padding:0; position:relative; }
.spf-page .spf-data-output:before { content:""; position:absolute; left:25%; width:25%; height:15px; top:-15px; border-top:1px solid color-mix(in srgb,var(--gold) 43.92%,transparent); border-left:1px solid color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-data-output:after { content:""; position:absolute; left:50%; height:15px; top:-30px; width:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-data-output > li { border:1px solid var(--sp-line); border-radius:17px; padding:20px 12px; }
.spf-page .spf-data-output > li:first-child { position:relative; }
.spf-page .spf-data-output > li:first-child:after { content:""; position:absolute; top:52px; right:-25px; width:24px; height:1px; background:color-mix(in srgb,var(--gold) 43.92%,transparent); }
.spf-page .spf-data-output > li:first-child:before { content:""; position:absolute; top:49px; right:-25px; width:7px; height:7px; border-top:1px solid var(--sp-gold); border-right:1px solid var(--sp-gold); transform:rotate(45deg); }
.spf-page .spf-data-output .spf-node__icon { width:50px; height:50px; border:0; background:none; }
.spf-page .spf-data-output .spf-node strong { font-size:15px; }
.spf-page .spf-expander__body .sp-survey dt { font-size:17px; }
.spf-page .spf-expander__body .sp-survey dd { font-size:14px; }

@media(max-width:1100px) {
  .spf-page .spf-route { gap:22px; }
  .spf-page .spf-route-stop { padding:25px; }
  .spf-page .spf-route-stop:not(:last-child):after { right:-23px;width:22px;top:66px; }
  .spf-page .spf-route-stop:not(:last-child):before { right:-23px;top:63px; }
  .spf-page .spf-route-stop h3 { font-size:22px; }
  .spf-page .spf-visual { padding:24px; }
  .spf-page .spf-process > li { gap:15px; }
}
@media(max-width:900px) {
  .spf-page .spf-route { grid-template-columns:1fr;gap:28px; }
  .spf-page .spf-route-stop { padding:28px;display:grid;grid-template-columns:110px 1fr;gap:0 28px; }
  .spf-page .spf-route-stop__top { grid-column:1;grid-row:1/3;align-items:flex-start; }
  .spf-page .spf-route-stop__top .number { display:none; }
  .spf-page .spf-route-stop h3 { grid-column:2;margin:0 0 22px; }
  .spf-page .spf-route-stop__content { grid-column:2; }
  .spf-page .spf-route-stop:not(:last-child):after { left:69px;right:auto;top:auto;bottom:-29px;width:1px;height:28px; }
  .spf-page .spf-route-stop:not(:last-child):before { left:66px;right:auto;top:auto;bottom:-28px;transform:rotate(135deg); }
  .spf-page .spf-route-team { align-items:flex-start;flex-direction:column;gap:22px; }
  .spf-page .spf-role-strip { width:100%;justify-content:space-between; }
  .spf-page .spf-branch-grid { gap:12px; }
  .spf-page .spf-branch-grid .spf-node { padding:18px 10px; }
  .spf-page .spf-node strong { font-size:14px; }
  .spf-page .spf-visual-column { width:100%;max-width:700px; }
}
@media(max-width:600px) {
  .spf-page .spf-visual { padding:24px 20px;border-radius:20px; }
  .spf-page .spf-visual__title { font-size:19px;margin-bottom:26px; }
  .spf-page .spf-labels { gap:12px; }
  .spf-page .spf-labels > li { font-size:12px;gap:10px; }
  .spf-page .spf-labels .ucs-icon { width:25px;height:25px; }
  .spf-page .spf-service__mark > .ucs-icon { width:34px;height:34px; }
  .spf-page .spf-expander > summary { font-size:12px; }
  .spf-page .spf-expander__body p { font-size:13px; }
  .spf-page .spf-disclosure-grid { grid-template-columns:1fr;gap:26px; }
  .spf-page .spf-branches { padding:24px 18px;margin-bottom:28px; }
  .spf-page .spf-branch-root .spf-node { grid-template-columns:36px 1fr;gap:5px 12px; }
  .spf-page .spf-branch-root .spf-node__icon { width:36px;height:36px; }
  .spf-page .spf-branch-root .spf-node strong { font-size:16px; }
  .spf-page .spf-branch-root .spf-node small { font-size:11px; }
  .spf-page .spf-branch-grid { grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:12px;border:1px solid color-mix(in srgb,var(--gold) 43.92%,transparent);border-radius:20px; }
  .spf-page .spf-branch-grid:before { display:none; }
  .spf-page .spf-branch-grid > li { padding-top:0; }
  .spf-page .spf-branch-grid > li:before { display:none; }
  .spf-page .spf-branch-grid .spf-node { padding:18px 10px;gap:10px; }
  .spf-page .spf-branch-grid .spf-node__icon { width:52px;height:52px;border-radius:16px; }
  .spf-page .spf-branch-grid .spf-node strong { font-size:14px; }
  .spf-page .spf-branch-grid .spf-node small { font-size:10px; }
  .spf-page .spf-route-stop { display:block;padding:25px; }
  .spf-page .spf-route-stop__top { justify-content:space-between; }
  .spf-page .spf-route-stop__top .number { display:block; }
  .spf-page .spf-route-stop h3 { font-size:23px;margin:24px 0; }
  .spf-page .spf-route-stop__icon { width:72px;height:72px;border-radius:21px; }
  .spf-page .spf-route-stop__icon .ucs-icon { width:41px;height:41px; }
  .spf-page .spf-route-stop:not(:last-child):after { left:61px; }
  .spf-page .spf-route-stop:not(:last-child):before { left:58px; }
  .spf-page .spf-role-strip { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px; }
  .spf-page .spf-role-strip > li { flex-direction:column;align-items:flex-start;font-size:12px;gap:12px; }
  .spf-page .spf-source-grid { gap:10px; }
  .spf-page .spf-source-grid .spf-node__icon { width:48px;height:48px;border-radius:14px; }
  .spf-page .spf-source-grid .spf-node__icon .ucs-icon { width:29px;height:29px; }
  .spf-page .spf-source-grid .spf-node strong { font-size:11px; }
  .spf-page .spf-merge .spf-node strong { font-size:17px; }
  .spf-page .spf-merge .spf-node small { font-size:11px; }
  .spf-page .spf-output-grid { gap:12px; }
  .spf-page .spf-output-grid > li { padding:17px 9px; }
  .spf-page .spf-output-grid .spf-node strong { font-size:12px; }
  .spf-page .spf-decision .spf-node strong { font-size:13px; }
  .spf-page .spf-process { gap:27px; }
  .spf-page .spf-process > li { grid-template-columns:46px minmax(0,1fr);gap:16px; }
  .spf-page .spf-process__icon { width:46px;height:46px;border-radius:15px; }
  .spf-page .spf-process__icon .ucs-icon { width:27px;height:27px; }
  .spf-page .spf-process:before { left:22px; }
  .spf-page .spf-process h3 { font-size:19px;margin-top:0; }
  .spf-page .spf-process p { font-size:12px;line-height:1.8; }
  .spf-page .spf-process .number { display:none; }
  .spf-page .spf-tech-cues { gap:13px;margin-block:23px; }
  .spf-page .spf-tech-cues > li { font-size:13px; }
  .spf-page .spf-intake-cues { margin-top:25px; }
  .spf-page .sp-flow > li { min-height:0;padding-left:63px; }
  .spf-page .spf-flow-symbol { width:51px;height:51px;border-radius:16px; }
  .spf-page .spf-flow-symbol .ucs-icon { width:29px;height:29px; }
  .spf-page .sp-flow:before { top:35px; }
  .spf-page .sp-flow .sp-owner { padding-top:20px;font-size:11px; }
  .spf-page .spf-data-output { gap:20px; }
  .spf-page .spf-data-output > li { padding:17px 9px; }
  .spf-page .spf-data-output > li:first-child:after { right:-20px;width:19px;top:44px; }
  .spf-page .spf-data-output > li:first-child:before { right:-20px;top:41px; }
  .spf-page .spf-data-output .spf-node__icon { width:42px;height:42px; }
  .spf-page .spf-data-output .spf-node strong { font-size:12px; }
.spf-page .spf-data-output .spf-node small { font-size:10px; }
}

/* The planning photograph, deliverables and handover form one bounded piece.
   These names are intentionally separate from the shared section-head layout. */
.spf-page--vp .spf-routine { padding-block:80px 0; }
.spf-page--vp .spf-planning-section { padding-block:80px; background:#1b212b; }
.spf-page--vp .spf-plan { overflow:hidden; background:#222c39; border:1px solid #c5cfdb2b; border-radius:18px; }
.spf-page--vp .spf-plan__main { display:grid; grid-template-columns:.94fr 1.06fr; }
.spf-page--vp .spf-plan__image { display:flex; flex-direction:column; margin:0; min-width:0; background:#17202a; }
.spf-page--vp .spf-plan__image img { display:block; width:100%; flex:1; min-height:0; object-fit:cover; object-position:50% 50%; }
.spf-page--vp .spf-plan__image figcaption { padding:16px 24px; color:#b2bdc8; font-size:13px; line-height:1.5; }
.spf-page--vp .spf-plan__content { min-width:0; padding:36px 40px 28px; }
.spf-page--vp .spf-plan__content .eyebrow { margin:0 0 16px; }
.spf-page--vp .spf-plan__content h2 { margin:0; font-size:36px; line-height:1.35; letter-spacing:-.02em; max-width:17em; }
.spf-page--vp .spf-plan__intro { margin:16px 0 24px; font-size:15px; line-height:1.7; color:#b8c3ce; }
.spf-page--vp .spf-plan__deliverables { display:grid; gap:0; margin:0; padding:0; list-style:none; }
.spf-page--vp .spf-plan__deliverables > li { display:grid; grid-template-columns:30px minmax(0,1fr); align-items:start; gap:16px; margin:0; padding:19px 0; border-top:1px solid #c5cfdb24; }
.spf-page--vp .spf-plan__deliverables > li:last-child { padding-bottom:0; }
.spf-page--vp .spf-plan__deliverables .ucs-icon { width:28px; height:28px; margin-top:2px; }
.spf-page--vp .spf-plan__deliverables h3 { font-size:22px; font-weight:500; line-height:1.4; margin:0 0 7px; }
.spf-page--vp .spf-plan__deliverables p { font-size:15px; line-height:1.75; color:#b8c3ce; margin:0; }
.spf-page--vp .spf-plan__handover { display:grid; grid-template-columns:1fr 1fr; align-items:center; gap:40px; padding:26px 36px; border-top:1px solid #c5cfdb2b; }
.spf-page--vp .spf-plan__handover h3 { font-size:20px; line-height:1.45; margin:0 0 7px; }
.spf-page--vp .spf-plan__handover p { font-size:15px; line-height:1.7; color:#b8c3ce; margin:0; }
.spf-page--vp .spf-plan__handover .spf-role-strip { width:auto; display:flex; justify-content:space-between; gap:20px; }
.spf-page--vp .spf-plan__handover .spf-role-strip > li { flex-direction:row; align-items:center; gap:10px; font-size:15px; line-height:1.6; }
.spf-page--vp .spf-plan__handover .ucs-icon { width:28px; height:28px; }
.spf-page--vp .spf-plan__details { border-top:1px solid #c5cfdb2b; margin:0; background:#1d2632; }
.spf-page--vp .spf-plan__details > summary { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:21px 36px; color:var(--gold); font-size:15px; line-height:1.6; list-style:none; cursor:pointer; }
.spf-page--vp .spf-plan__details > summary::-webkit-details-marker { display:none; }
.spf-page--vp .spf-plan__details > summary:after { content:"+"; position:static; flex:none; font:22px/1 sans-serif; }
.spf-page--vp .spf-plan__details[open] > summary:after { content:"−"; }
.spf-page--vp .spf-plan__details > summary:focus-visible { outline:2px solid var(--sp-gold); outline-offset:-5px; }
.spf-page--vp .spf-plan__detail-body { padding:0 36px 32px; }
.spf-page--vp .spf-plan__detail-body p, .spf-page--vp .spf-plan__detail-body li { font-size:15px; line-height:1.85; color:#b8c3ce; }
.spf-page--vp .spf-plan__detail-body h3 { margin:0 0 12px; font-size:20px; line-height:1.5; }
.spf-page--vp .spf-plan__detail-body > p { max-width:68em; margin:0 0 28px; }
.spf-page--vp .spf-plan__detail-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.spf-page--vp .spf-plan__detail-grid p { margin:0; }
.spf-page--vp .spf-plan__credentials { display:grid; grid-template-columns:1fr 1fr; gap:40px; padding-top:28px; margin-top:28px; border-top:1px solid #c5cfdb24; }
.spf-page--vp .spf-plan__credentials ul { margin:14px 0 0; padding-left:20px; }
.spf-page--vp .spf-closing { padding-block:72px; }

/* Tighten the specialist diagrams. Icons have no second decorative frame;
   connectors stop at nearby related items, and labels remain readable. */
.spf-page :is(.spf-node__icon,.spf-process__icon,.spf-route-stop__icon,.spf-flow-symbol) { background:none; border:0; border-radius:0; box-shadow:none; }
.spf-page .spf-node__icon { width:40px; height:40px; }
.spf-page .spf-node__icon .ucs-icon { width:32px; height:32px; }
.spf-page .spf-node small, .spf-page .spf-visual__note,
.spf-page .spf-labels > li, .spf-page .spf-expander > summary,
.spf-page .spf-expander__body p, .spf-page .spf-process p,
.spf-page .sp-flow .spf-flow-key, .spf-page .sp-flow .sp-owner { font-size:15px; }
.spf-page .spf-source-grid .spf-node strong,
.spf-page .spf-output-grid .spf-node strong,
.spf-page .spf-data-output .spf-node strong { font-size:15px; }
.spf-page .spf-visual .spf-node small { font-size:15px; }
.spf-page .spf-branch-root { padding-bottom:18px; }
.spf-page .spf-branch-root:after { height:18px; }
.spf-page .spf-branch-grid > li { padding-top:14px; }
.spf-page .spf-branch-grid > li:before { height:14px; }
.spf-page .spf-branch-grid .spf-node { gap:9px; padding:18px 14px; }
.spf-page .spf-source-grid { padding-bottom:14px; }
.spf-page .spf-source-grid > li:after { bottom:-14px; height:12px; }
.spf-page .spf-source-grid .spf-node { gap:9px; }
.spf-page .spf-source-grid .spf-node__icon { width:36px; height:36px; border:0; border-radius:0; }
.spf-page .spf-merge { margin-top:14px; }
.spf-page .spf-merge:before { height:14px; top:-14px; }
.spf-page .spf-merge > .spf-node { padding:18px; gap:8px; }
.spf-page .spf-output-grid { margin-top:22px; }
.spf-page .spf-output-grid:before { top:-22px; height:11px; }
.spf-page .spf-output-grid:after { top:-11px; }
.spf-page .spf-output-grid > li:before { top:-11px; height:11px; }
.spf-page .spf-data-output { margin-top:22px; gap:20px; }
.spf-page .spf-data-output:before { top:-11px; height:11px; }
.spf-page .spf-data-output:after { top:-22px; height:11px; }
.spf-page .spf-data-output > li:first-child:after { right:-20px; width:19px; }
.spf-page .spf-data-output > li:first-child:before { right:-20px; }
.spf-page .spf-process { gap:0; }
.spf-page .spf-process:before { content:none; }
.spf-page .spf-process > li { grid-template-columns:38px minmax(0,1fr); gap:17px; padding-block:18px; }
.spf-page .spf-process > li + li { border-top:1px solid #c5cfdb24; }
.spf-page .spf-process > li:first-child { padding-top:0; }
.spf-page .spf-process > li:last-child { padding-bottom:0; }
.spf-page .spf-process__icon { width:36px; height:36px; }
.spf-page .spf-process h3 { font-size:22px; margin:0 0 6px; }
.spf-page .spf-process .number { display:none; }
.spf-page .sp-flow { margin-top:32px; }
.spf-page .sp-flow:before { content:none; }
.spf-page .sp-flow > li { min-height:0; padding:25px; }
.spf-page .spf-flow-symbol { justify-content:flex-start; width:36px; height:36px; margin-bottom:18px; }
.spf-page .sp-flow .sp-owner { margin-top:18px; padding-top:16px; border-top:1px solid #c5cfdb24; }
.spf-page--vp .spf-route { gap:20px; }
.spf-page--vp .spf-route-stop { padding:26px; }
.spf-page--vp .spf-route-stop__icon { width:40px; height:40px; }
.spf-page--vp .spf-route-stop__icon .ucs-icon { width:36px; height:36px; }
.spf-page--vp .spf-route-stop__top .number { display:none; }
.spf-page--vp .spf-route-stop h3 { margin:18px 0; font-size:23px; }
.spf-page--vp .spf-route-stop:not(:last-child):after { width:19px; right:-20px; top:45px; }
.spf-page--vp .spf-route-stop:not(:last-child):before { right:-20px; top:42px; }

@media(max-width:1050px) {
  .spf-page--vp .spf-plan__content { padding:30px; }
  .spf-page--vp .spf-plan__content h2 { font-size:32px; }
  .spf-page--vp .spf-plan__deliverables h3 { font-size:20px; }
  .spf-page--vp .spf-plan__handover { gap:28px; padding:24px 30px; }
  .spf-page--vp .spf-plan__handover .spf-role-strip { flex-wrap:wrap; gap:14px 24px; }
}
@media(max-width:900px) {
  .spf-page--vp .spf-plan__main { grid-template-columns:1fr; }
  .spf-page--vp .spf-plan__image img { flex:auto; height:360px; object-position:center 55%; }
  .spf-page--vp .spf-plan__image figcaption { padding:13px 30px; }
  .spf-page--vp .spf-plan__content h2 { font-size:34px; }
  .spf-page--vp .spf-plan__handover { grid-template-columns:1fr; gap:22px; }
  .spf-page--vp .spf-plan__detail-grid, .spf-page--vp .spf-plan__credentials { grid-template-columns:1fr; gap:26px; }
  .spf-page--vp .spf-route-stop { grid-template-columns:50px 1fr; gap:0 22px; }
  .spf-page--vp .spf-route-stop h3 { margin-top:0; }
  .spf-page--vp .spf-route-stop:not(:last-child):after { left:45px; right:auto; top:auto; bottom:-21px; width:1px; height:20px; }
  .spf-page--vp .spf-route-stop:not(:last-child):before { left:42px; right:auto; top:auto; bottom:-20px; }
}
@media(max-width:600px) {
  .spf-page--vp .spf-routine { padding-block:64px 0; }
  .spf-page--vp .spf-planning-section { padding-block:64px; }
  .spf-page--vp .spf-plan { border-radius:14px; }
  .spf-page--vp .spf-plan__image img { height:245px; }
  .spf-page--vp .spf-plan__image figcaption { padding:12px 20px; font-size:12px; }
  .spf-page--vp .spf-plan__content { padding:26px 22px 28px; }
  .spf-page--vp .spf-plan__content h2 { font-size:29px; line-height:1.4; }
  .spf-page--vp .spf-plan__content .eyebrow { line-height:1.8; margin-bottom:12px; }
  .spf-page--vp .spf-plan__intro { margin-bottom:20px; }
  .spf-page--vp .spf-plan__deliverables > li { grid-template-columns:26px minmax(0,1fr); gap:12px; padding-block:18px; }
  .spf-page--vp .spf-plan__deliverables .ucs-icon { width:25px; height:25px; }
  .spf-page--vp .spf-plan__deliverables h3 { font-size:20px; }
  .spf-page--vp .spf-plan__handover { padding:24px 22px; }
  .spf-page--vp .spf-plan__handover .spf-role-strip { display:grid; grid-template-columns:1fr; gap:14px; }
  .spf-page--vp .spf-plan__details > summary { padding:20px 22px; gap:14px; }
  .spf-page--vp .spf-plan__detail-body { padding:0 22px 26px; }
  .spf-page--vp .spf-closing { padding-block:64px; }
  .spf-page--vp .spf-route-stop { display:grid; padding:24px 22px; grid-template-columns:38px minmax(0,1fr); gap:0 14px; }
  .spf-page--vp .spf-route-stop h3 { font-size:21px; margin:0 0 18px; }
  .spf-page--vp .spf-route-stop__icon { width:36px; height:36px; }
  .spf-page--vp .spf-route-stop__icon .ucs-icon { width:32px; height:32px; }
  .spf-page--vp .spf-route-stop:not(:last-child):after { left:39px; }
  .spf-page--vp .spf-route-stop:not(:last-child):before { left:36px; }
  .spf-page--vp .spf-route-stop .spf-labels { gap:14px; }
  .spf-page--vp .spf-route-stop .spf-labels > li { font-size:15px; }
  .spf-page .spf-branch-grid { padding:0; border:0; border-radius:0; }
  .spf-page .spf-branch-grid > li { padding-top:0; }
  .spf-page .spf-branch-grid .spf-node__icon { width:36px; height:36px; border-radius:0; }
  .spf-page .spf-branch-grid .spf-node strong { font-size:16px; }
  .spf-page .spf-branch-root .spf-node small { font-size:15px; }
  .spf-page .spf-source-grid { grid-template-columns:1fr; gap:13px; padding-bottom:0; }
  .spf-page .spf-source-grid:after, .spf-page .spf-source-grid > li:after { content:none; }
  .spf-page .spf-source-grid .spf-node { flex-direction:row; text-align:left; gap:13px; }
  .spf-page .spf-source-grid .spf-node__icon { width:30px; height:30px; }
  .spf-page .spf-source-grid .spf-node strong { font-size:15px; }
  .spf-page .spf-merge { margin-top:18px; }
  .spf-page .spf-merge:before { content:none; }
  .spf-page .spf-process > li { grid-template-columns:32px minmax(0,1fr); gap:14px; }
  .spf-page .spf-process h3 { font-size:20px; }
  .spf-page .spf-process__icon { width:30px; height:30px; }
  .spf-page .sp-flow > li { padding:24px; }
}
