/* Scene upgrade (21/10): final — layout and looks on top of the shared material (up-material.css).
   A closing desktop standing on the control foundation: AI permission panel (left) · NEXQUOTE quotation, the lit centre ·
   OMEN alerts and VANTIS route suggestions (right). Beats: #s-final[data-k="1..5"]; .gv-sunk / .gv-reach / .gv-stop from app.js.
   Stage geometry (1920 × 1080): windows y 252–762, foundation 770–890, captions 912. Text >= 20 px. */

/* ---- the old diagram parts this design replaces (nodes stay in the DOM for app.js) ---- */
#s-final .ag-key,#s-final .ag-bound,#s-final .ag-rfq,#s-final .ag-map,#s-final .ag-place,#s-final .ag-nq,#s-final .ag-card,
#s-final .gv-rule,#s-final .gv-lv,#s-final .gv-ghost,#s-final .gv-env,#s-final .gv-ceil,#s-final .gv-gate,#s-final .gv-env3,#s-final .gv-ai,
#s-final .gv-ex,#s-final .gv-out,#s-final .gv-gcap,#s-final .gv-rfq,#s-final .gv-chip{display:none!important}

/* ---- the foundation: wider, kept on through beat 4 (OMEN and VANTIS stand on the same layer) ---- */
#s-final .gv-slab{transform:scaleX(1.135);transform-origin:960px 0}
#s-final .gv-seg{left:120px;width:1680px;top:826px;height:64px}
#s-final .gv-base{left:120px;width:1680px;top:912px;font-size:20px;color:#AFC0DA}
#s-final .gv-base b{font-size:21px}
#s-final[data-k="4"] .gv{opacity:1;visibility:visible;transition:opacity .6s var(--io),visibility 0s}
#s-final[data-k="4"] .gv-slab :is(.top,.front,.sep){opacity:1}
#s-final[data-k="4"] .gv-slab :is(.edge,.rim){stroke-dashoffset:0}
#s-final[data-k="4"] :is(.gv-seg li,.gv-base){opacity:1}

/* ---- the layer ---- */
#s-final .uf{position:absolute;inset:0;pointer-events:none;transition:transform .9s var(--io)}
#s-final[data-k="5"] .uf{transform:translateY(18px) scale(.985)}
#s-final .uf>*{position:absolute}
#s-final .uf .nq-win{opacity:0;transition:opacity .6s var(--out),transform .9s var(--out)}

/* light: the quotation lights the foundation under it */
#s-final .uf-halo{left:465px;top:117px;width:1000px;height:800px;border-radius:50%;background:radial-gradient(closest-side,rgba(74,128,236,.30),rgba(74,128,236,.10) 55%,rgba(74,128,236,0));opacity:0;transition:opacity 1.2s var(--io)}
#s-final .uf-pool::before,#s-final .uf-pool::after{content:"";position:absolute;top:2px;width:560px;height:72px;border-radius:50%;background:inherit;opacity:0;transition:opacity .9s var(--io)}
#s-final .uf-pool::before{left:-560px}#s-final .uf-pool::after{left:600px}
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-pool::before{opacity:.7}#s-final[data-k="2"] .uf-pool::before{transition-delay:.4s}
#s-final[data-k="4"] .uf-pool::after{opacity:.7;transition-delay:.3s}
#s-final .uf-pool{left:640px;top:744px;width:650px;height:76px;border-radius:50%;background:radial-gradient(closest-side,rgba(150,195,255,.55),rgba(90,143,246,.18) 60%,rgba(90,143,246,0));opacity:0;transition:opacity 1s var(--io)}
#s-final .uf-rays{inset:0;width:1920px;height:1080px;overflow:visible}
#s-final .uf-rays path{fill:none;stroke:#9CC3FF;stroke-width:2.4;stroke-linecap:round;opacity:0;transition:opacity .5s var(--out)}
#s-final .uf-rays .uf-yo{display:none}
#s-final .uf-c{height:30px;opacity:0;transition:opacity .8s}
#s-final .uf-c.uf-c1{left:150px;top:752px;width:540px}#s-final .uf-c.uf-c2{left:740px;top:750px;width:450px;height:36px}#s-final .uf-c.uf-c3{left:1240px;top:752px;width:536px}

/* ---- the NEXQUOTE quotation (light window, the lit centre) ---- */
#s-final .uf-nq{left:740px;top:272px;width:450px;height:490px;transform:translateY(46px) scale(.97);transform-origin:50% 100%;
  box-shadow:0 0 0 1px rgba(20,32,56,.55),0 2px 3px rgba(0,0,0,.35),0 18px 34px -12px rgba(0,0,0,.6),0 44px 70px -30px rgba(0,0,0,.5),0 0 0 6px rgba(127,176,255,.14)}
#s-final .uf-nb{padding:14px 22px}
#s-final .uf-nb p{margin:0;position:relative}
#s-final .uf-nb .uf-t{position:absolute;right:0;top:50%;width:26px;height:26px;margin-top:-13px;border-radius:50%;background:#2F6BE0;display:grid;place-items:center;opacity:0;transform:scale(.4);transition:opacity .3s,transform .5s cubic-bezier(.3,1.6,.5,1)}
#s-final .uf-nb .uf-t svg{width:17px;height:17px;fill:none;stroke:#fff;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
#s-final .uf-rfq{display:flex;align-items:baseline;gap:10px;height:34px}
#s-final .uf-rfq b{font-size:23px;font-weight:700;color:#18212F}
#s-final .uf-rfq span{font-size:20px;color:#3E4C62;white-space:nowrap}
#s-final .uf-f{margin-top:6px!important;height:58px;box-sizing:border-box;padding:4px 40px 4px 12px;border-radius:8px;background:rgba(47,107,224,0);transition:background .5s,box-shadow .5s}
#s-final .uf-f span{display:block;font-size:20px;line-height:24px;color:#56667E}
#s-final .uf-f b{display:block;font-size:22px;line-height:28px;font-weight:600;color:#18212F;white-space:nowrap;opacity:0;transform:translateX(-6px);transition:opacity .45s var(--out),transform .6s var(--out)}
#s-final .uf-tot{display:flex;justify-content:space-between;align-items:center;margin-top:10px!important;padding-top:10px;border-top:1px solid #D3DAE5;font-size:20px;color:#3E4C62}
#s-final .uf-tot b{font-size:22px;letter-spacing:.06em;color:#18212F}
#s-final .uf-hist{display:flex;align-items:center;gap:10px;margin-top:10px!important;height:34px;font-size:20px;color:#3E4C62}
#s-final .uf-hist>i:first-child svg{width:24px;height:24px;fill:none;stroke:#2F6BE0;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;display:block}

/* ---- AI permission panel ---- */
#s-final .uf-perm{left:140px;top:252px;width:560px;height:510px;transform:translateX(-36px)}
#s-final .uf-row{position:absolute;left:0;right:0;height:84px;box-sizing:border-box;padding:10px 20px 0;border-bottom:1px solid rgba(127,176,255,.14)}
#s-final .uf-row.uf-r1{top:44px}#s-final .uf-row.uf-r2{top:128px}#s-final .uf-row.uf-r3{top:212px}
#s-final .uf-row p{margin:0}
#s-final .uf-h{display:flex;align-items:center;gap:10px;height:34px}
#s-final .uf-h b{font-family:var(--nq-mono);font-size:20px;font-weight:600;color:#8FB6FF}
#s-final .uf-h strong{font-size:24px;font-weight:700;color:#EEF3FA;white-space:nowrap}
#s-final .uf-pill{display:inline-flex;align-items:center;gap:7px;padding:1px 11px 2px 9px;border-radius:999px;font-style:normal;font-size:20px;white-space:nowrap}
#s-final .uf-pill::before{content:"";width:9px;height:9px;border-radius:50%;box-sizing:border-box}
#s-final .uf-pill.uf-pon{border:1.5px solid rgba(127,176,255,.7);color:#CFE0FF}#s-final .uf-pill.uf-pon::before{background:#7FB0FF}
#s-final .uf-pill.uf-ppart{border:1.5px solid rgba(127,176,255,.45);color:#C3D3EC}#s-final .uf-pill.uf-ppart::before{border:1.5px solid #7FB0FF;background:linear-gradient(90deg,#7FB0FF 50%,transparent 50%)}
#s-final .uf-pill.uf-pdir{border:1.5px dashed rgba(240,166,58,.8);color:#F7B95A}#s-final .uf-pill.uf-pdir::before{border:1.5px dashed #F0A63A}
#s-final .uf-d{margin-top:4px!important;font-size:20px;line-height:26px;color:#AFC0DA;white-space:nowrap}
#s-final .uf-d.uf-amb{color:#F7B95A}
#s-final .uf-row{opacity:0;transform:translateY(8px);transition:opacity .45s var(--out),transform .6s var(--out)}

/* switches: on · partly on · locked for later */
#s-final .uf-sw{position:absolute;right:20px;top:12px;width:72px;height:36px}
#s-final .uf-sw i{position:absolute;display:block}
#s-final .uf-sw .uf-tr{inset:0;border-radius:18px;background:#1E2C4A;box-shadow:inset 0 2px 4px rgba(0,0,0,.55),inset 0 0 0 1px rgba(127,176,255,.22)}
#s-final .uf-sw .uf-on{inset:0;border-radius:18px;background:linear-gradient(180deg,#5A8FF6,#2F6BE0);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),0 0 16px rgba(90,143,246,.55);opacity:0;transition:opacity .4s}
#s-final .uf-sw .uf-pt{inset:0;border-radius:18px;background:repeating-linear-gradient(135deg,rgba(90,143,246,.75) 0 5px,rgba(47,107,224,.25) 5px 10px);box-shadow:inset 0 0 0 1.5px rgba(127,176,255,.6);opacity:0;transition:opacity .4s}
#s-final .uf-sw .uf-k{left:3px;top:3px;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 40% 32%,#FFFFFF,#DCE4F0 70%,#C3CEDF);box-shadow:0 2px 4px rgba(0,0,0,.5),0 6px 10px -4px rgba(0,0,0,.6);transition:transform .55s cubic-bezier(.3,1.25,.5,1)}
#s-final .uf-sw.uf-s3 .uf-tr{background:#141E35;box-shadow:inset 0 2px 4px rgba(0,0,0,.6);border:2px dashed rgba(240,166,58,.7);box-sizing:border-box}
#s-final .uf-sw.uf-s3 .uf-k{background:radial-gradient(circle at 40% 32%,#8D9AB3,#5E6C88 75%);box-shadow:0 2px 4px rgba(0,0,0,.5)}
#s-final .uf-sw .uf-lk{right:9px;top:7px;width:22px;height:22px;color:#F7B95A}
#s-final .uf-sw .uf-lk svg,#s-final .uf-deny svg,#s-final .uf-conds svg,#s-final .uf-om svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#s-final .uf-sw .uf-gl{left:-14px;top:-14px;right:-14px;bottom:-14px;border-radius:30px;background:radial-gradient(closest-side,rgba(240,166,58,.5),rgba(240,166,58,0));opacity:0;transition:opacity .35s}

/* the refusal, the excluded actions, the promotion conditions */
#s-final .uf-deny{position:absolute;left:20px;right:20px;top:306px;height:44px;box-sizing:border-box;margin:0;display:flex;align-items:center;gap:12px;padding:0 14px;border-radius:10px;
  background:rgba(240,166,58,.13);box-shadow:inset 0 0 0 1.5px rgba(240,166,58,.7);font-size:22px;font-weight:700;color:#FFD08A;opacity:0;transform:translateY(6px);transition:opacity .35s,transform .5s var(--out)}
#s-final .uf-deny i{width:24px;height:24px;flex:none}
#s-final .uf-zone{position:absolute;left:20px;right:20px;top:358px;opacity:0;transition:opacity .4s}
#s-final .uf-zone p{margin:0}
#s-final .uf-zl{font-size:20px;line-height:27px;color:#9EB2DC}
#s-final .uf-chips{margin-top:8px!important;display:flex;flex-wrap:wrap;gap:8px}
#s-final .uf-chips span{padding:3px 12px 4px;border-radius:999px;border:1.5px dashed rgba(158,178,220,.55);font-size:20.4px;color:#C9D5EA;white-space:nowrap}
#s-final .uf-zt{font-size:20px;line-height:27px;color:#C9D5EA}#s-final .uf-zt b{color:#EEF3FA}
#s-final .uf-conds{margin-top:8px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
#s-final .uf-conds p{height:66px;box-sizing:border-box;padding:7px 8px;display:grid;grid-template-columns:28px auto;grid-template-rows:auto auto;column-gap:7px;align-content:center;border-radius:10px;
  border:1.5px dashed rgba(142,163,192,.55);background:rgba(255,255,255,.02);transition:border-color .4s,background .4s}
#s-final .uf-conds i{grid-row:1/3;align-self:center;width:28px;height:28px;color:#8EA3C0;transition:color .4s}
#s-final .uf-conds b{font-size:20px;line-height:24px;color:#EEF3FA;white-space:nowrap}
#s-final .uf-conds small{font-size:20px;line-height:24px;color:#AFC0DA;white-space:nowrap}
#s-final .uf-zn{margin-top:8px!important;font-size:20px;line-height:27px;color:#F7B95A}

/* the AI cursor: works on what it may, reaches for the lock, is refused */
#s-final .uf-cur{left:0;top:0;display:flex;align-items:flex-start;opacity:0;transform:translate(660px,330px);transition:opacity .4s,transform .8s cubic-bezier(.45,0,.25,1)}
#s-final .uf-cur .uf-ar{width:30px;height:30px;filter:drop-shadow(0 3px 4px rgba(0,0,0,.6))}
#s-final .uf-cur .uf-ar svg{display:block;width:100%;height:100%;fill:#EEF3FA;stroke:#0F1A33;stroke-width:1.4;stroke-linejoin:round}
#s-final .uf-cur b{margin:20px 0 0 -4px;padding:1px 9px 2px;border-radius:8px;background:#2F6BE0;font-size:20px;font-weight:700;letter-spacing:.06em;color:#fff;box-shadow:0 0 0 2px rgba(127,176,255,.45),0 6px 12px -4px rgba(0,0,0,.6)}

/* ---- OMEN: alerts only ---- */
#s-final .uf-om{left:1230px;top:252px;width:556px;height:244px;transform:translateX(40px);box-shadow:0 0 0 1px rgba(240,166,58,.38),0 2px 3px rgba(0,0,0,.45),0 18px 34px -12px rgba(0,0,0,.7),0 44px 70px -30px rgba(0,0,0,.6)}
#s-final .uf-om>.nq-tb>b{color:#FFD08A}
#s-final .uf-ob{padding:6px 20px}
#s-final .uf-ob p{margin:0}
#s-final .uf-ob .uf-a{position:relative;display:grid;grid-template-columns:34px 1fr auto;align-items:center;height:42px;border-bottom:1px solid rgba(127,176,255,.12);opacity:0;transform:translateY(-12px);transition:opacity .35s var(--out),transform .55s var(--out)}
#s-final .uf-ob .uf-a::before{content:"";position:absolute;left:-20px;top:50%;width:6px;height:6px;margin-top:-3px;border-radius:50%;background:#F0A63A;opacity:0}
#s-final .uf-ob .uf-a i{width:24px;height:24px;color:#F7B95A}
#s-final .uf-ob .uf-a b{font-size:20px;font-weight:600;color:#EEF3FA}
#s-final .uf-ob .uf-a small{font-family:var(--nq-mono);font-size:20px;color:#9EB2DC}
#s-final .uf-st{display:flex;align-items:center;gap:10px;margin-top:10px!important;font-size:20px;line-height:26px;color:#AFC0DA;white-space:nowrap}
#s-final .uf-st em{flex:none;width:10px;height:10px;border-radius:50%;background:#5BD49B;box-shadow:0 0 0 4px rgba(91,212,155,.18)}

/* ---- VANTIS: route suggestions only ---- */
#s-final .uf-vt{left:1230px;top:514px;width:556px;height:248px;transform:translateX(40px)}
#s-final .uf-vb{position:relative;height:204px}
#s-final .uf-fan{position:absolute;left:12px;top:12px;width:140px;height:122px;overflow:visible}
#s-final .uf-fan .uf-og{fill:#AFCBFF;stroke:rgba(127,176,255,.4);stroke-width:5}
#s-final .uf-fan .uf-rt{fill:none;stroke:rgba(127,176,255,.62);stroke-width:2;stroke-linecap:round;opacity:0;transition:opacity .5s}
#s-final .uf-fan .uf-ep{fill:#0F1A33;stroke:#7FB0FF;stroke-width:2;opacity:0;transition:opacity .5s}
#s-final .uf-fan .uf-rt.uf-hot{stroke:#F0A63A;stroke-width:3.2}#s-final .uf-fan .uf-ep.uf-hot{stroke:#F0A63A;fill:#3A2608}
#s-final .uf-rec{position:absolute;left:164px;top:8px;width:372px;opacity:0;transform:translateX(8px);transition:opacity .45s var(--out),transform .6s var(--out)}
#s-final .uf-rec b{display:block;font-size:20px;line-height:27px;font-weight:700;color:#EEF3FA}
#s-final .uf-rec span{display:block;font-size:20px;line-height:27px;color:#C9D5EA}
#s-final .uf-rec p{margin:8px 0 0;display:flex;align-items:center;gap:8px;white-space:nowrap}
#s-final .uf-rec em{font-style:normal;font-size:20px;font-weight:700;padding:1px 10px 3px;border-radius:999px;white-space:nowrap;color:#2A1800;background:#FFC46B;box-shadow:0 0 0 3px rgba(240,166,58,.25)}
#s-final .uf-rec small{font-size:20px;color:#AFC0DA;white-space:nowrap}
#s-final .uf-vt .uf-st{position:absolute;left:20px;bottom:12px;margin:0!important}

/* sockets between windows (what plugs into the quotation) and the shared caption */
#s-final .uf-plug{height:4px;border-radius:2px;opacity:0;transform:scaleX(0);transition:opacity .3s,transform .5s var(--out)}
#s-final .uf-plug::before,#s-final .uf-plug::after{content:"";position:absolute;top:-4px;width:12px;height:12px;border-radius:50%}
#s-final .uf-plug::before{left:-6px}#s-final .uf-plug::after{right:-6px}
#s-final .uf-plug.uf-p1{left:700px;top:338px;width:40px;background:#7FB0FF;box-shadow:0 0 12px rgba(127,176,255,.8);transform-origin:0 50%}
#s-final .uf-plug.uf-p1::before,#s-final .uf-plug.uf-p1::after{background:#AFCBFF}
#s-final .uf-plug.uf-p2{left:1190px;top:372px;width:40px;background:repeating-linear-gradient(90deg,#F0A63A 0 6px,transparent 6px 10px);transform-origin:100% 50%}
#s-final .uf-plug.uf-p2::before,#s-final .uf-plug.uf-p2::after{background:#FFD08A}
#s-final .uf-plug.uf-p3{left:1190px;top:640px;width:40px;background:repeating-linear-gradient(90deg,#7FB0FF 0 6px,transparent 6px 10px);transform-origin:100% 50%}
#s-final .uf-plug.uf-p3::before,#s-final .uf-plug.uf-p3::after{background:#AFCBFF}
#s-final .uf-cap{left:0;right:0;top:912px;margin:0;text-align:center;font-size:20px;line-height:26px;color:#CFE0FF;opacity:0;transition:opacity .5s}

/* =================== beats =================== */
#s-final.uf-snap .uf,#s-final.uf-snap .uf *{transition:none!important;animation:none!important}
/* 1 · the quotation rises out of the foundation, its fields fill, the five layers take its light */
#s-final.uf-b1:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) .uf-nq{opacity:1;transform:none}
#s-final.uf-b1:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) :is(.uf-halo,.uf-c.uf-c2){opacity:1}
#s-final.uf-b1:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) .uf-f{background:rgba(47,107,224,.07);box-shadow:inset 0 0 0 1px rgba(47,107,224,.3)}
#s-final.uf-b1:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) .uf-f b{opacity:1;transform:none}
#s-final.uf-b1:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) :is(.uf-rfq,.uf-f) .uf-t{opacity:1;transform:none}
#s-final.uf-b1.gv-sunk:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) :is(.uf-rays path:not(.uf-yo),.uf-pool),
#s-final.uf-b1.gv-sunk:is([data-k="1"],[data-k="2"],[data-k="3"],[data-k="4"]) .uf-hist .uf-t{opacity:1;transform:none}
#s-final[data-k="1"] .uf-nq{transition-delay:.1s}
#s-final[data-k="1"] .uf-halo{transition-delay:.5s}
#s-final[data-k="1"] .uf-rfq .uf-t{transition-delay:.75s}
#s-final[data-k="1"] .uf-f.uf-f1,#s-final[data-k="1"] .uf-f.uf-f1 b{transition-delay:.95s}#s-final[data-k="1"] .uf-f.uf-f1 .uf-t{transition-delay:1.2s}
#s-final[data-k="1"] .uf-f.uf-f2,#s-final[data-k="1"] .uf-f.uf-f2 b{transition-delay:1.2s}#s-final[data-k="1"] .uf-f.uf-f2 .uf-t{transition-delay:1.45s}
#s-final[data-k="1"] .uf-f.uf-f3,#s-final[data-k="1"] .uf-f.uf-f3 b{transition-delay:1.45s}#s-final[data-k="1"] .uf-f.uf-f3 .uf-t{transition-delay:1.7s}
#s-final[data-k="1"] .uf-f.uf-f4,#s-final[data-k="1"] .uf-f.uf-f4 b{transition-delay:1.7s}#s-final[data-k="1"] .uf-f.uf-f4 .uf-t{transition-delay:1.95s}
#s-final.gv-sunk[data-k="1"] .uf-rays .uf-y1{transition-delay:.15s}#s-final.gv-sunk[data-k="1"] .uf-rays .uf-y2{transition-delay:.3s}
#s-final.gv-sunk[data-k="1"] .uf-rays .uf-y3{transition-delay:.45s}#s-final.gv-sunk[data-k="1"] .uf-rays .uf-y4{transition-delay:.6s}
#s-final.gv-sunk[data-k="1"] .uf-rays .uf-y5{transition-delay:.75s}#s-final.gv-sunk[data-k="1"] .uf-hist .uf-t{transition-delay:.85s}

/* 2 · the AI permission panel docks on the left; switches settle; the AI reaches for the lock and is refused */
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) :is(.uf-perm,.uf-row){opacity:1;transform:none}
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) :is(.uf-c.uf-c1,.uf-sw .uf-on,.uf-sw .uf-pt,.uf-cur){opacity:1}
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-sw.uf-s1 .uf-k{transform:translateX(36px)}
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-sw.uf-s2 .uf-k{transform:translateX(18px)}
#s-final:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-plug.uf-p1{opacity:1;transform:none}
#s-final[data-k="2"] .uf-zone.uf-z2{opacity:1}
#s-final[data-k="2"] .uf-perm{transition-delay:0s}
#s-final[data-k="2"] .uf-row.uf-r1{transition-delay:.25s}#s-final[data-k="2"] .uf-row.uf-r2{transition-delay:.4s}#s-final[data-k="2"] .uf-row.uf-r3{transition-delay:.55s}
#s-final[data-k="2"] .uf-sw.uf-s1 .uf-on,#s-final[data-k="2"] .uf-sw.uf-s1 .uf-k{transition-delay:.8s}
#s-final[data-k="2"] .uf-sw.uf-s2 .uf-pt,#s-final[data-k="2"] .uf-sw.uf-s2 .uf-k{transition-delay:1s}
#s-final[data-k="2"] .uf-plug.uf-p1{transition-delay:1.05s}
#s-final[data-k="2"] .uf-cur{transition-delay:1.15s,0s}
#s-final[data-k="2"] .uf-zone.uf-z2{transition-delay:1.4s}
#s-final.gv-reach .uf-cur{transform:translate(662px,498px)}
#s-final.gv-reach .uf-sw.uf-s3 .uf-k{transform:translateX(9px);transition:transform .35s cubic-bezier(.4,0,.6,1) .55s}
#s-final.gv-stop:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-cur{transform:translate(676px,520px)}
#s-final.gv-stop .uf-sw.uf-s3 .uf-gl,#s-final.gv-stop:is([data-k="2"],[data-k="3"],[data-k="4"]) .uf-deny{opacity:1;transform:none}
#s-final.gv-stop[data-k="2"] .uf-sw.uf-s3 .uf-lk{animation:ufNo .5s cubic-bezier(.36,.07,.19,.97) 1}
#s-final.gv-stop[data-k="2"] .uf-sw.uf-s3 .uf-gl{animation:ufGlow 1.6s ease-out 1 forwards}
@keyframes ufNo{0%,100%{transform:none}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
@keyframes ufGlow{0%{opacity:1}100%{opacity:.55}}
#s-final.gv-stop .uf-sw.uf-s3 .uf-gl{opacity:.55}

/* 3 · the lock lists what would open it, per task type (illustrative, not activated) */
#s-final:is([data-k="3"],[data-k="4"]) .uf-zone.uf-z3{opacity:1}
#s-final:is([data-k="3"],[data-k="4"]) .uf-conds p{border:1.5px solid rgba(127,176,255,.55);background:rgba(47,107,224,.14)}
#s-final:is([data-k="3"],[data-k="4"]) .uf-conds i{color:#AFCBFF}
#s-final[data-k="3"] .uf-zone.uf-z3{transition-delay:.25s}
#s-final[data-k="3"] .uf-conds .uf-q1,#s-final[data-k="3"] .uf-conds .uf-q1 i{transition-delay:.6s}
#s-final[data-k="3"] .uf-conds .uf-q2,#s-final[data-k="3"] .uf-conds .uf-q2 i{transition-delay:.9s}
#s-final[data-k="3"] .uf-conds .uf-q3,#s-final[data-k="3"] .uf-conds .uf-q3 i{transition-delay:1.2s}

/* 4 · OMEN and VANTIS dock on the same foundation; alerts arrive; one of eight routes turns amber */
#s-final[data-k="4"] :is(.uf-om,.uf-vt){opacity:1;transform:none}
#s-final[data-k="4"] :is(.uf-ob .uf-a,.uf-rec){opacity:1;transform:none}
#s-final[data-k="4"] :is(.uf-fan .uf-rt,.uf-fan .uf-ep,.uf-c.uf-c3,.uf-cap,.uf-rays .uf-yo){opacity:1}
#s-final[data-k="4"] :is(.uf-plug.uf-p2,.uf-plug.uf-p3){opacity:1;transform:none}
#s-final[data-k="4"] .uf-vt{transition-delay:.2s}
#s-final[data-k="4"] .uf-ob .uf-a1{transition-delay:.35s}#s-final[data-k="4"] .uf-ob .uf-a2{transition-delay:.5s}#s-final[data-k="4"] .uf-ob .uf-a3{transition-delay:.65s}
#s-final[data-k="4"] .uf-ob .uf-a::before{animation:ufFlash 1.1s ease-out 1}
#s-final[data-k="4"] .uf-ob .uf-a1::before{animation-delay:.35s}#s-final[data-k="4"] .uf-ob .uf-a2::before{animation-delay:.5s}#s-final[data-k="4"] .uf-ob .uf-a3::before{animation-delay:.65s}
@keyframes ufFlash{0%{opacity:0}15%{opacity:1}100%{opacity:0}}
#s-final[data-k="4"] .uf-fan :is(.uf-rt,.uf-ep){transition-delay:.55s}#s-final[data-k="4"] .uf-fan :is(.uf-rt.uf-hot,.uf-ep.uf-hot){transition-delay:.85s}
#s-final[data-k="4"] .uf-rec{transition-delay:.75s}
#s-final[data-k="4"] .uf-plug.uf-p2{transition-delay:.7s}#s-final[data-k="4"] .uf-plug.uf-p3{transition-delay:.85s}
#s-final[data-k="4"] :is(.uf-cap,.uf-c.uf-c3,.uf-rays .uf-yo){transition-delay:.6s}

/* 5 · the end card (app.js: line, dome, brand): the event line at >= 20 px and readable */
#s-final .evt{font-size:21px;color:#A9B8D2;letter-spacing:.06em}

/* calm: the base sheet already removes every transition in .ag; Safe mode cuts through .kb-cut */
body.calm #s-final .uf{transform:none!important}
