/* ============================================================================
   MDC — Tour 3D do contêiner (página do data center)
   ----------------------------------------------------------------------------
   O visualizador só existe depois que a pessoa toca em "Iniciar tour": antes
   disso a seção é uma imagem de 54 KB. O motor 3D (1 MB) e o modelo (0,3 MB)
   entram sob demanda, porque boa parte de quem abre esta página está em campo,
   no Norte, com conexão ruim — e o pior tour do mundo é o que não carrega.

   Carregar depois do /assets/css/kit.css.
   ========================================================================== */

/* o !important é a lição do painel: [hidden] perde para qualquer display
   declarado depois, e esta seção precisa sumir de verdade quando desligada */
.tour[hidden]{display:none!important}

.tour{
  position:relative;padding:96px 0 104px;
  background:radial-gradient(ellipse 90% 70% at 50% 0%,rgba(37,99,235,.13),transparent 62%),#0A1628;
  overflow:hidden;
}
.tour::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.045),transparent 12%);
}

/* ---- palco ------------------------------------------------------------ */
.tr-stage{
  position:relative;width:100%;aspect-ratio:16/9;min-height:340px;
  border-radius:22px;overflow:hidden;
  background:#0A1628;
  border:1px solid rgba(255,255,255,.10);
  box-shadow:0 30px 90px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.06);
}

/* No desktop o palco seguia 16/9 da largura do container: 648px de altura,
   que somados ao cabecalho e a barra estouravam a secao e faziam o
   encaixe.js encolher tudo a 0,67 num notebook. Aqui a altura acompanha a
   tela; a proporcao 16/9 continua valendo no celular. */
@media (min-width: 1025px){
  .tr-stage{aspect-ratio:auto;height:clamp(340px,50vh,620px);min-height:0}
}

/* cartaz: fica no ar até o modelo assumir */
.tr-poster{position:absolute;inset:0;z-index:2;transition:opacity .6s ease}
.tr-poster img{width:100%;height:100%;object-fit:cover;display:block}
.tr-stage.tr-on .tr-poster{opacity:0;pointer-events:none}

/* o botão fica na faixa de baixo: no centro ele cobria a logo do contêiner */
.tr-play{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:flex-end;gap:13px;padding-bottom:38px;
  background:radial-gradient(ellipse at center,rgba(10,22,40,.35),rgba(10,22,40,.72));
  border:0;width:100%;cursor:pointer;font-family:inherit;color:#fff;
  transition:background .35s ease;
}
.tr-play:hover{background:radial-gradient(ellipse at center,rgba(10,22,40,.2),rgba(10,22,40,.62))}
.tr-play-ring{
  width:76px;height:76px;border-radius:50%;display:grid;place-items:center;
  background:rgba(37,99,235,.9);box-shadow:0 12px 40px rgba(37,99,235,.5);
  transition:transform .35s cubic-bezier(.16,1,.3,1);
}
.tr-play:hover .tr-play-ring{transform:scale(1.08)}
.tr-play-ring svg{width:30px;height:30px;fill:#fff;margin-left:4px}
.tr-play-t{font-size:1.05rem;font-weight:700;letter-spacing:.2px}
.tr-play-s{
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:.66rem;letter-spacing:1.6px;text-transform:uppercase;
  color:rgba(226,232,240,.6);
}

/* ---- o visualizador --------------------------------------------------- */
.tr-stage model-viewer{
  position:absolute;inset:0;width:100%;height:100%;
  background:transparent;opacity:0;transition:opacity .7s ease;
  --poster-color:transparent;
}
.tr-stage.tr-on model-viewer{opacity:1}

.tr-prog{
  position:absolute;left:0;right:0;bottom:0;height:3px;z-index:3;
  background:rgba(255,255,255,.08);
}
.tr-prog .tr-bar{
  display:block;height:100%;width:0;
  background:linear-gradient(90deg,#2563EB,#60A5FA);
  transition:width .2s ease;
}
.tr-prog[hidden]{display:none}

/* ---- pontos clicáveis -------------------------------------------------- */
/* o model-viewer posiciona este div; o cartão é filho e se ancora nele */
.tr-hotspot{position:relative;display:block;width:19px;height:19px}
.tr-hs{position:relative;
  --c:#60A5FA;
  width:19px;height:19px;border-radius:50%;cursor:pointer;border:0;padding:0;
  background:var(--c);box-shadow:0 0 0 4px rgba(96,165,250,.24),0 2px 10px rgba(0,0,0,.5);
  transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s ease;
}
.tr-hs::after{
  content:'';position:absolute;inset:-3px;border-radius:50%;
  border:1px solid rgba(255,255,255,.55);
}
.tr-hs:hover,.tr-hs[data-aberto]{transform:scale(1.18);box-shadow:0 0 0 7px rgba(96,165,250,.2),0 2px 14px rgba(0,0,0,.6)}
.tr-hs-card{
  position:absolute;left:26px;top:-10px;width:min(276px,60vw);
  padding:13px 15px 14px;border-radius:14px;
  background:rgba(9,18,33,.93);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 18px 46px rgba(0,0,0,.55);
  opacity:0;transform:translateX(-6px);pointer-events:none;
  transition:opacity .28s ease,transform .28s cubic-bezier(.16,1,.3,1);
}
.tr-hs[data-aberto]+.tr-hs-card,
.tr-hs:hover+.tr-hs-card{opacity:1;transform:none}
.tr-hs-card h4{
  margin:0 0 5px;font-size:.86rem;font-weight:700;color:#F1F5F9;
  font-family:'Space Grotesk',Inter,sans-serif;letter-spacing:.1px;
}
.tr-hs-card p{margin:0;font-size:.76rem;line-height:1.55;color:rgba(203,213,225,.8)}
/* perto da borda direita o cartão abre para a esquerda */
.tr-hotspot[data-esq] .tr-hs-card{left:auto;right:26px}

/* ---- barra de modos ---------------------------------------------------- */
.tr-bar-wrap{
  display:flex;flex-wrap:wrap;gap:9px;justify-content:center;align-items:center;
  margin-top:20px;
}
.tr-modo{
  display:inline-flex;align-items:center;gap:8px;
  padding:10px 17px;border-radius:999px;cursor:pointer;
  font-family:inherit;font-size:.8rem;font-weight:600;letter-spacing:.1px;
  color:rgba(226,232,240,.72);
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.10);
  transition:background .26s ease,border-color .26s ease,color .26s ease;
}
.tr-modo svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.9}
.tr-modo:hover{background:rgba(255,255,255,.09);color:#E2E8F0}
.tr-modo.on{
  background:rgba(37,99,235,.2);border-color:rgba(59,130,246,.55);color:#DBEAFE;
  box-shadow:0 0 0 1px rgba(59,130,246,.18),0 6px 22px rgba(37,99,235,.2);
}
.tr-sep{width:1px;height:26px;background:rgba(255,255,255,.12);margin:0 5px}
.tr-ar{
  background:linear-gradient(135deg,#2563EB,#3B82F6);color:#fff;border-color:transparent;
  box-shadow:0 8px 26px rgba(37,99,235,.36);
}
.tr-ar:hover{background:linear-gradient(135deg,#1D4ED8,#2563EB);color:#fff}
.tr-ar[hidden]{display:none}

/* ---- dica e nota ------------------------------------------------------- */
.tr-dica{
  position:absolute;left:18px;bottom:16px;z-index:3;pointer-events:none;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:.62rem;letter-spacing:1.5px;text-transform:uppercase;
  color:rgba(226,232,240,.34);
  opacity:0;transition:opacity .5s ease;
}
.tr-stage.tr-on .tr-dica{opacity:1}

.tr-nota{
  margin:18px auto 0;max-width:760px;text-align:center;
  font-size:.76rem;line-height:1.65;color:rgba(148,163,184,.72);
}
.tr-nota strong{color:rgba(203,213,225,.9);font-weight:600}

.tr-erro{
  position:absolute;inset:0;z-index:4;display:none;
  flex-direction:column;align-items:center;justify-content:center;gap:10px;
  padding:28px;text-align:center;background:rgba(10,22,40,.94);
}
.tr-stage.tr-falhou .tr-erro{display:flex}
.tr-erro p{margin:0;font-size:.85rem;color:rgba(203,213,225,.82);max-width:420px;line-height:1.6}

@media (max-width:768px){
  .tour{padding:66px 0 74px}
  /* no celular o palco precisa de altura: com 4/3 sobrava 250px e o contêiner
     ficava pequeno demais para dar vontade de girar */
  .tr-stage{aspect-ratio:auto;height:64vh;max-height:440px;min-height:330px;border-radius:16px}
  .tr-play{padding-bottom:26px;gap:11px}
  .tr-play-ring{width:64px;height:64px}
  .tr-modo{padding:9px 14px;font-size:.76rem}
  .tr-sep{display:none}
  .tr-bar-wrap{gap:7px}
  .tr-hs-card{width:min(228px,68vw);padding:11px 13px}
  .tr-dica{display:none}
}

@media (prefers-reduced-motion:reduce){
  .tr-poster,.tr-stage model-viewer,.tr-hs,.tr-hs-card,.tr-play-ring{transition:none!important}
}
