body.com-motor { overflow: hidden; position: fixed; inset: 0; width: 100%; height: 100%; }
body.com-motor .tela-bancada { position: fixed; inset: 0; height: auto; }
.ml { --assH: 34px; position: relative; height: 100%; display: flex; flex-direction: column; background: radial-gradient(900px 500px at 20% 0%, rgba(95, 212, 244, .10), transparent 60%), var(--navy); overflow: hidden; user-select: none; -webkit-user-select: none; }
.ml-topo { display: flex; align-items: center; gap: 12px; padding: 10px 14px; padding-top: max(10px, env(safe-area-inset-top)); border-bottom: 1px solid var(--borda); background: linear-gradient(180deg, var(--navy2), var(--navy)); z-index: 5; flex: none; }
.ml-tit { min-width: 0; display: flex; flex-direction: column; line-height: 1.15; }
.ml-tit small { color: var(--txt2); font-size: .74em; text-transform: uppercase; letter-spacing: 1.4px; font-weight: 700; }
.ml-tit strong { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 700; font-size: 1.25em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ml-motor-chip { margin-left: auto; display: inline-flex; align-items: center; gap: 9px; padding: 7px 14px 7px 8px; border-radius: 999px; background: rgba(95, 212, 244, .08); border: 1px solid rgba(95, 212, 244, .3); color: #cfefff; font-weight: 700; font-size: .86em; white-space: nowrap; }
.ml-mini-rotor { width: 22px; height: 22px; border-radius: 50%; border: 3px solid var(--ciano); border-top-color: transparent; animation: mlGira 1.1s linear infinite; }
.ml-acoes { display: flex; gap: 8px; }
.ml-corpo { flex: 1; min-height: 0; display: flex; gap: 0; }
.ml-placa-area { flex: 1.35; min-width: 0; display: flex; flex-direction: column; padding: 14px 18px; gap: 10px; position: relative; }
.ml-placa-bar { display: flex; align-items: center; gap: 10px; min-height: 42px; }
.ml-dica-placa { flex: 1; color: var(--txt2); font-size: .9em; padding-left: 26px; position: relative; }
.ml-dica-placa::before { content: ''; position: absolute; left: 0; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%; background: var(--ciano); box-shadow: 0 0 0 0 rgba(95, 212, 244, .6); animation: mlPulso 1.8s infinite; }
.ml-placa-rolo { flex: 1; min-height: 0; display: grid; place-items: center; overflow: auto; perspective: 1400px; -webkit-overflow-scrolling: touch; }
.ml-placa-cx { width: 100%; max-height: 100%; display: grid; place-items: center; transform: rotateX(28deg) translateY(40px) scale(.92); opacity: 0; transition: transform 1s cubic-bezier(.2, 1.1, .3, 1), opacity .6s; }
.ml-pronto .ml-placa-cx { transform: none; opacity: 1; }
.placa-svg { width: 100%; height: auto; max-height: 100%; display: block; filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .55)); touch-action: manipulation; }
.ml-zoom2 .ml-placa-rolo { place-items: start; }
.ml-zoom2 .ml-placa-cx { width: 200%; max-height: none; }
.ml-zoom2 .placa-svg { max-height: none; }

/* placa */
.placa-svg .pv { fill: #edf2f6; font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 700; }
.placa-svg .pv-marca { font-weight: 800; fill: #fff; letter-spacing: 2px; }
.placa-svg .pv-modelo { font-weight: 800; fill: #dfe7ee; }
.placa-svg .pv-norma, .placa-svg .pv-lig { fill: #f2f6f9; }
.placa-svg .pl { fill: #a6b4c1; font-family: 'Barlow', sans-serif; font-weight: 600; }
.placa-svg .pl-borda { stroke: rgba(220, 228, 236, .55); stroke-width: 2; }
.placa-svg .pc { cursor: pointer; }
.placa-svg .pc-fundo { fill: rgba(255, 255, 255, 0); stroke: rgba(220, 228, 236, .5); stroke-width: 1.6; transition: fill .25s, stroke .25s; }
.placa-svg .pc:hover .pc-fundo { fill: rgba(95, 212, 244, .08); }
.placa-svg .pc.visto .pc-fundo { fill: rgba(61, 220, 138, .07); }
.placa-svg .pc.sel .pc-fundo { fill: rgba(95, 212, 244, .16); stroke: var(--ciano); stroke-width: 4; stroke-dasharray: 14 8; animation: mlFormiga 1s linear infinite; }
.placa-svg .pc-visto { opacity: 0; transform: scale(.3); transform-box: fill-box; transform-origin: center; transition: opacity .3s, transform .4s cubic-bezier(.2, 1.8, .4, 1); }
.placa-svg .pc-visto circle { fill: var(--verde); }
.placa-svg .pc-visto path { fill: none; stroke: #062019; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
.placa-svg .pc.visto .pc-visto { opacity: 1; transform: none; }
.placa-svg .pd-b { fill: #cfd7de; stroke: #5d6872; stroke-width: 2; }
.placa-svg .pd-ponte path { stroke: #f2c96b; stroke-width: 7; stroke-linecap: round; fill: none; }
.placa-svg .tok-hit { fill: transparent; }
.ml-placa_caca .placa-svg .tok-g { cursor: pointer; }
.ml-placa_caca .placa-svg .tok-g:hover .pv { fill: var(--ciano); }
.placa-svg .tok-g .pv { transition: fill .3s; }
.placa-svg .tok-marcado .pv { fill: var(--ciano); paint-order: stroke; stroke: rgba(95, 212, 244, .25); stroke-width: 8px; }
.placa-svg .tok-ok .pv { fill: var(--verde); paint-order: stroke; stroke: rgba(61, 220, 138, .25); stroke-width: 8px; }
.placa-svg .tok-erro .pv { fill: var(--verm); paint-order: stroke; stroke: rgba(255, 107, 90, .25); stroke-width: 8px; }
.placa-svg .pl-brilho { opacity: 0; }
.ml-pronto .placa-svg .pl-brilho { animation: mlBrilho 2.6s .5s ease-in-out; }
.placa-svg .pl-laser { fill: var(--ciano); opacity: 0; filter: drop-shadow(0 0 8px var(--ciano)); }
.scan .placa-svg .pl-laser { animation: mlLaser 1.4s ease-in-out infinite; }

/* painel */
.ml-painel { width: clamp(340px, 34vw, 560px); flex: none; overflow-y: auto; overflow-x: hidden; padding: 14px 18px 0; border-left: 1px solid var(--borda); background: rgba(8, 16, 28, .45); display: flex; flex-direction: column; gap: 12px; -webkit-overflow-scrolling: touch; }
.ml-testando .ml-painel, .ml-testando .ml-placa-area { pointer-events: none; }
.ml-card { background: var(--vidro); border: 1px solid var(--borda); border-radius: var(--raio); padding: 16px 18px; position: relative; transition: border-color .3s, background .3s, box-shadow .3s; }
.ml-card h3 { margin: 4px 0 8px; font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 700; font-size: 1.3em; letter-spacing: .2px; }
.ml-card p { margin: 6px 0; color: var(--txt2); line-height: 1.45; }
.ml-intro { background: linear-gradient(150deg, rgba(95, 212, 244, .12), rgba(22, 38, 63, .7)); }
.ml-sub { color: var(--txt2); font-size: .9em; }
.ml-sec { font-size: .75em; letter-spacing: 2px; text-transform: uppercase; color: var(--ouro); font-weight: 800; margin-top: 6px; }
.ml-progresso { display: flex; align-items: center; gap: 14px; padding: 4px 2px; }
.ml-anel { width: 56px; height: 56px; transform: rotate(-90deg); flex: none; }
.ml-anel-f { fill: none; stroke: rgba(255, 255, 255, .08); stroke-width: 7; }
.ml-anel-v { fill: none; stroke: var(--menta); stroke-width: 7; stroke-linecap: round; transition: stroke-dasharray .7s cubic-bezier(.3, 1.3, .5, 1); filter: drop-shadow(0 0 6px rgba(151, 204, 180, .6)); }
.ml-progresso b { display: block; font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.5em; line-height: 1; }
.ml-progresso span { color: var(--txt2); font-size: .85em; }
.ml-detalhe { animation: mlEntra .45s cubic-bezier(.2, 1.3, .4, 1) both; border-color: rgba(95, 212, 244, .4); box-shadow: 0 0 40px rgba(95, 212, 244, .1); }
.ml-det-cab { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 0 12px; }
.ml-det-rot { grid-column: 1 / -1; font-size: .72em; letter-spacing: 1.6px; text-transform: uppercase; color: var(--ciano); font-weight: 800; }
.ml-det-cab h3 { margin: 2px 0 0; }
.ml-det-val { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 800; font-size: 1.7em; color: var(--ouro); text-shadow: 0 0 20px rgba(242, 201, 107, .35); white-space: nowrap; }
.ml-anim-box { margin: 12px 0 6px; border-radius: 14px; background: radial-gradient(circle at 50% 40%, rgba(95, 212, 244, .08), rgba(5, 12, 24, .7)); border: 1px solid rgba(95, 212, 244, .15); padding: 6px; }
.ml-anim { width: 100%; height: auto; display: block; overflow: visible; }
.ml-sig { color: var(--txt) !important; }
.ml-prat { font-size: .92em; padding: 10px 12px; border-radius: 12px; background: rgba(242, 201, 107, .07); border-left: 3px solid var(--ouro); }
.ml-prat b { color: var(--ouro); }
.ml-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.ml-chip { display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--borda); background: rgba(255, 255, 255, .04); border-radius: 999px; padding: 7px 12px; font-size: .82em; font-weight: 700; color: var(--txt2); min-height: 36px; transition: all .2s; }
.ml-chip .ic { width: 15px; height: 15px; stroke-width: 3; }
.ml-chip.visto { color: var(--menta2); background: rgba(61, 220, 138, .1); border-color: rgba(61, 220, 138, .3); }
.ml-chip.visto .ic { color: var(--verde); }
.ml-chip.sel { border-color: var(--ciano); color: #fff; box-shadow: 0 0 0 3px rgba(95, 212, 244, .18); }
.ml-bloq { display: flex; gap: 12px; align-items: center; color: var(--txt2); border-style: dashed; }
.ml-bloq .ic { color: var(--ouro); width: 28px; height: 28px; }
.ml-q p { color: var(--txt) !important; font-weight: 600; margin-top: 0; }
.ml-ops { display: grid; gap: 8px; }
.ml-op { text-align: left; border: 1px solid var(--borda); background: rgba(5, 12, 24, .4); border-radius: 12px; padding: 11px 14px; min-height: 46px; transition: all .2s; }
.ml-op:hover { border-color: rgba(95, 212, 244, .4); }
.ml-op.sel { border-color: var(--ciano); background: rgba(95, 212, 244, .14); color: #fff; box-shadow: inset 4px 0 0 var(--ciano); }
.ml-card.ok { border-color: rgba(61, 220, 138, .65); background: rgba(61, 220, 138, .08); }
.ml-card.erro { border-color: rgba(255, 107, 90, .65); background: rgba(255, 107, 90, .08); animation: mlTreme .4s; }
.ml-varre { animation: mlVarre .6s ease-out; }
.ml-caca-atual { border-color: rgba(95, 212, 244, .45); animation: mlEntra .4s cubic-bezier(.2, 1.3, .4, 1) both; }
.ml-caca-atual h3 { font-size: 1.4em; }
.ml-lista-q { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ml-lista-q button { width: 100%; display: grid; grid-template-columns: 30px 1fr auto; gap: 10px; align-items: center; text-align: left; border: 1px solid var(--borda); background: rgba(255, 255, 255, .03); border-radius: 12px; padding: 9px 12px; min-height: 46px; font-size: .88em; transition: all .2s; }
.ml-lista-q .n { width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 255, 255, .07); font-weight: 800; font-size: .9em; }
.ml-lista-q .q { color: var(--txt2); }
.ml-lista-q b { color: var(--ciano); font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.1em; white-space: nowrap; }
.ml-lista-q button.feita .n { background: rgba(95, 212, 244, .2); color: var(--ciano); }
.ml-lista-q button.atual { border-color: var(--ciano); background: rgba(95, 212, 244, .08); }
.ml-lista-q button.atual .q { color: #fff; }
.ml-lista-q li.ok button { border-color: rgba(61, 220, 138, .65); }
.ml-lista-q li.ok b { color: var(--verde); }
.ml-lista-q li.erro button { border-color: rgba(255, 107, 90, .65); }
.ml-lista-q li.erro b { color: var(--verm); }
.ml-calc label { display: flex; gap: 10px; align-items: flex-start; font-weight: 600; line-height: 1.35; }
.ml-calc label .n, .ml-calc .n { flex: none; width: 28px; height: 28px; border-radius: 50%; display: grid; place-items: center; background: rgba(95, 212, 244, .15); color: var(--ciano); font-weight: 800; font-size: .85em; }
.ml-calc-l { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.ml-calc-l input, .ml-dial-n { width: 130px; min-height: 48px; border-radius: 12px; border: 1px solid rgba(151, 204, 180, .3); background: rgba(5, 12, 24, .6); padding: 0 14px; font-size: 1.15em; font-weight: 700; font-family: 'Barlow Condensed', 'Barlow', sans-serif; outline: none; transition: border-color .2s, box-shadow .2s; }
.ml-calc-l input:focus, .ml-dial-n:focus { border-color: var(--ciano); box-shadow: 0 0 0 4px rgba(95, 212, 244, .18); }
.ml-calc .un, .ml-dial-l .un { color: var(--txt2); font-weight: 700; min-width: 30px; }
.ml-fbtn { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; border: 1px solid rgba(242, 201, 107, .35); background: rgba(242, 201, 107, .08); color: var(--ouro); border-radius: 999px; padding: 8px 14px; font-weight: 700; font-size: .85em; min-height: 40px; }
.ml-fbtn .ic { width: 17px; height: 17px; }
.ml-formula { max-height: 0; overflow: hidden; opacity: 0; transition: max-height .35s, opacity .3s, margin .3s; font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.1em; color: var(--ouro); letter-spacing: .3px; }
.ml-calc.aberta .ml-formula { max-height: 120px; opacity: 1; margin-top: 10px; padding: 10px 12px; border-radius: 10px; background: rgba(242, 201, 107, .07); }
.ml-prot-cab { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
.ml-rede { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 800; font-size: 1.35em; color: var(--ouro); }
.ml-faixas { display: flex; flex-wrap: wrap; gap: 7px; margin: 6px 0 10px; }
.ml-faixa { border: 1px solid var(--borda); background: rgba(5, 12, 24, .45); border-radius: 12px; padding: 9px 13px; font-weight: 700; min-height: 44px; font-size: .9em; transition: all .2s; }
.ml-faixa.sel { border-color: var(--ciano); background: rgba(95, 212, 244, .16); color: #fff; box-shadow: 0 0 18px rgba(95, 212, 244, .25); }
.ml-dial-l { display: flex; align-items: center; gap: 10px; }
.ml-dial-l input[type=range] { flex: 1; min-width: 0; accent-color: var(--ciano); height: 34px; }
.ml-dial-n { width: 104px; }
.ml-rodape-acao { position: sticky; bottom: 0; margin: auto -18px 0; padding: 14px 18px 16px; display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; background: linear-gradient(180deg, rgba(8, 16, 28, 0), rgba(8, 16, 28, .96) 30%); z-index: 3; }
.ml-rodape-acao .bc-play[disabled] { filter: grayscale(.8) brightness(.7); animation: none; cursor: not-allowed; box-shadow: none; }
.ml-res-lista { max-height: 42vh; overflow: auto; }

/* ligação */
.ml-redes { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 5px; border-radius: 16px; background: rgba(5, 12, 24, .5); border: 1px solid var(--borda); }
.ml-redes button { border: 0; border-radius: 12px; padding: 11px 8px; background: transparent; font-weight: 800; color: var(--txt2); min-height: 46px; transition: all .2s; }
.ml-redes button.sel { background: linear-gradient(135deg, rgba(242, 201, 107, .25), rgba(242, 201, 107, .1)); color: var(--ouro); box-shadow: inset 0 0 0 1px rgba(242, 201, 107, .4); }
.ml-redes i { color: var(--verde); font-style: normal; }
.ml-caixa-card { padding: 10px; }
.ml-caixa { width: 100%; height: auto; display: block; touch-action: manipulation; }
.ml-caixa .cx-base { fill: #1a2433; stroke: rgba(151, 204, 180, .25); stroke-width: 2; }
.ml-caixa .cx-t { fill: var(--txt3); font: 700 12px 'Barlow', sans-serif; letter-spacing: 2px; text-anchor: middle; }
.ml-caixa .cx-bobs path { fill: none; stroke: rgba(201, 122, 60, .45); stroke-width: 4; stroke-dasharray: 2 5; stroke-linecap: round; }
.ml-caixa .cx-ponte { cursor: pointer; }
.ml-caixa .cx-ponte-hit { stroke: transparent; stroke-width: 30; }
.ml-caixa .cx-ponte-v { stroke: #e0ad4a; stroke-width: 11; stroke-linecap: round; filter: drop-shadow(0 3px 3px rgba(0, 0, 0, .5)); animation: mlPonte .35s cubic-bezier(.2, 1.6, .4, 1) both; }
.ml-caixa .cx-ponte:hover .cx-ponte-v { stroke: #ffcf6e; }
.ml-caixa .cx-cabo { fill: none; stroke-width: 10; stroke-linecap: round; }
.ml-caixa .cx-cabo-luz { fill: none; stroke: rgba(255, 255, 255, .25); stroke-width: 2; stroke-linecap: round; }
.energ .ml-caixa .cx-cabo-luz { stroke: #bff1ff; stroke-width: 3; stroke-dasharray: 10 14; animation: mlCorrente .5s linear infinite; filter: drop-shadow(0 0 5px var(--ciano)); }
.ml-caixa .cx-lin { cursor: pointer; }
.ml-caixa .cx-lin rect { fill: #253247; stroke: rgba(255, 255, 255, .2); stroke-width: 2; transition: all .2s; }
.ml-caixa .cx-lin text { fill: #fff; font: 800 17px 'Barlow Condensed', 'Barlow', sans-serif; text-anchor: middle; pointer-events: none; }
.ml-caixa .cx-lin.usada rect { fill: #2c3e57; }
.ml-caixa .cx-lin.sel rect, .ml-caixa .cx-borne.sel .cx-b { stroke: var(--ciano); stroke-width: 4; filter: drop-shadow(0 0 8px var(--ciano)); }
.ml-caixa .cx-borne { cursor: pointer; }
.ml-caixa .cx-hit { fill: transparent; }
.ml-caixa .cx-b { fill: #c9ad6b; stroke: #6b5524; stroke-width: 2.5; transition: all .2s; }
.ml-caixa .cx-borne:hover .cx-b { fill: #e6c983; }
.ml-caixa .cx-borne.sel .cx-b { animation: mlBorne 1s infinite; }
.ml-caixa .cx-paraf { stroke: #5a471e; stroke-width: 3; stroke-linecap: round; pointer-events: none; }
.ml-caixa .cx-n { fill: #fff; font: 800 18px 'Barlow Condensed', 'Barlow', sans-serif; pointer-events: none; }
.ml-caixa-bts { display: flex; justify-content: flex-end; padding: 0 4px 4px; }
.ml-leituras { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin: 4px 0 8px; }
.ml-leituras:empty { display: none; }
.ml-volt { border-radius: 12px; padding: 7px 8px; text-align: center; background: rgba(5, 12, 24, .5); border: 1px solid var(--borda); animation: mlEntra .35s both; }
.ml-volt span { display: block; font-size: .72em; color: var(--txt2); text-transform: uppercase; letter-spacing: 1px; font-weight: 700; }
.ml-volt b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.3em; }
.ml-volt.ok { border-color: rgba(61, 220, 138, .5); } .ml-volt.ok b { color: var(--verde); }
.ml-volt.alto, .ml-volt.erro { border-color: rgba(255, 107, 90, .55); } .ml-volt.alto b, .ml-volt.erro b { color: var(--verm); }
.ml-volt.baixo { border-color: rgba(242, 201, 107, .5); } .ml-volt.baixo b { color: var(--ouro); }
.ml-motor-card { display: flex; align-items: center; gap: 10px; overflow: hidden; }
.ml-motor { width: 58%; max-width: 280px; flex: none; overflow: visible; }
.ml-motor .mm-c { fill: #2f5f84; stroke: #173651; stroke-width: 2; transition: fill .5s; }
.ml-motor .mm-aleta { fill: #234b6a; }
.ml-motor .mm-tampa { fill: #264f70; }
.ml-motor .mm-cx { fill: #27527a; stroke: #173651; }
.ml-motor .mm-base { fill: #1a2433; }
.ml-motor .mm-eixo { fill: #aab4be; }
.ml-motor .mm-r { fill: #3a4656; stroke: #8b99a8; stroke-width: 3; }
.ml-motor .mm-raio { stroke: #8b99a8; stroke-width: 3; }
.ml-motor .mm-marca { fill: var(--ouro); }
.ml-motor .mm-rotor { transform-box: fill-box; transform-origin: center; }
.ml-motor-st { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 700; font-size: 1.15em; color: var(--txt2); }
.st-ok .mm-rotor { animation: mlGira .22s linear infinite; }
.st-ok .ml-motor-st { color: var(--verde); }
.st-ok { border-color: rgba(61, 220, 138, .55); box-shadow: 0 0 40px rgba(61, 220, 138, .15); }
.st-reduzida .mm-rotor { animation: mlGira 1.3s linear infinite; }
.st-reduzida .ml-motor-st { color: var(--ouro); }
.st-desequilibrio .mm-corpo { animation: mlRonca .08s linear infinite; }
.st-desequilibrio .mm-rotor { animation: mlRonca .08s linear infinite; }
.st-desequilibrio .ml-motor-st, .st-aberto .ml-motor-st, .st-desligado .ml-motor-st { color: var(--ouro); }
.st-sobretensao .mm-rotor { animation: mlGira .18s linear infinite; }
.st-sobretensao .mm-c { fill: #a3382c; animation: mlQueima .5s ease-in-out infinite alternate; }
.st-sobretensao .ml-motor-st, .st-curto .ml-motor-st { color: var(--verm); }
.st-sobretensao, .st-curto { border-color: rgba(255, 107, 90, .6); box-shadow: 0 0 40px rgba(255, 107, 90, .2); }
.st-curto { animation: mlTreme .4s; }

/* animações dos campos */
.ml-anim .an-t { fill: var(--txt2); font: 600 13px 'Barlow', sans-serif; text-anchor: middle; }
.ml-anim .an-forte { fill: #fff; font-weight: 800; font-size: 14px; }
.ml-anim .an-big { fill: var(--ouro); font: 800 34px 'Barlow Condensed', 'Barlow', sans-serif; }
.ml-anim .an-sub { fill: var(--txt3); font-size: 12px; }
.ml-anim .an-onda { fill: none; stroke-width: 3.5; stroke-linecap: round; stroke-dasharray: 600; animation: mlDesenha 2.2s ease-out both; animation-delay: var(--d, 0s); filter: drop-shadow(0 0 4px currentColor); }
.ml-anim .an-corre { animation: mlCorre 1.4s linear infinite; stroke-dasharray: none; }
.ml-anim .an-trilho { fill: rgba(255, 255, 255, .07); }
.ml-anim .an-barra { fill: rgba(151, 204, 180, .45); }
.ml-anim .an-util { fill: rgba(61, 220, 138, .6); }
.ml-anim .an-barra-ex { fill: rgba(242, 201, 107, .55); }
.ml-anim .an-cresce { transform-box: fill-box; transform-origin: left; animation: mlCresce 1.2s cubic-bezier(.2, 1, .3, 1) both; }
.ml-anim .an-cresce-v { transform-box: fill-box; transform-origin: bottom; animation: mlCresceV 1.4s .3s cubic-bezier(.2, 1, .3, 1) both; }
.ml-anim .an-pisca { animation: mlPisca 1.2s ease-in-out infinite alternate; }
.ml-anim .an-corpo { fill: #2f5f84; stroke: #5fd4f4; stroke-width: 1.5; }
.ml-anim .an-eixo { fill: #aab4be; }
.ml-anim .an-base { fill: #3a4656; }
.ml-anim .an-cota { stroke: var(--ouro); stroke-width: 2.5; fill: none; }
.ml-anim .an-bob { fill: none; stroke: var(--ciano); stroke-width: 5; stroke-linejoin: round; stroke-linecap: round; filter: drop-shadow(0 0 6px rgba(95, 212, 244, .7)); }
.ml-anim .an-no { fill: var(--ouro); }
.ml-anim .an-tri, .ml-anim .an-est { animation: mlTroca 5s ease-in-out infinite; }
.ml-anim .an-est { animation-delay: -2.5s; }
.ml-anim .an-escala { fill: none; stroke: rgba(255, 255, 255, .25); stroke-width: 10; stroke-dasharray: 3 9; }
.ml-anim .an-ponteiro path { stroke: var(--verm); stroke-width: 4; stroke-linecap: round; }
.ml-anim .an-ponteiro { transform-origin: 160px 130px; animation: mlPonteiro 1.6s cubic-bezier(.2, 1.6, .4, 1) both; }
.ml-anim .an-gira { animation: mlGira var(--t, 1s) linear infinite; transform-box: view-box; transform-origin: 0 0; }
.ml-anim .an-rotor { fill: #3a4656; stroke: #8b99a8; stroke-width: 3; }
.ml-anim .an-raio { stroke: var(--ciano); stroke-width: 3; }
.ml-anim .an-eixo-g { stroke: rgba(255, 255, 255, .3); stroke-width: 2; fill: none; }
.ml-anim .an-curva { fill: none; stroke: var(--ciano); stroke-width: 3.5; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 0 5px rgba(95, 212, 244, .7)); }
.ml-anim .an-desenha { stroke-dasharray: 700; animation: mlDesenha 2s ease-out both; }
.ml-anim .an-tri-p { fill: rgba(95, 212, 244, .12); stroke: var(--ciano); stroke-width: 3; }
.ml-anim .an-seta { stroke: var(--txt3); stroke-width: 2; stroke-dasharray: 4 4; }
.ml-anim .an-calor { fill: none; stroke: var(--verm); stroke-width: 2.5; stroke-linecap: round; opacity: 0; animation: mlCalor 1.6s ease-out infinite; animation-delay: var(--d, 0s); }
.ml-anim .an-bulbo { fill: var(--ouro); }
.ml-anim .an-classe { fill: rgba(255, 255, 255, .08); stroke: rgba(255, 255, 255, .15); }
.ml-anim .an-classe.at { fill: rgba(95, 212, 244, .45); stroke: var(--ciano); stroke-width: 2; transform-box: fill-box; transform-origin: bottom; animation: mlCresceV 1.2s cubic-bezier(.2, 1.4, .4, 1) both; }
.ml-anim .an-limite { stroke: var(--verm); stroke-width: 2.5; stroke-dasharray: 8 5; }
.ml-anim .an-monte { fill: rgba(151, 204, 180, .2); stroke: var(--menta); stroke-width: 2; }
.ml-anim .an-escudo { fill: rgba(95, 212, 244, .14); stroke: var(--ciano); stroke-width: 3; }
.ml-anim .an-gota { fill: var(--ciano); animation: mlGota 1.5s ease-in infinite; animation-delay: var(--d, 0s); }
.ml-anim .an-po { fill: var(--ouro); animation: mlPo 1.8s ease-in infinite; animation-delay: var(--d, 0s); }
.ml-anim .an-anel { fill: none; stroke: #8b99a8; stroke-width: 6; }
.ml-anim .an-esfera { fill: #d6dde4; stroke: #6b7682; }
.ml-anim .an-gota-g { fill: rgba(242, 201, 107, .6); stroke: var(--ouro); stroke-width: 2; animation: mlRespira 2s ease-in-out infinite; transform-box: fill-box; transform-origin: bottom; }
.ml-anim .an-ponte { stroke: var(--ouro); stroke-width: 8; stroke-linecap: round; }
.ml-anim .an-borne { fill: #c9ad6b; stroke: #6b5524; stroke-width: 2; }

/* modal e efeitos */
.ml-modal { position: fixed; inset: 0; bottom: 34px; z-index: 80; }
.ml-fx { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 90; }
.ml-modal .bc-diag { margin: 10px 0 0; }

@keyframes mlGira { to { transform: rotate(360deg); } }
@keyframes mlPulso { 0% { box-shadow: 0 0 0 0 rgba(95, 212, 244, .6); } 100% { box-shadow: 0 0 0 14px rgba(95, 212, 244, 0); } }
@keyframes mlFormiga { to { stroke-dashoffset: -22; } }
@keyframes mlBrilho { 0% { opacity: 0; transform: skewX(-18deg) translateX(0); } 20% { opacity: 1; } 100% { opacity: 0; transform: skewX(-18deg) translateX(1900px); } }
@keyframes mlLaser { 0% { opacity: 0; transform: translateY(0); } 15% { opacity: .9; } 85% { opacity: .9; } 100% { opacity: 0; transform: translateY(680px); } }
@keyframes mlEntra { from { opacity: 0; transform: translateY(14px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes mlTreme { 0%, 100% { transform: none; } 20% { transform: translateX(-7px); } 40% { transform: translateX(6px); } 60% { transform: translateX(-4px); } 80% { transform: translateX(3px); } }
@keyframes mlVarre { 0% { box-shadow: inset 0 0 0 2px rgba(95, 212, 244, .9), 0 0 30px rgba(95, 212, 244, .4); } 100% { box-shadow: none; } }
@keyframes mlPonte { from { stroke-dasharray: 0 400; } to { stroke-dasharray: 400 0; } }
@keyframes mlCorrente { to { stroke-dashoffset: -24; } }
@keyframes mlBorne { 50% { fill: #ffe39a; } }
@keyframes mlRonca { 0% { transform: translate(0, 0); } 25% { transform: translate(1.5px, -1px); } 50% { transform: translate(-1.5px, 1px); } 75% { transform: translate(1px, 1px); } }
@keyframes mlQueima { to { fill: #ff6b3d; } }
@keyframes mlDesenha { from { stroke-dashoffset: 700; } to { stroke-dashoffset: 0; } }
@keyframes mlCorre { from { transform: translateX(0); } to { transform: translateX(-110px); } }
@keyframes mlCresce { from { transform: scaleX(0); } to { transform: none; } }
@keyframes mlCresceV { from { transform: scaleY(0); } to { transform: none; } }
@keyframes mlPisca { from { opacity: .35; } to { opacity: 1; } }
@keyframes mlTroca { 0%, 40% { opacity: 1; } 50%, 90% { opacity: 0; } 100% { opacity: 1; } }
@keyframes mlPonteiro { from { transform: rotate(-90deg); } to { transform: rotate(var(--a, 0deg)); } }
@keyframes mlCalor { 0% { opacity: 0; transform: translateY(0); } 30% { opacity: 1; } 100% { opacity: 0; transform: translateY(-30px); } }
@keyframes mlGota { 0% { transform: translateX(0); opacity: 1; } 60% { transform: translateX(50px); opacity: 1; } 100% { transform: translateX(46px) translateY(8px); opacity: 0; } }
@keyframes mlPo { 0% { transform: translateX(0); opacity: 1; } 60% { transform: translateX(-52px); opacity: 1; } 100% { transform: translateX(-48px); opacity: 0; } }
@keyframes mlRespira { 50% { transform: scale(1.06); } }

/* celular */
@media (max-width: 760px) {
  .ml { --assH: 40px; }
  .ml-topo { gap: 8px; padding: 8px 10px; padding-top: max(8px, env(safe-area-inset-top)); }
  .ml-motor-chip { display: none; }
  .ml-acoes { margin-left: auto; }
  .ml-corpo { flex-direction: column; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; }
  .ml-placa-area { flex: none; padding: 8px 10px 6px; gap: 4px; position: sticky; top: 0; z-index: 4; background: linear-gradient(180deg, var(--navy) 85%, rgba(15, 27, 46, 0)); }
  .ml-placa_ligacao .ml-placa-area { position: relative; }
  .ml-placa-bar { min-height: 0; }
  .ml-dica-placa { font-size: .8em; padding-left: 20px; }
  .ml-dica-placa::before { width: 10px; height: 10px; margin-top: -5px; }
  .ml-placa-rolo { display: block; flex: none; }
  .ml-zoom2 .ml-placa-rolo { max-height: 62vh; }
  .ml-painel { width: auto; overflow: visible; border-left: 0; padding: 6px 10px 0; background: none; }
  .ml-card { padding: 14px; }
  .ml-rodape-acao { margin: 0 -10px; padding: 12px 10px 12px; justify-content: center; }
  .ml-rodape-acao .bc-play, .ml-rodape-acao .bc-livre { flex: 1; justify-content: center; }
  .ml-calc-l input { width: 110px; }
  .ml-fbtn { margin-left: 0; }
  .ml-modal { bottom: 40px; }
  .ml-motor { width: 52%; }
}
@media (max-width: 760px) and (max-height: 700px) {
  .ml-placa-area { position: relative; }
}

/* TV 65" */
@media (min-width: 1800px) {
  .ml { --assH: 44px; }
  .ml-topo { padding: 14px 24px; gap: 18px; }
  .ml-placa-area { padding: 22px 32px; }
  .ml-painel { width: clamp(560px, 33vw, 760px); padding: 22px 26px 0; gap: 16px; }
  .ml-card { padding: 22px 24px; border-radius: 24px; }
  .ml-anel { width: 76px; height: 76px; }
  .ml-chip { min-height: 50px; padding: 10px 18px; }
  .ml-chip .ic { width: 20px; height: 20px; }
  .ml-op, .ml-faixa, .ml-lista-q button, .ml-redes button { min-height: 60px; }
  .ml-calc-l input, .ml-dial-n { min-height: 62px; width: 170px; }
  .ml-dial-l input[type=range] { height: 50px; }
  .ml-fbtn { min-height: 52px; }
  .ml-lista-q .n, .ml-calc .n { width: 38px; height: 38px; }
  .ml-lista-q button { grid-template-columns: 40px 1fr auto; }
  .ml-rodape-acao { margin: auto -26px 0; padding: 18px 26px 22px; }
  .ml-modal { bottom: 44px; }
  .ml-mini-rotor { width: 30px; height: 30px; }
}

/* professor: módulos e placas */
.seg-modulo { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding: 5px; margin: 4px 0 16px; border-radius: 18px; background: rgba(5, 12, 24, .5); border: 1px solid var(--borda); }
.seg-modulo button { display: inline-flex; align-items: center; justify-content: center; gap: 9px; border: 0; border-radius: 14px; padding: 12px 10px; min-height: 50px; background: transparent; color: var(--txt2); font-weight: 800; transition: all .25s; }
.seg-modulo button.sel { background: linear-gradient(135deg, rgba(151, 204, 180, .28), rgba(95, 212, 244, .16)); color: #fff; box-shadow: inset 0 0 0 1px rgba(151, 204, 180, .45), 0 8px 24px rgba(95, 212, 244, .12); }
.seg-modulo button[data-mod=mot].sel { background: linear-gradient(135deg, rgba(242, 201, 107, .28), rgba(242, 201, 107, .1)); box-shadow: inset 0 0 0 1px rgba(242, 201, 107, .45); }
.po-motor { align-items: center; }
.po-mini { width: 62px; height: 52px; flex: none; }
.po-mini svg { width: 100%; height: 100%; }
.linha-placa { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.placa-prev { border-radius: 18px; overflow: hidden; margin-bottom: 16px; animation: mlEntra .45s both; }
.placa-prev:empty { display: none; }
.placa-prev .placa-svg { filter: none; }
.grade-placas { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 16px; }
.placa-card { background: var(--vidro); border: 1px solid var(--borda); border-radius: 22px; padding: 14px; display: flex; flex-direction: column; gap: 12px; animation: mlEntra .5s both; transition: transform .25s, box-shadow .25s; }
.placa-card:hover { transform: translateY(-3px); box-shadow: var(--sombra); }
.placa-mini .placa-svg { filter: drop-shadow(0 10px 18px rgba(0, 0, 0, .45)); pointer-events: none; }
.placa-info strong { display: block; font-size: 1.05em; }
.placa-info small { color: var(--txt2); }
.placa-editor { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 22px; align-items: start; }
.placa-prev-ed { position: sticky; top: 0; margin: 0; }
.placa-editor .linha > * { flex: 1 1 150px; }
.placa-editor .campo-largo { flex-basis: 100%; }
.placa-editor .campo { margin-bottom: 10px; }
@media (max-width: 900px) {
  .placa-editor { grid-template-columns: 1fr; }
  .placa-prev-ed { position: sticky; top: -18px; z-index: 2; background: var(--navy2); padding: 6px 0; }
}
@media (max-width: 760px) { .seg-modulo button { font-size: .88em; gap: 6px; padding: 10px 6px; } }
@media (min-width: 1800px) { .seg-modulo button { min-height: 66px; } .po-mini { width: 84px; height: 70px; } }
.ml-revela { display: flex; flex-direction: column; gap: 2px; }
.ml-revela b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.3em; }
.ml-revela span { color: var(--txt2); font-size: .85em; }
.ml-redes b.ok { color: var(--verde); } .ml-redes b.erro { color: var(--verm); }
.ml-leitura .ml-chip, .ml-leitura .ml-op, .ml-leitura .ml-faixa { cursor: default; }
.placa-svg .pl-brilho, .placa-svg .pl-laser, .placa-svg .pc-visto, .placa-svg .pl-borda { pointer-events: none; }
.ml-caixa .cx-pe { stroke: rgba(151, 204, 180, .18); stroke-width: 3; }
.ml-caixa .cx-bobs path { stroke: rgba(201, 122, 60, .28); }
.ml-expl { margin-top: 10px; padding: 10px 12px; border-radius: 12px; background: rgba(95, 212, 244, .07); border-left: 3px solid var(--ciano); font-size: .88em; line-height: 1.45; color: var(--txt); text-align: left; animation: mlEntra .4s both; }
.ml-expl b { display: block; font-size: .78em; letter-spacing: 1.4px; text-transform: uppercase; color: var(--ciano); margin-bottom: 3px; }
.ml-lista-q li .ml-expl { margin: 4px 0 6px 40px; }
.ml-revela.gab { border-color: rgba(242, 201, 107, .55); background: linear-gradient(150deg, rgba(242, 201, 107, .16), rgba(22, 38, 63, .7)); }
.ml-revela.gab b { color: var(--ouro); }
.ml-calc.aberta .ml-formula { max-height: 900px; }
.ml-f-eq { font-size: 1.12em; }
.ml-leg { margin: 10px 0 2px; padding-top: 8px; border-top: 1px dashed rgba(242, 201, 107, .3); display: grid; gap: 6px; font-family: 'Barlow', sans-serif; font-size: .82em; letter-spacing: 0; }
.ml-leg-t { font-size: .78em; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; color: var(--ouro); }
.ml-leg div { display: grid; grid-template-columns: minmax(70px, auto) 1fr; gap: 10px; align-items: baseline; }
.ml-leg dt { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 800; font-size: 1.15em; color: var(--ouro); }
.ml-leg dd { margin: 0; color: var(--txt); line-height: 1.4; }

/* simulador do motor */
.ms { --assH: 34px; position: relative; height: 100%; display: flex; flex-direction: column; background: var(--navy); overflow: hidden; user-select: none; -webkit-user-select: none; }
.ms-corpo { flex: 1; min-height: 0; display: flex; }
.ms-palco { position: relative; flex: 1; min-width: 0; overflow: hidden; }
.ms-cv { position: absolute; inset: 0; width: 100%; height: 100%; display: block; touch-action: none; cursor: grab; }
.ms-cv:active { cursor: grabbing; }
.ms-vistas { margin-left: auto; display: flex; gap: 4px; padding: 4px; border-radius: 16px; background: rgba(5, 12, 24, .6); border: 1px solid var(--borda); }
.ms-vistas button { display: inline-flex; align-items: center; gap: 8px; border: 0; border-radius: 12px; padding: 8px 14px; background: transparent; color: var(--txt2); font-weight: 800; font-size: .88em; min-height: 40px; transition: all .25s; }
.ms-vistas button.sel { color: #062019; background: linear-gradient(135deg, var(--menta), var(--ciano)); box-shadow: 0 6px 20px rgba(95, 212, 244, .35); }
.ms-vi { width: 20px; height: 20px; border-radius: 50%; border: 2.5px solid currentColor; position: relative; flex: none; }
.ms-vi2d::after { content: ''; position: absolute; inset: 4px; border-radius: 50%; border: 2px dashed currentColor; animation: mlGira 3s linear infinite; }
.ms-vi3d { border-radius: 6px; transform: perspective(40px) rotateY(-28deg); }
.ms-vi3d::after { content: ''; position: absolute; left: 3px; right: 3px; top: 50%; height: 2.5px; margin-top: -1px; background: currentColor; }
.ms-hud { position: absolute; left: 14px; top: 12px; display: flex; gap: 8px; flex-wrap: wrap; pointer-events: none; max-width: 60%; }
.ms-chip { padding: 6px 12px; border-radius: 999px; background: rgba(6, 12, 22, .78); border: 1px solid var(--borda); font-weight: 800; font-size: .8em; color: var(--txt2); backdrop-filter: blur(6px); }
.ms-chip-est.ok { color: var(--verde); border-color: rgba(61, 220, 138, .45); }
.ms-chip-est.aviso { color: var(--ouro); border-color: rgba(242, 201, 107, .45); }
.ms-chip-est.erro { color: #ff8c7a; border-color: rgba(255, 107, 90, .55); animation: mlPisca .6s infinite alternate; }
.ms-zoom { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 8px; }
.ms-zoom .bc-btn { background: rgba(15, 27, 46, .85); }
.ms-aviso { position: absolute; left: 50%; top: 60px; transform: translate(-50%, -10px); opacity: 0; padding: 10px 18px; border-radius: 14px; background: rgba(255, 107, 90, .95); color: #fff; font-weight: 800; transition: all .3s; pointer-events: none; z-index: 4; text-align: center; max-width: 90%; }
.ms-aviso.vis { opacity: 1; transform: translate(-50%, 0); }
/* instrumentos */
.ms-instr { position: absolute; left: 12px; right: 70px; bottom: 12px; display: grid; grid-template-columns: repeat(3, minmax(0, 220px)); gap: 10px; pointer-events: none; }
.ms-ins { position: relative; border-radius: 16px; padding: 9px 12px 10px; background: linear-gradient(170deg, rgba(28, 34, 44, .94), rgba(8, 12, 20, .94)); border: 1px solid rgba(255, 255, 255, .1); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .08), 0 14px 30px rgba(0, 0, 0, .4); overflow: hidden; }
.ms-ins::before { content: ''; position: absolute; inset: 0; background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 3px); pointer-events: none; }
.ms-ins-cab { display: flex; justify-content: space-between; align-items: center; font-size: .66em; letter-spacing: 1.6px; text-transform: uppercase; font-weight: 800; color: var(--txt3); }
.ms-ins-led { width: 8px; height: 8px; border-radius: 50%; background: #333b46; }
.ms-ins.on .ms-ins-led { background: var(--verde); box-shadow: 0 0 10px var(--verde); }
.ms-ins.alto .ms-ins-led { background: var(--verm); box-shadow: 0 0 10px var(--verm); }
.ms-ins-vis { display: flex; align-items: baseline; gap: 6px; margin-top: 2px; }
.ms-ins-vis b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-weight: 800; font-size: 2.2em; line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: .5px; transition: color .3s; }
.ms-ins-vis small { color: var(--txt2); font-weight: 800; }
.ms-ins-v b { color: #ffd56b; text-shadow: 0 0 18px rgba(255, 213, 107, .45); }
.ms-ins-a b { color: #ff9d4f; text-shadow: 0 0 18px rgba(255, 157, 79, .45); }
.ms-ins-r b { color: #6ff0c5; text-shadow: 0 0 18px rgba(111, 240, 197, .45); }
.ms-ins.alto b { color: #ff6b5a; text-shadow: 0 0 22px rgba(255, 107, 90, .7); }
.ms-vinfo, .ms-dir { font-size: .7em; color: var(--txt3); font-weight: 700; margin-top: 2px; }
.ms-arco { height: 4px; border-radius: 4px; background: rgba(255, 255, 255, .08); margin-top: 6px; overflow: hidden; }
.ms-arco i { display: block; height: 100%; width: 0; border-radius: 4px; background: linear-gradient(90deg, var(--menta), var(--ciano)); transition: width .15s; }
.ms-ins-v .ms-arco i { background: linear-gradient(90deg, #b9932f, #ffd56b); }
.ms-fases { position: absolute; right: 10px; top: 24px; display: flex; gap: 5px; height: 40px; }
.ms-fases span { position: relative; width: 14px; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; font-size: .55em; color: var(--txt3); font-weight: 800; }
.ms-fases span::before { content: ''; position: absolute; top: 0; bottom: 13px; left: 3px; right: 3px; background: rgba(255, 255, 255, .07); border-radius: 3px; }
.ms-fases i { position: absolute; bottom: 13px; left: 3px; right: 3px; height: 0; background: var(--c); border-radius: 3px; box-shadow: 0 0 8px var(--c); transition: height .12s; }
.ms-spark { display: block; width: 100%; height: 30px; margin-top: 4px; }
.ms-pico { font-size: .68em; color: var(--txt3); font-weight: 700; }
.ms-pico b { color: #ffb37a; }
/* painel */
.ms-painel { width: clamp(330px, 30vw, 520px); flex: none; overflow-y: auto; padding: 14px 16px 18px; border-left: 1px solid var(--borda); background: rgba(8, 16, 28, .55); display: flex; flex-direction: column; gap: 10px; -webkit-overflow-scrolling: touch; }
.ms-sec { font-size: .72em; letter-spacing: 2px; text-transform: uppercase; color: var(--ouro); font-weight: 800; margin-top: 6px; }
.ms-liga-l { display: grid; grid-template-columns: auto 1fr; gap: 14px; align-items: center; }
.ms-liga { position: relative; width: 104px; height: 104px; border-radius: 50%; border: 0; display: grid; place-items: center; align-content: center; gap: 2px; color: #fff; background: radial-gradient(circle at 35% 30%, #3d4a5c, #141b26); box-shadow: inset 0 2px 0 rgba(255, 255, 255, .12), 0 12px 30px rgba(0, 0, 0, .5); transition: transform .15s; }
.ms-liga .ic { width: 34px; height: 34px; stroke-width: 2.6; }
.ms-liga b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; letter-spacing: 1.5px; font-size: .9em; }
.ms-liga:active { transform: scale(.95); }
.ms-liga-anel { position: absolute; inset: -5px; border-radius: 50%; border: 3px solid rgba(61, 220, 138, .35); }
.ms-liga:not(.on) { color: #b8ffd9; }
.ms-liga:not(.on) .ms-liga-anel { animation: msAnel 2s infinite; }
.ms-liga.on { background: radial-gradient(circle at 35% 30%, #ff7a6b, #a5261b); box-shadow: 0 0 40px rgba(255, 107, 90, .45), inset 0 2px 0 rgba(255, 255, 255, .25); }
.ms-liga.on .ms-liga-anel { border-color: rgba(255, 107, 90, .6); }
@keyframes msAnel { 0% { transform: scale(1); opacity: 1; } 100% { transform: scale(1.25); opacity: 0; } }
.ms-leituras { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.ms-leituras > div { padding: 7px 9px; border-radius: 10px; background: rgba(5, 12, 24, .55); border: 1px solid var(--borda); }
.ms-leituras span { display: block; font-size: .64em; text-transform: uppercase; letter-spacing: 1px; color: var(--txt3); font-weight: 800; }
.ms-leituras b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.12em; font-variant-numeric: tabular-nums; }
.ms-temp-l { grid-column: 1 / -1; }
.ms-temp { height: 8px; border-radius: 6px; margin: 5px 0 3px; background: rgba(255, 255, 255, .08); overflow: hidden; }
.ms-temp i { display: block; height: 100%; width: 0; background: linear-gradient(90deg, #3ddc8a, #f2c96b); border-radius: 6px; transition: width .2s; }
.ms-temp i.m { background: linear-gradient(90deg, #f2c96b, #ff9d4f); }
.ms-temp i.q { background: linear-gradient(90deg, #ff9d4f, #ff3b1a); box-shadow: 0 0 12px #ff3b1a; }
.ms-reset { display: flex; align-items: center; justify-content: center; gap: 10px; border: 0; border-radius: 14px; padding: 13px; font-weight: 800; background: linear-gradient(135deg, #f7dc93, var(--ouro)); color: #3a2900; animation: respira 1.6s infinite; }
.ms-reset.perigo { background: linear-gradient(135deg, #ff8c7a, #e2382a); color: #fff; }
.ms-seg { display: flex; gap: 4px; padding: 4px; border-radius: 14px; background: rgba(5, 12, 24, .55); border: 1px solid var(--borda); }
.ms-seg button { flex: 1; border: 0; border-radius: 10px; padding: 9px 6px; min-height: 42px; background: transparent; color: var(--txt2); font-weight: 800; font-size: .9em; transition: all .2s; display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
.ms-seg button b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.4em; line-height: 1; }
.ms-seg button.sel { background: linear-gradient(135deg, rgba(242, 201, 107, .32), rgba(242, 201, 107, .12)); color: #fff; box-shadow: inset 0 0 0 1px rgba(242, 201, 107, .55); }
.ms-fech-l { display: grid; grid-template-columns: 1fr 150px; gap: 10px; align-items: center; }
.ms-fech { flex-direction: column; }
.ms-cx { width: 100%; height: auto; border-radius: 12px; background: #141c28; border: 1px solid var(--borda); }
.ms-cx .cxp { stroke: #e0ad4a; stroke-width: 8; stroke-linecap: round; fill: none; }
.ms-cx .cxb { fill: #c9ad6b; stroke: #6b5524; stroke-width: 2; }
.ms-cx .cxl { stroke-width: 6; stroke-linecap: round; }
.ms-cx .cxl.aberta { stroke-dasharray: 4 6; opacity: .5; }
.ms-cx .cxx { stroke: #ff6b5a; stroke-width: 3; }
.ms-cx text { fill: #fff; font: 800 13px 'Barlow Condensed', Barlow, sans-serif; text-anchor: middle; }
.ms-cx .cxt { fill: var(--txt2); }
.ms-nota { margin: 0; font-size: .82em; color: var(--txt2); line-height: 1.4; }
.ms-nota .ok { color: var(--verde); font-weight: 700; } .ms-nota .erro { color: #ff8c7a; font-weight: 700; } .ms-nota .aviso { color: var(--ouro); font-weight: 700; }
.ms-ctl { padding: 10px 12px; border-radius: 14px; background: rgba(5, 12, 24, .45); border: 1px solid var(--borda); }
.ms-ctl-t { display: flex; justify-content: space-between; align-items: baseline; font-size: .85em; font-weight: 700; color: var(--txt2); margin-bottom: 6px; }
.ms-ctl-t b { color: #fff; font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.15em; }
.ms-ctl input[type=range] { width: 100%; height: 34px; -webkit-appearance: none; appearance: none; background: transparent; --pct: 33%; }
.ms-ctl input[type=range]::-webkit-slider-runnable-track { height: 8px; border-radius: 6px; background: linear-gradient(90deg, var(--ciano) var(--pct), rgba(255, 255, 255, .1) var(--pct)); }
.ms-ctl input[type=range]::-moz-range-track { height: 8px; border-radius: 6px; background: rgba(255, 255, 255, .1); }
.ms-ctl input[type=range]::-moz-range-progress { height: 8px; border-radius: 6px; background: var(--ciano); }
.ms-ctl input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; width: 26px; height: 26px; margin-top: -9px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff, #b9e2cf); box-shadow: 0 0 0 5px rgba(95, 212, 244, .25), 0 4px 10px rgba(0, 0, 0, .5); }
.ms-ctl input[type=range]::-moz-range-thumb { width: 24px; height: 24px; border-radius: 50%; border: 0; background: #fff; box-shadow: 0 0 0 5px rgba(95, 212, 244, .25); }
.ms-sits { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.ms-sit { position: relative; display: flex; align-items: flex-start; gap: 9px; text-align: left; border: 1px solid var(--borda); border-radius: 16px; padding: 11px 10px; min-height: 74px; background: linear-gradient(160deg, rgba(29, 49, 80, .7), rgba(10, 18, 32, .8)); color: var(--txt2); transition: transform .15s, border-color .25s, box-shadow .25s, background .25s; overflow: hidden; }
.ms-sit:hover { transform: translateY(-2px); border-color: rgba(95, 212, 244, .4); }
.ms-sit:active { transform: scale(.97); }
.ms-sit-ic { flex: none; width: 36px; height: 36px; border-radius: 11px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); color: var(--ciano); transition: all .25s; }
.ms-sit-ic .ic { width: 21px; height: 21px; }
.ms-sit-tx b { display: block; color: #fff; font-size: .88em; line-height: 1.15; }
.ms-sit-tx small { display: block; font-size: .7em; line-height: 1.3; margin-top: 3px; }
.ms-led { position: absolute; right: 9px; top: 9px; width: 9px; height: 9px; border-radius: 50%; background: #2f3a48; transition: all .25s; }
.ms-sit.on { border-color: rgba(95, 212, 244, .7); background: linear-gradient(160deg, rgba(95, 212, 244, .22), rgba(10, 18, 32, .85)); box-shadow: 0 0 26px rgba(95, 212, 244, .2), inset 0 0 0 1px rgba(95, 212, 244, .3); }
.ms-sit.on .ms-sit-ic { background: var(--ciano); color: #062019; box-shadow: 0 0 18px rgba(95, 212, 244, .7); }
.ms-sit.on .ms-led { background: var(--verde); box-shadow: 0 0 10px var(--verde); }
.ms-sit[data-k=travado].on, .ms-sit[data-k=falta].on { border-color: rgba(255, 107, 90, .7); background: linear-gradient(160deg, rgba(255, 107, 90, .22), rgba(10, 18, 32, .85)); box-shadow: 0 0 26px rgba(255, 107, 90, .2); }
.ms-sit[data-k=travado].on .ms-sit-ic, .ms-sit[data-k=falta].on .ms-sit-ic { background: var(--verm); color: #fff; box-shadow: 0 0 18px rgba(255, 107, 90, .7); }
.ms-sit.acao { border-color: rgba(242, 201, 107, .45); }
.ms-sit.acao .ms-sit-ic { background: linear-gradient(135deg, #f7dc93, var(--ouro)); color: #3a2900; }
.ms-sit.pulso::after { content: ''; position: absolute; inset: 0; border-radius: 16px; background: radial-gradient(circle, rgba(242, 201, 107, .6), transparent 70%); animation: msPulso .7s ease-out forwards; }
@keyframes msPulso { from { opacity: 1; transform: scale(.3); } to { opacity: 0; transform: scale(1.6); } }
.ms-expl { display: flex; flex-direction: column; gap: 8px; }
.ms-expl-est { padding: 12px 14px; border-radius: 14px; background: var(--vidro); border: 1px solid var(--borda); border-left: 4px solid var(--txt3); }
.ms-expl-est.ok { border-left-color: var(--verde); } .ms-expl-est.aviso { border-left-color: var(--ouro); } .ms-expl-est.erro { border-left-color: var(--verm); }
.ms-expl-est b { font-family: 'Barlow Condensed', 'Barlow', sans-serif; font-size: 1.15em; }
.ms-expl-est p { margin: 4px 0 0; font-size: .88em; color: var(--txt); line-height: 1.45; }
.ms-expl-foco { padding: 12px 14px; border-radius: 14px; background: rgba(95, 212, 244, .08); border: 1px solid rgba(95, 212, 244, .3); font-size: .88em; line-height: 1.45; animation: mlEntra .4s both; }
.ms-expl-foco b { color: var(--ciano); }
.ms-expl-rod { margin: 0; font-size: .72em; color: var(--txt3); }
/* celular */
@media (max-width: 760px) {
  .ms { --assH: 40px; }
  .ms-vistas { margin-left: auto; }
  .ms-vistas button { padding: 7px 9px; font-size: .78em; gap: 5px; }
  .ms .ml-tit { display: none; }
  .ms-corpo { flex-direction: column; overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .ms-palco { flex: none; height: 56vh; min-height: 340px; position: sticky; top: 0; z-index: 3; border-bottom: 1px solid var(--borda); }
  .ms-instr { left: 6px; right: 6px; bottom: 6px; gap: 5px; grid-template-columns: repeat(3, 1fr); }
  .ms-ins { padding: 6px 7px 7px; border-radius: 12px; }
  .ms-ins-cab { font-size: .52em; letter-spacing: .8px; }
  .ms-ins-vis b { font-size: 1.45em; }
  .ms-ins-vis small { font-size: .7em; }
  .ms-fases { display: none; }
  .ms-spark { height: 18px; }
  .ms-vinfo, .ms-dir, .ms-pico { font-size: .56em; }
  .ms-zoom { top: 54px; transform: none; right: 8px; }
  .ms-zoom .bc-btn { width: 34px; height: 34px; }
  .ms-hud { left: 8px; top: 8px; max-width: 80%; }
  .ms-chip { font-size: .68em; padding: 4px 9px; }
  .ms-painel { width: auto; overflow: visible; border-left: 0; padding: 12px 10px 20px; }
  .ms-liga { width: 88px; height: 88px; }
  .ms-sit-tx small { display: none; }
  .ms-sit { min-height: 56px; align-items: center; }
  .ms-fech-l { grid-template-columns: 1fr 130px; }
}
@media (max-width: 760px) and (max-height: 700px) { .ms-palco { height: 50vh; } }
/* TV 65" */
@media (min-width: 1800px) {
  .ms { --assH: 44px; }
  .ms-painel { width: clamp(520px, 30vw, 720px); padding: 20px 24px 24px; gap: 14px; }
  .ms-instr { grid-template-columns: repeat(3, minmax(0, 300px)); gap: 16px; left: 20px; bottom: 20px; }
  .ms-ins { padding: 14px 18px; }
  .ms-ins-vis b { font-size: 2.6em; }
  .ms-liga { width: 140px; height: 140px; }
  .ms-liga .ic { width: 46px; height: 46px; }
  .ms-seg button { min-height: 58px; }
  .ms-sit { min-height: 96px; padding: 14px; }
  .ms-sit-ic { width: 48px; height: 48px; }
  .ms-sit-ic .ic { width: 28px; height: 28px; }
  .ms-vistas button { min-height: 52px; padding: 10px 20px; }
  .ms-ctl input[type=range] { height: 46px; }
  .ms-ctl input[type=range]::-webkit-slider-thumb { width: 36px; height: 36px; margin-top: -14px; }
  .ms-zoom .bc-btn { width: 56px; height: 56px; }
}
.ms-aviso.info { background: rgba(242, 201, 107, .96); color: #3a2900; }
.ms-graf { width: 100%; height: 170px; border-radius: 14px; display: block; }
.ms-chip-esc i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin: 0 5px 0 4px; vertical-align: -1px; }
.ms-chip-esc i.c1 { background: #5fd4f4; box-shadow: 0 0 8px #5fd4f4; margin-left: 0; }
.ms-chip-esc i.c2 { background: #f6c344; box-shadow: 0 0 8px #f6c344; margin-left: 10px; }
.ms-chip-esc { color: #fff; }
.ml-rodape-acao .bc-livre.ativo { background: linear-gradient(135deg, #f7dc93, var(--ouro)); color: #3a2900; box-shadow: 0 0 30px rgba(242, 201, 107, .5); }
.ms-ctl-esc { display: flex; justify-content: space-between; font-size: .7em; color: var(--txt3); font-weight: 700; margin-top: -2px; }
