/* Cevelar homepage sections. Tokens and motion come from brand-v2.css.
   Sections: #problem (.cvRw) · #offer (.cvOffer) · #how-it-works (.cvHiw)
             #demos (.cvPf) · #about (.cvAb) · #resources (.cvRes) */

/* ================================================================== */
/* #problem — rework loop: one token, three throwbacks, one clean run.  */
/* States set by JS: [data-run] intro · [data-act="2"] Cevelar closes   */
/* the links · [data-done] rest. Links: .is-hit / .is-closed.          */
/* ================================================================== */
.cvRw{overflow:hidden;--rw-s:1}
.cvRw-body{display:grid;gap:24px}
.cvRw-stage{max-width:820px;min-width:0}
.cvRw-svg{width:100%;display:block;overflow:visible}
.cvRw-track{fill:none;stroke:var(--cvl-dark-line);stroke-width:2}
.cvRw-station circle{fill:var(--cvl-ink);stroke:var(--cvl-dark-line-strong);stroke-width:1.5}
.cvRw-station text{font-family:var(--cvl-font-mono);font-size:9px;fill:var(--cvl-dark-muted);letter-spacing:.1em}

.cvRw-trail{fill:none;stroke:var(--cvl-gap);stroke-width:1.5;stroke-dasharray:1;stroke-dashoffset:0;opacity:.75;transition:opacity .6s ease}
.cvRw[data-act="2"] .cvRw-trail{opacity:.14}
.cvRw-through{fill:none;stroke:var(--cvl-dark-blue-bright);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;stroke-linecap:round}

.cvRw-link-cut{stroke:var(--cvl-ink);stroke-width:6}
.cvRw-link-open{stroke:var(--cvl-gap);stroke-width:2;stroke-dasharray:3 3;transition:opacity .3s ease}
.cvRw-link-closed{fill:none;stroke:var(--cvl-dark-blue-bright);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .45s var(--cvl-ease-out)}
.cvRw-link-dot{fill:var(--cvl-gap);transform-box:fill-box;transform-origin:center;transform:scale(var(--rw-s));transition:fill .3s ease}
.cvRw-link.is-closed .cvRw-link-open{opacity:0}
.cvRw-link.is-closed .cvRw-link-closed{stroke-dashoffset:0}
.cvRw-link.is-closed .cvRw-link-dot{fill:var(--cvl-dark-blue-bright);animation:cvRwSnap .45s var(--cvl-ease-out)}
.cvRw-link.is-hit .cvRw-link-dot{animation:cvRwHit .38s var(--cvl-ease-out)}
@keyframes cvRwHit{0%{transform:scale(var(--rw-s))}35%{transform:scale(calc(var(--rw-s) * 1.9))}100%{transform:scale(var(--rw-s))}}
@keyframes cvRwSnap{0%{transform:scale(calc(var(--rw-s) * .6))}55%{transform:scale(calc(var(--rw-s) * 1.25))}100%{transform:scale(var(--rw-s))}}

.cvRw-ok{fill:var(--cvl-dark-blue-bright);transform-box:fill-box;transform-origin:center;opacity:0;transform:scale(.5);transition:opacity .35s ease,transform .45s var(--cvl-ease-out)}
.cvRw-ok.is-on{opacity:1;transform:none}

.cvRw-token{transform:translate(60px,130px);will-change:transform}
.cvRw-token rect{fill:#E4EBF3;stroke:transparent;stroke-width:1.5;transition:stroke .2s ease,fill .2s ease}
.cvRw-token text{font-family:var(--cvl-font-mono);font-size:8.5px;font-weight:500;fill:var(--cvl-ink);letter-spacing:.02em}
.cvRw-token-id-s{display:none;font-size:11px}
.cvRw-token.is-hit rect{stroke:var(--cvl-gap);fill:#FFE3D1}

.cvRw-hud{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 20px;margin-top:6px;
  font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.04em;color:var(--cvl-dark-muted);
}
.cvRw-mode{
  display:inline-block;padding-right:20px;border-right:1px solid var(--cvl-dark-line);
  text-transform:uppercase;letter-spacing:.12em;color:var(--cvl-dark-blue);font-weight:500;
  transition:opacity .25s ease,transform .25s var(--cvl-ease-out),color .3s ease;
}
.cvRw[data-act="2"] .cvRw-mode{color:var(--cvl-dark-blue-bright)}
.cvRw-stat b{font-weight:500;color:var(--cvl-white);font-variant-numeric:tabular-nums;display:inline-block;transition:opacity .25s ease,transform .25s var(--cvl-ease-out)}
.cvRw-hud .is-out{opacity:0;transform:translateY(-4px);transition:none}
.cvRw-note{
  margin:10px 0 0;min-height:1.5em;font-family:var(--cvl-font-mono);font-size:11.5px;line-height:1.5;
  color:var(--cvl-dark-body);opacity:0;transform:translateY(4px);
  transition:opacity .3s ease,transform .3s var(--cvl-ease-out);
}
.cvRw-note.is-in{opacity:1;transform:none}
.cvRw[data-act="2"] .cvRw-note{color:var(--cvl-dark-blue-bright)}

.cvRw-close{max-width:820px;padding-top:22px;border-top:1px solid var(--cvl-dark-line)}
.cvRw-close-title{
  margin:0 0 8px;font-family:var(--cvl-font-display);font-size:var(--cvl-fs-h3);font-weight:600;
  color:var(--cvl-white);line-height:1.3;
}
.cvRw-close-body{margin:0;font-size:15px;color:var(--cvl-dark-body);line-height:1.55}
.cvRw-replay{
  display:inline-flex;align-items:center;gap:7px;margin-top:18px;padding:7px 11px;
  border:1px solid var(--cvl-dark-line);border-radius:var(--cvl-radius-control);background:none;
  font-family:var(--cvl-font-mono);font-size:11.5px;letter-spacing:.04em;color:var(--cvl-dark-muted);cursor:pointer;
  transition:color var(--cvl-dur-ui) ease,border-color var(--cvl-dur-ui) ease;
}
.cvRw-replay[hidden]{display:none}
.cvRw-replay svg{width:12px;height:12px}
.cvRw-replay:hover{color:var(--cvl-white);border-color:var(--cvl-dark-line-strong)}

/* Intro: stations, links and HUD fade in on --d once the run starts. */
html.js .cvRw .cvRw-f{opacity:0}
html.js .cvRw[data-run="1"] .cvRw-f{animation:cvlFade .4s ease forwards;animation-delay:var(--d,0s)}
html.js .cvRw .cvRw-trail{stroke-dashoffset:1}
html.js .cvRw .cvRw-token{opacity:0;transition:opacity .35s ease .4s}
html.js .cvRw[data-run="1"] .cvRw-token{opacity:1}
html.js .cvRw .cvRw-close{opacity:0;transform:translateY(8px);transition:opacity var(--cvl-dur-reveal) var(--cvl-ease-out),transform var(--cvl-dur-reveal) var(--cvl-ease-out)}
html.js .cvRw[data-done="1"] .cvRw-close{opacity:1;transform:none}

@media (min-width:1080px){
  .cvRw-body{grid-template-columns:minmax(0,820px) minmax(240px,1fr);gap:40px;align-items:center}
  .cvRw-close{border-top:0;border-left:1px solid var(--cvl-dark-line-strong);padding:0 0 0 28px;max-width:none}
}
@media (max-width:640px){
  .cvRw{--rw-s:1.5}
  .cvRw-station text{font-size:13px}
  .cvRw-station circle{stroke-width:2.5}
  .cvRw-token-in{transform:scale(1.2)}
  .cvRw-token-id{display:none}
  .cvRw-token-id-s{display:block}
  .cvRw-track,.cvRw-through,.cvRw-link-open,.cvRw-link-closed{stroke-width:2.5}
  .cvRw-trail{stroke-width:2}
  .cvRw-hud{font-size:10.5px;gap:6px 14px}
  .cvRw-mode{padding-right:14px}
  .cvRw-note{font-size:11px}
}
@media (prefers-reduced-motion:reduce){
  html.js .cvRw .cvRw-f,html.js .cvRw .cvRw-token{animation:none;opacity:1;transition:none}
  html.js .cvRw .cvRw-close{opacity:1;transform:none;transition:none}
  .cvRw-link.is-closed .cvRw-link-dot,.cvRw-link.is-hit .cvRw-link-dot{animation:none}
  .cvRw-link-closed,.cvRw-ok,.cvRw-note,.cvRw-mode,.cvRw-stat b,.cvRw-trail{transition:none}
}

/* ================================================================== */
/* #offer — the only card group on the page                            */
/* ================================================================== */
.cvOffer-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--cvl-border);border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);
  overflow:hidden;
}
.cvOffer-item{
  display:flex;flex-direction:column;background:var(--cvl-white);padding:28px 26px 26px;
  transition:background var(--cvl-dur-ui) ease;
}
.cvOffer-item:hover{background:var(--cvl-surface)}

/* Card visuals: strip (platform), chain (engineers), timeline (Arc).
   Each draws once the card reveals; --i staggers the parts. */
.cvOffer-viz,.cvOffer-chain,.cvOffer-timeline{margin:0 0 22px;padding:14px 0 0;border-top:1px solid var(--cvl-hair)}
.cvOffer-viz .cvl-strip-bar{height:12px}
html.js .cvOffer-item .cvl-strip-seg{transform:scaleX(0);transition:transform .7s var(--cvl-ease-out)}
html.js .cvOffer-item .cvl-strip-seg.partial{transition-delay:.45s}
html.js .cvOffer-item .cvl-strip-seg.gap{transition-delay:.6s}
html.js .cvOffer-item[data-in="1"] .cvl-strip-seg{transform:scaleX(1)}
.cvOffer-viz-meta{display:flex;justify-content:space-between;gap:12px;margin-top:10px;font-family:var(--cvl-font-mono);font-size:11.5px;letter-spacing:.03em;color:var(--cvl-slate)}
.cvOffer-viz-meta b{font-weight:500;color:var(--cvl-ink)}
.cvOffer-viz-meta .gap,.cvOffer-viz-meta .gap b{color:var(--cvl-gap-text)}

.cvOffer-chain{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;position:relative}
.cvOffer-chain::before{content:"";position:absolute;left:6px;right:6px;top:19px;height:1px;background:var(--cvl-border-strong);transform-origin:left center}
html.js .cvOffer-chain::before{transform:scaleX(0);transition:transform .8s var(--cvl-ease-out) .15s}
html.js .cvOffer-item[data-in="1"] .cvOffer-chain::before{transform:scaleX(1)}
.cvOffer-chain li{position:relative;padding-top:24px;min-width:0}
.cvOffer-chain li::before{content:"";position:absolute;left:0;top:14px;width:11px;height:11px;border-radius:50%;background:var(--cvl-white);border:1.5px solid var(--cvl-blue)}
.cvOffer-chain li:nth-child(2)::before{background:var(--cvl-blue)}
html.js .cvOffer-chain li::before{transform:scale(.4);opacity:0;transition:transform .4s var(--cvl-ease-out),opacity .3s ease;transition-delay:calc(.25s + var(--i,0) * .22s)}
html.js .cvOffer-item[data-in="1"] .cvOffer-chain li::before{transform:none;opacity:1}
.cvOffer-chain b{display:block;font-size:13px;font-weight:500;color:var(--cvl-ink);line-height:1.3}
.cvOffer-chain span{display:block;font-family:var(--cvl-font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--cvl-muted);margin-top:2px}

.cvOffer-timeline{list-style:none;display:flex;flex-direction:column;gap:8px}
.cvOffer-timeline li{display:grid;grid-template-columns:44px minmax(0,1fr);gap:2px 12px;align-items:center;font-size:12.5px}
.cvOffer-timeline .k{font-family:var(--cvl-font-mono);font-size:10.5px;letter-spacing:.06em;color:var(--cvl-muted);grid-row:span 2}
.cvOffer-timeline .v{color:var(--cvl-ink);font-weight:500;line-height:1.3}
.cvOffer-timeline i{display:block;height:5px;border-radius:2px;background:var(--cvl-blue-200);width:calc(var(--w,.5) * 100%);transform-origin:left center}
.cvOffer-timeline li:nth-child(2) i{background:var(--cvl-blue)}
.cvOffer-timeline li:last-child i{background:var(--cvl-ink)}
html.js .cvOffer-timeline i{transform:scaleX(0);transition:transform .7s var(--cvl-ease-out);transition-delay:calc(.2s + var(--i,0) * .25s)}
html.js .cvOffer-item[data-in="1"] .cvOffer-timeline i{transform:scaleX(1)}
.cvOffer-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:22px}
.cvOffer-idx{font-family:var(--cvl-font-mono);font-size:12px;letter-spacing:.08em;color:var(--cvl-muted)}
.cvOffer-link{width:44px;height:12px;overflow:visible}
.cvOffer-link line{stroke:var(--cvl-blue-100);stroke-width:1.5}
.cvOffer-link circle{fill:var(--cvl-white);stroke:var(--cvl-blue-100);stroke-width:1.5;transition:fill var(--cvl-dur-stage) ease,stroke var(--cvl-dur-stage) ease}
.cvOffer-link circle.is-on{fill:var(--cvl-blue);stroke:var(--cvl-blue)}
.cvOffer-item:hover .cvOffer-link line{stroke:var(--cvl-blue-300)}
.cvOffer-item h3{margin:0 0 10px;font-family:var(--cvl-font-display);font-size:var(--cvl-fs-h3);font-weight:600;letter-spacing:-.015em;line-height:1.2}
.cvOffer-item p{margin:0 0 22px;color:var(--cvl-slate);font-size:15px;line-height:1.55;flex:1}
@media (max-width:900px){
  .cvOffer-grid{grid-template-columns:1fr}
}

/* ================================================================== */
/* #how-it-works — stepper on the shared clock                         */
/* ================================================================== */
.cvHiw-grid{display:grid;grid-template-columns:minmax(220px,250px) minmax(0,1fr);gap:20px;align-items:start}
.cvHiw-rail{display:flex;align-items:stretch;min-width:0}
.cvHiw-railSvg{width:42px;flex-shrink:0;align-self:stretch}
.cvHiw-railSvg svg{display:block;width:42px;height:100%}
.cvHiw-track{stroke:var(--cvl-border)}
.cvHiw-fwd{stroke:var(--cvl-blue);transition:stroke-dashoffset var(--cvl-dur-stage) var(--cvl-ease-out)}
.cvHiw-back{stroke:var(--cvl-blue-300);transition:stroke-dashoffset .9s var(--cvl-ease-out)}
.cvHiw-backArrow{stroke:var(--cvl-blue-300);transition:opacity var(--cvl-dur-stage) ease .8s}
.cvHiw-node{fill:var(--cvl-border);transition:fill var(--cvl-dur-stage) ease}
.cvHiw-node[data-on="1"]{fill:var(--cvl-blue)}
.cvHiw-steps{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cvHiw-step{
  display:flex;gap:11px;align-items:flex-start;min-height:52px;padding:8px 11px;border-radius:var(--cvl-radius-control);
  cursor:pointer;transition:background var(--cvl-dur-stage) ease;border:0;background:none;width:100%;
  text-align:left;font-family:inherit;color:inherit;
}
.cvHiw-step[data-on="1"]{background:var(--cvl-blue-50)}
.cvHiw-step:hover .cvHiw-t{color:var(--cvl-ink)}
.cvHiw-num{
  font-family:var(--cvl-font-mono);font-size:11px;color:var(--cvl-blue-200);transition:color var(--cvl-dur-stage) ease;
  line-height:1.35;padding-top:1px;flex:0 0 auto;
}
.cvHiw-step[data-on="1"] .cvHiw-num{color:var(--cvl-blue)}
.cvHiw-t{font-size:13.5px;font-weight:500;color:var(--cvl-muted);transition:color var(--cvl-dur-stage) ease;line-height:1.3}
.cvHiw-step[data-on="1"] .cvHiw-t{color:var(--cvl-ink)}
.cvHiw-d{font-size:11.5px;color:var(--cvl-muted);display:block;margin-top:2px;line-height:1.35}

.cvHiw-stage{position:relative;min-height:400px;min-width:0;overflow:hidden;border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);background:var(--cvl-surface)}
.cvHiw-panel{padding:22px 24px}
.cvHiw-panel{
  position:absolute;inset:0;
  opacity:0;visibility:hidden;transform:translateY(6px);
  transition:opacity var(--cvl-dur-stage) var(--cvl-ease-out),transform var(--cvl-dur-stage) var(--cvl-ease-out),visibility 0s linear var(--cvl-dur-stage);
  pointer-events:none;overflow:auto;z-index:0;
}
.cvHiw-panel[data-on="1"]{
  opacity:1;visibility:visible;transform:none;
  transition:opacity var(--cvl-dur-stage) var(--cvl-ease-out),transform var(--cvl-dur-stage) var(--cvl-ease-out),visibility 0s linear 0s;
  pointer-events:auto;z-index:1;
}
.cvHiw-act{
  font-family:var(--cvl-font-mono);font-size:9.5px;letter-spacing:.06em;
  color:var(--cvl-muted);margin-bottom:8px;text-transform:uppercase;line-height:1.4;overflow-wrap:anywhere;
}
.cvHiw-cap{font-size:12.5px;color:var(--cvl-slate);line-height:1.5;margin-top:11px}
.cvHiw-card{border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-control);background:var(--cvl-white);padding:9px 11px;min-width:0}
.cvHiw-id{font-family:var(--cvl-font-mono);font-size:10.5px;color:var(--cvl-blue);word-break:break-word}
.cvHiw-chip{
  font-family:var(--cvl-font-mono);font-size:9.5px;padding:3px 7px;border-radius:3px;
  background:var(--cvl-blue-50);color:var(--cvl-blue);display:inline-block;white-space:nowrap;
}
.cvHiw-jp{font-family:var(--cvl-font-jp)}
.cvHiw-doc{border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);background:var(--cvl-white);overflow:hidden}
.cvHiw-docHead{
  display:flex;justify-content:space-between;gap:10px;padding:7px 13px;
  border-bottom:1px solid var(--cvl-hair);background:var(--cvl-surface);
  font-family:var(--cvl-font-mono);font-size:9.5px;
}
.cvHiw-docHead .muted{color:var(--cvl-muted)}
.cvHiw-docHead .src{color:var(--cvl-blue)}
.cvHiw-docBody{position:relative;overflow:hidden;padding:13px 15px}
.cvHiw-docText{position:relative;font-size:13px;line-height:1.7;color:var(--cvl-ink)}
.cvHiw-quote{font-size:12px;color:var(--cvl-muted);line-height:1.6;padding:8px 11px;background:var(--cvl-surface);border-radius:var(--cvl-radius-control)}
.cvHiw-quote .mark{color:var(--cvl-blue)}
.cvHiw-fork{position:relative;height:26px}
.cvHiw-fork .stem{position:absolute;left:50%;top:0;width:2px;height:11px;background:var(--cvl-blue-100);transform-origin:top}
.cvHiw-fork .bar{position:absolute;left:25%;right:25%;top:11px;height:2px;background:var(--cvl-blue-100);transform-origin:center}
.cvHiw-fork .leg{position:absolute;top:11px;width:2px;height:15px;background:var(--cvl-blue-100);transform-origin:top}
.cvHiw-fork .leg-l{left:25%}
.cvHiw-fork .leg-r{left:75%}
.cvHiw-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}
.cvHiw-subj{font-size:12.5px;color:var(--cvl-ink);margin-top:3px;line-height:1.35;overflow-wrap:anywhere}
.cvHiw-topic{font-size:11.5px;color:var(--cvl-slate);margin-top:3px;line-height:1.35}
.cvHiw-linkRow{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;gap:0 6px;margin-bottom:8px;min-width:0}
.cvHiw-linkRow:last-of-type{margin-bottom:0}
.cvHiw-linkLine{height:2px;background:var(--cvl-blue-100);transform-origin:left}
.cvHiw-attachCard{background:var(--cvl-blue-50);border-color:var(--cvl-blue-100)}
.cvHiw-recall{border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);background:var(--cvl-surface);padding:11px 13px;margin-bottom:9px}
.cvHiw-recallHead{font-family:var(--cvl-font-mono);font-size:9.5px;color:var(--cvl-muted);letter-spacing:.06em;margin-bottom:7px;text-transform:uppercase}
.cvHiw-recallItem{display:flex;align-items:center;gap:7px;margin-bottom:4px}
.cvHiw-recallItem:last-of-type{margin-bottom:8px}
.cvHiw-recallDot{width:5px;height:5px;border-radius:50%;background:var(--cvl-blue-300);flex-shrink:0}
.cvHiw-recallItem span:last-child{font-size:12px;color:var(--cvl-slate)}
.cvHiw-recallNote{font-size:12.5px;color:var(--cvl-blue);border-top:1px solid var(--cvl-border);padding-top:8px}
.cvHiw-new{border-color:var(--cvl-gap);border-width:1.5px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cvHiw-new .cvHiw-id{color:var(--cvl-gap-text)}
.cvHiw-new .subj{flex:1 1 140px;font-size:12.5px;color:var(--cvl-ink);min-width:0;line-height:1.35}
.cvHiw-chip.gap{background:var(--cvl-white);color:var(--cvl-gap-text);border:1.5px dashed var(--cvl-gap)}
.cvHiw-chip.ok{background:var(--cvl-blue);color:var(--cvl-white)}
.cvHiw-table{border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);overflow:hidden;min-width:0}
.cvHiw-tableHead,.cvHiw-tableRow{display:grid;grid-template-columns:118px minmax(0,1fr) 118px;gap:10px;align-items:center}
.cvHiw-tableHead{
  padding:7px 12px;background:var(--cvl-surface);border-bottom:1px solid var(--cvl-border);
  font-family:var(--cvl-font-mono);font-size:9px;color:var(--cvl-muted);letter-spacing:.07em;text-transform:uppercase;
}
.cvHiw-tableHead .r,.cvHiw-tableRow .r{text-align:right}
.cvHiw-tableRow{padding:9px 12px;border-bottom:1px solid var(--cvl-hair)}
.cvHiw-tableRow:last-child{border-bottom:none}
.cvHiw-tableRow.is-gap{border-left:3px solid var(--cvl-gap)}
.cvHiw-tableRow.is-gap .cvHiw-id{color:var(--cvl-gap-text)}
.cvHiw-tableRow .subj{font-size:12.5px;color:var(--cvl-ink);line-height:1.35;min-width:0;overflow-wrap:anywhere}

.cvHiw-legend{
  margin-top:20px;padding-top:15px;border-top:1px solid var(--cvl-border);
  opacity:.55;transition:opacity var(--cvl-dur-reveal) ease .4s;
}
.cvHiw[data-traced="1"] .cvHiw-legend{opacity:1}
.cvHiw-legendGrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:center}
.cvHiw-legendLine{display:flex;align-items:baseline;gap:9px;margin-bottom:5px}
.cvHiw-legendLine:last-child{margin-bottom:0}
.cvHiw-legendArrow{font-family:var(--cvl-font-mono);font-size:12px;line-height:1}
.cvHiw-legendArrow.fwd{color:var(--cvl-blue)}
.cvHiw-legendArrow.bak{color:var(--cvl-blue-300)}
.cvHiw-legendText{font-size:12.5px;color:var(--cvl-slate)}
.cvHiw-legendText strong{color:var(--cvl-ink);font-weight:500}
.cvHiw-legendPunch{font-family:var(--cvl-font-display);font-size:var(--cvl-fs-h3);font-weight:600;color:var(--cvl-ink);line-height:1.3}

/* Three virtual engineers (folded in from the former #virtual-engineers) */
.cvHiw-roles{margin-top:clamp(40px,6vw,64px);padding-top:28px;border-top:1px solid var(--cvl-border)}
.cvHiw-roles-title{margin:0 0 24px;font-size:15px;color:var(--cvl-slate);max-width:62ch;line-height:1.55}
.cvHiw-roles-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(20px,3vw,40px)}
.cvHiw-roles-list li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:4px 12px;align-items:start}
.cvHiw-roles-ic{width:20px;height:20px;color:var(--cvl-blue);grid-row:span 2;margin-top:1px}
.cvHiw-roles-list b{font-size:15px;font-weight:500;color:var(--cvl-ink);line-height:1.3}
.cvHiw-roles-list span{font-size:14px;color:var(--cvl-slate);line-height:1.5}

/* Panel choreography — transforms and opacity only */
@keyframes cvSweep{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes cvPop{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}
@keyframes cvRise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes cvGX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes cvGY{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes cvPulse{0%,100%{background:var(--cvl-white)}45%{background:var(--cvl-gap-tint)}}
.cvSweep{position:absolute;inset:0;background:var(--cvl-blue-50);transform:scaleX(0);transform-origin:left center}
.cvHiw-panel[data-on="1"] .cvSweep{animation:cvSweep 1.1s var(--cvl-ease-out) forwards}
.cvHiw-panel[data-on="1"] .cvPop{animation:cvPop .45s var(--cvl-ease-out) backwards}
.cvHiw-panel[data-on="1"] .cvRise{animation:cvRise .5s var(--cvl-ease-out) backwards}
.cvHiw-panel[data-on="1"] .cvGX{animation:cvGX .35s var(--cvl-ease-out) .15s backwards}
.cvHiw-panel[data-on="1"] .cvGY{animation:cvGY .3s var(--cvl-ease-out) backwards}
.cvHiw-panel[data-on="1"] .cvGap{animation:cvPulse 1.3s ease .3s}

@media (max-width:760px){
  .cvHiw-grid{grid-template-columns:1fr;gap:24px}
  .cvHiw-legendGrid{grid-template-columns:1fr;gap:14px}
  .cvHiw-railSvg{display:none}
  .cvHiw-steps{display:flex;flex-direction:row;gap:6px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px;scroll-snap-type:x proximity}
  .cvHiw-steps::-webkit-scrollbar{display:none}
  .cvHiw-step{min-height:44px;height:auto;flex:0 0 auto;min-width:124px;flex-direction:column;align-items:flex-start;padding:9px 12px;gap:3px;scroll-snap-align:center}
  .cvHiw-d{display:none}
  .cvHiw-stage{min-height:0;overflow:visible}
  .cvHiw-panel{position:relative;inset:auto;display:none;transform:none;overflow:visible;transition:none}
  .cvHiw-panel[data-on="1"]{display:block;animation:cvRise var(--cvl-dur-stage) var(--cvl-ease-out) both}
  .cvHiw-linkRow{grid-template-columns:minmax(0,1fr);gap:6px}
  .cvHiw-linkLine{display:none}
  .cvHiw-tableHead,.cvHiw-tableRow{grid-template-columns:minmax(0,1.1fr) minmax(0,1.4fr) auto}
  .cvHiw-roles-list{grid-template-columns:1fr;gap:18px}
}
@media (max-width:480px){
  .cvHiw-step{min-width:108px;padding:8px 10px}
  .cvHiw-num{font-size:10px}
}
@media (prefers-reduced-motion:reduce){
  .cvHiw-panel,.cvSweep,.cvPop,.cvRise,.cvGX,.cvGY,.cvGap,.cvHiw-node,.cvHiw-fwd,.cvHiw-back{animation:none !important;transition:none !important}
  .cvSweep{transform:scaleX(1)}
  .cvHiw-legend{opacity:1;transition:none}
  html.js .cvOffer-item .cvl-strip-seg,html.js .cvOffer-chain::before,html.js .cvOffer-chain li::before,html.js .cvOffer-timeline i{transform:none;opacity:1;transition:none}
}

/* ================================================================== */
/* #demos — proof: phase tabs, case left, coverage board right          */
/* ================================================================== */
.cvPf{background:var(--cvl-surface);border-top:1px solid var(--cvl-border);border-bottom:1px solid var(--cvl-border)}
.cvPf-shell{
  border:1px solid var(--cvl-border);border-radius:var(--cvl-radius-card);
  background:var(--cvl-white);overflow:hidden;box-shadow:var(--cvl-shadow-card);
}
.cvPf-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid var(--cvl-border);background:var(--cvl-surface)}
.cvPf-tab{
  position:relative;display:flex;align-items:baseline;justify-content:center;gap:10px;
  min-height:58px;padding:16px 12px;border:0;border-right:1px solid var(--cvl-border);
  background:transparent;color:var(--cvl-slate);font:inherit;cursor:pointer;
  transition:color var(--cvl-dur-ui) ease,background var(--cvl-dur-ui) ease;
}
.cvPf-tab:last-child{border-right:0}
.cvPf-tab:hover{color:var(--cvl-ink);background:rgba(255,255,255,.6)}
.cvPf-tab[aria-selected="true"]{background:var(--cvl-white);color:var(--cvl-ink)}
.cvPf-tab:focus-visible{outline-offset:-3px}
.cvPf-tab-k{font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.1em;color:var(--cvl-muted);transition:color var(--cvl-dur-ui) ease}
.cvPf-tab[aria-selected="true"] .cvPf-tab-k{color:var(--cvl-blue)}
.cvPf-tab-l{font-size:15px;font-weight:500;letter-spacing:-.01em}
.cvPf-tab-track{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent}
.cvPf-tab-fill{display:block;height:100%;background:var(--cvl-blue);transform:scaleX(0);transform-origin:left center}
.cvPf-tab[aria-selected="true"] .cvPf-tab-fill{transform:scaleX(1)}
.cvPf-shell.is-progressing .cvPf-tab[aria-selected="true"] .cvPf-tab-fill{animation:cvPfFill var(--pf-clock,var(--cvl-clock)) linear forwards}
@keyframes cvPfFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.cvPf-panels{padding:clamp(24px,3.5vw,36px)}
.cvPf-panel[hidden]{display:none}
.cvPf-panel{display:grid;grid-template-columns:minmax(240px,.9fr) minmax(0,1.3fr);gap:clamp(28px,4vw,48px);align-items:start}
.cvPf-case{min-width:0;display:flex;flex-direction:column}
.cvPf-case-head{display:flex;flex-direction:column;gap:4px;margin-bottom:16px}
.cvPf-phase{font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--cvl-blue)}
.cvPf-who{font-family:var(--cvl-font-mono);font-size:11px;letter-spacing:.03em;color:var(--cvl-muted);line-height:1.45}
.cvPf-headline{margin:0 0 12px;font-family:var(--cvl-font-display);font-size:clamp(22px,2.4vw,28px);font-weight:600;letter-spacing:-.02em;line-height:1.2;color:var(--cvl-ink)}
.cvPf-body{margin:0 0 18px;font-size:15px;line-height:1.6;color:var(--cvl-slate)}
.cvPf-take{margin:0;padding:16px 0;border-top:1px solid var(--cvl-border);font-size:15px;color:var(--cvl-slate);line-height:1.5}
.cvPf-take b{color:var(--cvl-ink);font-weight:500}
.cvPf-take-gap{font-family:var(--cvl-font-mono);font-size:13px;letter-spacing:.02em;color:var(--cvl-gap-text);font-weight:500}
.cvPf-outcome{
  margin:0;padding-top:16px;border-top:1px solid var(--cvl-border);
  display:flex;align-items:flex-start;gap:10px;font-size:14px;font-weight:500;line-height:1.5;color:var(--cvl-blue);
}
.cvPf-outcome svg{width:14px;height:14px;flex:0 0 auto;margin-top:4px}

/* Panel enter: case and board rise, rows stagger via --i */
.cvPf-panel.is-enter .cvPf-case{animation:cvRise var(--cvl-dur-stage) var(--cvl-ease-out) both}
.cvPf-panel.is-enter .cvl-board{animation:cvRise var(--cvl-dur-stage) var(--cvl-ease-out) .06s both}
.cvPf-panel.is-enter .cvl-board li{animation:cvRise var(--cvl-dur-stage) var(--cvl-ease-out) both;animation-delay:calc(.1s + var(--i,0) * var(--cvl-stagger))}

/* Closing strip */
.cvPf-solve{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 24px;
  padding:18px clamp(20px,3vw,28px);background:var(--cvl-blue);color:#fff;
}
.cvPf-solve-text{display:flex;align-items:center;gap:14px;min-width:0}
.cvPf-solve .mark{width:28px;height:28px;flex:0 0 auto}
.cvPf-solve-title{font-family:var(--cvl-font-display);font-size:19px;font-weight:600;line-height:1.2}
.cvPf-solve-sub{font-size:14px;color:var(--cvl-blue-200);margin-top:3px}
.cvPf-solve .btn-primary{background:#fff;color:var(--cvl-blue)}
.cvPf-solve .btn-primary:hover{background:var(--cvl-blue-50);box-shadow:none}

@media (max-width:860px){
  .cvPf-panel{grid-template-columns:1fr;gap:22px}
  .cvPf-tab{min-height:52px;padding:12px 10px}
  .cvPf-tab-l{font-size:13px}
}
@media (max-width:720px){
  .aspice-trace li{grid-template-columns:1fr;gap:8px}
  .aspice-trace li .a-arrow{display:none}
  .aspice-trace li .a-badge{justify-self:start}
}
@media (max-width:640px){
  .cvPf-tab{flex-direction:column;align-items:center;gap:4px;min-height:64px;padding:12px 8px}
  .cvPf-tab-l{text-align:center}
  .un-list{grid-template-columns:1fr}
  .pass-list li{grid-template-columns:1fr;gap:6px}
  .pass-list .p-val{text-align:left}
  .cvPf-solve{flex-direction:column;align-items:stretch}
  .cvPf-solve .btn{width:100%}
}
@media (prefers-reduced-motion:reduce){
  .cvPf-panel.is-enter .cvPf-case,
  .cvPf-panel.is-enter .cvl-board,
  .cvPf-panel.is-enter .cvl-board li,
  .cvPf-shell.is-progressing .cvPf-tab[aria-selected="true"] .cvPf-tab-fill{animation:none !important}
}

/* ================================================================== */
/* #about — dark: founders left, FAQ right                             */
/* ================================================================== */
.cvAb{overflow:hidden}
.cvAb-shell{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(0,1.2fr);gap:clamp(36px,5vw,72px);align-items:start}
.cvAb-intro{position:sticky;top:calc(var(--cvl-header-h) + 28px)}
.cvAb-intro .cvl-h2{max-width:12ch}
.cvAb-intro .cvl-lead{max-width:38ch}
.cvAb-founders{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(16px,2.5vw,28px);margin-top:32px;max-width:400px}
.cvAb-person{min-width:0}
.cvAb-shot{margin:0 0 12px;border-radius:var(--cvl-radius-card);overflow:hidden;background:rgba(255,255,255,.06);aspect-ratio:4 / 5}
.cvAb-shot img{width:100%;height:100%;object-fit:cover;object-position:center;transition:transform .8s var(--cvl-ease-out)}
.cvAb-person:hover .cvAb-shot img{transform:scale(1.03)}
.cvAb-person h3{margin:0 0 3px;font-family:var(--cvl-font-display);font-size:18px;font-weight:600;letter-spacing:-.015em;color:var(--cvl-white)}
.cvAb-role{margin:0;font-family:var(--cvl-font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--cvl-dark-muted);line-height:1.45}
.cvAb-more{margin:24px 0 0}

.cvAb-faq{display:flex;flex-direction:column;border-top:1px solid var(--cvl-dark-line-strong)}
.cvAb-item{margin:0;border:0;border-bottom:1px solid var(--cvl-dark-line);background:transparent;padding:0}
.cvAb-item summary{
  display:grid;grid-template-columns:44px minmax(0,1fr) 28px;gap:14px;align-items:start;
  cursor:pointer;list-style:none;padding:22px 4px 22px 0;color:var(--cvl-white);
}
.cvAb-item summary::-webkit-details-marker{display:none}
.cvAb-item summary:focus-visible{outline-offset:-2px}
.cvAb-idx{font-family:var(--cvl-font-mono);font-size:12px;letter-spacing:.08em;color:var(--cvl-dark-muted);padding-top:5px;transition:color var(--cvl-dur-ui) ease}
.cvAb-q{font-family:var(--cvl-font-display);font-size:clamp(18px,2.1vw,22px);line-height:1.25;letter-spacing:-.015em;font-weight:600;transition:color var(--cvl-dur-ui) ease}
.cvAb-item summary::after{
  content:"";width:10px;height:10px;margin-top:8px;justify-self:end;
  border-right:1.5px solid rgba(255,255,255,.55);border-bottom:1.5px solid rgba(255,255,255,.55);
  transform:rotate(45deg);transition:transform var(--cvl-dur-stage) var(--cvl-ease-ui),border-color var(--cvl-dur-ui) ease;
}
.cvAb-item[open] summary::after{transform:rotate(-135deg) translate(-3px,-3px);border-color:var(--cvl-dark-blue-bright)}
.cvAb-item[open] .cvAb-idx{color:var(--cvl-dark-blue-bright)}
.cvAb-item summary:hover .cvAb-q{color:var(--cvl-dark-blue-bright)}
.cvAb-a{padding:0 28px 22px 58px}
.cvAb-a p{margin:0;color:var(--cvl-dark-body);font-size:15px;line-height:1.6;max-width:54ch}
.cvAb-a a{color:var(--cvl-dark-blue-bright);text-decoration:underline;text-underline-offset:3px}
/* Answer enters with opacity + transform via @starting-style; no layout animation. */
.cvAb-item[open] .cvAb-a p{
  opacity:1;transform:none;
  transition:opacity var(--cvl-dur-stage) var(--cvl-ease-out),transform var(--cvl-dur-stage) var(--cvl-ease-out);
}
@starting-style{
  .cvAb-item[open] .cvAb-a p{opacity:0;transform:translateY(6px)}
}

/* ================================================================== */
/* #resources — three columns with hub links                           */
/* ================================================================== */
.cvRes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(24px,4vw,56px)}
.cvRes-col{display:flex;flex-direction:column;border-top:1px solid var(--cvl-ink);padding-top:18px}
.cvRes-col-h{margin:0 0 14px;font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);letter-spacing:.14em;text-transform:uppercase;color:var(--cvl-muted)}
.cvRes-list{list-style:none;margin:0 0 22px;padding:0;flex:1}
.cvRes-list li{border-bottom:1px solid var(--cvl-border)}
.cvRes-list a{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 0;font-family:var(--cvl-font-display);font-size:clamp(17px,1.7vw,19px);font-weight:600;letter-spacing:-.015em;line-height:1.3;color:var(--cvl-ink);
  transition:color var(--cvl-dur-ui) ease;
}
.cvRes-list a::after{
  content:"";width:8px;height:8px;flex:0 0 auto;border-top:1.5px solid var(--cvl-border-strong);border-right:1.5px solid var(--cvl-border-strong);
  transform:rotate(45deg);transition:transform var(--cvl-dur-ui) var(--cvl-ease-ui),border-color var(--cvl-dur-ui) ease;
}
.cvRes-list a:hover{color:var(--cvl-blue)}
.cvRes-list a:hover::after{transform:rotate(45deg) translate(2px,-2px);border-color:var(--cvl-blue)}

@media (max-width:900px){
  .cvAb-shell{grid-template-columns:1fr;gap:36px}
  .cvAb-intro{position:static}
  .cvAb-founders{max-width:360px}
  .cvAb-a{padding-left:58px;padding-right:8px}
  .cvRes-grid{grid-template-columns:1fr;gap:32px}
}
@media (max-width:480px){
  .cvAb-item summary{grid-template-columns:34px 1fr 20px;gap:10px;padding:18px 0}
  .cvAb-q{font-size:17px}
  .cvAb-a{padding-left:44px}
  .cvAb-founders{grid-template-columns:1fr 1fr;gap:14px}
}
@media (prefers-reduced-motion:reduce){
  .cvAb-item[open] .cvAb-a p{transition:none}
  .cvAb-person:hover .cvAb-shot img{transform:none}
}
