/* Scene upgrade (21/10): pilot — layout and looks on top of the shared material (up-material.css).
   A a test-runner window: app.js's zones are its panes, every suite row gets a status light; a status bar explains the lights.
   B two crates drawn to one scale on a pallet (A on a platform scale), instruments beside them.
   C the conditions on a clipboard, amber threads to a brass padlock on the steel door of the business trial. Text ≥ 20 px. */
#s-pilot .pu-defs{position:absolute;left:0;top:0;width:0;height:0;overflow:hidden}

/* ================= A · the test runner ================= */
#s-pilot .pu-run{left:160px;top:236px;width:1600px;height:568px}
#s-pilot .pu-run>.nq-tb>b{font-size:21px}
#s-pilot .pv-a .pv-z{top:280px;height:468px;padding:0;border-radius:0;box-shadow:none}
#s-pilot .pv-a .pv-zin{left:161px;width:719px;background:#EEF1F6;box-shadow:inset -1px 0 0 #CBD3DF}
#s-pilot .pv-a .pv-zco{left:880px;width:879px;background:#F7F9FC}
#s-pilot .pv-a .pv-zl{display:flex;align-items:baseline;height:62px;box-sizing:border-box;padding:14px 26px 0;white-space:nowrap;font-size:21px;font-weight:500;color:#3E4C62;background:#E4E9F0;border-bottom:1px solid #CBD3DF}
#s-pilot .pv-a .pv-zl b{font-size:26px;letter-spacing:-.005em;color:#8A4B00}
#s-pilot .pv-a .pv-zco .pv-zl{background:#E6ECF6}
#s-pilot .pv-a .pv-zco .pv-zl b{color:#1F56C8}
#s-pilot .pv-a .pv-gs{margin-top:0}
#s-pilot .pv-a .pv-g{padding:10px 26px 10px 80px;border-top:0;border-bottom:1px solid #DCE2EA}
#s-pilot .pv-a .pv-zco .pv-g{padding:19px 26px 20px 80px}
#s-pilot .pv-a .pv-g h3{font-size:27px;color:#18212F}
#s-pilot .pv-a .pv-g .pv-n{margin-top:4px!important;column-gap:26px;font-size:21px;color:#3E4C62}
#s-pilot .pv-a .pv-g .pv-n em{font-family:var(--nq-mono);font-size:28px;font-weight:700;letter-spacing:-.03em;color:#18212F;margin-right:8px}
#s-pilot .pv-a .pv-zco .pv-g .pv-n em{font-size:34px}
/* an earlier round: dimmed, in its own dashed chip, never added to the current build */
#s-pilot .pv-a .pv-g .pv-n .pv-pr{padding:0 12px 2px;border-radius:8px;border:1.5px dashed #9AA6B8;background:#ECEFF4;color:#566275}
#s-pilot .pv-a .pv-g .pv-n .pv-pr em{font-weight:600;color:#566275}
#s-pilot .pv-a .pv-g .pv-x{margin-top:4px!important;font-size:21px;color:#8A4B00}
#s-pilot .pv-a .pv-g .pv-x::before{background:#E58E1A}
#s-pilot .pv-a .pv-g .pv-x.pv-re{color:#7A4E10}
#s-pilot .pv-a .pv-g .pv-x.pv-re::before{box-shadow:inset 0 0 0 2.5px #E58E1A}
/* the splitter handle between the panes: intake feeds the core */
#s-pilot .pv-a .pv-arr{z-index:2;left:856px;top:490px;width:48px;height:48px;box-sizing:border-box;padding:12px 9px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #C6CEDA,0 4px 10px -4px rgba(16,24,40,.4)}
#s-pilot .pv-a .pv-arr path{stroke:#2F6BE0;stroke-width:8}
/* the status lights */
#s-pilot .pu-st{position:absolute;left:28px;top:13px;width:34px;height:34px}
#s-pilot .pu-st i,#s-pilot .pu-k i{position:absolute;inset:0;border-radius:50%;box-sizing:border-box}
#s-pilot .pu-spin{opacity:0;border:3.5px solid rgba(47,107,224,.2);border-top-color:#2F6BE0}
#s-pilot .pu-pass .pu-res,#s-pilot .pu-k.pu-pass i{background:#2E8B57 center/52% 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='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");box-shadow:0 0 0 3px rgba(46,139,87,.16),inset 0 -2px 0 rgba(0,0,0,.15)}
#s-pilot .pu-fail .pu-res,#s-pilot .pu-k.pu-fail i{background:#E58E1A center/60% no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 4v8' stroke='%23fff' stroke-width='3.2' stroke-linecap='round'/%3E%3Ccircle cx='10' cy='16.2' r='1.9' fill='%23fff'/%3E%3C/svg%3E");box-shadow:0 0 0 3px rgba(229,142,26,.18),inset 0 -2px 0 rgba(0,0,0,.15)}
#s-pilot .pu-stale .pu-res,#s-pilot .pu-k.pu-stale i{background:#F7F9FC center/62% no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M15.6 11.4A6 6 0 1 1 13.8 5.3' fill='none' stroke='%23566275' stroke-width='2.4' stroke-linecap='round'/%3E%3Cpath d='M14.6 2.2v4h-4' fill='none' stroke='%23566275' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");box-shadow:inset 0 0 0 2.5px #8D99AD}
/* the window's status bar: what the lights mean */
#s-pilot .pu-bar{position:absolute;left:0;right:0;bottom:0;height:56px;display:flex;align-items:center;gap:36px;padding:0 26px;background:#E4E9F0;border-top:1px solid #C6CEDA;font-size:21px;font-weight:500;color:#3E4C62}
#s-pilot .pu-k{position:relative;padding-left:34px;white-space:nowrap}
#s-pilot .pu-k i{width:24px;height:24px;top:2px;right:auto}

/* ================= B · the cargo ================= */
#s-pilot .pv-b .pv-il{display:none}
#s-pilot .pu-floor{position:absolute;left:100px;top:540px;width:1720px;height:130px;pointer-events:none;background:
  radial-gradient(ellipse 330px 54px at 230px 104px,rgba(255,206,140,.13),rgba(255,206,140,0) 72%),
  radial-gradient(ellipse 330px 54px at 1090px 92px,rgba(255,206,140,.13),rgba(255,206,140,0) 72%),
  linear-gradient(180deg,rgba(46,66,108,0) 0,rgba(46,66,108,.34) 62%,rgba(46,66,108,0) 100%)}
#s-pilot .pu-il{position:absolute;left:0;top:56px;width:740px;height:312px;overflow:visible}
#s-pilot .pu-il text{font-family:var(--f)}
#s-pilot .pu-bt{font-size:26px;font-weight:800;letter-spacing:.04em;fill:#2B1C0B;text-anchor:middle;opacity:.88}
#s-pilot .pu-wt{font-size:24px;font-weight:700;fill:#A9D0FF;text-anchor:middle}
#s-pilot .pu-ml{font-size:22px;font-weight:500;fill:#A9B8CF}
#s-pilot .pu-trk{fill:rgba(127,176,255,.07);stroke:rgba(127,176,255,.3);stroke-width:1.2}
#s-pilot .pu-tk{stroke:rgba(201,212,229,.45);stroke-width:1.6}
#s-pilot .pu-bar1,#s-pilot .pu-bar2{transform-box:fill-box;transform-origin:0 50%}
#s-pilot .pu-bv{font-size:26px;font-weight:700;fill:#EEF3FA}
#s-pilot .pu-bv.pu-bw{fill:#C9D4E5}
#s-pilot .pu-rt{font-size:27px;font-weight:600;fill:#DCE4F0}
#s-pilot .pu-rt tspan{fill:#9FC2FF;font-weight:800}
#s-pilot .pu-env path,#s-pilot .pu-env rect{fill:url(#puHatch);stroke:#F0A63A;stroke-width:2.5;stroke-dasharray:9 7;stroke-linejoin:round}
#s-pilot .pu-envf path,#s-pilot .pu-envf rect{fill:none;stroke:rgba(255,196,107,.75);stroke-width:2}
#s-pilot .pu-env{transform-box:fill-box;transform-origin:50% 100%}
#s-pilot .pu-et{font-size:30px;font-weight:800;fill:#FFC46B;text-anchor:middle;paint-order:stroke;stroke:#0A1326;stroke-width:6px}
#s-pilot .pu-ld{fill:none;stroke-width:3;stroke-linecap:round}
#s-pilot .pu-pl1{fill:rgba(9,17,36,.94);stroke:rgba(240,166,58,.6);stroke-width:1.5}
#s-pilot .pu-pl2{fill:rgba(9,17,36,.94);stroke:rgba(127,176,255,.45);stroke-width:1.5}
#s-pilot .pu-mt{font-size:28px;font-weight:700;fill:#EEF3FA}
#s-pilot .pu-mv{font-size:24px;font-weight:500;fill:#C9D4E5}
#s-pilot .pu-cs,#s-pilot .pu-ao{transform-box:fill-box;transform-origin:50% 50%}

/* ================= C · clipboard, threads, door ================= */
#s-pilot .pv-c .pv-cv,#s-pilot .pv-c .pv-gate{display:none}
#s-pilot .pu-board{position:absolute;left:150px;top:242px;width:940px;height:530px;border-radius:18px;background:#5E4026;background-image:
  repeating-linear-gradient(93deg,rgba(255,220,170,.035) 0 3px,rgba(0,0,0,.035) 3px 8px),linear-gradient(160deg,#7C5836 0,#5E4026 55%,#4A321D 100%);
  box-shadow:inset 0 1px 0 rgba(255,225,180,.35),inset 0 -2px 0 rgba(0,0,0,.35),0 0 0 1px rgba(20,12,4,.6),0 2px 3px rgba(0,0,0,.4),0 22px 40px -14px rgba(0,0,0,.7),0 50px 80px -30px rgba(0,0,0,.55)}
#s-pilot .pv-c .pv-ln{left:180px;top:280px;width:880px;height:470px;box-sizing:border-box;padding:26px 0 0 30px;border-radius:3px;
  background:#F3F0E8 linear-gradient(176deg,#F8F6F0 0,#F1EDE4 70%,#E9E4D9 100%);box-shadow:0 1px 2px rgba(0,0,0,.35),0 8px 16px -8px rgba(0,0,0,.5)}
#s-pilot .pv-c .pv-ln li{height:86px}
#s-pilot .pv-c .pv-ln li:not(:last-child)::after{content:"";position:absolute;left:0;right:30px;bottom:4px;height:1px;background:rgba(60,84,128,.16)}
#s-pilot .pv-c .pv-ln li > i{left:0;top:16px;width:40px;height:40px;border:3px solid #2B3445;border-radius:6px;background:#FCFBF7;box-shadow:inset 0 2px 3px rgba(0,0,0,.12)}
#s-pilot .pv-c .pv-ln li > b{left:58px;top:12px;width:auto;height:auto;border:0;border-radius:0;display:block;font-family:var(--nq-mono);font-size:24px;color:#566275}
#s-pilot .pv-c .pv-ln h3{left:96px;top:8px;font-size:30px;color:#18212F}
#s-pilot .pv-c .pv-ln p{left:96px;top:48px;font-size:22px;color:#4A5568}
#s-pilot .pu-clip{position:absolute;left:470px;top:224px;width:300px;height:70px;border-radius:12px 12px 20px 20px;
  background:linear-gradient(180deg,#F2F5F9 0,#CDD4DE 36%,#8E98A8 60%,#C9D0DA 82%,#E2E7EE 100%);
  box-shadow:inset 0 1px 0 #fff,inset 0 -2px 3px rgba(0,0,0,.25),0 0 0 1px rgba(40,48,62,.5),0 3px 4px rgba(0,0,0,.45),0 12px 18px -6px rgba(0,0,0,.6)}
#s-pilot .pu-clip b{position:absolute;left:104px;top:-18px;width:92px;height:30px;box-sizing:border-box;border:7px solid #AEB8C6;border-bottom:0;border-radius:50px 50px 0 0;box-shadow:inset 0 2px 0 rgba(255,255,255,.5)}
#s-pilot .pu-clip::before,#s-pilot .pu-clip::after{content:"";position:absolute;top:42px;width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#FFFFFF,#7D8798 70%);box-shadow:0 1px 1px rgba(0,0,0,.5)}
#s-pilot .pu-clip::before{left:38px}#s-pilot .pu-clip::after{right:38px}
#s-pilot .pu-cv{position:absolute;left:1020px;top:316px;width:260px;height:400px;overflow:visible;pointer-events:none}
#s-pilot .pu-cv .nq-th{stroke-dasharray:1 1;stroke-dashoffset:1;transition:stroke-dashoffset .8s var(--io)}
#s-pilot .pu-cv .nq-th.l{stroke-width:3}
#s-pilot .pu-port{fill:#C8962E;stroke:#6B4A12;stroke-width:2.5;opacity:0;transition:opacity .35s}
#s-pilot .pu-door{position:absolute;left:1300px;top:250px;width:440px;height:510px;border-radius:6px 6px 0 0;background:#3E4A60 linear-gradient(180deg,#56637B,#363F52);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.2),inset 0 0 0 2px rgba(10,16,30,.55),0 2px 3px rgba(0,0,0,.4),0 26px 44px -16px rgba(0,0,0,.7)}
#s-pilot .pu-leaf{position:absolute;left:18px;top:18px;right:18px;bottom:0;background:
  linear-gradient(104deg,rgba(255,196,128,.14) 0,rgba(255,196,128,.03) 34%,rgba(255,196,128,0) 52%),
  linear-gradient(90deg,#2B3854 0,#35466A 36%,#2C3956 100%);box-shadow:inset 0 0 0 1px rgba(0,0,0,.45),inset 3px 0 0 rgba(255,255,255,.06)}
#s-pilot .pu-leaf::before,#s-pilot .pu-leaf::after{content:"";position:absolute;left:44px;right:44px;border-radius:4px;background:linear-gradient(90deg,rgba(0,0,0,.08),rgba(255,255,255,.03));
  box-shadow:inset 3px 3px 0 rgba(0,0,0,.32),inset -2px -2px 0 rgba(255,255,255,.09),inset 0 0 22px rgba(0,0,0,.25)}
#s-pilot .pu-leaf::before{top:190px;height:130px}#s-pilot .pu-leaf::after{top:344px;height:126px}
#s-pilot .pu-sill{position:absolute;left:-40px;right:-40px;bottom:-16px;height:30px;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.6),rgba(0,0,0,0))}
#s-pilot .pv-c .pv-dst{left:1372px;top:318px;width:300px;box-sizing:border-box;padding:16px 22px 18px;border-radius:8px;font-size:28px;line-height:1.2;color:#18212F;
  background:#E7ECF3 linear-gradient(180deg,#F3F6FA,#DCE3EC);box-shadow:inset 0 0 0 2px #8D99AD,inset 0 0 0 5px #F4F6F9,0 2px 3px rgba(0,0,0,.45),0 12px 18px -8px rgba(0,0,0,.6)}
#s-pilot .pv-c .pv-dst small{display:inline-block;margin-top:10px;padding:2px 12px 4px;border-radius:6px;font-size:22px;font-weight:700;color:#7A4100;background:#FFE3B8;box-shadow:inset 0 0 0 2px #C77A12}
#s-pilot .pv-c .pv-dst::before,#s-pilot .pv-c .pv-dst::after{content:"";position:absolute;left:9px;width:7px;height:7px;border-radius:50%;background:#8D99AD;box-shadow:275px 0 0 #8D99AD}
#s-pilot .pv-c .pv-dst::before{top:9px}#s-pilot .pv-c .pv-dst::after{bottom:9px}
#s-pilot .pu-lock{position:absolute;left:1232px;top:470px;width:180px;height:250px;overflow:visible}
#s-pilot .pu-lock .pu-lk{transform-box:view-box;transform-origin:90px 86px}
#s-pilot .pv-c .pv-ms{top:792px}

/* ================= states ================= */
/* A: each suite runs (spinner) and resolves as its row lands; core first, then intake */
#s-pilot .pv-a .pv-zco .pv-g{--d:calc(.95s + var(--o) * .25s)}
#s-pilot .pv-a .pv-zin .pv-g{--d:calc(1.85s + var(--o) * .25s)}
#s-pilot[data-play="1"] .pu-spin{animation:puSpin .7s linear 6,puOff .2s var(--d) both}
#s-pilot[data-play="1"] .pu-res{animation:puPop .45s var(--out) var(--d) both}
/* B: the load drops onto the scale (A) / the floor (B) and settles; shadows meet it; then the readings */
#s-pilot[data-play="2"] .pu-ila .pu-load{animation:puDrop .9s .3s both}
#s-pilot[data-play="2"] .pu-ila :is(.pu-ao,.pu-cs){animation:puShd .9s .3s both}
#s-pilot[data-play="2"] .pu-ila .pu-wt{animation:puFade .4s .95s both}
#s-pilot[data-play="2"] .pu-ila .pu-ins{animation:puFade .45s .6s both}
#s-pilot[data-play="2"] .pu-bar1{animation:puGrow .6s var(--out) 1s both}
#s-pilot[data-play="2"] .pu-bar2{animation:puGrow .6s var(--out) 1.2s both}
#s-pilot[data-play="2"] .pu-ila :is(.pu-ml,.pu-bv){animation:puFade .4s 1s both}
#s-pilot[data-play="2"] .pu-ila .pu-rt{animation:puFade .4s 1.8s both}
#s-pilot[data-play="2"] .pu-ilb .pu-load{animation:puDrop .9s 1.9s both}
#s-pilot[data-play="2"] .pu-ilb :is(.pu-ao,.pu-cs){animation:puShd .9s 1.9s both}
#s-pilot[data-play="2"] .pu-ilb .pu-env{animation:puRise .9s var(--out) 2.6s both}
#s-pilot[data-play="2"] .pu-ilb .pu-et{animation:puFade .45s 3.1s both}
#s-pilot[data-play="2"] .pu-co1{animation:puFade .45s 3.2s both}
#s-pilot[data-play="2"] .pu-co2{animation:puFade .45s 3.45s both}
/* C: board, then the rows, threads to the lock, the lock snaps shut, the plate */
#s-pilot :is(.pu-board,.pu-clip),#s-pilot .pv-c .pv-ln{opacity:0;translate:0 16px;transition:opacity .5s var(--out),translate .7s var(--out)}
#s-pilot.rch3 :is(.pu-board,.pu-clip),#s-pilot.rch3 .pv-c .pv-ln{opacity:1;translate:0 0}
#s-pilot[data-k="3"] :is(.pu-board,.pu-clip),#s-pilot[data-k="3"] .pv-c .pv-ln{transition-delay:.05s}
#s-pilot.rch3 .pu-cv .nq-th{stroke-dashoffset:0}
#s-pilot[data-k="3"] .pu-cv .nq-th{transition-delay:calc(.6s + var(--o) * .22s)}
#s-pilot.rch3 .pu-port{opacity:1}
#s-pilot[data-k="3"] .pu-port{transition-delay:calc(.45s + var(--o) * .22s)}
#s-pilot :is(.pu-door,.pu-lock){opacity:0;transition:opacity .5s}
#s-pilot.rch3 :is(.pu-door,.pu-lock){opacity:1}
#s-pilot[data-k="3"] .pu-door{transition-delay:.35s}#s-pilot[data-k="3"] .pu-lock{transition-delay:1.2s}
#s-pilot[data-play="3"] .pu-lock .pu-shk{animation:puShk .32s cubic-bezier(.55,0,1,.45) 2s both}
#s-pilot[data-play="3"] .pu-lock .pu-lk{animation:puSwing 1.2s 2.3s both}

@keyframes puSpin{to{transform:rotate(360deg)}}
@keyframes puOff{from{opacity:1}to{opacity:0}}
@keyframes puPop{0%{opacity:0;transform:scale(.55)}70%{opacity:1;transform:scale(1.08)}100%{opacity:1;transform:none}}
@keyframes puDrop{0%{opacity:0;transform:translateY(-84px);animation-timing-function:cubic-bezier(.5,0,1,.6)}
  14%{opacity:1}
  58%{transform:none;animation-timing-function:cubic-bezier(0,.5,.5,1)}
  72%{transform:translateY(-5px);animation-timing-function:cubic-bezier(.5,0,1,.5)}
  84%{transform:none;animation-timing-function:cubic-bezier(0,.5,.5,1)}
  92%{transform:translateY(-1px)}100%{opacity:1;transform:none}}
@keyframes puShd{0%{opacity:0;transform:scale(.5)}58%{opacity:1;transform:none}72%{transform:scale(.96)}84%,100%{opacity:1;transform:none}}
@keyframes puGrow{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}
@keyframes puRise{0%{opacity:0;transform:scaleY(.42)}100%{opacity:1;transform:none}}
@keyframes puFade{0%{opacity:0}100%{opacity:1}}
@keyframes puShk{0%{transform:translateY(-22px)}100%{transform:none}}
@keyframes puSwing{0%{transform:none;animation-timing-function:cubic-bezier(.2,.6,.4,1)}22%{transform:rotate(4.5deg)}48%{transform:rotate(-2.6deg)}72%{transform:rotate(1.1deg)}88%{transform:rotate(-.4deg)}100%{transform:none}}
body.safe #s-pilot :is(.pu-spin,.pu-res,.pu-load,.pu-ao,.pu-cs,.pu-shk,.pu-lk){animation:none!important}
