/* Consulting-only diagrams and book-layout overrides. Load after shared diagram styles. */
.cv-contact-process { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); grid-template-rows: auto 64px auto; gap: 36px 0; padding: 0; margin: 0; list-style: none; counter-reset: contact-step; }
.cv-contact-process > li { --step-tone: #493568; --step-fill: #e7def5; display: grid; grid-row: 1 / 4; grid-template-rows: subgrid; min-width: 0; margin: 0; padding: 0; counter-increment: contact-step; }
.cv-contact-process > li:nth-child(2) { --step-tone: #3d3867; --step-fill: #e3e0f5; }
.cv-contact-process > li:nth-child(3) { --step-tone: #513568; --step-fill: #ede4f7; }
.cv-contact-process > li:nth-child(4) { --step-tone: #221259; --step-fill: #d4c5e8; }
.cv-contact-process-step { position: relative; display: grid; place-items: center; grid-row: 2; height: 64px; margin-right: -16px; color: var(--step-tone); isolation: isolate; }
.cv-contact-process-step::before { content: ""; position: absolute; inset: 0; z-index: -1; background: var(--step-fill); clip-path: polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%,24px 50%); }
.cv-contact-process-step::after { content: counter(contact-step,decimal-leading-zero); font-size: 18px; font-weight: 700; }
.cv-contact-process > li:first-child .cv-contact-process-step::before { clip-path: polygon(0 0,calc(100% - 24px) 0,100% 50%,calc(100% - 24px) 100%,0 100%); }
.cv-contact-process > li:last-child .cv-contact-process-step { margin-right: 0; }
.cv-contact-process-copy { grid-row: 1; align-self: end; padding: 0 16px; text-align: center; }
.cv-contact-process > li:nth-child(even) .cv-contact-process-copy { grid-row: 3; align-self: start; }
.cv-contact-process-stem { position: absolute; width: 3px; height: 28px; background: var(--step-tone); left: calc(50% - 1.5px); bottom: 100%; }
.cv-contact-process-stem::after { content: ""; position: absolute; width: 12px; height: 12px; border-radius: 50%; background: var(--step-tone); left: -4.5px; top: -6px; }
.cv-contact-process > li:nth-child(even) .cv-contact-process-stem { top: 100%; bottom: auto; }
.cv-contact-process > li:nth-child(even) .cv-contact-process-stem::after { top: auto; bottom: -6px; }
.cv-content-visual .cv-contact-process h3 { font-size: var(--cv-content-h3); line-height: 1.3; margin: 0 0 10px; }
@media (max-width: 980px) {
    .cv-contact-process { grid-template-columns: minmax(0,1fr); grid-template-rows: none; gap: 24px; }
    .cv-contact-process > li { grid-row: auto; grid-template-rows: auto; grid-template-columns: 64px minmax(0,1fr); gap: 16px; align-items: start; }
    .cv-contact-process-step { grid-row: 1; margin: 0; }
    .cv-contact-process .cv-contact-process-copy, .cv-contact-process > li:nth-child(even) .cv-contact-process-copy { grid-row: 1; grid-column: 2; padding: 0; text-align: left; align-self: start; }
    .cv-contact-process-stem { display: none; }
}
.cv-section--tech [data-hub-visual="engagement-phases"] { --phase-one: var(--cv-purple); --phase-two: #493568; }
.cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-circle > svg { box-sizing: border-box; width: 28px; height: 28px; padding: 5px; border: .75px solid var(--phase-one); border-radius: 4px; background: var(--cv-section-icon-bg); color: var(--phase-one); fill: none; stroke: currentColor; stroke-width: 2; }
.cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-arc { border-color: var(--phase-one); }
.cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-arc:nth-child(2) { border-color: var(--phase-two); }
.cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-arc::after { background: var(--phase-one); }
.cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-arc:nth-child(2)::after { background: var(--phase-two); }
.cv-section--tech [data-hub-visual="engagement-phases"] h3 { margin: 10px 0 12px; font-size: var(--cv-content-h3); }
.cv-section--tech [data-hub-visual="engagement-phases"] p + p { margin-top: 12px; }
@media (min-width: 1100px) {
    .cv-section--tech [data-hub-visual="engagement-phases"] .cv-case-solution-layout { grid-template-rows: auto; }
    .cv-section--tech [data-hub-visual="engagement-phases"] :is(.cv-case-solution-circle,.cv-case-solution-item) { grid-row: 1; }
}
.cv-section--tech .cv-book-cycle-image { filter: grayscale(1) sepia(.5) hue-rotate(215deg) saturate(2); }
.cv-section--tech [data-hub-visual="book-cycle"] { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); align-items: center; gap: 20px 28px; margin-top: 28px; padding-bottom: 8px; }
.cv-section--tech [data-hub-visual="book-cycle"] > figcaption { grid-column: 1 / -1; margin: 0; font-size: 14px; }
.cv-section--tech [data-hub-visual="book-cycle"] .cv-book-cycle-image { max-width: 340px; margin: 0 auto; }
.cv-section--tech [data-hub-visual="book-cycle"] .cv-flywheel-copy { grid-template-columns: minmax(0,1fr); gap: 20px; min-width: 0; }
.cv-section--tech [data-hub-visual="book-cycle"] .cv-flywheel-copy h4 { font-size: 14px; font-weight: 700; margin-bottom: 8px; }
.cv-section--tech [data-hub-visual="book-cycle"] .cv-flywheel-copy p + p { margin-top: 10px; }
@media (max-width: 700px) { .cv-section--tech [data-hub-visual="book-cycle"] { grid-template-columns: minmax(0,1fr); } }
.cv-priority-matrix { position: relative; width: calc(100% - 48px); max-width: 700px; margin: 24px auto 48px; padding: 0 0 8px 8px; border-left: 2px solid #493568; border-bottom: 2px solid #493568; }
.cv-priority-matrix::before, .cv-priority-matrix::after { content: ''; position: absolute; width: 0; height: 0; }
.cv-priority-matrix::before { top: -8px; left: -7px; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 10px solid #493568; }
.cv-priority-matrix::after { right: -8px; bottom: -7px; border-top: 6px solid transparent; border-bottom: 6px solid transparent; border-left: 10px solid #493568; }
.cv-priority-matrix-x, .cv-priority-matrix-y { position: absolute; color: #221259; font-size: 12px; font-weight: 700; line-height: 1.4; }
.cv-priority-matrix-x { bottom: -30px; left: 50%; transform: translateX(-50%); }
.cv-priority-matrix-y { left: -32px; top: 50%; writing-mode: vertical-rl; transform: translateY(-50%) rotate(180deg); }
.cv-priority-matrix table { display: block; width: 100%; }
.cv-priority-matrix tbody { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }
.cv-priority-matrix tbody tr { display: contents; }
/* Retain semantic axis headers without a visible spreadsheet header row. */
.cv-priority-matrix thead, .cv-priority-matrix th[scope="row"] { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.cv-priority-matrix td { display: flex; flex-direction: column; justify-content: center; box-sizing: border-box; min-width: 0; min-height: 150px; padding: 20px; border: 0; text-align: center; overflow-wrap: anywhere; }
.cv-priority-matrix td h3 { margin: 0 0 8px; font-size: 16px; line-height: 1.3; color: #221259; }
.cv-priority-matrix td p { margin: 0; font-size: 14px; line-height: 1.6; color: #493568; }
.cv-priority-matrix-plan { background: #e8e0f3; }
.cv-priority-matrix-act { background: #493568; }
.cv-priority-matrix-monitor { background: #f3eff9; }
.cv-priority-matrix-assign { background: #d7c9eb; }
.cv-priority-matrix .cv-priority-matrix-act h3,
.cv-priority-matrix .cv-priority-matrix-act p { color: #fff; }
@media (max-width: 700px) {
    .cv-priority-matrix { width: calc(100% - 28px); margin-left: 28px; }
    .cv-priority-matrix td { min-height: 150px; padding: 14px 8px; }
    .cv-priority-matrix td h3 { font-size: 14px; }
}
.cv-engagement-branches { display: grid; grid-template-columns: minmax(0,1fr) 180px minmax(0,1fr); grid-template-rows: auto auto; gap: 24px 32px; max-width: 1040px; margin: 40px auto 16px; align-items: center; }
.cv-engagement-branches-center { grid-column: 2; grid-row: 1 / 3; width: 180px; aspect-ratio: 1; border: 1px solid #b5a8ca; border-radius: 50%; box-shadow: inset 0 0 0 12px #f3eff9; display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 12px; color: #221259; font-size: 14px; font-weight: 700; text-align: center; }
.cv-engagement-branches-center > svg { width: 28px; height: 28px; }
.cv-engagement-branches-list { display: contents; list-style: none; }
.cv-engagement-branch { position: relative; list-style: none; min-width: 0; margin: 0; padding: 0; --branch-color: #221259; }
.cv-engagement-branch:first-child { grid-column: 1; grid-row: 1; }
.cv-engagement-branch:last-child { grid-column: 3; grid-row: 2; --branch-color: #654d83; }
.cv-engagement-branch::after { content: ''; position: absolute; width: 32px; height: 1px; background: #b5a8ca; top: 50%; }
.cv-engagement-branch:first-child::after { right: -32px; transform: rotate(35deg); transform-origin: left; }
.cv-engagement-branch:last-child::after { left: -32px; transform: rotate(35deg); transform-origin: right; }
.cv-engagement-branch-heading { position: relative; display: flex; align-items: center; gap: 12px; min-height: 88px; padding: 16px 20px; border-radius: 44px; background: var(--branch-color); }
.cv-engagement-branch-heading h3 { margin: 0; font-size: 16px; line-height: 1.3; color: #fff; min-width: 0; overflow-wrap: anywhere; }
.cv-engagement-branch-number { position: absolute; top: -26px; left: 24px; font-size: 12px; font-weight: 700; color: var(--branch-color); }
.cv-engagement-branch-icon { flex: 0 0 40px; height: 40px; display: grid; place-items: center; border: 1px solid #d8cce7; border-radius: 50%; background: #f6f2fb; color: var(--branch-color); }
.cv-engagement-branch-icon svg { width: 22px; height: 22px; }
.cv-engagement-branch > p { margin: 12px 8px 0; text-align: center; }
@media (max-width: 980px) {
    .cv-engagement-branches { display: flex; flex-direction: column; gap: 40px; margin-top: 24px; }
    .cv-engagement-branches-center { width: 120px; flex-shrink: 0; }
    .cv-engagement-branches-list { display: grid; grid-template-columns: minmax(0,1fr); gap: 40px; width: 100%; max-width: 520px; margin: 0; padding: 0; }
    .cv-engagement-branch:first-child, .cv-engagement-branch:last-child { grid-column: auto; grid-row: auto; }
    .cv-engagement-branch::after { display: none; }
}
.cv-architecture-inputs { display: grid; grid-template-columns: minmax(0,1.2fr) 96px minmax(0,1fr); align-items: center; max-width: 860px; margin: 24px auto 0; }
.cv-hub-visual .cv-infrastructure-pyramid { display: grid; gap: 4px; max-width: 760px; margin: 24px auto 0; padding: 0; list-style: none; }
.cv-infrastructure-pyramid > li { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 28px; min-height: 88px; margin: 0; padding: 0; }
.cv-infrastructure-tier { display: block; justify-self: center; align-self: stretch; width: 25%; background: #eee7f6; clip-path: polygon(50% 0,100% 100%,0 100%); }
.cv-infrastructure-pyramid > li:nth-child(2) .cv-infrastructure-tier { width: 50%; background: #d8cce7; clip-path: polygon(25% 0,75% 0,100% 100%,0 100%); }
.cv-infrastructure-pyramid > li:nth-child(3) .cv-infrastructure-tier { width: 75%; background: #806b9c; clip-path: polygon(16.667% 0,83.333% 0,100% 100%,0 100%); }
.cv-infrastructure-pyramid > li:nth-child(4) .cv-infrastructure-tier { width: 100%; background: #493568; clip-path: polygon(12.5% 0,87.5% 0,100% 100%,0 100%); }
.cv-infrastructure-tier-copy { align-self: center; min-width: 0; padding: 10px 0; }
.cv-infrastructure-tier-copy h3 { margin: 0; font-family: inherit; font-size: var(--cv-content-h3); line-height: 1.3; color: var(--cv-content-title-color); overflow-wrap: anywhere; }
.cv-infrastructure-tier-copy p { margin: 6px 0 0; font-size: 14px; line-height: 1.6; color: var(--cv-muted); overflow-wrap: anywhere; }
@media (max-width: 700px) {
    .cv-infrastructure-pyramid > li { grid-template-columns: minmax(64px,.65fr) minmax(0,1.35fr); gap: 16px; }
}
.cv-architecture-sources { display: grid; grid-template-rows: repeat(3,minmax(112px,auto)); gap: 16px; padding: 0; margin: 0; list-style: none; }
.cv-architecture-sources > li, .cv-architecture-decision { box-sizing: border-box; border: 1px solid #d8cce7; border-radius: 6px; background: #f6f2fb; padding: 16px 20px; margin: 0; min-width: 0; }
.cv-architecture-node-label { display: flex; align-items: baseline; gap: 12px; color: #493568; }
.cv-architecture-node-label > span { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: 14px; flex-shrink: 0; }
.cv-architecture-node-label h3 { font-family: inherit; font-size: var(--cv-content-h3); line-height: 1.3; color: var(--cv-content-title-color); margin: 0; overflow-wrap: anywhere; }
.cv-architecture-sources > li > p { margin: 8px 0 0; }
.cv-hub-visual .cv-architecture-connectors { display: block; width: 100%; height: 100%; box-sizing: border-box; padding-right: 3px; min-height: 368px; fill: none; stroke: #806b9c; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; overflow: visible; }
.cv-architecture-connectors path { vector-effect: non-scaling-stroke; }
.cv-architecture-decision { background: #eee7f6; border-color: #a28bbd; }
.cv-architecture-decision > ul { display: grid; grid-template-columns: minmax(0,1fr); gap: 8px; list-style: none; padding: 16px 0 0; margin: 0; }
.cv-architecture-decision > ul > li { margin: 0; padding: 8px 12px; border-left: 2px solid #806b9c; font-family: inherit; font-size: 14px; line-height: 1.6; color: var(--cv-muted); overflow-wrap: anywhere; }
@media (max-width: 700px) {
    .cv-architecture-inputs { grid-template-columns: minmax(0,1fr); }
    .cv-architecture-sources { grid-template-rows: none; }
    .cv-hub-visual .cv-architecture-connectors { height: 44px; min-height: 0; padding-right: 0; padding-bottom: 3px; }
    .cv-architecture-connectors path { d: path("M50 0 V280 M43 245 L50 280 L57 245"); }
}
/* SDLC phases and the RAPID management layer are separate, concurrent views. */
.cv-sdlc-rapid { width: 92%; max-width: 1100px; margin-inline: auto; }
.cv-sdlc-rapid .cv-contact-process { grid-template-columns: repeat(7, minmax(0, 1fr)); grid-template-rows: auto 48px auto; row-gap: 28px; }
.cv-sdlc-rapid .cv-contact-process > li { --step-tone: var(--cv-section-icon-color); --step-fill: var(--cv-section-icon-bg); }
.cv-sdlc-rapid .cv-contact-process-step { height: 48px; margin: 0; background: linear-gradient(var(--step-tone),var(--step-tone)) center / 100% 2px no-repeat; }
.cv-sdlc-rapid .cv-contact-process > li:first-child .cv-contact-process-step { background-size: 50% 2px; background-position: right center; }
.cv-sdlc-rapid .cv-contact-process > li:last-child .cv-contact-process-step { background-size: 50% 2px; background-position: left center; }
.cv-sdlc-rapid .cv-contact-process-step::before {
    box-sizing: border-box;
    inset: 2px auto auto calc(50% - 22px);
    width: 44px;
    height: 44px;
    border: 1px solid #ffffff70;
    border-radius: 50%;
    clip-path: none;
    background: var(--step-tone);
    box-shadow: 0 0 0 3px var(--step-fill), 0 3px 5px #22125926, 0 7px 12px #2212591a,
        inset 0 0 0 3px #ffffff12, inset 0 2px 3px #ffffff30, inset 0 -3px 5px #130b3038;
}
.cv-sdlc-rapid .cv-contact-process > li:first-child .cv-contact-process-step::before { clip-path: none; }
.cv-sdlc-rapid .cv-contact-process-step::after { color: #fff; font-size: 14px; font-variant-numeric: tabular-nums; text-shadow: 0 1px 2px #130b3066; }
.cv-sdlc-rapid .cv-contact-process-copy { width: 140%; justify-self: center; padding: 0; }
.cv-sdlc-rapid .cv-contact-process > li:first-child .cv-contact-process-copy { justify-self: start; }
.cv-sdlc-rapid .cv-contact-process > li:last-child .cv-contact-process-copy { justify-self: end; }
.cv-sdlc-rapid .cv-contact-process-stem { height: 28px; width: 2px; }
.cv-sdlc-rapid .cv-contact-process-stem::after { display: none; }
.cv-sdlc-rapid h3 { font-size: var(--cv-content-h3); margin: 0 0 10px; overflow-wrap: break-word; }
.cv-sdlc-rapid p { margin: 0; }
.cv-sdlc-management { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; margin-top: 24px; padding: 20px; border-left: 3px solid var(--cv-section-icon-color); background: var(--cv-section-icon-bg); }
.cv-sdlc-rapid .cv-sdlc-feedback { margin-top: 16px; }
@media (max-width: 980px) {
    .cv-sdlc-rapid { width: 100%; }
    .cv-sdlc-rapid .cv-contact-process { grid-template-columns: minmax(0,1fr); grid-template-rows: none; gap: 24px; }
    .cv-sdlc-rapid .cv-contact-process-copy { width: 100%; }
    .cv-sdlc-rapid .cv-contact-process-step { background: none; }
}
@media (max-width: 700px) { .cv-sdlc-management { grid-template-columns: minmax(0, 1fr); } }
