/* O que Fazemos */
.fazemos {
  --fz-mint: #a6d8ce;
  --fz-ink: #1a2e3b;
  --fz-gray: #555e6d;
  --fz-muted: #888fa0;
  --fz-paper: #f4f6f8;
  color: var(--fz-ink);
  -webkit-font-smoothing: antialiased;
}

.fz-eyebrow {
  margin: 0 0 12px;
  color: var(--green);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.fz-title {
  margin: 0 0 18px;
  color: var(--navy);
  font-size: clamp(1.7rem, 3.2vw, 2.3rem);
  font-weight: 800;
  line-height: 1.15;
  letter-spacing: -.03em;
  text-wrap: balance;
}
.fz-copy p {
  margin: 0;
  color: var(--fz-gray);
  font-size: 16px;
  line-height: 1.75;
}
.fz-copy p + p { margin-top: 14px; }

/* Seção 1 */
.fz-intro { background: var(--fz-paper); }
.fz-intro .container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: center;
  padding-top: 80px;
  padding-bottom: 80px;
}
.fz-intro .fz-title { color: var(--green); }

.fz-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: 28px;
  padding: 14px 22px;
  border-radius: 8px;
  background: var(--green);
  color: #fff;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  transition: background .25s ease;
}
.fz-btn__arrow {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform .25s ease;
}
.fz-btn:hover,
.fz-btn:focus-visible { background: var(--green-light); color: #fff; outline: none; }
.fz-btn:hover .fz-btn__arrow,
.fz-btn:focus-visible .fz-btn__arrow { transform: translateX(4px); }

.fz-photo {
  position: relative;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(10, 22, 40, .12);
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #dfe7ec, #c7d4dc);
}
.fz-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Seção 2 */
.fz-how { background: #fff; }
.fz-how .container {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  gap: 56px;
  align-items: center;
  padding-top: 88px;
  padding-bottom: 88px;
}
.fz-how .fz-copy { max-width: 52ch; }
.fz-hint { margin: 14px 0 0; color: var(--fz-muted); font-size: 13px; }

/* Seção 3 */
.fz-thor { background: var(--fz-paper); }
.fz-thor .container { padding-top: 88px; padding-bottom: 88px; text-align: center; }
.fz-thor .fz-copy { max-width: 64ch; margin-inline: auto; }

.journey {
  list-style: none;
  margin: 56px 0 0;
  padding: 0;
  display: flex;
  align-items: flex-start;
  text-align: center;
}
.j-step {
  flex: 1 1 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  outline: none;
  cursor: default;
}
.j-hex { width: 104px; height: 104px; overflow: visible; }
.j-shape {
  fill: var(--c);
  fill-opacity: 0;
  stroke: var(--c);
  stroke-width: 2.2;
  stroke-linejoin: round;
  transition: fill-opacity .4s ease, transform .4s ease;
  transform-origin: 50px 50px;
}
.j-icon {
  fill: none;
  stroke: var(--c);
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke .4s ease;
}
.j-icon .solid { fill: var(--c); transition: fill .4s ease; }
.j-step:hover .j-shape,
.j-step:focus-visible .j-shape { fill-opacity: 1; transform: scale(1.06); }
.j-step:hover .j-icon,
.j-step:focus-visible .j-icon { stroke: #fff; }
.j-step:hover .j-icon .solid,
.j-step:focus-visible .j-icon .solid { fill: #fff; }
.j-step:focus-visible .j-shape { stroke-width: 3.5; }
.j-num { display: block; color: var(--c); font-size: 12px; font-weight: 800; letter-spacing: .12em; }
.j-text h3 { margin: 4px 0 8px; color: var(--navy); font-size: 16px; font-weight: 700; }
.j-text p { margin: 0; color: var(--fz-gray); font-size: 13.5px; line-height: 1.6; }
.j-arrow-item { flex: 0 0 48px; display: flex; justify-content: center; padding-top: 42px; }
.j-arrow svg { width: 48px; height: 20px; overflow: visible; }
.j-line,
.j-head {
  fill: none;
  stroke: var(--green-light);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* Etapas entram em sequência e as setas se desenham */
.journey.is-animating .j-step {
  opacity: 0;
  transform: translateY(14px);
  animation: j-in .6s cubic-bezier(.22, 1, .36, 1) calc(var(--i) * .45s) forwards;
}
.journey.is-animating .j-line {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation:
    j-draw .45s ease calc(var(--i) * .45s + .35s) forwards,
    j-flow 1.6s linear calc(var(--i) * .45s + 2.6s) infinite;
}
.journey.is-animating .j-head {
  opacity: 0;
  animation: j-fade .2s ease calc(var(--i) * .45s + .75s) forwards;
}
@keyframes j-in { to { opacity: 1; transform: none; } }
@keyframes j-draw { to { stroke-dashoffset: 0; } }
@keyframes j-fade { to { opacity: 1; } }
@keyframes j-flow {
  from { stroke-dasharray: .14 .06; stroke-dashoffset: .2; }
  to   { stroke-dasharray: .14 .06; stroke-dashoffset: 0; }
}

/* Tríade (Estratégico · Tático · Operacional) */
.triad {
  --triad-est: #0a1628;
  --triad-tat: #0d6e5c;
  --triad-op: #14a088;
  width: min(100%, 460px);
  margin: 0 auto;
}
.triad-svg { display: block; width: 100%; height: auto; overflow: visible; }
.triad-level { cursor: pointer; outline: none; }
.triad-hex {
  fill: var(--c);
  fill-opacity: 0;
  stroke: var(--c);
  stroke-width: 2;
  stroke-linejoin: round;
  transition: fill-opacity .45s ease, stroke-width .3s ease;
}
.triad-inner,
.triad-label {
  font-family: Inter, Arial, Helvetica, sans-serif;
  font-weight: 700;
  letter-spacing: .12em;
  text-anchor: middle;
  dominant-baseline: central;
  pointer-events: none;
}
.triad-label { fill: var(--c); font-size: 13px; transition: opacity .3s ease; }
.triad-inner { fill: #fff; font-size: 12px; opacity: 0; transition: opacity .35s ease .05s; }
.triad-dot { fill: var(--triad-op); transform-origin: center; transform-box: fill-box; }

.triad-level:hover .triad-hex,
.triad-level:focus-visible .triad-hex,
.triad-level.is-active .triad-hex { fill-opacity: .94; stroke-width: 2.5; }
.triad-level:hover .triad-inner,
.triad-level:focus-visible .triad-inner,
.triad-level.is-active .triad-inner { opacity: 1; }
.triad-level:focus-visible .triad-hex { stroke-width: 3.5; }

/* Desenha os contornos ao entrar na tela; depois os hexágonos "respiram" */
.triad.is-animating .triad-hex {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: triad-draw 1.4s cubic-bezier(.65, 0, .35, 1) var(--d) forwards;
}
.triad.is-animating .triad-label {
  opacity: 0;
  animation: triad-fade .6s ease calc(var(--d) + 1s) forwards;
}
.triad.is-animating .triad-move { animation: triad-breathe 5s ease-in-out 2.2s infinite; }
.triad.is-animating .triad-dot { animation: triad-pulse 2.6s ease-in-out 1.6s infinite; }

@keyframes triad-draw { to { stroke-dashoffset: 0; } }
@keyframes triad-fade { to { opacity: 1; } }
@keyframes triad-breathe {
  0%, 100% { transform: translate(0, 0); }
  50%      { transform: translate(var(--mx), var(--my)); }
}
@keyframes triad-pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%      { transform: scale(1.9); opacity: .35; }
}

@media (prefers-reduced-motion: reduce) {
  .journey.is-animating .j-step,
  .journey.is-animating .j-line,
  .journey.is-animating .j-head { animation: none; opacity: 1; transform: none; stroke-dashoffset: 0; }
  .triad.is-animating .triad-hex,
  .triad.is-animating .triad-label,
  .triad.is-animating .triad-move,
  .triad.is-animating .triad-dot { animation: none; stroke-dashoffset: 0; opacity: 1; }
}

@media (max-width: 820px) {
  .fz-intro .container { grid-template-columns: 1fr; gap: 36px; padding-top: 56px; padding-bottom: 56px; }
  .fz-how .container { grid-template-columns: 1fr; gap: 36px; padding-top: 60px; padding-bottom: 60px; }
  .fz-thor .container { padding-top: 60px; padding-bottom: 60px; }
  .journey { flex-direction: column; align-items: stretch; text-align: left; margin-top: 40px; }
  .j-step { flex: none; flex-direction: row; align-items: center; gap: 18px; }
  .j-hex { width: 76px; height: 76px; flex: 0 0 auto; }
  .j-arrow-item { flex: none; justify-content: flex-start; padding: 4px 0 4px 20px; }
  .j-arrow svg { transform: rotate(90deg); width: 36px; }
}

@media (max-width: 560px) {
  .triad-label { font-size: 15px; }
  .triad-inner { font-size: 14px; }
}
