/* Scene 08 · "Đã kiểm chứng gì, còn phải làm gì." — tested capability → two business problems → the conditions for a real trial (report 3.5).
   data-k 1 table 3.3 by function group: the core is right on the tests; the four failures and the reruns sit at intake. No total, no rate.
   data-k 2 table 3.4: two LCL problems drawn to scale; why the charge bases differ; both match hand-computed answers
   data-k 3 table 3.5: five readiness conditions converge on a shut gate; none is ticked
   Groups, cases and conditions are built in app.js from PITCH_CONTENT.verify. rch1..rch3 = beats reached; data-play only on an animated entry. */
#s-pilot :is(.pv-src,.pv-a,.pv-b,.pv-c,.pv-z,.pv-arr,.pv-fn,.pv-case,.pv-ln,.pv-cv,.pv-gate,.pv-dst,.pv-ms,.pv-say){position:absolute;margin:0}
#s-pilot p{margin:0}
#s-pilot .head .h1{font-size:64px}
#s-pilot .pv-src{right:160px;top:74px;display:inline-flex;align-items:center;gap:10px;font-size:22px;font-weight:500;color:#C6D3E8;background:rgba(158,178,220,.13);padding:5px 16px 6px;border-radius:999px}
#s-pilot .pv-src::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
#s-pilot :is(.pv-a,.pv-b,.pv-c){inset:0;opacity:0;visibility:hidden;transition:opacity .45s,visibility 0s .45s,transform .7s var(--io)}

/* ---- A · tested capability by function group ---- */
#s-pilot .pv-z{top:296px;height:490px;box-sizing:border-box;padding:22px 30px;border-radius:20px}
#s-pilot .pv-zin{left:160px;width:720px;box-shadow:inset 0 0 0 2px rgba(240,166,58,.55);background:rgba(240,166,58,.045)}
#s-pilot .pv-zco{left:980px;width:780px;box-shadow:inset 0 0 0 2px rgba(143,186,255,.55);background:rgba(143,186,255,.06)}
#s-pilot .pv-zl{font-size:24px;font-weight:500;color:#C9D4E5}
#s-pilot .pv-zl b{margin-right:14px;font-size:32px;font-weight:700;letter-spacing:-.01em;color:#FFC46B}
#s-pilot .pv-zco .pv-zl b{color:#9FC2FF}
#s-pilot .pv-gs{margin-top:14px}
#s-pilot .pv-g{position:relative;padding:12px 0 13px;border-top:1px solid rgba(190,208,235,.14);opacity:0;translate:0 10px;transition:opacity .45s var(--out),translate .6s var(--out)}
#s-pilot .pv-g h3{margin:0;font-size:28px;font-weight:700;color:var(--white);line-height:1.2}
#s-pilot .pv-g .pv-n{margin-top:2px!important;display:flex;flex-wrap:wrap;column-gap:22px;align-items:baseline;font-size:22px;color:#C9D4E5}
#s-pilot .pv-g .pv-n .pv-pr{color:#8E9BB3}
#s-pilot .pv-g .pv-n .pv-pr em{color:#A9B8CF}
#s-pilot .pv-g .pv-n em{font-style:normal;font-size:32px;font-weight:700;color:var(--white);margin-right:6px;font-variant-numeric:tabular-nums}
#s-pilot .pv-zco .pv-g{padding:14px 0 15px}
#s-pilot .pv-zco .pv-g .pv-n em{font-size:40px}
#s-pilot .pv-g .pv-x{margin-top:2px!important;display:flex;align-items:center;gap:10px;font-size:22px;font-weight:600;color:#FFC46B;opacity:0;transition:opacity .4s}
#s-pilot .pv-g .pv-x::before{content:"";width:12px;height:12px;border-radius:50%;background:var(--amber)}
#s-pilot .pv-g .pv-x.pv-re{color:#E9C58F}
#s-pilot .pv-g .pv-x.pv-re::before{background:none;box-shadow:inset 0 0 0 2.5px var(--amber)}
#s-pilot .pv-arr{left:900px;top:500px;width:60px;height:46px;overflow:visible}
#s-pilot .pv-arr path{fill:none;stroke:#8FBAFF;stroke-width:5;stroke-linecap:round;stroke-linejoin:round}
#s-pilot .pv-fn{left:160px;width:1600px;top:890px;font-size:22px;line-height:1.35;color:#A9B8CF;opacity:0;transition:opacity .45s}

/* ---- B · two LCL problems ---- */
#s-pilot .pv-case{top:296px;width:740px;height:500px;opacity:0;translate:0 14px;transition:opacity .5s var(--out),translate .7s var(--out)}
#s-pilot .pv-ca{left:160px}#s-pilot .pv-cb{left:1020px}
#s-pilot .pv-ch{display:flex;align-items:center;gap:16px;font-size:32px;font-weight:700;color:var(--white)}
#s-pilot .pv-ch b{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:#F2EEE6;color:#1B2433;font-size:28px}
#s-pilot .pv-il{position:absolute;left:0;top:66px;width:740px;height:290px;overflow:visible}
#s-pilot .pv-il text{font-family:var(--f);fill:var(--white);font-size:24px;font-weight:600}
#s-pilot .pv-bx .pv-fr{fill:#F2EEE6}#s-pilot .pv-bx .pv-top{fill:#DCD6CA}#s-pilot .pv-bx .pv-sd{fill:#BDB5A6}
#s-pilot .pv-il .pv-bt{fill:#1B2433;font-size:26px;font-weight:800;text-anchor:middle}
#s-pilot .pv-il .pv-wt{font-size:24px;font-weight:600;fill:#DCE4F0;text-anchor:middle}
#s-pilot .pv-il .pv-ml{font-size:22px;fill:#A9B8CF}
#s-pilot .pv-bar{fill:#5E6F92;transform-box:fill-box;transform-origin:0 50%}
#s-pilot .pv-b1{fill:#8FBAFF}
#s-pilot .pv-il .pv-bv{font-size:26px;font-weight:700}
#s-pilot .pv-il .pv-bw{fill:#C9D4E5}
#s-pilot .pv-il .pv-rt{font-size:28px;font-weight:600;fill:#DCE4F0}
#s-pilot .pv-il .pv-rt tspan{fill:#9FC2FF;font-weight:800}
#s-pilot .pv-env path,#s-pilot .pv-env rect{fill:url(#pv-hatch);stroke:#F0A63A;stroke-width:2.5;stroke-dasharray:9 7;stroke-linejoin:round}
#s-pilot .pv-il pattern rect{fill:rgba(240,166,58,.32)}
#s-pilot .pv-env{transform-box:fill-box;transform-origin:50% 100%}
#s-pilot .pv-il .pv-et{fill:#FFC46B;font-size:28px;font-weight:800;text-anchor:middle;paint-order:stroke;stroke:#0A1326;stroke-width:6px}
#s-pilot .pv-ld{fill:none;stroke-width:3;stroke-linecap:round}
#s-pilot .pv-l1{stroke:var(--amber)}#s-pilot .pv-l2{stroke:#8FBAFF}
#s-pilot .pv-il .pv-mt{font-size:28px;font-weight:700}
#s-pilot .pv-il .pv-mv{font-size:24px;font-weight:500;fill:#C9D4E5}
#s-pilot .pv-fe{position:absolute;left:0;top:372px;font-size:24px;line-height:1.3;color:#C9D4E5}
#s-pilot .pv-tt{position:absolute;left:0;top:420px;display:flex;align-items:baseline;gap:18px}
#s-pilot .pv-tt span{font-size:48px;font-weight:800;letter-spacing:-.01em;color:var(--white);font-variant-numeric:tabular-nums}
#s-pilot .pv-tt small{display:inline-flex;align-items:center;gap:10px;font-size:24px;font-weight:600;color:#CFE0FF}
#s-pilot .pv-tt small::before{content:"";width:30px;height:30px;border-radius:50%;background:#8FBAFF center/16px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 14'%3E%3Cpath d='M1.5 7.5l5 5L16.5 1.5' fill='none' stroke='%230A1326' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
#s-pilot .pv-tt > *{opacity:0;transition:opacity .4s}
#s-pilot .pv-fnb{top:890px}

/* ---- C · five readiness conditions, one shut gate ---- */
#s-pilot .pv-ln{left:160px;top:296px;width:1160px;list-style:none;padding:0}
#s-pilot .pv-ln li{position:relative;height:92px;opacity:0;translate:-14px 0;transition:opacity .45s var(--out),translate .6s var(--out)}
#s-pilot .pv-ln li > b{position:absolute;left:0;top:14px;width:48px;height:48px;box-sizing:border-box;border-radius:50%;border:3px solid #8FBAFF;display:grid;place-items:center;font-size:24px;font-weight:700;color:var(--white)}
#s-pilot .pv-ln h3{position:absolute;left:72px;top:6px;margin:0;font-size:30px;font-weight:700;color:var(--white);white-space:nowrap}
#s-pilot .pv-ln p{position:absolute;left:72px;top:46px;font-size:22px;color:#A9B8CF;white-space:nowrap}
#s-pilot .pv-ln li > i{position:absolute;left:1112px;top:16px;width:44px;height:44px;box-sizing:border-box;border-radius:50%;border:3px solid #7E8CA6;background:#0A1326}
#s-pilot .pv-cv{left:0;top:0;width:1920px;height:1080px;overflow:visible;pointer-events:none}
#s-pilot .pv-cv path{fill:none;stroke:rgba(143,186,255,.55);stroke-width:3;stroke-linecap:round;stroke-dasharray:1 1;stroke-dashoffset:1;transition:stroke-dashoffset .8s var(--io)}
#s-pilot .pv-gate{left:1490px;top:380px;width:16px;height:300px;border-radius:8px;background:#5E6F92;opacity:0;transition:opacity .4s}
#s-pilot .pv-lock{position:absolute;left:50%;top:50%;width:46px;height:38px;margin:-12px 0 0 -23px;border-radius:8px;background:#C9D4E5}
#s-pilot .pv-lock::before{content:"";position:absolute;left:9px;top:-22px;width:28px;height:30px;box-sizing:border-box;border:5px solid #C9D4E5;border-bottom:0;border-radius:14px 14px 0 0}
#s-pilot .pv-lock::after{content:"";position:absolute;left:19px;top:12px;width:8px;height:14px;border-radius:4px;background:#0A1326}
#s-pilot .pv-dst{left:1548px;top:470px;width:220px;font-size:30px;font-weight:700;line-height:1.2;color:#7E8CA6;opacity:0;transition:opacity .45s}
#s-pilot .pv-dst small{display:block;margin-top:8px;font-size:22px;font-weight:600;color:#7E8CA6}
#s-pilot .pv-ms{left:160px;width:1600px;top:774px;white-space:nowrap;font-size:24px;line-height:1.35;color:#C9D4E5;opacity:0;transition:opacity .45s}
#s-pilot .pv-ms b{color:var(--white);font-weight:650}

/* ---- the line under each beat ---- */
#s-pilot .pv-say{left:160px;right:160px;top:832px;font-size:34px;font-weight:600;letter-spacing:-.01em;color:var(--white);opacity:0;translate:0 10px;transition:opacity .45s var(--out),translate .6s var(--out)}
#s-pilot .pv-say b{color:#FFC46B;font-weight:650}
#s-pilot .pv-s3x{top:846px}

/* ================= states ================= */
#s-pilot[data-k="1"] .pv-a,#s-pilot[data-k="2"] .pv-b,#s-pilot[data-k="3"] .pv-c{opacity:1;visibility:visible;transition:opacity .45s .2s,visibility 0s}
#s-pilot.rch2 .pv-a{transform:translateX(-60px)}
#s-pilot.rch3 .pv-b{transform:translateX(-60px)}
/* A */
#s-pilot.rch1 .pv-g{opacity:1;translate:0 0}
#s-pilot.rch1 .pv-g .pv-x{opacity:1}
#s-pilot[data-k="1"] .pv-zco .pv-g{transition-delay:calc(.35s + var(--o) * .25s)}
#s-pilot[data-k="1"] .pv-zin .pv-g{transition-delay:calc(1.2s + var(--o) * .25s)}
#s-pilot[data-k="1"] .pv-g .pv-x{transition-delay:calc(2s + var(--o) * .2s)}
#s-pilot.rch1 .pv-fn{opacity:1}
#s-pilot[data-k="1"] .pv-fn{transition-delay:2.6s}
#s-pilot[data-k="1"] .pv-s1x{opacity:1;translate:0 0;transition-delay:2.4s}
#s-pilot[data-play="1"] .pv-arr{animation:pvNudge 1.6s var(--io) .6s 2 both}
/* B */
#s-pilot.rch2 .pv-case{opacity:1;translate:0 0}
#s-pilot[data-k="2"] .pv-cb{transition-delay:1.6s}
#s-pilot[data-play="2"] .pv-ca .pv-bx{animation:pvDrop .7s var(--out) .3s both}
#s-pilot[data-play="2"] .pv-ca .pv-wt{animation:pvFade .4s .8s both}
#s-pilot[data-play="2"] .pv-b1{animation:pvGrow .6s var(--out) .9s both}
#s-pilot[data-play="2"] .pv-b2{animation:pvGrow .6s var(--out) 1.1s both}
#s-pilot[data-play="2"] .pv-ca :is(.pv-ml,.pv-bv){animation:pvFade .4s .9s both}
#s-pilot[data-play="2"] .pv-ca .pv-rt{animation:pvFade .4s 1.7s both}
#s-pilot[data-play="2"] .pv-cb .pv-bx{animation:pvDrop .7s var(--out) 1.9s both}
#s-pilot[data-play="2"] .pv-env{animation:pvRise .9s var(--out) 2.5s both}
#s-pilot[data-play="2"] .pv-cb :is(.pv-et,.pv-ld,.pv-mt,.pv-mv){animation:pvFade .45s 3.1s both}
#s-pilot[data-play="2"] .pv-cb .pv-l2,#s-pilot[data-play="2"] .pv-cb .pv-l2 ~ text{animation-delay:3.4s}
#s-pilot .pv-fe{opacity:0;transition:opacity .4s}
#s-pilot.rch2 .pv-fe,#s-pilot.rch2 .pv-tt > *{opacity:1}
#s-pilot[data-k="2"] .pv-ca .pv-fe{transition-delay:1.9s}#s-pilot[data-k="2"] .pv-ca .pv-tt > *{transition-delay:2.1s}
#s-pilot[data-k="2"] .pv-cb .pv-fe{transition-delay:3.5s}#s-pilot[data-k="2"] .pv-cb .pv-tt > *{transition-delay:3.7s}
#s-pilot.rch2 .pv-fnb{opacity:1}
#s-pilot[data-k="2"] .pv-fnb{transition-delay:3.9s}
#s-pilot[data-k="2"] .pv-s2x{opacity:1;translate:0 0;transition-delay:3.8s}
/* C */
#s-pilot.rch3 .pv-ln li{opacity:1;translate:0 0}
#s-pilot[data-k="3"] .pv-ln li{transition-delay:calc(.3s + var(--o) * .22s)}
#s-pilot.rch3 .pv-cv path{stroke-dashoffset:0}
#s-pilot[data-k="3"] .pv-cv path{transition-delay:calc(.6s + var(--o) * .22s)}
#s-pilot.rch3 :is(.pv-gate,.pv-dst,.pv-ms){opacity:1}
#s-pilot[data-k="3"] .pv-gate{transition-delay:1.7s}#s-pilot[data-k="3"] .pv-dst{transition-delay:1.9s}#s-pilot[data-k="3"] .pv-ms{transition-delay:2.6s}
#s-pilot[data-k="3"] .pv-s3x{opacity:1;translate:0 0;transition-delay:2.2s}
#s-pilot[data-play="3"] .pv-lock{animation:pvShut .5s var(--out) 2s both}

@keyframes pvNudge{0%,100%{transform:none}50%{transform:translateX(10px)}}
@keyframes pvDrop{0%{opacity:0;transform:translateY(-60px)}100%{opacity:1;transform:none}}
@keyframes pvGrow{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}
@keyframes pvRise{0%{opacity:0;transform:scaleY(.42)}100%{opacity:1;transform:none}}
@keyframes pvFade{0%{opacity:0}100%{opacity:1}}
@keyframes pvShut{0%{transform:translateY(-8px) scale(1.15)}100%{transform:none}}
/* calm: was @media (prefers-reduced-motion:reduce); body.calm is set by app.js and can be turned off */
body.calm #s-pilot *,body.calm #s-pilot *::before,body.calm #s-pilot *::after{transition:none!important;animation:none!important}
