/* ============================================================
   1DO - folha de estilo unica do site
   body.site    = todas as paginas publicas
   body.landing = home, com hero e topbar que aparece depois do hero
   body.interna = paginas internas: legais e erro
   Regras do dono: h1 2rem fixo, demais fontes menores e fixas, sem clamp em
   font-size, botao sempre solido, so a 2a e a ultima secao escuras,
   separador de secao de 1px, icone de card a esquerda do titulo.
   ============================================================ */

/* ===== fontes ===== */
@font-face {
  font-family: 'Archivo Narrow';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/archivo-narrow-600.woff2') format('woff2')
}

@font-face {
  font-family: 'Archivo Narrow';
  font-weight: 700;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/archivo-narrow-700.woff2') format('woff2')
}

@font-face {
  font-family: 'Inter';
  font-weight: 400;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/inter-400.woff2') format('woff2')
}

@font-face {
  font-family: 'Inter';
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  src: url('/assets/fonts/inter-600.woff2') format('woff2')
}

/* ===== tokens ===== */
:root {
  --preto: #1C1403;
  --preto-suave: #2B2214;
  --gold-900: #6B4A00;
  --gold-700: #9B6A1F;
  --gold-500: #C99A12;
  --gold-300: #EEC421;
  --gold-100: #F7E3A8;
  --white: #FFFFFF;
  --offwhite: #FAF7F0;
  --cinza-100: #F1EEE7;
  --cinza-300: #D8D3C7;
  --cinza-700: #4A453C;
  --sucesso: #2E7D4F;
  --erro: #B3402A;
  --metal: linear-gradient(115deg, var(--gold-900) 0%, var(--gold-700) 22%, var(--gold-500) 46%, var(--gold-300) 60%, var(--gold-100) 70%, var(--gold-500) 100%);

  --bg: var(--offwhite);
  --surface: var(--white);
  --surface-2: var(--cinza-100);
  --ink: var(--preto);
  --ink-soft: var(--cinza-700);
  --muted: #6E6859;
  --line: var(--cinza-300);
  --accent: var(--gold-700);
  --tom: #FBF4E6;
  --tom-divisor: rgba(107, 74, 0, .18);
  /* dourado legivel para texto sobre fundo claro, AA; vira gold-300 no escuro */
  --gold-legivel: var(--gold-900);
  --sombra: 0 14px 34px rgba(28, 20, 3, .10);
  --btn-pri: linear-gradient(180deg, #4A3B1E 0%, #1C1403 52%, #0B0800 100%);
  --btn-pri-ink: #FAF7F0;
  --btn-pri-luz: rgba(255, 236, 190, .30);
  --btn-sec: linear-gradient(180deg, #FFFDF8 0%, #F2E9D6 58%, #E3D4B3 100%);
  --btn-sec-ink: #1C1403;
  --btn-sec-luz: rgba(255, 255, 255, .95);
  --card-topo: #FFFFFF;
  --card-base: #FBF5E8;
  --card-borda: rgba(107, 74, 0, .14);
  --card-luz: rgba(255, 255, 255, .95);

  --font-display: 'Archivo Narrow', system-ui, 'Segoe UI Semibold', 'Arial Narrow', sans-serif;
  --font-body: 'Inter', system-ui, 'Segoe UI', Roboto, sans-serif;
  --wrap: 1140px;
  --sec-pad: 5rem;
}

@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) {
    --bg: var(--preto);
    --surface: var(--preto-suave);
    --surface-2: #241c0e;
    --ink: var(--offwhite);
    --ink-soft: #D8D3C7;
    --muted: #A79F8E;
    --line: rgba(247, 227, 168, .14);
    --accent: var(--gold-300);
    --tom: #221A0B;
    --tom-divisor: rgba(247, 227, 168, .14);
    --gold-legivel: var(--gold-300);
    --sombra: 0 14px 34px rgba(0, 0, 0, .35);
    --btn-pri: linear-gradient(180deg, #FFFFFF 0%, #F3EAD6 58%, #E2D3B2 100%);
    --btn-pri-ink: #1C1403;
    --btn-pri-luz: rgba(255, 255, 255, .9);
    --btn-sec: linear-gradient(180deg, #54452A 0%, #2B2214 60%, #1C1403 100%);
    --btn-sec-ink: #FAF7F0;
    --btn-sec-luz: rgba(255, 236, 190, .22);
    --card-topo: #33291A;
    --card-base: #221A0C;
    --card-borda: rgba(247, 227, 168, .14);
    --card-luz: rgba(255, 236, 190, .08);
  }
}

:root[data-theme="dark"] {
  --bg: var(--preto);
  --surface: var(--preto-suave);
  --surface-2: #241c0e;
  --ink: var(--offwhite);
  --ink-soft: #D8D3C7;
  --muted: #A79F8E;
  --line: rgba(247, 227, 168, .14);
  --accent: var(--gold-300);
  --tom: #221A0B;
  --tom-divisor: rgba(247, 227, 168, .14);
  --gold-legivel: var(--gold-300);
  --sombra: 0 14px 34px rgba(0, 0, 0, .35);
  --btn-pri: linear-gradient(180deg, #FFFFFF 0%, #F3EAD6 58%, #E2D3B2 100%);
  --btn-pri-ink: #1C1403;
  --btn-pri-luz: rgba(255, 255, 255, .9);
  --btn-sec: linear-gradient(180deg, #54452A 0%, #2B2214 60%, #1C1403 100%);
  --btn-sec-ink: #FAF7F0;
  --btn-sec-luz: rgba(255, 236, 190, .22);
  --card-topo: #33291A;
  --card-base: #221A0C;
  --card-borda: rgba(247, 227, 168, .14);
  --card-luz: rgba(255, 236, 190, .08);
}

/* ===== base ===== */
* {
  box-sizing: border-box
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 76px;
  overflow-x: hidden;
  overflow-x: clip
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
  overflow-x: clip
}

img,
svg {
  max-width: 100%
}

a {
  color: inherit;
  text-decoration: none
}

h1,
h2,
h3 {
  font-family: var(--font-display);
  font-weight: 700;
  margin: 0;
  letter-spacing: -.005em
}

h2 {
  font-size: 1.6rem;
  line-height: 1.15;
  text-wrap: balance
}

h3 {
  font-size: 1.15rem;
  line-height: 1.25
}

p {
  margin: 0
}

.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: 1.5rem
}

.wrap.estreito {
  max-width: 820px
}

a:focus-visible,
button:focus-visible,
summary:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
.btn:focus-visible {
  outline: 2.5px solid var(--accent);
  outline-offset: 2px;
  border-radius: 6px
}

.pular {
  position: absolute;
  left: 1rem;
  top: -60px;
  z-index: 100;
  background: var(--ink);
  color: var(--bg);
  padding: .6rem 1rem;
  border-radius: 8px;
  font-weight: 600
}

.pular:focus {
  top: 1rem
}

.eyebrow {
  display: inline-block;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: .82rem;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold-legivel)
}

/* ===== botoes: sempre solidos ===== */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 1rem;
  line-height: 1.2;
  padding: .8rem 1.4rem;
  border-radius: 10px;
  border: 0;
  cursor: pointer;
  text-align: center;
  transition: transform .18s ease, box-shadow .18s ease, background .18s ease
}

.btn:hover {
  transform: translateY(-2px)
}

.btn-sm {
  font-size: .9rem;
  padding: .55rem 1rem
}

/* laca: o mesmo acabamento brilhante dos mascotes */
.btn-primary {
  background: var(--btn-pri);
  color: var(--btn-pri-ink);
  box-shadow: inset 0 1px 0 var(--btn-pri-luz), inset 0 -2px 6px rgba(0, 0, 0, .28), 0 8px 20px rgba(28, 20, 3, .22)
}

.btn-primary:hover {
  box-shadow: inset 0 1px 0 var(--btn-pri-luz), 0 0 0 1px rgba(238, 196, 33, .55), 0 14px 30px rgba(201, 154, 18, .32)
}

/* ceramica: secundario solido, neutro e quente */
.btn-sec {
  background: var(--btn-sec);
  color: var(--btn-sec-ink);
  box-shadow: inset 0 1px 0 var(--btn-sec-luz), inset 0 -2px 5px rgba(107, 74, 0, .14), 0 0 0 1px rgba(107, 74, 0, .12), 0 6px 16px rgba(28, 20, 3, .10)
}

.btn-sec:hover {
  box-shadow: inset 0 1px 0 var(--btn-sec-luz), 0 0 0 1px rgba(201, 154, 18, .45), 0 12px 26px rgba(28, 20, 3, .16)
}

/* metal dourado, so fora do hero: fecho escuro e formulario */
.btn-ouro {
  background: linear-gradient(180deg, #FBE58F 0%, #EEC421 32%, #D3A215 68%, #A9761C 100%);
  color: var(--preto);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .65), inset 0 -2px 6px rgba(107, 74, 0, .45), 0 10px 24px rgba(201, 154, 18, .30)
}

.btn-ouro:hover {
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .75), 0 0 0 1px rgba(255, 236, 150, .7), 0 16px 34px rgba(238, 196, 33, .42)
}

/* ===== topbar ===== */
.topbar {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in srgb, var(--bg) 88%, transparent);
  backdrop-filter: saturate(1.4) blur(10px);
  -webkit-backdrop-filter: saturate(1.4) blur(10px);
  border-bottom: 1px solid var(--tom-divisor)
}

.topbar-linha {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 64px
}

.brand {
  display: inline-flex;
  align-items: center
}

.brand-logo {
  height: 34px;
  width: auto;
  display: block
}

.topnav {
  display: flex;
  align-items: center;
  gap: 1.3rem;
  font-size: .95rem;
  color: var(--ink-soft)
}

.topnav > a:not(.btn):hover {
  color: var(--ink)
}

/* na home a topbar so aparece depois que o hero sai da tela */
.js.landing .topbar {
  position: fixed;
  left: 0;
  right: 0;
  transform: translateY(-100%);
  transition: transform .25s ease
}

.js.landing.past-hero .topbar,
.js.landing .topbar:focus-within {
  transform: none
}

@media (max-width:900px) {
  .some-sm {
    display: none
  }
}

/* ===== hero ===== */
.hero {
  position: relative;
  overflow: hidden;
  padding-block: 3.5rem 4.5rem
}

.hero .fx i {
  position: absolute;
  border-radius: 50%;
  filter: blur(60px);
  opacity: .5;
  pointer-events: none
}

.hero .fx .fa {
  width: 420px;
  height: 420px;
  background: rgba(238, 196, 33, .28);
  top: -140px;
  right: -60px
}

.hero .fx .fb {
  width: 340px;
  height: 340px;
  background: rgba(201, 154, 18, .18);
  bottom: -160px;
  left: -100px
}

.hero .fx .fc {
  width: 260px;
  height: 260px;
  background: rgba(43, 108, 176, .10);
  top: 40%;
  left: 45%
}

.hero-grid {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.2fr);
  grid-template-areas: "alto cena" "baixo cena";
  column-gap: 2.5rem;
  align-items: center
}

.hero-alto {
  grid-area: alto;
  align-self: end
}

.hero-baixo {
  grid-area: baixo;
  align-self: start
}

.hero-cena {
  grid-area: cena
}

/* logo original com efeitos: entrada, brilho correndo no metal e
   inclinacao leve que segue o ponteiro (landing.js) */
.hero-marca {
  position: relative;
  width: 330px;
  max-width: 72vw;
  margin-bottom: 1.5rem;
  perspective: 900px;
  animation: logo-entra 1s cubic-bezier(.2, .8, .2, 1) both
}

.hero-marca::before {
  content: "";
  position: absolute;
  inset: -18% -10%;
  background: radial-gradient(closest-side, rgba(238, 196, 33, .22), transparent 70%);
  animation: logo-halo 6s ease-in-out infinite;
  pointer-events: none
}

.logo-arte {
  --logo-mask: url('/assets/img/1do-logo.webp');
  position: relative;
  display: block;
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transition: transform .25s ease-out
}

.logo-arte::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 40%, rgba(255, 255, 255, .9) 50%, transparent 60%) 130% 0 / 260% 100% no-repeat;
  mix-blend-mode: overlay;
  -webkit-mask: var(--logo-mask) center / 100% 100% no-repeat;
  mask: var(--logo-mask) center / 100% 100% no-repeat;
  animation: logo-brilho 5s ease-in-out 1.1s infinite;
  pointer-events: none
}

.hero-logo {
  display: block;
  width: 100%;
  height: auto
}

@keyframes logo-entra {
  from {
    opacity: 0;
    transform: translateY(14px) scale(.96);
    filter: blur(6px)
  }

  to {
    opacity: 1;
    transform: none;
    filter: none
  }
}

@keyframes logo-brilho {
  0% {
    background-position: 130% 0
  }

  40%,
  100% {
    background-position: -30% 0
  }
}

@keyframes logo-halo {
  50% {
    opacity: .55;
    transform: scale(1.06)
  }
}

@media (prefers-color-scheme:dark) {
  :root:not([data-theme="light"]) .logo-arte {
    --logo-mask: url('/assets/img/1do-logo-dark.webp')
  }
}

@media (prefers-reduced-motion:reduce) {

  .hero-marca,
  .hero-marca::before,
  .logo-arte::after {
    animation: none
  }
}

.announce {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  font-size: .9rem;
  color: var(--ink-soft);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .3rem .9rem .3rem .35rem;
  margin-bottom: 1.2rem
}

.announce .tag {
  background: var(--btn-pri);
  color: var(--btn-pri-ink);
  box-shadow: inset 0 1px 0 var(--btn-pri-luz);
  font-weight: 600;
  font-size: .78rem;
  border-radius: 999px;
  padding: .15rem .6rem
}

.hero h1 {
  font-size: 2rem;
  line-height: 1.08;
  max-width: 90vw;
  text-wrap: balance
}

.hero h1 .hl {
  background: var(--metal);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent
}

.lead {
  font-size: 1.08rem;
  color: var(--ink-soft);
  margin-top: 1.2rem;
  max-width: 34rem
}

.ctas {
  display: flex;
  flex-wrap: wrap;
  gap: .8rem;
  margin-top: 1.6rem
}

.trust {
  list-style: none;
  padding: 0;
  margin: 1.4rem 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: .4rem 1.2rem;
  font-size: .88rem;
  color: var(--muted)
}

.trust li {
  display: inline-flex;
  align-items: center;
  gap: .45rem
}

.trust li::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--gold-500)
}

/* ===== hero: palco 3D dos mascotes ===== */
.hero-cena {
  position: relative
}

.palco {
  position: relative;
  height: 660px;
  margin-left: -2.5rem;
  /* sobe ate o topo do hero: o brilho do maestro se apaga sem ser cortado */
  margin-top: -3.5rem
}

/* canvas unico dos mascotes, desenhado por js/mascotes.js sobre os
   retangulos [data-mascote]; nao recebe clique */
.mascotes-canvas {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  pointer-events: none;
  will-change: transform
}

/* desenho de reserva sem WebGL; some quando o 3D carrega */
.m3d .mascote-reserva {
  visibility: hidden
}

.palco-reserva,
.reserva-orbes {
  position: absolute;
  inset: 0
}

/* enquanto o 3D carrega: tres bolinhas douradas pulando e um aviso */
.carregando {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .8rem;
  font-size: .9rem;
  font-weight: 600;
  color: var(--muted)
}

.carregando-bolas {
  display: flex;
  gap: .5rem
}

.carregando-bolas i {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: radial-gradient(circle at 34% 28%, #FFF6CF 0%, #EEC421 26%, #C99A12 62%, #7A5408 100%);
  box-shadow: 0 4px 10px rgba(201, 154, 18, .35);
  animation: carrega 1s ease-in-out infinite
}

.carregando-bolas i:nth-child(2) {
  animation-delay: .15s
}

.carregando-bolas i:nth-child(3) {
  animation-delay: .3s
}

@keyframes carrega {

  0%,
  80%,
  100% {
    transform: translateY(0)
  }

  40% {
    transform: translateY(-10px)
  }
}

/* sem JS ou sem WebGL: no lugar do carregando ficam as bolinhas paradas */
.reserva-orbes {
  display: none
}

body:not(.js) .carregando,
[data-m3d-falha] .carregando {
  display: none
}

body:not(.js) .reserva-orbes,
[data-m3d-falha] .reserva-orbes {
  display: block
}

.reserva-orbes i,
.conversa-reserva i {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle at 32% 28%, #FFF4C2 0%, var(--gold-300) 18%, var(--gold-500) 45%, var(--gold-900) 100%);
  box-shadow: 0 24px 40px rgba(28, 20, 3, .25)
}

.reserva-orbes i:nth-child(1) {
  width: 150px;
  height: 150px;
  left: 34%;
  top: 30%
}

.reserva-orbes i:nth-child(2),
.conversa-reserva i:nth-child(2) {
  background: radial-gradient(circle at 32% 28%, #6B5A3A 0%, var(--preto-suave) 40%, #0E0A01 100%)
}

.reserva-orbes i:nth-child(2) {
  width: 80px;
  height: 80px;
  left: 10%;
  top: 16%
}

.reserva-orbes i:nth-child(3) {
  width: 64px;
  height: 64px;
  right: 12%;
  top: 22%;
  background: radial-gradient(circle at 32% 28%, #FFFFFF 0%, #FAF3E2 40%, #CFC3A5 100%)
}

.reserva-orbes i:nth-child(4) {
  width: 90px;
  height: 90px;
  right: 18%;
  bottom: 16%
}

/* cartao de aprovacao sobre o palco: vidro claro, troca de lugar a cada
   ciclo (landing.js) e tem sempre o mesmo tamanho */
.toast-aprov {
  position: absolute;
  z-index: 5;
  width: 380px;
  background: color-mix(in srgb, var(--surface) 88%, transparent);
  color: var(--ink);
  border: 1px solid color-mix(in srgb, var(--gold-500) 35%, transparent);
  border-radius: 10px;
  box-shadow: inset 0 1px 0 var(--card-luz), 0 18px 40px rgba(28, 20, 3, .14);
  font-size: .84rem;
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  transition: left .7s cubic-bezier(.2, .8, .2, 1), top .7s cubic-bezier(.2, .8, .2, 1), opacity .3s ease
}

.toast-aprov.trocando {
  opacity: 0
}

/* sempre do lado direito, alternando em cima e embaixo */
.toast-aprov.pos-0,
.toast-aprov.pos-2 {
  left: calc(100% - 380px + 1rem);
  top: 80%
}

.toast-aprov.pos-1,
.toast-aprov.pos-3 {
  left: calc(100% - 380px + 1rem);
  top: 3%
}

.aprovacao {
  display: grid;
  margin: .4rem
}

.apr-pedido,
.apr-feito {
  grid-area: 1 / 1
}

/* titulo e texto a esquerda, botoes centralizados no bloco inteiro */
.apr-pedido {
  display: flex;
  align-items: center;
  gap: .6rem;
  background: color-mix(in srgb, var(--gold-300) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold-500) 45%, transparent);
  border-radius: 6px;
  padding: .45rem .6rem
}

.apr-texto {
  flex: 1;
  min-width: 0
}

.apr-texto p:last-child {
  font-size: .8rem;
  line-height: 1.3
}

.apr-titulo {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold-legivel);
  margin-bottom: .15rem
}

.apr-botoes {
  display: flex;
  flex: none;
  gap: .35rem
}

.apr-botoes span {
  font-weight: 600;
  font-size: .76rem;
  border-radius: 5px;
  padding: .3rem .6rem
}

.b-aprovar {
  background: linear-gradient(180deg, #FBE58F 0%, #EEC421 40%, #C99A12 100%);
  color: var(--preto);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .6)
}

.b-revisar {
  background: var(--btn-sec);
  color: var(--btn-sec-ink);
  box-shadow: inset 0 1px 0 var(--btn-sec-luz), 0 0 0 1px rgba(107, 74, 0, .12)
}

.apr-feito {
  display: flex;
  align-items: center;
  gap: .6rem;
  align-self: stretch;
  background: color-mix(in srgb, var(--gold-300) 22%, transparent);
  border: 1px solid color-mix(in srgb, var(--gold-500) 55%, transparent);
  border-radius: 6px;
  padding: .45rem .6rem;
  color: var(--ink);
  font-weight: 600;
  opacity: 0
}

.apr-feito svg {
  fill: none;
  stroke: var(--gold-legivel);
  stroke-width: 2.6;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex: none
}

.ag-av {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: none;
  background: radial-gradient(circle at 34% 28%, #FFF6CF 0%, #EEC421 26%, #C99A12 62%, #7A5408 100%);
  box-shadow: inset 0 -2px 4px rgba(107, 74, 0, .45), 0 4px 10px rgba(201, 154, 18, .3);
  color: var(--preto);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: .85rem
}

/* ciclo de 14s: o pedido espera bastante, Aprovar e clicado, aprovado */
.b-aprovar {
  animation: clique 14s infinite
}

.apr-pedido {
  animation: some 14s infinite
}

.apr-feito {
  animation: surge 14s infinite
}

@keyframes clique {

  0%,
  52%,
  58%,
  100% {
    transform: none;
    box-shadow: none
  }

  55% {
    transform: scale(.93);
    box-shadow: 0 0 0 5px rgba(238, 196, 33, .35)
  }
}

@keyframes some {

  0%,
  58% {
    opacity: 1
  }

  63%,
  93% {
    opacity: 0
  }

  100% {
    opacity: 1
  }
}

@keyframes surge {

  0%,
  58% {
    opacity: 0
  }

  63%,
  93% {
    opacity: 1
  }

  100% {
    opacity: 0
  }
}

@media (prefers-reduced-motion:reduce) {

  .toast-aprov,
  .b-aprovar,
  .apr-pedido,
  .apr-feito {
    animation: none !important
  }

  html {
    scroll-behavior: auto
  }
}

/* o 1DO Maestro: no hero fica atras da sala e, ao rolar, sai dali e acompanha
   a pagina; posicao e tamanho vem de js/mascotes.js */
.maestro-lateral {
  position: fixed;
  left: 0;
  top: 0;
  width: 4px;
  height: 4px;
  z-index: 40;
  pointer-events: none
}

/* efeito multiplicar: ao rolar, pedacinhos de uma bolinha dourada viajam ate
   a bolinha da secao nova; posicao e tamanho vem de js/mascotes.js */
.maestro-guia {
  position: fixed;
  left: 0;
  top: 0;
  width: 4px;
  height: 4px;
  z-index: 40;
  pointer-events: none
}

/* ===== mascotes nas secoes ===== */
.card-mascote {
  position: relative;
  width: 88px;
  height: 88px;
  margin: -.4rem 0 -.4rem -.4rem;
  display: grid;
  place-items: center;
  flex: none
}

.perm-mascote {
  position: relative;
  width: 68px;
  height: 68px;
  display: grid;
  place-items: center;
  flex: none
}

.head-com-mascote {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 2rem;
  margin-bottom: 2.4rem
}

.head-com-mascote .head {
  margin-bottom: 0
}

.auditor {
  flex: none;
  width: 320px;
  height: 230px
}

/* a faixa 3D cobre o espaco de cima e a linha dos numeros: a bolinha pousa
   em cima de cada circulo */
.etapas-palco {
  position: relative;
  padding-top: 96px
}

.etapas-faixa {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  height: calc(96px + 1.2rem + 44px);
  pointer-events: none
}

.etapa-num {
  transition: transform .2s ease, box-shadow .2s ease
}

.etapa-num.pisado {
  transform: scale(1.08);
  box-shadow: inset 0 -2px 4px rgba(107, 74, 0, .45), 0 0 0 6px rgba(238, 196, 33, .25), 0 8px 18px rgba(201, 154, 18, .45)
}

.conversa {
  position: relative;
  height: 330px;
  margin-top: 1rem;
  overflow: hidden
}

.conversa-palco {
  position: absolute;
  inset: 80px 0 0 0
}

.conversa-reserva {
  position: absolute;
  inset: 0
}

.conversa-reserva i:nth-child(1) {
  width: 110px;
  height: 110px;
  left: 14%;
  top: 30%
}

.conversa-reserva i:nth-child(2) {
  width: 96px;
  height: 96px;
  right: 16%;
  top: 34%;
  border-radius: 22px
}

/* baloes do hero: o seu prompt e a resposta do agente, presos a ele */
.baloes-palco {
  position: absolute;
  inset: 0;
  z-index: 6;
  pointer-events: none
}

.bal-ag {
  position: absolute;
  left: 0;
  top: 0;
  width: 212px;
  min-height: 64px;
  padding: .45rem .7rem .5rem;
  border-radius: 14px;
  font-size: .8rem;
  font-weight: 600;
  line-height: 1.35;
  opacity: 0;
  transition: opacity .25s ease;
  will-change: transform
}

.bal-ag.on {
  opacity: 1
}

/* pontinha do balao: pequena, de ponta arredondada, na cor da base do balao
   e apontando para o agente (--cauda vem do script) */
.bal-ag::after,
.balao::after {
  content: "";
  position: absolute;
  bottom: -8px;
  left: calc(var(--cauda, 50%) - 8px);
  width: 16px;
  height: 9px;
  background: var(--cor-ponta);
  clip-path: path('M0 0 H16 L9.6 7.4 Q8 9.2 6.4 7.4 Z')
}

.bal-rot {
  display: block;
  font-family: var(--font-display);
  font-size: .7rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: .1rem
}

.bal-prompt {
  --cor-ponta: #1C1403;
  background: linear-gradient(180deg, #43361C 0%, #1C1403 100%);
  color: var(--offwhite);
  box-shadow: inset 0 1px 0 rgba(255, 236, 190, .28), 0 10px 24px rgba(28, 20, 3, .28)
}

.bal-prompt .bal-rot {
  color: var(--gold-300)
}

.bal-resposta {
  --cor-ponta: #F2E8D2;
  background: linear-gradient(180deg, #FFFDF8 0%, #F2E8D2 100%);
  color: var(--preto);
  box-shadow: inset 0 1px 0 #fff, 0 0 0 1px rgba(201, 154, 18, .35), 0 10px 24px rgba(28, 20, 3, .18)
}

.bal-resposta .bal-rot {
  color: var(--gold-900)
}

/* o maestro fala em ouro */
.bal-maestro {
  --cor-ponta: #D3A215;
  background: linear-gradient(180deg, #FBE58F 0%, #EEC421 45%, #D3A215 100%);
  color: var(--preto);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .65), 0 10px 24px rgba(201, 154, 18, .3)
}

.bal-maestro .bal-rot {
  color: var(--gold-900)
}

.bal-prompt.digitando .bal-txt::after {
  content: "";
  display: inline-block;
  width: 2px;
  height: 1em;
  margin-left: 2px;
  vertical-align: -2px;
  background: var(--gold-300);
  animation: cursor .8s steps(1) infinite
}

.bal-resposta.pensando .bal-txt::after {
  content: "";
  display: inline-block;
  width: 24px;
  height: 8px;
  background: radial-gradient(circle, var(--gold-700) 2.4px, transparent 2.8px) 0 50% / 8px 8px repeat-x;
  animation: pensa .9s ease-in-out infinite
}

@keyframes cursor {
  50% {
    opacity: 0
  }
}

@keyframes pensa {
  50% {
    opacity: .3
  }
}

/* baloes de fala dos 1DOzinhos, por cima do canvas */
.balao {
  position: absolute;
  z-index: 3;
  top: 0;
  max-width: 64%;
  margin: 0;
  padding: .55rem .85rem;
  border-radius: 14px;
  font-size: .86rem;
  font-weight: 600;
  line-height: 1.35;
  opacity: 0;
  transform: translateY(6px) scale(.96);
  transition: opacity .25s ease, transform .25s ease
}

.balao.on {
  opacity: 1;
  transform: none
}

.balao-a {
  --cor-ponta: #EEC421;
  left: 2%;
  background: linear-gradient(180deg, #FBE58F 0%, #EEC421 100%);
  color: var(--preto)
}

.balao-b {
  --cor-ponta: #F2E8D2;
  right: 2%;
  background: linear-gradient(180deg, #FFFDF8 0%, #F2E8D2 100%);
  color: var(--preto)
}

/* com o 3D ligado, o balao e colado na cabeca do 1DOzinho pelo script */
.m3d .balao {
  left: 0;
  right: auto;
  transition: opacity .25s ease
}


/* ===== secoes ===== */
.sec {
  padding-block: var(--sec-pad);
  border-top: 1px solid var(--tom-divisor)
}

.sec.tom {
  background: var(--tom)
}

.head {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  max-width: 46rem;
  margin-bottom: 2.4rem
}

.head p {
  color: var(--ink-soft);
  font-size: 1.05rem
}

/* secao sempre escura, nos dois temas */
.escura {
  --e-ink: var(--offwhite);
  --e-soft: #D8D3C7;
  --e-line: rgba(247, 227, 168, .14);
  background: radial-gradient(120% 140% at 85% 0%, rgba(238, 196, 33, .10), transparent 55%), #150F02;
  color: var(--e-ink);
  border-top-color: rgba(247, 227, 168, .14)
}

.escura .eyebrow {
  color: var(--gold-300)
}

.escura .head p {
  color: var(--e-soft)
}

.escura .card {
  background: linear-gradient(180deg, rgba(247, 227, 168, .10) 0%, rgba(247, 227, 168, .03) 100%);
  border-color: rgba(247, 227, 168, .16);
  box-shadow: inset 0 1px 0 rgba(255, 236, 190, .12), 0 18px 38px rgba(0, 0, 0, .25)
}

.escura .card:hover {
  border-color: rgba(238, 196, 33, .45)
}

.escura .card p {
  color: var(--e-soft)
}

.escura .card-ico {
  background: rgba(238, 196, 33, .14);
  color: var(--gold-300)
}

/* ===== cards ===== */
.grade {
  display: grid;
  gap: 1.2rem
}

.grade-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr))
}

.grade-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr))
}

.grade-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr))
}

/* icone a esquerda e titulo ao lado, inclusive no celular */
.card {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: .85rem;
  row-gap: .8rem;
  align-content: start;
  background: linear-gradient(180deg, var(--card-topo) 0%, var(--card-topo) 30%, var(--card-base) 100%);
  border: 1px solid var(--card-borda);
  border-radius: 18px;
  padding: 1.4rem;
  box-shadow: inset 0 1px 0 var(--card-luz), 0 1px 2px rgba(28, 20, 3, .06), 0 18px 38px rgba(28, 20, 3, .08);
  transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease
}

/* fio de ouro no topo do card, como o brilho no metal dos mascotes */
.card::before,
.perm::before,
.form-contato::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 22px;
  right: 22px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold-300) 30%, #FFF4C2 50%, var(--gold-300) 70%, transparent);
  pointer-events: none
}

.card:hover {
  transform: translateY(-3px);
  border-color: rgba(201, 154, 18, .42);
  box-shadow: inset 0 1px 0 var(--card-luz), 0 0 0 1px rgba(238, 196, 33, .14), 0 24px 46px rgba(28, 20, 3, .13)
}

.card > :not(.card-ico):not(.card-mascote):not(h3) {
  grid-column: 1 / -1
}

.card p {
  color: var(--ink-soft);
  font-size: .95rem
}

.card-ico {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: var(--surface-2);
  color: var(--gold-legivel)
}

.entregas,
.checks {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .45rem;
  font-size: .92rem
}

.entregas li,
.checks li {
  position: relative;
  padding-left: 1.6rem
}

.entregas li::before,
.checks li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .3em;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: color-mix(in srgb, var(--gold-500) 22%, transparent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236B4A00' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E") center / 62% no-repeat
}

.card-link {
  align-self: end;
  font-weight: 600;
  font-size: .92rem;
  color: var(--gold-legivel);
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-top: .2rem
}

.card-link::after {
  content: "";
  width: .5rem;
  height: .5rem;
  border-top: 2px solid currentColor;
  border-right: 2px solid currentColor;
  transform: rotate(45deg)
}

.card-link:hover {
  text-decoration: underline
}

.card-publico h3 {
  font-size: 1.35rem
}

/* ===== controle: demo de permissoes ===== */
.controle-grid {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: 3rem;
  align-items: center
}

.controle-texto {
  display: flex;
  flex-direction: column;
  gap: .9rem
}

.controle-texto > p {
  color: var(--ink-soft);
  font-size: 1.05rem
}

.controle-texto .checks {
  margin-top: .4rem;
  font-size: .98rem
}

.perm {
  position: relative;
  background: linear-gradient(180deg, var(--card-topo) 0%, var(--card-topo) 30%, var(--card-base) 100%);
  border: 1px solid var(--card-borda);
  border-radius: 20px;
  padding: 1.2rem;
  box-shadow: inset 0 1px 0 var(--card-luz), 0 1px 2px rgba(28, 20, 3, .06), 0 22px 44px rgba(28, 20, 3, .10);
  display: flex;
  flex-direction: column;
  gap: .9rem;
  margin: 0
}

.perm-topo {
  display: flex;
  align-items: center;
  gap: .7rem
}

.perm-topo b {
  display: block;
  font-family: var(--font-display);
  font-size: 1.1rem
}

.perm-topo small {
  color: var(--muted);
  font-size: .85rem
}

.perm-linha {
  border: 0;
  border-top: 1px solid var(--line);
  margin: 0;
  padding: .8rem 0 0;
  display: grid;
  grid-template-columns: minmax(0, 11rem) minmax(0, 1fr);
  align-items: center;
  gap: .6rem
}

.perm-linha legend {
  float: left;
  padding: 0;
  font-weight: 600;
  font-size: .92rem
}

.seg {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .25rem;
  background: var(--surface-2);
  border-radius: 10px;
  padding: .25rem
}

.seg-op {
  position: relative;
  cursor: pointer
}

.seg-op input {
  position: absolute;
  opacity: 0;
  inset: 0;
  margin: 0;
  cursor: pointer
}

.seg-op span {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  text-align: center;
  font-size: .78rem;
  font-weight: 600;
  line-height: 1.15;
  padding: .3rem .35rem;
  border-radius: 8px;
  color: var(--muted);
  transition: background .15s, color .15s
}

.seg-op:hover span {
  color: var(--ink)
}

.seg-op input:focus-visible + span {
  outline: 2.5px solid var(--accent);
  outline-offset: 1px
}

.seg-op input:checked + span {
  background: var(--btn-pri);
  color: var(--btn-pri-ink);
  box-shadow: inset 0 1px 0 var(--btn-pri-luz), 0 3px 8px rgba(28, 20, 3, .2)
}

.seg-bloqueado input:checked + span {
  background: linear-gradient(180deg, #D0573E 0%, #B3402A 55%, #8E2F1D 100%);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 210, 200, .45), 0 3px 8px rgba(179, 64, 42, .3)
}

.seg-agir input:checked + span {
  background: linear-gradient(180deg, #FBE58F 0%, #EEC421 40%, #C99A12 100%);
  color: var(--preto);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .65), 0 3px 8px rgba(201, 154, 18, .3)
}

/* dois agentes conferindo a fila de pedidos e as permissoes */
.conferencia {
  height: 250px;
  margin-top: .4rem
}

.perm-resumo {
  font-size: .9rem;
  color: var(--ink-soft);
  background: var(--surface-2);
  border-radius: 10px;
  padding: .7rem .9rem
}

/* ===== etapas ===== */
.etapas {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1.2rem;
  counter-reset: etapa
}

.etapas li {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: .8rem;
  row-gap: .6rem;
  align-content: start;
  padding-top: 1.2rem;
  border-top: 2px solid var(--gold-500)
}

.etapas p {
  grid-column: 1 / -1;
  color: var(--ink-soft);
  font-size: .95rem
}

.etapa-num {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 34% 28%, #FFF6CF 0%, #EEC421 26%, #C99A12 62%, #7A5408 100%);
  color: var(--preto);
  box-shadow: inset 0 -2px 4px rgba(107, 74, 0, .45), 0 6px 14px rgba(201, 154, 18, .35);
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.05rem
}

/* ===== perguntas ===== */
.faq {
  display: flex;
  flex-direction: column;
  gap: .7rem
}

.faq details {
  background: linear-gradient(180deg, var(--card-topo) 0%, var(--card-base) 100%);
  border: 1px solid var(--card-borda);
  border-radius: 16px;
  padding: 0 1.2rem;
  box-shadow: inset 0 1px 0 var(--card-luz), 0 8px 20px rgba(28, 20, 3, .05)
}

.faq details[open] {
  border-color: rgba(201, 154, 18, .4)
}

.faq summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.05rem 0;
  font-weight: 600;
  font-size: 1rem
}

.faq summary::-webkit-details-marker {
  display: none
}

.faq summary::after {
  content: "";
  flex: none;
  width: .6rem;
  height: .6rem;
  border-right: 2px solid var(--gold-legivel);
  border-bottom: 2px solid var(--gold-legivel);
  transform: rotate(45deg) translateY(-3px);
  transition: transform .2s
}

.faq details[open] summary::after {
  transform: rotate(-135deg) translateY(-3px)
}

.faq details p {
  color: var(--ink-soft);
  padding-bottom: 1.1rem
}

/* ===== contato: ultima secao, escura ===== */
.contato-grid {
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
  gap: 3rem;
  align-items: start
}

.contato-texto {
  display: flex;
  flex-direction: column;
  gap: .9rem
}

.contato-texto > p {
  color: var(--e-soft);
  font-size: 1.05rem
}

.h2-logo {
  height: .82em;
  width: auto;
  display: inline-block;
  vertical-align: baseline;
  margin: 0 .06em
}

.proximos {
  list-style: none;
  counter-reset: passo;
  padding: 0;
  margin: .6rem 0 0;
  display: flex;
  flex-direction: column;
  gap: .7rem
}

.proximos li {
  counter-increment: passo;
  display: flex;
  align-items: center;
  gap: .8rem;
  color: var(--e-soft)
}

.proximos li::before {
  content: counter(passo);
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  flex: none;
  background: radial-gradient(circle at 34% 28%, #FFF6CF 0%, #EEC421 26%, #C99A12 62%, #7A5408 100%);
  color: var(--preto);
  box-shadow: inset 0 -2px 4px rgba(107, 74, 0, .45);
  font-family: var(--font-display);
  font-weight: 700
}

.form-contato {
  position: relative;
  background: linear-gradient(180deg, rgba(247, 227, 168, .10) 0%, rgba(247, 227, 168, .03) 100%);
  border: 1px solid rgba(247, 227, 168, .18);
  box-shadow: inset 0 1px 0 rgba(255, 236, 190, .12), 0 24px 50px rgba(0, 0, 0, .3);
  border-radius: 20px;
  padding: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.1rem
}

.campos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .9rem
}

.campos .largo {
  grid-column: 1 / -1
}

.form-contato label {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  font-size: .88rem;
  font-weight: 600;
  color: var(--e-ink)
}

.form-contato input,
.form-contato select,
.form-contato textarea {
  width: 100%;
  font: inherit;
  font-weight: 400;
  font-size: 1rem;
  color: var(--offwhite);
  background: #0E0A01;
  border: 1px solid rgba(247, 227, 168, .22);
  border-radius: 10px;
  padding: .7rem .8rem;
  min-height: 46px
}

.form-contato textarea {
  resize: vertical;
  min-height: 110px
}

.form-contato ::placeholder {
  color: #8F8778
}

.form-contato select option {
  background: var(--preto);
  color: var(--offwhite)
}

.form-contato input:focus,
.form-contato select:focus,
.form-contato textarea:focus {
  border-color: var(--gold-300)
}

.form-contato .btn {
  align-self: flex-start
}

.form-nota {
  font-size: .85rem;
  color: #B9B09C
}

.form-nota a {
  color: var(--gold-300);
  font-weight: 600;
  text-decoration: underline
}

.hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden
}

.aviso {
  border-radius: 12px;
  padding: .85rem 1rem;
  font-weight: 600;
  font-size: .95rem
}

.aviso-sucesso {
  background: rgba(76, 194, 122, .14);
  border: 1px solid rgba(76, 194, 122, .5);
  color: #D5EFDD
}

.aviso-erro {
  background: rgba(179, 64, 42, .18);
  border: 1px solid rgba(230, 120, 95, .55);
  color: #F6D3CB
}

/* ===== rodape ===== */
.rodape {
  border-top: 1px solid var(--tom-divisor);
  padding-block: 3rem 1.5rem;
  font-size: .92rem;
  color: var(--ink-soft)
}

.rodape-grid {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 2rem;
  align-items: start
}

.rodape-marca p {
  margin-top: .8rem;
  max-width: 22rem
}

.rodape-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, max-content));
  gap: .55rem 1.6rem
}

.rodape-links a:hover {
  color: var(--ink);
  text-decoration: underline
}

.rodape-base {
  margin-top: 2rem;
  padding-top: 1.2rem;
  border-top: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .8rem 1.5rem;
  font-size: .85rem;
  color: var(--muted)
}

.rodape-legal {
  display: flex;
  align-items: center;
  gap: .9rem
}

.rodape-gp {
  flex: none
}

.rodape-gp img {
  display: block;
  height: 30px;
  width: auto
}

/* ===== paginas internas: legais e erro ===== */
.pagina {
  padding-block: 3rem 4rem
}

.artigo {
  max-width: 760px;
  margin-inline: auto;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 18px;
  padding: 2rem;
  line-height: 1.75
}

.artigo h1 {
  font-size: 2rem;
  line-height: 1.08
}

.artigo h2 {
  font-size: 1.25rem;
  margin-top: 1.6rem;
  margin-bottom: .4rem
}

.artigo p + p {
  margin-top: .7rem
}

.artigo a {
  color: var(--gold-legivel);
  font-weight: 600;
  text-decoration: underline
}

.artigo .data {
  color: var(--muted);
  font-size: .88rem;
  margin-top: .3rem
}

.erro-pagina {
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem
}

.erro-pagina .codigo {
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1.7rem;
  color: var(--gold-legivel)
}

.erro-pagina p {
  color: var(--ink-soft);
  max-width: 30rem
}

/* ===== responsivo ===== */
@media (max-width:1020px) {
  .grade-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr))
  }

  .grade-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr))
  }

  .etapas {
    grid-template-columns: repeat(2, minmax(0, 1fr))
  }

  /* tela estreita: a faixa 3D cobre a lista inteira, a bolinha pula em cada numero */
  .etapas-faixa {
    height: 100%
  }

  .etapas-palco {
    padding-top: 1.4rem
  }
}

@media (max-width:900px) {
  :root {
    --sec-pad: 3.6rem
  }

  /* celular: a cena fica logo abaixo do h1, antes do texto e dos botoes */
  .hero {
    padding-block: 2.2rem 3rem
  }

  .hero-grid {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "alto" "cena" "baixo"
  }

  .hero-alto,
  .hero-baixo {
    text-align: center
  }

  .hero-marca,
  .hero h1,
  .lead {
    margin-inline: auto
  }

  .hero-marca {
    width: 260px
  }

  .ctas,
  .trust {
    justify-content: center
  }

  .hero-cena {
    margin-block: .6rem;
    margin-inline: auto;
    width: 100%;
    max-width: 600px
  }

  .palco {
    height: 420px;
    margin-left: 0;
    margin-top: 0
  }

  .toast-aprov {
    left: 0;
    bottom: 0
  }

  .head-com-mascote {
    flex-direction: column;
    align-items: stretch;
    gap: .6rem
  }

  .auditor {
    width: 100%;
    height: 170px;
    order: -1
  }

  .controle-grid,
  .contato-grid {
    grid-template-columns: minmax(0, 1fr);
    gap: 2rem
  }
}

@media (max-width:640px) {
  .wrap {
    padding-inline: 1rem
  }

  .grade-4,
  .grade-3,
  .grade-2,
  .etapas,
  .campos {
    grid-template-columns: minmax(0, 1fr)
  }

  .card {
    padding: 1.15rem
  }

  .perm {
    padding: 1rem
  }

  .perm-linha {
    grid-template-columns: minmax(0, 1fr)
  }

  .seg {
    grid-template-columns: repeat(2, minmax(0, 1fr))
  }

  .palco {
    height: 360px
  }

  .bal-ag {
    width: 168px;
    min-height: 58px;
    font-size: .72rem
  }

  /* no celular o cartao vai para baixo da cena, sem cobrir os agentes */
  .toast-aprov[data-toast] {
    position: relative;
    left: auto;
    top: auto;
    width: 100%;
    margin-top: .4rem;
    font-size: .8rem;
    animation: none
  }

  .conversa {
    height: 300px
  }

  .form-contato {
    padding: 1.1rem
  }

  .form-contato .btn {
    align-self: stretch
  }

  .rodape-grid {
    grid-template-columns: minmax(0, 1fr)
  }

  .rodape-legal {
    align-items: flex-start
  }

  .artigo {
    padding: 1.3rem
  }
}

/* ===== acessibilidade: widget e modos ===== */
.acc-group {
  position: relative;
  display: inline-flex;
  align-items: center
}

.acc-btn {
  display: inline-grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: 9px;
  background: var(--surface-2);
  color: var(--ink);
  cursor: pointer;
  transition: background .15s
}

.acc-btn:hover,
.acc-btn:focus-visible {
  background: color-mix(in srgb, var(--accent) 18%, var(--surface-2))
}

.acc-btn.is-active {
  background: var(--ink);
  color: var(--bg)
}

.acc-dropdown {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  display: none;
  gap: .3rem;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 12px;
  box-shadow: 0 14px 34px rgba(28, 20, 3, .16);
  padding: .35rem;
  z-index: 60
}

.acc-group.is-open .acc-dropdown {
  display: flex
}

/* alto contraste: tinta preta sobre branco, bordas solidas, sem brilhos */
body.high-contrast {
  --bg: #FFFFFF;
  --surface: #FFFFFF;
  --surface-2: #F0F0F0;
  --ink: #000000;
  --ink-soft: #000000;
  --muted: #222222;
  --line: #000000;
  --accent: #6B4A00;
  --gold-legivel: #6B4A00;
  --tom: #FFFFFF;
  --tom-divisor: #000000
}

body.high-contrast .hero .fx,
body.high-contrast .mascotes-canvas {
  display: none
}

body.high-contrast .mascote-reserva {
  visibility: visible
}

body.high-contrast a {
  text-decoration: underline
}

body.high-contrast .escura {
  background: #000
}

body.high-contrast .hero h1 .hl {
  background: none;
  color: #000
}

/* sem efeitos: mata animacoes e transicoes de tudo */
body.no-fx *,
body.no-fx *::before,
body.no-fx *::after {
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important
}

/* ===== WhatsApp do atendimento, trazido do NFS-e Easy ===== */
.whats {
  position: fixed;
  right: 20px;
  bottom: 20px;
  /* com o voltar ao topo visivel, desliza para a esquerda e fica ao lado dele */
  z-index: 85;
  width: 54px;
  height: 54px;
  border-radius: 50%;
  display: inline-grid;
  place-items: center;
  background: #25D366;
  color: #fff;
  box-shadow: 0 10px 22px rgba(37, 211, 102, .42);
  transition: right .25s ease, background .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease
}

.com-topo .whats {
  right: 76px
}

/* hover e foco: fica branco com o icone verde */
.whats:hover,
.whats:focus-visible {
  background: #fff;
  color: #25D366;
  transform: translateY(-2px);
  box-shadow: 0 16px 32px rgba(28, 20, 3, .2)
}

.whats-ico {
  position: relative;
  z-index: 1;
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px
}

.whats-ico svg {
  width: 28px;
  height: 28px
}

.whats-pulso {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  pointer-events: none;
  animation: whats-pulso 2.4s ease-out infinite
}

@keyframes whats-pulso {
  0% {
    box-shadow: 0 0 0 0 rgba(37, 211, 102, .45)
  }

  70%,
  100% {
    box-shadow: 0 0 0 8px rgba(37, 211, 102, 0)
  }
}

.whats:hover .whats-pulso,
.whats:focus-visible .whats-pulso {
  animation: none
}

/* dica que desliza da direita */
.whats-dica {
  position: absolute;
  right: calc(100% + 12px);
  top: 50%;
  transform: translateY(-50%) translateX(8px) scale(.96);
  background: var(--preto);
  color: var(--offwhite);
  white-space: nowrap;
  padding: 7px 12px;
  border-radius: 9px;
  font-size: .8rem;
  font-weight: 600;
  line-height: 1;
  opacity: 0;
  pointer-events: none;
  box-shadow: 0 8px 20px rgba(28, 20, 3, .28);
  transition: opacity .2s ease, transform .25s cubic-bezier(.22, 1, .36, 1)
}

.whats-dica::after {
  content: "";
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  border: 6px solid transparent;
  border-left-color: var(--preto)
}

.whats:hover .whats-dica,
.whats:focus-visible .whats-dica {
  opacity: 1;
  transform: translateY(-50%) translateX(0) scale(1)
}

@media (max-width:640px) {
  .whats {
    right: 16px;
    bottom: 16px;
    width: 52px;
    height: 52px
  }
}

@media (prefers-reduced-motion:reduce) {
  .whats-pulso {
    animation: none
  }
}

/* ===== voltar ao topo no canto direito, com o WhatsApp ao lado, e aviso de privacidade ===== */
.scroll-topo {
  position: fixed;
  right: 20px;
  bottom: 25px;
  z-index: 70;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 12px;
  background: var(--ink);
  color: var(--bg);
  display: grid;
  place-items: center;
  cursor: pointer;
  opacity: 0;
  transform: translateY(10px);
  pointer-events: none;
  transition: opacity .2s, transform .2s;
  box-shadow: 0 10px 26px rgba(28, 20, 3, .28)
}

.scroll-topo.on {
  opacity: 1;
  transform: none;
  pointer-events: auto
}

.scroll-topo:hover {
  background: var(--gold-700);
  color: #fff
}

.consent-bar {
  position: fixed;
  left: 1rem;
  right: 1rem;
  bottom: 1rem;
  z-index: 80;
  max-width: 46rem;
  margin-inline: auto;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: 16px;
  padding: 1rem 1.2rem;
  box-shadow: 0 20px 50px rgba(28, 20, 3, .28)
}

.consent-bar p {
  flex: 1 1 240px;
  margin: 0;
  font-size: .9rem;
  line-height: 1.5;
  color: var(--ink-soft)
}

.consent-bar a {
  color: var(--gold-legivel);
  font-weight: 600;
  text-decoration: underline
}

.consent-bar .btn {
  padding: .55rem 1.2rem;
  font-size: .92rem
}

@media (max-width:640px) {
  .scroll-topo {
    right: 16px;
    bottom: 20px
  }

  .com-topo .whats {
    right: 70px
  }
}

@media (max-width:520px) {
  .consent-bar {
    bottom: 0;
    left: 0;
    right: 0;
    border-radius: 16px 16px 0 0
  }
}
