/* vertical-flow.css v1 (2026-10-11, hub task 271 follow-up, /lending v2). Loaded only by pages built with tools/build_plain_vertical.py,
   on top of insurance-plain.css. The drop-off timeline (.vf-flow): one numbered rail, each stage = a borrower line that types out,
   the model reply, a copper wire and a result card that flips (the insurance line-page moment motion, compacted to one row per stage).
   Base rules are the finished state (no JS, reduced motion); html.vf-js adds the start state that vertical-flow.js plays forward. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.vf-sec .pl-lead{margin-bottom:clamp(20px,2.4vw,32px)}

/* timeline */
.vf-flow{position:relative;list-style:none;margin:0;padding:0;--vf-top:48px;--vf-len:calc(100% - 96px)}
.vf-flow::before,.vf-flow::after{content:'';position:absolute;left:19px;top:var(--vf-top);height:var(--vf-len);width:2px;border-radius:2px;background:#dfe4e1}
.vf-flow::after{background:#e6ad7d;transform-origin:top center;transform:scaleY(var(--vf-p,1))}
.vf-stage{position:relative;display:grid;grid-template-columns:40px minmax(0,230px) minmax(0,1fr) minmax(0,250px);column-gap:40px;align-items:center;padding:26px 0;border-top:1px solid var(--line)}
.vf-stage:last-child{border-bottom:1px solid var(--line)}
.vf-node{position:relative;z-index:1;display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid #e6ad7d;background:#e6ad7d;color:#131c17;font:500 12px/1 ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.04em;transition:background .35s,border-color .35s,color .35s}
.vf-name{margin:0;font-size:19px;font-weight:500;letter-spacing:-.02em;line-height:1.3;color:var(--ink);text-wrap:balance}
.vf-thread{min-width:0}
.vf-say{margin:0}
.vf-say>small{display:block;margin-bottom:6px;font-size:11px;font-weight:550;letter-spacing:.13em;text-transform:uppercase;color:var(--eyebrow)}
.vf-say.cust{font-size:clamp(20px,1.75vw,25px);line-height:1.2;letter-spacing:-.03em;color:#5b645e}
.vf-line{display:block;position:relative}
.vf-ghost{display:block}
.vf-typed{display:none}
.vf-say.model{width:fit-content;max-width:430px;margin-top:14px;padding-left:14px;border-left:2px solid #e6ad7d;font-size:16.5px;line-height:1.45;letter-spacing:-.01em;color:var(--ink);text-wrap:pretty}
.vf-say.model>small{margin-bottom:4px}
.vf-wire{display:none}
.vf-card{border:1px solid #e6ad7d;border-radius:14px;background:#fff8f2;padding:16px 18px 18px;box-shadow:0 12px 30px -22px rgba(185,120,70,.55);transition:border-color .4s,background .4s,box-shadow .4s}
.vf-metric{display:block;margin-bottom:8px;font-size:11px;font-weight:550;letter-spacing:.12em;text-transform:uppercase;color:#b06a3b}
.vf-states{display:grid}
.vf-state{grid-area:1/1;font-size:clamp(19px,1.5vw,22px);line-height:1.2;letter-spacing:-.03em;color:var(--ink);transition:opacity .4s}
.vf-state.problem{opacity:0;color:#7f8c7a}

/* start state, only when the motion script runs */
.vf-js .vf-node{background:#fff;border-color:#c7cfca;color:var(--muted)}
.vf-js .vf-stage.is-on .vf-node{background:#e6ad7d;border-color:#e6ad7d;color:#131c17}
.vf-js .vf-ghost{visibility:hidden}
.vf-js .vf-typed{display:block;position:absolute;inset:0}
.vf-js .vf-typed.is-typing:after{content:"";display:inline-block;width:2px;height:.9em;margin-left:3px;vertical-align:-.08em;background:#d9956a;animation:vf-caret 1s steps(1) infinite}
@keyframes vf-caret{50%{opacity:0}}
.vf-js .vf-say.model{opacity:0;transform:translateY(8px);transition:opacity .45s cubic-bezier(.2,.7,.2,1),transform .45s cubic-bezier(.2,.7,.2,1)}
.vf-js .vf-stage.is-reply .vf-say.model{opacity:1;transform:none}
.vf-js .vf-card{border-color:var(--line);background:#fff;box-shadow:none}
.vf-js .vf-state.problem{opacity:1}
.vf-js .vf-state.kept{opacity:0}
.vf-js .vf-stage.is-kept .vf-card{border-color:#e6ad7d;background:#fff8f2;box-shadow:0 12px 30px -22px rgba(185,120,70,.55)}
.vf-js .vf-stage.is-kept .vf-state.problem{opacity:0}
.vf-js .vf-stage.is-kept .vf-state.kept{opacity:1}
@media(min-width:961px){.vf-js .vf-wire{display:block;position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.vf-wire path{fill:none;stroke:#e6ad7d;stroke-width:2;stroke-linecap:round}}

/* 3 steps on a hairline that draws */
.vf-steps{position:relative;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 40px}
.vf-steps::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:var(--line);transform-origin:left center}
.vf-steps li{padding-top:24px}
.vf-n{display:block;margin-bottom:12px;font:500 12px/1 ui-monospace,"SF Mono",Menlo,monospace;letter-spacing:.06em;color:#b06a3b}
.vf-steps h3{margin:0 0 8px;font-size:20px;font-weight:500;letter-spacing:-.025em;line-height:1.25}
.vf-steps p{margin:0;font-size:16px;line-height:1.55;color:var(--body);max-width:36ch}
.vf-js .vf-steps::before{transform:scaleX(0);transition:transform .9s cubic-bezier(.2,.7,.2,1) .1s}
.vf-js .vf-steps.is-in::before{transform:scaleX(1)}

/* proof row and compliance line */
.pl-section.vf-proof{padding:clamp(44px,4.5vw,64px) 0}
.vf-proof .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px 56px}
.vf-proof .pl-head{margin:0}
.vf-logos{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:center;gap:20px 48px}
.vf-logos img{display:block;height:34px;width:auto}
#rules .pl-badges{margin-bottom:22px}
.vf-note{margin:0;max-width:640px;font-size:16px;line-height:1.55;color:var(--body)}
.vf-note a{color:var(--ink);text-underline-offset:3px}

@media(max-width:960px){
.vf-flow::before,.vf-flow::after{left:17px}
.vf-stage{grid-template-columns:36px minmax(0,1fr);column-gap:18px;row-gap:12px;align-items:start;padding:24px 0}
.vf-node{width:36px;height:36px;grid-row:1/span 3}
.vf-name{grid-column:2;padding-top:7px}
.vf-thread,.vf-card{grid-column:2}
.vf-card{justify-self:start;min-width:220px;margin-top:4px}
.vf-steps{grid-template-columns:1fr;gap:0}
.vf-steps::before{display:none}
.vf-steps li{padding:20px 0;border-top:1px solid var(--line)}
.vf-steps li:last-child{border-bottom:1px solid var(--line)}
}
@media(max-width:760px){
.vf-say.cust{font-size:20px}
.vf-say.model{font-size:16px;padding-left:12px}
.vf-card{padding:14px 16px 16px}
.vf-state{font-size:19px}
.vf-name{font-size:18px}
.vf-logos img{height:28px}
}
@media(prefers-reduced-motion:reduce){.vf-node,.vf-card,.vf-state,.vf-say.model{transition:none}}
