/* Editorial typography. Essential copy is never part of a loader. */
:root { --ink:#142952; --ink-soft:#343d4b; --reading-size:1.125rem; --label-ink:#435777; }
body { font-size:var(--reading-size); line-height:1.7; }
h1,h2,h3 { text-wrap:balance; }
p,li { text-wrap:pretty; }
.hero h1,.section h2 { letter-spacing:-.035em; line-height:1.12; }
.hero-copy { max-width:1060px; padding:30px 30px 34px; }
.hero h1 { max-width:1000px; font-size:clamp(44px,5.2vw,74px); margin-bottom:28px; }
.headline-line { display:block; }
.headline-emphasis { color:#305d99; }
.hero-intro { max-width:650px; font-size:1.25rem; line-height:1.65; }
.hero-actions { gap:18px; }
.hero-background-type { opacity:.65; }
.section-heading>p,.vision-copy>p:not(.kicker),.polly-copy>p:not(.kicker),
.authority-copy>p:not(.kicker),.stack-card .stack-copy h3+p,
.service-card>p:not(.service-no),.authority-list p,.check-list li,
.fit-detail h3+p,.faq-list details p,.contact p:not(.kicker),
.scorecard-intro,[data-result-copy],.result-contact>p:not(.microcopy),
.challenge-dialog>p:not(.kicker) { font-size:var(--reading-size); line-height:1.7; color:var(--ink-soft); }
.section-heading>p { max-width:48ch; }
.centered>p { max-width:56ch; }
.stack-card .stack-copy h3+p { max-width:48ch; }
.section-heading h2,.approach .section-heading h2 { font-size:clamp(38px,4.2vw,58px); }
.section .vision-copy h2,.section .polly-copy h2,.section .authority-copy h2,.section .faq-grid h2 { font-size:clamp(38px,4vw,56px); }
.kicker,.overline,.stack-card .sheet-label,.stack-card .path-label,
.engagement-tag,.deck-heading,.footer-label,.fit-detail-label,
.fit-recommendation span,.hero-note-card span { font-size:.75rem; line-height:1.6; letter-spacing:.075em; color:var(--label-ink); }
.section-heading>.kicker { font-size:.75rem; color:var(--label-ink); }
.primary-nav { font-size:.8125rem; text-transform:none; letter-spacing:0; gap:26px; }
.text-cta { font-size:.8125rem; text-transform:none; letter-spacing:0; min-height:46px; }
.button { font-size:.9375rem; min-height:54px; gap:20px; }
.underlined-link,.inline-button,.contact-scorecard-link { font-size:1rem; }
.underlined-link,.inline-button { text-underline-offset:5px; }
.hero-project-card figcaption,.hero-stage-caption { font-size:.8125rem; line-height:1.6; letter-spacing:0; text-transform:none; color:var(--label-ink); }
.hero-note-card span { font-size:.75rem; }
.hero-stage-caption { width:310px; }
.large-sentence { font-size:clamp(25px,2.4vw,34px); line-height:1.45; letter-spacing:-.015em; }
.pressure-item.stack-card,.path-list>.stack-card { grid-template-columns:40px minmax(0,1fr) 260px; gap:26px; padding:40px 32px; }
.stack-card .stack-copy h3 { font-size:clamp(29px,2.8vw,37px); line-height:1.2; letter-spacing:-.03em; }
.sheet-footnote { font-size:.875rem; line-height:1.6; color:var(--label-ink); }
.stack-card .stack-number,.path-card .stack-number { color:#526e99; font-size:28px; }
.engagement-tag { padding:7px 10px; }
.service-no,.check-list span,.authority-list>li>span { font-size:.8125rem; color:#305d99; }
.authority-list strong { font-size:1.1875rem; line-height:1.5; }
.check-list li { grid-template-columns:33px 1fr; }
.service-card h3 { font-size:clamp(28px,2.6vw,35px); line-height:1.18; letter-spacing:-.025em; }
.service-card.featured>p:not(.service-no) { color:#e4eaf4; }
.service-card.featured .service-no { color:#b9d0ff; }
.service-card .inline-button { line-height:1.55; }
.authority-image>p { font-size:.9375rem; line-height:1.6; width:300px; }
.authority-image>p span,.polly-note span { font-size:.75rem; }
.polly-note strong { font-size:24px; line-height:1.3; letter-spacing:-.02em; }
.fit-table th,.fit-table td { font-size:.9375rem; line-height:1.6; padding:18px 13px; }
.fit-table thead th { font-size:1rem; }
.fit-table thead small { font-size:.75rem; color:var(--label-ink); letter-spacing:.025em; }
.fit-row button { font-size:1rem; line-height:1.5; }
.fit-table thead .is-recommended { background:var(--ink)!important; box-shadow:inset 0 -4px #f7cb46; }
.fit-detail { gap:36px; grid-template-columns:1fr 260px; }
.fit-detail h3 { font-size:30px; line-height:1.2; letter-spacing:-.02em; }
.fit-detail h3+p { color:#e4eaf4; }
.fit-detail-label,.fit-recommendation span { color:#c4d1e7; }
.fit-recommendation strong { font-size:1rem; line-height:1.65; }
.faq-list summary { font-size:23px; line-height:1.4; letter-spacing:-.015em; }
.faq-list details p { margin-right:0; }
main>.contact { background:#eaf0fd; color:var(--ink); }
.contact .kicker { color:var(--label-ink); }
.contact .contact-scorecard-link { color:var(--ink); border-color:#435777; }
.footer-label { color:#c2cfe2; }
.footer-grid>div>p:not(.footer-label),.footer-grid a:not(.brand),.footer-grid button { font-size:.9375rem; line-height:1.7; }
.footer-grid { padding-bottom:74px; }
.copyright { font-size:.8125rem; color:#c2cfe2; }
.scorecard-dialog h2,.challenge-dialog h2 { font-size:clamp(34px,4vw,48px); line-height:1.16; letter-spacing:-.03em; }
.scorecard-panel legend { font-size:21px; line-height:1.5; letter-spacing:-.01em; }
.scorecard-panel legend b { font-size:.8125rem; color:#305d99; }
.rating-options label span { font-size:.9375rem; min-height:46px; padding:10px 5px; color:var(--ink-soft); }
.form-status,.microcopy { font-size:.875rem; line-height:1.65; color:var(--label-ink); }
.result-contact>.microcopy { margin:16px 0 0; }
.scorecard-actions { align-items:flex-start; }
.scorecard-actions .button { flex-shrink:0; }
.challenge-dialog li { font-size:1rem; line-height:1.65; }
.challenge-dialog li span { font-size:.8125rem; color:#305d99; }
.challenge-not-now { font-size:.9375rem; padding:10px 0; }
.site-motion-toggle { min-height:42px; font-size:.75rem; color:var(--label-ink); }

/* Readable annotations in the small business diagrams. */
.stack-art .art-label,.cash-weeks span,.cash-lane b,.handoff-sheet span,.assessment-sheet span { font-size:.6875rem; color:#435777; }
.cash-note,.handoff-sheet,.diagnostic-row,.owner-branches span { font-size:.8125rem; }
.cash-lane { height:38px; padding-top:20px; }
.cash-weeks span { color:#526581; }
.handoff-sheet { padding:13px 10px; }
.handoff-sheet:nth-of-type(2) { margin-left:8px; }
.handoff-sheet:nth-of-type(3) { margin-left:16px; }
.handoff-sheet:nth-of-type(4) { margin-left:24px; }
.owner-node span { font-size:.75rem; line-height:1.5; }
.stack-art .art-bottom-note,.rhythm-art small { font-size:.75rem; color:var(--label-ink); }
.assessment-sheet { padding:17px; }
.assessment-sheet strong,.rhythm-art strong { font-size:.9375rem; line-height:1.45; }
.rhythm-art>div>span { width:22px; height:22px; font-size:.625rem; color:#305d99; }

/* Real project photography assembles like panels on a drawing.
   Without JavaScript, the normal complete image and text remain visible. */
.vision-image { margin:0 0 76px; }
.assembly-caption { position:absolute; top:calc(100% + 24px); left:0; right:0; display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 16px; color:var(--label-ink); font-size:.8125rem; line-height:1.6; }
.assembly-replay { padding:3px 0; min-height:36px; border:0; border-bottom:1px solid #7184a1; background:none; font-size:.8125rem; font-weight:700; }
.assembly-replay[hidden] { display:none; }
.assembly-replay span { font-size:18px; margin-right:4px; }
.assembly-replay:focus-visible { outline:2px solid var(--blue); outline-offset:5px; }
.assembly-overlay { display:none; position:absolute; z-index:2; inset:0; pointer-events:none; overflow:hidden; background:#edf2fa; }
.is-assembling>.assembly-overlay { display:block; }
.assembly-pane { position:absolute; inset:0; background-size:cover; background-position:center; background-repeat:no-repeat; }
.assembly-pane:nth-child(1) { clip-path:inset(0 66.6% 50% 0); --piece:0; --from-x:-28px; --from-y:-14px; }
.assembly-pane:nth-child(2) { clip-path:inset(0 33.3% 50% 33.3%); --piece:2; --from-x:0px; --from-y:-24px; }
.assembly-pane:nth-child(3) { clip-path:inset(0 0 50% 66.6%); --piece:4; --from-x:28px; --from-y:-14px; }
.assembly-pane:nth-child(4) { clip-path:inset(50% 66.6% 0 0); --piece:1; --from-x:-24px; --from-y:18px; }
.assembly-pane:nth-child(5) { clip-path:inset(50% 33.3% 0 33.3%); --piece:3; --from-x:0px; --from-y:24px; }
.assembly-pane:nth-child(6) { clip-path:inset(50% 0 0 66.6%); --piece:5; --from-x:24px; --from-y:18px; }
.is-assembling .assembly-pane { animation:panelAssemble 1100ms cubic-bezier(.2,.7,.2,1) calc(var(--piece)*115ms) both; }
.assembly-overlay:after { content:''; position:absolute; inset:0; border:1px solid #8da7d0; pointer-events:none; animation:drawingSettle 1900ms ease both; }
.build-word { display:inline-block; }
.is-assembling .build-word { animation:wordAssemble 650ms cubic-bezier(.2,.7,.2,1) calc(var(--piece)*65ms) both; }
@keyframes panelAssemble { from { opacity:.12; transform:translate(var(--from-x),var(--from-y)); } 80%,to { opacity:1; transform:none; } }
@keyframes wordAssemble { from { opacity:.4; transform:translateY(12px); } to { opacity:1; transform:none; } }
@keyframes drawingSettle { 0%,60% { opacity:1; } 100% { opacity:0; } }
.motion-paused .assembly-overlay,.page-hidden .assembly-overlay { display:none; }
.motion-paused .build-word,.page-hidden .build-word { animation:none!important; opacity:1; transform:none; }

@media (max-width:1100px) {
  .primary-nav { gap:16px; }
  .pressure-item.stack-card,.path-list>.stack-card { grid-template-columns:28px minmax(0,1fr) 230px; gap:20px; padding:32px 24px; }
  .stack-card .stack-copy h3 { font-size:30px; }
}
@media (max-width:1000px) and (min-width:801px) {
  .primary-nav { gap:12px; font-size:.75rem; }
  .brand img { width:158px; }
  .text-cta { padding:12px; font-size:.75rem; }
  .hero h1 { font-size:58px; }
  .section .split-heading { grid-template-columns:1fr; gap:26px; }
  .section-heading>p { max-width:60ch; }
  .service-grid { grid-template-columns:1fr; gap:24px; }
  .service-card { min-height:0; }
  .service-card h3 { margin-top:20px; }
  .service-card>p:not(.service-no) { max-width:64ch; }
}
@media (max-width:800px) {
  :root { --reading-size:1.0625rem; }
  .hero-copy { padding:20px 0 26px; }
  .hero h1 { font-size:clamp(39px,10.5vw,60px); line-height:1.14; letter-spacing:-.03em; }
  .hero-intro { font-size:1.125rem; }
  .primary-nav { font-size:.9375rem; }
  .text-cta { font-size:.875rem; }
  .menu-toggle { padding-left:28px; min-height:44px; }
  .menu-toggle span { left:0; right:auto; }
  .menu-toggle b { font-size:.8125rem; margin-left:0; }
  .kicker,.overline,.stack-card .sheet-label,.stack-card .path-label,.deck-heading,.engagement-tag { font-size:.6875rem; letter-spacing:.06em; }
  .section-heading h2,.approach .section-heading h2,.section .vision-copy h2,
  .section .polly-copy h2,.section .authority-copy h2,.section .faq-grid h2,
  .contact h2 { font-size:clamp(32px,8.5vw,44px); line-height:1.17; letter-spacing:-.03em; }
  .section-heading>p { font-size:var(--reading-size); line-height:1.7; }
  .section-heading>.kicker { font-size:.6875rem; }
  .pressure-item.stack-card,.path-list>.stack-card { grid-template-columns:1fr; gap:14px; padding:26px 22px; }
  .stack-card .stack-number { font-size:21px; }
  .stack-card .stack-copy h3 { font-size:28px; line-height:1.2; }
  .stack-art { margin-top:8px; }
  .sheet-footnote { font-size:.875rem; }
  .deck-heading span:last-child { max-width:135px; }
  .hero-note-card span { font-size:.6875rem; }
  .hero-stage-caption { width:100%; font-size:.8125rem; }
  .hero-project-card figcaption { font-size:.75rem; }
  .section .vision-image { margin-bottom:76px; }
  .assembly-caption { top:calc(100% + 20px); }
  .authority-image>p { width:min(280px,100%); }
  .fit-detail { grid-template-columns:1fr; gap:20px; }
  .fit-detail h3 { font-size:26px; }
  .fit-mobile label { font-size:.75rem; color:var(--label-ink); }
  .fit-mobile select { font-size:1rem; }
  .fit-mobile-card { grid-template-columns:1fr; gap:5px; }
  .fit-mobile-card span,.fit-mobile-card strong { font-size:.9375rem; }
  .fit-mobile-card b { font-size:.75rem; color:#305d99; }
  .fit-actions .underlined-link { text-align:left; }
  .service-card h3 { font-size:30px; }
  .faq-list summary { font-size:21px; }
  .footer-grid { grid-template-columns:1fr; padding-bottom:0; }
  .footer-grid>div { grid-column:1/-1; }
  .scorecard-dialog h2,.challenge-dialog h2 { font-size:34px; }
  .scorecard-panel legend { font-size:19px; }
  .rating-options label span { font-size:.9375rem; }
  .scorecard-actions { gap:20px; }
  .scorecard-actions .button,.result-contact .button { width:100%; }
  .result-contact { padding:22px 16px; }
  .site-motion-toggle { font-size:.75rem; min-height:40px; }
}
@media (max-width:360px) {
  .hero h1 { font-size:36px; }
  .button { padding-left:16px; padding-right:16px; gap:12px; }
  .pressure-item.stack-card,.path-list>.stack-card { padding:24px 18px; }
  .stack-card .stack-copy h3 { font-size:26px; }
  .art-sheet { padding:18px; }
  .owner-art { padding:18px 8px; }
  .owner-branches { gap:4px; }
  .hero-stage { height:655px; }
}
/* Short windows and browser zoom must not trap text underneath sticky panels. */
@media (max-height:700px) {
  .pressure-item.stack-card,.path-list>.stack-card { position:relative; top:auto; transform:none; }
}
@media (prefers-reduced-motion:reduce) {
  .is-assembling .build-word { animation:none; opacity:1; transform:none; }
  .is-assembling>.assembly-overlay,.assembly-replay { display:none; }
}
@media print {
  .assembly-overlay,.assembly-replay { display:none!important; }
  .build-word { animation:none!important; opacity:1; transform:none; }
}
