/* Cevelar: Virtual engineers (ported from VirtualEngineers.jsx) */
.cvVE{
  --ve-blue:#14396E;
  --ve-blue-mid:#7FA0C6;
  --ve-blue-soft:#9BB6D6;
  --ve-blue-line:#C7D5E9;
  --ve-blue-50:#EDF2F9;
  --ve-ink:#0E1520;
  --ve-slate:#4C5766;
  --ve-muted:#8A94A2;
  --ve-faint:#A8BBD6;
  --ve-border:#E2E6EC;
  --ve-gap:#FF7514;
  --ve-gap-text:#A83F00;
  --ve-step-ms:3400ms;
  padding:var(--cvl-sec-pad) 0;
  font-family:var(--cvl-font-sans);
}
.cvVE *,.cvVE *::before,.cvVE *::after{box-sizing:border-box}
.cvVE-label{
  margin:0 0 10px;
  font-family:var(--cvl-font-mono);font-size:var(--cvl-fs-label);color:var(--ve-muted);
  letter-spacing:.1em;text-transform:uppercase;
}
.cvVE-title{
  margin:0 0 12px;font-family:var(--cvl-font-display);font-size:var(--cvl-fs-h2);font-weight:600;
  color:var(--ve-ink);letter-spacing:-.02em;line-height:1.1;
}
.cvVE-lead{
  margin:0 0 26px;font-size:var(--cvl-fs-lead);color:var(--ve-slate);max-width:52ch;line-height:1.5;
}
.cvVE-grid{
  display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);
  gap:20px;align-items:start;
}
.cvVE-diagram{display:block;width:100%;overflow:visible}
.cvVE-g{opacity:.13;transition:opacity .5s ease}
.cvVE-g[data-on="1"]{opacity:1}
.cvVE-side{min-width:0}
.cvVE-row{
  position:relative;overflow:hidden;display:flex;gap:10px;align-items:center;
  padding:9px 10px 11px;border-radius:5px;cursor:pointer;transition:background .3s;
  border:0;background:none;width:100%;text-align:left;font-family:inherit;color:inherit;
}
.cvVE-row[data-on="1"],.cvVE-row[data-on="4"]{background:var(--ve-blue-50)}
.cvVE-row:focus-visible{outline:2px solid var(--ve-blue);outline-offset:2px}
.cvVE-ic{
  width:20px;height:20px;flex-shrink:0;color:var(--ve-faint);
  transition:color .35s,transform .35s;
}
.cvVE-row[data-on="1"] .cvVE-ic{color:var(--ve-blue);transform:scale(1.12)}
.cvVE-row[data-on="4"] .cvVE-ic{color:var(--ve-gap);transform:scale(1.12)}
.cvVE-nm{
  font-size:12.5px;font-weight:500;color:var(--ve-muted);
  transition:color .3s;line-height:1.25;
}
.cvVE-row[data-on="1"] .cvVE-nm,.cvVE-row[data-on="4"] .cvVE-nm{color:var(--ve-ink)}
.cvVE-tg{
  font-family:var(--cvl-font-mono);font-size:8.5px;letter-spacing:.08em;
  color:var(--ve-faint);margin-left:auto;flex-shrink:0;transition:color .3s;
  text-transform:uppercase;
}
.cvVE-row[data-on="1"] .cvVE-tg{color:var(--ve-blue-mid)}
.cvVE-row[data-on="4"] .cvVE-tg{color:var(--ve-gap)}
.cvVE-bar{
  position:absolute;left:0;bottom:0;height:2px;width:100%;
  transform:scaleX(0);transform-origin:left center;background:var(--ve-blue);
}
.cvVE-row[data-on="1"] .cvVE-bar,
.cvVE-row[data-on="4"] .cvVE-bar{
  transform-origin:left center;
  animation:cvFill var(--ve-step-ms) linear both;
}
.cvVE-row[data-on="4"] .cvVE-bar{background:var(--ve-gap)}
.cvVE-desc{
  font-size:12.5px;color:var(--ve-slate);line-height:1.55;min-height:78px;
  margin-top:12px;padding-top:12px;border-top:1px solid var(--ve-border);
}
.cvVE-desc.in{animation:cvSlide .42s cubic-bezier(.2,.7,.3,1) both}
.cvVE-foot{
  margin-top:10px;font-size:11.5px;color:var(--ve-muted);line-height:1.5;
}
.cvVE-arm{stroke-dasharray:180;stroke-dashoffset:180}
.cvVE-g[data-on="1"] .cvVE-arm{animation:cvDrawArm .7s cubic-bezier(.3,.8,.4,1) .05s both}
.cvVE-g[data-on="1"] .cvVE-bxg{animation:cvPop .42s cubic-bezier(.2,.7,.3,1) both;transform-box:fill-box;transform-origin:center}
.cvVE-ck{stroke-dasharray:14;stroke-dashoffset:14}
.cvVE-g[data-on="1"] .cvVE-ck{animation:cvDrawCk .34s ease both}
.cvVE-g[data-on="1"] .cvVE-ray{animation:cvFade .35s ease both}
.cvVE-g[data-on="1"] .cvVE-beam{animation:cvFade .4s ease .3s both,cvScan 1.1s linear .7s infinite}
.cvVE-g[data-on="1"] .cvVE-ring{animation:cvRingIn .45s ease .6s both}
.cvVE-g[data-on="1"] .cvVE-gaplab{animation:cvFade .4s ease .95s both}
.cvVE-g[data-on="1"] .cvVE-ants{animation:cvAnts 1.6s linear infinite}
.cvVE-pL,.cvVE-pR{opacity:0}
.cvVE-g[data-on="1"] .cvVE-pL{animation:cvRunL 2.2s linear .5s infinite}
.cvVE-g[data-on="1"] .cvVE-pR{animation:cvRunR 2.2s linear .5s infinite}
@keyframes cvFill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes cvSlide{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes cvDrawArm{from{stroke-dashoffset:180}to{stroke-dashoffset:0}}
@keyframes cvDrawCk{from{stroke-dashoffset:14}to{stroke-dashoffset:0}}
@keyframes cvPop{from{opacity:0;transform:scale(.82)}to{opacity:1;transform:none}}
@keyframes cvFade{from{opacity:0}to{opacity:1}}
@keyframes cvRingIn{from{opacity:0}to{opacity:1}}
@keyframes cvScan{to{stroke-dashoffset:-30}}
@keyframes cvAnts{to{stroke-dashoffset:-20}}
@keyframes cvRunL{0%{transform:translate(0,0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translate(90px,155px);opacity:0}}
@keyframes cvRunR{0%{transform:translate(0,0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translate(90px,-155px);opacity:0}}

@media (max-width:820px){
  .cvVE-grid{grid-template-columns:1fr;gap:18px}
  .cvVE-diagram{
    width:min(100%, calc(280px * 420 / 340));
    max-height:none;
    height:auto;
    margin-inline:auto;
  }
  .cvVE-desc{min-height:0}
}
@media (max-width:480px){
  .cvVE-nm{font-size:12px}
  .cvVE-tg{font-size:8px}
  .cvVE-row{min-height:48px;padding:12px 10px}
}
@media (prefers-reduced-motion:reduce){
  .cvVE *{animation:none !important}
  .cvVE-arm,.cvVE-ck{stroke-dashoffset:0}
  .cvVE-pL,.cvVE-pR{display:none}
  .cvVE-g{opacity:.35}
  .cvVE-g[data-on="1"]{opacity:1}
  .cvVE-bar{transform:none}
}
