/* Backlab UAU Experience — Construção Civil / ERP UAU: operação complexa → sistema organizado.
   O HTML/CSS descreve o estado ORGANIZADO (sem JS, reduced motion, editor, fluxo). A composição
   pinada só existe quando o JS marca data-bl-uau-enhanced (desktop ≥1024px, conteúdo que caiba
   na altura útil real e motion); o estado fragmentado é definido pelo JS e converge para este CSS. Nada do conteúdo
   começa oculto. */
.bl-uau {
  --bl-uau-ink: var(--bl-text-primary, #f5f8f7);
  --bl-uau-muted: var(--bl-text-secondary, #a8b4b1);
  --bl-uau-faint: var(--bl-text-muted, #71807d);
  --bl-uau-brand: var(--bl-color-brand, #3dbfb0);
  --bl-uau-surface: var(--bl-surface-1, #0d1312);
  --bl-uau-line: rgba(245, 248, 247, .12);
  --bl-uau-track: 220svh;
  position: relative;
  z-index: 0;
  margin: 0;
  color: var(--bl-uau-ink);
  background-color: var(--bl-uau-surface);
  border-block-start: 1px solid rgba(245, 248, 247, .06);
  isolation: isolate;
  overflow: clip;
}

.bl-uau,
.bl-uau *,
.bl-uau *::before,
.bl-uau *::after {
  box-sizing: border-box;
}

/* Grade técnica discreta, concentrada no lado do sistema. */
.bl-uau::before {
  position: absolute;
  inset: 0;
  z-index: -1;
  content: '';
  background-image:
    linear-gradient(rgba(245, 248, 247, .035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(245, 248, 247, .035) 1px, transparent 1px);
  background-size: 4.5rem 4.5rem;
  background-position: 50% 0;
  -webkit-mask-image: radial-gradient(ellipse 62% 78% at 74% 52%, #000 12%, transparent 74%);
  mask-image: radial-gradient(ellipse 62% 78% at 74% 52%, #000 12%, transparent 74%);
  pointer-events: none;
}

.bl-uau__stage {
  padding-block: clamp(5.5rem, 12svh, 8.5rem) clamp(5rem, 11svh, 8rem);
}

/* ---- Fluxo (padrão): eyebrow → headline → texto → sistema → lista → CTA ------------------ */
.bl-uau__layout {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}

/* Abaixo de 1024px o bloco de texto dissolve-se no fluxo para o sistema entrar antes da lista. */
.bl-uau__content {
  display: contents;
}

.bl-uau__eyebrow {
  display: flex;
  align-items: center;
  gap: .75rem;
  margin: 0 0 clamp(1.25rem, 2.6svh, 1.75rem);
  color: var(--bl-uau-brand);
  font: 600 clamp(.67rem, .64rem + .12vw, .78rem)/1.3 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: .13em;
  text-transform: uppercase;
}

.bl-uau__eyebrow::before {
  inline-size: clamp(1.75rem, 3vw, 3rem);
  block-size: 1px;
  content: '';
  background: linear-gradient(90deg, var(--bl-uau-brand), rgba(61, 191, 176, .15));
}

.bl-uau__headline {
  margin: 0;
  max-inline-size: 19ch;
  color: var(--bl-uau-ink);
  font: 600 clamp(2.05rem, .9rem + 2.2vw, 3.1rem)/1.03 var(--bl-font-display, system-ui, sans-serif);
  letter-spacing: -.048em;
  text-wrap: balance;
}

.bl-uau__lead {
  margin: clamp(1.1rem, 2.4svh, 1.5rem) 0 0;
  max-inline-size: 44ch;
  color: var(--bl-uau-muted);
  font: 400 clamp(1rem, .94rem + .3vw, 1.15rem)/1.55 var(--bl-font-ui, system-ui, sans-serif);
  text-wrap: pretty;
}

.bl-uau__note {
  margin: .9rem 0 0;
  max-inline-size: 44ch;
  color: var(--bl-uau-faint);
  font: 400 clamp(.86rem, .82rem + .18vw, .96rem)/1.55 var(--bl-font-ui, system-ui, sans-serif);
  text-wrap: pretty;
}

/* Lista editorial das frentes: número, nome e marca de estado; sem cards. */
.bl-uau__capabilities {
  display: grid;
  order: 6;
  inline-size: 100%;
  max-inline-size: 30rem;
  margin: clamp(1.75rem, 4svh, 2.25rem) 0 0;
  padding: 0;
  border-block-start: 1px solid var(--bl-uau-line);
  list-style: none;
}

.bl-uau__capability {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr) auto;
  align-items: center;
  column-gap: .75rem;
  margin: 0;
  padding-block: clamp(.55rem, 1.2svh, .72rem);
  border-block-end: 1px solid rgba(245, 248, 247, .07);
}

.bl-uau__capability-index {
  color: var(--bl-uau-brand);
  font: 600 .68rem/1 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: .14em;
}

.bl-uau__capability-name {
  color: var(--bl-uau-ink);
  font: 500 clamp(.98rem, .94rem + .2vw, 1.1rem)/1.3 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: -.01em;
}

.bl-uau__capability-mark {
  inline-size: .45rem;
  block-size: .45rem;
  border: 1px solid var(--bl-uau-brand);
  background: var(--bl-uau-brand);
}

.bl-uau__actions {
  order: 7;
  margin-block-start: clamp(1.5rem, 3.5svh, 2.25rem);
}

.bl-uau .bl-uau__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  min-block-size: 3.25rem;
  padding: 0 1.5rem;
  border-radius: var(--bl-radius-sm, .375rem);
  color: var(--bl-bg-deep, #050707);
  background: var(--bl-uau-brand);
  font: 600 .95rem/1.2 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: -.005em;
  text-decoration: none;
  transition: transform 200ms var(--bl-ease-out, ease-out), box-shadow 200ms var(--bl-ease-out, ease-out);
}

.bl-uau__cta svg {
  flex: 0 0 auto;
  transition: transform 200ms var(--bl-ease-out, ease-out);
}

.bl-uau .bl-uau__cta:focus-visible {
  outline: 2px solid var(--bl-uau-brand);
  outline-offset: 4px;
}

@media (hover: hover) and (pointer: fine) {
  .bl-uau .bl-uau__cta:hover {
    color: var(--bl-bg-deep, #050707);
    transform: translateY(-1px);
    box-shadow: 0 10px 28px rgba(61, 191, 176, .22);
  }

  .bl-uau__cta:hover svg {
    transform: translateX(3px);
  }
}

/* ---- Sistema visual -------------------------------------------------------------------- */
.bl-uau__visual {
  display: flex;
  order: 5;
  flex-direction: column;
  align-items: center;
  align-self: center;
  gap: clamp(1.25rem, 3svh, 1.75rem);
  inline-size: 100%;
  margin-block: clamp(3rem, 8svh, 4.5rem) clamp(1.5rem, 4svh, 2.5rem);
}

.bl-uau__system {
  inline-size: min(100%, 24rem);
}

.bl-uau__canvas {
  position: relative;
  inline-size: 100%;
  aspect-ratio: 1;
  container-type: inline-size;
}

.bl-uau__svg {
  display: block;
  inline-size: 100%;
  block-size: 100%;
  color: var(--bl-uau-brand);
  overflow: visible;
}

.bl-uau__plan rect,
.bl-uau__plan path,
.bl-uau__axes,
.bl-uau__stray,
.bl-uau__bus,
.bl-uau__ticks,
.bl-uau__route,
.bl-uau__junctions,
.bl-uau__frame,
.bl-uau__inset,
.bl-uau__corner,
.bl-uau__dimension,
.bl-uau__ruler {
  fill: none;
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}

.bl-uau__plan--outer rect { stroke: rgba(245, 248, 247, .11); stroke-dasharray: 3 7; stroke-width: .75; }
.bl-uau__plan--outer path { stroke: rgba(245, 248, 247, .34); }
.bl-uau__plan--inner rect { stroke: rgba(245, 248, 247, .17); }
.bl-uau__axes { stroke: rgba(245, 248, 247, .22); stroke-dasharray: 1 5; }
.bl-uau__stray { stroke: rgba(245, 248, 247, .4); stroke-dasharray: 5 5; opacity: 0; } /* só existe na desordem (JS) */
.bl-uau__bus { stroke: rgba(245, 248, 247, .38); }
.bl-uau__ticks { stroke: rgba(245, 248, 247, .42); }
.bl-uau__route { stroke: currentColor; opacity: .85; }
.bl-uau__junctions { stroke: currentColor; opacity: .85; }
.bl-uau__frame { stroke: currentColor; opacity: .9; }
.bl-uau__inset { stroke: rgba(245, 248, 247, .14); stroke-dasharray: 2 6; }
.bl-uau__corner { stroke: currentColor; opacity: .9; }
.bl-uau__dimension { stroke: rgba(245, 248, 247, .3); }
.bl-uau__ruler { stroke: rgba(245, 248, 247, .3); }
.bl-uau__datum { fill: currentColor; opacity: .9; }

/* Módulos: o contorno externo é posicionado; o corpo recebe as transformações do JS. */
.bl-uau__node {
  position: absolute;
  transform: translate(-50%, -50%);
}

.bl-uau__node-body {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .7rem;
  border: 1px solid rgba(61, 191, 176, .38);
  background: var(--bl-uau-surface);
  color: var(--bl-uau-ink);
  font: 600 .62rem/1 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: .12em;
  text-transform: uppercase;
  white-space: nowrap;
}

.bl-uau__node-index {
  color: var(--bl-uau-brand);
}

/* Abaixo de 1024px o módulo mostra só o número: a lista textual ao lado carrega o nome. */
.bl-uau__node-name {
  display: none;
}

.bl-uau__core {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
  transform: translate(-50%, -50%);
  text-align: center;
}

.bl-uau__core-label {
  color: var(--bl-uau-faint);
  font: 600 .56rem/1 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: .22em;
}

.bl-uau__core-name {
  color: var(--bl-uau-ink);
  font: 600 clamp(1.35rem, 1.1rem + 1.2vw, 2.2rem)/1 var(--bl-font-display, system-ui, sans-serif);
  font-size: clamp(1.35rem, 6cqi, 2.3rem);
  letter-spacing: .14em;
  text-indent: .14em; /* compensa o tracking final para centrar opticamente */
}

.bl-uau__caption {
  margin: 0;
  max-inline-size: 30ch;
  color: var(--bl-uau-muted);
  font: 500 clamp(.95rem, .9rem + .3vw, 1.15rem)/1.4 var(--bl-font-ui, system-ui, sans-serif);
  letter-spacing: -.01em;
  text-align: center;
  text-wrap: balance;
}

/* ---- Tablet em fluxo: mesma ordem, sistema maior ------------------------------------------ */
@media (min-width: 768px) {
  .bl-uau__headline {
    max-inline-size: 16ch;
  }

  .bl-uau__system {
    inline-size: min(100%, 28rem);
  }
}

/* ---- Desktop em fluxo (reduced motion, sem JS, altura baixa): duas colunas ----------- */
@media (min-width: 1024px) {
  .bl-uau__layout {
    display: grid;
    grid-template-columns: minmax(0, 10fr) minmax(0, 11fr);
    grid-template-areas: 'content visual';
    align-items: center;
    column-gap: clamp(2.5rem, 5vw, 5rem);
  }

  .bl-uau__content {
    display: flex;
    grid-area: content;
    flex-direction: column;
    align-items: flex-start;
  }

  .bl-uau__headline {
    max-inline-size: 19ch;
  }

  .bl-uau__visual {
    grid-area: visual;
    margin-block: 0;
  }

  .bl-uau__system {
    inline-size: min(100%, 42rem);
  }

  .bl-uau__node-name {
    display: inline;
  }
}

/* ---- Composição pinada (JS + motion + desktop com altura suficiente) ----------------- */
.bl-uau[data-bl-uau-enhanced] .bl-uau__track {
  min-block-size: var(--bl-uau-track);
}

.bl-uau[data-bl-uau-enhanced] .bl-uau__stage {
  position: sticky;
  inset-block-start: 0;
  display: grid;
  align-items: center;
  block-size: 100svh;
  padding-block: calc(var(--bl-uau-admin-height, 0px) + var(--bl-uau-header-height, var(--bl-header-compact-height, 4.5rem)) + .5rem) clamp(1.5rem, 4svh, 2.5rem);
  overflow: visible;
}

.bl-uau[data-bl-uau-enhanced] .bl-uau__system {
  inline-size: min(100%, calc(var(--bl-uau-available-height, 100svh) - 5rem));
}

.bl-uau[data-bl-uau-enhanced] .bl-uau__node-body,
.bl-uau[data-bl-uau-enhanced] .bl-uau__core {
  will-change: transform, opacity;
}

/* Notebook intermediário: preserva pin/animação, compactando componentes individualmente. */
.bl-uau[data-bl-uau-mode="compact"] .bl-uau__eyebrow {
  margin-block-end: .85rem;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__headline {
  font-size: clamp(2rem, 1.25rem + 1.55vw, 2.55rem);
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__lead {
  margin-block-start: .75rem;
  font-size: 1rem;
  line-height: 1.45;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__note {
  margin-block-start: .5rem;
  font-size: .84rem;
  line-height: 1.42;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__capabilities {
  margin-block-start: 1rem;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__capability {
  padding-block: .42rem;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__capability-name {
  font-size: .96rem;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__actions {
  margin-block-start: 1rem;
}

.bl-uau[data-bl-uau-mode="compact"] .bl-uau__cta {
  min-block-size: 3rem;
}

.bl-uau[data-bl-uau-enhanced][data-bl-uau-mode="compact"] .bl-uau__system {
  inline-size: min(100%, 30rem, calc(var(--bl-uau-available-height, 100svh) - 5rem));
}

/* ---- Mobile ----------------------------------------------------------------------------- */
@media (max-width: 767px) {
  .bl-uau__stage {
    padding-block: clamp(4.5rem, 14svh, 6rem) clamp(4.5rem, 12svh, 6rem);
  }

  .bl-uau__headline {
    max-inline-size: 14ch;
    font-size: clamp(2.05rem, 9.6vw, 2.9rem);
  }

  .bl-uau__lead {
    max-inline-size: 32ch;
  }

  .bl-uau__note {
    max-inline-size: 36ch;
  }

  .bl-uau__capabilities {
    max-inline-size: none;
  }

  .bl-uau .bl-uau__cta {
    inline-size: min(100%, 22rem);
  }

  .bl-uau__node-body {
    padding: .42rem .55rem;
    font-size: .6rem;
  }
}

@media (max-width: 374px) {
  .bl-uau__headline {
    font-size: clamp(1.9rem, 9.2vw, 2.4rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  .bl-uau *,
  .bl-uau *::before,
  .bl-uau *::after {
    transition-duration: .01ms;
  }
}

@media (forced-colors: active) {
  .bl-uau,
  .bl-uau__capabilities,
  .bl-uau__capability,
  .bl-uau__node-body {
    border-color: CanvasText;
  }

  .bl-uau__eyebrow::before,
  .bl-uau__capability-mark {
    background: CanvasText;
  }
}
