/* =========================================================================
   Taskr Connect — Minha frota, Indicadores e Mapas (02/10/2026)
   Mesmo padrão do Início: painéis retos, contorno amarelo fino no tema escuro,
   rótulos pequenos em maiúsculas, título com a barrinha amarela.
   ========================================================================= */
#tela-frota,#tela-indicadores,#tela-mapas{padding-top:4px}
.pc-anim{animation:pcEntra .5s var(--tc-ease) both}
@keyframes pcEntra{from{opacity:0;transform:translateY(12px)}}

/* cabeçalho */
.pc-cab{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:14px 0 22px;flex-wrap:wrap}
.pc-cab h1{margin:0;display:flex;align-items:center;gap:14px;font-family:'Plus Jakarta Sans',sans-serif;font-size:40px;font-weight:800;letter-spacing:-.025em;line-height:1.05;color:var(--tc-texto)}
.pc-cab h1::before{content:"";width:6px;height:.82em;border-radius:2px;background:var(--tc-y2);box-shadow:0 0 0 1px rgba(10,10,10,.12)}
.pc-cab p{margin:6px 0 0;color:var(--tc-apoio);font-size:15px}

/* painel base */
.pc-painel{position:relative;background:var(--tc-painel);border:1px solid var(--tc-linha)}
:root[data-tema="escuro"] .pc-painel{border-color:transparent;background:linear-gradient(to bottom,#151515,#121212) padding-box,linear-gradient(to bottom,rgba(247,255,63,.35),rgba(247,255,63,.08) 30%,rgba(255,255,255,.06)) border-box}
.pc-p-cab{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px 4px}
.pc-p-cab h2{margin:0;font-size:17px;font-weight:600;color:var(--tc-texto)}
.pc-p-cab p{margin:3px 0 0;color:var(--tc-apoio);font-size:12.5px}
.pc-p-corpo{padding:16px 22px 22px}
.pc-rot{display:block;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tc-apoio)}
.pc-sub{color:var(--tc-apoio);font-size:12.5px}
.pc-vazio{padding:24px;margin:0;text-align:center;color:var(--tc-apoio)}
.pc-exemplo{display:inline-flex;align-items:center;height:20px;padding:0 8px;margin-left:6px;border-radius:10px;background:var(--tc-ate-bg);color:var(--tc-ate-tx);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;vertical-align:middle}

/* chips, segmento, botões */
.pc-chips{display:flex;flex-wrap:wrap;gap:8px}
.pc-chip{height:34px;padding:0 14px;border:1px solid var(--tc-linha);background:var(--tc-painel);font:inherit;font-size:13px;font-weight:600;color:var(--tc-texto-2);display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.pc-chip b{font-weight:700;color:var(--tc-apoio)}
.pc-chip.on{background:#0A0A0A;border-color:#0A0A0A;color:#fff}.pc-chip.on b{color:inherit;opacity:.7}
:root[data-tema="escuro"] .pc-chip.on{background:var(--tc-y2);border-color:var(--tc-y2);color:#0A0A0A}
.pc-seg{display:inline-flex;border:1px solid var(--tc-linha);background:var(--tc-painel-2)}
.pc-seg button{height:34px;padding:0 14px;border:0;background:none;font:inherit;font-size:12.5px;font-weight:600;color:var(--tc-texto-2);cursor:pointer}
.pc-seg button.on{background:#0A0A0A;color:#fff}
:root[data-tema="escuro"] .pc-seg button.on{background:var(--tc-y2);color:#0A0A0A}
.pc-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border:1px solid var(--tc-linha-2);background:var(--tc-painel);color:var(--tc-texto);font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:border-color .2s,background .2s}
.pc-btn svg{width:16px;height:16px}
.pc-btn:hover{border-color:var(--tc-texto)}
.pc-btn.y{background:var(--tc-y2);border-color:var(--tc-y2);color:#0A0A0A}.pc-btn.y:hover{background:#FBFF7A}

/* selo, bateria, foto */
.pc-badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:12px;font-size:11.5px;font-weight:700;white-space:nowrap;width:max-content}
.pc-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pc-badge.trabalhando{background:var(--tc-trab-bg);color:var(--tc-trab-tx)}
.pc-badge.disponivel{background:var(--tc-ok-bg);color:var(--tc-ok-tx)}
.pc-badge.carregando{background:rgba(58,120,216,.12);color:var(--tc-s0)}
.pc-badge.urgente{background:var(--tc-urg-bg);color:var(--tc-urg-tx)}
.pc-badge.atencao,.pc-badge.indisponivel{background:var(--tc-ate-bg);color:var(--tc-ate-tx)}
.pc-badge.offline{background:var(--tc-off-bg);color:var(--tc-off-tx)}
.pc-bat{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:var(--tc-texto-2);white-space:nowrap}
.pc-bat i{width:38px;height:6px;border-radius:3px;background:var(--tc-painel-3);overflow:hidden;display:block}
.pc-bat i b{display:block;height:100%;border-radius:3px;background:var(--tc-ok)}
.pc-bat.baixa i b{background:var(--tc-urg)}.pc-bat.media i b{background:var(--tc-ate)}
.pc-bat.sem{color:var(--tc-apoio);font-weight:500}
.pc-foto{display:grid;place-items:center;flex:0 0 auto;overflow:hidden;background:var(--tc-palco)}
.pc-foto img{max-width:86%;max-height:90%;object-fit:contain}
.pc-foto svg{width:46%;height:46%;color:var(--tc-apoio)}
.pc-foto.off img{filter:grayscale(1);opacity:.5}
.pc-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px}

/* ---------------------------------------------------------------- MINHA FROTA */
.pc-frota{display:grid;grid-template-columns:380px 1fr;gap:14px;height:calc(100vh - 190px);min-height:560px}
.pc-lista{overflow:auto;display:flex;flex-direction:column;scrollbar-width:thin}
.pc-busca{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--tc-painel);border-bottom:1px solid var(--tc-linha);cursor:text}
.pc-busca svg{width:17px;height:17px;color:var(--tc-apoio)}
.pc-busca input{flex:1;min-width:0;border:0;background:none;outline:0;font:inherit;font-size:13.5px;color:var(--tc-texto)}
.pc-grupo{display:flex;align-items:center;gap:8px;padding:14px 16px 6px;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tc-apoio)}
.pc-grupo em{font-style:normal;color:var(--tc-texto);letter-spacing:.04em}
.pc-grupo::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--tc-linha-2),transparent)}
.pc-item{position:relative;display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:12px 16px;border:0;border-bottom:1px solid var(--tc-linha);background:none;color:var(--tc-texto);font:inherit;text-align:left;cursor:pointer;transition:background .15s}
.pc-item .pc-foto{width:48px;height:48px}
.pc-item b{display:block;font-size:14px;font-weight:600}.pc-item small{display:block;margin-top:2px;color:var(--tc-apoio);font-size:12px}
.pc-item:hover,.pc-item.on{background:var(--tc-painel-2)}
.pc-item.on::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;background:var(--tc-y2)}
.pc-det{display:grid;grid-template-rows:auto 1fr;overflow:hidden}
.pc-topo{display:grid;grid-template-columns:360px 1fr;min-height:340px}
.pc-palco{position:relative;display:grid;background:var(--tc-palco)}
.pc-palco .pc-foto{background:none;height:100%;min-height:300px}
.pc-palco .pc-foto img{max-height:84%;filter:drop-shadow(0 18px 18px rgba(0,0,0,.25))}
.pc-palco::after{content:"";position:absolute;left:25%;right:25%;bottom:7%;height:18px;border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.28),transparent)}
.pc-info{padding:24px 28px;display:grid;gap:14px;align-content:start}
.pc-info h3{margin:0;font-family:'Plus Jakarta Sans',sans-serif;font-size:32px;font-weight:800;letter-spacing:-.02em;color:var(--tc-texto)}
.pc-linha{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pc-alerta{display:grid;grid-template-columns:22px 1fr;gap:10px;padding:12px 14px;font-size:13px;line-height:1.45;color:var(--tc-texto-2)}
.pc-alerta.urgente{background:var(--tc-urg-bg);border:1px solid rgba(217,58,43,.3)}.pc-alerta.urgente svg,.pc-alerta.urgente b{color:var(--tc-urg-tx)}
.pc-alerta.atencao{background:var(--tc-ate-bg);border:1px solid rgba(217,138,0,.3)}.pc-alerta.atencao svg,.pc-alerta.atencao b{color:var(--tc-ate-tx)}
.pc-alerta svg{width:20px;height:20px}.pc-alerta b{display:block}
.pc-kv{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.pc-kv div{padding:10px 12px;background:var(--tc-painel-2);border:1px solid var(--tc-linha);min-width:0}
.pc-kv small{display:block;font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--tc-apoio);margin-bottom:4px}
.pc-kv b{font-size:14px;color:var(--tc-texto);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.pc-acoes{display:flex;flex-wrap:wrap;gap:8px}
.pc-baixo{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--tc-linha);min-height:0}
.pc-baixo>div{padding:18px 24px;min-height:0;overflow:auto}
.pc-baixo>div+div{border-left:1px solid var(--tc-linha)}
.pc-nums{display:flex;gap:28px;margin:14px 0 4px}
.pc-nums b{display:block;font-size:24px;font-weight:600;letter-spacing:-.02em;color:var(--tc-texto)}.pc-nums small{color:var(--tc-apoio);font-size:12px}
.pc-hist{list-style:none;margin:10px 0 0;padding:0}
.pc-hist li{display:grid;grid-template-columns:96px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--tc-linha);font-size:13px;color:var(--tc-texto)}
.pc-hist time{color:var(--tc-apoio);font-size:12px}

/* ---------------------------------------------------------------- INDICADORES */
.pc-i-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:14px;margin-bottom:14px}
.pc-i-num{padding:32px 36px;display:grid;gap:10px;align-content:center}
.pc-gigante{font-family:'Plus Jakarta Sans',sans-serif;font-size:110px;font-weight:800;letter-spacing:-.05em;line-height:.9;color:var(--tc-texto)}
.pc-frase{margin:0;font-size:18px;line-height:1.5;color:var(--tc-texto-2);max-width:620px}.pc-frase b{color:var(--tc-texto)}
.pc-i-dest{display:grid;gap:12px}
.pc-i-dest .pc-painel{padding:18px 20px;display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:center}
.pc-ic{width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--tc-linha-2);color:var(--tc-texto)}
.pc-ic svg{width:20px;height:20px}
:root[data-tema="escuro"] .pc-ic{border-color:rgba(247,255,63,.35);color:var(--tc-y2)}
.pc-i-dest b{display:block;font-size:15px;color:var(--tc-texto)}.pc-i-dest small{color:var(--tc-apoio);font-size:12.5px}
.pc-i-meio{display:grid;grid-template-columns:1fr 1.4fr;gap:14px}
.pc-donut{display:flex;align-items:center;gap:28px}
.pc-donut-n{font:700 26px 'Space Grotesk',sans-serif;fill:var(--tc-texto)}.pc-donut-r{font:500 11px 'Space Grotesk',sans-serif;fill:var(--tc-apoio)}
.pc-donut-leg{display:grid;gap:14px}.pc-donut-leg b{display:block;font-size:24px;font-weight:600;color:var(--tc-texto)}.pc-donut-leg small{font-size:12.5px;color:var(--tc-apoio);font-weight:500}
.pc-tipo{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--tc-texto-2)}.pc-tipo::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c)}
.pc-heat{display:grid;grid-template-columns:40px repeat(24,1fr);gap:3px;font-size:10.5px;color:var(--tc-apoio)}
.pc-heat i{aspect-ratio:1;display:block;background:var(--tc-s0)}
.pc-heat span{display:flex;align-items:center}.pc-heat span.h{justify-content:center}
.pc-leg{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--tc-texto-2)}
.pc-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.pc-graf{width:100%;display:block}
.pc-graf .e{fill:var(--tc-apoio);font:500 11px 'Space Grotesk',sans-serif}.pc-graf .g{stroke:var(--tc-linha)}

/* ---------------------------------------------------------------- MAPAS */
.pc-mapas{display:grid;grid-template-columns:300px 1fr 340px;gap:14px;height:calc(100vh - 190px);min-height:560px}
.pc-mapa-item{position:relative;display:grid;grid-template-columns:72px 1fr;gap:12px;align-items:center;padding:12px 14px;border:0;border-bottom:1px solid var(--tc-linha);background:none;color:var(--tc-texto);font:inherit;text-align:left;cursor:pointer;transition:background .15s}
.pc-mapa-item:hover,.pc-mapa-item.on{background:var(--tc-painel-2)}
.pc-mapa-item.on::before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:4px;background:var(--tc-y2)}
.pc-mini{width:72px;height:52px;display:grid;place-items:center;background:var(--tc-painel-3);overflow:hidden}
.pc-mini img{width:100%;height:100%;object-fit:cover}.pc-mini svg{width:22px;height:22px;color:var(--tc-apoio)}
.pc-mapa-item b{display:block;font-size:14px;font-weight:600}.pc-mapa-item small{display:block;margin-top:2px;color:var(--tc-apoio);font-size:12px}
.pc-mapa-card{display:grid;grid-template-rows:auto 1fr;min-height:0}
.pc-mapa-card .pc-p-cab{padding-bottom:14px}
.pc-robos-mini{display:flex}.pc-robos-mini .pc-foto{width:30px;height:30px;border-radius:50%;border:2px solid var(--tc-painel);margin-left:-8px}.pc-robos-mini .pc-foto:first-child{margin-left:0}
.pc-mapa-box{position:relative;min-height:0;overflow:hidden;background:var(--tc-painel-3)}
.pc-mapa-vp{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;cursor:grab;touch-action:none}
.pc-mapa-vp.arrastando{cursor:grabbing}
.pc-mapa-zoom{position:relative;flex:0 0 auto;transform-origin:center;transition:transform .08s linear}
.pc-mapa-zoom img{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.pc-pt,.pc-rb{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;pointer-events:none}
.pc-pt i{width:10px;height:10px;border-radius:50%;background:#fff;border:2px solid #0A0A0A}
.pc-pt em,.pc-rb em{position:absolute;bottom:14px;white-space:nowrap;font-style:normal;font-size:11px;font-weight:700;padding:2px 6px;background:rgba(10,10,10,.82);color:#fff}
.pc-pt.sel i{background:var(--tc-y2);transform:scale(1.5);box-shadow:0 0 0 6px rgba(247,255,63,.35)}
.pc-pt.sel em{background:var(--tc-y2);color:#0A0A0A}
.pc-rb i{width:18px;height:18px;border-radius:50%;background:#0A0A0A;border:3px solid var(--tc-y2);box-shadow:0 0 0 0 rgba(247,255,63,.6);animation:pcPulso 1.8s ease-out infinite}
.pc-rb em{background:var(--tc-y2);color:#0A0A0A;bottom:18px}
@keyframes pcPulso{to{box-shadow:0 0 0 14px rgba(247,255,63,0)}}
.pc-mapa-ctrl{position:absolute;right:14px;bottom:14px;display:flex;gap:6px}
.pc-mapa-ctrl button{min-width:36px;height:36px;padding:0 10px;display:grid;place-items:center;border:1px solid var(--tc-linha-2);background:var(--tc-painel);color:var(--tc-texto);font:inherit;font-weight:700;cursor:pointer}
.pc-mapa-ctrl button:hover{background:var(--tc-y2);border-color:var(--tc-y2);color:#0A0A0A}
.pc-mapa-msg{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;padding:24px;text-align:center;color:var(--tc-apoio)}
.pc-mapa-msg svg{width:30px;height:30px}.pc-mapa-msg b{color:var(--tc-texto)}
.pc-spin{width:22px;height:22px;border-radius:50%;border:3px solid var(--tc-linha-2);border-top-color:var(--tc-y1);animation:pcGira .8s linear infinite}
@keyframes pcGira{to{transform:rotate(360deg)}}
.pc-pontos{display:flex;flex-direction:column;min-height:0}
.pc-pontos-tab{flex:1;overflow:auto;padding:4px 10px 10px}
.pc-pontos-tab table{width:100%;border-collapse:collapse;font-size:13px}
.pc-pontos-tab th{text-align:left;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--tc-apoio);padding:10px 12px;border-bottom:1px solid var(--tc-linha)}
.pc-pontos-tab td{padding:10px 12px;border-bottom:1px solid var(--tc-linha);color:var(--tc-texto)}
.pc-pontos-tab tr[data-pc-ponto]{cursor:pointer}.pc-pontos-tab tr[data-pc-ponto]:hover{background:var(--tc-painel-2)}
/* 13/10: ponto selecionado bem marcado na lista (meio escuro, com filete amarelo) */
.pc-pontos-tab tr.sel,.pc-pontos-tab tr.sel:hover{background:#262626}
.pc-pontos-tab tr.sel td{color:#fff}
.pc-pontos-tab tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--tc-y2)}
.pc-pontos-tab tr.sel .pc-sub{color:rgba(255,255,255,.7)}
.pc-pt{cursor:pointer;pointer-events:auto}
.pc-pt em{pointer-events:none}

@media (max-width:1280px){.pc-mapas{grid-template-columns:260px 1fr}.pc-pontos{display:none}.pc-topo{grid-template-columns:260px 1fr}.pc-kv{grid-template-columns:1fr 1fr}.pc-i-hero,.pc-i-meio{grid-template-columns:1fr}}
@media (max-width:1000px){.pc-frota,.pc-mapas{grid-template-columns:1fr;height:auto}.pc-lista{max-height:320px}.pc-mapa-card{height:480px}.pc-topo{grid-template-columns:1fr}.pc-baixo{grid-template-columns:1fr}}

/* ---------- 02/10: ficha técnica no perfil da Minha frota (o card "Detalhes do robô" saiu) */
.pc-baixo .pc-rot{display:block}
.pc-ficha{margin:10px 0 0;display:grid}
.pc-ficha div{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:9px 0;border-bottom:1px solid var(--tc-linha);font-size:13px}
.pc-ficha dt{color:var(--tc-apoio)}
.pc-ficha dd{margin:0;color:var(--tc-texto);font-weight:600;min-width:0;overflow-wrap:anywhere}
.pc-copiar{display:inline-flex;align-items:center;gap:6px;border:0;background:none;padding:0;color:inherit;font:inherit;font-weight:600;cursor:pointer}
.pc-copiar svg{width:14px;height:14px;color:var(--tc-apoio)}.pc-copiar:hover svg{color:var(--tc-texto)}
.pc-tarefa{margin:0;padding:10px 14px;background:var(--tc-ok-bg);color:var(--tc-ok-tx);font-size:13px;font-weight:600}
.pc-mini-mapa{position:relative;width:100%;background:var(--tc-painel-3);overflow:hidden;border:1px solid var(--tc-linha)}
.pc-mini-mapa img{display:block;width:100%;height:100%;object-fit:fill}
.pc-mini-mapa.vazio{height:160px;display:grid;place-items:center}
.pc-mini-mapa .pc-rb{position:absolute}
.pc-rb.antiga i{border-color:var(--tc-apoio);animation:none}
.pc-ao-vivo{display:inline-flex;align-items:center;gap:6px;color:var(--tc-ok-tx);font-weight:700}
.pc-ao-vivo::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;animation:pcPisca 1.4s infinite}
@keyframes pcPisca{50%{opacity:.3}}
.pc-link{display:inline-flex;align-items:center;gap:4px;margin-top:10px;border:0;background:none;padding:0;color:var(--tc-texto);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.pc-link svg{width:14px;height:14px}.pc-link:hover{text-decoration:underline}
.pc-baixo>div{overflow:visible}
.pc-det{overflow:auto;grid-template-rows:auto auto}

/* ---------- 02/10: Indicadores · filtro por série */
.pc-filtros{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:flex-end}

/* ---------- 02/10: Indicadores · filtro de série como lista suspensa (na linha do título)
   Linhas com variantes (T → T300/T600, CC1 → CC1/CC1 Pro…) abrem um submenu ao passar o mouse. */
.pc-cab{flex-wrap:nowrap}
.pc-filtros{flex-wrap:nowrap}
.pc-dd{position:relative}
.pc-dd-btn{display:inline-flex;align-items:center;gap:10px;height:36px;padding:0 12px 0 14px;border:1px solid var(--tc-linha);background:var(--tc-painel);color:var(--tc-texto);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.pc-dd-btn .pc-dd-rot{font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--tc-apoio)}
.pc-dd-btn b{font-weight:700}
.pc-dd-btn svg{width:15px;height:15px;color:var(--tc-apoio);transition:transform .2s}
.pc-dd.aberto .pc-dd-btn{border-color:var(--tc-texto)}
:root[data-tema="escuro"] .pc-dd.aberto .pc-dd-btn{border-color:var(--tc-y2)}
.pc-dd.aberto .pc-dd-btn svg{transform:rotate(180deg)}
.pc-dd-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:240px;padding:6px;background:var(--tc-painel);border:1px solid var(--tc-linha-2);box-shadow:0 18px 40px rgba(0,0,0,.18);display:none}
.pc-dd.aberto>.pc-dd-menu{display:grid;animation:pcDd .18s var(--tc-ease)}
@keyframes pcDd{from{opacity:0;transform:translateY(-6px)}}
.pc-dd-item{display:flex;align-items:center;gap:10px;width:100%;height:38px;padding:0 12px;border:0;background:none;color:var(--tc-texto);font:inherit;font-size:13.5px;font-weight:500;text-align:left;cursor:pointer;white-space:nowrap}
.pc-dd-item span{flex:1}
.pc-dd-item b{font-size:12px;font-weight:700;color:var(--tc-apoio)}
.pc-dd-item svg{width:14px;height:14px;color:var(--tc-apoio)}
.pc-dd-item:hover,.pc-dd-sub:hover>.pc-dd-item{background:var(--tc-painel-2)}
.pc-dd-item.on{font-weight:700}
.pc-dd-item.on::before{content:"";width:4px;height:18px;margin-left:-8px;background:var(--tc-y2)}
.pc-dd-sep{display:block;height:1px;margin:4px 6px;background:var(--tc-linha)}
.pc-dd-sub{position:relative}
.pc-dd-filho{top:-7px;right:calc(100% + 6px);min-width:220px}
.pc-dd-sub:hover>.pc-dd-filho,.pc-dd-sub.aberto>.pc-dd-filho,.pc-dd-sub:focus-within>.pc-dd-filho{display:grid;animation:pcDd .15s var(--tc-ease)}

/* ---------- 02/10: Minha frota e Mapas cabem na janela (altura calculada em encaixarAltura());
   sem a folga de baixo da página, e rolagens internas finas no tom do tema */
body:has(#tela-frota:not([hidden])) .pa-conteudo,body:has(#tela-mapas:not([hidden])) .pa-conteudo{padding-bottom:0}
.pc-frota,.pc-mapas{height:auto;min-height:0}
.pc-lista,.pc-det,.pc-pontos-tab,.pc-baixo>div{scrollbar-width:thin;scrollbar-color:var(--tc-linha-2) transparent}
.pc-lista::-webkit-scrollbar,.pc-det::-webkit-scrollbar,.pc-pontos-tab::-webkit-scrollbar{width:8px}
.pc-lista::-webkit-scrollbar-thumb,.pc-det::-webkit-scrollbar-thumb,.pc-pontos-tab::-webkit-scrollbar-thumb{background:var(--tc-linha-2);border-radius:4px}
.pc-lista::-webkit-scrollbar-track,.pc-det::-webkit-scrollbar-track,.pc-pontos-tab::-webkit-scrollbar-track{background:transparent}
/* telas até ~1700px: os 4 dados do perfil em 2x2 pra não cortar o texto */
@media (max-width:1700px){.pc-kv{grid-template-columns:repeat(2,1fr)}}
/* especificações do fabricante no perfil do robô */
.pc-aplic{margin:8px 0 2px;font-size:13px;color:var(--tc-texto-2)}
.pc-fonte{margin:10px 0 0;font-size:11.5px;color:var(--tc-apoio)}
.pc-fonte a{color:inherit;text-decoration:underline}

/* ---------- 02/10 · ficha técnica e especificações lado a lado + menu "Realizar uma tarefa" */
.pc-fichas{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:22px}
.pc-fichas .pc-ficha div{grid-template-columns:minmax(110px,42%) 1fr}
@media (max-width:1500px){.pc-fichas{grid-template-columns:1fr;gap:22px}}
.pc-mt{position:relative}
.pc-mt-card{position:absolute;left:0;top:calc(100% + 8px);z-index:30;width:320px;padding:14px;display:grid;gap:6px;
  background:var(--tc-painel);border:1px solid var(--tc-linha-2);box-shadow:0 18px 40px rgba(0,0,0,.18);
  opacity:0;visibility:hidden;transform:translate3d(0,-6px,0);transition:opacity .18s,transform .18s,visibility 0s .18s}
.pc-mt.aberto .pc-mt-card{opacity:1;visibility:visible;transform:none;transition:opacity .18s,transform .18s}
.pc-mt-card .pc-rot{margin-bottom:4px}
.pc-mt-op{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:12px;padding:10px;border:1px solid var(--tc-linha);background:transparent;color:var(--tc-texto);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
.pc-mt-op:hover:not([disabled]){border-color:var(--tc-y2);background:rgba(247,255,63,.06)}
.pc-mt-op[disabled]{opacity:.45;cursor:not-allowed}
.pc-mt-op b{display:block;font-size:13.5px}
.pc-mt-op small{display:block;font-size:12px;color:var(--tc-apoio);margin-top:2px}
.pc-mt-op>svg{width:16px;height:16px;color:var(--tc-apoio)}
.pc-mt-op em{font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tc-apoio);border:1px solid var(--tc-linha-2);padding:3px 6px}
.pc-mt-ic{width:36px;height:36px;display:grid;place-items:center;background:rgba(247,255,63,.1);color:var(--tc-y2)}
.pc-mt-ic svg{width:18px;height:18px}
.pc-mt-aviso{margin:0 0 4px;font-size:12.5px;color:var(--tc-texto-2)}

/* ---------- 02/10 · card "Encontrar robô" (planta + posição atual, por cima da tela) */
.pc-achar{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.55);opacity:0;visibility:hidden;transition:opacity .2s,visibility 0s .2s}
.pc-achar.aberto{opacity:1;visibility:visible;transition:opacity .2s}
.pc-achar-card{width:min(1100px,100%);max-height:calc(100vh - 48px);overflow:auto;padding:22px 24px 20px;display:grid;gap:14px;justify-items:start;
  background:var(--tc-painel);border:1px solid rgba(247,255,63,.35);box-shadow:0 24px 60px rgba(0,0,0,.5);transform:translate3d(0,10px,0);transition:transform .22s cubic-bezier(.2,.8,.2,1)}
.pc-achar.aberto .pc-achar-card{transform:none}
.pc-achar-cab{width:100%;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.pc-achar-cab h3{margin:4px 0 6px;font-family:'Plus Jakarta Sans',sans-serif;font-size:24px;font-weight:800;color:var(--tc-texto)}
.pc-achar-cab .pc-sub{margin:0}
.pc-achar-bt{display:flex;gap:8px}
.pc-achar-mapa{position:relative;justify-self:center;max-width:100%;background:var(--tc-painel-3);border:1px solid var(--tc-linha);overflow:hidden}
.pc-achar-mapa img{display:block;width:100%;height:100%;object-fit:fill}
.pc-achar-mapa.vazio{width:100%;height:300px;display:grid;place-items:center}
.pc-achar-mapa .pc-rb{position:absolute}
.pc-achar .pc-link{margin-top:0}

/* ---------- 02/10 · foto do perfil com tamanho único para todos os modelos (caixa do CC1: 260×308) */
.pc-palco .pc-foto img{width:min(260px,86%);height:auto;aspect-ratio:260/308;max-width:none;max-height:none;object-fit:contain}

/* ---------- 02/10 · marcador do robô igual ao do módulo de Entrega (ícone pulsando + aura) */
.pc-rb i.pc-rb-ico{position:relative;width:30px;height:30px;border:0;border-radius:0;background:none;box-shadow:none;animation:pcMarcPulso 1.6s ease-in-out infinite}
.pc-rb i.pc-rb-ico img{position:relative;z-index:1;display:block;width:100%;height:100%;object-fit:contain}
.pc-rb i.pc-rb-ico::before{content:"";position:absolute;inset:0;border-radius:50%;background:var(--sucesso,#22c55e);z-index:0;pointer-events:none;animation:pcMarcAura 1.6s ease-out infinite}
.pc-rb.antiga i.pc-rb-ico{animation:none;opacity:.6}.pc-rb.antiga i.pc-rb-ico::before{display:none}
.pc-rb em{bottom:30px}
@keyframes pcMarcPulso{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes pcMarcAura{0%{transform:scale(1);opacity:.55}100%{transform:scale(2.2);opacity:0}}

/* ---------- 02/10 · card de histórico (Últimos eventos) com páginas de 10 */
.pc-hist-card{margin-top:22px;border:1px solid var(--tc-linha);padding:14px 16px 6px}
.pc-hist-topo{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:28px}
.pc-hist-card .pc-hist{margin-top:6px}
.pc-hist-card .pc-hist li:last-child{border-bottom:0}
.pc-hist-nav{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--tc-apoio)}
.pc-hist-nav button{width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--tc-linha);background:none;color:var(--tc-texto);cursor:pointer}
.pc-hist-nav button:hover:not([disabled]){border-color:var(--tc-texto)}
.pc-hist-nav button[disabled]{opacity:.35;cursor:default}
.pc-hist-nav svg{width:14px;height:14px}

/* ---------- 02/10 · entradas mais leves (Minha frota, Indicadores, Mapas) */
.pc-anim{animation:pcEntra .26s var(--tc-ease) both}
@keyframes pcEntra{from{opacity:0;transform:translateY(6px)}}
.pc-dd,.pc-dd-sub{animation-duration:.12s !important}

/* ---------- 02/10 · "Tarefas por dia": dica ao passar o mouse em cada dia */
.pc-graf-wrap{position:relative}
.pc-graf-dias .pc-dia{cursor:default;transition:opacity .12s}
.pc-graf-dias:has(.pc-dia.on) .pc-dia:not(.on){opacity:.35}
.pc-graf-dias .pc-dia.on .pc-dia-alvo{fill:var(--tc-painel-2)}
.pc-dica-dia{position:absolute;top:0;z-index:5;min-width:180px;padding:12px 14px;display:grid;gap:5px;pointer-events:none;
  background:var(--tc-painel);border:1px solid var(--tc-linha-2);box-shadow:0 12px 30px rgba(10,10,10,.18);font-size:12.5px;color:var(--tc-texto)}
.pc-dica-dia[hidden]{display:none}
.pc-dica-dia b{font-size:13px}
.pc-dica-tot{font-family:'Plus Jakarta Sans',sans-serif;font-size:20px;font-weight:800;line-height:1.1;margin-bottom:2px}
.pc-dica-l{display:flex;align-items:center;gap:8px;color:var(--tc-texto-2)}
.pc-dica-l i{width:9px;height:9px;border-radius:2px;flex:0 0 auto}
.pc-dica-l em{margin-left:auto;font-style:normal;font-weight:700;color:var(--tc-texto)}
.pc-dica-dia small{margin-top:3px;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--tc-apoio)}

/* ---------- 05/10 · fotos da Minha frota com o mesmo tamanho para todos os robôs
   As imagens chegam recortadas no contorno do robô (ver apararFoto em paginas-connect.js), então
   uma caixa fixa + contain deixa todos ocupando o mesmo espaço. Caixa = a do BellaBot (260×308). */
.pc-palco .pc-foto img{width:260px !important;height:308px !important;max-width:86%;aspect-ratio:auto;object-fit:contain;object-position:50% 100%}
.pc-item .pc-foto img,.pc-robos-mini .pc-foto img{width:80%;height:84%;max-width:none;max-height:none;object-fit:contain;object-position:50% 100%}
#pgFrota .pc-foto img:not(.aparada){opacity:0}
#pgFrota .pc-foto img.aparada{opacity:1;transition:opacity .15s}

/* ---------- 05/10 · uso do robô: 7/30 dias, último uso e gráfico diário */
.pc-uso-cab{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:8px 0 6px}
.pc-uso-per{font-size:12.5px;font-weight:700;color:var(--tc-texto)}
.pc-uso-graf{display:grid;grid-template-columns:repeat(30,1fr);gap:2px;align-items:end;height:42px;margin-top:14px;padding-bottom:1px;border-bottom:1px solid var(--tc-linha)}
.pc-uso-graf i{display:block;background:var(--tc-s0,#3B7DDD);min-height:0;border-radius:1px 1px 0 0}
.pc-uso-eixo{display:flex;justify-content:space-between;margin-top:4px;font-size:10.5px;color:var(--tc-apoio)}

/* ---------- 05/10 · gráfico de uso legível: título, datas, faixa dos 7 dias, dica por dia */
.pc-uso-graf-cab{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:16px}
.pc-uso-graf-cab b{font-size:12.5px;color:var(--tc-texto)}
.pc-uso-graf-cab span{font-size:11.5px;color:var(--tc-apoio)}
.pc-uso-graf-wrap{position:relative;margin-top:18px}
.pc-uso-graf{display:grid;grid-template-columns:repeat(30,1fr);gap:3px;align-items:end;height:84px;margin:0;padding:0 0 1px;border-bottom:1px solid var(--tc-linha-2);
  background:none}
.pc-uso-faixa7{position:absolute;right:0;top:-15px;width:calc(7/30*100%);text-align:center;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tc-apoio)}
.pc-uso-col{height:100%;display:flex;align-items:flex-end;cursor:default}
.pc-uso-col i{display:block;width:100%;background:#3B7DDD;border-radius:2px 2px 0 0;opacity:.75;transition:opacity .12s}
.pc-uso-col.sem i{opacity:1}
.pc-uso-col i.zero{height:2px;background:var(--tc-linha-2);opacity:1}
.pc-uso-col.on i{opacity:1;outline:2px solid var(--tc-texto);outline-offset:1px}
.pc-uso-graf:has(.pc-uso-col.on) .pc-uso-col:not(.on) i{opacity:.35}
.pc-uso-dica{position:absolute;bottom:calc(100% + 6px);z-index:5;padding:8px 11px;display:grid;gap:2px;white-space:nowrap;pointer-events:none;background:var(--tc-painel);border:1px solid var(--tc-linha-2);box-shadow:0 10px 24px rgba(10,10,10,.18);font-size:12px;color:var(--tc-texto-2)}
.pc-uso-dica[hidden]{display:none}
.pc-uso-dica b{font-size:12.5px;color:var(--tc-texto)}
.pc-uso-eixo{position:relative;height:16px;margin-top:5px;display:block}
.pc-uso-eixo span{position:absolute;transform:translateX(-50%);font-size:10.5px;color:var(--tc-apoio);white-space:nowrap}
.pc-uso-eixo span.fim{transform:translateX(-100%);font-weight:700;color:var(--tc-texto-2)}
.pc-uso-graf-wrap{margin-top:30px}.pc-uso-faixa7{top:-17px}

/* ---------- 05/10 · nº de série selecionável (texto) + botão de copiar ao lado */
.pc-sn{user-select:text;-webkit-user-select:text;cursor:text;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.pc-ficha dd:has(.pc-sn){display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pc-copiar{width:26px;height:26px;justify-content:center;border:1px solid var(--tc-linha-2) !important;flex:0 0 auto}
.pc-copiar:hover{border-color:var(--tc-texto) !important}
.pc-copiar.copiado svg{color:#1E9E57}
.pc-ponto-info{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:10px 22px;border-bottom:1px solid var(--tc-borda,rgba(0,0,0,.08));background:rgba(247,255,63,.18);font-size:13px}
.pc-ponto-info span{opacity:.75}
.pc-ponto-info .pc-ponto-cod{margin-left:auto;opacity:1;font-size:12px;display:inline-flex;align-items:center;gap:6px}
.pc-ponto-info code{padding:2px 7px;font:600 12px/1.4 ui-monospace,Consolas,monospace;background:#0A0A0A;color:var(--tc-y2);user-select:all}
.pc-mapa-card:has(.pc-ponto-info){grid-template-rows:auto auto 1fr}
/* últimos 7 dias: chave (colchete) em cima, sem pintar o fundo */
.pc-uso-faixa7{top:-22px;padding-bottom:7px;white-space:nowrap;display:flex;justify-content:center}
.pc-uso-faixa7::after{content:"";position:absolute;left:1px;right:0;bottom:0;height:5px;border:1.5px solid var(--tc-texto-2);border-bottom:0}
.pc-uso-graf-wrap{margin-top:34px}
/* especificações técnicas: lista suspensa embaixo da ficha técnica */
.pc-espec{margin-top:22px;border:1px solid var(--tc-linha)}
.pc-espec summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;cursor:pointer;list-style:none;user-select:none}
.pc-espec summary::-webkit-details-marker{display:none}
.pc-espec summary .pc-rot{margin:0}
.pc-espec summary svg{width:16px;height:16px;color:var(--tc-apoio);transition:transform .2s}
.pc-espec[open] summary svg{transform:rotate(180deg)}
.pc-espec summary:hover svg{color:var(--tc-texto)}
.pc-espec-corpo{padding:0 16px 8px}
.pc-espec-corpo .pc-aplic{margin-top:0}
.pc-espec-corpo .pc-ficha div:last-child{border-bottom:0}

/* 14/10: robôs no mapa — etiqueta abaixo do marcador (as dos pontos ficam em cima), menor; grupo com o número */
.pc-mapa-zoom .pc-rb em{bottom:auto;top:30px;font-size:10.5px;padding:1px 6px;opacity:.95}
.pc-rb-n{position:absolute;right:-7px;top:-7px;z-index:2;min-width:17px;height:17px;padding:0 4px;border-radius:9px;display:grid;place-items:center;background:#0A0A0A;color:var(--tc-y2);font-size:10.5px;font-weight:800;line-height:1;box-shadow:0 0 0 2px var(--tc-y2)}
.pc-rb{pointer-events:auto}
.pc-ponto-info .pc-ponto-robo{opacity:1;display:inline-flex;align-items:center;gap:4px;padding:2px 8px;background:#0A0A0A;color:#fff;font-size:12px}
.pc-ponto-info .pc-ponto-robo b{color:var(--tc-y2)}

/* 14/10: foto do modelo ao lado do ponto em que há um robô parado */
.pc-pt-nome{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}
.pc-pt-robo{display:inline-flex}
.pc-pt-robo .pc-foto{width:26px;height:26px;border-radius:6px;background:var(--tc-painel-2);border:1px solid var(--tc-linha)}
.pc-pt-robo .pc-foto img{max-width:84%;max-height:88%}
.pc-pontos-tab tr.sel .pc-pt-robo .pc-foto{background:#3a3a3a;border-color:#4a4a4a}

/* 14/10: arrastar o mapa nunca seleciona a planta/texto nem arrasta a imagem */
.pc-mapa-vp,.pc-mapa-vp *{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}
.pc-mapa-vp{touch-action:none}
.pc-mapa-vp img{pointer-events:none}

/* 16/10: detalhe do robô só com Bateria e Mapa no topo; Encontrar robô junto das ações */
.pc-det .pc-kv{grid-template-columns:repeat(2,minmax(0,1fr));max-width:520px}
.pc-det .pc-acoes{flex-wrap:wrap}

/* 16/10: desempenho — o pulso do robô na página Mapas animava box-shadow (repintava o mapa inteiro a cada
   quadro). Agora é um anel com transform/opacity, que a placa de vídeo anima sem repintar nada. */
.pc-rb i{animation:none;box-shadow:none;position:relative}
.pc-rb i:not(.pc-rb-ico)::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:2px solid var(--tc-y2);opacity:0;pointer-events:none;animation:pcAnelGpu 1.8s ease-out infinite}
@keyframes pcAnelGpu{0%{transform:scale(1);opacity:.6}100%{transform:scale(2.2);opacity:0}}
html.tc-reduzir-anim .pc-rb i::after{animation:none;display:none}
/* 16/10: vista 3D na página Mapas (mapas-3d-connect.js) */
.pm-vista{display:inline-flex;margin-left:auto;border:1px solid var(--tc-linha);background:var(--tc-painel-2)}
.pm-vista button{height:30px;padding:0 12px;border:0;background:none;color:var(--tc-apoio);font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.pm-vista button.on{background:var(--tc-painel);color:var(--tc-texto);box-shadow:inset 0 -2px 0 var(--tc-y2)}
.pm-3d-el{position:absolute;inset:0;z-index:2;background:radial-gradient(120% 90% at 50% 38%,#16295A 0%,#0C1938 52%,#070E22 100%)}
.pc-mapa-box.pm-3d .pc-mapa-vp,.pc-mapa-box.pm-3d .pc-mapa-ctrl{visibility:hidden}
.pm-3d-el .mo3d-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.pm-3d-el .mo3d-canvas.arrastando{cursor:grabbing}
.pm-3d-el .mo3d-dica{position:absolute;z-index:3;padding:4px 9px;border-radius:6px;background:rgba(7,14,34,.88);border:1px solid rgba(142,160,194,.3);color:#EAF0FF;font-size:12px;font-weight:600;white-space:nowrap;pointer-events:none}
.pm-3d-el .mo3d-fixo{position:absolute;z-index:3;transform:translate(-50%,calc(-100% - 34px));padding:4px 9px;border-radius:6px;background:#F7FF3F;color:#0A1530;font-size:12px;font-weight:700;white-space:nowrap;pointer-events:none}
.pm-3d-el .mo3d-reset{position:absolute;right:12px;top:12px;z-index:3;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(142,160,194,.3);background:rgba(7,14,34,.72);color:#CBD5E8;cursor:pointer;opacity:.75}
.pm-3d-el .mo3d-reset:hover{opacity:1}
.pm-3d-el .mo3d-reset svg{width:15px;height:15px}
.pm-3d-el .pm-legp{position:absolute;left:12px;bottom:12px;z-index:3}
.tp-leg{display:flex;flex-wrap:wrap;gap:4px 10px;padding:6px 10px;border-radius:10px;background:rgba(7,14,34,.62);font-size:11px;color:#A8B4CC;pointer-events:none}
.tp-leg:empty{display:none}
.tp-leg .tp-leg-i{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.tp-leg .tp-leg-i i{width:16px;height:16px;display:grid;place-items:center;border-radius:4px;border:1.5px solid var(--tp);color:var(--tp);background:rgba(10,20,48,.9)}
.tp-leg .tp-leg-i i svg{width:10px;height:10px}

/* 16/10: Mapas 2D mais limpo — ícone do tipo em cada ponto; nome só ao passar o mouse ou selecionado */
.pc-pt i{width:20px;height:20px;display:grid;place-items:center;border-radius:6px;background:#0F1F45;border:1.5px solid var(--tp,#fff);color:var(--tp,#fff);box-shadow:0 2px 6px rgba(0,0,0,.35)}
.pc-pt i svg{width:11px;height:11px}
.pc-pt em{opacity:0;transform:translateY(3px);transition:opacity .15s,transform .15s;bottom:24px}
.pc-pt:hover em,.pc-pt.sel em{opacity:1;transform:none}
.pc-pt:hover{z-index:3}
.pc-pt.sel{z-index:4}
.pc-pt.sel i{transform:scale(1.25);background:var(--tp,var(--tc-y2));color:#0A1530;box-shadow:0 0 0 5px rgba(247,255,63,.3)}
.pc-leg-pts{position:absolute;left:14px;bottom:14px;z-index:3}
/* painel do ponto: cartão flutuante sobre o mapa (não estica o card) */
.pc-mapa-card:has(.pc-ponto-info){grid-template-rows:auto 1fr}
.pc-mapa-box .pc-ponto-info{position:absolute;left:14px;top:14px;z-index:5;width:min(340px,calc(100% - 28px));display:grid;gap:10px;padding:14px;border:1px solid rgba(255,255,255,.12);border-left:3px solid var(--tc-y2);background:rgba(20,21,24,.97);color:#F2F2F2;box-shadow:0 18px 40px rgba(0,0,0,.4);font-size:13px;animation:pcPiEntra .2s ease both}
@keyframes pcPiEntra{from{opacity:0;transform:translateY(-6px)}}
html.tc-reduzir-anim .pc-mapa-box .pc-ponto-info{animation:none}
.pc-mapa-box .pc-ponto-info span{opacity:1}
.pc-pi-cab{display:grid;grid-template-columns:36px 1fr 28px;align-items:center;gap:10px}
.pc-pi-ic{width:36px;height:36px;display:grid;place-items:center;border-radius:8px;border:1.5px solid var(--tp);color:var(--tp);background:#0F1F45}
.pc-pi-cab b{display:block;font-size:15px;line-height:1.2}
.pc-pi-cab div>span{display:block;font-size:12px;color:rgba(255,255,255,.6)}
/* 26/10: o "span" acima pegava também o quadrado do ícone (ia para o canto, sem cor) */
.pc-pi-cab .pc-pi-ic{display:grid;place-items:center;color:var(--tp)}
.pc-pi-cab .pc-pi-ic svg{width:18px;height:18px}
.pc-pi-x{width:28px;height:28px;border:0;background:none;color:rgba(255,255,255,.6);font-size:20px;line-height:1;cursor:pointer}
.pc-pi-x:hover{color:#fff}
.pc-mapa-box .pc-ponto-info .pc-ponto-robo{justify-self:start;background:rgba(255,255,255,.08)}
.pc-mapa-box .pc-ponto-info .mp-sec{margin:0;padding:10px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.12);max-width:none}
.pc-mapa-box .pc-ponto-info .mp-rot,.pc-mapa-box .pc-ponto-info .mp-nota{color:rgba(255,255,255,.55)}
.pc-mapa-box .pc-ponto-info .mp-btn{background:rgba(255,255,255,.06);color:#fff;border-color:rgba(255,255,255,.2)}
.pc-mapa-box .pc-ponto-info .mp-btn:hover{border-color:#fff}
.pc-mapa-box .pc-ponto-info .pt-abrir{width:100%;justify-content:center;margin:0}
.pc-mapa-box .pc-ponto-info .pt-abrir{height:36px;background:#F7FF3F;color:#0A0A0A;border-color:#F7FF3F;font-size:13px}
.pc-mapa-box.pm-3d .pc-leg-pts{display:none}
/* 16/10: nomes dos robôs no 2D também só ao passar o mouse (o número do grupo continua no marcador) */
.pc-rb em{opacity:0;transition:opacity .15s}
.pc-rb:hover em{opacity:1}
.pc-rb{pointer-events:auto}
/* 16/10: no 2D a cena 3D sai de cima do mapa (antes ficava cobrindo a planta e parecia travado) */
.pc-mapa-box:not(.pm-3d) .pm-3d-el{display:none}
/* 16/10: seleção de pontos dos módulos em 3D (modulos-3d-connect.js) */
.md3d-vista{position:absolute;right:24px;bottom:78px;z-index:6;display:inline-flex;border:1px solid rgba(142,160,194,.35);background:rgba(7,14,34,.82)}
.md3d-vista button{height:30px;padding:0 12px;border:0;background:none;color:#A8B4CC;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer}
.md3d-vista button.on{background:#F7FF3F;color:#0A0A0A}
.md3d-el{position:absolute;inset:0;z-index:4;background:radial-gradient(120% 90% at 50% 38%,#16295A 0%,#0C1938 52%,#070E22 100%)}
#entregaMapaViewport:not(.md3d) .md3d-el{display:none}
#entregaMapaViewport.md3d{isolation:isolate} /* a cena fica por baixo do painel "Selecione os Pontos" */
#entregaMapaViewport.md3d .pa-mapa-zoom-conteudo{visibility:hidden}
.md3d-oculto{display:none !important}
.md3d-el .mo3d-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.md3d-el .mo3d-canvas.arrastando{cursor:grabbing}
.md3d-el .mo3d-dica{position:absolute;z-index:3;padding:4px 9px;border-radius:6px;background:rgba(7,14,34,.88);border:1px solid rgba(142,160,194,.3);color:#EAF0FF;font-size:12px;font-weight:600;white-space:nowrap;pointer-events:none}
.md3d-el .mo3d-reset{position:absolute;left:auto !important;top:auto !important;right:24px;bottom:120px;z-index:3;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(142,160,194,.3);background:rgba(7,14,34,.72);color:#CBD5E8;cursor:pointer}
.md3d-el .mo3d-reset svg{width:15px;height:15px}
.md3d-el .mo3d-btn-cam,.md3d-el .mo3d-menu,.md3d-el .mo3d-selo{display:none !important}
#entregaMapaViewport.md3d .pa-mapa-ponto-popup{z-index:7}

/* 16/10: Mapas em 2D com o mesmo fundo azul do 3D (a planta cinza original só aparece já trocada pela limpa) */
.pc-mapa-box.pm-azul{background:radial-gradient(120% 90% at 50% 38%,#16295A 0%,#0C1938 52%,#070E22 100%)}
.pc-mapa-box.pm-azul #pcMapaZoom > img:not(.pm-limpa){opacity:0}
.pc-mapa-box.pm-azul #pcMapaZoom > img.pm-filtro{filter:grayscale(1) invert(1) contrast(1.5) brightness(.9);mix-blend-mode:screen;opacity:.75}
.pc-mapa-box.pm-azul .pm-contorno{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pc-mapa-box.pm-azul .pm-contorno path{fill:#1B2D56;fill-opacity:.78;fill-rule:evenodd;stroke:#CBD5E8;stroke-opacity:.92;stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.pc-mapa-box.pm-azul #pcMapaZoom > img.pm-com-contorno{opacity:0}
/* 16/10: 3D dos módulos em cinzas neutros (o resto da tela do módulo continua igual) */
.md3d-el{background:radial-gradient(120% 90% at 50% 38%,#3A3C41 0%,#26282C 52%,#17181B 100%)}
.md3d-el .mo3d-reset,.md3d-vista{background:rgba(18,18,20,.82);border-color:rgba(255,255,255,.18)}
.md3d-vista button{color:#C8C8C8}
.md3d-el .mo3d-dica{background:rgba(18,18,20,.9);border-color:rgba(255,255,255,.18)}

/* 16/10: tema escuro — todos os mapas no visual grafite (fundo grafite, chão cinza-escuro, paredes brancas), como o 3D dos módulos */
:root[data-tema="escuro"] .pm-3d-el,:root[data-tema="escuro"] .pc-mapa-box.pm-azul,:root[data-tema="escuro"] .md3d-el{background:radial-gradient(120% 90% at 50% 38%,#34363B 0%,#25272B 52%,#18191C 100%)}
:root[data-tema="escuro"] .pc-mapa-box.pm-azul .pm-contorno path{fill:#2B2C30;fill-opacity:1;stroke:#F2F2F2}
/* mapa 2D dos módulos (imagem original da Pudu, cinza-claro): invertida para chão escuro e paredes claras */
:root[data-tema="escuro"] #entregaMapaZoomConteudo > img:not(.md-limpa){filter:invert(1) grayscale(1) brightness(.78) contrast(1.15)}
:root[data-tema="escuro"] #entregaMapaViewport{background:#1D1E21}
:root[data-tema="escuro"] .pm-3d-el .mo3d-reset{background:rgba(18,18,20,.82);border-color:rgba(255,255,255,.18)}
/* 16/10: TESTE · anúncio da Pudu fixado no ponto (anuncio-ponto-connect.js) */
.ap-teste{display:inline-block;margin-left:6px;padding:1px 6px;background:#F7FF3F;color:#0A0A0A;font-size:9.5px;font-weight:800;letter-spacing:.06em;vertical-align:1px}
.ap-robo{height:30px;padding:0 8px;background:rgba(255,255,255,.06);color:#fff;border:1px solid rgba(255,255,255,.2);font:inherit;font-size:12.5px}
.ap-robo option{color:#0A0A0A}
.ap-lista{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-height:150px;overflow:auto}
.ap-lista li{display:flex;align-items:center;gap:8px;padding:6px 8px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.ap-tipo{display:grid;place-items:center;color:#F7FF3F}
.ap-info{display:grid;min-width:0;flex:1}
.ap-info b{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ap-info small{font-size:11px;color:rgba(255,255,255,.55)}
.ap-x{width:28px;height:28px;display:grid;place-items:center;border:0;background:none;color:rgba(255,255,255,.55);cursor:pointer}
.ap-x:hover{color:#FF6B5E}
.ap-erro{color:#FFB4AC !important}
.ap-caixa{max-width:520px}
.ap-campo{display:grid;gap:6px}
.ap-campo>span{font-size:11.5px;font-weight:700;color:rgba(255,255,255,.6)}
.ap-campo select,.ap-campo input[type=number]{height:38px;padding:0 10px;background:#1E2024;color:#fff;border:1px solid rgba(255,255,255,.16);font:inherit;font-size:13px}
.ap-campo select:focus,.ap-campo input:focus{outline:none;border-color:#F7FF3F}
.ap-cenas{display:grid;gap:4px;max-height:190px;overflow:auto;padding:8px;border:1px solid rgba(255,255,255,.12);background:#17181B}
.ap-cena{display:flex;align-items:center;gap:8px;font-size:13px;color:#fff;cursor:pointer}
.ap-cena input{accent-color:#F7FF3F;width:15px;height:15px}
.ap-cena small{color:rgba(255,255,255,.45)}
.ap-linha{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* a seção do anúncio tem classe própria (com a mesma classe da "Mídia deste ponto" as duas se apagavam uma à outra em laço e a página travava) */
.ap-sec{display:grid;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--tc-linha,rgba(255,255,255,.12))}
.pc-mapa-box .pc-ponto-info .ap-sec{margin:0;padding:10px 0 0;border-top:1px solid rgba(255,255,255,.12)}
.pc-mapa-box .pc-ponto-info .ap-sec .mp-btn{background:rgba(255,255,255,.06);color:#fff;border-color:rgba(255,255,255,.2)}

/* 16/10: o fundo azul (grafite no escuro) e a planta escondida até a troca valem desde o primeiro quadro — antes
   dependiam da classe .pm-azul, colocada um instante depois, e o mapa piscava em branco ao clicar num ponto */
#pgMapas .pc-mapa-card .pc-mapa-box{background:radial-gradient(120% 90% at 50% 38%,#16295A 0%,#0C1938 52%,#070E22 100%)}
:root[data-tema="escuro"] #pgMapas .pc-mapa-card .pc-mapa-box{background:radial-gradient(120% 90% at 50% 38%,#34363B 0%,#25272B 52%,#18191C 100%)}
#pgMapas .pc-mapa-card #pcMapaZoom > img:not(.pm-limpa){opacity:0}

/* 16/10: módulos, mapa 2D no visual da página Mapas (o ícone do BellaBot e os pontos continuam como estão) */
#entregaMapaViewport.md-azul{background:radial-gradient(120% 90% at 50% 38%,#16295A 0%,#0C1938 52%,#070E22 100%)}
:root[data-tema="escuro"] #entregaMapaViewport.md-azul{background:radial-gradient(120% 90% at 50% 38%,#34363B 0%,#25272B 52%,#18191C 100%)}
#entregaMapaViewport.md-azul #entregaMapaZoomConteudo > img:not(.md-limpa){opacity:0}
#entregaMapaViewport.md-azul #entregaMapaZoomConteudo > img.md-com-contorno{opacity:0}
#entregaMapaViewport.md-azul #entregaMapaZoomConteudo > img.md-filtro{filter:grayscale(1) invert(1) contrast(1.5) brightness(.9);mix-blend-mode:screen;opacity:.75}
#entregaMapaZoomConteudo .md-contorno{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#entregaMapaZoomConteudo .md-contorno path{fill:#1B2D56;fill-opacity:.78;fill-rule:evenodd;stroke:#CBD5E8;stroke-opacity:.92;stroke-width:1.4;vector-effect:non-scaling-stroke;stroke-linejoin:round}
:root[data-tema="escuro"] #entregaMapaZoomConteudo .md-contorno path{fill:#2B2C30;fill-opacity:1;stroke:#F2F2F2}

/* 16/10: foto do robô como marcador nos mapas 2D (Mapas, achar no mapa e módulos) */
.pc-rb-ico img.pc-rb-foto{object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}
#entregaMapaMarcador img.md-rb-foto{object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}
/* 16/10: mapa 2D dos módulos nítido no zoom — a camada fixa da GPU (entrega-connect.css) desenhava os nomes dos pontos
   e a planta no tamanho 100% e só esticava (borrado a 200%). Agora a camada só existe durante o zoom/arraste
   (.otimizado-gpu, do dashboard.js); parado, o navegador redesenha tudo no tamanho certo. */
/* (revisado) a camada da GPU volta a ficar sempre ligada — sem ela, cada atualização do robô redesenhava a planta
   inteira (pesado). Para não borrar, modulos-3d-connect.js desliga e religa a camada logo depois de cada zoom:
   o navegador redesenha uma vez no tamanho novo (nomes nítidos) e volta a só mover a camada. */
#entregaMapaZoomConteudo.md-redesenhar{will-change:auto}
#entregaMapaZoomConteudo .md-contorno{shape-rendering:optimizeSpeed}
#entregaMapaZoomConteudo .pa-mapa-picker-ponto,#entregaMapaZoomConteudo .pa-mapa-picker-ponto *{-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}
/* 16/10: robô offline na última posição conhecida (página Mapas) */
#pcMapaZoom .pc-rb.antiga *{animation:none !important}
/* 16/10: em qualquer mapa 2D o nome do robô só aparece ao clicar nele (a foto do modelo fica sempre) */
#pcMapaZoom .pc-rb em,#pcMapaZoom .pc-rb:hover em{opacity:0;pointer-events:none}
#pcMapaZoom .pc-rb.sel em{opacity:1}
#pcMapaZoom .pc-rb{cursor:pointer}
/* 16/10: robô no 2D de Mapas = foto do modelo DENTRO de um círculo (igual ao Início), por cima dos pontos */
#pcMapaZoom .pc-rb,.pc-achar-mapa .pc-rb{z-index:3}
.pc-rb i.pc-rb-ico{width:30px;height:30px}
.pc-rb i.pc-rb-ico img{width:100%;height:100%;padding:2px;border-radius:50%;background:#0F1F45;box-shadow:0 0 0 2px var(--sucesso,#22c55e),0 4px 10px rgba(0,0,0,.45);object-fit:contain;box-sizing:border-box;filter:none}
.pc-rb-ico img.pc-rb-foto{filter:none}
.pc-rb.antiga i.pc-rb-ico img{box-shadow:0 0 0 2px #8A93A6,0 4px 10px rgba(0,0,0,.45)}
.pc-rb.sel i.pc-rb-ico img{box-shadow:0 0 0 3px var(--tc-y2,#F7FF3F),0 4px 12px rgba(0,0,0,.5)}
/* 16/10: robôs próximos lado a lado (deslocamento --dx/--dy) e foto sempre opaca (offline só muda a borda) */
#pcMapaZoom .pc-rb{transform:translate(calc(-50% + var(--dx, 0px)), calc(-50% + var(--dy, 0px)))}
#pcMapaZoom .pc-rb.sel{z-index:4}
.pc-rb.antiga i.pc-rb-ico{opacity:1}
/* 16/10: nome do robô clicado no 2D de Mapas = mesmo balãozinho do Início (pílula acima da foto) */
#pcMapaZoom .pc-rb em{top:auto;bottom:calc(100% + 4px);left:50%;transform:translate(-50%,3px);font-size:11px;font-weight:600;line-height:1;color:#0A1530;background:var(--sucesso,#3DDC84);padding:3px 7px;border-radius:999px;max-width:140px;overflow:hidden;text-overflow:ellipsis;transition:opacity .15s,transform .15s}
#pcMapaZoom .pc-rb.antiga em{background:#C3CAD8}
#pcMapaZoom .pc-rb.sel em{transform:translate(-50%,0)}
/* 16/10: ícone do robô em Mapas mais discreto — sem o "pulo" da foto, aura verde forte trocada por um anel fino
   e suave (como o pulso do Início), borda fina e um pouco menor */
#pcMapaZoom .pc-rb i.pc-rb-ico,.pc-achar-mapa .pc-rb i.pc-rb-ico{width:24px;height:24px;animation:none}
#pcMapaZoom .pc-rb i.pc-rb-ico::before,.pc-achar-mapa .pc-rb i.pc-rb-ico::before{background:none;border:1.5px solid var(--sucesso,#3DDC84);inset:-2px;animation:pcAuraSuave 3s cubic-bezier(.2,.6,.35,1) infinite}
@keyframes pcAuraSuave{0%{transform:scale(1);opacity:.4}70%{opacity:0}100%{transform:scale(2);opacity:0}}
#pcMapaZoom .pc-rb i.pc-rb-ico img,.pc-achar-mapa .pc-rb i.pc-rb-ico img{padding:1.5px;box-shadow:0 0 0 1.5px rgba(61,220,132,.75),0 2px 6px rgba(0,0,0,.35)}
#pcMapaZoom .pc-rb.antiga i.pc-rb-ico img{box-shadow:0 0 0 1.5px rgba(138,147,166,.8),0 2px 6px rgba(0,0,0,.35)}
#pcMapaZoom .pc-rb.antiga i.pc-rb-ico::before{display:none}
#pcMapaZoom .pc-rb.sel i.pc-rb-ico img{box-shadow:0 0 0 2px var(--tc-y2,#F7FF3F),0 2px 8px rgba(0,0,0,.4)}
#pcMapaZoom .pc-rb:nth-of-type(3n+2) i.pc-rb-ico::before{animation-delay:-1s}#pcMapaZoom .pc-rb:nth-of-type(3n) i.pc-rb-ico::before{animation-delay:-2s}
html.tc-reduzir-anim #pcMapaZoom .pc-rb i.pc-rb-ico::before{animation:none;opacity:0}
/* 16/10: ícones de pontos e robôs no 2D de Mapas com o MESMO tamanho em qualquer zoom (antes cresciam junto com
   a planta). --pc-z = zoom atual (paginas-connect.js); o afastamento entre robôs próximos também não cresce. */
#pcMapaZoom .pc-pt{transform:translate(-50%,-50%) scale(calc(1 / var(--pc-z, 1)))}
#pcMapaZoom .pc-rb{transform:translate(calc(-50% + var(--dx, 0px) / var(--pc-z, 1)), calc(-50% + var(--dy, 0px) / var(--pc-z, 1))) scale(calc(1 / var(--pc-z, 1)))}

/* 16/10: entrega em andamento — botão "Seguindo o robô" (ao lado do 2D | 3D) e destaque do ponto atual/próximo */
.md3d-seguir{position:absolute;right:114px;bottom:78px;z-index:6;height:32px;display:inline-flex;align-items:center;gap:7px;padding:0 12px;border:1px solid rgba(255,255,255,.18);background:rgba(18,18,20,.82);color:#C8C8C8;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.md3d-seguir svg{color:currentColor}
.md3d-seguir.on{background:#F7FF3F;border-color:#F7FF3F;color:#0A0A0A}
.pa-mapa-picker-ponto.md-atual{box-shadow:0 0 0 3px #F7FF3F,0 0 0 8px rgba(247,255,63,.25);z-index:3}
.pa-mapa-picker-ponto.md-proximo{box-shadow:0 0 0 2px #fff,0 0 0 6px rgba(255,255,255,.18);z-index:2}
.pa-mapa-picker-ponto.md-atual::after,.pa-mapa-picker-ponto.md-proximo::after{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translateX(-50%);padding:2px 7px;border-radius:999px;font-size:10.5px;font-weight:800;line-height:1.3;white-space:nowrap;pointer-events:none}
.pa-mapa-picker-ponto.md-atual::after{content:"Agora";background:#F7FF3F;color:#0A0A0A}
.pa-mapa-picker-ponto.md-proximo::after{content:"Próximo";background:#fff;color:#0A0A0A}
/* 16/10: cruzeiro dos robôs que não são PuduBot 2 — "Repetir o cruzeiro" no painel (cruzeiro-connect.js) */
.cz-ciclos{display:grid;gap:6px;margin:4px 0 14px}
.cz-ciclos .bj-opcoes{grid-template-columns:repeat(6,minmax(0,1fr))}
.cz-campo .bj-opcoes{grid-template-columns:repeat(5,minmax(0,1fr))}
.cz-nota{font-size:11.5px;color:rgba(255,255,255,.55)}

/* 21/10: robô de outro mapa da mesma planta (ex.: CC1/MT1 no mapa de limpeza) — cinza bem apagado, "Mapa X" no nome */
.pc-rb.fantasma{opacity:.8}
.pc-rb.fantasma i.pc-rb-ico{animation:none;opacity:1}
.pc-rb.fantasma i.pc-rb-ico::before{display:block;animation:none;background:#B89CFF;opacity:.55}
.pc-rb.fantasma i.pc-rb-ico img{filter:grayscale(.6)}
.pc-rb.fantasma em{background:#B89CFF !important;color:#1A1033 !important}
.pc-rb.fantasma.sel{opacity:1}
.pc-rb em small{display:block;font-size:.82em;font-weight:600;opacity:.75}

/* 22/10: cruzeiro — rotas salvas (por robô e mapa) e mídia na tela durante o cruzeiro (cruzeiro-connect.js) */
.cz-rotas,.cz-midia{display:grid;gap:8px;margin:0 0 14px}
.cz-rotas .bj-rot em{font-style:normal;font-weight:600;opacity:.55;text-transform:none;letter-spacing:0}
.cz-chips{display:flex;flex-wrap:wrap;gap:6px}
.cz-chip{display:inline-flex;align-items:stretch;border:1px solid rgba(255,255,255,.14);background:rgba(12,12,12,.8)}
.cz-chip:hover{border-color:rgba(247,255,63,.5)}
.cz-chip-usar{display:grid;gap:1px;padding:7px 10px;border:0;background:none;color:#fff;font:inherit;text-align:left;cursor:pointer}
.cz-chip-usar b{font-size:13px;font-weight:800}
.cz-chip-usar small{font-size:11px;color:rgba(255,255,255,.55)}
.cz-chip-x{display:grid;place-items:center;min-width:32px;padding:0 8px;border:0;border-left:1px solid rgba(255,255,255,.1);background:none;color:rgba(255,255,255,.55);font:700 11.5px inherit;cursor:pointer}
.cz-chip-x svg{width:13px;height:13px}
.cz-chip-x:hover{color:#FF8A7E}
.cz-chip-x.confirmar{background:rgba(255,107,94,.16);color:#FF8A7E}
.cz-salvar,.cz-midia-link{display:flex;gap:6px}
.cz-salvar input,.cz-midia-link input{flex:1;min-width:0;height:38px;padding:0 10px;border:1px solid rgba(255,255,255,.14);background:rgba(12,12,12,.8);color:#fff;font:inherit;font-size:13px}
.cz-salvar input:focus,.cz-midia-link input:focus{outline:none;border-color:rgba(247,255,63,.6)}
.cz-salvar .pa-btn,.cz-up{flex:none;display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 12px;white-space:nowrap;cursor:pointer}
.cz-salvar .pa-btn svg{width:15px;height:15px}
.cz-midia .bj-opcoes{grid-template-columns:repeat(3,minmax(0,1fr))}
.cz-msg{color:#F7FF3F}
.cz-up{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#fff;font:700 12.5px 'Space Grotesk',sans-serif}
.cz-up:hover{border-color:rgba(247,255,63,.5)}

/* ---------- 23/10 · card do robô: parte de baixo mais limpa */
.pc-baixo>div{padding:22px 26px}
.pc-uso-cab{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 12px}
.pc-per{display:inline-flex;align-items:center;height:24px;padding:0 10px;border:1px solid var(--tc-linha-2);font-size:11.5px;font-weight:700;color:var(--tc-texto)}
.pc-ult{font-size:12px;color:var(--tc-apoio)}
.pc-kpi3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pc-kpi3>div{display:grid;gap:2px;padding:14px 14px 12px;border:1px solid var(--tc-linha);background:var(--tc-painel-2)}
.pc-kpi3 svg{width:16px;height:16px;margin-bottom:6px;color:var(--tc-y2)}
.pc-kpi3 b{font:800 24px/1.05 'Plus Jakarta Sans',sans-serif;letter-spacing:-.02em;color:var(--tc-texto);font-variant-numeric:tabular-nums}
.pc-kpi3 small{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--tc-apoio)}
.pc-uso-graf-cab{margin-top:22px}
.pc-uso-graf-wrap{margin-top:12px}
.pc-uso-faixa7{display:none}
.pc-uso-graf{height:96px;gap:4px;border-bottom:1px solid var(--tc-linha)}
.pc-uso-col i{border-radius:3px 3px 0 0;background:var(--tc-apoio);opacity:.35}
.pc-uso-col.sem i{background:var(--tc-y2);opacity:1}
.pc-uso-col i.zero{height:2px;background:var(--tc-linha);opacity:1}
/* localização */
.pc-loc{display:flex;align-items:center;gap:12px;margin:12px 0 0;padding:14px 16px;border:1px solid var(--tc-linha);background:var(--tc-painel-2)}
.pc-loc>svg{flex:none;width:20px;height:20px;color:var(--tc-apoio)}
.pc-loc.vivo>svg{color:var(--tc-ok-tx)}
.pc-loc>div{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0}
.pc-loc b{font-size:15px;font-weight:800;color:var(--tc-texto);overflow-wrap:anywhere}
.pc-loc-tag{display:inline-flex;align-items:center;height:22px;padding:0 8px;border:1px solid var(--tc-linha-2);font-size:11px;font-weight:700;color:var(--tc-apoio)}
/* eventos: linha do tempo */
.pc-hist-card{margin-top:18px;padding:16px 18px 10px;background:var(--tc-painel-2)}
.pc-tl{list-style:none;margin:10px 0 0;padding:0}
.pc-tl li{position:relative;display:grid;grid-template-columns:14px 1fr;gap:12px;padding:0 0 14px}
.pc-tl li::before{content:"";position:absolute;left:6px;top:14px;bottom:0;width:2px;background:var(--tc-linha)}
.pc-tl li:last-child::before{display:none}
.pc-tl li>i{width:14px;height:14px;margin-top:2px;border-radius:50%;border:3px solid var(--tc-painel-2);background:var(--tc-apoio);box-shadow:0 0 0 1px var(--tc-linha-2)}
.pc-tl li.ok>i{background:var(--tc-ok-tx)}
.pc-tl li.erro>i{background:var(--tc-urg-tx)}
.pc-tl li.limpeza>i{background:#3DB0E0}
.pc-tl li.tarefa>i{background:var(--tc-y2)}
.pc-tl li>div{display:grid;gap:2px;min-width:0}
.pc-tl span{font-size:13.5px;font-weight:600;color:var(--tc-texto);overflow-wrap:anywhere}
.pc-tl time{font-size:11.5px;color:var(--tc-apoio);font-variant-numeric:tabular-nums}
/* limpezas: seção separada */
.pc-baixo .lz-geral-robo{margin-top:26px;padding-top:20px;border-top:1px solid var(--tc-linha)}
.pc-kpi3 svg{color:var(--tc-apoio)}
.pc-kpi3 b{font-size:22px;white-space:nowrap}
.pc-uso-col.sem i{background:var(--tc-texto)}
.pc-tl li.tarefa>i{background:var(--tc-texto)}

/* 23/10 · ficha resumida no topo e especificações em janela */
.pc-kv-sn{display:flex !important;align-items:center;gap:6px}
.pc-kv-sn .pc-sn{overflow:hidden;text-overflow:ellipsis}
.pc-kv-sn .pc-copiar{flex:none}
.pc-espec-card{width:min(620px,100%);justify-items:stretch}
.pc-espec-lista{margin:0}
.pc-espec-lista div{grid-template-columns:minmax(150px,40%) 1fr}
.pc-espec-lista div:last-child{border-bottom:0}
@media (max-width:1700px){.pc-kv .pc-kv-snbox{grid-column:auto}}

@media (min-width:1701px){.pc-kv{grid-template-columns:repeat(4,1fr)}}
.pc-kv-sn{white-space:normal !important}.pc-kv-sn .pc-sn{overflow:visible;text-overflow:clip;overflow-wrap:anywhere;font-size:13px}
/* 23/10: Trocar mapa dentro do cartão da localização */
.pc-loc-troca{margin-left:auto;flex:none}
.pc-loc-troca .pc-btn{height:34px;padding:0 12px;font-size:12.5px}
.pc-loc-troca .pc-btn svg{width:14px;height:14px}
.pc-loc{flex-wrap:wrap}.pc-loc>div{flex:1 1 150px}.pc-loc b{overflow-wrap:normal;word-break:normal}

/* 23/10: mapas de limpeza — áreas na planta e aba de tarefas de limpeza */
.pc-areas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pc-areas polygon{fill:rgba(120,170,255,.08);stroke:rgba(120,170,255,.45);stroke-width:.25;vector-effect:non-scaling-stroke}
.pc-areas polygon.sel{fill:rgba(247,255,63,.32);stroke:#F7FF3F;stroke-width:2}
.pc-area-rot{position:absolute;transform:translate(-50%,-50%) scale(calc(1/var(--pc-z,1)));padding:2px 6px;background:#F7FF3F;color:#0A0A0A;font-size:11px;font-weight:800;white-space:nowrap;pointer-events:none;z-index:2}
.pc-abas{display:flex;gap:4px;padding-bottom:0;border-bottom:1px solid var(--tc-linha)}
.pc-abas button{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 12px;border:0;border-bottom:2px solid transparent;background:none;color:var(--tc-apoio);font:700 14px inherit;cursor:pointer;margin-bottom:-1px}
.pc-abas button span{font-size:12px;font-weight:600;color:var(--tc-apoio)}
.pc-abas button.on{color:var(--tc-texto);border-bottom-color:var(--tc-texto)}
.pc-lz-car{display:grid;place-items:center;padding:30px 0}
.pc-lz-lista{display:grid;gap:6px;padding:10px 0}
.pc-lz-item{display:grid;gap:3px;width:100%;padding:11px 12px;border:1px solid var(--tc-linha);background:var(--tc-painel-2);color:var(--tc-texto);font:inherit;text-align:left;cursor:pointer}
.pc-lz-item:hover{border-color:var(--tc-linha-2)}
.pc-lz-item.sel{border-color:var(--tc-texto);box-shadow:inset 3px 0 0 #F7FF3F}
.pc-lz-nome{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.pc-lz-nome b{font-size:13.5px}
.pc-lz-nome .lz-tipo{margin:0}
.pc-lz-item small{font-size:12px;color:var(--tc-apoio)}
html:not([data-tema="escuro"]) .pc-lz-item .lz-tipo.lavagem{color:#1C86B8;background:rgba(28,134,184,.1)}
html:not([data-tema="escuro"]) .pc-lz-item .lz-tipo.varricao{color:#A0700E;background:rgba(160,112,14,.1)}
.pc-abas{justify-content:flex-start !important}
.pc-kpi3 b small{font-size:14px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--tc-apoio)}
/* 23/10: trocando de mapa no 3D — esconde a cena antiga e mostra o carregando */
.pm-3d-el.pm-trocando canvas{opacity:0}
.pm-3d-el.pm-trocando::after{content:"";position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border:3px solid rgba(255,255,255,.18);border-top-color:#F7FF3F;border-radius:50%;animation:pmGira .8s linear infinite;z-index:5}
@keyframes pmGira{to{transform:rotate(360deg)}}

/* 26/10 · ficha do robô: "Uso do robô" em janela e mapa ao vivo no lugar dele */
.pc-uso-card{width:min(640px,100%);justify-items:stretch}
.pc-uso-janela{min-width:0}
.pc-baixo>.pc-mm-col{display:flex;flex-direction:column;min-height:0;overflow:hidden}
.pc-mm{position:relative;flex:1;min-height:300px;margin-top:10px;overflow:hidden;background:#0F1F45;border:1px solid var(--tc-linha)}
.pc-mm.vazio{display:grid;place-items:center;align-content:center;gap:8px;color:var(--tc-apoio);font-size:13px}
.pc-mm.vazio svg{width:22px;height:22px}
.pc-mm-in{position:absolute}
.pc-mm-in img{display:block;width:100%;height:100%;user-select:none;pointer-events:none}
.pc-mm-in img.pc-mm-filtro{filter:grayscale(1) invert(1) contrast(1.5) brightness(.9);mix-blend-mode:screen;opacity:.75}
.pc-mm-contorno{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pc-mm-contorno path{fill:#1B2D56;fill-opacity:.78;fill-rule:evenodd;stroke:#CBD5E8;stroke-opacity:.92;stroke-width:1.2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
:root[data-tema="escuro"] .pc-mm{background:#1a1b1e}
:root[data-tema="escuro"] .pc-mm-contorno path{fill:#2B2C30;fill-opacity:1;stroke:#F2F2F2}
.pc-mm .pc-rb{position:absolute;transition:none} /* 27/10: animar o marcador em % brigava com a mudança de tamanho da planta (robô fora do centro); quem desliza é a planta */
.pc-mm-pt{position:absolute;transform:translate(-50%,-50%);width:16px;height:16px;display:grid;place-items:center;border:1.5px solid var(--tp);color:var(--tp);background:#0F1F45;border-radius:4px;pointer-events:auto}
.pc-mm-pt svg{width:9px;height:9px}
.pc-mm-sem{position:absolute;left:12px;bottom:10px;font-size:12px;font-weight:700;color:#fff;background:rgba(10,10,10,.6);padding:3px 8px}
@media (max-width:1000px){.pc-mm{min-height:260px}}
.pc-uso-lz{margin-top:6px;padding-top:18px;border-top:1px solid var(--tc-linha)}

/* 26/10 · ficha do robô sem rolagem: tudo cabe na altura da tela; caixinhas e botões ocupam a largura toda */
.pc-frota .pc-det{overflow:hidden;grid-template-rows:auto minmax(0,1fr)}
.pc-det .pc-topo{min-height:0;grid-template-columns:clamp(170px,34%,360px) minmax(0,1fr)}
.pc-det .pc-palco .pc-foto{min-height:0}
.pc-det .pc-palco .pc-foto img{width:auto !important;height:min(308px,26vh) !important;max-width:86%}
.pc-det .pc-info{padding:clamp(14px,2.2vh,24px) 28px;gap:clamp(8px,1.3vh,14px)}
.pc-det .pc-info h3{font-size:clamp(24px,3.2vh,32px)}
.pc-det .pc-kv{max-width:none;grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1700px){.pc-det .pc-kv{grid-template-columns:repeat(2,minmax(0,1fr))}}
.pc-det .pc-kv div{padding:clamp(7px,1.1vh,10px) 14px}
.pc-det .pc-info{container-type:inline-size}
.pc-det .pc-acoes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@container (min-width:720px){.pc-det .pc-acoes{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pc-det .pc-acoes>*{min-width:0}
.pc-det .pc-acoes .pc-btn,.pc-det .pc-acoes .pc-mt>button{width:100%;justify-content:center;white-space:nowrap}
.pc-det .pc-baixo{min-height:0;overflow:hidden}
.pc-det .pc-baixo>div{min-height:0;overflow:hidden;padding:clamp(12px,1.8vh,22px) 24px}
.pc-det .pc-baixo>div+div{display:flex;flex-direction:column}
.pc-det .pc-loc{margin-top:10px;padding:clamp(8px,1.2vh,14px) 16px}
.pc-det .pc-hist-card{flex:1;min-height:0;overflow:hidden;margin-top:clamp(10px,1.5vh,18px);display:flex;flex-direction:column}
.pc-det .pc-hist-card .pc-hist{flex:1;min-height:0;overflow:hidden}
.pc-det .pc-mm{min-height:0}
@media (max-width:1000px){.pc-frota .pc-det{overflow:visible}.pc-det .pc-acoes{grid-template-columns:repeat(2,minmax(0,1fr))}.pc-det .pc-mm{min-height:260px}}
/* 27/10 · mapa ao vivo: enquanto a primeira posição não chega */
.pc-mm-carr{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:10px;background:rgba(15,31,69,.55);color:#fff;font-size:13px;font-weight:700;letter-spacing:.02em;z-index:3}
:root[data-tema="escuro"] .pc-mm-carr{background:rgba(20,20,22,.6)}
/* 27/10: sem "Encontrar robô" — "Realizar uma tarefa" ocupa a linha de cima inteira (ou metade, com 4 colunas) */
.pc-det .pc-acoes>.pc-mt{grid-column:1/-1}
@container (min-width:720px){.pc-det .pc-acoes>.pc-mt{grid-column:span 2}}
/* 27/10 · mapa ao vivo: botão 2D | 3D e a cena 3D dentro do card */
.pc-mm-vista{position:absolute;top:10px;right:10px;z-index:5;display:flex;background:rgba(10,10,10,.6);padding:3px;gap:2px}
.pc-mm-vista button{height:26px;min-width:34px;padding:0 8px;border:0;background:none;color:rgba(255,255,255,.75);font:inherit;font-size:11.5px;font-weight:800;cursor:pointer}
.pc-mm-vista button.on{background:var(--tc-y2,#F7FF3F);color:#0A0A0A}
.pc-mm-3d{position:absolute;inset:0;z-index:2;overflow:hidden}
/* 28/10: o canvas ocupa o card — sem isto, em tela com escala do Windows (125%, 150%) ele ficava maior que o card e,
   ao redesenhar a ficha, pegava por um instante a altura da planta inteira ("zoomzão" que voltava em seguida) */
.pc-mm-3d .mo3d-canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.pc-mm-3d .mo3d-canvas.arrastando{cursor:grabbing}
.pc-mm.em3d .pc-mm-in,.pc-mm.em3d .pc-mm-sem{visibility:hidden}
/* 27/10 · mapa ao vivo 2D: arrastar, zoom e "Centralizar" */
.pc-mm[data-w]:not(.em3d){cursor:grab;touch-action:none}
.pc-mm.arrastando{cursor:grabbing}
.pc-mm.arrastando .pc-mm-in,.pc-mm.arrastando .pc-rb{transition:none}
.pc-mm-centro{position:absolute;left:10px;top:10px;z-index:5;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:0;background:var(--tc-y2,#F7FF3F);color:#0A0A0A;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.pc-mm-centro[hidden]{display:none}
.pc-mm.em3d .pc-mm-centro{display:none}
/* 27/10 · no card de Minha frota, os botões redondos do 3D (voltar ao padrão, camadas) iam para baixo do seletor 2D/3D — descem para o canto de baixo */
.pc-mm-3d .mo3d-reset{top:auto !important;bottom:10px !important;right:10px !important}
.pc-mm-3d .mo3d-reset.mo3d-btn-cam{right:50px !important}
.pc-mm-centro svg{width:14px;height:14px;flex:none} /* 27/10: o ic() desta página não dá tamanho ao ícone */
/* 28/10: robô "só leitura" (de cliente) — selo no lugar de "Realizar uma tarefa", mesmo tamanho */
.pc-btn.pc-so-leitura{cursor:default;color:var(--tc-texto-2);border-style:dashed;background:transparent}
.pc-btn.pc-so-leitura:hover{border-color:var(--tc-linha-2)}
