/* ==========================================================================
   BIBLIOTECA DE MECANISMOS · portada de deyel-vendor/index.html
   Cada bloco aqui e uma cena que ja provou funcionar na pagina de Vendor.
   Nao e kit de card: cada um dramatiza uma coisa especifica.
   ========================================================================== */

/* ==========================================================================
   1 · CORREDOR COM PORTAO
   Uma nota corre a pista e para na barreira quando falta documento.
   Usa: integracao e governanca (o que trava antes de ir pra producao).
   ========================================================================== */
.lane{margin-top:clamp(28px,3.4vw,44px);background:var(--surf);border:1px solid var(--surf-b);
 border-radius:16px;overflow:clip;box-shadow:0 34px 70px -46px rgba(11,25,45,.42)}
.s-deep .lane,.s-dark .lane{background:var(--ink-3);border-color:var(--wire);
 box-shadow:0 40px 90px -50px #000}
.lane-h{display:flex;align-items:center;gap:10px;padding:14px 20px;background:var(--ink);
 color:#fff;font-size:13px}
.lane-h b{font-weight:600}
.lane-h .sit{margin-left:auto;font-size:11.5px;color:var(--bad-hi);letter-spacing:.03em;
 transition:color .4s}
.lane-h .sit.ok{color:var(--ok-hi)}
.lane-b{padding:clamp(16px,2vw,24px)}
/* painel escuro: qualquer paragrafo solto dentro dele le em claro */
.s-deep .lane-b,.s-dark .lane-b{color:#9AA3B2}
.s-deep .lane-b p,.s-dark .lane-b p{color:#9AA3B2}

.pista{position:relative;height:150px;border-radius:12px;background:var(--mist);overflow:clip}
.s-deep .pista,.s-dark .pista{background:rgba(255,255,255,.04)}
/* o chao da pista: tracejado, pra leitura de movimento */
.pista:before{content:"";position:absolute;left:0;right:0;top:104px;height:2px;
 background:repeating-linear-gradient(90deg,rgba(11,25,45,.14) 0 9px,transparent 9px 18px)}
.s-deep .pista:before,.s-dark .pista:before{
 background:repeating-linear-gradient(90deg,rgba(255,255,255,.16) 0 9px,transparent 9px 18px)}

/* a nota que anda */
.nota{position:absolute;top:70px;left:14px;display:inline-flex;align-items:center;gap:8px;
 padding:8px 13px;border-radius:9px;background:var(--paper);border:1px solid var(--line);
 font-size:12px;color:var(--text);white-space:nowrap;box-shadow:0 10px 24px -14px rgba(11,25,45,.4);
 will-change:transform}
.s-deep .nota,.s-dark .nota{background:var(--ink-2);border-color:var(--wire-2);color:#E4E7EC}
.nota b{font-weight:600}
.nota i{width:7px;height:7px;border-radius:50%;background:var(--warn);flex:0 0 auto}
.nota.ok i{background:var(--ok)}

/* o portao: quem posiciona e o CSS, por breakpoint. o JS so le. */
.portao{position:absolute;top:0;bottom:0;left:70%;width:0}
.portao .barra{position:absolute;left:-4px;top:0;bottom:26px;width:8px;border-radius:4px;
 background:repeating-linear-gradient(135deg,var(--bad) 0 7px,#f0f2f6 7px 13px);
 box-shadow:0 0 0 1px rgba(212,35,64,.35);transform:scaleY(0);transform-origin:top center;
 transition:transform .5s var(--e)}
.portao.montado .barra{transform:scaleY(1)}
.portao .luz{position:absolute;left:-66px;bottom:5px;width:132px;text-align:center;font-size:9.5px;
 font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--bad-lo);white-space:nowrap;
 transition:color .4s}
.s-deep .portao .luz,.s-dark .portao .luz{color:var(--bad-hi)}
.portao.ok .barra{background:repeating-linear-gradient(135deg,var(--ok) 0 7px,#f0f2f6 7px 13px);
 box-shadow:0 0 0 1px rgba(18,166,106,.35)}
.portao.ok .luz{color:var(--ok-lo)}
.s-deep .portao.ok .luz,.s-dark .portao.ok .luz{color:var(--ok-hi)}

/* a fila de conferencias que vao acendendo */
.fila{position:absolute;left:14px;top:22px;display:flex;gap:6px;flex-wrap:wrap;
 max-width:calc(70% - 28px)}
.cb{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:99px;
 border:1px solid var(--line);font-size:11.5px;color:var(--dim);opacity:.4;
 transition:opacity .4s,border-color .4s;background:var(--paper)}
.s-deep .cb,.s-dark .cb{background:rgba(255,255,255,.03);border-color:var(--wire);color:#9AA3B2}
.cb b{color:var(--text);font-weight:600}
.s-deep .cb b,.s-dark .cb b{color:#E4E7EC}
.cb i{width:7px;height:7px;border-radius:50%;background:rgba(11,25,45,.18);
 transition:background .35s,box-shadow .35s}
.cb.on{opacity:1;border-color:rgba(201,138,18,.45)}
.cb.on i{background:var(--warn);box-shadow:0 0 0 4px rgba(201,138,18,.15)}
.cb.ok{border-color:rgba(18,166,106,.4)}
.cb.ok i{background:var(--ok);box-shadow:0 0 0 4px rgba(18,166,106,.15)}

.lane-f{display:flex;align-items:center;gap:15px;margin-top:16px}
.lane-f .v{font-family:var(--disp);font-weight:500;font-size:clamp(22px,2.4vw,31px);
 color:var(--bad-lo);white-space:nowrap;font-variant-numeric:tabular-nums;transition:color .45s}
.s-deep .lane-f .v,.s-dark .lane-f .v{color:var(--bad-hi)}
.lane-f .v.ok{color:var(--ok-lo)}
.s-deep .lane-f .v.ok,.s-dark .lane-f .v.ok{color:var(--ok-hi)}
.lane-f p{font-size:13.5px;color:var(--dim);line-height:1.5;max-width:46ch}
.s-deep .lane-f p,.s-dark .lane-f p{color:#9AA3B2}

@media(max-width:900px){.portao{left:74%}.fila{max-width:calc(74% - 28px)}}
@media(max-width:640px){
 .pista{height:168px}
 .pista:before{top:122px}
 .nota{top:88px;font-size:11px;padding:7px 10px}
 .fila{top:18px;gap:5px;max-width:calc(78% - 24px)}
 .cb{font-size:10.5px;padding:6px 9px}
 .portao{left:78%}
 .portao .luz{font-size:9px;left:-58px;width:116px}
 .lane-f{flex-direction:column;align-items:flex-start;gap:8px}
}

/* ==========================================================================
   2 · CICLO DE SLA
   Quatro paradas; o indicador cai e se recupera na volta.
   Usa: seguros (o ciclo do sinistro).
   ========================================================================== */
.ciclo{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;position:relative;
 margin-top:clamp(26px,3vw,40px)}
@media(max-width:860px){.ciclo{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.ciclo{grid-template-columns:1fr}}
.cc{padding:18px;border-radius:14px;background:var(--surf);border:1px solid var(--surf-b);
 transition:border-color .45s var(--e),background .45s var(--e),transform .45s var(--e)}
.cc.on{border-color:rgba(47,107,255,.42);transform:translateY(-3px);
 box-shadow:0 18px 40px -26px rgba(47,107,255,.5)}
.cc.feito{border-color:rgba(18,166,106,.32)}
.cc-n{font-family:var(--disp);font-size:11px;font-weight:700;letter-spacing:.14em;
 color:var(--faint);margin-bottom:9px;font-variant-numeric:tabular-nums}
.cc.on .cc-n{color:var(--accent-lo)}
.s-deep .cc.on .cc-n,.s-dark .cc.on .cc-n{color:var(--accent-hi)}
.cc.feito .cc-n{color:var(--ok)}
.cc b{display:block;font-family:var(--disp);font-size:15.5px;font-weight:600;margin-bottom:5px}
.s-deep .cc b,.s-dark .cc b{color:#fff}
.cc p{font-size:13px;color:var(--dim);line-height:1.5}
.s-deep .cc p,.s-dark .cc p{color:#9AA3B2}

/* o indicador que cai e volta */
.ind{display:flex;align-items:baseline;gap:14px;margin-top:clamp(22px,2.6vw,32px);flex-wrap:wrap}
.ind-v{font-family:var(--disp);font-weight:500;font-size:clamp(30px,3.6vw,46px);line-height:1;
 font-variant-numeric:tabular-nums;color:var(--ok-lo);transition:color .5s}
.s-deep .ind-v,.s-dark .ind-v{color:var(--ok-hi)}
.ind-v.baixo{color:var(--bad-lo)}
.s-deep .ind-v.baixo,.s-dark .ind-v.baixo{color:var(--bad-hi)}
.ind-v.recuperando{color:var(--warn-lo)}
.s-deep .ind-v.recuperando,.s-dark .ind-v.recuperando{color:#E8C97A}
.ind-l{font-size:13.5px;color:var(--dim);max-width:40ch;line-height:1.5}
.s-deep .ind-l,.s-dark .ind-l{color:#9AA3B2}
.ind-bar{width:100%;height:6px;border-radius:3px;background:var(--mist);overflow:hidden;margin-top:12px}
.s-deep .ind-bar,.s-dark .ind-bar{background:rgba(255,255,255,.07)}
.ind-bar i{display:block;height:100%;border-radius:3px;background:var(--ok);width:94%;
 transition:width .8s var(--e),background .5s}
.ind-bar i.baixo{background:var(--bad)}
.ind-bar i.recuperando{background:var(--warn)}

/* ==========================================================================
   3 · PERGUNTA EM PORTUGUES
   Alguem pergunta em linguagem de negocio; a plataforma responde com dado.
   Usa: vibe coding.
   ========================================================================== */
.bot{border-radius:16px;overflow:hidden;border:1px solid var(--wire-2);
 background:linear-gradient(168deg,#191C25,#0D0E13);color:#B4BAC6;
 box-shadow:0 44px 96px -52px #000}
.bot-h{display:flex;align-items:center;gap:10px;padding:13px 18px;font-size:12px;color:#8A92A0;
 border-bottom:1px solid var(--wire)}
.bot-h b{color:#E4E7EC;font-weight:600;font-size:12.5px}
.bot-h i{width:7px;height:7px;border-radius:50%;background:var(--ok-hi);flex:0 0 auto;
 box-shadow:0 0 0 4px rgba(58,209,154,.16)}
.bot-b{padding:18px}
.bot-q{display:flex;gap:11px;align-items:flex-start;margin-bottom:16px;min-height:52px}
.bot-q span{flex:0 0 auto;width:26px;height:26px;border-radius:8px;background:rgba(255,255,255,.07);
 display:grid;place-items:center;font-size:11px;font-weight:700;color:#98A0AE}
.bot-q p{font-size:15px;color:#E4E7EC;line-height:1.5;padding-top:3px}
.bot-q p i{display:inline-block;width:2px;height:15px;background:var(--accent-hi);margin-left:2px;
 vertical-align:-2px;animation:botcur 1s step-end infinite}
@keyframes botcur{50%{opacity:0}}
.bot-r{display:grid;gap:7px;opacity:0;transform:translateY(8px);
 transition:opacity .5s var(--e),transform .5s var(--e)}
.bot-r.on{opacity:1;transform:none}
.bot-l{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:center;
 padding:11px 13px;border-radius:10px;background:rgba(255,255,255,.04);font-size:13.5px}
.bot-l em{font-style:normal;width:22px;height:22px;border-radius:6px;
 background:rgba(47,107,255,.16);color:var(--accent-hi);display:grid;place-items:center;
 font-size:10px;font-weight:700}
.bot-l b{color:#E4E7EC;font-weight:600}
.bot-l u{text-decoration:none;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;
 color:#8A92A0;white-space:nowrap}
.bot-f{padding:13px 18px;border-top:1px solid var(--wire);font-size:12px;color:#8A92A0;
 display:flex;align-items:center;gap:9px}
.bot-f svg{width:14px;height:14px;flex:0 0 auto;color:var(--accent-hi)}
/* trilha de perguntas que se alternam */
.bot-t{display:flex;gap:6px;margin-top:14px;flex-wrap:wrap}
.bot-t button{appearance:none;border:1px solid var(--wire);background:rgba(255,255,255,.03);
 color:#8A92A0;font-family:var(--sans);font-size:11.5px;padding:6px 11px;border-radius:99px;
 cursor:pointer;transition:color .25s,border-color .25s,background .25s}
.bot-t button:hover{color:#D7DBE2;border-color:var(--wire-2)}
.bot-t button[aria-selected="true"]{color:#fff;border-color:rgba(127,165,255,.45);
 background:rgba(47,107,255,.16)}

/* ==========================================================================
   4 · ABAS DE PERFIL
   Os perfis giram sozinhos com barra de progresso e param no hover.
   Usa: quem usa.
   ========================================================================== */
.perfis{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);
 gap:clamp(24px,4vw,54px);margin-top:clamp(28px,3.4vw,44px)}
@media(max-width:900px){.perfis{grid-template-columns:1fr;gap:24px}}
.pf-abas{display:grid;gap:6px;align-content:start}
@media(max-width:900px){.pf-abas{grid-template-columns:repeat(2,1fr);display:grid}}
@media(max-width:520px){.pf-abas{grid-template-columns:1fr}}
.pf-aba{position:relative;appearance:none;border:1px solid var(--surf-b);background:var(--surf);
 cursor:pointer;text-align:left;padding:15px 17px;border-radius:12px;overflow:hidden;
 transition:border-color .3s,background .3s}
.pf-aba:hover{border-color:rgba(47,107,255,.3)}
.pf-aba b{display:block;font-family:var(--disp);font-size:15px;font-weight:600;color:var(--text);
 margin-bottom:3px}
.s-deep .pf-aba b,.s-dark .pf-aba b{color:#E4E7EC}
.pf-aba span{display:block;font-size:12.5px;color:var(--dim);line-height:1.4}
.s-deep .pf-aba span,.s-dark .pf-aba span{color:#8A92A0}
.pf-aba[aria-selected="true"]{border-color:rgba(47,107,255,.45);background:rgba(47,107,255,.07)}
.s-deep .pf-aba[aria-selected="true"],.s-dark .pf-aba[aria-selected="true"]{
 background:rgba(47,107,255,.14)}
/* a barra que mostra quanto falta pra girar */
.pf-aba .barra{position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--accent);
 transform:scaleX(0);transform-origin:left center}
.pf-aba[aria-selected="true"] .barra.corre{animation:pfbar var(--dur,6s) linear forwards}
@keyframes pfbar{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.pf-p{position:relative;min-height:clamp(280px,30vw,340px)}
.pf-f{position:absolute;inset:0;opacity:0;visibility:hidden;transform:translateY(12px);
 pointer-events:none;transition:opacity .45s var(--e),transform .45s var(--e),visibility .45s}
.pf-f.on{opacity:1;visibility:visible;transform:none;pointer-events:auto;position:relative}
.pf-f h3{font-size:clamp(21px,2.4vw,29px);line-height:1.12;max-width:24ch;margin-bottom:14px}
.s-deep .pf-f h3,.s-dark .pf-f h3{color:#fff}
.pf-f>p{font-size:16px;line-height:1.6;color:var(--dim);max-width:56ch}
.s-deep .pf-f>p,.s-dark .pf-f>p{color:#A6AEBC}
.pf-antes{margin-top:22px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:600px){.pf-antes{grid-template-columns:1fr}}
.pf-antes>div{padding:15px 17px;border-radius:12px;border:1px solid var(--line)}
.s-deep .pf-antes>div,.s-dark .pf-antes>div{border-color:var(--wire)}
.pf-antes small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.13em;
 text-transform:uppercase;color:var(--faint);margin-bottom:8px}
.pf-antes p{font-size:14px;line-height:1.5;color:var(--dim)}
.s-deep .pf-antes p,.s-dark .pf-antes p{color:#9AA3B2}
.pf-antes .dep{border-color:rgba(47,107,255,.3);background:rgba(47,107,255,.05)}
.pf-antes .dep small{color:var(--accent-lo)}
.s-deep .pf-antes .dep small,.s-dark .pf-antes .dep small{color:var(--accent-hi)}

/* ==========================================================================
   5 · CORRENTE DE DEPENDENCIA
   Um pulso desce a corrente e acende cada elo: mostra o custo de um elo travar.
   Usa: integracao.
   ========================================================================== */
.corrente{display:grid;gap:0;margin-top:clamp(26px,3vw,42px);max-width:760px}
.elo{position:relative;display:grid;grid-template-columns:38px minmax(0,1fr);gap:18px;
 padding:0 0 26px}
.elo:last-child{padding-bottom:0}
/* o fio que liga um elo ao proximo */
.elo:not(:last-child):before{content:"";position:absolute;left:18px;top:34px;bottom:0;width:2px;
 background:var(--line)}
.s-deep .elo:not(:last-child):before,.s-dark .elo:not(:last-child):before{
 background:var(--wire)}
.elo:not(:last-child):after{content:"";position:absolute;left:18px;top:34px;width:2px;height:0;
 background:var(--accent);transition:height .45s var(--e)}
.elo.on:not(:last-child):after{height:calc(100% - 34px)}
.elo-n{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;
 border:1px solid var(--surf-b);background:var(--surf);font-family:var(--disp);font-size:13px;
 font-weight:600;color:var(--faint);transition:border-color .4s,background .4s,color .4s;
 position:relative;z-index:2}
.s-deep .elo-n,.s-dark .elo-n{background:var(--ink-2);border-color:var(--wire)}
.elo.on .elo-n{border-color:var(--accent);background:var(--accent);color:#fff}
.elo.trava .elo-n{border-color:var(--bad);background:var(--bad);color:#fff}
.elo b{display:block;font-family:var(--disp);font-size:16.5px;font-weight:600;margin-bottom:5px;
 padding-top:8px}
.s-deep .elo b,.s-dark .elo b{color:#fff}
.elo p{font-size:14.5px;color:var(--dim);line-height:1.55;max-width:54ch}
.s-deep .elo p,.s-dark .elo p{color:#9AA3B2}
.elo .marca{display:inline-flex;align-items:center;gap:7px;margin-top:10px;font-size:11.5px;
 font-family:ui-monospace,monospace;padding:5px 10px;border-radius:6px;
 color:var(--accent-lo);background:rgba(47,107,255,.07);border:1px solid rgba(47,107,255,.16);
 opacity:0;transition:opacity .4s}
.s-deep .elo .marca,.s-dark .elo .marca{color:var(--accent-hi);background:rgba(47,107,255,.14);
 border-color:rgba(127,165,255,.24)}
.elo.on .marca{opacity:1}
.elo.trava .marca{color:var(--bad);background:rgba(212,35,64,.07);border-color:rgba(212,35,64,.2)}
.s-deep .elo.trava .marca,.s-dark .elo.trava .marca{color:var(--bad-hi)}

/* ==========================================================================
   6 · FIGURA COM LEGENDA
   Slot de imagem que se remove sozinho quando o arquivo ainda nao chegou.
   ========================================================================== */
.fig{margin:0;border-radius:16px;overflow:hidden;border:1px solid var(--surf-b);background:var(--surf)}
.s-deep .fig,.s-dark .fig{border-color:var(--wire);background:rgba(255,255,255,.03)}
.fig img{width:100%;height:auto;display:block}
.fig figcaption{padding:13px 17px;font-size:12.5px;color:var(--faint);line-height:1.45;
 border-top:1px solid var(--line)}
.s-deep .fig figcaption,.s-dark .fig figcaption{border-top-color:var(--wire)}
.fig.corta img{aspect-ratio:3/2;object-fit:cover}
.fig.alta img{aspect-ratio:4/3;object-fit:cover}
.fig.larga img{aspect-ratio:21/9;object-fit:cover}

@media(prefers-reduced-motion:reduce){
 .portao .barra,.nota,.cb,.cc,.bot-r,.pf-f,.elo-n,.elo:after,.ind-v,.ind-bar i{transition:none}
 .pf-aba[aria-selected="true"] .barra.corre{animation:none}
 .bot-r{opacity:1;transform:none}
}

/* ==========================================================================
   SLOTS DE ICONE
   Quatro tipos de bloco estavam sem ancora visual, e a leitura virava parede.
   ========================================================================== */
.ic-b{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex:0 0 auto;
 background:rgba(47,107,255,.09);color:var(--accent-lo);margin-bottom:14px}
.s-deep .ic-b,.s-dark .ic-b{background:rgba(47,107,255,.18);color:var(--accent-hi)}
.ic-b svg{width:19px;height:19px}
/* parada do ciclo: icone e numero na mesma linha */
.cc-top{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.cc-top .ic-s{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;
 background:rgba(47,107,255,.1);color:var(--accent-lo);transition:background .4s,color .4s}
.s-deep .cc-top .ic-s,.s-dark .cc-top .ic-s{background:rgba(47,107,255,.18);color:var(--accent-hi)}
.cc-top .ic-s svg{width:14px;height:14px}
.cc.on .cc-top .ic-s{background:var(--accent);color:#fff}
.cc.feito .cc-top .ic-s{background:rgba(18,166,106,.16);color:var(--ok-lo)}
.s-deep .cc.feito .cc-top .ic-s,.s-dark .cc.feito .cc-top .ic-s{color:var(--ok-hi)}
.cc-top .cc-n{margin-bottom:0}
/* aba de perfil: icone antes do nome */
.pf-aba{display:grid;grid-template-columns:30px minmax(0,1fr);gap:12px;align-items:start}
.pf-aba .ic-s{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;
 background:rgba(47,107,255,.1);color:var(--accent-lo);margin-top:1px}
.s-deep .pf-aba .ic-s,.s-dark .pf-aba .ic-s{background:rgba(47,107,255,.18);color:var(--accent-hi)}
.pf-aba .ic-s svg{width:15px;height:15px}
.pf-aba[aria-selected="true"] .ic-s{background:var(--accent);color:#fff}
.pf-aba .barra{grid-column:1/-1}
/* cartao de setor: icone sobre a foto, no canto */
.rf-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:0 0 auto;
 background:rgba(47,107,255,.09);color:var(--accent-lo);margin-bottom:13px}
.rf-ic svg{width:17px;height:17px}
/* prova do pilar: quadradinho virou icone */
.plp-ev .ic-t{width:22px;height:22px;border-radius:7px;display:grid;place-items:center;
 background:rgba(47,107,255,.16);color:#9FBEFF;margin-top:2px}
.plp-ev .ic-t svg{width:12px;height:12px}
