/* Base compartilhada por todas as páginas da Lumiio: tokens, tipografia, botões, header, cards,
   formulário de pedido, rodapé, revelação ao rolar e aviso de cookies. Cada página só adiciona o que é dela. */
/* Tokens — sistema editorial monocromático com um único acento azul */
:root{
  --accent:#2f5bff; --accent-hover:#1f47e6; --on-accent:#ffffff;
  --ink:#0c0a08; --obsidian:#1a1919; --ash:#6d6c6b;
  --smoke:#d3d3d3; --hairline:#e5e7eb; --bone:#f4f2f0; --paper:#ffffff;
  --r-btn:6px; --r-input:10px; --r-wash:12px; --r-card:16px;
  --max:1200px; --ease:.3s ease-out; --ez:cubic-bezier(.4,0,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font:400 16px/1.5 Inter,"IBM Plex Sans",system-ui,sans-serif;font-feature-settings:"ss01";
  color:var(--ink);background:var(--bone);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-weight:400}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.micro{font-size:10px;line-height:2.2;letter-spacing:.18px;text-transform:uppercase;color:var(--ash)}
.display{font-size:clamp(40px,8vw,64px);line-height:1;letter-spacing:-.02em}
.h-lg{font-size:clamp(32px,5vw,40px);line-height:1.05;letter-spacing:-.015em}
.h{font-size:28px;line-height:1.14;letter-spacing:-.01em}
.h-sm{font-size:24px;line-height:1.17}
.sub{font-size:20px;line-height:1.3}
.muted{color:var(--ash)}

/* Botões */
.btn{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 20px;border-radius:var(--r-btn);
  border:1px solid transparent;background:transparent;text-decoration:none;font-size:16px;
  transition:background var(--ease),border-color var(--ease),color var(--ease)}
.btn-primary{background:var(--accent);color:var(--on-accent)}
.btn-primary:hover{background:var(--accent-hover)}
.btn-outline{border-color:var(--ink)}
.btn-outline:hover{background:var(--ink);color:var(--paper)}
.btn .arr{display:inline-block;transition:transform .25s var(--ez)}
.btn:hover .arr{transform:translateX(4px)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Navegação (header igual em todas as páginas) */
nav.top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.85);backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline);
  box-shadow:rgba(255,255,255,.6) 0 0 2px inset}
nav.top .wrap{display:flex;align-items:center;gap:8px;height:62px}
.logo{text-decoration:none;font-size:20px;letter-spacing:-.02em;display:flex;align-items:center;gap:10px;margin-right:auto}
.logo i{display:inline-block;width:18px;height:18px;background:var(--ink);clip-path:polygon(0 100%,100% 0,100% 100%)}
.links{display:flex;gap:4px;align-items:center}
.acoes{display:flex;align-items:center;gap:8px}
.acoes .btn{height:36px}
/* link com sublinhado que cresce da esquerda para a direita; azul = seção ou página atual */
.links a:not(.btn),.sub-bt{padding:8px 12px;border-radius:var(--r-btn);text-decoration:none;font-size:14px;
  background-color:transparent;border:0;
  background-image:linear-gradient(var(--ink),var(--ink));background-repeat:no-repeat;
  background-position:12px calc(100% - 5px);background-size:0 1px;
  transition:background-size .3s var(--ez),background-color .3s var(--ez),color .3s var(--ez)}
.links a:not(.btn):hover,.sub-bt:hover,.sub:hover .sub-bt{background-color:var(--bone);background-size:calc(100% - 24px) 1px}
.links a.on:not(.btn),.links a[aria-current]:not(.btn),.sub:has(a.on,a[aria-current]) .sub-bt{color:var(--accent);
  background-image:linear-gradient(var(--accent),var(--accent));background-size:calc(100% - 24px) 1px}

/* Submenu "Soluções": abre ao passar o mouse, com Tab (focus-within) ou com clique/toque (.aberto) */
.sub{position:relative}
.sub-bt{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
.sub-bt .seta{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:translateY(-2px) rotate(45deg);transition:transform .3s var(--ez)}
.sub:hover .seta,.sub:focus-within .seta,.sub.aberto .seta{transform:translateY(1px) rotate(225deg)}
/* padding-top faz a "ponte" entre o botão e a caixa, para o mouse não perder o hover no caminho */
.sub-menu{position:absolute;top:100%;left:0;padding-top:8px;min-width:300px;
  opacity:0;visibility:hidden;transform:translateY(-6px);
  transition:opacity .25s var(--ez),transform .25s var(--ez),visibility .25s}
.sub:hover .sub-menu,.sub:focus-within .sub-menu,.sub.aberto .sub-menu{opacity:1;visibility:visible;transform:none}
.sub-caixa{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-wash);padding:6px;
  box-shadow:0 12px 32px rgba(12,10,8,.08)}
.links .sub-menu a{display:grid;gap:2px;padding:10px 12px;background-image:none;font-size:15px}
.links .sub-menu a:hover{background-color:var(--bone)}
.sub-menu a .micro{line-height:1.5}
.links .sub-menu a[aria-current],.links .sub-menu a.on{color:var(--accent);background-image:none}

/* Botão do menu no celular: duas linhas que viram um X */
.menu-bt{display:none;width:40px;height:40px;border:1px solid var(--hairline);border-radius:var(--r-btn);
  background:var(--paper);cursor:pointer;place-content:center;gap:6px}
.menu-bt i{display:block;width:16px;height:1.5px;background:var(--ink);transition:transform .3s var(--ez)}
nav.top.aberto .menu-bt i:first-child{transform:translateY(3.75px) rotate(45deg)}
nav.top.aberto .menu-bt i:last-child{transform:translateY(-3.75px) rotate(-45deg)}

@media(max-width:900px){
  .menu-bt{display:inline-grid}
  /* os links viram um painel que desce do header */
  .links{position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;
    background:var(--paper);border-bottom:1px solid var(--hairline);padding:4px 24px 20px;
    box-shadow:0 16px 32px rgba(12,10,8,.06);max-height:calc(100vh - 62px);overflow-y:auto;
    opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:opacity .3s var(--ez),transform .3s var(--ez),visibility .3s}
  nav.top.aberto .links{opacity:1;visibility:visible;transform:none}
  .links a:not(.btn){display:block;padding:14px 0;font-size:17px;border-top:1px solid var(--hairline);border-radius:0;background-image:none}
  .links>a:first-child{border-top:0}
  .links a:not(.btn):hover{background-color:transparent}
  .links a.on:not(.btn),.links a[aria-current]:not(.btn){background-image:none}
  /* no celular o submenu fica sempre aberto, com "Soluções" como título */
  .sub-bt{display:block;width:100%;text-align:left;padding:14px 0 6px;border-top:1px solid var(--hairline);border-radius:0;
    font-size:10px;line-height:2.2;letter-spacing:.18px;text-transform:uppercase;color:var(--ash);background-image:none;pointer-events:none}
  .sub-bt .seta{display:none}
  .sub-menu{position:static;opacity:1;visibility:visible;transform:none;padding:0;min-width:0}
  .sub-caixa{border:0;box-shadow:none;padding:0;background:none}
  .links .sub-menu a{padding:12px 0 12px 16px;border-top:0}
  .links .sub-menu a .micro{display:none}
  .sub:has(a.on,a[aria-current]) .sub-bt{color:var(--ash)}
}


/* Cards */
.card{background:var(--paper);border:1px solid var(--hairline);border-radius:var(--r-card);padding:24px}
.wash{background:var(--bone);border-radius:var(--r-wash);padding:20px}
.grid{display:grid;gap:16px}
.g3{grid-template-columns:repeat(3,1fr)}
section.s{padding:96px 0;scroll-margin-top:62px}

/* escala de complexidade: cada nível tem uma régua no topo */
.lvl{border-top:1px solid var(--ink);padding-top:16px}
.lvl h3{margin:8px 0}

/* Pedido */
.ask{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
.field{display:block;margin-top:16px}
.field span{display:block;font-size:14px;margin-bottom:6px;color:var(--ash);transition:color .3s var(--ez)}
.field:focus-within span{color:var(--ink)}
input,textarea{width:100%;font:inherit;color:inherit;background:var(--paper);border:1px solid var(--smoke);
  border-radius:var(--r-input);padding:14px 16px;transition:border-color var(--ease)}
textarea{min-height:140px;resize:vertical}
input:focus,textarea:focus{outline:none;border-color:var(--accent)}
.steps{margin-top:32px}
.step{display:grid;grid-template-columns:32px 1fr;gap:12px;padding:16px 0;border-top:1px solid var(--hairline)}
.step b{font-weight:400;color:var(--accent)}

/* Formulário: contato, aceite, erros e envio */
.field em{font-style:normal;color:var(--smoke);margin-left:4px}
.par{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px}
.dica,.erro{font-size:13px;margin-top:6px;color:var(--ash)}
.erro{display:none;color:var(--ink)}
.erro.inv{display:block}
.inv input,.inv textarea{border-color:var(--ink)}
.dica.inv{color:var(--ink)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.aceite{display:grid;grid-template-columns:18px 1fr;gap:12px;align-items:start;margin-top:20px;font-size:14px;color:var(--ash);cursor:pointer}
.aceite a{color:var(--ink)}
.aceite input{appearance:none;-webkit-appearance:none;width:18px;height:18px;margin:1px 0 0;padding:0;
  border:1.5px solid var(--ink);border-radius:6px;background:var(--paper) no-repeat center/12px;cursor:pointer;
  transition:background-color .2s var(--ez),border-color .2s var(--ez)}
.aceite input:checked{background-color:var(--ink);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.2 2.2L9.5 3.6' fill='none' stroke='%23fff' stroke-width='1.6'/%3E%3C/svg%3E")}
.aceite.inv{color:var(--ink)}
.falha{margin-top:16px;padding:14px 16px;background:var(--bone);border-radius:var(--r-wash);font-size:14px}
.falha a{color:var(--ink)}
#form button[disabled]{opacity:.6;cursor:progress}
#form button[disabled] .arr{transform:none}

/* Pedido enviado: o formulário sai com blur subindo; a confirmação entra de baixo.
   O quadrado de status vira acento (a confirmação mais nova da tela) e o check se desenha. */
.pedido form,.enviado{transition:opacity .35s var(--ez),filter .35s var(--ez),transform .35s var(--ez)}
.pedido form.sai{opacity:0;filter:blur(6px);transform:translateY(-12px)}
.enviado{outline:none}
.enviado.entra{opacity:0;filter:blur(6px);transform:translateY(12px)}
.ok-linha{display:flex;align-items:center;gap:12px;margin:12px 0 8px}
.ok{width:18px;height:18px;flex:none}
.ok rect{fill:var(--paper);stroke:var(--ink);stroke-width:1.5;transition:fill .3s var(--ez) .25s,stroke .3s var(--ez) .25s}
.ok path{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-dasharray:1;stroke-dashoffset:1;
  transition:stroke-dashoffset .4s var(--ez) .45s,stroke .3s var(--ez) .25s}
.enviado.vivo .ok rect{fill:var(--accent);stroke:var(--accent)}
.enviado.vivo .ok path{stroke:var(--on-accent);stroke-dashoffset:0}
.prox{list-style:none;margin-top:24px}
.prox li{display:grid;grid-template-columns:32px 1fr auto;gap:12px;padding:14px 0;border-top:1px solid var(--hairline);font-size:14px;color:var(--ash)}
.prox li b{font-weight:400}
.prox li.feito{color:var(--ink)}
.prox li i{font-style:normal;font-size:12px;color:var(--ash)}
@media(prefers-reduced-motion:reduce){.ok path{stroke-dashoffset:0}}
@media(max-width:560px){.par{grid-template-columns:minmax(0,1fr)}}

footer{background:var(--obsidian);color:var(--paper);padding:64px 0 40px}
footer .grid{grid-template-columns:2fr 1fr}
footer a{color:var(--paper);text-decoration:none;display:block;padding:4px 0;font-size:14px;transition:color var(--ease)}
footer a:hover{color:#8aa2ff}

@media(max-width:900px){
  .ask,footer .grid,.g3{grid-template-columns:1fr}
  section.s{padding:64px 0}
}
/* Revelação suave: blur + subida de 12px, uma vez. Só existe com .js (e sem reduced-motion),
   então sem JS tudo aparece de saída. */
.js .rv{opacity:0;filter:blur(6px);transform:translateY(12px);
  transition:opacity .65s var(--ez),filter .65s var(--ez),transform .65s var(--ez);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;filter:none;transform:none}
.js .rv.now{transition:none}

/* Aviso de cookies: faixa obsidian no rodapé da tela, entra com blur subindo 12px.
   "Recusar" e "Aceitar" têm o mesmo tamanho (recusar tem que ser tão fácil quanto aceitar). */
.ck-aviso{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--obsidian);color:var(--paper);
  border-top:1px solid #33312f;padding:24px 0;
  transition:opacity .35s var(--ez),filter .35s var(--ez),transform .35s var(--ez)}
.ck-aviso.fora{opacity:0;filter:blur(6px);transform:translateY(12px)}
.ck-aviso .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px 48px}
.ck-aviso .ck-txt{max-width:760px}
.ck-aviso .ck-tit{font-size:20px;line-height:1.3}
.ck-aviso p{font-size:14px;color:#a8a6a4;margin-top:6px}
.ck-aviso p a{color:var(--paper);text-underline-offset:3px}
.ck-aviso p a:hover{color:#8aa2ff}
.ck-aviso .ck-bt{display:flex;gap:12px;flex:none}
.ck-aviso .btn{justify-content:center;min-width:132px}
.ck-aviso .btn-outline{border-color:#6d6c6b;color:var(--paper)}
.ck-aviso .btn-outline:hover{border-color:var(--paper);background:var(--paper);color:var(--ink)}
@media(max-width:760px){
  .ck-aviso{padding:20px 0}
  .ck-aviso .wrap{flex-direction:column;align-items:stretch}
  .ck-aviso .btn{flex:1;min-width:0;padding:0 12px;white-space:nowrap}
}

@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* Capa das páginas internas, seções brancas, duas colunas e perguntas frequentes */
header.capa{background:var(--paper);border-bottom:1px solid var(--hairline);padding:80px 0 72px}
header.capa h1{margin-top:12px;max-width:820px}
header.capa p.sub{max-width:640px;margin-top:20px;color:var(--ash)}
.cta{display:flex;gap:12px;margin-top:32px;flex-wrap:wrap}
section.paper{background:var(--paper);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline)}
.duas{display:grid;grid-template-columns:1fr 1.1fr;gap:48px;align-items:start}
details{border-top:1px solid var(--hairline)}
details:last-child{border-bottom:1px solid var(--hairline)}
summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;padding:20px 0;font-size:20px;line-height:1.3}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--ash);transition:transform .3s var(--ez)}
details[open] summary::after{transform:rotate(45deg)}
details p{color:var(--ash);padding:0 0 20px;max-width:680px}
@media(max-width:900px){
  .duas{grid-template-columns:1fr;gap:24px}
  header.capa{padding:56px 0 48px}
}
@media(max-width:560px){
  .wrap{padding:0 16px}
  summary{font-size:18px}
  .cta .btn{flex:1 1 auto;justify-content:center}
}

/* Botão "Pedir automação": no celular e no tablet sai do header e vai para o fim do menu */
.links a.menu-cta{display:none}
@media(max-width:900px){
  .acoes .btn{display:none}
  .links a.menu-cta{display:flex;justify-content:center;margin-top:16px;border-top:0;padding:0 20px;font-size:16px;color:var(--on-accent)}
}

/* Redes sociais no rodapé */
footer .redes{display:flex;flex-wrap:wrap;gap:12px 20px;margin-top:20px}
footer .redes a{display:inline-flex;align-items:center;gap:8px;padding:0}
footer .redes svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linejoin:round}
footer .redes svg .pt{fill:currentColor;stroke:none}

/* Calculadora de horas perdidas: a conta roda só no navegador, nada é enviado */
.calc{border-bottom:1px solid var(--hairline)}
.trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}
.res{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:24px;padding-top:16px;border-top:1px solid var(--ink)}
.res .v{font-size:32px;line-height:1.1;letter-spacing:-.01em;margin-top:4px;font-variant-numeric:tabular-nums;
  transition:opacity .2s var(--ez)}
.res .v.ac{color:var(--accent)}
.res .ano{grid-column:1/-1;font-size:14px;color:var(--ash)}
.res .ano b{font-weight:400;color:var(--ink)}
@media(max-width:560px){.trio{grid-template-columns:minmax(0,1fr)}}

/* Faixa de promoção acima do header (rola junto com a página; o header continua grudado no topo) */
.promo{background:var(--obsidian);color:var(--paper);font-size:14px}
.promo a{display:flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:8px 0;
  text-decoration:none;text-align:center}
.promo b{font-weight:400;color:var(--paper);background:var(--accent);border-radius:var(--r-btn);padding:2px 8px}
.promo .cta-p{color:#a8a6a4;transition:color var(--ease)}
.promo a:hover .cta-p{color:var(--paper)}
.promo .arr{display:inline-block;transition:transform .25s var(--ez)}
.promo a:hover .arr{transform:translateX(4px)}
.promo .vl{color:var(--paper)}
@media(max-width:560px){.promo{font-size:13px}.promo .cta-p{display:none}}
@media(max-width:340px){.promo .vl{display:none}}
