/* HORIX, site institucional. Paleta da marca: preto profundo, branco e prata,
   com uma cor por produto (StarConex verde, StarRecover dourado, StarVoIP azul). */
:root {
  --vazio: #020306;
  --espaco: #06080f;
  --painel: #0b0e17;
  --painel-2: #111522;
  --prata: #c4c9d2;
  --prata-media: #8d94a0;
  --branco: #f6f7f9;
  --linha: rgba(196, 201, 210, 0.12);
  --linha-forte: rgba(196, 201, 210, 0.24);
  --conex: #8cc63f;
  --recover: #e0b45a;
  --voip: #5ea8ff;
  --raio: 18px;
  --facil: cubic-bezier(0.22, 1, 0.36, 1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--vazio); color-scheme: dark; scroll-behavior: smooth; scroll-padding-top: 110px; }
body {
  background: var(--vazio); color: var(--prata);
  font-family: "Geologica", system-ui, sans-serif; font-weight: 300; font-size: 1.0625rem; line-height: 1.6;
  -webkit-font-smoothing: antialiased; overflow-x: hidden;
}
img, svg { display: block; }
a { color: var(--branco); text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
a:focus-visible, button:focus-visible, summary:focus-visible { outline: 2px solid var(--branco); outline-offset: 4px; border-radius: 6px; }
.moldura { width: min(1200px, 100% - 32px); margin-inline: auto; }
.pular { position: absolute; left: -9999px; }
.pular:focus { left: 16px; top: 16px; z-index: 50; background: var(--branco); color: var(--vazio); padding: 8px 14px; border-radius: 8px; }
::selection { background: rgba(196, 201, 210, 0.3); }

/* ---------- botões ---------- */
.botao { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 15px 28px; border-radius: 999px; text-decoration: none; font-weight: 500; font-size: 1rem; white-space: nowrap; transition: transform .3s var(--facil), background-color .3s, box-shadow .3s, border-color .3s; }
.botao:hover { transform: translateY(-2px); }
.botao-brilho { position: relative; background: var(--branco); color: var(--vazio); box-shadow: 0 0 0 1px rgba(255,255,255,.2), 0 10px 40px -10px rgba(255,255,255,.55); overflow: hidden; }
.botao-brilho::after { content: ""; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.75) 50%, transparent 70%); transform: translateX(-120%); transition: transform .9s var(--facil); }
.botao-brilho:hover::after { transform: translateX(120%); }
.botao-vazado { color: var(--branco); border: 1px solid var(--linha-forte); background: rgba(255,255,255,0.02); backdrop-filter: blur(6px); }
.botao-vazado:hover { border-color: rgba(255,255,255,.5); background: rgba(255,255,255,.06); }

/* ---------- menu ---------- */
.nav { position: fixed; top: 16px; left: 0; right: 0; z-index: 30; display: flex; justify-content: center; padding-inline: 16px; pointer-events: none; transition: top .4s var(--facil); }
.nav-pilula {
  pointer-events: auto; width: min(1200px, 100%); display: flex; align-items: center; gap: 24px;
  padding: 10px 10px 10px 22px; border-radius: 999px; border: 1px solid transparent;
  transition: width .5s var(--facil), background-color .4s, border-color .4s, box-shadow .4s, padding .4s;
}
.nav.rolou { top: 10px; }
.nav.rolou .nav-pilula { width: min(1040px, 100%); background: rgba(8, 10, 18, 0.72); border-color: var(--linha); backdrop-filter: blur(18px) saturate(140%); -webkit-backdrop-filter: blur(18px) saturate(140%); box-shadow: 0 20px 50px -20px rgba(0,0,0,.8); }
.nav-marca { display: flex; align-items: center; gap: 10px; text-decoration: none; color: var(--branco); font-weight: 600; letter-spacing: 0.18em; font-size: 0.9375rem; }
.nav-marca svg { width: 22px; height: 26px; color: var(--branco); }
.nav-links { display: flex; gap: 4px; margin-inline: auto; }
.nav-links a { position: relative; padding: 9px 14px; border-radius: 999px; color: var(--prata); text-decoration: none; font-size: 0.9375rem; transition: color .25s, background-color .25s; }
.nav-links a:hover { color: var(--branco); background: rgba(255,255,255,.05); }
.nav-links a.atual { color: var(--branco); background: rgba(255,255,255,.08); }
.botao-nav { padding: 11px 20px; font-size: 0.9375rem; background: var(--branco); color: var(--vazio); }
.nav-abrir { display: none; margin-left: auto; width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--linha-forte); background: rgba(8,10,18,.6); backdrop-filter: blur(10px); cursor: pointer; position: relative; }
.nav-abrir span { position: absolute; left: 14px; right: 14px; height: 1.5px; background: var(--branco); transition: transform .35s var(--facil), top .35s var(--facil); }
.nav-abrir span:first-child { top: 18px; }
.nav-abrir span:last-child { top: 26px; }
.nav-abrir[aria-expanded="true"] span:first-child { top: 22px; transform: rotate(45deg); }
.nav-abrir[aria-expanded="true"] span:last-child { top: 22px; transform: rotate(-45deg); }

.menu-movel { position: fixed; inset: 0; z-index: 25; background: rgba(2,3,6,.94); backdrop-filter: blur(20px); display: flex; align-items: center; padding: 100px 28px 40px; }
.menu-movel[hidden] { display: none; }
.menu-movel nav { display: grid; gap: 6px; }
.menu-movel a { color: var(--branco); text-decoration: none; font-size: clamp(2rem, 9vw, 2.75rem); font-weight: 300; letter-spacing: -0.03em; opacity: 0; transform: translateY(18px); animation: entra .6s var(--facil) forwards; animation-delay: calc(var(--i) * 60ms + 80ms); }

/* ---------- abertura ---------- */
.abertura { position: relative; min-height: 100svh; display: flex; align-items: center; padding-block: 130px 90px; overflow: hidden; isolation: isolate; }
.ceu-estrelado { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; }
.nebulosa { position: absolute; inset: -20%; z-index: -1; pointer-events: none;
  background:
    radial-gradient(38% 30% at 74% 46%, rgba(94,168,255,.16), transparent 70%),
    radial-gradient(30% 26% at 62% 70%, rgba(224,180,90,.12), transparent 70%),
    radial-gradient(30% 28% at 84% 26%, rgba(140,198,63,.12), transparent 70%),
    radial-gradient(60% 50% at 20% 110%, rgba(196,201,210,.07), transparent 70%);
  filter: blur(10px); animation: deriva 22s ease-in-out infinite alternate; }
@keyframes deriva { to { transform: translate3d(-3%, 2%, 0) scale(1.05); } }
.abertura::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 180px; background: linear-gradient(transparent, var(--vazio)); z-index: -1; }

.abertura-grade { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 0.92fr); gap: 40px; align-items: center; }
.selo { display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px 8px 12px; border: 1px solid var(--linha-forte); border-radius: 999px; font-size: 0.875rem; color: var(--prata); background: rgba(255,255,255,.03); backdrop-filter: blur(6px); }
.selo svg { width: 14px; height: 14px; color: var(--branco); animation: girar 6s linear infinite; }
@keyframes girar { to { transform: rotate(360deg); } }
.titulo-abertura { margin-top: 26px; font-weight: 200; font-size: clamp(3rem, 6.6vw, 6rem); line-height: 0.98; letter-spacing: -0.045em; color: var(--branco); }
.titulo-abertura .linha { display: block; clip-path: inset(-0.2em -100vw 0 -0.1em); padding-bottom: 0.06em; }
.titulo-abertura .linha > span { display: inline-block; padding-right: 0.1em; }
.titulo-abertura .forte > span { font-weight: 600; letter-spacing: -0.05em;
  background: linear-gradient(100deg, #ffffff 0%, #dfe3ea 40%, #9aa3b2 60%, #ffffff 80%); background-size: 220% 100%;
  -webkit-background-clip: text; background-clip: text; color: transparent; }
.js .titulo-abertura .forte > span { animation: entra 1s var(--facil) forwards, prata 7s 1.6s ease-in-out infinite; animation-delay: calc(var(--i) * 110ms + 150ms), 1.6s; }
html:not(.js) .titulo-abertura .forte > span { animation: prata 7s ease-in-out infinite; }
@keyframes prata { 0%,100% { background-position: 0% 0; } 50% { background-position: 100% 0; } }
.lead { margin-top: 28px; max-width: 47ch; font-size: clamp(1.0625rem, 1.4vw, 1.25rem); line-height: 1.6; color: var(--prata); }
.acoes { margin-top: 38px; display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.acoes-centro { justify-content: center; }

/* entrada da abertura (um momento orquestrado) */
.js [data-entrada] { opacity: 0; transform: translateY(40%); animation: entra 1s var(--facil) forwards; animation-delay: calc(var(--i) * 110ms + 150ms); }
.js .titulo-abertura [data-entrada] { transform: translateY(105%); }
@keyframes entra { to { opacity: 1; transform: none; } }

/* sistema orbital */
.sistema { position: relative; width: min(100%, 540px); aspect-ratio: 1; margin-inline: auto; --giro: 0deg; transform: rotateX(calc(var(--py, 0) * 6deg)) rotateY(calc(var(--px, 0) * -6deg)); transition: transform .6s var(--facil); }
.js .sistema { opacity: 0; animation: aparece 1.6s .5s var(--facil) forwards; }
@keyframes aparece { from { opacity: 0; scale: .85; } to { opacity: 1; scale: 1; } }
.orbita { position: absolute; inset: 0; margin: auto; border-radius: 50%; border: 1px solid rgba(196,201,210,.13); animation: orbitar linear infinite; }
.orbita::before { content: ""; position: absolute; inset: -1px; border-radius: 50%; background: conic-gradient(from 0deg, transparent 0 70%, rgba(255,255,255,.35) 85%, transparent 100%); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 1.5px), #000 calc(100% - 1px)); mask: radial-gradient(farthest-side, transparent calc(100% - 1.5px), #000 calc(100% - 1px)); }
.o1 { width: 52%; height: 52%; animation-duration: 26s; }
.o2 { width: 76%; height: 76%; animation-duration: 40s; animation-direction: reverse; }
.o3 { width: 100%; height: 100%; animation-duration: 58s; }
.o2 .planeta { top: auto; bottom: -11px; }
.o3 .planeta { top: 50%; left: auto; right: -11px; transform: translateY(-50%); }
@keyframes orbitar { to { transform: rotate(360deg); } }
.planeta { position: absolute; top: -11px; left: 50%; width: 22px; height: 22px; margin-left: -11px; border-radius: 50%; background: var(--c); box-shadow: 0 0 0 6px color-mix(in srgb, var(--c) 18%, transparent), 0 0 30px 6px color-mix(in srgb, var(--c) 55%, transparent); }
.o3 .planeta { margin-left: 0; }
.planeta span { position: absolute; left: 50%; top: 34px; translate: -50% 0; white-space: nowrap; font-size: 0.8125rem; color: var(--branco); padding: 4px 10px; border-radius: 999px; background: rgba(8,10,18,.75); border: 1px solid color-mix(in srgb, var(--c) 45%, transparent); animation: contra linear infinite; }
@keyframes contra { to { rotate: -360deg; } }
.o1 .planeta span { animation-duration: 26s; } .o2 .planeta span { animation-duration: 40s; animation-direction: reverse; } .o3 .planeta span { animation-duration: 58s; }
.conex { --c: var(--conex); } .recover { --c: var(--recover); } .voip { --c: var(--voip); }
.nucleo { position: absolute; inset: 0; margin: auto; width: 26%; height: 26%; border-radius: 50%; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 40%, #1a1f2d, #05060b 70%); border: 1px solid var(--linha-forte);
  box-shadow: 0 0 80px 10px rgba(196,201,210,.12), inset 0 0 30px rgba(255,255,255,.05); }
.nucleo::before { content: ""; position: absolute; inset: -40%; border-radius: 50%; background: radial-gradient(circle, rgba(255,255,255,.14), transparent 60%); animation: respira 5s ease-in-out infinite; }
@keyframes respira { 50% { transform: scale(1.12); opacity: .6; } }
.nucleo svg { position: relative; width: 44%; height: auto; color: var(--branco); filter: drop-shadow(0 0 14px rgba(255,255,255,.45)); }

.rolar { position: absolute; left: 50%; bottom: 28px; width: 26px; height: 42px; margin-left: -13px; border: 1px solid var(--linha-forte); border-radius: 999px; }
.rolar span { position: absolute; left: 50%; top: 8px; width: 3px; height: 8px; margin-left: -1.5px; border-radius: 3px; background: var(--branco); animation: desce 1.8s ease-in-out infinite; }
@keyframes desce { 0% { opacity: 0; transform: translateY(0); } 40% { opacity: 1; } 100% { opacity: 0; transform: translateY(14px); } }

/* ---------- faixa em movimento ---------- */
.faixa-movel { border-block: 1px solid var(--linha); overflow: hidden; padding-block: 22px; background: var(--espaco); -webkit-mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.faixa-trilho { display: flex; align-items: center; gap: 34px; width: max-content; animation: deslizar 40s linear infinite; }
.faixa-trilho span { font-size: clamp(1.125rem, 2vw, 1.5rem); color: var(--branco); font-weight: 300; letter-spacing: -0.01em; white-space: nowrap; }
.faixa-trilho svg { width: 16px; height: 16px; color: var(--prata-media); flex: none; }
@keyframes deslizar { to { transform: translateX(-50%); } }

/* ---------- seções genéricas ---------- */
.secao { position: relative; padding-block: clamp(80px, 11vw, 140px); }
.cabeca { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: end; margin-bottom: clamp(48px, 6vw, 80px); }
.cabeca h2, .api-grade h2 { font-weight: 300; font-size: clamp(2.25rem, 4.6vw, 4rem); line-height: 1.02; letter-spacing: -0.04em; color: var(--branco); }
.cabeca p { max-width: 50ch; font-size: 1.125rem; }

/* revelação na rolagem */
.js [data-revela] { opacity: 0; transform: translateY(46px); transition: opacity 1s var(--facil), transform 1s var(--facil); transition-delay: calc(var(--i, 0) * 110ms); }
.js [data-revela].visivel { opacity: 1; transform: none; }

/* ---------- cartões do ecossistema ---------- */
.cartoes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.cartao { position: relative; display: flex; flex-direction: column; gap: 10px; min-height: 360px; padding: 30px; border-radius: 24px; text-decoration: none; color: var(--prata); overflow: hidden; isolation: isolate;
  background: linear-gradient(180deg, var(--painel-2), var(--painel)); border: 1px solid var(--linha); transition: transform .5s var(--facil), border-color .4s; }
.cartao::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), color-mix(in srgb, var(--cor) 22%, transparent), transparent 60%); opacity: .55; transition: opacity .4s; }
.cartao::after { content: ""; position: absolute; right: -60px; bottom: -60px; width: 220px; height: 220px; border-radius: 50%; z-index: -1; background: radial-gradient(circle, color-mix(in srgb, var(--cor) 35%, transparent), transparent 65%); filter: blur(8px); transition: transform .6s var(--facil); }
.cartao:hover { transform: translateY(-6px); border-color: color-mix(in srgb, var(--cor) 45%, transparent); }
.cartao:hover::before { opacity: 1; }
.cartao:hover::after { transform: scale(1.25); }
.cartao-icone { width: 56px; height: 56px; border-radius: 16px; display: grid; place-items: center; color: var(--cor); background: color-mix(in srgb, var(--cor) 10%, transparent); border: 1px solid color-mix(in srgb, var(--cor) 30%, transparent); margin-bottom: 18px; }
.cartao-icone svg { width: 30px; height: 30px; }
.cartao-papel { font-size: 0.875rem; color: var(--cor); }
.cartao strong { font-size: 2rem; font-weight: 500; letter-spacing: -0.03em; color: var(--branco); line-height: 1.1; }
.cartao-texto { max-width: 32ch; }
.cartao-seta { margin-top: auto; padding-top: 22px; display: inline-flex; align-items: center; gap: 10px; color: var(--branco); font-size: 0.9375rem; }
.cartao-seta::after { content: ""; width: 26px; height: 1px; background: currentColor; transition: width .4s var(--facil); }
.cartao:hover .cartao-seta::after { width: 46px; }

/* ---------- produtos ---------- */
.produto { position: relative; padding-block: clamp(90px, 12vw, 160px); overflow: hidden; isolation: isolate; border-top: 1px solid var(--linha); }
.produto-ceu { position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(50% 60% at 78% 50%, color-mix(in srgb, var(--cor) 16%, transparent), transparent 70%),
    radial-gradient(40% 50% at 10% 10%, color-mix(in srgb, var(--cor) 8%, transparent), transparent 70%),
    linear-gradient(180deg, var(--vazio), var(--cor-escura) 55%, var(--vazio));
  opacity: .9; }
.produto-ceu::after { content: ""; position: absolute; inset: 0; background-image: radial-gradient(rgba(255,255,255,.55) 1px, transparent 1.4px); background-size: 46px 46px; opacity: .08; -webkit-mask: radial-gradient(60% 60% at 70% 50%, #000, transparent); mask: radial-gradient(60% 60% at 70% 50%, #000, transparent); }
.produto-invertido .produto-ceu { background:
    radial-gradient(50% 60% at 22% 50%, color-mix(in srgb, var(--cor) 16%, transparent), transparent 70%),
    radial-gradient(40% 50% at 90% 10%, color-mix(in srgb, var(--cor) 8%, transparent), transparent 70%),
    linear-gradient(180deg, var(--vazio), var(--cor-escura) 55%, var(--vazio)); }
.produto-grade { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(40px, 6vw, 90px); align-items: center; }
.produto-invertido .produto-texto { order: 2; }
.produto-papel { display: inline-flex; align-items: center; gap: 10px; color: var(--cor); font-size: 0.9375rem; }
.produto-papel svg { width: 14px; height: 14px; }
.produto h2 { margin-top: 10px; font-weight: 600; font-size: clamp(3rem, 7vw, 5.75rem); letter-spacing: -0.055em; line-height: 0.95; color: var(--branco); }
.produto h2::after { content: ""; display: block; width: 72px; height: 3px; margin-top: 22px; border-radius: 3px; background: var(--cor); box-shadow: 0 0 24px 2px color-mix(in srgb, var(--cor) 60%, transparent); }
.produto-resumo { margin-top: 24px; font-size: clamp(1.125rem, 1.6vw, 1.3125rem); line-height: 1.5; color: var(--branco); max-width: 38ch; font-weight: 300; }
.recursos { list-style: none; margin-top: 34px; display: grid; grid-template-columns: 1fr 1fr; gap: 22px 28px; }
.recursos li { padding-top: 16px; border-top: 1px solid color-mix(in srgb, var(--cor) 30%, transparent); }
.recursos strong { display: block; color: var(--branco); font-weight: 500; font-size: 1rem; }
.recursos span { display: block; margin-top: 4px; font-size: 0.9375rem; color: var(--prata-media); line-height: 1.5; }

/* janelas de aplicativo */
.tela-app { position: relative; border-radius: var(--raio); border: 1px solid var(--linha-forte); background: rgba(9, 11, 19, 0.88); backdrop-filter: blur(14px);
  box-shadow: 0 50px 120px -40px color-mix(in srgb, var(--cor) 55%, transparent), 0 0 0 1px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.06); overflow: hidden; font-size: 0.875rem; }
.js .tela-app[data-revela], .js .cena-recover[data-revela] { transform: translateY(60px) rotateX(10deg) scale(.96); transform-origin: 50% 100%; }
.js .tela-app[data-revela].visivel, .js .cena-recover[data-revela].visivel { transform: none; }
.janela-barra { display: flex; align-items: center; gap: 7px; padding: 12px 16px; border-bottom: 1px solid var(--linha); background: rgba(255,255,255,.02); }
.janela-barra i { width: 10px; height: 10px; border-radius: 50%; background: rgba(255,255,255,.14); }
.janela-barra span { margin-left: 10px; color: var(--prata-media); font-size: 0.8125rem; }

/* StarConex */
.conex-corpo { display: grid; grid-template-columns: 0.9fr 1.1fr; min-height: 400px; }
.conex-lista { border-right: 1px solid var(--linha); padding: 12px; display: grid; align-content: start; gap: 4px; }
.conex-filtro { display: flex; gap: 6px; margin-bottom: 8px; font-size: 0.75rem; }
.conex-filtro b, .conex-filtro span { padding: 5px 10px; border-radius: 999px; font-weight: 400; }
.conex-filtro b { background: color-mix(in srgb, var(--cor) 18%, transparent); color: var(--cor); }
.conex-filtro span { color: var(--prata-media); }
.contato { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; padding: 10px; border-radius: 12px; }
.contato.ativo { background: rgba(255,255,255,.05); box-shadow: inset 2px 0 0 var(--cor); }
.av { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; font-size: 0.6875rem; font-weight: 600; color: #fff; background: hsl(var(--h) 45% 38%); }
.contato strong { display: block; color: var(--branco); font-weight: 500; font-size: 0.8125rem; }
.contato small { display: block; color: var(--prata-media); font-size: 0.75rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 16ch; }
.canal { font-style: normal; font-size: 0.625rem; padding: 3px 6px; border-radius: 6px; border: 1px solid var(--linha-forte); color: var(--prata); }
.canal.wa { color: var(--conex); border-color: color-mix(in srgb, var(--conex) 40%, transparent); }
.canal.ig { color: #e58bd0; border-color: rgba(229,139,208,.4); }
.conex-chat { display: flex; flex-direction: column; }
.chat-topo { padding: 14px 16px; border-bottom: 1px solid var(--linha); }
.chat-topo strong { display: block; color: var(--branco); font-weight: 500; }
.chat-topo span { font-size: 0.75rem; color: var(--prata-media); }
.chat-msgs { flex: 1; display: flex; flex-direction: column; gap: 10px; padding: 16px; background-image: radial-gradient(rgba(255,255,255,.04) 1px, transparent 1px); background-size: 16px 16px; }
.msg { max-width: 85%; padding: 9px 13px; border-radius: 14px; line-height: 1.45; font-size: 0.8125rem; }
.msg.ele { background: var(--painel-2); color: var(--branco); border-bottom-left-radius: 4px; align-self: flex-start; }
.msg.eu { background: color-mix(in srgb, var(--conex) 26%, #0d1a0a); color: var(--branco); border-bottom-right-radius: 4px; align-self: flex-end; }
.evento { align-self: center; font-size: 0.6875rem; color: var(--prata-media); padding: 4px 10px; border: 1px dashed var(--linha-forte); border-radius: 999px; }
.digitando { align-self: flex-start; display: flex; gap: 4px; padding: 11px 14px; border-radius: 14px; background: var(--painel-2); }
.digitando i { width: 6px; height: 6px; border-radius: 50%; background: var(--prata-media); animation: pula 1.2s infinite; }
.digitando i:nth-child(2) { animation-delay: .15s; } .digitando i:nth-child(3) { animation-delay: .3s; }
@keyframes pula { 0%, 60%, 100% { transform: translateY(0); opacity: .5; } 30% { transform: translateY(-4px); opacity: 1; } }
.js [data-cena] .msg, .js [data-cena] .evento, .js [data-cena] .digitando { opacity: 0; transform: translateY(10px) scale(.97); }
.js [data-cena].visivel .msg, .js [data-cena].visivel .evento, .js [data-cena].visivel .digitando { animation: entra .6s var(--facil) forwards; animation-delay: calc(var(--d) + .5s); }

/* StarRecover */
.cena-recover { position: relative; padding: 0 0 60px 0; }
.painel-recover { width: 88%; }
.painel-corpo { padding: 18px; }
.painel-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.painel-cards div { padding: 12px; border-radius: 12px; background: rgba(255,255,255,.03); border: 1px solid var(--linha); }
.painel-cards small { display: block; font-size: 0.6875rem; color: var(--prata-media); }
.painel-cards b { display: block; margin-top: 2px; font-size: 1.375rem; font-weight: 500; color: var(--branco); letter-spacing: -0.02em; }
.painel-cards b.ok { color: var(--recover); }
.grafico { width: 100%; height: 150px; margin-top: 16px; }
.grafico .linha-graf { fill: none; stroke: var(--recover); stroke-width: 2; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; }
.grafico .area { opacity: 0; }
.js [data-cena].visivel .linha-graf { animation: tracar 2.2s .6s var(--facil) forwards; }
.js [data-cena].visivel .area { animation: surge 1.4s 1.6s forwards; }
html:not(.js) .grafico .linha-graf { stroke-dashoffset: 0; } html:not(.js) .grafico .area { opacity: 1; }
@keyframes tracar { to { stroke-dashoffset: 0; } }
@keyframes surge { to { opacity: 1; } }
.status { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.status span { font-size: 0.6875rem; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--linha-forte); color: var(--prata); }
.status .pago { color: var(--conex); border-color: color-mix(in srgb, var(--conex) 40%, transparent); }
.status .aberto { color: var(--recover); border-color: color-mix(in srgb, var(--recover) 40%, transparent); }
.status .negociado { color: var(--voip); border-color: color-mix(in srgb, var(--voip) 40%, transparent); }
.status .vencido { color: #ff8a7a; border-color: rgba(255,138,122,.4); }
.celular { position: absolute; right: 0; bottom: 0; width: min(46%, 270px); padding: 14px 12px 16px; border-radius: 34px; background: #07090f; border: 1px solid var(--linha-forte);
  box-shadow: 0 40px 80px -20px rgba(0,0,0,.9), 0 0 0 6px #0d1018, 0 30px 90px -30px color-mix(in srgb, var(--recover) 60%, transparent); }
.js [data-cena] .celular { transform: translateY(40px) rotate(4deg); opacity: 0; transition: transform 1.2s .4s var(--facil), opacity 1s .4s; }
.js [data-cena].visivel .celular { transform: rotate(-2deg); opacity: 1; }
.cel-topo { display: flex; gap: 10px; align-items: center; padding: 6px 6px 12px; border-bottom: 1px solid var(--linha); }
.cel-av { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; background: var(--branco); color: var(--vazio); font-weight: 700; font-size: 0.8125rem; }
.cel-topo strong { display: block; font-size: 0.75rem; color: var(--branco); font-weight: 500; }
.cel-topo small { display: block; font-size: 0.625rem; color: var(--conex); }
.cel-chat { padding: 12px 4px; background: #0b141a; border-radius: 14px; margin-top: 10px; }
.bolha { position: relative; background: #1f2c34; color: var(--branco); border-radius: 12px 12px 12px 4px; padding: 10px 12px 22px; font-size: 0.75rem; line-height: 1.45; margin-inline: 6px; }
.bolha p + p { margin-top: 6px; }
.bolha-hora { position: absolute; right: 10px; bottom: 6px; font-size: 0.5625rem; color: var(--prata-media); }
.bolha-botao { display: block; margin: 4px 6px 0; text-align: center; padding: 8px; border-radius: 10px; background: #1f2c34; color: #53bdeb; font-size: 0.75rem; }
.regua { list-style: none; display: flex; flex-wrap: wrap; gap: 5px; margin-top: 12px; padding-inline: 4px; }
.regua li { font-size: 0.625rem; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--linha-forte); color: var(--prata-media); }
.js [data-cena].visivel .regua li { animation: acende .5s forwards; animation-delay: calc(var(--d) + 1s); }
@keyframes acende { to { border-color: var(--recover); color: var(--recover); background: color-mix(in srgb, var(--recover) 12%, transparent); } }

/* StarVoIP */
.voip-corpo { display: grid; grid-template-columns: 1fr 1fr; min-height: 360px; }
.chamada { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; padding: 26px; border-right: 1px solid var(--linha);
  background: radial-gradient(70% 60% at 50% 40%, color-mix(in srgb, var(--voip) 16%, transparent), transparent 70%); }
.chamada-av { width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; font-weight: 600; color: #fff; background: linear-gradient(135deg, #2f6fb8, #173b66); margin-bottom: 8px; box-shadow: 0 0 0 0 color-mix(in srgb, var(--voip) 50%, transparent); animation: anel 2.2s infinite; }
@keyframes anel { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--voip) 45%, transparent); } 70% { box-shadow: 0 0 0 22px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
.chamada strong { color: var(--branco); font-weight: 500; font-size: 1.0625rem; }
.chamada small { color: var(--prata-media); font-size: 0.75rem; }
.onda { display: flex; align-items: center; gap: 3px; height: 40px; margin-top: 14px; }
.onda i { width: 3px; height: 30%; border-radius: 3px; background: var(--voip); animation: onda 1.1s ease-in-out infinite; }
.onda i:nth-child(3n) { animation-delay: .2s; } .onda i:nth-child(3n+1) { animation-delay: .45s; } .onda i:nth-child(4n) { animation-delay: .7s; } .onda i:nth-child(5n) { animation-duration: .9s; }
@keyframes onda { 50% { height: 100%; } }
.cronometro { margin-top: 6px; font-size: 1.5rem; font-weight: 300; color: var(--branco); font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
.gravando { display: inline-flex; align-items: center; gap: 6px; font-size: 0.6875rem; color: #ff8a7a; }
.gravando::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: #ff5f4d; animation: pisca 1.2s infinite; }
@keyframes pisca { 50% { opacity: .25; } }
.fila { padding: 16px; display: grid; align-content: start; gap: 6px; }
.fila-topo { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.fila-topo strong { color: var(--branco); font-weight: 500; }
.fila-topo em { font-style: normal; font-size: 0.6875rem; color: var(--voip); padding: 3px 9px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--voip) 45%, transparent); }
.ramal { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 11px 10px; border-radius: 10px; background: rgba(255,255,255,.025); }
.ramal b { color: var(--branco); font-weight: 500; font-size: 0.8125rem; }
.ramal span { font-size: 0.75rem; color: var(--prata-media); }
.pulso { width: 8px; height: 8px; border-radius: 50%; background: var(--voip); animation: anel 2s infinite; }
.pulso.livre { background: var(--conex); animation: none; }
.pulso.pausa { background: var(--prata-media); animation: none; }

/* ---------- API oficial ---------- */
.secao-api { background: linear-gradient(180deg, var(--vazio), var(--espaco) 30%, var(--espaco) 70%, var(--vazio)); border-top: 1px solid var(--linha); }
.api-grade { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: 56px 72px; align-items: center; }
.api-grade > div > p { margin-top: 20px; max-width: 50ch; font-size: 1.0625rem; }
.migracao { display: grid; grid-template-columns: 1fr 90px 1fr; align-items: center; gap: 8px; padding: 26px; border-radius: 24px; border: 1px solid var(--linha); background: linear-gradient(180deg, var(--painel-2), var(--painel)); }
.mig-lado { padding: 18px; border-radius: 16px; border: 1px solid var(--linha); background: rgba(255,255,255,.02); }
.mig-destino { border-color: rgba(140,198,63,.4); background: rgba(140,198,63,.06); box-shadow: 0 20px 60px -30px rgba(140,198,63,.6); }
.mig-rotulo { font-size: 0.75rem; color: var(--prata-media); }
.mig-lado strong { display: block; margin-top: 2px; color: var(--branco); font-weight: 500; font-size: 1.125rem; }
.mig-lista { list-style: none; margin-top: 12px; display: grid; gap: 6px; font-size: 0.8125rem; }
.mig-lista li { display: flex; gap: 8px; align-items: baseline; }
.mig-lista.ruim li::before { content: ""; flex: none; width: 8px; height: 1px; background: #ff8a7a; transform: translateY(-3px); }
.mig-lista.bom li::before { content: ""; flex: none; width: 9px; height: 5px; border-left: 1.5px solid var(--conex); border-bottom: 1.5px solid var(--conex); transform: rotate(-45deg) translateY(-3px); }
.mig-caminho { width: 100%; height: 60px; overflow: visible; }
.mig-caminho path { fill: none; stroke: var(--linha-forte); stroke-width: 1.5; stroke-dasharray: 0.03 0.02; vector-effect: non-scaling-stroke; }
.mig-ponto { fill: var(--conex); filter: drop-shadow(0 0 6px var(--conex)); }
.passos { grid-column: 1 / -1; list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.passos li { position: relative; padding: 26px 22px; border-radius: 20px; border: 1px solid var(--linha); background: rgba(255,255,255,.02); }
.passo-num { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; border: 1px solid var(--linha-forte); color: var(--branco); font-size: 0.875rem; margin-bottom: 18px; }
.passos strong { display: block; color: var(--branco); font-weight: 500; font-size: 1.125rem; }
.passos p { margin-top: 6px; font-size: 0.9375rem; color: var(--prata-media); }

/* ---------- implantação ---------- */
.secao-impl { border-top: 1px solid var(--linha); }
.trilha { position: relative; --progresso: 0; }
.trilha-linha { position: absolute; left: 0; right: 0; top: 7px; height: 1px; background: var(--linha-forte); }
.trilha-luz { position: absolute; inset: 0; transform-origin: 0 50%; transform: scaleX(var(--progresso)); background: linear-gradient(90deg, var(--conex), var(--recover), var(--voip)); box-shadow: 0 0 18px rgba(255,255,255,.35); }
.trilha ol { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; }
.trilha li { position: relative; padding-top: 44px; }
.trilha li::before { content: ""; position: absolute; top: 0; left: 0; width: 15px; height: 15px; border-radius: 50%; background: var(--vazio); border: 1px solid var(--branco); box-shadow: 0 0 0 5px var(--vazio); }
.trilha li.visivel::before { background: var(--branco); box-shadow: 0 0 0 5px var(--vazio), 0 0 20px 4px rgba(255,255,255,.4); transition: background-color .6s .4s, box-shadow .6s .4s; }
.marco { display: block; font-size: 0.9375rem; color: var(--prata-media); }
.trilha strong { display: block; margin-top: 6px; font-weight: 300; font-size: clamp(2rem, 3.4vw, 3rem); letter-spacing: -0.04em; color: var(--branco); line-height: 1; }
.trilha p { margin-top: 14px; max-width: 34ch; }

/* ---------- segmentos ---------- */
.segmentos { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.segmentos li { --cor: var(--prata); position: relative; padding: 28px 24px; border-radius: 22px; border: 1px solid var(--linha); background: linear-gradient(180deg, var(--painel-2), var(--painel)); overflow: hidden; isolation: isolate; transition: transform .5s var(--facil), border-color .4s; }
.segmentos li::before { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(300px circle at var(--mx, 50%) var(--my, 0%), rgba(255,255,255,.08), transparent 60%); }
.segmentos li:hover { transform: translateY(-4px); border-color: var(--linha-forte); }
.segmentos svg { width: 40px; height: 40px; color: var(--branco); margin-bottom: 24px; }
.segmentos strong { display: block; color: var(--branco); font-weight: 500; font-size: 1.25rem; }
.segmentos span { display: block; margin-top: 6px; font-size: 0.9375rem; color: var(--prata-media); }

/* ---------- perguntas ---------- */
.faq-grade { display: grid; grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); gap: 48px; align-items: start; }
.cabeca-faq { display: block; position: sticky; top: 120px; margin-bottom: 0; }
.cabeca-faq p { margin-top: 18px; }
details { border-bottom: 1px solid var(--linha); }
details:first-child { border-top: 1px solid var(--linha); }
summary { cursor: pointer; list-style: none; padding: 26px 56px 26px 0; position: relative; color: var(--branco); font-size: 1.1875rem; font-weight: 400; transition: color .3s; }
summary::-webkit-details-marker { display: none; }
summary::before, summary::after { content: ""; position: absolute; right: 12px; top: 50%; width: 16px; height: 1.5px; background: var(--prata); transition: transform .4s var(--facil); }
summary::after { transform: rotate(90deg); }
details[open] summary::after { transform: rotate(0deg); }
summary:hover { color: #fff; }
details > div { overflow: hidden; }
details p { padding: 0 56px 26px 0; color: var(--prata); }
details[open] > div { animation: abre .5s var(--facil); }
@keyframes abre { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: none; } }

/* ---------- contato ---------- */
.contato { position: relative; overflow: hidden; isolation: isolate; border-top: 1px solid var(--linha); text-align: center; }
.contato-brilho { position: absolute; inset: 0; z-index: -1; background:
  radial-gradient(40% 50% at 50% 100%, rgba(196,201,210,.18), transparent 70%),
  radial-gradient(25% 30% at 30% 80%, rgba(140,198,63,.10), transparent 70%),
  radial-gradient(25% 30% at 70% 80%, rgba(94,168,255,.12), transparent 70%); }
.contato-dentro { padding-block: clamp(100px, 13vw, 170px); display: flex; flex-direction: column; align-items: center; }
.contato-simbolo { width: 54px; height: 64px; color: var(--branco); margin-bottom: 34px; filter: drop-shadow(0 0 24px rgba(255,255,255,.5)); }
.contato h2 { font-weight: 200; font-size: clamp(2.5rem, 6.4vw, 5.25rem); letter-spacing: -0.045em; line-height: 1.0; color: var(--branco); max-width: 15ch; }
.contato p { margin-top: 24px; max-width: 46ch; font-size: 1.125rem; }

/* ---------- rodapé ---------- */
.rodape { border-top: 1px solid var(--linha); background: var(--espaco); }
.rodape-grade { display: grid; grid-template-columns: minmax(0, 1.6fr) repeat(3, minmax(0, 1fr)); gap: 40px; padding-block: 64px 40px; }
.rodape-marca img { height: 64px; width: auto; }
.rodape-marca p { margin-top: 18px; color: var(--prata-media); font-size: 0.9375rem; }
.rodape h3 { font-size: 0.8125rem; font-weight: 500; color: var(--branco); margin-bottom: 14px; }
.rodape nav { display: grid; gap: 10px; align-content: start; font-size: 0.9375rem; }
.rodape nav a { color: var(--prata-media); text-decoration: none; transition: color .2s; }
.rodape nav a:hover { color: var(--branco); }
.rodape-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px; padding-block: 22px 32px; border-top: 1px solid var(--linha); font-size: 0.8125rem; color: var(--prata-media); }

/* ---------- páginas de texto (privacidade, termos) ---------- */
.cabecalho { border-bottom: 1px solid var(--linha); background: var(--espaco); }
.topo { display: flex; align-items: center; justify-content: space-between; padding-block: 16px; }
.topo img { height: 52px; width: auto; }
.topo a.voltar { font-size: 0.9375rem; color: var(--prata); }
.documento { padding-block: 56px 100px; max-width: 70ch; }
.documento h1 { font-weight: 300; font-size: clamp(2.25rem, 5vw, 3.25rem); letter-spacing: -0.035em; color: var(--branco); line-height: 1.05; }
.documento .vigencia { margin-top: 12px; color: var(--prata-media); font-size: 0.9375rem; }
.documento h2 { margin-top: 48px; font-weight: 500; font-size: 1.25rem; color: var(--branco); }
.documento p, .documento ul { margin-top: 14px; }
.documento ul { padding-left: 1.2em; }
.documento li { margin-top: 6px; }
body > footer.moldura.rodape { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 32px; padding-block: 32px 44px; font-size: 0.875rem; color: var(--prata-media); background: none; }
body > footer.moldura.rodape nav { display: flex; gap: 22px; }
body > footer.moldura.rodape a { color: var(--prata); }

/* ---------- responsivo ---------- */
@media (max-width: 1080px) {
  .nav-links { display: none; }
  .botao-nav { margin-left: auto; }
}
@media (max-width: 900px) {
  .botao-nav { display: none; }
  .nav-abrir { display: block; }
  .nav-pilula { padding: 8px 8px 8px 18px; }
  .abertura { padding-block: 110px 80px; }
  .abertura-grade { grid-template-columns: 1fr; gap: 20px; }
  .sistema { order: -1; width: min(78vw, 360px); }
  .cabeca, .api-grade, .faq-grade { grid-template-columns: 1fr; gap: 24px; }
  .cabeca-faq { position: static; }
  .cartoes { grid-template-columns: 1fr; }
  .cartao { min-height: 0; }
  .produto-grade { grid-template-columns: 1fr; gap: 48px; }
  .produto-invertido .produto-texto { order: 0; }
  .passos { grid-template-columns: 1fr 1fr; }
  .segmentos { grid-template-columns: 1fr 1fr; }
  .trilha-linha { top: 0; bottom: 0; left: 7px; right: auto; width: 1px; height: auto; }
  .trilha-luz { transform-origin: 50% 0; transform: scaleY(var(--progresso)); background: linear-gradient(180deg, var(--conex), var(--recover), var(--voip)); }
  .trilha ol { grid-template-columns: 1fr; gap: 44px; }
  .trilha li { padding: 0 0 0 44px; }
  .rodape-grade { grid-template-columns: 1fr 1fr; }
  .rodape-marca { grid-column: 1 / -1; }
}
@media (max-width: 600px) {
  .recursos { grid-template-columns: 1fr; }
  .conex-corpo { grid-template-columns: 1fr; }
  .conex-lista { display: none; }
  .voip-corpo { grid-template-columns: 1fr; }
  .chamada { border-right: 0; border-bottom: 1px solid var(--linha); }
  .cena-recover { padding-bottom: 0; }
  .painel-recover { width: 100%; }
  .celular { position: relative; width: 82%; margin: -40px 0 0 auto; }
  .migracao { grid-template-columns: 1fr; }
  .mig-caminho { height: 50px; transform: rotate(90deg); width: 60px; margin-inline: auto; }
  .passos, .segmentos { grid-template-columns: 1fr; }
  .botao { width: 100%; }
  .acoes .botao { width: auto; flex: 1 1 100%; }
  summary { font-size: 1.0625rem; }
}

/* ---------- movimento reduzido ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
  .js [data-revela], .js [data-entrada], .js .sistema, .js [data-cena] .msg, .js [data-cena] .evento, .js [data-cena] .digitando, .js [data-cena] .celular { opacity: 1 !important; transform: none !important; }
  .grafico .linha-graf { stroke-dashoffset: 0; } .grafico .area { opacity: 1; }
}
@media (max-width: 900px) { .rolar { display: none; } }

/* =========================================================
   Rodada 4: clientes, efeitos contínuos por produto, API
   ========================================================= */

/* ---------- clientes ---------- */
.clientes { overflow: hidden; isolation: isolate; border-top: 1px solid var(--linha); }
.clientes-ceu { position: absolute; inset: 0; z-index: -1; background:
  radial-gradient(45% 60% at 50% 55%, rgba(196,201,210,.07), transparent 70%),
  radial-gradient(30% 40% at 15% 70%, rgba(140,198,63,.06), transparent 70%),
  radial-gradient(30% 40% at 85% 40%, rgba(94,168,255,.07), transparent 70%); }
.clientes-total { display: block; margin-top: 14px; color: var(--branco); font-weight: 500; }
.vitrine-logos { display: grid; gap: 18px; -webkit-mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); mask: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.trilho-logos { display: flex; width: max-content; }
.trilho-logos ul { list-style: none; display: flex; gap: 18px; padding-right: 18px; }
.trilho-ida { animation: deslizar 70s linear infinite; }
.trilho-volta { animation: deslizar 80s linear infinite reverse; }
.vitrine-logos:hover .trilho-logos { animation-play-state: paused; }
.logo-cliente { position: relative; flex: none; width: 236px; height: 128px; border-radius: 22px; display: grid; place-items: center; padding: 22px 30px; overflow: hidden;
  background: linear-gradient(160deg, rgba(255,255,255,.055), rgba(255,255,255,.015)); border: 1px solid var(--linha);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06); transition: transform .5s var(--facil), border-color .4s, background-color .4s, box-shadow .5s; }
.logo-cliente::before { content: ""; position: absolute; inset: -1px; border-radius: inherit; padding: 1px; background: conic-gradient(from var(--ang, 0deg), transparent 0 60%, rgba(255,255,255,.5) 75%, transparent 90%); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity .4s; animation: girar-borda 3s linear infinite; }
@property --ang { syntax: "<angle>"; inherits: false; initial-value: 0deg; }
@keyframes girar-borda { to { --ang: 360deg; } }
.logo-cliente img { grid-area: 1 / 1; max-width: 100%; max-height: 64px; width: auto; height: auto; object-fit: contain; transition: opacity .45s var(--facil), transform .6s var(--facil), filter .45s; }
.logo-cliente .mono { opacity: .62; }
.logo-cliente .cor { opacity: 0; transform: scale(.92); }
.logo-cliente span { position: absolute; left: 0; right: 0; bottom: 9px; text-align: center; font-size: 0.6875rem; color: var(--prata-media); opacity: 0; transform: translateY(6px); transition: opacity .4s, transform .4s var(--facil); }
.logo-cliente:hover { transform: translateY(-6px) scale(1.03); background: #f4f5f7; border-color: transparent; box-shadow: 0 30px 60px -25px rgba(255,255,255,.35); }
.logo-cliente.clara:hover { background: #10131c; box-shadow: 0 30px 60px -25px rgba(196,201,210,.3); }
.logo-cliente:hover::before { opacity: 1; }
.logo-cliente:hover .mono { opacity: 0; transform: scale(1.05); }
.logo-cliente:hover .cor { opacity: 1; transform: none; }
.logo-cliente:hover span { opacity: 1; transform: none; color: #545b66; }
.logo-cliente.clara:hover span { color: var(--prata-media); }

/* ---------- visuais dos produtos ---------- */
.visual { position: relative; }
.palco { position: absolute; inset: -60px -40px; pointer-events: none; z-index: 0; }
.visual .tela-app { z-index: 1; }

/* StarConex: canais convergindo para a caixa de entrada */
.rede { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.rede path { fill: none; stroke: color-mix(in srgb, var(--conex) 30%, transparent); stroke-width: 1; stroke-dasharray: 3 6; vector-effect: non-scaling-stroke; animation: fluir 1.6s linear infinite; }
.rede circle { fill: var(--conex); filter: drop-shadow(0 0 6px var(--conex)); }
@keyframes fluir { to { stroke-dashoffset: -18; } }
.chip-canal { position: absolute; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; font-size: 0.8125rem; color: var(--branco); white-space: nowrap;
  background: rgba(10,14,12,.85); border: 1px solid color-mix(in srgb, var(--conex) 35%, transparent); backdrop-filter: blur(8px); box-shadow: 0 10px 30px -10px rgba(0,0,0,.8); z-index: 2; animation: flutuar 6s ease-in-out infinite; }
.chip-canal .pt { width: 8px; height: 8px; border-radius: 50%; }
.pt.wa { background: #25d366; box-shadow: 0 0 10px #25d366; } .pt.ig { background: #e1306c; box-shadow: 0 0 10px #e1306c; } .pt.st { background: var(--prata); } .pt.ml { background: #f2c94c; } .pt.fb { background: #4f8cff; box-shadow: 0 0 10px #4f8cff; }
.c1 { left: -10px; top: 10px; } .c2 { left: -30px; top: 47%; animation-delay: -1.5s; } .c3 { left: 20px; bottom: 6px; animation-delay: -3s; } .c4 { right: -10px; top: 0; animation-delay: -2s; } .c5 { right: 0; bottom: 14px; animation-delay: -4s; }
@keyframes flutuar { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
#starconex .produto-ceu::before { content: ""; position: absolute; inset: 0; background-image:
  linear-gradient(rgba(140,198,63,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(140,198,63,.07) 1px, transparent 1px); background-size: 64px 64px;
  -webkit-mask: radial-gradient(55% 60% at 72% 50%, #000, transparent 75%); mask: radial-gradient(55% 60% at 72% 50%, #000, transparent 75%); animation: grade 18s linear infinite; }
@keyframes grade { to { background-position: 64px 64px, 64px 64px; } }

/* StarRecover: feixes dourados e avisos de pagamento */
#starrecover .produto-ceu::before { content: ""; position: absolute; left: 20%; top: 50%; width: 1400px; height: 1400px; margin: -700px 0 0 -700px; opacity: .55;
  background: repeating-conic-gradient(from 0deg, rgba(224,180,90,.10) 0deg 4deg, transparent 4deg 18deg);
  -webkit-mask: radial-gradient(circle, #000 10%, transparent 60%); mask: radial-gradient(circle, #000 10%, transparent 60%); animation: girar 90s linear infinite; }
.avisos { position: absolute; left: -24px; bottom: -6px; z-index: 3; display: grid; gap: 10px; width: 250px; }
.aviso { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center; padding: 12px 14px; border-radius: 16px; background: rgba(20,16,8,.9); border: 1px solid rgba(224,180,90,.35); backdrop-filter: blur(10px); box-shadow: 0 20px 40px -18px rgba(0,0,0,.9), 0 0 30px -10px rgba(224,180,90,.4);
  opacity: 0; transform: translateX(-20px) scale(.96); transition: opacity .6s var(--facil), transform .6s var(--facil); }
.aviso.ativo { opacity: 1; transform: none; }
.aviso i { width: 30px; height: 30px; border-radius: 50%; background: radial-gradient(circle at 35% 35%, #ffe2a0, var(--recover)); position: relative; }
.aviso i::after { content: ""; position: absolute; left: 10px; top: 8px; width: 7px; height: 12px; border-right: 2px solid #2a1d05; border-bottom: 2px solid #2a1d05; transform: rotate(40deg); }
.aviso b { display: block; color: var(--branco); font-weight: 500; font-size: 0.8125rem; }
.aviso span { display: block; color: var(--prata-media); font-size: 0.75rem; }

/* StarVoIP: ondas de som saindo da ligação */
#starvoip .produto-ceu::before { content: ""; position: absolute; inset: 0; background: repeating-radial-gradient(circle at 72% 50%, rgba(94,168,255,.07) 0 1px, transparent 1px 46px); -webkit-mask: radial-gradient(50% 60% at 72% 50%, #000, transparent 75%); mask: radial-gradient(50% 60% at 72% 50%, #000, transparent 75%); }
.ondas-voip { position: absolute; left: 25%; top: 50%; width: 0; height: 0; z-index: 0; pointer-events: none; }
.ondas-voip i { position: absolute; left: -60px; top: -60px; width: 120px; height: 120px; border-radius: 50%; border: 1.5px solid color-mix(in srgb, var(--voip) 70%, transparent); opacity: 0; animation: onda-expande 5s cubic-bezier(.2,.6,.3,1) infinite; }
.ondas-voip i:nth-child(2) { animation-delay: 1s; } .ondas-voip i:nth-child(3) { animation-delay: 2s; } .ondas-voip i:nth-child(4) { animation-delay: 3s; } .ondas-voip i:nth-child(5) { animation-delay: 4s; }
@keyframes onda-expande { 0% { transform: scale(.6); opacity: .9; } 100% { transform: scale(7); opacity: 0; } }

/* ---------- API oficial, parte ilustrada ---------- */
.secao-api { overflow: hidden; isolation: isolate; }
.api-aurora { position: absolute; inset: 0; z-index: -1; background:
  radial-gradient(40% 35% at 75% 25%, rgba(37,211,102,.16), transparent 70%),
  radial-gradient(35% 30% at 60% 40%, rgba(140,198,63,.08), transparent 70%),
  radial-gradient(30% 30% at 20% 10%, rgba(196,201,210,.06), transparent 70%); animation: deriva 20s ease-in-out infinite alternate; }
.api-topo { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 64px; align-items: center; margin-bottom: clamp(80px, 10vw, 130px); }
.api-papel { --cor: #4ade80; }
.api-texto h2 { margin-top: 12px; font-weight: 600; font-size: clamp(2.75rem, 6vw, 5rem); line-height: 0.98; letter-spacing: -0.05em; color: var(--branco); }
.api-lead { margin-top: 24px; max-width: 48ch; font-size: 1.125rem; color: var(--prata); }
.pilares { list-style: none; margin-top: 34px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pilares li { display: grid; grid-template-columns: auto 1fr; column-gap: 12px; padding: 16px; border-radius: 16px; border: 1px solid rgba(74,222,128,.18); background: rgba(74,222,128,.04); }
.pilar-ic { grid-row: 1 / span 2; width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; color: #4ade80; background: rgba(74,222,128,.1); }
.pilar-ic svg { width: 20px; height: 20px; }
.pilares strong { color: var(--branco); font-weight: 500; }
.pilares span:not(.pilar-ic) { font-size: 0.875rem; color: var(--prata-media); line-height: 1.45; }
.selo-tech { margin-top: 26px; display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px; border-radius: 14px; color: var(--branco); font-weight: 500; background: linear-gradient(135deg, rgba(79,140,255,.25), rgba(37,211,102,.2)); border: 1px solid rgba(255,255,255,.2); }
.selo-tech[hidden] { display: none; }
.selo-tech svg { width: 16px; height: 16px; }

.api-ilustra { position: relative; height: 560px; display: grid; place-items: center; }
.anel-oficial { position: absolute; inset: 0; display: grid; place-items: center; }
.anel-oficial i { position: absolute; border-radius: 50%; border: 1px solid rgba(74,222,128,.22); }
.anel-oficial i:nth-child(1) { width: 300px; height: 300px; }
.anel-oficial i:nth-child(2) { width: 430px; height: 430px; border-style: dashed; animation: girar 60s linear infinite; }
.anel-oficial i:nth-child(3) { width: 540px; height: 540px; border-color: rgba(74,222,128,.1); }
.cel-oficial { position: relative; z-index: 2; width: 290px; padding: 18px 14px 20px; border-radius: 40px; background: #06090a; border: 1px solid var(--linha-forte);
  box-shadow: 0 0 0 7px #0c1112, 0 50px 100px -30px rgba(0,0,0,.95), 0 40px 120px -40px rgba(37,211,102,.55); transform: rotate(-4deg); animation: flutuar 7s ease-in-out infinite; }
.perfil { text-align: center; padding: 14px 8px 18px; border-bottom: 1px solid var(--linha); }
.perfil-av { display: grid; place-items: center; width: 64px; height: 64px; margin: 0 auto 10px; border-radius: 50%; background: radial-gradient(circle at 50% 35%, #1a1f2d, #05060b); border: 1px solid var(--linha-forte); }
.perfil-av svg { width: 26px; height: 31px; color: var(--branco); }
.perfil strong { display: inline-flex; align-items: center; gap: 6px; color: var(--branco); font-weight: 600; letter-spacing: 0.08em; }
.check svg { width: 18px; height: 18px; fill: #4ade80; filter: drop-shadow(0 0 6px rgba(74,222,128,.7)); }
.perfil small { display: block; margin-top: 2px; font-size: 0.75rem; color: #4ade80; }
.msg-oficial { position: relative; margin: 16px 4px 0; padding: 12px 12px 26px; border-radius: 14px 14px 14px 4px; background: #1f2c34; font-size: 0.8125rem; line-height: 1.5; color: var(--branco); }
.tag-modelo { display: inline-block; margin-bottom: 8px; font-size: 0.625rem; padding: 3px 8px; border-radius: 999px; background: rgba(74,222,128,.15); color: #4ade80; }
.msg-botoes { display: grid; gap: 6px; margin-top: 10px; }
.msg-botoes span { text-align: center; padding: 7px; border-radius: 8px; background: rgba(255,255,255,.06); color: #53bdeb; font-size: 0.75rem; }
.lido { position: absolute; right: 10px; bottom: 6px; font-size: 0.625rem; color: var(--prata-media); }
.lido b { color: #53bdeb; font-weight: 600; letter-spacing: -2px; }
.flutua { position: absolute; z-index: 3; display: inline-flex; align-items: center; gap: 8px; padding: 10px 16px; border-radius: 999px; font-size: 0.8125rem; color: var(--branco); white-space: nowrap;
  background: rgba(8,14,10,.88); border: 1px solid rgba(74,222,128,.35); backdrop-filter: blur(8px); box-shadow: 0 16px 40px -14px rgba(0,0,0,.9); animation: flutuar 6s ease-in-out infinite; }
.flutua i { width: 16px; height: 16px; border-radius: 50%; background: #4ade80; position: relative; }
.flutua i::after { content: ""; position: absolute; left: 5px; top: 3px; width: 4px; height: 7px; border-right: 1.6px solid #06100a; border-bottom: 1.6px solid #06100a; transform: rotate(40deg); }
.f1 { left: 2%; top: 16%; } .f2 { right: 0; top: 26%; animation-delay: -2s; } .f3 { left: 6%; bottom: 18%; animation-delay: -4s; } .f4 { right: 4%; bottom: 10%; animation-delay: -1s; }
.js [data-cena] .flutua { opacity: 0; scale: .8; transition: opacity .7s var(--facil), scale .7s var(--facil); }
.js [data-cena].visivel .flutua { opacity: 1; scale: 1; }
.js [data-cena].visivel .f2 { transition-delay: .25s; } .js [data-cena].visivel .f3 { transition-delay: .5s; } .js [data-cena].visivel .f4 { transition-delay: .75s; }

/* segmentos com destaque */
.segmentos .seg-destaque { background: linear-gradient(160deg, rgba(196,201,210,.12), var(--painel)); border-color: var(--linha-forte); }

@media (max-width: 1180px) { .nav-links a { padding: 9px 10px; } }
@media (max-width: 900px) {
  .api-topo { grid-template-columns: 1fr; gap: 24px; }
  .api-ilustra { height: 520px; }
  .palco { inset: -30px -6px; }
  .c2 { left: -6px; } .c4 { right: -6px; }
  .avisos { left: 0; bottom: auto; top: -30px; width: 220px; }
  .logo-cliente { width: 190px; height: 108px; padding: 18px 22px; }
  .logo-cliente img { max-height: 54px; }
}
@media (max-width: 600px) {
  .pilares { grid-template-columns: 1fr; }
  .api-ilustra { height: 470px; transform: scale(.9); }
  .anel-oficial i:nth-child(3) { display: none; }
  .chip-canal { font-size: 0.75rem; padding: 6px 11px; }
  .c3, .c5 { display: none; }
  .avisos { position: relative; top: auto; left: auto; width: 100%; margin-bottom: 16px; }
  .aviso:not(.ativo) { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .trilho-logos { animation: none !important; }
  .vitrine-logos { overflow-x: auto; }
  .aviso:first-child { opacity: 1; transform: none; }
  .js [data-cena] .flutua { opacity: 1 !important; scale: 1 !important; }
}

/* ajustes de camada e leitura */
.nav-links a { white-space: nowrap; }
@media (max-width: 1320px) { .nav-links { gap: 0; } .nav-links a { padding: 9px 10px; font-size: 0.875rem; } .nav-pilula { gap: 14px; } }
.palco { z-index: auto; }
.rede { z-index: 0; }
.chip-canal { z-index: 3; }
.c2 { left: -54px; }
.logo-cliente .mono { opacity: .85; }
.logo-cliente img { max-height: 70px; }
@media (max-width: 600px) {
  .c2 { display: none; }
  .f2, .f4 { display: none; }
  .f1 { left: 0; top: 4%; } .f3 { left: auto; right: 0; bottom: 6%; }
  .cel-oficial { transform: rotate(-2deg) scale(.92); }
}

/* =========================================================
   Rodada 5: passagens coloridas entre produtos, vitrine de
   marcas refinada e acabamento para celular
   ========================================================= */

/* ---------- passagem de um produto para o outro ---------- */
.passagem { position: relative; height: clamp(120px, 15vw, 210px); overflow: hidden; isolation: isolate;
  background: linear-gradient(180deg, var(--de-fundo), var(--para-fundo)); }
.passagem::before { content: ""; position: absolute; inset: -40% -10%; z-index: -1;
  background:
    radial-gradient(32% 60% at 28% 50%, color-mix(in srgb, var(--de) 24%, transparent), transparent 70%),
    radial-gradient(34% 64% at 72% 50%, color-mix(in srgb, var(--para) 30%, transparent), transparent 70%);
  filter: blur(10px); animation: mare 9s ease-in-out infinite alternate; }
@keyframes mare { from { transform: translateX(-4%); opacity: .75; } to { transform: translateX(4%); opacity: 1; } }
.passagem-linha { position: absolute; left: 0; right: 0; top: 50%; height: 1px;
  background: linear-gradient(90deg, transparent, var(--de) 22%, var(--para) 78%, transparent); opacity: .55; }
.passagem-linha::after { content: ""; position: absolute; inset: -6px 0; background: inherit; filter: blur(8px); opacity: .7; }
.passagem-cometa { position: absolute; top: 50%; left: 0; width: 26%; height: 2px; margin-top: -1px; border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--de) 40%, var(--para));
  box-shadow: 0 0 18px 2px color-mix(in srgb, var(--para) 60%, transparent);
  animation: cometa 5.5s cubic-bezier(.55, .1, .35, 1) infinite; }
@keyframes cometa { from { transform: translateX(-110%); } to { transform: translateX(420%); } }
.passagem-no { position: absolute; left: 50%; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%;
  background: var(--para); box-shadow: 0 0 0 4px color-mix(in srgb, var(--para) 18%, transparent), 0 0 30px 6px color-mix(in srgb, var(--para) 55%, transparent); }
.passagem-no::after { content: ""; position: absolute; inset: -4px; border-radius: 50%; border: 1px solid var(--para); animation: pulso-no 2.8s ease-out infinite; }
@keyframes pulso-no { from { transform: scale(1); opacity: .9; } to { transform: scale(5); opacity: 0; } }
.passagem + .produto, .passagem + .secao-api { border-top: 0; }

/* ---------- produtos com mais cor ---------- */
.produto .produto-ceu { background:
    radial-gradient(55% 65% at 78% 50%, color-mix(in srgb, var(--cor) 24%, transparent), transparent 70%),
    radial-gradient(35% 45% at 92% 88%, color-mix(in srgb, var(--cor2) 18%, transparent), transparent 70%),
    radial-gradient(40% 50% at 8% 12%, color-mix(in srgb, var(--cor2) 12%, transparent), transparent 70%),
    linear-gradient(180deg, var(--fundo-de, var(--vazio)), var(--cor-escura) 50%, var(--fundo-para, var(--vazio))); opacity: 1; }
.produto-invertido .produto-ceu { background:
    radial-gradient(55% 65% at 22% 50%, color-mix(in srgb, var(--cor) 24%, transparent), transparent 70%),
    radial-gradient(35% 45% at 8% 88%, color-mix(in srgb, var(--cor2) 18%, transparent), transparent 70%),
    radial-gradient(40% 50% at 92% 12%, color-mix(in srgb, var(--cor2) 12%, transparent), transparent 70%),
    linear-gradient(180deg, var(--fundo-de, var(--vazio)), var(--cor-escura) 50%, var(--fundo-para, var(--vazio))); }
.produto h2 { background: linear-gradient(100deg, #fff 0%, #fff 35%, color-mix(in srgb, var(--cor) 65%, #fff) 60%, var(--cor2) 85%, #fff 100%);
  background-size: 220% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: reflexo 9s ease-in-out infinite alternate; }
@keyframes reflexo { from { background-position: 0% 0; } to { background-position: 100% 0; } }
.produto h2::after { background: linear-gradient(90deg, var(--cor), var(--cor2)); }
.secao-api { background: linear-gradient(180deg, #04130b, var(--espaco) 30%, var(--espaco) 70%, var(--vazio)); }

/* ---------- vitrine de marcas ---------- */
.clientes-ceu::after { content: ""; position: absolute; left: 50%; top: 62%; width: 1300px; height: 1300px; margin: -650px 0 0 -650px; opacity: .5;
  background: conic-gradient(from 0deg, transparent, rgba(140,198,63,.09), transparent 25%, rgba(224,180,90,.08), transparent 50%, rgba(94,168,255,.1), transparent 75%);
  -webkit-mask: radial-gradient(closest-side, #000, transparent); mask: radial-gradient(closest-side, #000, transparent); animation: girar 60s linear infinite; }
.vitrine-logos { padding-block: 36px; margin-block: -36px; gap: 16px; }
.trilho-logos ul { gap: 16px; padding-right: 16px; }
.logo-cliente { width: 222px; height: 124px; border-radius: 20px; padding: 20px 26px; z-index: 0;
  background: linear-gradient(165deg, rgba(255,255,255,.06), rgba(255,255,255,.012) 55%, rgba(255,255,255,.03));
  border: 1px solid rgba(255,255,255,.075);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.07), 0 18px 40px -30px rgba(0,0,0,.9);
  transition: transform .7s var(--facil), background .5s, box-shadow .6s var(--facil), border-color .5s; }
.logo-cliente img { width: var(--lw); max-width: 84%; max-height: 80px; height: auto; }
.logo-cliente .mono { opacity: .74; transition: opacity .5s var(--facil), transform .7s var(--facil); }
.vitrine-logos:hover .logo-cliente:not(:hover) .mono { opacity: .42; }
.logo-cliente span { bottom: 11px; font-weight: 400; letter-spacing: .01em; }
.logo-cliente:hover, .logo-cliente.foco { z-index: 2; transform: translateY(-8px) scale(1.045); border-color: rgba(255,255,255,.5);
  background: linear-gradient(165deg, #ffffff, #eef0f4 70%, #e6e9ef);
  box-shadow: 0 30px 50px -26px rgba(0,0,0,.9), 0 0 50px -10px rgba(196,201,210,.35), inset 0 1px 0 #fff; }
.logo-cliente.clara:hover, .logo-cliente.clara.foco { border-color: rgba(196,201,210,.35);
  background: linear-gradient(165deg, #182033, #0c111d 70%);
  box-shadow: 0 30px 50px -26px rgba(0,0,0,.9), 0 0 50px -10px rgba(94,168,255,.3), inset 0 1px 0 rgba(255,255,255,.12); }
.logo-cliente:hover .cor, .logo-cliente.foco .cor { opacity: 1; transform: translateY(-9px); }
.logo-cliente.foco .mono { opacity: 0; }
.logo-cliente.foco span { opacity: 1; transform: none; color: #545b66; }
.logo-cliente.clara.foco span { color: var(--prata-media); }
.logo-cliente.foco::before { opacity: 1; }

/* ---------- celular ---------- */
@media (max-width: 900px) {
  .logo-cliente { width: 176px; height: 104px; padding: 16px 18px; border-radius: 18px; }
  .logo-cliente img { width: calc(var(--lw) * .8); max-height: 62px; }
  .logo-cliente span { font-size: 0.625rem; bottom: 8px; }
  .logo-cliente.foco .cor { transform: translateY(-7px); }
  .vitrine-logos { gap: 12px; } .trilho-logos ul { gap: 12px; padding-right: 12px; }
  .vitrine-logos { -webkit-mask: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); mask: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
}
@media (max-width: 600px) {
  .secao { padding-block: 76px; }
  .produto { padding-block: 72px 84px; }
  .produto-grade { gap: 40px; }
  .produto h2 { font-size: clamp(2.75rem, 13vw, 3.5rem); }
  .produto h2::after { margin-top: 16px; }
  .produto-resumo { font-size: 1.0625rem; }
  .passagem { height: 110px; }
  .passagem-cometa { width: 40%; animation-duration: 4s; }
  .cabeca h2 { font-size: clamp(2rem, 9vw, 2.5rem); }
  .abertura h1 { letter-spacing: -0.035em; }
}
@media (prefers-reduced-motion: reduce) {
  .passagem::before, .passagem-cometa, .passagem-no::after, .produto h2, .clientes-ceu::after { animation: none !important; }
  .passagem-cometa { display: none; }
}
/* passagem sobreposta às bordas das seções, sem emenda visível */
.passagem { z-index: 1; pointer-events: none; margin-block: -90px; height: clamp(260px, 22vw, 330px);
  background: linear-gradient(180deg, transparent, var(--de-fundo) 28%, var(--para-fundo) 72%, transparent); }
.passagem::before { -webkit-mask: linear-gradient(180deg, transparent, #000 35%, #000 65%, transparent); mask: linear-gradient(180deg, transparent, #000 35%, #000 65%, transparent); }
.passagem + .produto, .passagem + .secao-api { position: relative; z-index: 0; }
.logo-cliente .mono { opacity: .86; }
.vitrine-logos:hover .logo-cliente:not(:hover) .mono { opacity: .5; }
@media (max-width: 600px) { .passagem { margin-block: -60px; height: 230px; } }
/* rótulos das órbitas sempre por cima do núcleo */
.sistema .nucleo { z-index: 0; }
.sistema .orbita { z-index: 1; }
.planeta span { z-index: 2; }
/* nome da marca sob o logo removido (redundante): o logo fica centrado também no destaque */
.logo-cliente span { display: none; }
.logo-cliente:hover .cor, .logo-cliente.foco .cor { transform: scale(1.04); }

/* =========================================================
   Rodada 6: passagem de bastão entre os produtos
   Fina, sem faixa: a cor de um produto corre até o centro
   conforme a rolagem e entrega a vez à cor do próximo.
   ========================================================= */
.passagem { --p: 0; --a: clamp(0, calc(var(--p) / .62), 1); --b: clamp(0, calc((var(--p) - .58) / .42), 1);
  height: 180px; margin-block: -90px; overflow: visible;
  background: linear-gradient(180deg, transparent, var(--de-fundo) 22%, var(--para-fundo) 78%, transparent); }
.passagem::before { display: none; }
/* fios que nascem do centro depois da entrega */
.passagem-linha { top: 50%; height: 1px; left: 8%; right: 8%; opacity: calc(.15 + .45 * var(--b));
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--de) 70%, transparent) 30%, var(--para) 50%, color-mix(in srgb, var(--para) 70%, transparent) 70%, transparent);
  transform: scaleX(calc(.04 + .96 * var(--b))); transform-origin: 50% 50%; }
.passagem-linha::after { inset: -1px 0; filter: blur(3px); opacity: .6;
  background: linear-gradient(90deg, transparent 0 40%, rgba(255,255,255,.9) 50%, transparent 60% 100%); background-size: 200% 100%;
  animation: brilho-fio 3.6s ease-in-out infinite; }
@keyframes brilho-fio { from { background-position: 100% 0; } to { background-position: -100% 0; } }
/* o bastão: rastro de luz que viaja da esquerda até o centro mudando de cor */
.passagem-cometa { animation: none; top: 50%; left: 0; width: 140px; height: 2px; margin: -1px 0 0 -140px;
  --cor-b: color-mix(in oklab, var(--para) calc(var(--a) * 100%), var(--de));
  background: linear-gradient(90deg, transparent, var(--cor-b));
  box-shadow: 0 0 14px 1px var(--cor-b);
  transform: translateX(calc(var(--a) * 50vw)); opacity: calc(1 - var(--b)); }
.passagem-cometa::after { content: ""; position: absolute; right: -3px; top: -2px; width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 10px 3px var(--cor-b); }
/* o ponto de chegada: acende na cor do próximo produto e respira */
.passagem-no { width: 8px; height: 8px; margin: -4px 0 0 -4px;
  transform: scale(calc(.2 + .8 * var(--b))); opacity: var(--b);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--para) 20%, transparent), 0 0 22px 4px color-mix(in srgb, var(--para) 50%, transparent); }
.passagem-no::after { inset: -3px; animation: pulso-no 3.2s ease-out infinite; }
@media (max-width: 600px) { .passagem { height: 130px; margin-block: -65px; } .passagem-cometa { width: 90px; margin-left: -90px; } }
@media (prefers-reduced-motion: reduce) { .passagem { --p: 1; } .passagem-linha::after { animation: none; } }
.passagem { background: none; }
.passagem-cometa { --cor-b: color-mix(in oklab, var(--para) calc(var(--a) * var(--a) * 100%), var(--de)); }
/* bordas de cada produto fundem na cor exata do vizinho: sem emenda */
.produto::after { content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, var(--fundo-de, var(--vazio)) 0, transparent 180px, transparent calc(100% - 180px), var(--fundo-para, var(--vazio)) 100%); }
.secao-api::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 180px; z-index: -1; pointer-events: none; background: linear-gradient(180deg, #04130b, transparent); }

/* ---------- canais com ícones reais (StarConex) ---------- */
.ic, .canal-ic { --ic-fundo: #6b5bff; display: grid; place-items: center; flex: none; color: #fff; }
.ic svg, .canal-ic svg { width: 58%; height: 58%; }
.ic.wa, .canal-ic.wa { background: linear-gradient(160deg, #3ee07f, #12a150); --brilho: #25d366; }
.ic.ig, .canal-ic.ig { background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 6%, #fd5949 40%, #d6249f 62%, #285aeb 92%); --brilho: #e1306c; }
.ic.fb, .canal-ic.fb { background: linear-gradient(200deg, #ff6b7f 0%, #b23cff 45%, #0a84ff 100%); --brilho: #7a5cff; --ic-fundo: #8a4dff; }
.ic.ml, .canal-ic.ml { background: linear-gradient(160deg, #ffcf6b, #e09a1f); --brilho: #f0b33f; }
.ic.st, .canal-ic.st { background: linear-gradient(160deg, #5fe0c0, #1f9e86); --brilho: #2fd3a0; }
.chip-canal { padding: 6px 15px 6px 6px; gap: 10px; font-weight: 400; background: rgba(10,13,22,.82); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.1); box-shadow: 0 14px 30px -14px rgba(0,0,0,.9); }
.chip-canal .ic { width: 28px; height: 28px; border-radius: 50%; box-shadow: 0 0 16px -2px var(--brilho), inset 0 1px 0 rgba(255,255,255,.35); }
.canal-ic { width: 24px; height: 24px; border-radius: 7px; box-shadow: inset 0 1px 0 rgba(255,255,255,.3), 0 4px 10px -4px var(--brilho); }
.canal-ic.mini { display: inline-grid; width: 16px; height: 16px; border-radius: 5px; margin-right: 7px; vertical-align: -3px; box-shadow: none; }
@media (max-width: 600px) { .chip-canal .ic { width: 22px; height: 22px; } .chip-canal { padding: 4px 11px 4px 4px; gap: 7px; } }

/* =========================================================
   Rodada 7: cada passagem tem o seu gesto
   1 Convergir (chega no StarConex): os fios dos canais vêm de
     lados e alturas diferentes e se encontram num ponto só.
   2 Queda (chega no StarRecover): uma luz cai do alto e vira
     uma moeda dourada, com ondas de pagamento.
   3 Onda (chega no StarVoIP): um sinal de voz atravessa da
     direita e termina num ponto que toca.
   4 Selo (chega na API oficial): um círculo se fecha e vira o
     selo de verificado.
   ========================================================= */
.passagem > * { pointer-events: none; }
.passagem svg { position: absolute; overflow: visible; }

/* 1 convergir */
.p-convergir .fios { inset: 0; width: 100%; height: 100%; }
.p-convergir .fios path { fill: none; stroke: var(--c); stroke-width: 1.4; vector-effect: non-scaling-stroke; stroke-linecap: round;
  stroke-dasharray: 1 1; stroke-dashoffset: calc(1 - clamp(0, calc(var(--a) * 1.15 - var(--i) * .04), 1));
  filter: drop-shadow(0 0 4px var(--c)); opacity: .85; }
.p-convergir .passagem-no { background: #fff; }

/* 2 queda */
.p-queda .gota { position: absolute; left: 50%; top: 50%; width: 2px; height: 150px; margin: -150px 0 0 -1px; border-radius: 2px;
  background: linear-gradient(180deg, transparent, var(--de) 45%, #fff2cf); box-shadow: 0 0 12px 1px color-mix(in srgb, var(--para) 60%, transparent);
  transform: translateY(calc((var(--a) - 1) * 260px)) scaleY(calc(.4 + .6 * var(--a))); transform-origin: 50% 100%; opacity: calc(var(--a) * (1 - var(--b))); }
.p-queda .moeda { position: absolute; left: 50%; top: 50%; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%;
  display: grid; place-items: center; font-size: 10px; font-weight: 600; letter-spacing: -.02em; color: #3a2a06;
  background: radial-gradient(circle at 35% 30%, #fff1c4, #e0b45a 55%, #a87a22);
  box-shadow: 0 0 0 1px rgba(255,236,190,.6), 0 0 26px 4px rgba(224,180,90,.45);
  transform: scale(var(--b)) rotateY(calc((1 - var(--b)) * 180deg)); opacity: var(--b); }
.p-queda .anel { position: absolute; left: 50%; top: 50%; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; border: 1px solid var(--para);
  opacity: calc(var(--b) * .8); animation: anel-moeda 3s ease-out infinite; }
.p-queda .anel.a2 { animation-delay: 1.5s; }
@keyframes anel-moeda { from { transform: scale(1); opacity: .8; } to { transform: scale(6) scaleY(.45); opacity: 0; } }
.p-queda .passagem-linha { background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--para) 60%, transparent) 50%, transparent); }

/* 3 onda */
.p-onda .onda { inset: 0; width: 100%; height: 100%; }
.p-onda .onda path { fill: none; stroke: url(#g-onda); stroke-width: 1.3; vector-effect: non-scaling-stroke; stroke-linejoin: round;
  stroke-dasharray: 1 1; stroke-dashoffset: calc(1 - var(--a)); filter: drop-shadow(0 0 3px rgba(94,168,255,.6));
  transform-origin: 50% 50%; animation: voz 1.1s ease-in-out infinite alternate; }
@keyframes voz { from { transform: scaleY(.55); } to { transform: scaleY(1.15); } }
.p-onda .ping { position: absolute; left: 50%; top: 50%; width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%;
  border: 1.5px solid var(--para); opacity: var(--b); animation: ping 2.2s cubic-bezier(.2,.6,.3,1) infinite; }
.p-onda .ping.p2 { animation-delay: 1.1s; }
@keyframes ping { from { transform: scale(1); opacity: .9; } to { transform: scale(7); opacity: 0; } }

/* 4 selo */
.p-selo .selo { left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; transform: rotate(-90deg) scale(calc(.7 + .3 * var(--a))); }
.p-selo .selo-anel { fill: none; stroke: url(#g-selo); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 1 1; stroke-dashoffset: calc(1 - var(--a));
  filter: drop-shadow(0 0 6px rgba(37,211,102,.55)); }
.p-selo .selo-fundo { fill: #25d366; transform-origin: 32px 32px; transform: scale(var(--b)); opacity: var(--b); filter: drop-shadow(0 0 14px rgba(37,211,102,.6)); }
.p-selo .selo-check { fill: none; stroke: #fff; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1 1;
  stroke-dashoffset: calc(1 - var(--b)); transform: rotate(90deg); transform-origin: 32px 32px; }
.p-selo .passagem-linha { background: linear-gradient(90deg, transparent, rgba(94,168,255,.6) 35%, #25d366 50%, rgba(37,211,102,.6) 65%, transparent); }

@media (max-width: 600px) {
  .p-queda .gota { height: 100px; margin-top: -100px; }
  .p-selo .selo { width: 52px; height: 52px; margin: -26px 0 0 -26px; }
}
@media (prefers-reduced-motion: reduce) { .p-onda .onda path, .p-queda .anel, .p-onda .ping { animation: none; } }

/* abertura mais contida (pedido do Roberto) */
.titulo-abertura { font-size: clamp(2.6rem, 4.9vw, 4.6rem); line-height: 1; margin-top: 22px; }
.abertura .lead { font-size: clamp(1rem, 1.25vw, 1.125rem); max-width: 46ch; }
@media (max-width: 600px) { .titulo-abertura { font-size: clamp(2.4rem, 11vw, 2.9rem); } }

/* passagens: anéis só aparecem depois da chegada */
.p-queda .anel, .p-onda .ping { opacity: 1; }
.p-queda .ondas-moeda, .p-onda .pings { position: absolute; inset: 0; opacity: var(--b); }
@keyframes anel-moeda { from { transform: scale(1); opacity: .8; } to { transform: scale(6) scaleY(.45); opacity: 0; } }
.p-convergir .fios path { vector-effect: none; stroke-width: 1.2; }
.p-queda .moeda { width: 34px; height: 34px; margin: -17px 0 0 -17px; font-size: 11px; }

/* telefone = WhatsApp (regra do ecossistema) */
.ic-zap { width: 18px; height: 18px; flex: none; }
.botao .ic-zap { margin-left: -4px; }
.botao-brilho .ic-zap, .botao-nav .ic-zap { color: #12a150; }
.botao-vazado .ic-zap { color: #25d366; }
.menu-zap, .rodape-zap { display: inline-flex !important; align-items: center; gap: 8px; }
.menu-zap .ic-zap { width: 22px; height: 22px; color: #25d366; }
.rodape-zap .ic-zap { width: 16px; height: 16px; color: #25d366; }

/* ---------- API oficial com mais força: plataforma da Meta ---------- */
.plataforma-meta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 18px; padding: 12px 14px 12px 12px; border-radius: 18px; width: fit-content; max-width: 100%;
  background: linear-gradient(120deg, rgba(37,211,102,.12), rgba(10,132,255,.08) 60%, rgba(255,255,255,.03));
  border: 1px solid rgba(37,211,102,.28); box-shadow: 0 20px 40px -24px rgba(37,211,102,.45), inset 0 1px 0 rgba(255,255,255,.08); }
.plataforma-meta .ic { width: 44px; height: 44px; border-radius: 13px; box-shadow: 0 0 24px -4px #25d366, inset 0 1px 0 rgba(255,255,255,.35); }
.plataforma-txt { display: grid; line-height: 1.25; }
.plataforma-txt b { color: var(--branco); font-weight: 600; font-size: 1.0625rem; letter-spacing: -.01em; }
.plataforma-txt small { color: var(--prata); font-size: .875rem; }
.meta-nome { font-weight: 700; letter-spacing: -.02em; background: linear-gradient(90deg, #0a84ff, #6b5bff 55%, #a033ff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.selo-cred { display: inline-grid; grid-template-columns: auto 1fr; column-gap: 8px; align-items: center; padding: 8px 14px 8px 10px; border-radius: 12px;
  background: rgba(10,132,255,.1); border: 1px solid rgba(10,132,255,.35); color: var(--branco); font-size: .8125rem; font-weight: 600; letter-spacing: .01em; }
.selo-cred i { grid-row: span 2; width: 10px; height: 10px; border-radius: 50%; background: #0a84ff; box-shadow: 0 0 0 4px rgba(10,132,255,.2); animation: pisca 2.4s ease-in-out infinite; }
.selo-cred em { font-style: normal; font-weight: 400; font-size: .6875rem; color: var(--prata-media); }
.medalha { position: absolute; z-index: 4; top: 2%; right: 4%; width: 150px; height: 150px; border-radius: 50%;
  background: radial-gradient(circle, rgba(8,14,12,.95) 52%, rgba(8,14,12,.75) 70%, transparent 71%);
  box-shadow: 0 0 0 1px rgba(37,211,102,.35), 0 0 50px -6px rgba(37,211,102,.45); }
.medalha svg { position: absolute; inset: 0; width: 100%; height: 100%; animation: girar 28s linear infinite; }
.medalha text { font-size: 10.5px; font-weight: 600; letter-spacing: .06em; fill: #bff5d3; }
.medalha-centro { position: absolute; inset: 0; display: grid; place-items: center; align-content: center; gap: 2px; text-align: center; }
.medalha-centro .ic { width: 38px; height: 38px; border-radius: 50%; box-shadow: 0 0 20px -2px #25d366; margin-bottom: 4px; }
.medalha-centro b { font-size: 1.125rem; font-weight: 700; letter-spacing: -.02em; line-height: 1; background: linear-gradient(90deg, #4aa8ff, #8a6bff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.medalha-centro small { font-size: .625rem; letter-spacing: .2em; text-transform: uppercase; color: var(--prata-media); }
@media (max-width: 600px) { .medalha { width: 118px; height: 118px; top: 0; right: 0; } .medalha text { font-size: 10.5px; } .medalha-centro .ic { width: 30px; height: 30px; } .plataforma-meta .ic { width: 38px; height: 38px; } }
@media (prefers-reduced-motion: reduce) { .medalha svg, .selo-cred i { animation: none; } }


/* =========================================================
   Celulares realistas (aparelho + conversa no padrão do WhatsApp)
   ========================================================= */
.iphone { --w: 300px; position: relative; width: var(--w); aspect-ratio: 300 / 620; font-size: calc(var(--w) * .0433); padding: calc(var(--w) * .034);
  border-radius: calc(var(--w) * .175); border: 0;
  background: linear-gradient(150deg, #5a606b 0%, #23262d 18%, #3a3e47 45%, #15171c 70%, #4a4f58 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.12), inset 0 0 0 calc(var(--w) * .012) #0a0b0e, 0 50px 90px -30px rgba(0,0,0,.95), 0 20px 40px -20px rgba(0,0,0,.8); }
.iphone::before, .iphone::after { content: ""; position: absolute; width: 3px; border-radius: 2px; background: linear-gradient(180deg, #4b5059, #23262c); }
.iphone::before { left: -2px; top: 22%; height: 6%; box-shadow: 0 calc(var(--w) * .12) 0 #2f333a, 0 calc(var(--w) * .24) 0 #2f333a; }
.iphone::after { right: -2px; top: 30%; height: 11%; }
.ip-tela { position: relative; height: 100%; border-radius: calc(var(--w) * .142); overflow: hidden; background: #0b141a; display: flex; flex-direction: column; color: #e9edef; font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
.ip-ilha { position: absolute; z-index: 5; top: .55em; left: 50%; width: 7.2em; height: 2.05em; transform: translateX(-50%); background: #000; border-radius: 2em; }
.ip-status { display: flex; justify-content: space-between; align-items: center; height: 3.3em; padding: .55em 1.9em 0 2.2em; font-size: .92em; font-weight: 600; color: #fff; background: #1f2c34; letter-spacing: .01em; }
.ip-ic { display: flex; gap: .35em; align-items: center; }
.ip-ic svg { height: .78em; width: auto; fill: currentColor; color: #fff; }
.ip-home { position: absolute; left: 50%; bottom: .45em; width: 36%; height: .32em; transform: translateX(-50%); border-radius: 1em; background: rgba(255,255,255,.85); }
.wa-topo { display: flex; align-items: center; gap: .5em; padding: .35em .75em .6em .45em; background: #1f2c34; color: #aebac1; }
.wa-voltar { width: .7em; height: 1.15em; flex: none; }
.wa-av { width: 2.55em; height: 2.55em; flex: none; border-radius: 50%; display: grid; place-items: center; background: radial-gradient(circle at 50% 35%, #1d2330, #04050a); box-shadow: inset 0 0 0 1px rgba(255,255,255,.12); }
.wa-av svg { width: 42%; height: auto; color: #fff; }
.wa-quem { flex: 1; min-width: 0; display: grid; line-height: 1.2; }
.wa-quem b { display: inline-flex; align-items: center; gap: .3em; color: #e9edef; font-weight: 600; font-size: 1.05em; }
.wa-quem small { font-size: .78em; color: #8696a0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wa-selo { width: 1.05em; height: 1.05em; flex: none; }
.wa-acao { width: 1.45em; height: 1.45em; flex: none; margin-left: .55em; }
.wa-chat { flex: 1; display: flex; flex-direction: column; gap: .32em; padding: .7em .65em .5em; overflow: hidden;
  background-color: #0b141a; background-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%22140%22%20height%3D%22140%22%20viewBox%3D%220%200%20140%20140%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23fff%22%20stroke-opacity%3D%22.045%22%20stroke-width%3D%221.3%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14%2022h20a4%204%200%200%201%204%204v10a4%204%200%200%201-4%204H24l-6%205v-5h-4a4%204%200%200%201-4-4V26a4%204%200%200%201%204-4z%22/%3E%3Ccircle%20cx%3D%22100%22%20cy%3D%2228%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M96%2028l3%203%205-6%22/%3E%3Cpath%20d%3D%22M60%2062l3%207%207%201-5%205%201%207-6-3-6%203%201-7-5-5%207-1z%22/%3E%3Cpath%20d%3D%22M112%2078c0-6%209-6%209%200%200%206-9%2011-9%2011s-9-5-9-11c0-6%209-6%209%200z%22/%3E%3Crect%20x%3D%2218%22%20y%3D%2292%22%20width%3D%2222%22%20height%3D%2216%22%20rx%3D%223%22/%3E%3Cpath%20d%3D%22M18%2095l11%207%2011-7%22/%3E%3Cpath%20d%3D%22M78%20112a8%208%200%201%200%2016%200%208%208%200%201%200-16%200M86%20106v6l4%202%22/%3E%3Cpath%20d%3D%22M44%2016l4-6M50%2022l7-2%22/%3E%3C/g%3E%3C/svg%3E"); background-size: 9.5em; }
.wa-dia { align-self: center; padding: .3em .75em; border-radius: .55em; background: #182229; color: #8696a0; font-size: .75em; box-shadow: 0 1px 1px rgba(0,0,0,.25); }
.wa-aviso { align-self: center; max-width: 92%; display: flex; gap: .45em; align-items: flex-start; padding: .45em .7em; margin: .15em 0 .3em; border-radius: .55em; background: #182229; color: #ffd279; font-size: .7em; line-height: 1.35; text-align: left; }
.wa-aviso svg { width: 1.1em; height: 1.1em; flex: none; margin-top: .1em; }
.wa-msg { position: relative; max-width: 84%; padding: .42em .6em .32em; font-size: .9em; line-height: 1.33; box-shadow: 0 1px .5px rgba(0,0,0,.3); }
.wa-msg p + p { margin-top: .3em; }
.wa-msg.in { align-self: flex-start; background: #202c33; border-radius: 0 .62em .62em .62em; margin-left: .45em; }
.wa-msg.out { align-self: flex-end; background: #005c4b; border-radius: .62em 0 .62em .62em; margin-right: .45em; }
.wa-msg.in::before, .wa-msg.out::before { content: ""; position: absolute; top: 0; width: .6em; height: .75em; }
.wa-msg.in::before { left: -.55em; background: linear-gradient(225deg, #202c33 50%, transparent 50%); }
.wa-msg.out::before { right: -.55em; background: linear-gradient(135deg, #005c4b 50%, transparent 50%); }
.wa-modelo + .wa-botoes, .wa-modelo { max-width: 86%; }
.wa-modelo { border-radius: 0 .62em .2em .2em !important; }
.wa-titulo { display: block; font-weight: 700; margin-bottom: .2em; color: #e9edef; }
.wa-rodape { display: block; margin-top: .35em; font-size: .78em; color: #8696a0; }
.wa-hora { float: right; display: inline-flex; align-items: center; gap: .2em; margin: .3em 0 -.15em .7em; font-size: .68em; color: rgba(233,237,239,.6); }
.wa-ticks { width: 1.25em; height: .8em; }
.wa-botoes { align-self: flex-start; margin: -.18em 0 .1em .45em; width: 86%; display: grid; gap: 1px; border-radius: .2em .2em .62em .62em; overflow: hidden; background: #2a3942; box-shadow: 0 1px .5px rgba(0,0,0,.3); }
.wa-botoes span { display: flex; align-items: center; justify-content: center; gap: .4em; padding: .58em .4em; background: #202c33; color: #53bdeb; font-size: .9em; font-weight: 500; }
.wa-botoes svg { width: 1.05em; height: 1.05em; }
.wa-entrada { display: flex; align-items: center; gap: .4em; padding: .4em .5em 1.7em; background: #0b141a; }
.wa-campo { flex: 1; display: flex; align-items: center; gap: .5em; padding: .55em .75em; border-radius: 2em; background: #202c33; color: #8696a0; font-size: .92em; }
.wa-campo span { flex: 1; }
.wa-campo svg { width: 1.25em; height: 1.25em; flex: none; }
.wa-mic { width: 2.55em; height: 2.55em; flex: none; border-radius: 50%; display: grid; place-items: center; background: #00a884; color: #111b21; }
.wa-mic svg { width: 1.25em; height: 1.25em; }
.js [data-cena] .wa-anim { opacity: 0; transform: translateY(.7em) scale(.97); transform-origin: 0 100%; }
.js [data-cena].visivel .wa-anim { animation: entra-wa .55s var(--facil) forwards; animation-delay: calc(var(--d) + .5s); }
@keyframes entra-wa { to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .js [data-cena] .wa-anim { opacity: 1; transform: none; animation: none !important; } }

/* posições dos dois celulares */
.celular.iphone { --w: 238px; width: var(--w); padding: calc(var(--w) * .034); right: 0; bottom: -10px; }
.cel-oficial.iphone { --w: 292px; width: var(--w); padding: calc(var(--w) * .034); z-index: 2; }
.medalha { top: auto; right: auto; left: 0; bottom: 3%; }
.f3 { left: 2%; bottom: auto; top: 52%; }
@media (max-width: 900px) { .celular.iphone { position: relative; margin: -60px 0 0 auto; --w: 230px; } }
@media (max-width: 600px) {
  .cel-oficial.iphone { --w: 262px; }
  .medalha { left: 0; bottom: 0; }
  .f3 { top: auto; bottom: 6%; left: auto; right: 0; }
}
.medalha .ic svg { position: static; inset: auto; width: 58%; height: 58%; animation: none; }
.celular.iphone { position: absolute; }
@media (max-width: 900px) { .celular.iphone { position: relative; right: auto; bottom: auto; } }

/* =========================================================
   Rodada 8: celular estável e abertura minimalista
   ========================================================= */
.titulo-abertura { margin-top: 0; }
@media (max-width: 900px) {
  /* abertura: órbita menor, texto alinhado e tudo numa tela */
  .abertura { min-height: 100svh; padding-block: 96px 56px; align-items: flex-start; }
  .abertura-grade { gap: 8px; }
  .sistema { width: min(62vw, 250px); margin: 0 auto 6px; }
  .sistema .planeta span { display: none; }
  .titulo-abertura { font-size: clamp(2.45rem, 11.4vw, 3rem); line-height: 1.02; letter-spacing: -0.04em; }
  .abertura .lead { margin-top: 18px; font-size: 1rem; line-height: 1.55; max-width: 34ch; color: var(--prata-media); }
  .abertura .acoes { margin-top: 26px; }
  .rolar { display: none; }
  .nebulosa { animation: none !important; }

  /* desempenho: sem desfoque de fundo nem filtros pesados ao rolar */
  .tela-app, .chip-canal, .flutua, .botao-vazado, .nav-abrir, .aviso { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
  .tela-app { background: #0a0d16; }
  .clientes-ceu::after, #starrecover .produto-ceu::before { animation: none !important; }
  .produto h2 { animation: none !important; background-position: 30% 0; }
  .passagem svg path, .p-selo .selo-anel, .p-selo .selo-fundo, .passagem-cometa, .p-queda .gota { filter: none !important; }
  .p-onda .onda path { animation: none; }
  .js .tela-app[data-revela], .js .cena-recover[data-revela] { transform: translateY(28px); }
  .js [data-revela] { transition-duration: .7s !important; }
  .passagem, .abertura, .produto, .secao { contain: paint; }
}
/* celular: avisos do StarRecover empilhados num espaço fixo (altura nunca muda, nada abaixo pula) */
@media (max-width: 600px) {
  .avisos { display: grid; grid-template-areas: "aviso"; gap: 0; }
  .aviso, .aviso:not(.ativo) { display: grid; grid-area: aviso; }
  .aviso:not(.ativo) { opacity: 0; }
}

/* =========================================================
   Rodada 9: primeira tela só com órbita e título no celular,
   botões flutuantes (WhatsApp e voltar ao topo)
   ========================================================= */
@media (max-width: 900px) {
  .abertura { --tf: clamp(2.45rem, 11.4vw, 3rem); --orb: min(64vw, 260px);
    --livre: max(40px, calc(100svh - 96px - var(--orb) - var(--tf) * 3.1 - 14px));
    padding-block: 96px 72px; min-height: 0; }
  .sistema { width: var(--orb); margin: calc(var(--livre) * .42) auto 6px; }
  .titulo-abertura { font-size: var(--tf); text-align: center; }
  .titulo-abertura .linha > span { padding-right: 0; }
  .abertura .lead { margin: calc(var(--livre) * .58 + 64px) auto 0; text-align: center; font-size: 1.1875rem; line-height: 1.55; color: var(--prata); max-width: 30ch; }
  .abertura .acoes { justify-content: center; }
  .rolar { display: block; position: absolute; top: calc(100svh - 74px); bottom: auto; }
}

/* botões flutuantes */
.flutuantes { position: fixed; z-index: 40; right: max(18px, env(safe-area-inset-right)); bottom: calc(18px + env(safe-area-inset-bottom)); display: grid; justify-items: end; gap: 12px; pointer-events: none; }
.flutuantes a { pointer-events: auto; -webkit-tap-highlight-color: transparent; }
.btn-zap { display: inline-flex; align-items: center; gap: 0; height: 58px; padding: 0; border-radius: 999px; text-decoration: none; color: #fff;
  background: linear-gradient(160deg, #3ee07f, #12a150); box-shadow: 0 14px 30px -10px rgba(18,161,80,.7), inset 0 1px 0 rgba(255,255,255,.35); transition: transform .4s var(--facil), box-shadow .4s; }
.btn-zap-ic { position: relative; width: 58px; height: 58px; display: grid; place-items: center; flex: none; }
.btn-zap-ic svg { width: 28px; height: 28px; }
.btn-zap-ic::before, .btn-zap-ic::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 2px solid #25d366; animation: pulso-zap 2.8s ease-out infinite; }
.btn-zap-ic::after { animation-delay: 1.4s; }
@keyframes pulso-zap { from { transform: scale(1); opacity: .7; } to { transform: scale(1.7); opacity: 0; } }
.btn-zap-texto { max-width: 0; overflow: hidden; white-space: nowrap; font-weight: 600; font-size: .9375rem; transition: max-width .5s var(--facil), padding .5s var(--facil); }
.btn-zap:hover { transform: translateY(-2px); box-shadow: 0 18px 36px -10px rgba(18,161,80,.85), inset 0 1px 0 rgba(255,255,255,.35); }
.btn-zap:hover .btn-zap-texto { max-width: 200px; padding-left: 22px; }
.btn-topo { width: 46px; height: 46px; margin-right: 6px; border-radius: 50%; display: grid; place-items: center; color: var(--branco);
  background: rgba(12,15,24,.9); border: 1px solid var(--linha-forte); box-shadow: 0 10px 24px -10px rgba(0,0,0,.9);
  opacity: 0; transform: translateY(12px) scale(.9); visibility: hidden; transition: opacity .4s, transform .4s var(--facil), visibility 0s .4s; }
.btn-topo svg { width: 20px; height: 20px; }
.flutuantes.mostrar-topo .btn-topo { opacity: 1; transform: none; visibility: visible; transition: opacity .4s, transform .4s var(--facil), visibility 0s; }
@media (max-width: 600px) { .btn-zap, .btn-zap-ic { height: 54px; } .btn-zap-ic { width: 54px; } .btn-topo { width: 42px; height: 42px; } }
@media (prefers-reduced-motion: reduce) { .btn-zap-ic::before, .btn-zap-ic::after { animation: none; display: none; } }

/* =========================================================
   Rodada 10: ênfase na API oficial
   ========================================================= */
/* selo próprio HORIX 2026 */
.selo-oficial { display: block; width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 0 30px rgba(37,211,102,.35)); }
.selo-oficial [class$="-anel"] { font-family: Geologica, sans-serif; font-size: 11.5px; font-weight: 600; letter-spacing: .08em; fill: #bff5d3; }
.selo-oficial [class$="-marca"] { font-family: Geologica, sans-serif; font-size: 19px; font-weight: 700; letter-spacing: .22em; fill: #fff; }
.selo-oficial [class$="-sub"] { font-family: Geologica, sans-serif; font-size: 7.5px; font-weight: 500; letter-spacing: .24em; fill: #8fe3b0; }
.selo-oficial [class$="-ano"] { font-family: Geologica, sans-serif; font-size: 13px; font-weight: 700; letter-spacing: .3em; fill: #04140b; }
.selo-oficial textPath { }
.selo-wrap { background: none !important; box-shadow: none !important; width: 168px !important; height: 168px !important; }
.selo-wrap .selo-oficial text:first-of-type { }
.medalha.selo-wrap svg { position: static; animation: none; }
.selo-oficial text:has(textPath) { animation: none; }
@keyframes giro-selo { to { transform: rotate(360deg); } }
.selo-oficial > text:first-of-type { transform-origin: 110px 110px; animation: giro-selo 40s linear infinite; }

/* faixa oficial na seção dos três produtos */
.faixa-oficial { display: grid; grid-template-columns: 112px 1fr; gap: 26px; align-items: center; margin: -10px 0 30px; padding: 22px 28px 22px 22px; border-radius: 24px;
  background: linear-gradient(110deg, rgba(37,211,102,.14), rgba(10,132,255,.07) 55%, rgba(255,255,255,.02));
  border: 1px solid rgba(37,211,102,.3); box-shadow: 0 30px 60px -40px rgba(37,211,102,.6), inset 0 1px 0 rgba(255,255,255,.07); }
.faixa-oficial strong { display: block; color: var(--branco); font-size: clamp(1.25rem, 2vw, 1.625rem); font-weight: 600; letter-spacing: -.02em; line-height: 1.2; }
.faixa-oficial span { display: block; margin-top: 6px; color: var(--prata); font-size: 1rem; max-width: 70ch; }
.tag-oficial { position: absolute; top: 22px; right: 22px; display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px 5px 7px; border-radius: 999px;
  font-size: .75rem; font-weight: 500; color: #c9f7d9; background: rgba(37,211,102,.12); border: 1px solid rgba(37,211,102,.4); }
.tag-oficial svg { width: 15px; height: 15px; color: #25d366; }
.tag-eco { color: #cfe3ff; background: rgba(94,168,255,.1); border-color: rgba(94,168,255,.35); }
.tag-eco svg { color: #5ea8ff; width: 12px; height: 12px; }
.cartao { position: relative; }

/* pílula oficial nos blocos de produto */
.pilula-oficial { display: inline-flex; align-items: center; gap: 12px; margin-top: 22px; padding: 10px 18px 10px 10px; border-radius: 16px;
  background: linear-gradient(110deg, rgba(37,211,102,.14), rgba(255,255,255,.03)); border: 1px solid rgba(37,211,102,.32); }
.pilula-oficial .ic { width: 38px; height: 38px; border-radius: 11px; box-shadow: 0 0 20px -4px #25d366, inset 0 1px 0 rgba(255,255,255,.35); }
.pilula-oficial b { display: block; color: var(--branco); font-weight: 600; font-size: .9375rem; }
.pilula-oficial small { display: block; color: var(--prata-media); font-size: .8125rem; }

/* migração com mais força */
.destaque-oficial { font-style: normal; background: linear-gradient(95deg, #3ee07f, #25d366 45%, #4aa8ff); -webkit-background-clip: text; background-clip: text; color: transparent; }
.migracao { padding: 30px; border-color: rgba(37,211,102,.25); background: radial-gradient(70% 90% at 85% 50%, rgba(37,211,102,.12), transparent 70%), linear-gradient(180deg, rgba(255,255,255,.035), rgba(255,255,255,.01)); box-shadow: 0 40px 80px -50px rgba(37,211,102,.5); }
.mig-destino { border-color: rgba(37,211,102,.55); background: linear-gradient(160deg, rgba(37,211,102,.16), rgba(37,211,102,.04)); box-shadow: 0 20px 60px -24px rgba(37,211,102,.7), inset 0 1px 0 rgba(255,255,255,.08); }
.mig-destino strong { font-size: 1.375rem; font-weight: 600; }
.mig-lado:not(.mig-destino) { opacity: .72; }

.seguranca { grid-column: 1 / -1; list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin-bottom: 40px; }
.seguranca li { position: relative; padding: 24px 24px 22px; border-radius: 20px; overflow: hidden; isolation: isolate;
  background: linear-gradient(160deg, rgba(37,211,102,.08), rgba(255,255,255,.015) 60%); border: 1px solid rgba(37,211,102,.2); transition: transform .5s var(--facil), border-color .4s, box-shadow .5s; }
.seguranca li::before { content: ""; position: absolute; inset: -1px; z-index: -1; border-radius: inherit; padding: 1px;
  background: conic-gradient(from var(--ang, 0deg), transparent 0 70%, rgba(37,211,102,.9) 82%, transparent 92%);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude;
  animation: girar-borda 6s linear infinite; animation-delay: calc(var(--i) * -1s); }
.seguranca li:hover { transform: translateY(-4px); border-color: rgba(37,211,102,.5); box-shadow: 0 24px 50px -28px rgba(37,211,102,.7); }
.seg-ic { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 14px; margin-bottom: 16px;
  background: radial-gradient(circle at 35% 30%, rgba(62,224,127,.35), rgba(18,161,80,.15)); border: 1px solid rgba(37,211,102,.45); box-shadow: 0 0 24px -6px #25d366; }
.seg-ic svg { width: 24px; height: 24px; fill: none; stroke: #6ff0a3; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.seguranca strong { display: block; color: var(--branco); font-size: 1.125rem; font-weight: 600; }
.seguranca p { margin-top: 6px; color: var(--prata); font-size: .9375rem; line-height: 1.5; }

.passos { position: relative; }
.passos::before { content: ""; position: absolute; left: 6%; right: 6%; top: 43px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, rgba(37,211,102,.1), #25d366, #4aa8ff, rgba(74,168,255,.1)); opacity: .5; }
.passos li { background: linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.012)); border-color: rgba(255,255,255,.09); transition: transform .5s var(--facil), border-color .4s; }
.passos li:hover { transform: translateY(-4px); border-color: rgba(37,211,102,.45); }
.passo-num { position: relative; z-index: 1; width: 40px; height: 40px; font-weight: 700; color: #04140b; border: 0; background: linear-gradient(160deg, #6ff0a3, #25d366); box-shadow: 0 0 0 6px rgba(37,211,102,.12), 0 0 26px -2px rgba(37,211,102,.7); }
.passos li:last-child .passo-num { background: linear-gradient(160deg, #9cc8ff, #4aa8ff); box-shadow: 0 0 0 6px rgba(74,168,255,.12), 0 0 26px -2px rgba(74,168,255,.7); }

@media (max-width: 900px) {
  .seguranca { grid-template-columns: 1fr 1fr; }
  .passos::before { display: none; }
  .faixa-oficial { grid-template-columns: 84px 1fr; gap: 16px; padding: 18px; }
}
@media (max-width: 600px) {
  .seguranca { grid-template-columns: 1fr; }
  .faixa-oficial { grid-template-columns: 1fr; justify-items: center; text-align: center; }
  .faixa-oficial .selo-oficial { width: 110px; }
  .tag-oficial { top: 18px; right: 18px; }
  .seguranca li::before { animation: none; opacity: .5; }
}

/* =========================================================
   Astros livres na abertura (computador)
   ========================================================= */
.rastros, .astros { display: none; }
.orbita-livre .rastros { display: block; position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.orbita-livre .astros { display: block; position: absolute; inset: 0; z-index: 0; pointer-events: none; }
.orbita-livre .sistema .planeta { display: none; }
.astro { position: absolute; left: 0; top: 0; width: 0; height: 0; will-change: transform; }
.astro.conex { --c1: #b6f06a; --c2: #5f9a1f; --brilho: rgba(140,198,63,.55); }
.astro.recover { --c1: #ffd58a; --c2: #b8862c; --brilho: rgba(224,180,90,.55); }
.astro.voip { --c1: #9cc8ff; --c2: #2d6fd1; --brilho: rgba(94,168,255,.6); }
.astro i { position: absolute; left: -15px; top: -15px; width: 30px; height: 30px; border-radius: 50%;
  background: radial-gradient(circle at 32% 28%, #fff 0, var(--c1) 22%, var(--c2) 62%, #05070c 100%);
  box-shadow: inset -4px -5px 10px rgba(0,0,0,.55), inset 2px 2px 6px rgba(255,255,255,.35), 0 0 0 1px rgba(255,255,255,.12), 0 0 28px 8px var(--brilho), 0 0 70px 18px color-mix(in srgb, var(--brilho) 40%, transparent); }
.astro i::after { content: ""; position: absolute; inset: -9px; border-radius: 50%; border: 1px solid color-mix(in srgb, var(--c1) 45%, transparent); opacity: .6; }
.astro.recover i::before { content: ""; position: absolute; left: -12px; right: -12px; top: 11px; height: 8px; border-radius: 50%; border: 1.5px solid color-mix(in srgb, var(--c1) 80%, transparent); transform: rotate(-18deg); box-shadow: 0 0 10px var(--brilho); }
.astro b { position: absolute; left: 0; top: 24px; translate: -50% 0; white-space: nowrap; font-size: .8125rem; font-weight: 500; color: var(--branco); padding: 4px 11px; border-radius: 999px;
  background: rgba(8,10,18,.82); border: 1px solid color-mix(in srgb, var(--c1) 50%, transparent); opacity: 0; transform: translateY(6px); transition: opacity .5s, transform .5s var(--facil); }
.sistema.ativo ~ * .astro b, .orbita-livre .abertura:has(.sistema.ativo) .astro b { opacity: 1; transform: none; }
.sistema-legenda, .sistema-dica { position: absolute; left: 50%; translate: -50% 0; white-space: nowrap; pointer-events: none; z-index: 2; transition: opacity .6s, transform .6s var(--facil); }
.sistema-legenda { top: 64%; font-size: 1.0625rem; font-weight: 500; letter-spacing: .02em; color: var(--branco); opacity: 0; transform: translateY(8px); text-shadow: 0 0 20px rgba(255,255,255,.4); }
.sistema-dica { bottom: -4%; font-size: .75rem; letter-spacing: .2em; text-transform: uppercase; color: var(--prata-media); opacity: 0; }
.orbita-livre .sistema-dica { opacity: .8; animation: pisca 3s ease-in-out infinite; }
.sistema.ativo .sistema-dica { opacity: 0 !important; animation: none; }
.sistema.ativo .sistema-legenda { opacity: 1; transform: none; }
.sistema .orbita { transition: border-color .8s, box-shadow .8s; }
.sistema.ativo .orbita { border-color: rgba(196,201,210,.32); box-shadow: 0 0 30px -10px rgba(196,201,210,.35); }
.sistema.ativo .o1 { border-color: rgba(140,198,63,.45); } .sistema.ativo .o2 { border-color: rgba(224,180,90,.4); } .sistema.ativo .o3 { border-color: rgba(94,168,255,.42); }
.sistema.ativo .nucleo { box-shadow: 0 0 120px 24px rgba(196,201,210,.22), inset 0 0 30px rgba(255,255,255,.08); }
.abertura-texto { position: relative; z-index: 1; }
.sistema-legenda, .sistema-dica { display: none; }
.orbita-livre .sistema-legenda, .orbita-livre .sistema-dica { display: block; }

/* selo com a identidade da Meta (cores), e selo HORIX maior na seção da API */
.selo-meta { display: block; width: 100%; height: auto; overflow: visible; filter: drop-shadow(0 0 30px rgba(0,130,251,.45)); }
.selo-meta .sm-anel { font-family: Geologica, sans-serif; font-size: 11px; font-weight: 600; letter-spacing: .08em; fill: #bcdcff; }
.selo-meta .sm-giro { transform-origin: 110px 110px; animation: giro-selo 40s linear infinite; }
.selo-meta .sm-sup { font-family: Geologica, sans-serif; font-size: 8px; font-weight: 500; letter-spacing: .24em; fill: #8fbfff; }
.selo-meta .sm-meta { font-family: Geologica, sans-serif; font-size: 36px; font-weight: 700; letter-spacing: -.03em; }
.selo-meta .sm-sub { font-family: Geologica, sans-serif; font-size: 7.6px; font-weight: 600; letter-spacing: .2em; fill: #cfe3ff; }
.selo-meta .sm-ano { font-family: Geologica, sans-serif; font-size: 11px; font-weight: 700; letter-spacing: .22em; fill: #ffffff; }
.faixa-oficial { background: linear-gradient(110deg, rgba(0,130,251,.18), rgba(0,100,224,.07) 55%, rgba(255,255,255,.02)); border-color: rgba(0,130,251,.4); box-shadow: 0 30px 60px -40px rgba(0,130,251,.7), inset 0 1px 0 rgba(255,255,255,.07); }
.oficial-linha { display: flex; align-items: center; gap: 16px; margin-top: 22px; flex-wrap: wrap; }
.oficial-linha .pilula-oficial { margin-top: 0; }
.selo-mini { width: 92px; flex: none; }
.selo-mini .selo-meta { filter: drop-shadow(0 0 18px rgba(0,130,251,.45)); }
.medalha.selo-wrap { width: 200px !important; height: 200px !important; }
@media (max-width: 600px) { .selo-mini { width: 76px; } .medalha.selo-wrap { width: 140px !important; height: 140px !important; } }
@media (max-width: 900px) { .selo-meta .sm-giro, .selo-oficial > text:first-of-type { animation: none; } }

/* astros viajando pela página inteira (computador) */
.orbita-livre .rastros { position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 4; }
.orbita-livre .astros { position: fixed; inset: 0; z-index: 5; }
.orbita-livre .astro { transition: opacity .2s; }
.orbita-livre:not([data-astros="heroi"]) .astro b { opacity: 0 !important; }
.orbita-livre[data-astros="p0"] .astro.conex b, .orbita-livre[data-astros="p1"] .astro.recover b, .orbita-livre[data-astros="p2"] .astro.voip b { opacity: 1 !important; transform: none; }
.orbita-livre .abertura:has(.sistema.ativo) ~ * .astro b { }
.orbita-livre[data-astros="heroi"] .abertura .sistema.ativo ~ .astro b { }
.orbita-livre:has(.sistema.ativo) .astro b { opacity: 1; transform: none; }
.final-orbita { display: none; }
.orbita-livre .final-orbita { display: block; margin: -6px 0 18px; font-size: 1rem; color: var(--prata-media); opacity: 0; transform: translateY(8px); transition: opacity .8s, transform .8s var(--facil); }
.orbita-livre .final-orbita b { color: var(--branco); font-weight: 600; }
.orbita-livre[data-astros="final"] .final-orbita { opacity: 1; transform: none; }
.orbita-livre[data-astros="final"] .contato-simbolo { filter: drop-shadow(0 0 28px rgba(255,255,255,.55)); transition: filter 1s; }

/* marcas: o astro que passa faz uma varredura digital na cor dele */
.logo-cliente::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0;
  background: linear-gradient(100deg, transparent 30%, color-mix(in srgb, var(--varre, #fff) 30%, transparent) 48%, rgba(255,255,255,.35) 50%, color-mix(in srgb, var(--varre, #fff) 30%, transparent) 52%, transparent 70%);
  background-size: 250% 100%; background-position: 120% 0; }
.logo-cliente.varre { border-color: color-mix(in srgb, var(--varre) 70%, transparent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--varre) 45%, transparent), 0 0 34px -8px var(--varre), inset 0 0 30px -18px var(--varre); transition: box-shadow .25s, border-color .25s; }
.logo-cliente.varre::after { animation: varredura 1.1s cubic-bezier(.3,.6,.3,1) forwards; }
.logo-cliente.varre .mono { opacity: 1 !important; filter: brightness(1.25) drop-shadow(0 0 8px color-mix(in srgb, var(--varre) 60%, transparent)); transform: scale(1.04); }
@keyframes varredura { 0% { opacity: 1; background-position: 120% 0; } 100% { opacity: 0; background-position: -30% 0; } }

/* seção da API: selo no canto superior, sem cobrir o celular */
.api-ilustra .medalha.selo-wrap { left: auto; right: 0; top: 0; bottom: auto; z-index: 4; }
.api-ilustra .f2 { top: 44%; right: 0; }
.api-ilustra .f4 { right: 2%; bottom: 8%; }
@media (max-width: 900px) { .api-ilustra .medalha.selo-wrap { right: 0; top: -10px; } }
.api-ilustra .medalha.selo-wrap { right: -3%; top: -5%; }

/* =========================================================
   Rodada 11: logo real, marcas sóbrias, contato com sistema final
   ========================================================= */
.nav-marca { gap: 11px; }
.nav-marca svg { width: auto; height: 26px; }
.nav-marca .nav-palavra { height: 13px; width: auto; }
.nucleo svg { --lf: url(#g-prata3d); width: 40%;
  filter: drop-shadow(0 1px 0 #c9ced6) drop-shadow(0 1px 0 #8d939d) drop-shadow(0 1px 0 #5f646d) drop-shadow(0 6px 10px rgba(0,0,0,.65)) drop-shadow(0 0 18px rgba(255,255,255,.28)); }
.contato-simbolo { --lf: url(#g-prata3d); }

/* marcas: no computador quem destaca são os astros, sem efeito de mouse */
.orbita-livre .logo-cliente:hover { transform: none; background: linear-gradient(165deg, rgba(255,255,255,.06), rgba(255,255,255,.012) 55%, rgba(255,255,255,.03)); border-color: rgba(255,255,255,.075); box-shadow: inset 0 1px 0 rgba(255,255,255,.07), 0 18px 40px -30px rgba(0,0,0,.9); }
.orbita-livre .logo-cliente:hover .cor { opacity: 0; transform: none; }
.orbita-livre .logo-cliente:hover .mono { opacity: .74; }
.orbita-livre .logo-cliente:hover::before { opacity: 0; }
.orbita-livre .vitrine-logos:hover .logo-cliente:not(:hover) .mono { opacity: .74; }
.orbita-livre .vitrine-logos:hover .trilho-logos { animation-play-state: running; }
.logo-cliente::after { display: none; }
.logo-cliente .mono, .logo-cliente .cor { transition: opacity 1.2s var(--facil), transform 1.2s var(--facil), filter 1.2s; }
.logo-cliente { transition: transform .9s var(--facil), background 1.2s, box-shadow 1.2s var(--facil), border-color 1.2s; }
.logo-cliente.varre { border-color: color-mix(in srgb, var(--varre) 55%, transparent) !important;
  background: radial-gradient(120% 100% at 50% 50%, color-mix(in srgb, var(--varre) 12%, #0b0e17), #0a0c14) !important;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--varre) 30%, transparent), 0 18px 40px -22px var(--varre) !important; transform: translateY(-3px) !important; }
.logo-cliente.varre .mono { opacity: .95 !important; filter: drop-shadow(0 0 10px color-mix(in srgb, var(--varre) 55%, transparent)); transform: none; }

/* contato: texto à esquerda, sistema final à direita */
.contato { text-align: left; }
.contato-dentro { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: 56px; align-items: center; }
.contato-texto h2 { max-width: 14ch; font-size: clamp(2.4rem, 5vw, 4.25rem); }
.contato-texto p { max-width: 48ch; }
.contato-texto .contato-convite { margin-top: 14px; color: var(--prata-media); font-size: 1rem; }
.contato-papel { --cor: #c4c9d2; margin-bottom: 18px; }
.contato .acoes { justify-content: flex-start; margin-top: 34px; }
.sistema-final { width: min(100%, 470px); }
.js .sistema-final { opacity: 1; animation: none; }
.sistema-final .final-legenda { display: block; top: 66%; }
.sistema-final.ativo .final-legenda { opacity: 1; transform: none; }
.sistema-final.ativo .o1 { border-color: rgba(140,198,63,.45); } .sistema-final.ativo .o2 { border-color: rgba(224,180,90,.4); } .sistema-final.ativo .o3 { border-color: rgba(94,168,255,.42); }
@media (max-width: 900px) {
  .contato-dentro { grid-template-columns: 1fr; gap: 28px; text-align: center; justify-items: center; }
  .sistema-final { order: -1; width: min(70vw, 280px); }
  .sistema-final .planeta span { display: none; }
  .contato-texto h2, .contato-texto p { margin-inline: auto; }
  .contato .acoes { justify-content: center; }
  .contato-papel { justify-content: center; }
}

/* =========================================================
   Rodada 12: fechamento idêntico à abertura, logo refinada, selo Meta
   ========================================================= */
.nucleo svg { --lf: url(#g-prata3d); width: 40%; filter: drop-shadow(0 2px 3px rgba(0,0,0,.55)) drop-shadow(0 0 22px rgba(255,255,255,.22)); shape-rendering: geometricPrecision; }
.final-heroi { min-height: 100svh; display: flex; align-items: center; padding-block: 130px 110px; text-align: left; border-top: 1px solid var(--linha); }
.final-heroi .abertura-grade { width: min(1200px, 100% - 32px); }
.final-heroi .titulo-abertura { font-weight: 200; font-size: clamp(2.6rem, 4.9vw, 4.6rem); line-height: 1; letter-spacing: -0.045em; max-width: none; margin-top: 0; color: var(--branco); }
.final-heroi .lead { margin-top: 26px; font-size: clamp(1rem, 1.25vw, 1.125rem); max-width: 46ch; line-height: 1.6; color: var(--prata); }
.final-heroi .lead.contato-convite { margin-top: 12px; color: var(--prata-media); }
.final-heroi .acoes { margin-top: 34px; justify-content: flex-start; flex-wrap: wrap; }
.final-heroi .contato-papel { margin-bottom: 22px; }
.final-heroi .sistema { position: relative; }
.final-assinatura { position: absolute; left: 50%; bottom: -46px; translate: -50% 0; display: flex; align-items: center; gap: 14px; white-space: nowrap;
  font-size: .75rem; letter-spacing: .32em; text-transform: uppercase; color: var(--prata-media); margin: 0; transition: color .8s; }
.final-assinatura span { width: 36px; height: 1px; background: linear-gradient(90deg, transparent, rgba(196,201,210,.5)); }
.final-assinatura span:last-child { transform: scaleX(-1); }
.sistema-final.ativo .final-assinatura { color: var(--branco); }
.selo-cred .meta-logo { grid-row: span 2; width: 30px; height: auto; filter: drop-shadow(0 0 8px rgba(0,130,251,.5)); }
@media (max-width: 900px) {
  .final-heroi { min-height: 0; padding-block: 90px 80px; }
  .final-heroi .abertura-texto { text-align: center; }
  .final-heroi .lead { margin-inline: auto; }
  .final-heroi .acoes, .final-heroi .contato-papel { justify-content: center; }
  .final-heroi .sistema { order: -1; width: min(64vw, 260px); margin: 0 auto 70px; }
  .final-heroi .titulo-abertura { font-size: clamp(2.4rem, 11vw, 2.9rem); }
}
.final-heroi .acoes { gap: 12px; }
.final-heroi .acoes .botao { padding-inline: 22px; }
/* marca tocada pelo astro: logo na cor real, caixa iluminada na cor do astro */
.logo-cliente.varre { background: radial-gradient(130% 110% at 50% 50%, #ffffff, color-mix(in srgb, var(--varre) 22%, #eef0f4)) !important; }
.logo-cliente.clara.varre { background: radial-gradient(130% 110% at 50% 50%, color-mix(in srgb, var(--varre) 18%, #0c111d), #080b12) !important; }
.logo-cliente.varre .mono { opacity: 0 !important; filter: none; }
.logo-cliente.varre .cor { opacity: 1 !important; transform: scale(1.03); }
@media (max-width: 600px) { .final-assinatura { font-size: .625rem; letter-spacing: .22em; bottom: -38px; gap: 10px; } .final-assinatura span { width: 22px; } }

/* =========================================================
   Rodada 13: selo Meta organizado, selo dentro do cartão, celular
   ========================================================= */
.selo-meta .sm-ano { font-size: 9.5px; letter-spacing: .16em; }
.selo-meta .sm-sup { font-size: 7px; letter-spacing: .26em; }
.selo-meta .sm-sub { font-size: 7px; letter-spacing: .18em; }
.faixa-oficial .selo-meta { width: 112px; }
/* pílula oficial e selo no mesmo cartão */
.oficial-linha { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 16px; margin-top: 22px; padding: 12px 14px 12px 12px; border-radius: 18px; max-width: 560px;
  background: linear-gradient(110deg, rgba(37,211,102,.12), rgba(0,130,251,.06) 70%, rgba(255,255,255,.02)); border: 1px solid rgba(37,211,102,.3); }
.oficial-linha .pilula-oficial { margin: 0; padding: 0; background: none; border: 0; border-radius: 0; }
.oficial-linha .selo-mini { width: 70px; }
@media (max-width: 600px) {
  .faixa-oficial .selo-meta { width: 116px; margin-inline: auto; }
  .faixa-oficial { padding: 22px 18px; }
  .oficial-linha { gap: 10px; padding: 12px; }
  .oficial-linha .selo-mini { width: 60px; }
  .pilula-oficial b { font-size: .875rem; } .pilula-oficial small { font-size: .75rem; }
}
/* celular: astros também viajam pela página */
.toque .sistema-dica { display: none !important; }
.toque .astro b { display: none; }
.toque[data-astros="p0"] .astro.conex b, .toque[data-astros="p1"] .astro.recover b, .toque[data-astros="p2"] .astro.voip b { display: block; opacity: 1; transform: none; }
.toque .astro i { width: 22px; height: 22px; left: -11px; top: -11px; }
.toque .sistema-legenda { display: none !important; }
.toque .astro i { box-shadow: inset -3px -4px 8px rgba(0,0,0,.55), inset 2px 2px 5px rgba(255,255,255,.35), 0 0 18px 4px var(--brilho); }
.toque .astro i::after { inset: -6px; }

/* Rodada 14: a tela dos rastros ganha o tamanho em pixels pelo script (nunca 100vh, que no iPhone passa da área visível) */
.orbita-livre .rastros { right: auto; bottom: auto; width: 100%; height: 100%; }
