/* ---------- 13/10 · Tarefa customizada: listagem, construtor "do zero" e andamento (construtor-connect.js) */
.tz-raiz{position:fixed;top:0;right:0;bottom:0;left:var(--tc-off,296px);z-index:40;background:rgba(6,6,6,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#F2F2F2;
  font-family:'Space Grotesk',system-ui,sans-serif;animation:tzEntra .25s ease both}
.tz-raiz[hidden]{display:none}
html.tc-sidebar-recolhida .tz-raiz{left:0}
.tz-caixa{height:100%;overflow:auto;padding:28px 40px 40px;scrollbar-width:thin;scrollbar-color:#333 transparent}
.tz-raiz[data-modo="construtor"] .tz-caixa{padding:0;overflow:hidden;display:grid;grid-template-rows:auto 1fr}
@keyframes tzEntra{from{opacity:0}}
.tz-raiz button{font:inherit;color:inherit}
.tz-cab{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:22px}
.tz-titulo{display:flex;align-items:center;gap:14px;margin:0;font-family:'Plus Jakarta Sans',sans-serif;font-size:44px;font-weight:800;letter-spacing:-.03em}
.tz-titulo i{width:6px;height:.8em;background:#F7FF3F}
.tz-cab p{margin:6px 0 0;color:rgba(255,255,255,.65);font-size:14px}
.tz-cab p b{color:#fff}
.tz-x{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);cursor:pointer}
.tz-x:hover{border-color:#F7FF3F;color:#F7FF3F}
.tz-btn{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 16px;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.04);font-size:13.5px;font-weight:700;cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s}
.tz-btn:hover:not(:disabled){border-color:#fff}
.tz-btn.y{background:#F7FF3F;border-color:#F7FF3F;color:#0A0A0A}
.tz-btn.y:hover:not(:disabled){background:#FBFF7A}
.tz-btn.perigo{color:#FF8A7E;border-color:rgba(255,107,94,.4)}
.tz-btn.perigo:hover:not(:disabled){border-color:#FF6B5E;background:rgba(255,107,94,.1)}
.tz-btn:disabled{opacity:.4;cursor:not-allowed}
.tz-btn:focus-visible,.tz-x:focus-visible,.tz-grande:focus-visible,.tz-bp:focus-visible{outline:2px solid #F7FF3F;outline-offset:2px}
.tz-beta{display:inline-block;padding:3px 8px;font-size:10.5px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;background:#C79BFF;color:#0A0A0A}
.tz-link{border:0;background:none;color:#F7FF3F;text-decoration:underline;cursor:pointer;padding:0}

/* listagem */
.tz-faixa-rodando{display:flex;align-items:center;gap:14px;width:100%;margin:0 0 18px;padding:14px 18px;border:1px solid rgba(247,255,63,.5);background:rgba(247,255,63,.07);text-align:left;cursor:pointer}
.tz-faixa-rodando b{display:block;font-size:15px}.tz-faixa-rodando small{color:rgba(255,255,255,.6)}
.tz-faixa-rodando>svg{margin-left:auto;color:#F7FF3F}
.tz-pulso{flex:none;width:10px;height:10px;border-radius:50%;background:#F7FF3F;box-shadow:0 0 0 0 rgba(247,255,63,.6);animation:tzPulso 1.6s ease-out infinite}
@keyframes tzPulso{to{box-shadow:0 0 0 10px rgba(247,255,63,0)}}
.tz-grade{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:30px}
.tz-grande{position:relative;display:grid;gap:8px;align-content:end;min-height:170px;padding:22px 24px;border:1px solid rgba(255,255,255,.12);background:rgba(18,18,18,.85);text-align:left;cursor:pointer;transition:transform .2s,border-color .2s,background .2s}
.tz-grande:hover:not(:disabled){transform:translateY(-3px);border-color:#F7FF3F}
.tz-grande b{font-family:'Plus Jakarta Sans',sans-serif;font-size:22px;font-weight:800;letter-spacing:-.01em}
.tz-grande small{font-size:13px;line-height:1.5;color:rgba(255,255,255,.6);max-width:44ch}
.tz-grande-ic{position:absolute;top:20px;left:22px;color:#F7FF3F}
.tz-grande .tz-beta{position:absolute;top:20px;right:20px}
.tz-raiz .tz-zero{background:#F7FF3F;border-color:#F7FF3F;color:#0A0A0A}
.tz-zero .tz-grande-ic{color:#0A0A0A}.tz-zero small{color:rgba(10,10,10,.65)}
.tz-zero:hover:not(:disabled){background:#FBFF7A;border-color:#FBFF7A}
.tz-grande:disabled{opacity:.45;cursor:not-allowed}
.tz-sec{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55)}
.tz-sec em{font-style:normal;color:#F7FF3F}
.tz-sec::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.1)}
.tz-salva{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 16px;margin-bottom:8px;border:1px solid rgba(255,255,255,.1);background:rgba(18,18,18,.8)}
.tz-salva-ic{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(247,255,63,.35);color:#F7FF3F}
.tz-salva-t b{display:block;font-size:15.5px}
.tz-salva-t small{display:block;margin-top:2px;font-size:12.5px;color:rgba(255,255,255,.55)}
.tz-selo{display:inline-block;margin-top:6px;padding:2px 8px;font-size:11.5px;font-weight:700}
.tz-selo.bom{background:rgba(74,222,128,.12);color:#6EE69A}.tz-selo.ruim{background:rgba(255,107,94,.13);color:#FF8A7E}
.tz-salva-acoes{display:flex;gap:6px}
.tz-salva-acoes .perigo{width:38px;padding:0;justify-content:center}
.tz-vazio{padding:24px;border:1px dashed rgba(255,255,255,.18);color:rgba(255,255,255,.6);line-height:1.6;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.tz-vazio.ruim{border-color:rgba(255,107,94,.4);color:#FFB0A8}
.tz-vazio b{color:#fff}

/* construtor */
.tz-topo{display:flex;align-items:center;gap:12px;padding:14px 22px;border-bottom:1px solid #262626;background:#0b0b0b}
.tz-voltar{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border:1px solid rgba(255,255,255,.18);background:none;cursor:pointer;font-weight:700;font-size:13px}
.tz-voltar:hover{border-color:#F7FF3F;color:#F7FF3F}
.tz-nome{flex:0 1 320px;height:38px;padding:0 12px;background:#161616;border:1px solid #333;color:#fff;font:inherit;font-size:15px;font-weight:700;outline:none}
.tz-nome:focus{border-color:#F7FF3F}
.tz-robo{font-size:12.5px;color:rgba(255,255,255,.55)}
.tz-esp{flex:1}
.tz-corpo{display:grid;grid-template-columns:250px minmax(0,1fr) 360px;min-height:0}
.tz-paleta,.tz-palco,.tz-aba{overflow:auto;scrollbar-width:thin;scrollbar-color:#333 transparent}
.tz-paleta{padding:14px 12px 30px;border-right:1px solid #262626;background:#0b0b0b}
.tz-paleta h4{display:flex;align-items:center;gap:8px;margin:16px 4px 8px;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.5)}
.tz-paleta h4:first-child{margin-top:2px}
.tz-paleta h4 b{width:8px;height:8px}
.tz-bp{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:10px;width:100%;padding:8px 10px;margin-bottom:6px;border:1px solid #232323;border-left:3px solid var(--cor);background:#121212;text-align:left;cursor:grab;transition:background .15s,transform .15s}
.tz-bp:hover{background:#181818;transform:translateX(2px)}
.tz-bp.inc{opacity:.35}
.tz-bp-ic{width:30px;height:30px;display:grid;place-items:center;color:var(--cor);border:1px solid color-mix(in srgb,var(--cor) 40%,transparent)}
.tz-bp b{display:block;font-size:12.5px}.tz-bp small{display:block;font-size:11px;color:rgba(255,255,255,.45)}
.tz-nota{margin:12px 4px 0;font-size:11.5px;line-height:1.5;color:rgba(255,255,255,.45)}
.tz-palco{padding:20px 30px 60px;background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(247,255,63,.05),transparent 70%)}
.tz-trilha{max-width:700px;margin:0 auto}
.tz-ponta{display:flex;align-items:center;gap:12px;color:rgba(255,255,255,.5);font-size:11.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.tz-ponta>svg,.tz-ponta>span:first-child{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;border:2px solid #F7FF3F;color:#F7FF3F;padding:9px;box-sizing:border-box}
.tz-ponta.fim>span:first-child{border-color:#333;color:#666;padding:0;font-size:12px}
.tz-ponta.fim.bom>span:first-child{border-color:#4ADE80;color:#4ADE80}.tz-ponta.fim.ruim>span:first-child{border-color:#FF6B5E;color:#FF6B5E}
.tz-passos{position:relative;padding:6px 0;min-height:110px}
.tz-passos::before{content:"";position:absolute;left:17px;top:0;bottom:0;width:2px;background:repeating-linear-gradient(180deg,#333 0 6px,transparent 6px 12px)}
.tz-vazio-palco{margin:10px 0 10px 52px;padding:28px;border:1px dashed #333;color:rgba(255,255,255,.55);text-align:center;line-height:1.6}
.tz-vazio-palco b{color:#fff}
.tz-passo{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr);gap:16px;margin:10px 0;animation:tzEntra .25s ease}
.tz-passo.recuo{margin-left:40px}
.tz-passo.arrastando{opacity:.35}
.tz-num{position:relative;z-index:1;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#070707;border:2px solid var(--cor);color:var(--cor);font-weight:700;font-size:13px}
.tz-passo.recuo .tz-num{width:26px;height:26px;margin:5px;font-size:11px}
.tz-card{background:#121212;border:1px solid #232323;border-left:3px solid var(--cor);cursor:grab}
.tz-passo.erro .tz-card{border-color:#FF6B5E}
.tz-passo.aviso .tz-card{border-color:rgba(255,178,62,.55);border-left-color:#FFB23E}
.tz-passo.foco .tz-card{box-shadow:0 0 0 2px #F7FF3F}
.tz-card-cab{display:flex;align-items:center;gap:10px;padding:10px 10px 8px 14px}
.tz-card-ic{color:var(--cor);display:grid}
.tz-card-cab b{font-family:'Plus Jakarta Sans',sans-serif;font-size:14px;font-weight:800}
.tz-api{margin-left:auto;font:10.5px ui-monospace,Consolas,monospace;color:rgba(255,255,255,.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40%}
.tz-acoes{display:flex;gap:2px}
.tz-acoes button{width:26px;height:26px;display:grid;place-items:center;border:0;background:none;color:rgba(255,255,255,.45);cursor:pointer}
.tz-acoes button:hover{color:#fff;background:#1f1f1f}
.tz-acoes button:nth-child(1) svg{transform:rotate(90deg)}.tz-acoes button:nth-child(2) svg{transform:rotate(90deg)}
.tz-cfg{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:0 14px 12px}
.tz-cfg label{font-size:11.5px;color:rgba(255,255,255,.5)}
.tz-cfg select,.tz-cfg input{height:32px;padding:0 9px;background:#191919;border:1px solid #333;color:#fff;font:inherit;font-size:12.5px;outline:none}
.tz-cfg input[type=number]{width:74px}
.tz-cfg .tz-largo{flex:1;min-width:180px}
.tz-cfg select:focus,.tz-cfg input:focus{border-color:#F7FF3F}
.tz-cfg .tz-up{height:32px;font-size:12px;cursor:pointer}
.tz-chips{display:flex;flex-wrap:wrap;gap:6px}
.tz-chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 6px 0 10px;background:#1f1f1f;border:1px solid #333;font-size:12.5px}
.tz-chip button{border:0;background:none;color:rgba(255,255,255,.5);cursor:pointer;font-size:15px;padding:0 2px}
.tz-al{display:grid;gap:5px;padding:8px 14px 10px;border-top:1px solid #232323}
.tz-al p{display:flex;gap:8px;margin:0;font-size:12px;line-height:1.45}
.tz-al i{flex:none;width:14px;font-style:normal;font-weight:800;text-align:center}
.tz-al .erro{color:#FFB0A8}.tz-al .erro i{color:#FF6B5E}
.tz-al .aviso{color:#FFD28F}.tz-al .aviso i{color:#FFB23E}
.tz-al .info{color:#B9D3FF}.tz-al .info i{color:#7FB2FF}
.tz-al b{color:#F7FF3F;font-weight:600}
.tz-marcador{height:4px;margin:-2px 0 -2px 52px;background:#F7FF3F;box-shadow:0 0 12px rgba(247,255,63,.6)}
.tz-lado{display:flex;flex-direction:column;min-height:0;border-left:1px solid #262626;background:#0b0b0b}
.tz-abas{display:flex;border-bottom:1px solid #262626}
.tz-abas button{flex:1;height:44px;border:0;border-bottom:2px solid transparent;background:none;color:rgba(255,255,255,.5);font-weight:700;font-size:13px;cursor:pointer}
.tz-abas button.on{color:#fff;border-bottom-color:#F7FF3F}
.tz-abas button span{display:inline-grid;place-items:center;min-width:20px;height:18px;padding:0 5px;margin-left:6px;font-size:11px;background:#222}
.tz-abas button span.e{background:#FF6B5E;color:#0A0A0A}
.tz-aba{flex:1;padding:14px 14px 30px}
.tz-veredito{display:flex;gap:12px;align-items:center;padding:14px;margin-bottom:12px;border:1px solid #262626}
.tz-veredito>span{flex:none;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:#222}
.tz-veredito.bom{border-color:rgba(74,222,128,.4);background:rgba(74,222,128,.06)}.tz-veredito.bom>span{background:#4ADE80;color:#0A0A0A}
.tz-veredito.ruim{border-color:rgba(255,107,94,.45);background:rgba(255,107,94,.08)}.tz-veredito.ruim>span{background:#FF6B5E;color:#0A0A0A}
.tz-veredito b{display:block;font-family:'Plus Jakarta Sans',sans-serif;font-size:14.5px}
.tz-veredito small{color:rgba(255,255,255,.65);font-size:12px}
.tz-item{display:grid;gap:4px;width:100%;padding:10px 12px;margin-bottom:8px;border:1px solid #262626;border-left:3px solid var(--c,#666);background:#121212;text-align:left;cursor:pointer}
.tz-item:hover{background:#181818}
.tz-item.erro{--c:#FF6B5E}.tz-item.aviso{--c:#FFB23E}.tz-item.info{--c:#7FB2FF}
.tz-item b{font-size:12px}.tz-item span{font-size:12.5px;line-height:1.5;color:rgba(255,255,255,.75)}
.tz-item em{font-style:normal;font-size:12px;color:#F7FF3F}.tz-item em::before{content:"→ "}
.tz-regra{padding:11px 12px;margin-bottom:8px;border:1px solid #262626;background:#121212}
.tz-regra>div{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.tz-regra code{font-size:11px;padding:2px 6px;background:#222;color:#F7FF3F}
.tz-regra b{font-size:12.5px}.tz-regra p{margin:0;font-size:12px;line-height:1.5;color:rgba(255,255,255,.65)}
.tz-tag{margin-left:auto;padding:2px 6px;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.tz-tag.pudu{background:rgba(247,255,63,.12);color:#F7FF3F}.tz-tag.connect{background:rgba(127,178,255,.12);color:#7FB2FF}.tz-tag.confirmar{background:rgba(255,178,62,.12);color:#FFB23E}

/* andamento */
.tz-st{display:inline-flex;align-items:center;gap:8px;padding:3px 10px;font-weight:700;font-size:13px;background:rgba(255,255,255,.08)}
.tz-st.rodando,.tz-st.preparando,.tz-st[class*="aguardando"]{background:rgba(247,255,63,.12);color:#F7FF3F}
.tz-st.concluida{background:rgba(74,222,128,.12);color:#6EE69A}
.tz-st.falhou{background:rgba(255,107,94,.14);color:#FF8A7E}
.tz-erro{display:grid;gap:4px;padding:14px 16px;margin-bottom:18px;border:1px solid rgba(255,107,94,.5);border-left:3px solid #FF6B5E;background:rgba(255,107,94,.08)}
.tz-erro b{font-size:15px}.tz-erro span{color:#F7FF3F;font-size:13.5px}
.tz-and{display:grid;grid-template-columns:minmax(260px,380px) minmax(0,1fr);gap:20px}
.tz-etapas{margin:0;padding:0;list-style:none;display:grid;gap:6px;align-content:start}
.tz-etapas li{display:grid;grid-template-columns:30px 1fr;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(255,255,255,.08);background:rgba(18,18,18,.8);font-size:13.5px}
.tz-et-ic{width:30px;height:30px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.15);font-weight:800;color:rgba(255,255,255,.4)}
.tz-etapas li.ok .tz-et-ic{background:#4ADE80;border-color:#4ADE80;color:#0A0A0A}
.tz-etapas li.falhou .tz-et-ic{background:#FF6B5E;border-color:#FF6B5E;color:#0A0A0A}
.tz-etapas li.atual{border-color:#F7FF3F;background:rgba(247,255,63,.06)}
.tz-etapas li.pulada,.tz-etapas li.cancelada{opacity:.55}
.tz-log{min-width:0}
.tz-log p{display:flex;gap:10px;margin:0;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px;line-height:1.5;color:rgba(255,255,255,.85)}
.tz-log time{flex:none;font-size:11.5px;color:rgba(255,255,255,.4);font-variant-numeric:tabular-nums;padding-top:1px}
.tz-log .aviso{color:#FFD28F}.tz-log .erro{color:#FFB0A8}
.tz-pe{display:flex;gap:10px;margin-top:22px}
html.tz-aberto .ech-estilos{display:none}
html.tc-reduzir-anim .tz-raiz,html.tc-reduzir-anim .tz-raiz *{animation:none !important}
@media (max-width:1250px){.tz-corpo{grid-template-columns:220px minmax(0,1fr) 300px}.tz-grade{grid-template-columns:1fr}}
@media (max-width:1000px){.tz-raiz{left:0}.tz-corpo{grid-template-columns:1fr}.tz-paleta,.tz-lado{max-height:40vh}.tz-and{grid-template-columns:1fr}.tz-caixa{padding:20px 16px}}

/* 14/10 · Tarefa customizada: fundo das ondas em movimento suave — versão LEVE.
   A 1ª versão animava background-position de 2 desenhos SVG gigantes (redesenha a tela inteira a cada quadro)
   e os cards de vidro por cima tinham backdrop-filter (o desfoque era recalculado a cada quadro): muito pesado.
   Agora: só transform numa camada própria (a GPU move a imagem pronta, sem redesenhar) e, neste módulo,
   os cards ficam sem desfoque (já são quase opacos). */
#tela-entrega[data-modo="custom"] .ec-fundo-fixo{background:#050505 !important;overflow:hidden;contain:strict}
#tela-entrega[data-modo="custom"] .ec-fundo-fixo::before{content:"";position:absolute;inset:-5%;
  background:url('/plataforma-api/imagens/custom-fundo-ondas.webp') 50% 50%/cover no-repeat;
  will-change:transform;transform:translateZ(0);animation:tzOndas 22s ease-in-out infinite alternate}
#tela-entrega[data-modo="custom"]:not(:has(.ec-card,.ec-lista-card)) .ec-fundo-fixo::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(6,6,5,.78) 0%,rgba(6,6,5,.42) 45%,rgba(6,6,5,.15) 100%),linear-gradient(0deg,rgba(6,6,5,.85) 0%,rgba(6,6,5,.1) 32%,rgba(6,6,5,0) 55%)}
@keyframes tzOndas{0%{transform:translate3d(-2%,0,0) scale(1.02)}50%{transform:translate3d(1.5%,-1.2%,0) scale(1.06)}100%{transform:translate3d(-.5%,1.2%,0) scale(1.04)}}
#tela-entrega[data-modo="custom"] *{-webkit-backdrop-filter:none !important;backdrop-filter:none !important}
#tela-entrega[data-modo="custom"] .ec-robo,#tela-entrega[data-modo="custom"] .ec-fn,#tela-entrega[data-modo="custom"] .ec-palco,#tela-entrega[data-modo="custom"] .ec-nome{background-color:rgba(12,12,12,.9)}
html.tc-reduzir-anim #tela-entrega[data-modo="custom"] .ec-fundo-fixo::before{animation:none}

/* 14/10 · tela do módulo customizado mais leve (2ª rodada):
   - a janela de Tarefas/construtor tinha backdrop-filter sobre um fundo animado: o desfoque era recalculado a
     cada quadro enquanto ela estava aberta (a maior carga). Sem desfoque — o fundo já é 94% opaco.
   - as ondas só se mexem nas telas de escolher o robô e de funções; pausam com a janela aberta, no mapa de
     destinos e no andamento (ninguém vê o fundo lá).
   - a animação ficou só translate (sem scale): a imagem é rasterizada uma vez e a GPU só a desloca. */
.tz-raiz{-webkit-backdrop-filter:none !important;backdrop-filter:none !important;background:rgba(6,6,6,.96)}
@keyframes tzOndas{0%{transform:translate3d(-2%,0,0)}50%{transform:translate3d(1.5%,-1.2%,0)}100%{transform:translate3d(-.5%,1.2%,0)}}
#tela-entrega[data-modo="custom"] .ec-fundo-fixo::before{animation-duration:26s}
#tela-entrega[data-modo="custom"]:not(:has(.ec-card,.ec-lista-card)) .ec-fundo-fixo::before,
html.tz-aberto #tela-entrega[data-modo="custom"] .ec-fundo-fixo::before{animation-play-state:paused}
/* 14/10: fundo do construtor em preto acinzentado (sólido) */
.tz-raiz[data-modo="construtor"]{background:#1A1B1E}
.tz-raiz[data-modo="construtor"] .tz-topo,.tz-raiz[data-modo="construtor"] .tz-paleta,.tz-raiz[data-modo="construtor"] .tz-lado{background:#151619}
.tz-raiz[data-modo="construtor"] .tz-palco{background:#1A1B1E}
/* 14/10: listagem de Tarefas e andamento com o mesmo preto acinzentado sólido do construtor */
.tz-raiz{background:#1A1B1E}
.tz-raiz .tz-grande:not(.tz-zero),.tz-raiz .tz-salva,.tz-raiz .tz-etapas li{background:#222327}
.tz-raiz .tz-vazio{background:rgba(255,255,255,.02)}

/* 14/10: "Criar tarefa do zero" sozinho no topo; o Passeio guiado virou a 1ª tarefa salva (padrão, para todos) */
.tz-raiz .tz-grade{grid-template-columns:1fr}
.tz-raiz .tz-grade .tz-zero{min-height:150px}
.tz-padrao{border-color:rgba(247,255,63,.25)}
.tz-tag-padrao{display:inline-block;margin-left:8px;padding:2px 7px;font-size:10.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;vertical-align:2px;background:rgba(247,255,63,.14);color:#F7FF3F}
/* 14/10 (leveza): pulso do "rodando agora" por transform/opacity (GPU) em vez de box-shadow */
.tz-pulso{position:relative;box-shadow:none;animation:none}
.tz-pulso::after{content:"";position:absolute;inset:0;border-radius:50%;background:#F7FF3F;animation:tzAnel 1.6s ease-out infinite}
@keyframes tzAnel{from{transform:scale(1);opacity:.6}to{transform:scale(2.6);opacity:0}}
html.tc-reduzir-anim .tz-pulso::after{animation:none;display:none}

/* 14/10: card de erro ao soltar no roteiro um bloco que o robô não faz */
.tz-erro-bloco{position:absolute;left:50%;top:76px;z-index:5;display:grid;grid-template-columns:34px 1fr 28px;align-items:start;gap:12px;width:min(520px,calc(100% - 40px));padding:14px 14px 14px 16px;
  transform:translateX(-50%);background:#2A1414;border:1px solid rgba(255,107,94,.55);border-left:3px solid #FF6B5E;color:#fff;box-shadow:0 18px 40px rgba(0,0,0,.45);opacity:0;pointer-events:none}
.tz-erro-bloco.mostra{opacity:1;pointer-events:auto;animation:tzErroEntra .3s cubic-bezier(.2,.9,.25,1.1)}
.tz-erro-bloco.mostra.some{opacity:0;pointer-events:none;transition:opacity .3s ease}
.tz-erro-bloco-ic{width:34px;height:34px;display:grid;place-items:center;background:rgba(255,107,94,.15);color:#FF6B5E}
.tz-erro-bloco b{display:block;font-size:14px}.tz-erro-bloco small{display:block;margin-top:3px;font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.72)}
.tz-erro-bloco button{width:28px;height:28px;display:grid;place-items:center;border:0;background:none;color:rgba(255,255,255,.6);cursor:pointer}
.tz-erro-bloco button:hover{color:#fff}
@keyframes tzErroEntra{from{opacity:0;transform:translate(-50%,-8px)}}
/* 14/10: fundo da Tarefa customizada PARADO (a animação pesava) */
#tela-entrega[data-modo="custom"] .ec-fundo-fixo::before{animation:none !important;will-change:auto;transform:none;inset:0}
/* 14/10: a tela de Tarefas/construtor/andamento cobre a página inteira; só a sidebar fica por cima */
.tz-raiz{left:0;z-index:39;padding-left:var(--tc-off,296px)}
html.tc-sidebar-recolhida .tz-raiz{padding-left:0}
@media (max-width:1000px){.tz-raiz{padding-left:0}}

/* o card de erro fica no body (fixo), centralizado na área do construtor */
body > .tz-erro-bloco{position:fixed;left:calc(var(--tc-off,296px) + (100vw - var(--tc-off,296px)) / 2);top:78px;z-index:60}

/* 15/10: andamento com mapa ao vivo + pausar/retomar */
.tz-and.tz-and-mapa{grid-template-columns:minmax(0,1.35fr) minmax(240px,340px) minmax(0,1fr)}
.tz-mv{min-width:0;border:1px solid rgba(255,255,255,.12);background:#141518}
.tz-mv-cab{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid rgba(255,255,255,.08);font-size:13px}
.tz-mv-cab small{margin-left:auto;color:rgba(255,255,255,.55);font-size:12px}
.tz-mv-planta{position:relative;line-height:0;background:#0E0F11}
.tz-mv-planta img{display:block;width:100%;height:auto;max-height:420px;object-fit:contain;user-select:none;-webkit-user-drag:none}
.tz-mv-pt{position:absolute;transform:translate(-50%,-50%);line-height:1;pointer-events:none}
.tz-mv-pt i{display:block;width:10px;height:10px;border-radius:50%;background:#7FB2FF;border:2px solid #0E0F11}
.tz-mv-pt em{position:absolute;left:50%;top:13px;transform:translateX(-50%);font-style:normal;font-size:10.5px;font-weight:700;white-space:nowrap;color:#fff;background:rgba(0,0,0,.6);padding:1px 4px}
.tz-mv-pt.alvo i{width:14px;height:14px;background:#F7FF3F}
.tz-mv-robo{position:absolute;width:16px;height:16px;border-radius:50%;background:#4ADE80;border:3px solid #0E0F11;transform:translate(-50%,-50%);box-shadow:0 0 0 4px rgba(74,222,128,.35);transition:left .8s linear,top .8s linear}
.tz-mv > .tz-nota{padding:16px;margin:0}
.tz-pe{flex-wrap:wrap;align-items:center}
.tz-nota-pausa{margin:0;color:#F7FF3F}
.tz-st.rodando .tz-pulso{display:inline-block}
@media (max-width:1250px){.tz-and.tz-and-mapa{grid-template-columns:minmax(0,1fr) minmax(240px,340px)}.tz-and.tz-and-mapa .tz-log{grid-column:1 / -1}}
@media (max-width:1000px){.tz-and.tz-and-mapa{grid-template-columns:1fr}}

/* 16/10: andamento esperando o comando de voz */
.tz-voz{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid rgba(247,255,63,.5);border-left:3px solid #F7FF3F;background:rgba(247,255,63,.07)}
.tz-voz > svg{color:#F7FF3F}
.tz-voz b{display:block;font-size:14px}.tz-voz span{display:block;margin-top:2px;font-size:12.5px;color:rgba(255,255,255,.7)}
