/* =============================================================================
   VAIO Pro BK AI PC · Landing Page · landing.css
   Depende de: css/globals.css + css/components.css
   Escopo: composições específicas da LP (header, hero, seções, footer, placeholders).
   ============================================================================= */

/* ---------- base page -------------------------------------------------------*/
html {
  /* scroll-behavior nativo desligado: Lenis cuida do smooth scroll.
     Mantemos scroll-padding-top para anchors. */
  scroll-padding-top: 5rem;
}
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: clip; }
.lenis.lenis-smooth iframe { pointer-events: none; }
html { overflow-x: hidden; } /* Safari iOS: body overflow-x:hidden vaza sem isto */
body { margin: 0; overflow-x: hidden; }

/* Marcas registradas (®, ™) sempre compactas e sobrescritas onde necessário */
sup {
  font-size: 0.55em;
  vertical-align: super;
  line-height: 0;
}

/* Trava scroll enquanto o preloader está visível */
html:has(.preloader:not(.is-hidden)),
html:has(.preloader:not(.is-hidden)) body { overflow: hidden; }

/* ===========================================================================
   PRELOADER · splash claro: logo VAIO preta + gotas Liquid Glass flutuando
   =========================================================================== */
.preloader {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: grid;
  place-items: center;
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(
      120% 90% at 50% 50%,
      #ffffff 0%,
      #fafbff 55%,
      #eff2fa 100%
    );
  opacity: 1;
  transition:
    opacity 720ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 720ms;
}
.preloader.is-hidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

/* Stage central · logo + progress */
.preloader__stage {
  position: relative;
  z-index: 3;
  display: grid;
  place-items: center;
  gap: 1.75rem;
}

.preloader__logo {
  display: block;
  width: clamp(8rem, 18vmin, 12rem);
  height: auto;
  /* brightness(0) força a logo totalmente preta independente da cor original */
  filter: brightness(0);
  animation: preloaderLogoIn 1200ms cubic-bezier(0.22, 1, 0.36, 1) 120ms both;
}

.preloader__progress {
  position: relative;
  width: clamp(8rem, 18vmin, 12rem);
  height: 2px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(11, 17, 62, 0.08);
  animation: preloaderFadeIn 500ms ease 700ms both;
}
.preloader__progress-bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 40%;
  border-radius: inherit;
  background: linear-gradient(90deg,
    transparent 0%,
    color-mix(in oklch, var(--vaio-gold) 50%, transparent) 25%,
    color-mix(in oklch, var(--vaio-gold) 95%, white) 50%,
    color-mix(in oklch, var(--vaio-gold) 50%, transparent) 75%,
    transparent 100%);
  box-shadow: 0 0 10px color-mix(in oklch, var(--vaio-gold) 45%, transparent);
  animation: preloaderBar 1.6s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}

@keyframes preloaderLogoIn {
  from {
    opacity: 0;
    transform: scale(0.88);
    filter: brightness(0) blur(10px);
  }
  to {
    opacity: 1;
    transform: scale(1);
    filter: brightness(0) blur(0);
  }
}

@keyframes preloaderBar {
  0%   { left: -45%; width: 40%; }
  50%  { width: 55%; }
  100% { left: 105%; width: 30%; }
}

@keyframes preloaderFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Exit — logo dá leve zoom + fade */
.preloader.is-hidden .preloader__logo {
  transform: scale(1.06);
  opacity: 0.4;
  transition: transform 720ms ease, opacity 520ms ease;
}

@media (prefers-reduced-motion: reduce) {
  .preloader__logo,
  .preloader__progress-bar,
  .preloader__progress { animation: none; opacity: 1; transform: none; }
}

.skip-link {
  position: fixed;
  top: -3rem;
  left: var(--space-4);
  z-index: var(--z-top);
  padding: var(--space-2) var(--space-4);
  background: var(--bg-brand);
  color: var(--text-on-brand);
  border-radius: var(--radius-sm);
  font-weight: var(--fw-semibold);
  transition: top var(--duration-fast) var(--ease-out);
}
.skip-link:focus-visible { top: var(--space-4); }

/* Container utility (max-width + center) */
.section > :where(.hero__stack, .tagline-band__inner,
  .section-heading, .video__frame, .narrative__grid,
  .deep-dive__grid,
  .battery__inner, .security__grid, .studio__grid, .studio__footnote,
  .product-views__grid, .product-views__footer, .specs__wrap, .cta__grid,
  .tabs) {
  max-width: var(--container-2xl);
  margin-inline: auto;
}

/* ===========================================================================
   1. HEADER · pill flutuante centrado com dois estados
   =========================================================================== */
.site-header {
  position: fixed;
  inset-block-start: var(--space-4);
  inset-inline: 0;
  z-index: var(--z-sticky);
  padding-inline: var(--gutter);
  pointer-events: none; /* só a pill interage */
}
.site-header__inner {
  pointer-events: auto;
  max-width: var(--container-lg);
  margin-inline: auto;
  padding: var(--space-2) var(--space-3) var(--space-2) var(--space-5);
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: var(--space-4);
  background-color: rgba(0, 0, 0, 0.72);
  backdrop-filter: blur(16px) saturate(160%);
  -webkit-backdrop-filter: blur(16px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--radius-full);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.08) inset,
    var(--shadow-lg);
  color: var(--neutral-0);
  transition:
    background-color var(--duration-normal) var(--ease-out),
    border-color var(--duration-normal) var(--ease-out),
    box-shadow var(--duration-normal) var(--ease-out),
    color var(--duration-normal) var(--ease-out);
}

/* Fallback: sem suporte a backdrop-filter, usa preto opaco */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header__inner {
    background-color: #000;
  }
}

/* Scrolled: pill branca com glass sutil sobre o conteúdo rolando atrás */
.site-header[data-scrolled="true"] .site-header__inner {
  background-color: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(16px) saturate(180%);
  -webkit-backdrop-filter: blur(16px) saturate(180%);
  border-color: rgba(255, 255, 255, 0.6);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.75) inset,
    0 1px 2px rgba(11, 17, 62, 0.05),
    var(--shadow-md);
  color: var(--vaio-kachi-iro);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .site-header[data-scrolled="true"] .site-header__inner {
    background-color: var(--neutral-0);
  }
}
.site-header__brand {
  display: inline-flex;
  align-items: baseline;
  gap: var(--space-2);
  text-decoration: none;
  color: var(--text-primary);
}
.site-header__logo {
  height: 1.5rem;
  width: auto;
  display: block;
  /* Logo entregue em branco — padrão sobre pill preta */
  filter: none;
  transition: filter var(--duration-normal) var(--ease-out);
}
/* Scrolled: inverte para preta sobre pill branca */
.site-header[data-scrolled="true"] .site-header__logo { filter: brightness(0); }
.site-nav { display: none; justify-self: center; }
.site-nav__list {
  display: flex;
  gap: var(--space-6);
  list-style: none;
  margin: 0;
  padding: 0;
}
.site-nav__link {
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: color-mix(in oklch, #fff 70%, transparent);
  text-decoration: none;
  padding-block: var(--space-2);
  position: relative;
  transition: color var(--duration-fast) var(--ease-out);
}
.site-nav__link:hover,
.site-nav__link:focus-visible { color: var(--neutral-0); }
.site-nav__link::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  inset-block-end: -2px;
  height: 2px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--duration-fast) var(--ease-out);
}
.site-nav__link:hover::after,
.site-nav__link[aria-current="true"]::after { transform: scaleX(1); }

/* Scrolled: links escuros (Kachi-Iro) com hover pleno */
.site-header[data-scrolled="true"] .site-nav__link { color: color-mix(in oklch, var(--vaio-kachi-iro) 60%, transparent); }
.site-header[data-scrolled="true"] .site-nav__link:hover,
.site-header[data-scrolled="true"] .site-nav__link:focus-visible,
.site-header[data-scrolled="true"] .site-nav__link[aria-current="true"] { color: var(--vaio-kachi-iro); }

.site-header__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  justify-self: end;
}
/* CTA "Comprar agora" · só desktop (escondido no mobile junto com o burger
   visível). Inverte no estado default (pill preta) e volta ao padrão no scrolled. */
.site-header__cta { display: none; }
@media (min-width: 1024px) {
  .site-header__cta { display: inline-flex; }
}
.site-header__cta {
  transition: background-color var(--duration-fast) var(--ease-out),
              color var(--duration-fast) var(--ease-out);
}
/* Inversão da pill no topo (scroll=0) — escopo restrito ao CTA do header,
   senão vaza pro CTA do drawer mobile (que é .btn--primary também). */
.site-header:not([data-scrolled="true"]) .site-header__cta {
  background-color: var(--neutral-0);
  color: #000;
  border: 1px solid #fff;
}
.site-header:not([data-scrolled="true"]) .site-header__cta:hover {
  background-color: var(--neutral-100);
}

.site-header__burger {
  width: 2.5rem;
  height: 2.5rem;
  background: transparent;
  border: 0;
  display: grid;
  place-content: center;
  gap: 6px;
  cursor: pointer;
  padding: 0.5rem;
  color: inherit;
  opacity: 0.9;
}
.site-header__burger:hover { opacity: 1; }
.site-header__burger span {
  display: block;
  width: 1.375rem;
  height: 2px;
  border-radius: 2px;
  background: currentColor;
  transition: transform var(--duration-fast) var(--ease-out), opacity var(--duration-fast);
}
.site-header__burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.site-header__burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.site-header__burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* === Mobile drawer · slide-in direita com backdrop blur + stagger nos links === */
.site-mobile-nav__backdrop {
  position: fixed;
  inset: 0;
  z-index: var(--z-overlay);
  background: rgba(4, 9, 30, 0.55);
  /* iOS Safari: backdrop-filter blur é caríssimo no scroll/animação — usamos
     overlay sólido semi-transparente (mais leve, sem lag de paint). */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity 260ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 260ms;
}
.site-mobile-nav__backdrop.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition:
    opacity 260ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0s;
}

.site-mobile-nav {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: var(--z-modal);
  width: min(82vw, 340px);
  padding: 1.5rem 1.5rem 1.75rem;
  background: var(--neutral-0);
  color: var(--vaio-kachi-iro);
  box-shadow: -24px 0 60px -16px rgba(11, 17, 62, 0.18);
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  transform: translateX(100%);
  visibility: hidden;
  /* iOS Safari: pointer-events só quando aberto, para não competir com o
     burger nem outros toques quando o drawer está fechado/oculto. */
  pointer-events: none;
  /* GPU hint: drawer só anima transform → fica em compositing layer dedicada. */
  will-change: transform;
  transition:
    transform 320ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 320ms;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.site-mobile-nav.is-open {
  transform: translateX(0);
  visibility: visible;
  pointer-events: auto;
  transition:
    transform 320ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0s;
}

/* Rim sutil gold no edge esquerdo do drawer */
.site-mobile-nav::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 1px;
  background: linear-gradient(
    180deg,
    transparent 0%,
    color-mix(in oklch, var(--vaio-gold) 80%, transparent) 50%,
    transparent 100%);
  pointer-events: none;
}

.site-mobile-nav__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.site-mobile-nav__eyebrow {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--vaio-gold);
}
.site-mobile-nav__close {
  width: 2.25rem;
  height: 2.25rem;
  display: grid;
  place-content: center;
  background: rgba(11, 17, 62, 0.04);
  border: 1px solid rgba(11, 17, 62, 0.08);
  border-radius: 50%;
  color: var(--vaio-kachi-iro);
  cursor: pointer;
  transition:
    background-color var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
.site-mobile-nav__close:hover {
  background: rgba(11, 17, 62, 0.09);
  transform: rotate(90deg);
}
.site-mobile-nav__close:focus-visible {
  outline: 2px solid var(--vaio-gold);
  outline-offset: 2px;
}

.site-mobile-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  flex: 1;
}
.site-mobile-nav__list li {
  opacity: 0;
  transform: translateX(28px);
  transition:
    opacity 320ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 460ms cubic-bezier(0.22, 1, 0.36, 1);
}
.site-mobile-nav.is-open .site-mobile-nav__list li {
  opacity: 1;
  transform: translateX(0);
}
.site-mobile-nav.is-open .site-mobile-nav__list li:nth-child(1) { transition-delay: 160ms; }
.site-mobile-nav.is-open .site-mobile-nav__list li:nth-child(2) { transition-delay: 220ms; }
.site-mobile-nav.is-open .site-mobile-nav__list li:nth-child(3) { transition-delay: 280ms; }
.site-mobile-nav.is-open .site-mobile-nav__list li:nth-child(4) { transition-delay: 340ms; }
.site-mobile-nav.is-open .site-mobile-nav__list li:nth-child(5) { transition-delay: 400ms; }

.site-mobile-nav__list a {
  position: relative;
  display: block;
  padding: 0.875rem 0.5rem;
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--vaio-kachi-iro);
  text-decoration: none;
  border-bottom: 1px solid rgba(11, 17, 62, 0.08);
  transition: color var(--duration-fast) var(--ease-out);
}
.site-mobile-nav__list a::after {
  content: "";
  position: absolute;
  right: 0.5rem;
  top: 50%;
  width: 6px;
  height: 6px;
  border-top: 1.5px solid currentColor;
  border-right: 1.5px solid currentColor;
  transform: translateY(-50%) rotate(45deg);
  opacity: 0.35;
  transition:
    opacity var(--duration-fast) var(--ease-out),
    transform var(--duration-fast) var(--ease-out);
}
.site-mobile-nav__list a:hover,
.site-mobile-nav__list a:focus-visible {
  color: var(--vaio-gold);
  outline: none;
}
.site-mobile-nav__list a:hover::after,
.site-mobile-nav__list a:focus-visible::after {
  opacity: 1;
  transform: translateY(-50%) translateX(3px) rotate(45deg);
}

/* CTA "Comprar agora" dentro do drawer */
.site-mobile-nav__cta {
  width: 100%;
  justify-content: center;
  background-color: var(--vaio-kachi-iro);
  color: var(--neutral-0);
  border: 1px solid var(--vaio-kachi-iro);
  opacity: 0;
  transform: translateY(10px);
  transition:
    opacity 360ms cubic-bezier(0.22, 1, 0.36, 1) 440ms,
    transform 460ms cubic-bezier(0.22, 1, 0.36, 1) 440ms,
    background-color var(--duration-fast) var(--ease-out);
}
.site-mobile-nav__cta:hover {
  background-color: var(--brand-600);
  border-color: var(--brand-600);
}
.site-mobile-nav.is-open .site-mobile-nav__cta {
  opacity: 1;
  transform: translateY(0);
}

.site-mobile-nav__foot {
  display: flex;
  justify-content: flex-start;
  opacity: 0;
  transform: translateY(8px);
  transition:
    opacity 360ms cubic-bezier(0.22, 1, 0.36, 1) 520ms,
    transform 460ms cubic-bezier(0.22, 1, 0.36, 1) 520ms;
}
/* A logo VAIO é entregue em branco — inverte para preta no drawer claro. */
.site-mobile-nav__foot img { filter: brightness(0); }
.site-mobile-nav.is-open .site-mobile-nav__foot {
  opacity: 1;
  transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
  .site-mobile-nav,
  .site-mobile-nav__backdrop,
  .site-mobile-nav__list li,
  .site-mobile-nav__foot {
    transition: opacity 120ms linear, visibility 0s !important;
    transform: none !important;
  }
  .site-mobile-nav.is-open { transform: none; }
}

@media (min-width: 1024px) {
  .site-nav { display: block; }
  .site-header__burger { display: none; }
}

/* ===========================================================================
   UTIL · SECTION HEADINGS
   =========================================================================== */
.section-heading { margin-bottom: var(--space-12); }
.section-heading--center { text-align: center; }
.section-heading--center p { margin-inline: auto; }
.section-heading__kicker {
  display: inline-block;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wider);
  text-transform: uppercase;
  color: currentColor;
  opacity: 0.65;
  margin-bottom: var(--space-3);
}
.section-heading__title {
  font-size: var(--fs-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: 0 0 var(--space-4);
  color: currentColor;
}
.section-heading__lead {
  font-size: var(--fs-lead);
  line-height: var(--lh-snug);
  color: currentColor;
  opacity: 0.85;
  max-width: 52ch;
}

/* ===========================================================================
   UTIL · MEDIA PLACEHOLDERS (caixas para imagens/vídeos)
   =========================================================================== */
.media-box {
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(
      45deg,
      color-mix(in oklch, var(--bg-subtle) 95%, transparent) 0 14px,
      color-mix(in oklch, var(--bg-muted) 60%, transparent) 14px 15px
    ),
    var(--bg-subtle);
  border: 1.5px dashed var(--border-strong);
  border-radius: var(--radius-lg);
  display: grid;
  place-items: center;
  overflow: hidden;
  isolation: isolate;
  color: var(--text-secondary);
}

/* Non-aspect-ratio wrapper? Use static placement. */
.hero__media > .media-box,
.media-box--standalone {
  position: relative;
  inset: auto;
  width: 100%;
  aspect-ratio: 4 / 3;
}

.media-box__label {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-6);
  font-size: var(--fs-sm);
  font-weight: var(--fw-medium);
  letter-spacing: var(--ls-wide);
  color: var(--text-secondary);
  background: color-mix(in oklch, var(--bg-app) 85%, transparent);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  max-width: 85%;
  text-align: center;
  z-index: 1;
}
.media-box__label svg {
  width: 2rem;
  height: 2rem;
  color: var(--bg-brand);
  opacity: 0.8;
}
.media-box__label span {
  text-transform: uppercase;
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wider);
}
.media-box__label small {
  font-family: var(--font-mono);
  font-size: var(--fs-2xs);
  color: var(--text-muted);
  letter-spacing: 0;
  text-transform: none;
}
.media-box__label--corner {
  position: absolute;
  inset-block-end: var(--space-3);
  inset-inline-end: var(--space-3);
  max-width: 16rem;
}

.media-box--product  { background-color: var(--bg-subtle); }
.media-box--lifestyle { background-color: var(--bg-muted); }
.media-box--video {
  background:
    radial-gradient(ellipse at center, color-mix(in oklch, var(--brand-800) 90%, transparent), var(--brand-900)),
    var(--brand-900);
  border-color: color-mix(in oklch, var(--vaio-gold) 50%, transparent);
  color: var(--neutral-200);
}
.media-box--video .media-box__label {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.2);
  color: var(--neutral-100);
}
.media-box--video .media-box__label svg { color: var(--vaio-gold); }
.media-box--screen {
  background: linear-gradient(135deg,
    color-mix(in oklch, var(--vaio-kachi-iro) 100%, black 5%),
    var(--vaio-kachi-iro));
  border-color: color-mix(in oklch, var(--vaio-azure) 50%, transparent);
  color: var(--neutral-100);
}
.media-box--screen .media-box__label {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.18);
  color: var(--neutral-100);
}
.media-box--dark {
  background:
    radial-gradient(circle at 30% 20%, color-mix(in oklch, var(--vaio-azure) 20%, transparent), transparent 60%),
    var(--brand-900);
  color: var(--neutral-100);
  border-color: color-mix(in oklch, var(--vaio-azure) 40%, transparent);
}
.media-box--dark .media-box__label {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.2);
  color: var(--neutral-100);
}

.media-box__cover {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
}
.media-box--video .media-box__cover {
  /* leve escurecimento pra dar contraste com o botão de play */
  filter: brightness(0.85);
}
/* Quando há capa, remove bg dashed e borda do .media-box pra ficar só a imagem */
.media-box:has(.media-box__cover) {
  background: none;
  border: 0;
}
.media-box__play {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 5rem;
  height: 5rem;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,0.95);
  color: var(--vaio-kachi-iro);
  border: 0;
  border-radius: var(--radius-full);
  cursor: pointer;
  z-index: 2;
  transition: transform var(--duration-normal) var(--ease-spring),
              background-color var(--duration-fast) var(--ease-out);
}
.media-box__play:hover { transform: scale(1.08); background: white; }
.media-box__play:focus-visible {
  outline: 3px solid var(--vaio-gold);
  outline-offset: 4px;
}
.media-box__play svg { width: 2rem; height: 2rem; margin-left: 4px; }

/* ===========================================================================
   FEATURE LIST
   =========================================================================== */
.feature-list {
  list-style: none;
  margin: var(--space-6) 0 0;
  padding: 0;
  display: grid;
  gap: var(--space-2);
}
.feature-list li {
  position: relative;
  padding-inline-start: var(--space-6);
  line-height: var(--lh-relaxed);
}
.feature-list li::before {
  content: "";
  position: absolute;
  inset-inline-start: 0;
  inset-block-start: 0.6em;
  width: 10px;
  height: 10px;
  border-radius: 2px;
  background: var(--vaio-gold);
  transform: rotate(45deg);
}
.feature-list--compact { margin-top: var(--space-4); font-size: var(--fs-sm); }
.feature-list--compact li::before { inset-block-start: 0.55em; }
.feature-list--on-brand li::before { background: var(--vaio-gold); }

/* ===========================================================================
   1. HERO SECTION
   =========================================================================== */
.hero {
  position: relative;
  padding-block-start: calc(var(--space-24) + 1.5rem);
  padding-block-end: var(--space-20);
  overflow: hidden;
  background: var(--bg-app);
  isolation: isolate;
}

/* === Hero bg · aurora blur + grain ======================================== */
.hero__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.hero__aurora {
  position: absolute;
  border-radius: 50%;
  filter: blur(110px);
  will-change: transform;
}
.hero__aurora--gold {
  width: clamp(32rem, 52vw, 60rem);
  aspect-ratio: 1;
  top: -25%;
  left: -15%;
  background: radial-gradient(circle, color-mix(in oklch, var(--vaio-gold) 70%, transparent) 0%, transparent 65%);
  opacity: 0.75;
}
.hero__aurora--gold2 {
  width: clamp(24rem, 36vw, 44rem);
  aspect-ratio: 1;
  top: -10%;
  right: -8%;
  background: radial-gradient(circle, color-mix(in oklch, var(--vaio-gold) 50%, transparent) 0%, transparent 65%);
  opacity: 0.5;
}

.hero__grain {
  position: absolute;
  inset: 0;
  opacity: 0.08;
  mix-blend-mode: overlay;
  pointer-events: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.55 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 220px 220px;
}

/* Aurora gold · trajetória completa percorrendo os 4 cantos do hero.
   Multi-keyframe (não-alternate) com escala variável dá sensação orgânica. */
@keyframes heroAurora1 {
  0%   { transform: translate(0, 0) scale(1); }
  20%  { transform: translate(85%, 10%) scale(1.2); }
  40%  { transform: translate(95%, 65%) scale(0.95); }
  60%  { transform: translate(40%, 85%) scale(1.25); }
  80%  { transform: translate(-15%, 55%) scale(1.05); }
  100% { transform: translate(0, 0) scale(1); }
}
@keyframes heroAurora4 {
  0%   { transform: translate(0, 0) scale(1); }
  25%  { transform: translate(-70%, 25%) scale(1.15); }
  50%  { transform: translate(-80%, 75%) scale(0.9); }
  75%  { transform: translate(-20%, 95%) scale(1.2); }
  100% { transform: translate(0, 0) scale(1); }
}

@media (prefers-reduced-motion: reduce) {
  .hero__aurora { animation: none; }
}

.hero__stack {
  position: relative;
  z-index: 1;
  display: grid;
  gap: var(--space-6);
  justify-items: center;
  text-align: center;
  padding-inline: var(--gutter);
  max-width: 64rem;
  margin-inline: auto;
}
.hero__content {
  display: grid;
  gap: var(--space-6);
  max-width: 60rem;
}
@property --hero-badge-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}
.hero__badge {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-self: center;
  padding: 0.5rem 1.15rem;
  border-radius: var(--radius-full);
  isolation: isolate;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border: 1px solid rgba(11, 17, 62, 0.14);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 1px 2px rgba(11, 17, 62, 0.04);
}
/* Gold beam travelling around the pill border */
.hero__badge::before {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  background: conic-gradient(
    from var(--hero-badge-angle),
    transparent 0deg,
    transparent 300deg,
    var(--vaio-gold) 340deg,
    color-mix(in oklch, var(--vaio-gold) 40%, white) 355deg,
    var(--vaio-gold) 360deg
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
          mask-composite: exclude;
  animation: heroBadgeRotate 3.8s linear infinite;
  pointer-events: none;
  z-index: 2;
}
.hero__badge-sheen {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  overflow: hidden;
  z-index: 1;
}
.hero__badge-sheen::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    110deg,
    transparent 25%,
    rgba(255, 255, 255, 0.55) 48%,
    rgba(255, 255, 255, 0.85) 50%,
    rgba(255, 255, 255, 0.55) 52%,
    transparent 75%
  );
  background-size: 220% 100%;
  background-position: 200% 0;
  animation: heroBadgeSheen 4.2s var(--ease-in-out) infinite;
}
.hero__badge-text {
  position: relative;
  z-index: 3;
  font-size: var(--fs-xs);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-wide);
  line-height: 1;
  color: var(--vaio-gold);
}
.hero__badge-text sup {
  font-size: 0.6em;
  vertical-align: super;
  margin-inline-start: 1px;
}

@keyframes heroBadgeSheen {
  0%   { background-position: 200% 0; }
  60%  { background-position: -100% 0; }
  100% { background-position: -100% 0; }
}
@keyframes heroBadgeRotate {
  to { --hero-badge-angle: 360deg; }
}

@media (prefers-reduced-motion: reduce) {
  .hero__badge::before,
  .hero__badge-sheen::after { animation: none; }
}

.hero__title {
  font-size: clamp(2.5rem, 2rem + 3vw, 4rem);
  font-weight: var(--fw-bold);
  line-height: 1.02;
  letter-spacing: var(--ls-tighter);
  margin: 0;
  color: var(--text-primary);
}
.hero__title-accent { color: var(--vaio-gold); }
.hero__title br { display: none; }
@media (min-width: 768px) { .hero__title br { display: inline; } }

.hero__desc {
  margin: 0 auto;
  max-width: 31rem;
  font-size: 1rem;
  line-height: 1.55;
  color: #000;
  letter-spacing: 0.002em;
}
@media (min-width: 768px) {
  .hero__desc { font-size: 1.0625rem; }
}
.hero__lead {
  font-size: var(--fs-md);
  line-height: var(--lh-snug);
  color: var(--text-secondary);
  margin: 0 auto;
  max-width: 36rem;
}
.hero__lead strong { color: var(--text-primary); font-weight: var(--fw-semibold); }

/* Destaque do nome do produto no lead */
.hero__lead-product {
  position: relative;
  display: inline-block;
  padding: 0 0.18em 0.02em;
  color: var(--text-primary);
  font-weight: var(--fw-semibold);
  white-space: nowrap;
  background-image: linear-gradient(
    180deg,
    transparent 55%,
    color-mix(in oklch, var(--vaio-gold) 32%, transparent) 55%,
    color-mix(in oklch, var(--vaio-gold) 32%, transparent) 92%,
    transparent 92%
  );
  background-size: 0% 100%;
  background-repeat: no-repeat;
  background-position: left center;
  animation: leadHighlightGrow 1.1s var(--ease-out) 0.4s forwards;
}
.hero__lead-product::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.08em;
  height: 1.5px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    var(--vaio-gold) 20%,
    color-mix(in oklch, var(--vaio-gold) 70%, #fff) 50%,
    var(--vaio-gold) 80%,
    transparent 100%
  );
  background-size: 200% 100%;
  opacity: 0;
  animation:
    leadLineFadeIn 0.6s var(--ease-out) 1.3s forwards,
    leadLineShine 3.6s var(--ease-in-out) 2s infinite;
}
.hero__lead-product sup { font-size: 0.55em; top: -0.35em; }

@keyframes leadHighlightGrow {
  to { background-size: 100% 100%; }
}
@keyframes leadLineFadeIn {
  to { opacity: 1; }
}
@keyframes leadLineShine {
  0%, 100% { background-position: 200% 0; }
  50%      { background-position: -100% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .hero__lead-product { animation: none; background-size: 100% 100%; }
  .hero__lead-product::after { animation: leadLineFadeIn 0.3s forwards; }
}
/* ---------- Hero cards · curve layout + liquid glass ---------------------- */
.hero-cards {
  list-style: none;
  margin: 0;
  padding: var(--space-6) 0;
  width: 100%;
  max-width: 72rem;
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
  text-align: start;
  perspective: 1200px;
}
@media (min-width: 640px) {
  .hero-cards { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
  .hero-cards {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-5);
    align-items: stretch;
  }
  /* Arranjo em curva — só depois do "is-in", para não quebrar a entrada */
  .hero-card.is-in:nth-child(1) { transform: translateY(10px) rotate(-5deg); }
  .hero-card.is-in:nth-child(2) { transform: translateY(-4px) rotate(-1.5deg); }
  .hero-card.is-in:nth-child(3) { transform: translateY(-4px) rotate(1.5deg); }
  .hero-card.is-in:nth-child(4) { transform: translateY(10px) rotate(5deg); }
}

.hero-card {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-3);
  background:
    linear-gradient(160deg,
      rgba(255, 255, 255, 0.85) 0%,
      rgba(255, 255, 255, 0.55) 100%);
  backdrop-filter: blur(18px) saturate(150%);
  -webkit-backdrop-filter: blur(18px) saturate(150%);
  border: 1px solid rgba(255, 255, 255, 0.7);
  border-radius: var(--radius-xl);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.95),
    inset 0 -1px 0 rgba(11, 17, 62, 0.04),
    0 12px 32px -12px rgba(11, 17, 62, 0.18),
    0 2px 6px rgba(11, 17, 62, 0.04);
  transition: transform 0.7s var(--ease-out),
              opacity 0.6s var(--ease-out),
              box-shadow var(--duration-normal) var(--ease-out);
  transform-origin: center center;
  /* Estado inicial — fora de vista, deslocado e invisível */
  opacity: 0;
  transform: translateY(36px) scale(0.94);
}
.hero-card.is-in {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.hero-card:nth-child(1).is-in { transition-delay: 0ms; }
.hero-card:nth-child(2).is-in { transition-delay: 120ms; }
.hero-card:nth-child(3).is-in { transition-delay: 240ms; }
.hero-card:nth-child(4).is-in { transition-delay: 360ms; }
@media (min-width: 1024px) {
  .hero-card:hover {
    transform: translateY(-6px) rotate(0deg) !important;
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.95),
      0 20px 44px -14px rgba(11, 17, 62, 0.28),
      0 4px 10px rgba(11, 17, 62, 0.06);
    z-index: 2;
  }
}
.hero-card__text {
  padding: 0 var(--space-2) var(--space-2);
  display: grid;
  gap: var(--space-1);
}
.hero-card__title {
  margin: 0;
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-tight);
  color: var(--text-primary);
}
.hero-card__desc {
  margin: 0;
  font-size: 0.6875rem; /* 11px */
  line-height: var(--lh-normal);
  color: #000;
}
.hero-card__stage {
  position: relative;
  aspect-ratio: 16 / 9;
  width: 100%;
  border-radius: calc(var(--radius-xl) - 4px);
  overflow: hidden;
  background:
    linear-gradient(180deg,
      rgba(255, 255, 255, 0.55) 0%,
      rgba(230, 235, 245, 0.55) 100%);
  border: 1px solid rgba(255, 255, 255, 0.8);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .hero-card { background: rgba(255, 255, 255, 0.92); }
}

/* === Card 1 · Performance / NPU =========================================== */
.anim-perf {
  position: absolute;
  inset: 0;
  padding: 14% 12%;
  display: grid;
  gap: 10%;
  align-content: center;
  color: var(--vaio-kachi-iro);
}
.anim-perf__row {
  display: grid;
  grid-template-columns: 2.25rem 1fr;
  align-items: center;
  gap: 0.5rem;
}
.anim-perf__label {
  font-size: 0.625rem;
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-wider);
  color: color-mix(in oklch, var(--vaio-kachi-iro) 55%, transparent);
}
.anim-perf__bar {
  position: relative;
  height: 4px;
  border-radius: var(--radius-full);
  background: color-mix(in oklch, var(--vaio-kachi-iro) 10%, transparent);
  overflow: hidden;
}
.anim-perf__bar i {
  display: block;
  height: 100%;
  width: var(--w, 50%);
  border-radius: inherit;
  background: linear-gradient(90deg, #08133e 0%, #1a2654 100%);
  transform-origin: left center;
  animation: animPerfFill 2.4s var(--ease-out) infinite alternate;
}
.anim-perf__bar--accent i {
  background: linear-gradient(90deg, #08133e 0%, #2a3670 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2);
}
.anim-perf__chip {
  position: absolute;
  top: 10%;
  right: 10%;
  display: grid;
  place-content: center;
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 50%;
  background: color-mix(in oklch, var(--vaio-gold) 18%, white);
  color: var(--vaio-gold);
  font-size: 0.625rem;
  font-weight: var(--fw-bold);
  letter-spacing: 0.04em;
  box-shadow: 0 0 0 0 color-mix(in oklch, var(--vaio-gold) 55%, transparent);
  animation: animPerfChip 2.2s var(--ease-out) infinite;
}
@keyframes animPerfFill {
  0%   { transform: scaleX(0.3); }
  100% { transform: scaleX(1); }
}
@keyframes animPerfChip {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklch, var(--vaio-gold) 55%, transparent); }
  50%      { box-shadow: 0 0 0 6px color-mix(in oklch, var(--vaio-gold) 0%, transparent); }
}

/* === Card 2 · Segurança · face scan + pulse =============================== */
.anim-sec {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: var(--vaio-kachi-iro);
}
.anim-sec__face {
  width: 42%;
  height: auto;
  opacity: 0.85;
}
.anim-sec__corner {
  position: absolute;
  width: 14%;
  height: 22%;
  border: 2px solid var(--vaio-gold);
}
.anim-sec__corner--tl { top: 18%; left: 18%; border-right: none; border-bottom: none; border-top-left-radius: 6px; }
.anim-sec__corner--tr { top: 18%; right: 18%; border-left: none; border-bottom: none; border-top-right-radius: 6px; }
.anim-sec__corner--bl { bottom: 18%; left: 18%; border-right: none; border-top: none; border-bottom-left-radius: 6px; }
.anim-sec__corner--br { bottom: 18%; right: 18%; border-left: none; border-top: none; border-bottom-right-radius: 6px; }
.anim-sec__scan {
  position: absolute;
  left: 20%;
  right: 20%;
  height: 2px;
  top: 18%;
  background: linear-gradient(90deg, transparent, var(--vaio-magenta), transparent);
  box-shadow: 0 0 8px color-mix(in oklch, var(--vaio-magenta) 60%, transparent);
  animation: animSecScan 2.6s var(--ease-in-out) infinite;
}
.anim-sec__pulse {
  position: absolute;
  bottom: 12%;
  right: 12%;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 50%;
  background: color-mix(in oklch, var(--vaio-azure) 15%, white);
  box-shadow: 0 0 0 0 color-mix(in oklch, var(--vaio-azure) 60%, transparent);
  animation: animSecPulse 1.8s var(--ease-out) infinite;
}
.anim-sec__pulse::before {
  content: "";
  position: absolute;
  inset: 20%;
  border-radius: 50%;
  border: 1.5px solid var(--vaio-azure);
  border-top-color: transparent;
  border-left-color: transparent;
}
@keyframes animSecScan {
  0%, 10%   { top: 18%; opacity: 0; }
  15%       { opacity: 1; }
  50%       { top: 80%; opacity: 1; }
  55%       { opacity: 0; }
  60%, 100% { top: 18%; opacity: 0; }
}
@keyframes animSecPulse {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in oklch, var(--vaio-azure) 60%, transparent); }
  50%      { box-shadow: 0 0 0 10px color-mix(in oklch, var(--vaio-azure) 0%, transparent); }
}

/* === Card 3 · Design · shimmer de alumínio + teclado ====================== */
.anim-design {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-rows: 1fr auto;
  padding: 14% 14% 0;
}
.anim-design__metal {
  position: relative;
  border-radius: 6px 6px 2px 2px;
  background: linear-gradient(180deg,
    #d4d9e2 0%,
    #e8ecf1 50%,
    #c7ccd4 100%);
  overflow: hidden;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
}
.anim-design__metal::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg,
    transparent 30%,
    rgba(255, 255, 255, 0.7) 48%,
    rgba(255, 255, 255, 0.95) 50%,
    rgba(255, 255, 255, 0.7) 52%,
    transparent 70%);
  background-size: 220% 100%;
  background-position: 200% 0;
  animation: animDesignShimmer 3.2s var(--ease-in-out) infinite;
}
.anim-design__keys {
  display: grid;
  grid-template-columns: repeat(15, 1fr);
  gap: 2px;
  padding: 4px 0 8%;
}
.anim-design__keys span {
  aspect-ratio: 1;
  border-radius: 2px;
  background: color-mix(in oklch, var(--vaio-kachi-iro) 12%, white);
  animation: animDesignKey 2.4s var(--ease-out) infinite;
}
.anim-design__keys span:nth-child(1)  { animation-delay: 0s;    }
.anim-design__keys span:nth-child(2)  { animation-delay: .05s;  }
.anim-design__keys span:nth-child(3)  { animation-delay: .1s;   }
.anim-design__keys span:nth-child(4)  { animation-delay: .15s;  }
.anim-design__keys span:nth-child(5)  { animation-delay: .2s;   }
.anim-design__keys span:nth-child(6)  { animation-delay: .25s;  }
.anim-design__keys span:nth-child(7)  { animation-delay: .3s;   }
.anim-design__keys span:nth-child(8)  { animation-delay: .35s;  }
.anim-design__keys span:nth-child(9)  { animation-delay: .4s;   }
.anim-design__keys span:nth-child(10) { animation-delay: .45s;  }
.anim-design__keys span:nth-child(11) { animation-delay: .5s;   }
.anim-design__keys span:nth-child(12) { animation-delay: .55s;  }
.anim-design__keys span:nth-child(13) { animation-delay: .6s;   }
.anim-design__keys span:nth-child(14) { animation-delay: .65s;  }
.anim-design__keys span:nth-child(15) { animation-delay: .7s;   }
@keyframes animDesignShimmer {
  0%   { background-position: 200% 0; }
  70%  { background-position: -120% 0; }
  100% { background-position: -120% 0; }
}
@keyframes animDesignKey {
  0%, 100% { background: color-mix(in oklch, var(--vaio-kachi-iro) 12%, white); }
  50%      { background: color-mix(in oklch, var(--vaio-gold) 55%, white); }
}

/* === Card 4 · Gráficos Intel Arc · chart animado ========================== */
.anim-gfx {
  position: absolute;
  inset: 0;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  align-items: end;
  gap: 6%;
  padding: 18% 14% 14%;
}
.anim-gfx__bar {
  position: relative;
  height: var(--h, 60%);
  border-radius: 4px 4px 2px 2px;
  background: linear-gradient(180deg, #1a2654 0%, #08133e 100%);
  transform-origin: bottom center;
  animation: animGfxBar 2.6s var(--ease-in-out) infinite;
  animation-delay: var(--d, 0s);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}
.anim-gfx__line {
  position: absolute;
  left: 10%;
  right: 10%;
  top: 34%;
  height: 1px;
  background: repeating-linear-gradient(90deg,
    color-mix(in oklch, var(--vaio-kachi-iro) 30%, transparent) 0 4px,
    transparent 4px 8px);
}
@keyframes animGfxBar {
  0%, 100% { transform: scaleY(1); }
  50%      { transform: scaleY(0.55); }
}

@media (prefers-reduced-motion: reduce) {
  .anim-perf__bar i,
  .anim-perf__chip,
  .anim-sec__scan,
  .anim-sec__pulse,
  .anim-design__metal::after,
  .anim-design__keys span,
  .anim-gfx__bar { animation: none; }
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-3);
  margin: 0;
}

/* === CTA · Comprar agora · dark pill + send arrow ======================== */
.cta-pill {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 1.25rem;
  padding: 0.5rem 0.5rem 0.5rem 1.75rem;
  border-radius: 999px;
  background:
    linear-gradient(180deg,
      #1a2654 0%,
      #011248 42%,
      #05081f 100%);
  color: #fff;
  font-family: inherit;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.005em;
  text-decoration: none;
  white-space: nowrap;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    inset 0 -1px 0 rgba(0, 0, 0, 0.5),
    0 10px 28px -10px rgba(5, 8, 31, 0.55),
    0 2px 6px -2px rgba(5, 8, 31, 0.3);
  transition:
    transform 0.35s var(--ease-out),
    box-shadow 0.35s var(--ease-out);
  isolation: isolate;
}
.cta-pill:hover {
  transform: translateY(-2px);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.22),
    inset 0 -1px 0 rgba(0, 0, 0, 0.5),
    0 18px 36px -12px rgba(5, 8, 31, 0.65),
    0 2px 6px -2px rgba(5, 8, 31, 0.35);
}
.cta-pill:active {
  transform: translateY(0);
  transition-duration: 0.1s;
}
.cta-pill__label {
  position: relative;
  z-index: 1;
}
.cta-pill__icon {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  background: #fff;
  color: #08133e;
  box-shadow:
    inset 0 -1px 1px rgba(0, 0, 0, 0.12),
    inset 0 1px 0 rgba(255, 255, 255, 0.9),
    0 2px 6px rgba(5, 8, 31, 0.25);
  overflow: hidden;
  transition: transform 0.35s var(--ease-out);
}
.cta-pill:hover .cta-pill__icon {
  transform: scale(1.06);
}

.cta-pill__svg {
  animation: ctaIconBob 2.8s var(--ease-in-out) infinite;
  will-change: transform;
}
.cta-pill:hover .cta-pill__svg {
  animation: ctaIconLaunch 0.7s var(--ease-out);
}

@keyframes ctaIconBob {
  0%, 100% { transform: translate(0, 0) rotate(0deg); }
  50%      { transform: translate(1px, -1px) rotate(-6deg); }
}

@keyframes ctaIconLaunch {
  0%   { transform: translate(0, 0) rotate(0deg); opacity: 1; }
  38%  { transform: translate(14px, -14px) rotate(-24deg); opacity: 0; }
  39%  { transform: translate(-14px, 14px) rotate(24deg); opacity: 0; }
  60%  { opacity: 0.4; }
  100% { transform: translate(0, 0) rotate(0deg); opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .cta-pill__svg { animation: none; }
  .cta-pill:hover { transform: none; }
  .cta-pill:hover .cta-pill__icon { transform: none; }
  .cta-pill:hover .cta-pill__svg { animation: none; }
}
.hero__media {
  position: relative;
  width: 100%;
  max-width: 56rem;
}
/* Wrapper interno: contém image + intro + screen-anim. Ele é o containing
   block do .screen-anim (absolute). No desktop o layout segue idêntico — os
   bubbles permanecem absolute referenciando o .hero__media (parent). */
.hero__media-inner {
  position: relative;
}

/* Selos de parceiros no rodapé do hero · Windows 11 + Intel Core Ultra */
.hero__creds {
  position: relative;
  z-index: 2;
  width: 100%;
  max-width: 56rem;
  margin: 1.5rem auto 0;
  padding: 0;
  background: transparent;
  border: 0;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1.5rem 2rem;
  text-align: left;
}
.hero__creds-group {
  --creds-tx: 0px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.625rem;
  opacity: 0;
  transform: translate(var(--creds-tx), 16px);
  filter: blur(10px);
  transition:
    opacity 800ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1000ms cubic-bezier(0.34, 1.48, 0.52, 1),
    filter 600ms cubic-bezier(0.22, 1, 0.36, 1);
}
.hero__creds-group--windows { transition-delay: 380ms; --creds-tx: -32px; }
.hero__creds-group--intel   { transition-delay: 520ms; --creds-tx:  32px; }
.hero__creds.is-in .hero__creds-group {
  opacity: 1;
  transform: translate(0, 0);
  filter: blur(0);
}
@media (prefers-reduced-motion: reduce) {
  .hero__creds-group {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}
.hero__creds-group--windows { padding: 0 0 0 13px; }
.hero__creds-group--intel {
  align-items: flex-end;
  text-align: right;
  padding: 0 13px 0 0;
}

.hero__creds-logo--windows {
  display: block;
  width: 150px;
  height: auto;
  object-fit: contain;
}

.hero__creds-logos {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
.hero__creds-logos img {
  display: block;
  width: 50px;
  height: auto;
  object-fit: contain;
}

.hero__creds-text {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
  font-weight: 400;
  color: #000;
  letter-spacing: 0.005em;
}
.hero__creds-text--strong { font-weight: 600; }

@media (max-width: 640px) {
  .hero__creds {
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
    text-align: center;
  }
  .hero__creds-group,
  .hero__creds-group--windows,
  .hero__creds-group--intel {
    align-items: center;
    text-align: center;
    padding: 0;
  }
  .hero__creds-logo--windows { width: 120px; }
  .hero__creds-logos img { width: 44px; }
}
.hero__image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
  opacity: 0;
  transition: opacity 520ms ease;
}
.hero__image.is-revealed {
  opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
  .hero__image { opacity: 1; transition: none; }
}

.hero__intro {
  --hero-intro-scale: 1;
  --hero-intro-blur: 14px;
  position: absolute;
  width: 972px;
  height: 968px;
  top: -239px;
  left: -38px;
  max-width: none;
  z-index: 3;
  opacity: 0;
  transform: translateY(8%) scale(var(--hero-intro-scale));
  transform-origin: center;
  filter: blur(var(--hero-intro-blur));
  will-change: opacity, transform, filter;
  pointer-events: none;
}
.hero__intro.is-entering {
  animation: hero-intro-enter 1100ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.hero__intro.is-exiting {
  animation: hero-intro-exit 520ms ease forwards;
}
@keyframes hero-intro-enter {
  from { opacity: 0; transform: translateY(8%) scale(var(--hero-intro-scale)); filter: blur(var(--hero-intro-blur)); }
  to   { opacity: 1; transform: translateY(0)   scale(var(--hero-intro-scale)); filter: blur(0); }
}
@keyframes hero-intro-exit {
  from { opacity: 1; transform: translateY(0) scale(var(--hero-intro-scale)); filter: blur(0); }
  to   { opacity: 0; transform: translateY(0) scale(var(--hero-intro-scale)); filter: blur(6px); }
}
@media (prefers-reduced-motion: reduce) {
  .hero__intro { display: none; }
}

/* ===========================================================================
   HERO · ajustes mobile (≤ 767px)
   - Esconde overlays calibrados só para desktop (.hero__intro / .screen-anim)
   - Reduz padding vertical excessivo
   - Ajusta tipografia e quebra do título
   Apenas no breakpoint mobile — não toca desktop.
   =========================================================================== */
@media (max-width: 767px) {
  .hero {
    padding-block-start: calc(var(--space-16) + 1rem); /* 80px (era 120px) */
    padding-block-end: var(--space-12);                /* 48px (era 80px)  */
  }
  /* Intro decorativa (overlay 972x968) explode no viewport pequeno — escondido. */
  .hero__intro { display: none; }

  /* Sem badge, o título encostava no header — devolve o respiro do topo. */
  .hero__content { margin-top: 1.25rem; }
  .hero__title {
    font-size: clamp(1.625rem, 1rem + 4vw, 2.5rem);
    line-height: 1.08;
  }
  /* Força a quebra natural depois de "Excelência japonesa" — sem o br, o
     título flui numa massa só. */
  .hero__title br { display: inline; }

  /* Como escondemos o .hero__intro, o animationend nunca dispara — então o
     JS nunca adiciona .is-revealed / .is-in nesses elementos. Forçamos
     manualmente o estado final para que image / screen-anim / creds apareçam.
     Prefixo .hero aumenta a especificidade para ganhar das regras base
     declaradas mais à frente no arquivo. */
  .hero .hero__image,
  .hero .screen-anim { opacity: 1; }
  .hero .hero__creds-group {
    opacity: 1;
    transform: none;
    filter: none;
  }
  /* O stage do screen-anim inicia .is-paused (animações congeladas) e o JS
     só destrava ao fim da intro. Sem intro no mobile, forçamos play. */
  .hero .screen-anim__stage.is-paused,
  .hero .screen-anim__stage.is-paused * {
    animation-play-state: running !important;
  }

  /* Cena Windows 11 Start: a 375px o grid 6×2 estoura a janela.
     Reorganiza pra 5×2 e esconde as 2 últimas tiles (Calc + Config).
     Prefixo .hero bump na especificidade para ganhar da regra base
     declarada mais à frente no arquivo. */
  .hero .sa-desktop .w11-pinned {
    grid-template-columns: repeat(5, 1fr);
  }
  .hero .sa-desktop .w11-pinned .w11-tile:nth-child(n + 11) {
    display: none;
  }

  /* Hero bubbles inline · 2 acima e 2 abaixo da imagem, lado a lado.
     Transforma .hero__media num grid 2-col; .hero__media-inner (image +
     overlays) spanning os 2 cols no meio. */
  .hero__media {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.6rem 0.5rem;
  }
  .hero__media-inner {
    grid-column: 1 / -1;
    grid-row: 2;
    order: 2;
    margin-block: 0.75rem; /* respiro entre bubbles e imagem */
  }
  /* Mostra os bubbles (override do display:none mobile base @767) e
     transforma cada um em grid item visível, sem absolute/animation/blur.
     Também encolhe padding, fontes e viz para caberem em 2 colunas a 375px. */
  .hero .hero-bubble:not([hidden]) {
    display: inline-flex;
    position: static;
    opacity: 1;
    transform: none;
    filter: none;
    animation: none;
    transition: none;
    top: auto; right: auto; left: auto; bottom: auto;
    width: auto; /* tamanho do conteúdo, não 100% do grid cell */
    margin: 0;
    box-sizing: border-box;
    /* Compact: ~30% menos padding, viz menor, fontes encolhidas */
    padding: 0.5rem 0.625rem;
    gap: 0.5rem;
    border-radius: 0.875rem;
    box-shadow:
      0 14px 30px -14px rgba(11, 17, 62, 0.28),
      0 4px 10px -4px rgba(11, 17, 62, 0.14),
      inset 0 1px 0 rgba(255, 255, 255, 0.85);
    min-width: 0;
    max-width: 100%; /* nunca exceder o cell */
  }
  /* Remove a borda animada (glass rim sweep) e o glare hover no mobile */
  .hero .hero-bubble::before,
  .hero .hero-bubble::after {
    display: none;
  }
  .hero .hero-bubble__viz {
    width: 1.625rem;
    height: 1.625rem;
    border-radius: 0.5rem;
  }
  .hero .hero-bubble__body {
    min-width: 0;
  }
  .hero .hero-bubble__kicker {
    font-size: 0.5625rem;
    letter-spacing: 0.1em;
  }
  .hero .hero-bubble__main {
    font-size: 0.8125rem;
    white-space: normal; /* permite quebra se faltar espaço */
    line-height: 1.15;
  }
  .hero .hero-bubble__sub {
    font-size: 0.625rem;
    white-space: normal;
    line-height: 1.2;
  }
  /* grid-row explícito previne que items com mesmo order vão para rows
     diferentes por auto-placement (caso o right-2 hidden + visible
     interfira no fluxo). */
  .hero .hero-bubble--left   { order: 1; grid-row: 1; grid-column: 1; justify-self: start; }
  .hero .hero-bubble--right  { order: 1; grid-row: 1; grid-column: 2; justify-self: end;   }
  .hero .hero-bubble--left-2 { order: 3; grid-row: 3; grid-column: 1; justify-self: start; }
  /* :not([hidden]) cobre o caso do 1º .hero-bubble--right-2 (Câmera IR oculto)
     pra que o grid-row 3 só se aplique ao Windows 11 Pro (visível). */
  .hero .hero-bubble--right-2:not([hidden]) { order: 3; grid-row: 3; grid-column: 2; justify-self: end; }
}

/* ===========================================================================
   HERO · Entrada escalonada (reveal on load) + Liquid Glass reflex
   =========================================================================== */
.hero__badge,
.hero__title,
.hero__desc,
.hero__lead,
.hero__actions {
  --reveal-y: 18px;
  --reveal-blur: 10px;
  opacity: 0;
  transform: translateY(var(--reveal-y));
  filter: blur(var(--reveal-blur));
  will-change: opacity, transform, filter;
}
/* Etapa 1 · badge + headline + desc anim imediatamente após preloader */
html.is-ready .hero__badge,
html.is-ready .hero__title,
html.is-ready .hero__desc {
  animation: heroReveal 900ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
html.is-ready .hero__badge { animation-delay: 80ms;  }
html.is-ready .hero__title { animation-delay: 240ms; --reveal-y: 22px; }
html.is-ready .hero__desc  { animation-delay: 380ms; }

/* Etapa 3 · descrição só anima após o vídeo de produto terminar */
html.hero-intro-done .hero__lead,
html.hero-intro-done .hero__actions {
  animation: heroReveal 900ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
html.hero-intro-done .hero__lead    { animation-delay: 120ms; }
html.hero-intro-done .hero__actions { animation-delay: 360ms; }

@keyframes heroReveal {
  to {
    opacity: 1;
    transform: translateY(0);
    filter: blur(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero__badge,
  .hero__title,
  .hero__desc,
  .hero__lead,
  .hero__actions {
    animation: none;
    opacity: 1;
    transform: none;
    filter: none;
  }
}

/* --- Liquid Glass · reflex sobre superfícies glassmorphism --------------- */
/* Aplicado a hero-cards e hero-bubbles. Usa --mx/--my (0–100%) atualizadas
   via JS para seguir o cursor, compondo 3 camadas:
   · specular hotspot (radial-gradient, screen blend)
   · rim conic rotativo (loop sutil em idle, mais forte em hover)
   · brilho do backdrop (saturate/brightness) no hover */
.hero-card,
.hero-bubble {
  --mx: 50%;
  --my: 50%;
  --glass-rim-angle: 0deg;
  position: relative;
  isolation: isolate;
}

@property --glass-rim-angle {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

.hero-card::before,
.hero-bubble::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background:
    radial-gradient(
      260px circle at var(--mx) var(--my),
      rgba(255, 255, 255, 0.55) 0%,
      rgba(255, 255, 255, 0.22) 22%,
      rgba(255, 255, 255, 0.06) 45%,
      transparent 62%
    );
  mix-blend-mode: screen;
  opacity: 0;
  transition: opacity 420ms var(--ease-out);
  pointer-events: none;
  z-index: 2;
}

.hero-card::after,
.hero-bubble::after {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: inherit;
  padding: 1px;
  background: conic-gradient(
    from var(--glass-rim-angle),
    transparent 0deg,
    rgba(255, 255, 255, 0.75) 70deg,
    color-mix(in oklch, var(--vaio-gold) 70%, white) 90deg,
    rgba(255, 255, 255, 0.35) 120deg,
    transparent 180deg,
    rgba(255, 255, 255, 0.5) 260deg,
    transparent 360deg
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
          mask-composite: exclude;
  opacity: 0.35;
  animation: glassRimSweep 9s linear infinite;
  pointer-events: none;
  z-index: 3;
  transition: opacity 420ms var(--ease-out);
}

@keyframes glassRimSweep {
  to { --glass-rim-angle: 360deg; }
}

/* Hover: brilho especular, rim intensifica, backdrop ganha saturação */
@media (hover: hover) {
  .hero-card:hover::before,
  .hero-bubble:hover::before { opacity: 1; }
  .hero-card:hover::after,
  .hero-bubble:hover::after  { opacity: 1; }
  .hero-card:hover,
  .hero-bubble:hover {
    backdrop-filter: blur(22px) saturate(180%) brightness(1.06);
    -webkit-backdrop-filter: blur(22px) saturate(180%) brightness(1.06);
  }
}

/* Content inside cards/bubbles must stay above the pseudo-layers */
.hero-card > *,
.hero-bubble > * { position: relative; z-index: 4; }

@media (prefers-reduced-motion: reduce) {
  .hero-card::after,
  .hero-bubble::after { animation: none; }
}

/* ===========================================================================
   HERO SCREEN ANIMATION · loop de ~11s na tela do notebook
   Ajuste fino da área da tela via CSS vars --sx/--sy/--sw/--sh
   =========================================================================== */
.screen-anim {
  --sx: 14.6%;
  --sy: 5.9%;
  --sw: 71%;
  --sh: 61.3%;
  position: absolute;
  left: var(--sx);
  top: var(--sy);
  width: var(--sw);
  height: var(--sh);
  z-index: 4;
  border-radius: 2px;
  overflow: hidden;
  pointer-events: none;
  font-family: var(--font-body);
  font-size: clamp(6px, 0.85vw, 12px);
  color: #fff;
  background: #000;
  opacity: 0;
  transition: opacity 520ms ease;
}
.screen-anim.is-revealed {
  opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
  .screen-anim { opacity: 1; transition: none; }
}
.screen-anim__stage {
  position: relative;
  width: 100%;
  height: 100%;
}
.screen-anim__stage.is-paused,
.screen-anim__stage.is-paused * {
  animation-play-state: paused !important;
}

/* Scroll-scrub · força só a cena de Desligando enquanto o usuário fecha o notebook */
.screen-anim__stage.is-scrubbing-shutdown .screen-anim__scene {
  animation-play-state: paused !important;
  opacity: 0 !important;
}
.screen-anim__stage.is-scrubbing-shutdown .sa-shutdown {
  opacity: 1 !important;
  animation: none !important;
}

/* Esconde a screen-anim inteira (incluindo o bg preto) durante o fechamento */
.screen-anim.is-scrubbing-closing {
  opacity: 0 !important;
  transition: opacity 150ms ease;
}

/* Reinicia todas as animações do screen-anim (volta ao boot) */
.screen-anim__stage.is-restart,
.screen-anim__stage.is-restart * {
  animation: none !important;
}

.screen-anim__scene {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  opacity: 0;
  will-change: opacity;
}

/* --- Scene 1 · Boot VAIO (0–12%) --------------------------------------- */
.sa-boot { background: #000; animation: scn-boot 25s linear infinite; }
.sa-boot__logo {
  width: auto;
  height: 1.4em;
  filter: brightness(0) invert(1);
  object-fit: contain;
}
.sa-boot__spinner {
  position: absolute;
  bottom: 22%;
  width: 1.6em;
  height: 1.6em;
  border-radius: 50%;
  border: 1.5px solid rgba(255, 255, 255, 0.2);
  border-top-color: #fff;
  animation: sa-spin 1.2s linear infinite;
}
@keyframes scn-boot {
  0%, 8%, 100% { opacity: 0; }
  1.6%, 6.4%   { opacity: 1; }
}

/* --- Scene 2 · Windows Hello (11–24%) --------------------------------- */
.sa-login { animation: scn-login 25s linear infinite; }
.sa-login__wallpaper {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 50%, #1e3a8a 0%, #0b1a4d 45%, #020617 100%);
}
.sa-login__card {
  position: relative;
  display: grid;
  place-items: center;
  gap: 0.5em;
  z-index: 1;
}
.sa-login__avatar {
  width: 3.5em;
  height: 3.5em;
  object-fit: contain;
  padding: 0.5em;
  background: transparent;
  border: none;
}
.sa-login__name {
  font-size: 1.15em;
  font-weight: 500;
  margin-top: 0.3em;
}
.sa-login__status {
  font-size: 0.85em;
  color: rgba(255, 255, 255, 0.7);
}
@keyframes scn-login {
  0%, 8%, 14.4%, 100% { opacity: 0; }
  9.6%, 12.8%         { opacity: 1; }
}

/* --- Scene 3 · Desktop Windows 11 · Start Menu (23–43%) --------------- */
.sa-desktop {
  animation: scn-desktop 25s linear infinite;
  display: block;
  user-select: none;
}

/* Wallpaper · Fluent Bloom */
.sa-desktop .w11-wall {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 28% 32%, rgba(130,200,255,.55) 0%, rgba(130,200,255,0) 42%),
    radial-gradient(circle at 78% 72%, rgba(180,130,255,.45) 0%, rgba(180,130,255,0) 46%),
    radial-gradient(circle at 58% 18%, rgba(80,160,240,.35) 0%, rgba(80,160,240,0) 50%),
    radial-gradient(circle at 10% 88%, rgba(60,100,200,.4) 0%, rgba(60,100,200,0) 45%),
    linear-gradient(135deg, #0a2472 0%, #0b1a5c 60%, #07123f 100%);
}

/* Start Menu panel */
.sa-desktop .w11-panel {
  position: absolute;
  left: 50%;
  top: 47%;
  transform: translate(-50%, -50%) scale(0.94);
  width: 72%;
  height: 78%;
  border-radius: 0.9em;
  background: rgba(22, 26, 48, .72);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  backdrop-filter: blur(28px) saturate(160%);
  border: 0.08em solid rgba(255, 255, 255, .08);
  box-shadow:
    0 2.4em 4em rgba(0, 0, 0, .55),
    inset 0 0 0 0.08em rgba(255, 255, 255, .05);
  padding: 2.2em 2.6em 0.8em;
  display: flex;
  flex-direction: column;
  gap: 0.9em;
  z-index: 1;
  animation: w11-panel-in 25s linear infinite;
}

/* Search bar */
.sa-desktop .w11-search {
  height: 2.6em;
  border-radius: 999px;
  background: rgba(255, 255, 255, .06);
  border: 0.08em solid rgba(255, 255, 255, .09);
  display: flex;
  align-items: center;
  padding: 0 1.1em;
  gap: 0.7em;
}
.sa-desktop .w11-search__icon {
  position: relative;
  width: 0.95em;
  height: 0.95em;
  border-radius: 50%;
  border: 0.14em solid rgba(255, 255, 255, .7);
  flex-shrink: 0;
}
.sa-desktop .w11-search__icon::after {
  content: "";
  position: absolute;
  bottom: -0.35em;
  right: -0.1em;
  width: 0.42em;
  height: 0.14em;
  background: rgba(255, 255, 255, .7);
  border-radius: 0.1em;
  transform: rotate(45deg);
  transform-origin: left center;
}
.sa-desktop .w11-search__ph {
  font-size: 0.78em;
  color: rgba(255, 255, 255, .55);
}

/* Section heads */
.sa-desktop .w11-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 0.2em;
}
.sa-desktop .w11-head__title {
  font-size: 0.78em;
  font-weight: 600;
  color: rgba(255, 255, 255, .95);
}
.sa-desktop .w11-head__chip {
  font-size: 0.72em;
  font-weight: 500;
  color: rgba(255, 255, 255, .75);
  background: rgba(255, 255, 255, .06);
  border: 0.08em solid rgba(255, 255, 255, .08);
  padding: 0.35em 0.8em;
  border-radius: 999px;
}

/* Pinned grid 6×2 */
.sa-desktop .w11-pinned {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: repeat(2, 1fr);
  gap: 0.5em 0.4em;
}
.sa-desktop .w11-tile {
  aspect-ratio: 1;
  border-radius: 0.55em;
  background: rgba(255, 255, 255, .02);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4em;
  padding: 0.4em;
}
.sa-desktop .w11-ico {
  width: 62%;
  aspect-ratio: 1;
  border-radius: 0.35em;
  box-shadow:
    0 0.15em 0.4em rgba(0, 0, 0, .35),
    inset 0 0.05em 0 rgba(255, 255, 255, .18);
  position: relative;
}
.sa-desktop .w11-tile__label {
  font-size: 0.68em;
  color: rgba(255, 255, 255, .9);
  text-align: center;
  line-height: 1;
  max-width: 100%;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

/* Individual icons */
.sa-desktop .w11-ico--edge {
  border-radius: 50%;
  background: conic-gradient(from 210deg, #0078d4, #1cbf7a, #3fd3ff, #0052a3, #0078d4);
}
.sa-desktop .w11-ico--word { background: #2b579a; }
.sa-desktop .w11-ico--word::before {
  content: "W";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--excel { background: #217346; }
.sa-desktop .w11-ico--excel::before {
  content: "X";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--ppt { background: #d24726; }
.sa-desktop .w11-ico--ppt::before {
  content: "P";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--outlook { background: linear-gradient(135deg, #0078d4, #00a8e0); }
.sa-desktop .w11-ico--outlook::before {
  content: "O";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--teams { background: #5059c9; }
.sa-desktop .w11-ico--teams::before {
  content: "T";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--onenote { background: #7719aa; }
.sa-desktop .w11-ico--onenote::before {
  content: "N";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 1em;
}
.sa-desktop .w11-ico--store {
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #3fd3ff, #0078d4 70%);
}
.sa-desktop .w11-ico--photos { background: linear-gradient(135deg, #ff4d9d, #ffb84d); }
.sa-desktop .w11-ico--copilot {
  border-radius: 50%;
  background: conic-gradient(from 0deg, #00d4ff, #0078d4, #8b5cf6, #ec4899, #f59e0b, #10b981, #00d4ff);
  animation: w11-copilot-pulse 2.4s ease-in-out infinite;
}
.sa-desktop .w11-ico--calc { background: linear-gradient(145deg, #4a5568, #2d3748); }
.sa-desktop .w11-ico--calc::before {
  content: "";
  position: absolute;
  inset: 18%;
  background:
    linear-gradient(to right, transparent 30%, rgba(255,255,255,.35) 30% 33%, transparent 33% 63%, rgba(255,255,255,.35) 63% 66%, transparent 66%),
    linear-gradient(to bottom, transparent 30%, rgba(255,255,255,.35) 30% 33%, transparent 33% 63%, rgba(255,255,255,.35) 63% 66%, transparent 66%);
}
.sa-desktop .w11-ico--settings {
  border-radius: 50%;
  background: conic-gradient(from 45deg, #0078d4, #3fd3ff, #0052a3, #0078d4);
}
.sa-desktop .w11-ico--settings::before {
  content: "";
  position: absolute;
  inset: 28%;
  border-radius: 50%;
  background: rgba(22, 26, 48, .6);
  box-shadow: inset 0 0 0 0.12em rgba(255, 255, 255, .5);
}

/* Recommended grid 1×2 */
.sa-desktop .w11-reco {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.45em 0.6em;
  min-height: 0;
}
.sa-desktop .w11-reco__card {
  display: flex;
  align-items: center;
  gap: 0.7em;
  padding: 0.55em 0.7em;
  border-radius: 0.45em;
  background: rgba(255, 255, 255, .02);
  min-width: 0;
}
.sa-desktop .w11-reco__icon {
  width: 2.2em;
  height: 2.6em;
  border-radius: 0.2em;
  position: relative;
  flex-shrink: 0;
  box-shadow: 0 0.15em 0.3em rgba(0, 0, 0, .3);
}
.sa-desktop .w11-reco__icon::before {
  content: "";
  position: absolute;
  top: 0; right: 0;
  width: 0.7em; height: 0.7em;
  background: rgba(255, 255, 255, .35);
  clip-path: polygon(0 0, 100% 100%, 100% 0);
}
.sa-desktop .w11-reco__icon--doc { background: #2b579a; }
.sa-desktop .w11-reco__icon--xls { background: #217346; }
.sa-desktop .w11-reco__icon--ppt { background: #d24726; }
.sa-desktop .w11-reco__icon--pdf { background: #c0392b; }
.sa-desktop .w11-reco__meta {
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 0.15em;
}
.sa-desktop .w11-reco__name {
  font-size: 0.75em;
  font-weight: 500;
  color: rgba(255, 255, 255, .92);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sa-desktop .w11-reco__time {
  font-size: 0.65em;
  color: rgba(255, 255, 255, .55);
}

/* Footer */
.sa-desktop .w11-foot {
  margin-top: auto;
  border-top: 0.08em solid rgba(255, 255, 255, .08);
  padding: 0.7em 0.2em 0.2em;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.sa-desktop .w11-user {
  display: flex;
  align-items: center;
  gap: 0.7em;
}
.sa-desktop .w11-user__avatar {
  width: 1.8em;
  height: 1.8em;
  border-radius: 50%;
  background: linear-gradient(135deg, #0078d4, #1a4fa3);
  position: relative;
  box-shadow: inset 0 0 0 0.08em rgba(255, 255, 255, .2);
  overflow: hidden;
}
.sa-desktop .w11-user__avatar::before {
  content: "";
  position: absolute;
  top: 22%;
  left: 50%;
  transform: translateX(-50%);
  width: 0.55em;
  height: 0.55em;
  border-radius: 50%;
  background: rgba(255, 255, 255, .85);
}
.sa-desktop .w11-user__avatar::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 1.2em;
  height: 0.7em;
  border-radius: 50% 50% 0 0;
  background: rgba(255, 255, 255, .85);
}
.sa-desktop .w11-user__name {
  font-size: 0.78em;
  font-weight: 500;
  color: rgba(255, 255, 255, .92);
}
.sa-desktop .w11-power {
  position: relative;
  width: 1em;
  height: 1em;
  border-radius: 50%;
  border: 0.12em solid rgba(255, 255, 255, .75);
  border-top-color: transparent;
  margin-right: 0.2em;
}
.sa-desktop .w11-power::before {
  content: "";
  position: absolute;
  top: -0.25em;
  left: 50%;
  transform: translateX(-50%);
  width: 0.12em;
  height: 0.5em;
  background: rgba(255, 255, 255, .75);
  border-radius: 0.1em;
}

/* Taskbar */
.sa-desktop .w11-tb {
  position: absolute;
  left: 0; right: 0;
  bottom: 0;
  height: 1.9em;
  background: rgba(18, 24, 44, .72);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  backdrop-filter: blur(22px) saturate(160%);
  border-top: 0.06em solid rgba(255, 255, 255, .08);
  display: flex;
  align-items: center;
  padding: 0 0.8em;
  gap: 0.5em;
  z-index: 2;
}
.sa-desktop .w11-tb__left {
  flex: 1;
  display: flex;
  align-items: center;
}
.sa-desktop .w11-tb__widget {
  width: 1em;
  height: 1em;
  border-radius: 0.2em;
  background: linear-gradient(135deg, #3fd3ff, #0078d4);
  box-shadow: 0 0.1em 0.2em rgba(0, 0, 0, .3);
}
.sa-desktop .w11-tb__center {
  display: flex;
  align-items: center;
  gap: 0.8em;
}
.sa-desktop .w11-tb__right {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 0.05em;
}
.sa-desktop .w11-tb__time {
  font-size: 0.72em;
  font-weight: 500;
  color: rgba(255, 255, 255, .92);
  line-height: 1;
}
.sa-desktop .w11-tb__date {
  font-size: 0.62em;
  color: rgba(255, 255, 255, .75);
  line-height: 1;
}

/* Taskbar icons */
.sa-desktop .w11-tb__ico {
  position: relative;
  width: 1.1em;
  height: 1.1em;
  border-radius: 0.18em;
  display: inline-block;
}
.sa-desktop .w11-tb__ico--start {
  background-image:
    linear-gradient(#3fd3ff, #3fd3ff),
    linear-gradient(#0078d4, #0078d4),
    linear-gradient(#50c878, #50c878),
    linear-gradient(#f59e0b, #f59e0b);
  background-size: 48% 48%, 48% 48%, 48% 48%, 48% 48%;
  background-position: 0 0, 100% 0, 0 100%, 100% 100%;
  background-repeat: no-repeat;
  background-color: transparent;
}
.sa-desktop .w11-tb__ico--start.is-active::after {
  content: "";
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: -0.4em;
  width: 0.7em;
  height: 0.15em;
  background: #3fd3ff;
  border-radius: 0.1em;
  box-shadow: 0 0 0.3em rgba(63, 211, 255, .6);
}
.sa-desktop .w11-tb__ico--search {
  border-radius: 50%;
  border: 0.14em solid rgba(255, 255, 255, .8);
  background: transparent;
  width: 0.95em;
  height: 0.95em;
}
.sa-desktop .w11-tb__ico--search::after {
  content: "";
  position: absolute;
  bottom: -0.3em;
  right: -0.1em;
  width: 0.4em;
  height: 0.14em;
  background: rgba(255, 255, 255, .8);
  border-radius: 0.1em;
  transform: rotate(45deg);
  transform-origin: left center;
}
.sa-desktop .w11-tb__ico--edge {
  border-radius: 50%;
  background: conic-gradient(from 210deg, #0078d4, #1cbf7a, #3fd3ff, #0052a3, #0078d4);
}
.sa-desktop .w11-tb__ico--files {
  background: linear-gradient(145deg, #ffcc4d, #e0a82e);
  border-radius: 0.15em 0.15em 0.18em 0.18em;
}
.sa-desktop .w11-tb__ico--files::before {
  content: "";
  position: absolute;
  top: -0.15em;
  left: 0;
  width: 45%;
  height: 0.22em;
  background: #e0a82e;
  border-radius: 0.1em 0.1em 0 0;
}
.sa-desktop .w11-tb__ico--store {
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #3fd3ff, #0078d4 70%);
}
.sa-desktop .w11-tb__ico--teams {
  background: #5059c9;
  border-radius: 0.2em;
}
.sa-desktop .w11-tb__ico--teams::before {
  content: "T";
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 0.7em; font-weight: 700;
}
.sa-desktop .w11-tb__ico--copilot {
  border-radius: 50%;
  background: conic-gradient(from 0deg, #00d4ff, #0078d4, #8b5cf6, #ec4899, #f59e0b, #10b981, #00d4ff);
}

@keyframes scn-desktop {
  0%, 14.4%, 22.4%, 56%, 62.4%, 100% { opacity: 0; }
  16%, 20.8%, 57.6%, 60.8%           { opacity: 1; }
}

/* Cursor · classic Windows arrow via inline SVG mask */
.sa-desktop .w11-cursor {
  position: absolute;
  width: 1em;
  height: 1.35em;
  left: 50%;
  top: 96%;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'><path d='M3 2 L3 24 L9 19 L13 28 L17 26 L13 17 L21 17 Z' fill='%23ffffff' stroke='%230b1020' stroke-width='1.1' stroke-linejoin='round' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  filter: drop-shadow(0 0.1em 0.18em rgba(0, 0, 0, .45));
  z-index: 3;
  opacity: 0;
  transform: translate(-10%, -10%) scale(1);
  transform-origin: 15% 10%;
  animation: w11-cursor 25s linear infinite;
  pointer-events: none;
}

@keyframes w11-panel-in {
  0%, 14.4%   { transform: translate(-50%, -50%) scale(0.94); opacity: 0; }
  17.6%       { transform: translate(-50%, -50%) scale(1);    opacity: 1; }
  22.4%       { transform: translate(-50%, -50%) scale(1);    opacity: 1; }
  24%, 100%   { transform: translate(-50%, -50%) scale(0.96); opacity: 0; }
}

@keyframes w11-copilot-pulse {
  0%, 100% { box-shadow: 0 0.15em 0.4em rgba(0, 0, 0, .35), inset 0 0.05em 0 rgba(255, 255, 255, .18), 0 0 0 0 rgba(0, 212, 255, .55); }
  50%      { box-shadow: 0 0.15em 0.4em rgba(0, 0, 0, .35), inset 0 0.05em 0 rgba(255, 255, 255, .18), 0 0 0 0.5em rgba(139, 92, 246, 0); }
}

@keyframes w11-cursor {
  /* Visit 1 · clicks Outlook tile on Start panel (16-20.8%) */
  0%, 16%      { opacity: 0; left: 50%; top: 96%; transform: translate(-10%, -10%) scale(1); }
  16.8%        { opacity: 1; left: 50%; top: 96%; transform: translate(-10%, -10%) scale(1); }
  19.2%        { opacity: 1; left: 65%; top: 38%; transform: translate(-10%, -10%) scale(1); }
  20%          { opacity: 1; left: 65%; top: 38%; transform: translate(-10%, -10%) scale(0.82); }
  20.8%        { opacity: 1; left: 65%; top: 38%; transform: translate(-10%, -10%) scale(1); }
  21.6%, 56.8% { opacity: 0; left: 50%; top: 96%; transform: translate(-10%, -10%) scale(1); }
  /* Visit 2 · clicks Copilot icon on taskbar (57.6-60.8%) */
  57.6%        { opacity: 1; left: 50%; top: 96%; transform: translate(-10%, -10%) scale(1); }
  59.2%        { opacity: 1; left: 60%; top: 97%; transform: translate(-10%, -10%) scale(1); }
  59.84%       { opacity: 1; left: 60%; top: 97%; transform: translate(-10%, -10%) scale(0.82); }
  60.32%       { opacity: 1; left: 60%; top: 97%; transform: translate(-10%, -10%) scale(1); }
  60.8%, 100%  { opacity: 0; left: 60%; top: 97%; transform: translate(-10%, -10%) scale(1); }
}

/* --- Scene 3.5 · Outlook · emails (32–47%) ----------------------------- */
.sa-outlook {
  animation: scn-outlook 25s linear infinite;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: stretch;
  color: #1f2937;
  width: 100%;
  height: 100%;
}
.sa-outlook::before {
  content: "";
  position: absolute; inset: 0;
  background: #faf9f8;
}

/* Outlook chrome (top bar) */
.sa-outlook .ol-chrome {
  position: relative;
  z-index: 1;
  flex: 0 0 2.4em;
  width: 100%;
  background: #0078d4;
  color: #fff;
  display: flex;
  align-items: center;
  padding: 0 0.8em;
  gap: 0.9em;
  box-sizing: border-box;
}
.sa-outlook .ol-chrome__brand {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  font-weight: 600;
  font-size: 0.82em;
}
.sa-outlook .ol-chrome__logo {
  height: 1.4em;
  aspect-ratio: 6.9 / 1;
  display: inline-block;
  background: url("../images/outlook-logo-black-and-white.png") left center / contain no-repeat;
}
.sa-outlook .ol-chrome__title { letter-spacing: 0.01em; }
.sa-outlook .ol-chrome__search {
  flex: 1;
  max-width: 34em;
  height: 1.6em;
  border-radius: 0.25em;
  background: rgba(255, 255, 255, .18);
  display: flex;
  align-items: center;
  gap: 0.5em;
  padding: 0 0.7em;
  font-size: 0.76em;
  color: rgba(255, 255, 255, .92);
}
.sa-outlook .ol-chrome__search-icon {
  width: 0.9em;
  height: 0.9em;
  border-radius: 50%;
  border: 0.12em solid rgba(255, 255, 255, .85);
  position: relative;
}
.sa-outlook .ol-chrome__search-icon::after {
  content: "";
  position: absolute;
  bottom: -0.3em;
  right: -0.05em;
  width: 0.36em;
  height: 0.12em;
  background: rgba(255, 255, 255, .85);
  transform: rotate(45deg);
  transform-origin: left center;
}
.sa-outlook .ol-chrome__search-ph { color: rgba(255, 255, 255, .85); }
.sa-outlook .ol-chrome__actions {
  margin-left: auto;
  display: inline-flex;
  gap: 0.55em;
  align-items: center;
}
.sa-outlook .ol-chrome__btn {
  width: 1.1em;
  height: 1.1em;
  border-radius: 50%;
  background: rgba(255, 255, 255, .22);
}
.sa-outlook .ol-chrome__avatar {
  width: 1.35em;
  height: 1.35em;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 40%, #e5e7eb 0%, #9ca3af 70%);
  position: relative;
}
.sa-outlook .ol-chrome__avatar::after {
  content: "";
  position: absolute;
  bottom: 0;
  left: 50%;
  width: 70%;
  height: 45%;
  background: #9ca3af;
  border-radius: 50% 50% 0 0 / 60% 60% 0 0;
  transform: translateX(-50%);
}

/* Windows-style window controls (min / max / close) */
.sa-outlook .ol-chrome__window {
  align-self: stretch;
  display: flex;
  margin-left: 0.4em;
  margin-right: -0.8em;
}
.sa-outlook .ol-chrome__wbtn {
  width: 2em;
  position: relative;
  display: inline-block;
}
.sa-outlook .ol-chrome__wbtn--min::after {
  content: "";
  position: absolute;
  left: 50%; top: 58%;
  width: 0.75em; height: 0.1em;
  background: #fff;
  transform: translateX(-50%);
  border-radius: 0.05em;
}
.sa-outlook .ol-chrome__wbtn--max::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.7em; height: 0.7em;
  border: 0.1em solid #fff;
  border-radius: 0.05em;
  transform: translate(-50%, -50%);
}
.sa-outlook .ol-chrome__wbtn--close::before,
.sa-outlook .ol-chrome__wbtn--close::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.8em; height: 0.1em;
  background: #fff;
  border-radius: 0.05em;
}
.sa-outlook .ol-chrome__wbtn--close::before { transform: translate(-50%, -50%) rotate(45deg); }
.sa-outlook .ol-chrome__wbtn--close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

/* Body · 3 panes */
.sa-outlook .ol-body {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  width: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: 24% 30% 1fr;
  background: #faf9f8;
}

/* Sidebar */
.sa-outlook .ol-side {
  background: #f3f2f1;
  border-right: 1px solid #e5e4e2;
  padding: 0.75em 0.7em;
  display: flex;
  flex-direction: column;
  gap: 0.6em;
}
.sa-outlook .ol-side__new {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  font-size: 0.76em;
  font-weight: 600;
  color: #fff;
  background: #0078d4;
  padding: 0.5em 0.8em;
  border-radius: 0.25em;
  box-shadow: 0 0.1em 0.25em rgba(0, 120, 212, .3);
  white-space: nowrap;
  align-self: flex-start;
}
.sa-outlook .ol-side__new-icon {
  width: 0.75em;
  height: 0.75em;
  border-radius: 50%;
  background:
    linear-gradient(#fff, #fff) center / 70% 0.12em no-repeat,
    linear-gradient(#fff, #fff) center / 0.12em 70% no-repeat;
}
.sa-outlook .ol-side__folders {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.15em;
}
.sa-outlook .ol-folder {
  display: flex;
  align-items: center;
  gap: 0.5em;
  padding: 0.45em 0.55em;
  border-radius: 0.25em;
  font-size: 0.74em;
  color: #3b3a39;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
}
.sa-outlook .ol-folder.is-active {
  background: #e7f1fb;
  color: #0078d4;
  font-weight: 600;
}
.sa-outlook .ol-folder__icon {
  width: 0.9em;
  height: 0.9em;
  border-radius: 0.1em;
  background: #605e5c;
  flex-shrink: 0;
}
.sa-outlook .ol-folder.is-active .ol-folder__icon { background: #0078d4; }
.sa-outlook .ol-folder__icon--inbox {
  background: transparent;
  border: 0.12em solid currentColor;
  border-radius: 0.1em 0.1em 0.18em 0.18em;
  position: relative;
}
.sa-outlook .ol-folder__icon--inbox::after {
  content: "";
  position: absolute;
  left: 10%; right: 10%;
  top: 45%;
  height: 0.1em;
  background: currentColor;
  border-radius: 0.05em;
}
.sa-outlook .ol-folder__badge {
  margin-left: auto;
  font-size: 0.7em;
  font-weight: 700;
  color: #0078d4;
  background: transparent;
  padding: 0;
}
.sa-outlook .ol-folder.is-active .ol-folder__badge { color: #0078d4; }

/* List pane */
.sa-outlook .ol-list {
  border-right: 1px solid #e5e4e2;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.sa-outlook .ol-list__head {
  padding: 0.75em 0.9em 0.5em;
  border-bottom: 1px solid #e5e4e2;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.5em;
}
.sa-outlook .ol-list__title {
  font-size: 0.88em;
  font-weight: 700;
  color: #201f1e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
.sa-outlook .ol-list__count {
  font-size: 0.68em;
  color: #605e5c;
  font-weight: 500;
  white-space: nowrap;
  flex-shrink: 0;
}
.sa-outlook .ol-item {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 0.55em;
  padding: 0.65em 0.9em;
  border-bottom: 1px solid #edebe9;
  position: relative;
  align-items: start;
}
.sa-outlook .ol-item.is-unread::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 0.2em;
  background: #0078d4;
}
.sa-outlook .ol-item.is-active {
  background: #e7f1fb;
}
.sa-outlook .ol-item__avatar {
  width: 1.7em;
  height: 1.7em;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-weight: 700;
  font-size: 0.72em;
  flex-shrink: 0;
}
.sa-outlook .ol-item__avatar--ms { background: linear-gradient(135deg, #5059c9, #7b83eb); }
.sa-outlook .ol-item__avatar--vaio { background: linear-gradient(135deg, #011248, #1a2654); }
.sa-outlook .ol-item__avatar--intel { background: linear-gradient(135deg, #0071c5, #00a3e0); }
.sa-outlook .ol-item__avatar--co { background: conic-gradient(from 0deg, #00d4ff, #0078d4, #8b5cf6, #ec4899, #f59e0b, #10b981, #00d4ff); }
.sa-outlook .ol-item__body { min-width: 0; }
.sa-outlook .ol-item__top {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 0.4em;
}
.sa-outlook .ol-item__sender {
  font-size: 0.78em;
  font-weight: 600;
  color: #201f1e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sa-outlook .ol-item.is-unread .ol-item__sender { color: #0078d4; font-weight: 700; }
.sa-outlook .ol-item__time {
  font-size: 0.68em;
  color: #605e5c;
  flex-shrink: 0;
}
.sa-outlook .ol-item.is-unread .ol-item__time { color: #0078d4; font-weight: 600; }
.sa-outlook .ol-item__subj {
  font-size: 0.74em;
  color: #323130;
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 0.1em;
}
.sa-outlook .ol-item.is-unread .ol-item__subj { font-weight: 700; color: #201f1e; }
.sa-outlook .ol-item__preview {
  font-size: 0.7em;
  color: #605e5c;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-top: 0.1em;
}

/* Reading pane */
.sa-outlook .ol-read {
  position: relative;
  background: #fff;
  overflow: hidden;
}

/* Empty state */
.sa-outlook .ol-read__empty {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.25em;
  background: #fff;
  animation: ol-read-empty 25s linear infinite;
}
.sa-outlook .ol-read__empty-icon {
  width: 3em;
  height: 2.4em;
  border: 0.14em solid #c8c6c4;
  border-radius: 0.2em 0.2em 0.35em 0.35em;
  position: relative;
  margin-bottom: 0.35em;
}
.sa-outlook .ol-read__empty-icon::after {
  content: "";
  position: absolute;
  left: 14%; right: 14%;
  top: 50%;
  height: 0.14em;
  background: #c8c6c4;
  border-radius: 0.075em;
}
.sa-outlook .ol-read__empty-title {
  font-size: 0.82em;
  font-weight: 600;
  color: #605e5c;
  margin: 0;
}
.sa-outlook .ol-read__empty-sub {
  font-size: 0.7em;
  color: #a19f9d;
  margin: 0;
}

/* Letter state (email content) */
.sa-outlook .ol-read__letter {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  background: #fff;
  opacity: 0;
  animation: ol-read-letter 25s linear infinite;
}
.sa-outlook .ol-read__head {
  padding: 0.9em 1em 0.6em;
  border-bottom: 1px solid #edebe9;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.6em;
}
.sa-outlook .ol-read__subj {
  font-size: 0.95em;
  font-weight: 700;
  color: #201f1e;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sa-outlook .ol-read__actions {
  display: inline-flex;
  gap: 0.4em;
  flex-shrink: 0;
}
.sa-outlook .ol-read__btn {
  font-size: 0.7em;
  font-weight: 600;
  color: #fff;
  background: #0078d4;
  padding: 0.45em 0.8em;
  border-radius: 0.25em;
}
.sa-outlook .ol-read__btn--ghost {
  background: transparent;
  color: #605e5c;
  padding: 0.45em 0.6em;
}
.sa-outlook .ol-read__meta {
  padding: 0.7em 1em;
  border-bottom: 1px solid #edebe9;
  display: flex;
  align-items: center;
  gap: 0.55em;
}
.sa-outlook .ol-read__av {
  width: 1.9em;
  height: 1.9em;
  font-size: 0.75em;
}
.sa-outlook .ol-read__names {
  display: flex;
  flex-direction: column;
  gap: 0.1em;
  min-width: 0;
}
.sa-outlook .ol-read__name {
  font-size: 0.78em;
  font-weight: 600;
  color: #201f1e;
}
.sa-outlook .ol-read__to {
  font-size: 0.68em;
  color: #605e5c;
}
.sa-outlook .ol-read__body {
  padding: 0.9em 1em;
  font-size: 0.76em;
  color: #323130;
  line-height: 1.55;
  text-align: left;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}
.sa-outlook .ol-read__body p { margin: 0; }
.sa-outlook .ol-read__body b { color: #011248; }
.sa-outlook .ol-read__bullets {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.35em;
}
.sa-outlook .ol-read__bullets li {
  position: relative;
  padding-left: 1em;
  line-height: 1.45;
}
.sa-outlook .ol-read__bullets li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5em;
  width: 0.35em;
  height: 0.35em;
  border-radius: 50%;
  background: #0078d4;
}
.sa-outlook .ol-read__cta {
  margin: 0.2em 0 0;
  padding: 0.55em 0.75em;
  background: #f0f6fc;
  border-left: 0.2em solid #0078d4;
  border-radius: 0 0.25em 0.25em 0;
}

/* Cursor inside Outlook — clicks the Positivo email */
.sa-outlook .ol-cursor {
  position: absolute;
  width: 1em;
  height: 1.35em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'><path d='M3 2 L3 24 L9 19 L13 28 L17 26 L13 17 L21 17 Z' fill='%23ffffff' stroke='%230b1020' stroke-width='1.1' stroke-linejoin='round' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  filter: drop-shadow(0 0.1em 0.18em rgba(0, 0, 0, .45));
  z-index: 5;
  opacity: 0;
  transform: translate(-10%, -10%) scale(1);
  transform-origin: 15% 10%;
  animation: ol-cursor 25s linear infinite;
  pointer-events: none;
}

/* Positivo email highlights after cursor click */
.sa-outlook .ol-item--vaio {
  animation: ol-item-select 25s linear infinite;
}

@keyframes ol-read-empty {
  0%, 35.2% { opacity: 1; }
  36.8%     { opacity: 0; }
  100%      { opacity: 0; }
}

@keyframes ol-read-letter {
  0%, 35.2%   { opacity: 0; transform: translateY(0.4em); }
  38.4%       { opacity: 1; transform: translateY(0); }
  56%         { opacity: 1; transform: translateY(0); }
  57.6%, 100% { opacity: 0; transform: translateY(0); }
}

@keyframes ol-item-select {
  0%, 35.2%   { background: transparent; }
  36.8%, 56%  { background: #e7f1fb; }
  57.6%, 100% { background: transparent; }
}

@keyframes ol-cursor {
  /* Scene visible 25.6-56%; cursor does 2 actions: click Positivo email at ~35.2%, click X close at ~53.6% */
  0%, 28.8%   { opacity: 0; left: 80%; top: 82%; transform: translate(-10%, -10%) scale(1); }
  30.4%       { opacity: 1; left: 80%; top: 82%; transform: translate(-10%, -10%) scale(1); }
  34.4%       { opacity: 1; left: 37%; top: 19%; transform: translate(-10%, -10%) scale(1); }
  35.2%       { opacity: 1; left: 37%; top: 19%; transform: translate(-10%, -10%) scale(0.82); }
  36%         { opacity: 1; left: 37%; top: 19%; transform: translate(-10%, -10%) scale(1); }
  44.8%       { opacity: 1; left: 37%; top: 19%; transform: translate(-10%, -10%) scale(1); }
  52.8%       { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  53.6%       { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(0.82); }
  54.4%       { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  55.2%, 100% { opacity: 0; left: 98%; top: 3%; transform: translate(-10%, -10%) scale(1); }
}

@keyframes scn-outlook {
  0%, 22.4%, 57.6%, 100% { opacity: 0; }
  25.6%, 56%             { opacity: 1; }
}

/* --- Scene 4 · Browser Edge (42–61%) ----------------------------------- */
.sa-browser {
  animation: scn-browser 25s linear infinite;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  height: 100%;
  color: #0f172a;
}
.sa-browser::before {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #f3f4f6 0%, #e2e8f0 100%);
}

/* Chrome (Windows-style) */
.sa-browser__chrome {
  position: relative;
  z-index: 1;
  flex: 0 0 2.25em;
  display: flex;
  align-items: center;
  gap: 0.4em;
  padding-left: 0.75em;
  background: #e8ecf1;
  border-bottom: 1px solid #cfd6df;
  box-sizing: border-box;
}
.sa-browser__tab {
  display: inline-flex;
  align-items: center;
  gap: 0.4em;
  padding: 0.3em 0.75em;
  background: #fff;
  border-radius: 6px 6px 0 0;
  font-size: 0.72em;
  font-weight: 600;
  color: #1f2937;
  box-shadow: 0 -1px 0 #cfd6df;
  max-width: 10em;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.sa-browser__tab-dot {
  width: 0.55em;
  height: 0.55em;
  border-radius: 50%;
  background: linear-gradient(135deg, #0078d4, #00b294);
  flex-shrink: 0;
}
.sa-browser__url {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  margin-left: 0.75em;
  padding: 0.25em 0.75em;
  background: #fff;
  border: 1px solid #cfd6df;
  border-radius: 999px;
  font-size: 0.72em;
  color: #334155;
  white-space: nowrap;
}
.sa-browser__url-lock {
  width: 0.55em;
  height: 0.55em;
  border-radius: 50%;
  background: #10b981;
  flex-shrink: 0;
}
.sa-browser__chrome-spacer { flex: 1 1 auto; }

/* Window controls · same visual language as Outlook, dark glyphs on light chrome */
.sa-browser__window {
  align-self: stretch;
  display: flex;
}
.sa-browser__wbtn {
  width: 2em;
  position: relative;
  display: inline-block;
}
.sa-browser__wbtn--min::after {
  content: "";
  position: absolute;
  left: 50%; top: 58%;
  width: 0.75em; height: 0.1em;
  background: #1f2937;
  transform: translateX(-50%);
  border-radius: 0.05em;
}
.sa-browser__wbtn--max::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.7em; height: 0.7em;
  border: 0.1em solid #1f2937;
  border-radius: 0.05em;
  transform: translate(-50%, -50%);
}
.sa-browser__wbtn--close::before,
.sa-browser__wbtn--close::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.8em; height: 0.1em;
  background: #1f2937;
  border-radius: 0.05em;
}
.sa-browser__wbtn--close::before { transform: translate(-50%, -50%) rotate(45deg); }
.sa-browser__wbtn--close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

/* Page · landing layout */
.sa-browser__page {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: transparent;
}

/* Top nav */
.sa-browser__nav {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 1.5em;
  padding: 0.6em 1.25em;
  border-bottom: 1px solid #000;
  background: #000;
}
.sa-browser__logo {
  width: auto;
  height: 1.2em;
  display: block;
  object-fit: contain;
  filter: brightness(0) invert(1);
}
.sa-browser__links {
  display: inline-flex;
  gap: 1em;
  font-size: 0.7em;
  color: rgba(255, 255, 255, 0.85);
  font-weight: 500;
}
.sa-browser__cta-top {
  margin-left: auto;
  padding: 0.35em 0.9em;
  background: #fff;
  color: #000;
  border-radius: 999px;
  font-size: 0.7em;
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* Hero · two-column */
.sa-browser__hero {
  flex: 1 1 60%;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  align-items: center;
  gap: 1em;
  padding: 1em 1.25em;
  background: transparent;
}
.sa-browser__hero-copy {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.4em;
  text-align: left;
}
.sa-browser__eyebrow {
  font-size: 0.62em;
  font-weight: 700;
  color: #0078d4;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.sa-browser__eyebrow--gold { color: #a08147; }
.sa-browser__headline {
  font-family: var(--font-display);
  font-size: 1.35em;
  font-weight: 800;
  line-height: 1.1;
  color: #011248;
  margin: 0;
}
.sa-browser__sub {
  font-size: 0.72em;
  color: #475569;
  line-height: 1.4;
  margin: 0;
}
.sa-browser__ctas {
  display: flex;
  align-self: stretch;
  gap: 0.5em;
  margin-top: 0.3em;
}
.sa-browser__btn {
  padding: 0.45em 0.95em;
  border-radius: 999px;
  font-size: 0.7em;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.sa-browser__btn--primary {
  background: #011248;
  color: #fff;
}
.sa-browser__btn--ghost {
  background: transparent;
  color: #011248;
  border: 1px solid #cbd5e1;
}
.sa-browser__hero-media {
  margin: 0;
  position: relative;
  border-radius: 10px;
  overflow: hidden;
  background: transparent;
  aspect-ratio: 4 / 3;
}
.sa-browser__hero-slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  opacity: 0;
  will-change: opacity;
}
.sa-browser__hero-slide--1 { animation: browser-slide-1 25s linear infinite; }
.sa-browser__hero-slide--2 { animation: browser-slide-2 25s linear infinite; }

/* Carousel dots */
.sa-browser__hero-dots {
  position: absolute;
  left: 50%;
  bottom: 0.55em;
  transform: translateX(-50%);
  display: inline-flex;
  gap: 0.35em;
  padding: 0.22em 0.45em;
  background: rgba(11, 17, 62, 0.35);
  border-radius: 999px;
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
}
.sa-browser__hero-dot {
  width: 0.42em;
  height: 0.42em;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.55);
  will-change: background, width;
}
.sa-browser__hero-dot--1 { animation: browser-dot-1 25s linear infinite; }
.sa-browser__hero-dot--2 { animation: browser-dot-2 25s linear infinite; }

@keyframes browser-slide-1 {
  0%, 38%          { opacity: 0; }
  39%, 44%         { opacity: 1; }
  46%, 100%        { opacity: 0; }
}
@keyframes browser-slide-2 {
  0%, 45%          { opacity: 0; }
  47%, 51%         { opacity: 1; }
  52%, 100%        { opacity: 0; }
}
@keyframes browser-dot-1 {
  0%, 45%    { background: #fff; width: 0.9em; border-radius: 999px; }
  47%, 100%  { background: rgba(255, 255, 255, 0.55); width: 0.42em; border-radius: 50%; }
}
@keyframes browser-dot-2 {
  0%, 45%    { background: rgba(255, 255, 255, 0.55); width: 0.42em; border-radius: 50%; }
  47%, 100%  { background: #fff; width: 0.9em; border-radius: 999px; }
}

/* Feature section */
.sa-browser__feature {
  flex: 1 1 40%;
  display: grid;
  grid-template-columns: 1fr 1.15fr;
  align-items: center;
  gap: 1em;
  padding: 0.9em 1.25em 1em;
  border-top: 1px solid #f1f5f9;
  background: transparent;
}
.sa-browser__feature-media {
  margin: 0;
  border-radius: 10px;
  overflow: hidden;
  aspect-ratio: 5 / 3;
  background: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);
  box-shadow:
    0 6px 16px -6px rgba(11, 17, 62, 0.2),
    0 2px 4px -2px rgba(11, 17, 62, 0.08);
}
.sa-browser__feature-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.sa-browser__feature-copy {
  display: flex;
  flex-direction: column;
  gap: 0.35em;
}
.sa-browser__feature-title {
  font-family: var(--font-display);
  font-size: 1em;
  font-weight: 700;
  color: #011248;
  margin: 0;
  line-height: 1.15;
}
.sa-browser__bullets {
  margin: 0.25em 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.28em;
  font-size: 0.7em;
  color: #334155;
}
.sa-browser__bullets li {
  position: relative;
  padding-left: 1.1em;
}
.sa-browser__bullets li::before {
  content: "";
  position: absolute;
  left: 0; top: 0.42em;
  width: 0.38em;
  height: 0.38em;
  border-radius: 50%;
  background: #0078d4;
}

@keyframes scn-browser {
  0%, 38%, 53%, 100% { opacity: 0; }
  39%, 52%           { opacity: 1; }
}

/* Edge · cursor that moves to close window */
.sa-browser .br-cursor {
  position: absolute;
  width: 1em;
  height: 1.35em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'><path d='M3 2 L3 24 L9 19 L13 28 L17 26 L13 17 L21 17 Z' fill='%23ffffff' stroke='%230b1020' stroke-width='1.1' stroke-linejoin='round' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  left: 55%;
  top: 62%;
  opacity: 0;
  z-index: 5;
  transform: translate(-10%, -10%) scale(1);
  animation: br-cursor 25s linear infinite;
  pointer-events: none;
}
@keyframes br-cursor {
  0%, 48%    { opacity: 0; left: 75%; top: 40%; transform: translate(-10%, -10%) scale(1); }
  49%        { opacity: 1; left: 75%; top: 40%; transform: translate(-10%, -10%) scale(1); }
  50.5%      { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  51%        { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(0.82); }
  51.3%      { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  51.8%, 100% { opacity: 0; left: 98%; top: 3%; transform: translate(-10%, -10%) scale(1); }
}

/* --- Scene 5 · Copilot (57–82%) --------------------------------------- */
.sa-copilot {
  animation: scn-copilot 25s linear infinite;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  width: 100%;
  height: 100%;
  color: #e5e7eb;
  text-align: left;
}
.sa-copilot::before {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1e1b4b 0%, #011248 60%, #111827 100%);
}

/* Chrome */
.sa-copilot__chrome {
  position: relative;
  z-index: 1;
  flex: 0 0 2.4em;
  display: flex;
  align-items: center;
  padding-left: 0.9em;
  background: rgba(8, 11, 32, 0.9);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  box-sizing: border-box;
}
.sa-copilot__brand {
  display: inline-flex;
  align-items: center;
  gap: 0.45em;
  font-size: 0.82em;
  font-weight: 600;
  color: #fff;
}
.sa-copilot__mark {
  height: 1.4em;
  aspect-ratio: 4.1 / 1;
  display: inline-block;
  background: url("../images/copilot-logo.png") left center / contain no-repeat;
}
.sa-copilot__window {
  margin-left: auto;
  align-self: stretch;
  display: flex;
}
.sa-copilot__wbtn {
  width: 2em;
  position: relative;
  display: inline-block;
}
.sa-copilot__wbtn--min::after {
  content: "";
  position: absolute;
  left: 50%; top: 58%;
  width: 0.75em; height: 0.1em;
  background: #fff;
  transform: translateX(-50%);
  border-radius: 0.05em;
}
.sa-copilot__wbtn--max::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.7em; height: 0.7em;
  border: 0.1em solid #fff;
  border-radius: 0.05em;
  transform: translate(-50%, -50%);
}
.sa-copilot__wbtn--close::before,
.sa-copilot__wbtn--close::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  width: 0.8em; height: 0.1em;
  background: #fff;
  border-radius: 0.05em;
}
.sa-copilot__wbtn--close::before { transform: translate(-50%, -50%) rotate(45deg); }
.sa-copilot__wbtn--close::after  { transform: translate(-50%, -50%) rotate(-45deg); }

/* Body */
.sa-copilot__body {
  position: relative;
  z-index: 1;
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 0.9em 1.2em 0.8em;
  gap: 0.55em;
  overflow: hidden;
}
.sa-copilot__thread {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 0.55em;
  overflow: hidden;
}

/* Messages */
.sa-copilot__msg {
  max-width: 82%;
  padding: 0.55em 0.8em;
  border-radius: 0.7em;
  font-size: 0.74em;
  line-height: 1.4;
}
.sa-copilot__msg p { margin: 0 0 0.4em; }
.sa-copilot__msg p:last-child { margin-bottom: 0; }
.sa-copilot__msg b { color: #fff; font-weight: 700; }
.sa-copilot__msg sup { font-size: 0.55em; }
.sa-copilot__msg--user {
  align-self: flex-end;
  background: linear-gradient(135deg, #3b82f6, #6366f1);
  color: #fff;
  border-bottom-right-radius: 0.25em;
}
.sa-copilot__msg--ai {
  align-self: flex-start;
  background: rgba(255, 255, 255, 0.07);
  color: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-bottom-left-radius: 0.25em;
}
.sa-copilot__list {
  margin: 0.2em 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.25em;
}
.sa-copilot__list li {
  position: relative;
  padding-left: 0.9em;
}
.sa-copilot__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.5em;
  width: 0.35em;
  height: 0.35em;
  border-radius: 50%;
  background: linear-gradient(135deg, #7c3aed, #ec4899);
}

/* Card message with product */
.sa-copilot__msg--card {
  padding: 0.45em;
  display: grid;
  grid-template-columns: 6.5em 1fr;
  gap: 0.7em;
  align-items: center;
  max-width: 85%;
}
.sa-copilot__card-media {
  margin: 0;
  border-radius: 0.5em;
  overflow: hidden;
  aspect-ratio: 4 / 3;
  background: linear-gradient(135deg, #f3f4f6, #cbd5e1);
}
.sa-copilot__card-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.sa-copilot__card-copy {
  display: flex;
  flex-direction: column;
  gap: 0.25em;
  min-width: 0;
}
.sa-copilot__card-eyebrow {
  font-size: 0.75em;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #a5b4fc;
}
.sa-copilot__card-title {
  font-size: 0.95em;
  font-weight: 700;
  color: #fff;
  line-height: 1.2;
}
.sa-copilot__card-specs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.4em 0.7em;
  font-size: 0.78em;
  color: rgba(255, 255, 255, 0.8);
}
.sa-copilot__card-specs b { color: #fff; }

/* Typing indicator */
.sa-copilot__msg--typing {
  padding: 0.55em 0.75em;
}
.sa-copilot__typing {
  display: inline-flex;
  gap: 0.3em;
}
.sa-copilot__typing span {
  width: 0.38em;
  height: 0.38em;
  border-radius: 50%;
  background: #fff;
  opacity: 0.6;
  animation: sa-dots 1.2s ease-in-out infinite;
}
.sa-copilot__typing span:nth-child(2) { animation-delay: 0.15s; }
.sa-copilot__typing span:nth-child(3) { animation-delay: 0.3s; }

/* Composer */
.sa-copilot__composer {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.5em;
  padding: 0.45em 0.6em 0.45em 0.9em;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 999px;
}
.sa-copilot__input {
  flex: 1 1 auto;
  font-size: 0.72em;
  color: rgba(255, 255, 255, 0.55);
}
.sa-copilot__send {
  width: 1.5em;
  height: 1.5em;
  border-radius: 50%;
  background: linear-gradient(135deg, #7c3aed, #ec4899);
  position: relative;
}
.sa-copilot__send::before {
  content: "";
  position: absolute;
  left: 52%;
  top: 50%;
  transform: translate(-50%, -50%) rotate(45deg);
  width: 0.5em;
  height: 0.5em;
  border-top: 0.12em solid #fff;
  border-right: 0.12em solid #fff;
  border-top-right-radius: 0.08em;
}

@keyframes scn-copilot {
  0%, 62.4%, 86%, 100% { opacity: 0; }
  64%, 84%             { opacity: 1; }
}

/* Copilot · cursor that moves to close window */
.sa-copilot .cp-cursor {
  position: absolute;
  width: 1em;
  height: 1.35em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'><path d='M3 2 L3 24 L9 19 L13 28 L17 26 L13 17 L21 17 Z' fill='%23ffffff' stroke='%230b1020' stroke-width='1.1' stroke-linejoin='round' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-size: 100% 100%;
  left: 40%;
  top: 55%;
  opacity: 0;
  z-index: 5;
  transform: translate(-10%, -10%) scale(1);
  animation: cp-cursor 25s linear infinite;
  pointer-events: none;
}
@keyframes cp-cursor {
  0%, 76%    { opacity: 0; left: 40%; top: 55%; transform: translate(-10%, -10%) scale(1); }
  77%        { opacity: 1; left: 40%; top: 55%; transform: translate(-10%, -10%) scale(1); }
  80%        { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  80.5%      { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(0.82); }
  81%        { opacity: 1; left: 98%; top: 3%;  transform: translate(-10%, -10%) scale(1); }
  81.5%, 100% { opacity: 0; left: 98%; top: 3%; transform: translate(-10%, -10%) scale(1); }
}


/* --- Scene 7 · Shutdown (88–94%) -------------------------------------- */
.sa-shutdown {
  background: #000;
  animation: scn-shutdown 25s linear infinite;
  gap: 1em;
  grid-auto-flow: row;
}
.sa-shutdown__logo {
  width: auto;
  height: 1.4em;
  filter: brightness(0) invert(1);
  object-fit: contain;
}
.sa-shutdown__spinner {
  width: 1.8em;
  height: 1.8em;
  border-radius: 50%;
  border: 2px solid rgba(255, 255, 255, 0.2);
  border-top-color: #fff;
  animation: sa-spin 1s linear infinite;
}
.sa-shutdown__text {
  font-size: 0.95em;
  color: rgba(255, 255, 255, 0.85);
}
@keyframes scn-shutdown {
  0%, 84%, 96%, 100% { opacity: 0; }
  86%, 94%           { opacity: 1; }
}

/* --- Helpers compartilhados ------------------------------------------- */
@keyframes sa-spin {
  to { transform: rotate(360deg); }
}
@keyframes sa-dots {
  0%, 60%, 100% { transform: translateY(0); opacity: 0.4; }
  30%           { transform: translateY(-0.25em); opacity: 1; }
}
@keyframes sa-shimmer {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
  .screen-anim .screen-anim__scene,
  .screen-anim [class*="sa-"] { animation: none !important; }
  .screen-anim .sa-desktop { opacity: 1; }
}

/* === Hero floating bubbles ================================================ */
.hero-bubble {
  --bubble-tx: 0px;
  --bubble-rot: 0deg;
  position: absolute;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.875rem 1.125rem;
  border-radius: 1.25rem;
  background: #f1f1f1;
  border: 1px solid rgba(11, 17, 62, 0.06);
  box-shadow:
    0 26px 60px -18px rgba(11, 17, 62, 0.35),
    0 6px 18px -6px rgba(11, 17, 62, 0.18),
    inset 0 1px 0 rgba(255, 255, 255, 0.85),
    inset 0 -1px 0 rgba(255, 255, 255, 0.18);
  color: var(--text-primary);
  opacity: 0;
  transform: translate(var(--bubble-tx), 24px) scale(0.82) rotate(var(--bubble-rot));
  filter: blur(16px);
  transition:
    opacity 900ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.34, 1.48, 0.52, 1),
    filter 700ms cubic-bezier(0.22, 1, 0.36, 1);
}
.hero-bubble--left   { --bubble-tx: -56px; --bubble-rot: -7deg; transition-delay: 0ms;   }
.hero-bubble--right  { --bubble-tx:  56px; --bubble-rot:  7deg; transition-delay: 220ms; }
.hero-bubble--left-2 { --bubble-tx: -56px; --bubble-rot: -7deg; transition-delay: 110ms; }
.hero-bubble--right-2 { --bubble-tx: 56px; --bubble-rot:  7deg; transition-delay: 330ms; }
.hero-bubble[hidden] { display: none; }

@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .hero-bubble { background: rgba(255, 255, 255, 0.82); }
}
.hero-bubble.is-in {
  opacity: 1;
  transform: translate(0, 0) scale(1) rotate(0);
  filter: blur(0);
}
.hero-bubble.is-in::after {
  animation: hero-bubble-sheen 1400ms cubic-bezier(0.22, 1, 0.36, 1) 1;
}
@keyframes hero-bubble-sheen {
  0%   { opacity: 0; }
  40%  { opacity: 0.9; }
  100% { opacity: 0; }
}

.hero-bubble__body {
  display: grid;
  gap: 0.125rem;
  line-height: 1.2;
}
.hero-bubble__kicker {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--vaio-gold);
}
.hero-bubble__main {
  font-size: 1rem;
  font-weight: 700;
  color: #08133e;
  white-space: nowrap;
}
.hero-bubble__sub {
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--text-secondary);
  white-space: nowrap;
}
.hero-bubble__sub sup { font-size: 0.5em; }

/* Viz container comum para ambos os balões */
.hero-bubble__viz {
  position: relative;
  flex-shrink: 0;
  width: 2.25rem;
  height: 2.25rem;
  display: inline-grid;
  place-items: center;
  border-radius: 0.625rem;
  background:
    linear-gradient(160deg,
      rgba(8, 19, 62, 0.06) 0%,
      rgba(8, 19, 62, 0.02) 100%);
  border: 1px solid rgba(8, 19, 62, 0.08);
  overflow: hidden;
}

/* --- Balão esquerdo · Arc Reactor (NPU) ---------------------------------- */
/* Housing externo do reator: círculo escuro com rim dourado */
.anim-npu__chip {
  position: relative;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  background:
    radial-gradient(circle at center,
      color-mix(in oklch, var(--vaio-gold) 18%, #011248) 0%,
      #08133e 70%);
  box-shadow:
    inset 0 0 0 1px color-mix(in oklch, var(--vaio-gold) 55%, transparent),
    inset 0 0 6px color-mix(in oklch, var(--vaio-gold) 25%, transparent),
    0 0 8px color-mix(in oklch, var(--vaio-gold) 30%, transparent);
}

/* Coroa de blades segmentadas — aparência icônica do arc reactor */
.anim-npu__chip::before {
  content: "";
  position: absolute;
  inset: 2px;
  border-radius: 50%;
  background: conic-gradient(
    color-mix(in oklch, var(--vaio-gold) 90%, white) 0deg 22deg,
    transparent 22deg 45deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 45deg 67deg,
    transparent 67deg 90deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 90deg 112deg,
    transparent 112deg 135deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 135deg 157deg,
    transparent 157deg 180deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 180deg 202deg,
    transparent 202deg 225deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 225deg 247deg,
    transparent 247deg 270deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 270deg 292deg,
    transparent 292deg 315deg,
    color-mix(in oklch, var(--vaio-gold) 90%, white) 315deg 337deg,
    transparent 337deg 360deg
  );
  -webkit-mask: radial-gradient(circle,
    transparent 0 40%,
    #000 44% 78%,
    transparent 82% 100%);
          mask: radial-gradient(circle,
    transparent 0 40%,
    #000 44% 78%,
    transparent 82% 100%);
  opacity: 0.9;
  animation: arcReactorSpin 9s linear infinite;
  filter: drop-shadow(0 0 2px color-mix(in oklch, var(--vaio-gold) 60%, transparent));
}

/* Casing interno — aro ao redor do core */
.anim-npu__chip::after {
  content: "";
  position: absolute;
  inset: 32%;
  border-radius: 50%;
  border: 1px solid color-mix(in oklch, var(--vaio-gold) 75%, white);
  background:
    radial-gradient(circle,
      color-mix(in oklch, var(--vaio-gold) 30%, #011248) 0%,
      #08133e 100%);
  box-shadow:
    inset 0 0 3px color-mix(in oklch, var(--vaio-gold) 65%, transparent),
    0 0 4px color-mix(in oklch, var(--vaio-gold) 40%, transparent);
}

/* Core central — núcleo branco-dourado pulsando */
.anim-npu__core {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 0.35rem;
  height: 0.35rem;
  border-radius: 50%;
  background:
    radial-gradient(circle,
      #ffffff 0%,
      color-mix(in oklch, var(--vaio-gold) 70%, white) 45%,
      var(--vaio-gold) 100%);
  box-shadow:
    0 0 4px 1px #ffffff,
    0 0 8px 2px color-mix(in oklch, var(--vaio-gold) 85%, transparent),
    0 0 14px 4px color-mix(in oklch, var(--vaio-gold) 45%, transparent);
  z-index: 2;
  animation: npuCorePulse 1.8s var(--ease-in-out) infinite;
}

/* Pinos antigos não fazem sentido no reator — ocultar */
.anim-npu__pin { display: none; }

/* Anéis de energia expandindo para fora do housing */
.anim-npu__ring {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 1.5rem;
  height: 1.5rem;
  border-radius: 50%;
  border: 1px solid color-mix(in oklch, var(--vaio-gold) 80%, transparent);
  transform: translate(-50%, -50%) scale(1);
  opacity: 0;
  animation: npuRing 2.6s var(--ease-out) infinite;
}
.anim-npu__ring--2 { animation-delay: 1.3s; }

@keyframes arcReactorSpin {
  to { transform: rotate(360deg); }
}
@keyframes npuCorePulse {
  0%, 100% {
    transform: scale(1);
    filter: brightness(1);
  }
  50% {
    transform: scale(1.35);
    filter: brightness(1.4);
  }
}
@keyframes npuRing {
  0%   { transform: translate(-50%, -50%) scale(0.55); opacity: 0.9; }
  100% { transform: translate(-50%, -50%) scale(2.0); opacity: 0; }
}

/* --- Balão direito · Pena caindo em espiral ------------------------------- */
.anim-feather {
  overflow: hidden;
}
.anim-feather__icon {
  position: absolute;
  left: 50%;
  top: 0;
  width: 0.875rem;
  height: auto;
  margin-left: -7px;
  filter: drop-shadow(0 1px 1px rgba(8, 19, 62, 0.15));
  animation: featherFall 4.8s var(--ease-in-out) infinite;
  will-change: transform, top;
}

@keyframes featherFall {
  0% {
    top: -50%;
    transform: rotate(-18deg) translateX(-4px);
    opacity: 0;
  }
  10% { opacity: 1; }
  25% { transform: rotate(14deg) translateX(5px); }
  45% { transform: rotate(-12deg) translateX(-5px); }
  65% { transform: rotate(16deg) translateX(5px); }
  85% { transform: rotate(-8deg) translateX(-3px); opacity: 1; }
  100% {
    top: 120%;
    transform: rotate(10deg) translateX(3px);
    opacity: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  .anim-npu__core,
  .anim-npu__ring,
  .anim-feather__icon { animation: none; }
  .anim-feather__icon { top: 30%; transform: rotate(6deg); opacity: 1; }
}

/* --- Balão · Câmera IR · reticle de reconhecimento facial ----------------- */
.anim-camera { overflow: hidden; }
.anim-camera__frame {
  position: relative;
  width: 1.5rem;
  height: 1.5rem;
  display: block;
}
.anim-camera__corner {
  position: absolute;
  width: 0.45rem;
  height: 0.45rem;
  border: 1.5px solid var(--vaio-gold);
  filter: drop-shadow(0 0 2px color-mix(in oklch, var(--vaio-gold) 45%, transparent));
}
.anim-camera__corner--tl { top: 0; left: 0;     border-right: 0; border-bottom: 0; border-top-left-radius: 2px; }
.anim-camera__corner--tr { top: 0; right: 0;    border-left: 0;  border-bottom: 0; border-top-right-radius: 2px; }
.anim-camera__corner--bl { bottom: 0; left: 0;  border-right: 0; border-top: 0;    border-bottom-left-radius: 2px; }
.anim-camera__corner--br { bottom: 0; right: 0; border-left: 0;  border-top: 0;    border-bottom-right-radius: 2px; }
.anim-camera__scan {
  position: absolute;
  left: 8%;
  right: 8%;
  top: 0;
  height: 1.5px;
  background: linear-gradient(90deg,
    transparent 0%,
    color-mix(in oklch, var(--vaio-gold) 95%, white) 50%,
    transparent 100%);
  box-shadow: 0 0 4px color-mix(in oklch, var(--vaio-gold) 75%, transparent);
  animation: cameraScan 2.4s var(--ease-in-out) infinite;
}
.anim-camera__dot {
  position: absolute;
  inset: 0;
  margin: auto;
  width: 0.25rem;
  height: 0.25rem;
  border-radius: 50%;
  background: var(--vaio-gold);
  box-shadow:
    0 0 0 2px rgba(8, 19, 62, 0.05),
    0 0 6px 1px color-mix(in oklch, var(--vaio-gold) 65%, transparent);
  animation: cameraDot 1.8s var(--ease-in-out) infinite;
}
@keyframes cameraScan {
  0%   { top: 8%;  opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { top: 92%; opacity: 0; }
}
@keyframes cameraDot {
  0%, 100% { opacity: 0.45; transform: scale(0.85); }
  50%      { opacity: 1;    transform: scale(1.15); }
}

/* --- Balão · Bateria · carga animada -------------------------------------- */
.anim-battery__shell {
  position: relative;
  width: 1.5rem;
  height: 0.875rem;
  border: 1.5px solid #08133e;
  border-radius: 3px;
  background: rgba(8, 19, 62, 0.04);
  overflow: hidden;
}
.anim-battery__shell::after {
  content: "";
  position: absolute;
  right: -4px;
  top: 50%;
  transform: translateY(-50%);
  width: 2.5px;
  height: 0.4rem;
  border-radius: 0 1px 1px 0;
  background: #08133e;
}
.anim-battery__fill {
  position: absolute;
  inset: 1.5px;
  width: 6%;
  border-radius: 1.5px;
  background: linear-gradient(90deg,
    color-mix(in oklch, var(--vaio-gold) 60%, #1f2a55) 0%,
    color-mix(in oklch, var(--vaio-gold) 95%, white) 100%);
  box-shadow: inset 0 0 4px color-mix(in oklch, var(--vaio-gold) 55%, transparent);
  animation: batteryCharge 3.6s var(--ease-in-out) infinite;
}
@keyframes batteryCharge {
  0%   { width: 6%;  opacity: 0.85; }
  60%  { width: 92%; opacity: 1; }
  85%  { width: 92%; opacity: 1; }
  100% { width: 6%;  opacity: 0.85; }
}

/* --- Balão · Windows 11 Pro · logo de 4 quadrados ------------------------- */
.anim-windows__logo {
  width: 1.5rem;
  height: 1.5rem;
  display: block;
  filter: drop-shadow(0 1px 1px rgba(8, 19, 62, 0.12));
}

@media (prefers-reduced-motion: reduce) {
  .anim-camera__scan,
  .anim-camera__dot,
  .anim-battery__fill { animation: none; }
  .anim-camera__scan { top: 50%; opacity: 1; }
  .anim-battery__fill { width: 92%; }
}

.hero-bubble--left {
  top: 10%;
  left: -11%;
  transition-delay: 0.45s;
  animation: heroBubbleFloatA 6s var(--ease-in-out) infinite alternate 0.6s;
}
.hero-bubble--right {
  top: 52%;
  right: -13%;
  transition-delay: 0.65s;
  animation: heroBubbleFloatB 7s var(--ease-in-out) infinite alternate 0.3s;
}
.hero-bubble--left-2 {
  top: 50%;
  left: -10%;
  transition-delay: 0.55s;
  animation: heroBubbleFloatB 6.6s var(--ease-in-out) infinite alternate 1.2s;
}
.hero-bubble--right-2 {
  top: 8%;
  right: -12%;
  transition-delay: 0.75s;
  animation: heroBubbleFloatA 7.4s var(--ease-in-out) infinite alternate 0.9s;
}

@keyframes heroBubbleFloatA {
  from { translate: 0 0; }
  to   { translate: 0 -10px; }
}
@keyframes heroBubbleFloatB {
  from { translate: 0 0; }
  to   { translate: 0 -12px; }
}

@media (max-width: 767px) {
  .hero-bubble { display: none; }
}

@media (min-width: 1280px) {
  .hero-bubble--left    { top: 8%;  left: -11%; }
  .hero-bubble--right   { top: 54%; right: -13%; }
  .hero-bubble--left-2  { top: 52%; left: -10%; }
  .hero-bubble--right-2 { top: 6%;  right: -12%; }
}

@media (prefers-reduced-motion: reduce) {
  .hero-bubble,
  .hero-bubble--left,
  .hero-bubble--right,
  .hero-bubble--left-2,
  .hero-bubble--right-2 { animation: none; }
}

/* ===========================================================================
   2. TAGLINE BAND
   =========================================================================== */
.tagline-band {
  padding-block: var(--space-24);
  padding-inline: var(--gutter);
  background: #011248;
  color: var(--text-on-brand);
  position: relative;
  isolation: isolate;
  overflow-x: clip;
  overflow-y: visible;
}
.tagline-band::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 20% 50%, color-mix(in oklch, var(--vaio-gold) 14%, transparent) 0, transparent 50%);
  z-index: -1;
}
.tagline-band__inner {
  max-width: var(--container-2xl);
  margin-inline: auto;
  text-align: center;
}
.tagline-band__kicker {
  display: inline-block;
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wider);
  text-transform: uppercase;
  color: var(--vaio-gold);
  margin-bottom: var(--space-4);
}
.tagline-band__title {
  font-family: var(--font-display);
  font-size: var(--fs-h2);
  font-weight: var(--fw-bold);
  line-height: 1.05;
  letter-spacing: var(--ls-tight);
  margin: 0 0 var(--space-6);
}
.tagline-band__text {
  font-size: var(--fs-lead);
  opacity: 0.85;
  max-width: 40rem;
  margin-inline: auto;
}
.tagline-band__rule {
  display: block;
  width: 4rem;
  height: 2px;
  background: var(--vaio-gold);
  margin: var(--space-8) auto var(--space-12);
}

/* Reveal · mesma curva e estilo da headline do hero (fade + slideUp + blur) */
.tagline-band__title,
.tagline-band__rule {
  --reveal-y: 22px;
  --reveal-blur: 10px;
  opacity: 0;
  transform: translateY(var(--reveal-y));
  filter: blur(var(--reveal-blur));
  will-change: opacity, transform, filter;
}
.tagline-band.is-revealed .tagline-band__title,
.tagline-band.is-revealed .tagline-band__rule {
  animation: heroReveal 900ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
}
.tagline-band.is-revealed .tagline-band__title { animation-delay: 0ms; }
.tagline-band.is-revealed .tagline-band__rule  { animation-delay: 220ms; --reveal-y: 12px; }

@media (prefers-reduced-motion: reduce) {
  .tagline-band__title,
  .tagline-band__rule {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}

/* ===========================================================================
   FEATURES EXPLORER · frame com lista vertical de pins; ativo vira card.
   Cada feature tem um <div class="feat-bg" data-bg-for="X" data-bg-type="…">.
   data-bg-type aceita: "full" | "corner-left" | "corner-right" | "anim".
   Pins seguem a estética Apple-glass: sem sombra, bg #ebebf0 com blur.
   =========================================================================== */
.features-explorer {
  position: relative;
  width: 100%;
  max-width: 1200px;
  margin: var(--space-12) auto 0;
  border-radius: 28px;
  overflow: hidden;
  /* Sem bg aqui — o #f5f5f7 vai numa camada interna (.features-explorer__bg)
     com o mesmo border-radius, evitando faixa cinza no antialiasing do clip. */
  background: transparent;
  aspect-ratio: 16 / 10;
  isolation: isolate;
}
@media (max-width: 768px) {
  .features-explorer { aspect-ratio: 4 / 5; border-radius: 20px; }
}

/* --- Camada de fundos · cross-fade entre features ---
       Sem bg aqui também: como sempre há uma feature ativa com sua própria
       imagem cobrindo 100% do frame, o estado vazio nunca acontece na prática.
       Manter qualquer cor sólida nesta camada faz reaparecer a faixa nos
       cantos arredondados (antialiasing do clip do parent). */
.features-explorer__bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
}
.feat-bg {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  overflow: hidden;
  background-clip: padding-box;
  will-change: opacity;
  opacity: 0;
  visibility: hidden;
  z-index: 0;
  transition:
    opacity 700ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 700ms;
}
/* Bg anterior · permanece visível por baixo enquanto o novo entra */
.feat-bg.is-prev {
  opacity: 1;
  visibility: visible;
  z-index: 1;
  transition: none;
}
/* Bg que está virando ativo · entra por cima apenas com fade-in (sem scale) */
.feat-bg.is-active {
  opacity: 1;
  visibility: visible;
  z-index: 2;
  transition:
    opacity 700ms cubic-bezier(0.22, 1, 0.36, 1),
    visibility 0s linear 0s;
}
/* Quando o bg vem por background-image (inline style) → cover sem distorção */
.feat-bg[data-bg-type="full"] {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.feat-bg__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  pointer-events: none;
}

/* Variantes de fundo */
[data-bg-type="corner-left"] .feat-bg__img--corner {
  width: auto;
  height: 100%;
  max-width: 70%;
  object-fit: contain;
  object-position: left center;
  margin-right: auto;
}
[data-bg-type="corner-right"] .feat-bg__img--corner {
  width: auto;
  height: 100%;
  max-width: 70%;
  object-fit: contain;
  object-position: right center;
  margin-left: auto;
}
[data-bg-type="corner-left"],
[data-bg-type="corner-right"] {
  display: flex;
}

/* Sequência de imagens (canvas) */
.feat-bg__anim {
  position: absolute;
  inset: 0;
}
.feat-bg__anim canvas,
.feat-bg__anim img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* --- Digital biométrica · slide "teclado" (componentes/digital.html aplicado).
   SVG é populada via JS (sets --len/--delay/--exit-delay por path).
   Entrada dispara em .is-active, saída em .is-prev. */
.feat-bg__fingerprint {
  position: absolute;
  left: 67.8%;
  top: 73%;
  width: 45px;
  aspect-ratio: 3 / 4;
  transform: translate(-50%, -50%) rotate(8deg);
  pointer-events: none;
  z-index: 1;
  overflow: visible;
  filter: drop-shadow(0 0 4px rgba(57, 198, 255, 0.55));
}
.feat-bg__fingerprint path {
  fill: none;
  stroke: #39c6ff;
  stroke-width: 0.8;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  stroke-dasharray: var(--len);
  stroke-dashoffset: var(--len); /* invisível por padrão */
}
.feat-bg.is-active[data-bg-for="teclado"] .feat-bg__fingerprint path {
  animation: fp-draw 1s cubic-bezier(.5, .05, .2, 1) var(--delay, 0s) forwards;
}
/* Saída: todos os paths começam quase juntos e desaparecem rápido, dentro
   da janela de 700ms do .is-prev (cross-fade do bg).
   fill: both → durante o --exit-delay, aplica o keyframe 0% (desenhado),
   evitando o flash invisível-desenhado-invisível antes do undraw rodar. */
.feat-bg.is-prev[data-bg-for="teclado"] .feat-bg__fingerprint path {
  animation: fp-undraw 0.35s cubic-bezier(.4, 0, .6, 1) var(--exit-delay, 0s) both;
}
@keyframes fp-draw {
  0%   { stroke-dashoffset: var(--len); stroke: #cdefff; }
  65%  { stroke: #7ad4ff; }
  100% { stroke-dashoffset: 0; stroke: #39c6ff; }
}
@keyframes fp-undraw {
  0%   { stroke-dashoffset: 0; stroke: #39c6ff; }
  100% { stroke-dashoffset: var(--len); stroke: #cdefff; }
}
@media (prefers-reduced-motion: reduce) {
  .feat-bg.is-active[data-bg-for="teclado"] .feat-bg__fingerprint path,
  .feat-bg.is-prev[data-bg-for="teclado"]   .feat-bg__fingerprint path {
    animation: none;
  }
}
@media (max-width: 768px) {
  .feat-bg__fingerprint { width: 20px; }
}

/* --- Lista vertical de pins (à esquerda do frame) --- */
.features-explorer__list {
  position: absolute;
  top: 50%;
  left: 1rem;
  transform: translateY(-50%);
  z-index: 2;
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  max-width: 440px;
}
@media (max-width: 768px) {
  .features-explorer__list { left: 1rem; right: 1rem; max-width: none; }
}

.feat-item {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  position: relative;
}

/* --- Pin (pílula) --- */
.feat-pin {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.625rem 1.125rem 0.625rem 0.625rem;
  background: rgba(235, 235, 240, 0.7); /* #ebebf0 com transparência → glass */
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 999px;
  color: #000;
  font: 600 1.0625rem/1 var(--font-sans, system-ui);
  letter-spacing: -0.01em;
  cursor: pointer;
  white-space: nowrap;
  transition: background 240ms ease, transform 240ms cubic-bezier(0.22, 1, 0.36, 1);
}
.feat-pin:hover {
  background: rgba(235, 235, 240, 0.92);
  transform: translateX(2px);
}
.feat-pin:focus-visible {
  outline: 2px solid var(--vaio-gold, #d4af37);
  outline-offset: 3px;
}

/* Ícone + (círculo com plus desenhado) */
.feat-pin__icon {
  position: relative;
  display: inline-block;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid rgba(0, 0, 0, 0.45);
  flex-shrink: 0;
}
.feat-pin__icon::before,
.feat-pin__icon::after {
  content: "";
  position: absolute;
  inset: 50%;
  width: 9px;
  height: 1.4px;
  background: currentColor;
  transform: translate(-50%, -50%);
}
.feat-pin__icon::after { transform: translate(-50%, -50%) rotate(90deg); }

/* --- Card (substitui o pin do item ativo) --- */
.feat-card {
  display: none; /* só aparece no item ativo */
  width: min(420px, 100%);
  max-width: 320px;
  padding: 1.375rem 1.625rem 1.5rem;
  background: rgba(235, 235, 240, 0.7);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 22px;
  color: #000;
  text-align: left;
  animation: feat-card-in 360ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.feat-card__title {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: #000;
  display: inline;
}
.feat-card__desc {
  display: inline;
  margin: 0;
  font-size: 1rem;
  line-height: 1.35;
  color: #000;
}
.feat-card__title + .feat-card__desc { margin-left: 0.25rem; }

/* Item ativo · esconde o pin, mostra o card */
.feat-item.is-active .feat-pin { display: none; }
.feat-item.is-active .feat-card { display: block; }

@keyframes feat-card-in {
  from { opacity: 0; transform: translateY(-4px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* --- Navegação (vertical · à direita do frame) --- */
.features-explorer__nav {
  position: absolute;
  right: 1rem;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  z-index: 3;
}
@media (max-width: 768px) {
  .features-explorer__nav { display: none; }
}
.feat-nav-btn {
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(235, 235, 240, 0.7);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 50%;
  color: #000;
  cursor: pointer;
  padding: 0;
  transition: background 240ms ease;
}
.feat-nav-btn:hover { background: rgba(235, 235, 240, 0.92); }
.feat-nav-btn:focus-visible {
  outline: 2px solid var(--vaio-gold, #d4af37);
  outline-offset: 3px;
}
.feat-nav-btn svg { width: 16px; height: 16px; }
.feat-nav-btn[disabled] { opacity: 0.4; cursor: not-allowed; }

/* --- Botão fechar (canto sup. direito) --- */
.features-explorer__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(235, 235, 240, 0.7);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.45);
  border-radius: 50%;
  color: #000;
  cursor: pointer;
  z-index: 4;
  transition: background 240ms ease;
}
.features-explorer__close:hover { background: rgba(235, 235, 240, 0.92); }
.features-explorer__close svg { width: 14px; height: 14px; }
.features-explorer__close[hidden] { display: none; }

/* --- Barra de progresso (sutil, dentro da lista, abaixo do último pin) --- */
.features-explorer__progress {
  list-style: none;
  width: 140px;
  max-width: 70%;
  height: 2px;
  margin-top: 0.875rem;
  margin-left: 1rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(12px) saturate(160%);
  -webkit-backdrop-filter: blur(12px) saturate(160%);
  overflow: hidden;
}
.feat-progress__fill {
  width: 100%;
  height: 100%;
  background: var(--vaio-gold, #d4af37);
  border-radius: inherit;
  transform: scaleX(0);
  transform-origin: left center;
}
.features-explorer.is-playing .feat-progress__fill {
  animation: feat-progress var(--feat-autoplay, 5000ms) linear forwards;
}
@keyframes feat-progress {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* ===========================================================================
   FEATURES EXPLORER · MOBILE (≤ 768px)
   Bloco posicionado AQUI (depois de todas as regras base) para vencer
   por ordem de cascata, dado que muitas regras base têm mesma especificidade.
   - Pins horizontal scrollable ACIMA do bg
   - Descrição do item ativo aparece em card ABAIXO do bg
   - BG card vira aspect 3/2 (≈ 16:10 das imagens, ~6% crop só nas laterais)
   =========================================================================== */
/* Caption slot · default escondido (desktop usa o card inline). */
.features-explorer__caption { display: none; }

@media (max-width: 768px) {
  .features-explorer {
    aspect-ratio: auto;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    border-radius: 0;
    overflow: visible;
    background: transparent;
    position: relative;
  }
  /* Lista de pins · scroll horizontal acima do bg (order -1) */
  .features-explorer__list {
    position: static;
    transform: none;
    flex-direction: row;
    align-items: center;
    gap: 0.5rem;
    overflow-x: auto;
    overflow-y: hidden;
    padding: 0.25rem 0 0.5rem;
    margin: 0;
    max-width: none;
    scrollbar-width: none;
    -ms-overflow-style: none;
    scroll-snap-type: x proximity;
    flex-shrink: 0;
    order: -1;
  }
  .features-explorer__list::-webkit-scrollbar { display: none; }
  .features-explorer__list > .feat-item {
    flex-shrink: 0;
    scroll-snap-align: start;
  }
  /* Pin compacto */
  .feat-pin {
    padding: 0.5rem 0.875rem 0.5rem 0.5rem;
    font-size: 0.875rem;
    gap: 0.5rem;
  }
  .feat-pin__icon { width: 18px; height: 18px; }
  .feat-pin__icon::before,
  .feat-pin__icon::after { width: 7px; }
  /* Pin ativo: branco sólido (sem morph para card no mobile) */
  .feat-item.is-active .feat-pin {
    display: inline-flex;
    background: #fff;
    color: #000;
    border-color: rgba(0, 0, 0, 0.08);
  }
  .feat-item.is-active .feat-pin .feat-pin__icon {
    border-color: rgba(0, 0, 0, 0.45);
    color: #000;
  }
  /* Os .feat-card dentro da lista NÃO aparecem no mobile —
     o conteúdo do ativo é clonado pelo JS no .features-explorer__caption */
  .feat-item .feat-card,
  .feat-item.is-active .feat-card { display: none; }

  /* Bg · flex item central com aspect 3/2 e cantos arredondados */
  .features-explorer__bg {
    position: relative;
    inset: auto;
    aspect-ratio: 3 / 2;
    border-radius: 18px;
    overflow: hidden;
    order: 0;
  }

  /* Caption · slot de descrição ABAIXO da imagem (flex item, order 2).
     Conteúdo populado por JS (.feat-card__title + .feat-card__desc do ativo). */
  .features-explorer__caption {
    display: block;
    order: 2;
    margin-top: 0.25rem;
    padding: 0.875rem 1.125rem;
    background: rgba(235, 235, 240, 0.92);
    border: 1px solid rgba(255, 255, 255, 0.45);
    border-radius: 14px;
    color: #000;
    text-align: left;
    animation: feat-card-in 320ms cubic-bezier(0.22, 1, 0.36, 1) both;
  }
  .features-explorer__caption .feat-card__title {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    display: inline;
  }
  .features-explorer__caption .feat-card__desc {
    display: inline;
    margin: 0;
    font-size: 0.9375rem;
    line-height: 1.35;
  }
  .features-explorer__caption .feat-card__title + .feat-card__desc { margin-left: 0.25rem; }

  /* Auxiliares escondidos no mobile */
  .features-explorer__progress,
  .features-explorer__close { display: none; }
}

/* ===========================================================================
   ENTRADA · animação staggered, mais lenta e contemplativa
   =========================================================================== */
.features-explorer {
  opacity: 0;
  transform: scale(0.94) translateY(28px);
  transition:
    opacity 1200ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1400ms cubic-bezier(0.22, 1, 0.36, 1);
}
.features-explorer.is-revealed {
  opacity: 1;
  transform: scale(1) translateY(0);
}

/* Itens individuais — duração mais longa */
.features-explorer .feat-bg.is-active,
.features-explorer .feat-item,
.features-explorer__nav .feat-nav-btn,
.features-explorer__close,
.features-explorer__progress {
  opacity: 0;
  transition:
    opacity 1000ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1);
}
.features-explorer .feat-item { transform: translateX(-22px); }
.features-explorer__nav .feat-nav-btn { transform: translateX(16px); }
.features-explorer__close { transform: translateY(-10px) scale(0.9); }
.features-explorer__progress { transform: translateX(-12px); }

.features-explorer.is-revealed .feat-bg.is-active,
.features-explorer.is-revealed .feat-item,
.features-explorer.is-revealed .features-explorer__nav .feat-nav-btn,
.features-explorer.is-revealed .features-explorer__close,
.features-explorer.is-revealed .features-explorer__progress {
  opacity: 1;
  transform: none;
}

/* Stagger mais espaçado · começa depois do frame terminar */
.features-explorer.is-revealed .feat-bg.is-active           { transition-delay: 400ms; }
.features-explorer.is-revealed .feat-item:nth-child(1)      { transition-delay: 700ms; }
.features-explorer.is-revealed .feat-item:nth-child(2)      { transition-delay: 820ms; }
.features-explorer.is-revealed .feat-item:nth-child(3)      { transition-delay: 940ms; }
.features-explorer.is-revealed .feat-item:nth-child(4)      { transition-delay: 1060ms; }
.features-explorer.is-revealed .feat-item:nth-child(5)      { transition-delay: 1180ms; }
.features-explorer.is-revealed .feat-item:nth-child(6)      { transition-delay: 1300ms; }
.features-explorer.is-revealed .feat-item:nth-child(7)      { transition-delay: 1420ms; }
.features-explorer.is-revealed .feat-item:nth-child(8)      { transition-delay: 1540ms; }
.features-explorer.is-revealed .feat-item:nth-child(9)      { transition-delay: 1660ms; }
.features-explorer.is-revealed .feat-item:nth-child(10)     { transition-delay: 1780ms; }
.features-explorer.is-revealed .features-explorer__progress { transition-delay: 1900ms; }
.features-explorer.is-revealed .features-explorer__nav .feat-nav-btn:first-child { transition-delay: 2020ms; }
.features-explorer.is-revealed .features-explorer__nav .feat-nav-btn:last-child  { transition-delay: 2120ms; }
.features-explorer.is-revealed .features-explorer__close    { transition-delay: 2220ms; }

@media (prefers-reduced-motion: reduce) {
  .features-explorer,
  .feat-bg, .feat-pin, .feat-card, .feat-item,
  .feat-nav-btn, .features-explorer__close, .features-explorer__progress,
  .feat-progress__fill {
    transition: none !important;
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
  .feat-progress__fill { transform: scaleX(0) !important; }
}

/* ===========================================================================
   4. VÍDEO
   =========================================================================== */
.video__frame {
  max-width: var(--container-xl);
  margin-inline: auto;
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-2xl);
  position: relative;
}
.video__caption {
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--text-muted);
  margin-top: var(--space-4);
}

/* Video reveal · animação de entrada (kicker → título → lead → frame em cascata).
   --reveal-delay vem do JS (initVideoReveal) com 120ms entre cada item. */
.video-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity 700ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 800ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--reveal-delay, 0ms);
}
.video-reveal.is-in {
  opacity: 1;
  transform: none;
}
@media (prefers-reduced-motion: reduce) {
  .video-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* ===========================================================================
   5. NARRATIVE
   =========================================================================== */
.narrative__grid {
  display: flex;
  flex-direction: column;
  gap: var(--space-10);
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
}
.narrative__content {
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
  text-align: left;
}
.narrative__content .section-heading__title {
  margin: 0;
  width: 100%;
  max-width: none;
}
.narrative__content p {
  font-size: var(--fs-md);
  line-height: var(--lh-relaxed);
  color: #000;
  margin-top: var(--space-5);
  width: 100%;
  max-width: none;
}

/* === Gallery: 2 colunas (esq: 2 cards / dir: 1 card alto) — ~500px cada coluna num container de 1000px === */
.narrative__gallery {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.3125rem; /* 21px de respiro entre as colunas */
  width: 100%;
  max-width: 1000px;
  margin-inline: auto;
}
@media (max-width: 768px) {
  .narrative__gallery { grid-template-columns: 1fr; }
}
.narrative__col {
  display: flex;
  flex-direction: column;
  gap: 1.3125rem;
  min-height: 0;
}
.narrative__card {
  position: relative;
  margin: 0;
  background: #f5f5f7;
  border-radius: 1.25rem; /* 20px */
  overflow: hidden;
  isolation: isolate;
}
.narrative__col--left .narrative__card {
  flex: 0 0 auto;
  width: 100%;
  aspect-ratio: 480 / 310; /* Figma: cards 480×310 → 380×245.4 */
}
.narrative__col--right .narrative__card--tall {
  flex: 1 1 100%;
  width: 100%;
  /* Altura herdada do row do grid (= soma dos 2 cards da esquerda + gap) */
}

/* Card 1 · laptop com infográfico — posição exata do Figma */
.narrative__card--info > img {
  position: absolute;
  left: 17.5%;     /* 84/480 */
  top: 11.61%;     /* 36/310 */
  width: 72.08%;   /* 346/480 */
  height: auto;
  display: block;
  object-fit: contain;
}

/* Card 2 · keyboard com waves SVG sobreposto top-left */
.narrative__card--keyboard > img:not(.narrative__waves) {
  position: absolute;
  left: 25.62%;     /* 123/480 */
  bottom: -12.58%;  /* imagem sangra 39px abaixo do card (310 → -39) */
  width: 87.08%;    /* 418/480 */
  height: auto;
  display: block;
  object-fit: contain;
}
.narrative__waves {
  position: absolute;
  top: 0;
  left: 0;
  width: 45.62%;   /* 219/480 — bbox do svg ancorada no topo-esquerdo do card */
  height: auto;
  pointer-events: none;
  z-index: 1;
}

/* Card 3 · 3 imagens stacked — posições exatas do Figma (480×641) */
.narrative__stack-img {
  position: absolute;
  left: 21.04%;     /* 101/480 — alinhamento horizontal comum às 3 */
  display: block;
  height: auto;
  object-fit: contain;
}
.narrative__stack-img--top { /* 276×183 */
  top: 11.39%;      /* 73/641 */
  width: 57.5%;     /* 276/480 */
  aspect-ratio: 276 / 183;
}
.narrative__stack-img--mid { /* 281×34 — perfil lateral */
  top: 46.02%;      /* 295/641 */
  width: 58.54%;    /* 281/480 */
  aspect-ratio: 281 / 34;
}
.narrative__stack-img--bot { /* 282×196 */
  top: 57.88%;      /* 371/641 */
  width: 58.75%;    /* 282/480 */
  aspect-ratio: 282 / 196;
}

@media (max-width: 768px) {
  .narrative__gallery {
    grid-template-columns: 1fr;
    aspect-ratio: auto;
  }
  .narrative__col--right .narrative__card--tall {
    aspect-ratio: 480 / 641;
  }
}

/* === Entrada em cascata (cards + imagens + texto) — cinematográfica e lenta === */
.narrative [data-narrative-anim] {
  opacity: 0;
  will-change: opacity, transform, filter;
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1300ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 1100ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* Estados iniciais — cada peça parte de uma direção própria, com mais
   deslocamento e blur leve no texto pra dar peso na entrada. */
.narrative [data-narrative-anim="title"] { transform: translate3d(0, 32px, 0); filter: blur(6px); }
.narrative [data-narrative-anim="desc"]  { transform: translate3d(0, 28px, 0); filter: blur(6px); }

.narrative [data-narrative-anim="card-1"] { transform: translate3d(-44px, 40px, 0) scale(0.94); }
.narrative [data-narrative-anim="card-2"] { transform: translate3d(-44px, 48px, 0) scale(0.94); }
.narrative [data-narrative-anim="card-3"] { transform: translate3d(44px, 40px, 0) scale(0.94); }

.narrative [data-narrative-anim="img-1"]  { transform: translate3d(0, 36px, 0) scale(1.06); filter: blur(8px); }
.narrative [data-narrative-anim="img-2"]  { transform: translate3d(0, 40px, 0) scale(1.06); filter: blur(8px); }
.narrative [data-narrative-anim="waves"]  { transform: translate3d(-32px, -20px, 0) rotate(-8deg); }

.narrative [data-narrative-anim="stack-1"] { transform: translate3d(0, -32px, 0) scale(0.92); }
.narrative [data-narrative-anim="stack-2"] { transform: translate3d(-44px, 0, 0); }
.narrative [data-narrative-anim="stack-3"] { transform: translate3d(0, 32px, 0) scale(0.92); }

/* Estado final — disparado quando .narrative.is-in */
.narrative.is-in [data-narrative-anim] {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1) rotate(0);
  filter: blur(0);
}

/* Stagger mais espaçado · sequência total ≈ 2.6s */
.narrative.is-in [data-narrative-anim="title"]   { transition-delay: 0ms; }
.narrative.is-in [data-narrative-anim="desc"]    { transition-delay: 280ms; }
.narrative.is-in [data-narrative-anim="card-1"]  { transition-delay: 720ms; }
.narrative.is-in [data-narrative-anim="card-3"]  { transition-delay: 920ms; }
.narrative.is-in [data-narrative-anim="card-2"]  { transition-delay: 1120ms; }
.narrative.is-in [data-narrative-anim="img-1"]   { transition-delay: 1100ms; }
.narrative.is-in [data-narrative-anim="stack-1"] { transition-delay: 1300ms; }
.narrative.is-in [data-narrative-anim="stack-2"] { transition-delay: 1500ms; }
.narrative.is-in [data-narrative-anim="stack-3"] { transition-delay: 1700ms; }
.narrative.is-in [data-narrative-anim="img-2"]   { transition-delay: 1500ms; }
.narrative.is-in [data-narrative-anim="waves"]   { transition-delay: 1900ms; }

/* `.reveal` deixa de bloquear o conteúdo (controlado por data-narrative-anim) */
.narrative__content.reveal,
.narrative__media.reveal {
  opacity: 1;
  transform: none;
  transition: none;
}

@media (prefers-reduced-motion: reduce) {
  .narrative [data-narrative-anim] {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* ===========================================================================
   DEEP DIVE (shared layout: image + content)
   =========================================================================== */
.deep-dive__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-12);
  align-items: center;
}

/* Variante com fundo diagonal · cobre o conteúdo via clip-path,
   deixando uma cunha exposta no canto superior. */
.deep-dive--diagonal {
  background: transparent !important;
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.deep-dive--diagonal::before {
  content: "";
  position: absolute;
  inset: 0;
  background: #4A5162;
  /* Diagonal: canto sup. esquerdo cheio · canto sup. direito cortado 30% abaixo */
  clip-path: polygon(0 0, 100% 30%, 100% 100%, 0 100%);
  z-index: -1;
}
@media (max-width: 768px) {
  .deep-dive--diagonal::before {
    clip-path: polygon(0 0, 100% 12%, 100% 100%, 0 100%);
  }
  /* Empurra o título mais pra baixo para entrar dentro do bg escuro diagonal. */
  #ai-pc { padding-top: 130px; }
}
/* Container da seção do processador limitado a 1200px (em vez do 1440px global) */
#ai-pc.deep-dive > .deep-dive__grid {
  max-width: var(--container-xl);
}

/* ===========================================================================
   AI-PC · entrada escalonada (texto → selos → dashboard)
   Disparada quando .is-revealed é adicionado pela IO (initAiPcReveal).
   =========================================================================== */
#ai-pc .section-heading__title,
#ai-pc .deep-dive__content > p,
#ai-pc .chip-row,
#ai-pc .chip-row__text,
#ai-pc .windows-desktop {
  opacity: 0;
  transform: translateY(28px);
  filter: blur(6px);
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1300ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 1100ms cubic-bezier(0.22, 1, 0.36, 1);
}
#ai-pc.is-revealed .section-heading__title,
#ai-pc.is-revealed .deep-dive__content > p,
#ai-pc.is-revealed .chip-row,
#ai-pc.is-revealed .chip-row__text,
#ai-pc.is-revealed .windows-desktop {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}
/* Stagger · cada peça espera a anterior assentar */
#ai-pc.is-revealed .section-heading__title { transition-delay: 0ms; }
#ai-pc.is-revealed .deep-dive__content > p { transition-delay: 280ms; }
#ai-pc.is-revealed .chip-row               { transition-delay: 720ms; }
#ai-pc.is-revealed .chip-row__text         { transition-delay: 980ms; }
#ai-pc.is-revealed .windows-desktop        { transition-delay: 1280ms; }

@media (prefers-reduced-motion: reduce) {
  #ai-pc .section-heading__title,
  #ai-pc .deep-dive__content > p,
  #ai-pc .chip-row,
  #ai-pc .chip-row__text,
  #ai-pc .windows-desktop {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

/* Pausa todas as animações dentro do componente até a seção ser revelada.
   Sem isso, as janelas (Teams/Excel/Copilot) abrem no page load e chegam
   estáticas quando o usuário rola até a seção. */
#ai-pc .windows-desktop *,
#ai-pc .windows-desktop *::before,
#ai-pc .windows-desktop *::after {
  animation-play-state: paused;
}
#ai-pc.is-revealed .windows-desktop *,
#ai-pc.is-revealed .windows-desktop *::before,
#ai-pc.is-revealed .windows-desktop *::after {
  animation-play-state: running;
}

/* Janelas abrem só DEPOIS do componente terminar o fade-in (transition-delay
   1280ms + ~900ms duração ≈ 2.2s). Stagger entre as janelas mantido. */
#ai-pc.is-revealed .windows-desktop .win-teams   { animation-delay: 2.0s, 0.5s; }
#ai-pc.is-revealed .windows-desktop .win-excel   { animation-delay: 2.4s, 1.5s; }
#ai-pc.is-revealed .windows-desktop .win-copilot { animation-delay: 2.9s, 3s; }
#ai-pc.is-revealed .windows-desktop .npu-widget  { animation-delay: 3.3s; }

/* Conteúdo do Copilot (msg user → msg AI → linhas) cascateia depois que a
   janela do Copilot abriu (2.9s). */
#ai-pc.is-revealed .windows-desktop .chat-msg-user          { animation-delay: 3.6s; }
#ai-pc.is-revealed .windows-desktop .chat-msg-ai            { animation-delay: 4.2s; }
#ai-pc.is-revealed .windows-desktop .chat-line:nth-child(1) { animation-delay: 4.5s; }
#ai-pc.is-revealed .windows-desktop .chat-line:nth-child(2) { animation-delay: 4.9s; }
#ai-pc.is-revealed .windows-desktop .chat-line:nth-child(3) { animation-delay: 5.3s; }
#ai-pc.is-revealed .windows-desktop .chat-line:nth-child(4) { animation-delay: 5.7s; }

/* ===========================================================================
   WINDOWS 11 WORKSPACE · cena animada (Teams + Excel + Copilot + taskbar)
   Tudo escopado em .windows-desktop pra não vazar pro resto da LP.
   Componente projetado pra 568×600 — encaixa exato na coluna direita do
   .deep-dive__grid (1200 / 2 - gap = ~568px).
   =========================================================================== */
.windows-desktop {
  --w11-accent: #0078D4;
  --w11-text: #1A1A1A;
  --w11-text-secondary: #5C5C5C;
  --w11-divider: rgba(0, 0, 0, 0.08);
  --w11-teams: #5B5FC7;
  --w11-excel: #21A366;
  --w11-excel-deep: #107C41;
  --w11-copilot-1: #B19CFF;
  --w11-copilot-2: #2E7DFF;
  --w11-font: "Roboto", system-ui, -apple-system, sans-serif;

  width: 568px;
  height: 600px;
  max-width: 100%;
  border-radius: 12px;
  overflow: hidden;
  position: relative;
  font-family: var(--w11-font);
  box-shadow:
    0 30px 60px -15px rgba(0, 0, 0, 0.6),
    0 0 0 1px rgba(255, 255, 255, 0.05);
  background:
    radial-gradient(ellipse 60% 50% at 50% 50%, #1F62B6 0%, transparent 70%),
    radial-gradient(ellipse 80% 70% at 50% 50%, #3B82C8 0%, transparent 60%),
    linear-gradient(135deg, #C8E1F5 0%, #6FA8D9 50%, #1A4F8C 100%);
  margin-inline: auto;
}
.windows-desktop *,
.windows-desktop *::before,
.windows-desktop *::after { box-sizing: border-box; }

/* Bloom wallpaper */
.windows-desktop .bloom { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
.windows-desktop .bloom-ribbon {
  position: absolute;
  border-radius: 50%;
  filter: blur(8px);
  opacity: 0.85;
}
.windows-desktop .bloom-1 {
  width: 480px; height: 480px;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle at 35% 40%, rgba(255,255,255,0.4) 0%, rgba(110,170,225,0.3) 30%, transparent 60%);
  animation: w11-drift-1 18s ease-in-out infinite;
}
.windows-desktop .bloom-2 {
  width: 380px; height: 380px;
  top: 45%; left: 45%;
  transform: translate(-50%, -50%);
  background:
    radial-gradient(circle at 30% 30%, #5DA0D6 0%, transparent 50%),
    radial-gradient(circle at 70% 70%, #1F5BAC 0%, transparent 60%);
  opacity: 0.6;
  animation: w11-drift-2 22s ease-in-out infinite;
}
.windows-desktop .bloom-3 {
  width: 280px; height: 280px;
  top: 55%; left: 55%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, #2563A8 0%, transparent 70%);
  opacity: 0.5;
  animation: w11-drift-3 16s ease-in-out infinite;
}
.windows-desktop .bloom-4 {
  width: 180px; height: 180px;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.6) 0%, transparent 70%);
  opacity: 0.4;
}
@keyframes w11-drift-1 {
  0%, 100% { transform: translate(-50%, -50%) scale(1); }
  50%      { transform: translate(-48%, -52%) scale(1.05); }
}
@keyframes w11-drift-2 {
  0%, 100% { transform: translate(-45%, -45%) rotate(0deg); }
  50%      { transform: translate(-47%, -43%) rotate(15deg); }
}
@keyframes w11-drift-3 {
  0%, 100% { transform: translate(-55%, -55%) scale(1); }
  50%      { transform: translate(-53%, -57%) scale(0.95); }
}

/* Janelas (base) */
.windows-desktop .win {
  position: absolute;
  background: rgba(243, 243, 243, 0.92);
  backdrop-filter: blur(40px) saturate(1.4);
  -webkit-backdrop-filter: blur(40px) saturate(1.4);
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 8px;
  overflow: hidden;
  box-shadow:
    0 16px 32px -8px rgba(0, 0, 0, 0.32),
    0 4px 12px -2px rgba(0, 0, 0, 0.18),
    0 0 0 1px rgba(0, 0, 0, 0.05);
  opacity: 0;
  transform: translateY(12px) scale(0.96);
  animation: w11-win-enter 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards,
             w11-win-float 7s ease-in-out infinite;
}
@keyframes w11-win-enter {
  0%   { opacity: 0; transform: translateY(20px) scale(0.94); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes w11-win-float {
  0%, 100% { translate: 0 0; }
  50%      { translate: 0 -3px; }
}

.windows-desktop .win-titlebar {
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 0 0 12px;
  background: transparent;
}
.windows-desktop .win-tab {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 100%;
  padding-right: 16px;
}
.windows-desktop .win-tab-icon {
  width: 14px; height: 14px;
  border-radius: 2px;
  display: grid; place-items: center;
  font-size: 9px;
  font-weight: 700;
  color: white;
  flex-shrink: 0;
}
.windows-desktop .win-tab-name {
  font-family: var(--w11-font);
  font-size: 11px;
  font-weight: 400;
  color: var(--w11-text);
}
.windows-desktop .win-controls { display: flex; height: 100%; }
.windows-desktop .win-ctrl {
  width: 32px; height: 32px;
  display: grid; place-items: center;
  transition: background 0.15s;
}
.windows-desktop .win-ctrl:hover { background: rgba(0, 0, 0, 0.05); }
.windows-desktop .win-ctrl.close:hover { background: #C42B1C; }
.windows-desktop .win-ctrl.close:hover svg { stroke: white; }
.windows-desktop .win-ctrl svg {
  width: 9px; height: 9px;
  stroke: var(--w11-text);
  stroke-width: 1;
  fill: none;
}

/* Teams */
.windows-desktop .win-teams {
  width: 260px; height: 200px;
  top: 32px; left: 24px;
  z-index: 3;
  animation-delay: 0.2s, 0.5s;
}
.windows-desktop .win-teams .win-tab-icon { background: var(--w11-teams); }
.windows-desktop .teams-content {
  background: white;
  padding: 10px;
  height: calc(100% - 32px);
  display: flex; flex-direction: column;
}
.windows-desktop .teams-toolbar {
  display: flex;
  gap: 4px;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--w11-divider);
}
.windows-desktop .teams-pill {
  height: 22px;
  padding: 0 10px;
  background: var(--w11-teams);
  border-radius: 4px;
  display: flex;
  align-items: center;
  color: white;
  font-size: 9px;
  font-weight: 500;
  gap: 5px;
}
.windows-desktop .teams-pill svg { width: 10px; height: 10px; }
.windows-desktop .teams-pill-secondary {
  background: rgba(91, 95, 199, 0.1);
  color: var(--w11-teams);
}
.windows-desktop .teams-pill-rec {
  background: #C42B1C;
  margin-left: auto;
}
.windows-desktop .teams-pill-rec::before {
  content: '';
  width: 6px; height: 6px;
  border-radius: 50%;
  background: white;
  animation: w11-rec-blink 1.5s ease-in-out infinite;
}
@keyframes w11-rec-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
.windows-desktop .teams-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5px;
  flex: 1;
}
.windows-desktop .teams-tile {
  background:
    radial-gradient(circle at 50% 40%, #6E72D1 0%, #3A3F8F 80%),
    linear-gradient(135deg, #4A4F9F, #3A3F8F);
  border-radius: 4px;
  position: relative;
  overflow: hidden;
  box-shadow: inset 0 0 0 0 var(--w11-teams);
  transition: box-shadow 0.4s;
}
.windows-desktop .teams-tile::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -55%);
  width: 28px; height: 28px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.3);
  border: 1.5px solid rgba(255, 255, 255, 0.5);
  animation: w11-avatar-breathe 3s ease-in-out infinite;
}
@keyframes w11-avatar-breathe {
  0%, 100% { transform: translate(-50%, -55%) scale(1); }
  50%      { transform: translate(-50%, -55%) scale(1.05); }
}
.windows-desktop .teams-tile::after {
  content: '';
  position: absolute;
  bottom: 4px; left: 4px;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 4px #4ade80;
}
.windows-desktop .teams-tile:nth-child(1) { animation: w11-video-flicker 0.6s steps(2) infinite, w11-speaker-1 8s ease-in-out infinite; }
.windows-desktop .teams-tile:nth-child(2) { animation: w11-video-flicker 0.6s steps(2) infinite 0.1s, w11-speaker-2 8s ease-in-out infinite; }
.windows-desktop .teams-tile:nth-child(3) { animation: w11-video-flicker 0.6s steps(2) infinite 0.2s, w11-speaker-3 8s ease-in-out infinite; }
.windows-desktop .teams-tile:nth-child(4) { animation: w11-video-flicker 0.6s steps(2) infinite 0.3s, w11-speaker-4 8s ease-in-out infinite; }
@keyframes w11-speaker-1 {
  0%, 22%, 100% { box-shadow: inset 0 0 0 2px var(--w11-teams), 0 0 8px rgba(91,95,199,0.4); }
  25%, 99%      { box-shadow: inset 0 0 0 0 var(--w11-teams); }
}
@keyframes w11-speaker-2 {
  0%, 24%, 47%, 100% { box-shadow: inset 0 0 0 0 var(--w11-teams); }
  25%, 47%           { box-shadow: inset 0 0 0 2px var(--w11-teams), 0 0 8px rgba(91,95,199,0.4); }
}
@keyframes w11-speaker-3 {
  0%, 49%, 72%, 100% { box-shadow: inset 0 0 0 0 var(--w11-teams); }
  50%, 72%           { box-shadow: inset 0 0 0 2px var(--w11-teams), 0 0 8px rgba(91,95,199,0.4); }
}
@keyframes w11-speaker-4 {
  0%, 74%, 97%, 100% { box-shadow: inset 0 0 0 0 var(--w11-teams); }
  75%, 97%           { box-shadow: inset 0 0 0 2px var(--w11-teams), 0 0 8px rgba(91,95,199,0.4); }
}
@keyframes w11-video-flicker {
  0%, 100% { filter: brightness(1); }
  50%      { filter: brightness(1.05); }
}

/* Excel */
.windows-desktop .win-excel {
  width: 280px; height: 250px;
  top: 70px; right: 22px;
  z-index: 2;
  animation-delay: 0.5s, 1.5s;
}
.windows-desktop .win-excel .win-tab-icon { background: var(--w11-excel); }
.windows-desktop .excel-ribbon {
  background: var(--w11-excel-deep);
  color: white;
  padding: 0 10px;
  height: 22px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 9px;
  font-weight: 500;
}
.windows-desktop .excel-ribbon span { opacity: 0.85; }
.windows-desktop .excel-ribbon span:first-child { opacity: 1; font-weight: 600; }
.windows-desktop .excel-formula {
  background: white;
  padding: 4px 8px;
  border-bottom: 1px solid var(--w11-divider);
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: "Roboto Mono", ui-monospace, monospace;
  font-size: 9px;
  color: var(--w11-text-secondary);
}
.windows-desktop .excel-formula b { color: var(--w11-excel); font-weight: 600; }
.windows-desktop .excel-formula-cursor {
  display: inline-block;
  width: 1px; height: 9px;
  background: var(--w11-text);
  animation: w11-cursor-blink 0.7s steps(2) infinite;
  vertical-align: middle;
}
@keyframes w11-cursor-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
.windows-desktop .excel-content { background: white; padding: 10px; flex: 1; }
.windows-desktop .excel-chart {
  display: flex;
  align-items: flex-end;
  gap: 4px;
  height: 100px;
  padding: 0 4px 6px 4px;
  border-bottom: 1px solid var(--w11-divider);
  margin-bottom: 8px;
}
.windows-desktop .excel-bar {
  flex: 1;
  background: linear-gradient(180deg, var(--w11-excel), var(--w11-excel-deep));
  border-radius: 1px 1px 0 0;
  animation: w11-bar-grow 4s ease-in-out infinite;
  transform-origin: bottom;
  min-height: 4px;
}
.windows-desktop .excel-bar:nth-child(1) { height: 35%; animation-delay: 0s; }
.windows-desktop .excel-bar:nth-child(2) { height: 55%; animation-delay: 0.2s; }
.windows-desktop .excel-bar:nth-child(3) { height: 45%; animation-delay: 0.4s; }
.windows-desktop .excel-bar:nth-child(4) { height: 70%; animation-delay: 0.6s; }
.windows-desktop .excel-bar:nth-child(5) { height: 60%; animation-delay: 0.8s; }
.windows-desktop .excel-bar:nth-child(6) { height: 80%; animation-delay: 1.0s; }
.windows-desktop .excel-bar:nth-child(7) { height: 75%; animation-delay: 1.2s; }
.windows-desktop .excel-bar:nth-child(8) { height: 92%; animation-delay: 1.4s; }
.windows-desktop .excel-bar:nth-child(9) { height: 88%; animation-delay: 1.6s; }
@keyframes w11-bar-grow {
  0%, 100% { transform: scaleY(0.85); }
  50%      { transform: scaleY(1.05); }
}
.windows-desktop .excel-rows { display: flex; flex-direction: column; gap: 4px; }
.windows-desktop .excel-row { display: flex; gap: 4px; height: 10px; }
.windows-desktop .excel-cell { background: rgba(0, 0, 0, 0.04); border-radius: 1px; height: 100%; }
.windows-desktop .excel-cell.label { width: 30%; background: rgba(33, 163, 102, 0.15); }
.windows-desktop .excel-cell.value { flex: 1; background: rgba(0, 0, 0, 0.06); }
.windows-desktop .excel-cell.value.highlight {
  background: rgba(33, 163, 102, 0.3);
  animation: w11-cell-update 3s ease-in-out infinite;
}
@keyframes w11-cell-update {
  0%, 100% { background: rgba(33, 163, 102, 0.3); }
  50%      { background: rgba(33, 163, 102, 0.6); }
}

/* Copilot */
.windows-desktop .win-copilot {
  width: 320px; height: 200px;
  bottom: 80px; left: 50%;
  margin-left: -160px;
  z-index: 4;
  animation-delay: 0.9s, 3s;
}
.windows-desktop .win-copilot .win-tab-icon {
  background: linear-gradient(135deg, var(--w11-copilot-1), var(--w11-copilot-2));
}
.windows-desktop .copilot-header {
  background: white;
  padding: 8px 12px;
  border-bottom: 1px solid var(--w11-divider);
  display: flex;
  align-items: center;
  gap: 8px;
  position: relative;
}
.windows-desktop .copilot-logo {
  width: 22px; height: 22px;
  background: linear-gradient(135deg, var(--w11-copilot-1), var(--w11-copilot-2));
  border-radius: 50%;
  display: grid; place-items: center;
  color: white;
  font-size: 12px;
  flex-shrink: 0;
  box-shadow: 0 0 12px rgba(46, 125, 255, 0.5);
  animation: w11-copilot-glow 3s ease-in-out infinite;
}
@keyframes w11-copilot-glow {
  0%, 100% { box-shadow: 0 0 12px rgba(46, 125, 255, 0.5); }
  50%      { box-shadow: 0 0 20px rgba(177, 156, 255, 0.8); }
}
.windows-desktop .copilot-title { font-size: 11px; font-weight: 600; color: var(--w11-text); }
.windows-desktop .copilot-title-sub {
  font-size: 9px;
  color: var(--w11-text-secondary);
  margin-left: 6px;
  font-weight: 400;
}
.windows-desktop .copilot-chat {
  background: white;
  padding: 12px;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 8px;
  overflow: hidden;
}
.windows-desktop .chat-msg-user {
  align-self: flex-end;
  background: var(--w11-accent);
  color: white;
  padding: 6px 10px;
  border-radius: 10px 10px 2px 10px;
  font-size: 10px;
  max-width: 75%;
  animation: w11-msg-pop 0.5s cubic-bezier(0.16, 1, 0.3, 1) 1.6s backwards;
}
@keyframes w11-msg-pop {
  0%   { opacity: 0; transform: translateY(8px) scale(0.9); }
  100% { opacity: 1; transform: translateY(0) scale(1); }
}
.windows-desktop .chat-msg-ai {
  align-self: flex-start;
  background: rgba(0, 0, 0, 0.04);
  padding: 8px 12px;
  border-radius: 10px 10px 10px 2px;
  max-width: 85%;
  display: flex;
  flex-direction: column;
  gap: 5px;
  animation: w11-msg-pop 0.5s cubic-bezier(0.16, 1, 0.3, 1) 2.2s backwards;
}
.windows-desktop .chat-line {
  height: 5px;
  border-radius: 3px;
  background: linear-gradient(90deg,
    var(--w11-copilot-2) 0%,
    var(--w11-copilot-1) 50%,
    rgba(177, 156, 255, 0.3) 100%);
  animation: w11-line-stream 3s ease-in-out infinite;
  transform-origin: left;
}
.windows-desktop .chat-line:nth-child(1) { width: 95%; animation-delay: 2.5s; }
.windows-desktop .chat-line:nth-child(2) { width: 80%; animation-delay: 2.9s; }
.windows-desktop .chat-line:nth-child(3) { width: 90%; animation-delay: 3.3s; }
.windows-desktop .chat-line:nth-child(4) { width: 60%; animation-delay: 3.7s; }
@keyframes w11-line-stream {
  0%   { transform: scaleX(0); opacity: 0.3; }
  20%  { transform: scaleX(1); opacity: 1; }
  100% { transform: scaleX(1); opacity: 0.5; }
}
.windows-desktop .chat-cursor {
  align-self: flex-start;
  width: 2px; height: 10px;
  background: var(--w11-copilot-2);
  animation: w11-cursor-blink 0.8s steps(2) infinite;
  margin-left: 12px;
  margin-top: -4px;
}

.windows-desktop .copilot-sparkle {
  position: absolute;
  pointer-events: none;
  color: var(--w11-copilot-1);
  animation: w11-sparkle 2.5s ease-in-out infinite;
}
.windows-desktop .copilot-sparkle.s1 { top: 8px;  left: 28px; width: 10px; height: 10px; animation-delay: 0s; }
.windows-desktop .copilot-sparkle.s2 { top: 4px;  left: 42px; width: 6px;  height: 6px;  animation-delay: 1s; }
.windows-desktop .copilot-sparkle.s3 { top: 22px; left: 36px; width: 5px;  height: 5px;  animation-delay: 1.8s; }
@keyframes w11-sparkle {
  0%, 100% { opacity: 0.3; transform: scale(0.7) rotate(0deg); }
  50%      { opacity: 1;   transform: scale(1.1) rotate(180deg); }
}

/* Cursor animado */
.windows-desktop .win-cursor {
  position: absolute;
  width: 14px; height: 18px;
  z-index: 20;
  pointer-events: none;
  animation: w11-cursor-tour 18s ease-in-out infinite;
}
.windows-desktop .win-cursor svg {
  width: 100%; height: 100%;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,0.4));
}
@keyframes w11-cursor-tour {
  0%   { top: 280px; left: 280px; opacity: 0; }
  3%   { top: 280px; left: 280px; opacity: 1; }
  18%  { top: 100px; left: 120px; opacity: 1; }
  25%  { top: 100px; left: 120px; opacity: 1; }
  40%  { top: 130px; left: 380px; opacity: 1; }
  47%  { top: 130px; left: 380px; opacity: 1; }
  62%  { top: 420px; left: 280px; opacity: 1; }
  72%  { top: 420px; left: 280px; opacity: 1; }
  90%  { top: 280px; left: 280px; opacity: 1; }
  100% { top: 280px; left: 280px; opacity: 0; }
}

/* Taskbar */
.windows-desktop .win-taskbar {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 44px;
  background: rgba(243, 243, 243, 0.65);
  backdrop-filter: blur(30px) saturate(1.5);
  -webkit-backdrop-filter: blur(30px) saturate(1.5);
  border-top: 1px solid rgba(255, 255, 255, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  z-index: 10;
  padding: 0 16px;
}
.windows-desktop .tb-icon {
  width: 34px; height: 34px;
  border-radius: 4px;
  display: grid; place-items: center;
  transition: background 0.2s;
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
}
.windows-desktop .tb-icon:hover { background: rgba(0, 0, 0, 0.05); }
.windows-desktop .tb-icon svg { width: 18px; height: 18px; }
.windows-desktop .tb-icon.active::after {
  content: '';
  position: absolute;
  bottom: -1px; left: 50%;
  transform: translateX(-50%);
  width: 14px; height: 2px;
  border-radius: 2px;
  background: var(--w11-accent);
}
.windows-desktop .tb-app {
  width: 20px; height: 20px;
  border-radius: 3px;
  display: grid; place-items: center;
  color: white;
  font-size: 11px;
  font-weight: 700;
}
.windows-desktop .tb-app.teams   { background: var(--w11-teams); }
.windows-desktop .tb-app.excel   { background: var(--w11-excel); }
.windows-desktop .tb-app.copilot { background: linear-gradient(135deg, var(--w11-copilot-1), var(--w11-copilot-2)); }
.windows-desktop .tb-app.outlook { background: var(--w11-accent); }
.windows-desktop .tb-app.edge    { background: linear-gradient(135deg, #0072C6, #43B02A); }
.windows-desktop .tb-tray {
  position: absolute;
  right: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
  height: 100%;
  font-size: 10px;
  color: var(--w11-text);
}
.windows-desktop .tb-tray-icons { display: flex; gap: 6px; align-items: center; }
.windows-desktop .tb-tray-icons svg { width: 12px; height: 12px; }
.windows-desktop .tb-time {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  line-height: 1.2;
  font-size: 9px;
}
.windows-desktop .tb-time strong { font-weight: 500; font-size: 11px; }

/* Mobile: aliviar a taskbar — esconder Task view (3º), Outlook (7º) e Edge (8º).
   Também alinha à esquerda (Start → Copilot agrupados no canto esquerdo). */
@media (max-width: 768px) {
  .windows-desktop .win-taskbar .tb-icon:nth-child(3),
  .windows-desktop .win-taskbar .tb-icon:nth-child(7),
  .windows-desktop .win-taskbar .tb-icon:nth-child(8) {
    display: none;
  }
  .windows-desktop .win-taskbar {
    justify-content: flex-start;
    padding-left: 8px;
  }
}

/* CPU widget */
.windows-desktop .npu-widget {
  position: absolute;
  bottom: 56px; right: 16px;
  background: rgba(243, 243, 243, 0.85);
  backdrop-filter: blur(24px) saturate(1.5);
  -webkit-backdrop-filter: blur(24px) saturate(1.5);
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 8px;
  padding: 10px 12px;
  width: 150px;
  box-shadow: 0 8px 20px -4px rgba(0, 0, 0, 0.25);
  z-index: 9;
  animation: w11-win-enter 0.7s cubic-bezier(0.16, 1, 0.3, 1) 1.2s backwards;
}
.windows-desktop .npu-widget-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.windows-desktop .npu-widget-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 10px;
  font-weight: 600;
  color: var(--w11-text);
}
.windows-desktop .npu-widget-icon { width: 14px; height: 14px; color: var(--w11-excel); }
.windows-desktop .npu-widget-status {
  font-size: 8px;
  font-weight: 500;
  color: var(--w11-excel-deep);
  background: rgba(33, 163, 102, 0.15);
  padding: 1px 5px;
  border-radius: 3px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.windows-desktop .npu-graph { height: 28px; position: relative; margin-bottom: 6px; }
.windows-desktop .npu-graph-svg { width: 100%; height: 100%; display: block; }
.windows-desktop .npu-graph-fill { fill: rgba(33, 163, 102, 0.2); }
.windows-desktop .npu-graph-line {
  fill: none;
  stroke: var(--w11-excel);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  filter: drop-shadow(0 0 2px rgba(33, 163, 102, 0.5));
}
.windows-desktop .npu-graph-dot {
  fill: var(--w11-excel);
  filter: drop-shadow(0 0 4px var(--w11-excel));
  animation: w11-dot-pulse 1.6s ease-in-out infinite;
}
@keyframes w11-dot-pulse {
  0%, 100% { r: 1.8; opacity: 1; }
  50%      { r: 2.6; opacity: 0.7; }
}
.windows-desktop .npu-graph-line,
.windows-desktop .npu-graph-fill {
  animation: w11-graph-update 4s ease-in-out infinite;
  transform-origin: bottom right;
}
@keyframes w11-graph-update {
  0%, 100% { transform: scaleY(1); }
  25%      { transform: scaleY(0.7); }
  50%      { transform: scaleY(1.1); }
  75%      { transform: scaleY(0.9); }
}
.windows-desktop .npu-widget-stats {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
}
@property --npu-pct {
  syntax: "<integer>";
  initial-value: 58;
  inherits: false;
}
.windows-desktop .npu-widget-pct {
  font-size: 22px;
  font-weight: 600;
  color: var(--w11-text);
  letter-spacing: -0.02em;
  line-height: 1;
  --npu-pct: 58;
  counter-reset: pct var(--npu-pct);
  animation:
    w11-count-pulse 4s ease-in-out infinite,
    w11-npu-pct 4s ease-in-out infinite;
}
.windows-desktop .npu-widget-pct::before {
  content: counter(pct);
}
@keyframes w11-count-pulse {
  0%, 100% { color: var(--w11-text); }
  50%      { color: var(--w11-excel-deep); }
}
/* Sincronizado com w11-graph-update (mesmo timing/easing).
   Pico em 50% = 67% para nunca ultrapassar esse teto. */
@keyframes w11-npu-pct {
  0%, 100% { --npu-pct: 58; }
  25%      { --npu-pct: 42; }
  50%      { --npu-pct: 67; }
  75%      { --npu-pct: 53; }
}
.windows-desktop .npu-widget-pct sub {
  font-size: 11px;
  font-weight: 400;
  color: var(--w11-text-secondary);
  margin-left: 1px;
}
.windows-desktop .npu-widget-detail {
  font-size: 8px;
  color: var(--w11-text-secondary);
  text-align: right;
  line-height: 1.3;
}
.windows-desktop .npu-widget-detail strong { color: var(--w11-excel-deep); font-weight: 600; }

@media (max-width: 600px) {
  .windows-desktop { width: 100%; max-width: 568px; }
}
@media (prefers-reduced-motion: reduce) {
  .windows-desktop *,
  .windows-desktop *::before,
  .windows-desktop *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

.deep-dive__content p {
  font-size: var(--fs-md);
  line-height: var(--lh-relaxed);
  color: currentColor;
  opacity: 0.85;
  margin-block: var(--space-4);
}
.deep-dive__content p strong { color: currentColor; opacity: 1; font-weight: var(--fw-semibold); }
.deep-dive__disclaimer {
  font-size: var(--fs-xs) !important;
  opacity: 0.6 !important;
  margin-top: var(--space-6) !important;
}
@media (min-width: 1024px) {
  .deep-dive__grid { grid-template-columns: 1fr 1fr; gap: var(--space-16); }
  .deep-dive__grid--reverse > .deep-dive__content { order: 1; }
  .deep-dive__grid--reverse > .deep-dive__media { order: 2; }
}

/* Brand-themed deep-dive nuances */
.section[data-section-theme="brand"] .section-heading__kicker,
.section[data-section-theme="brand"] .section-heading__title,
.section[data-section-theme="brand"] .section-heading__lead { color: var(--text-on-brand); }
.section[data-section-theme="brand"] .section-heading__kicker { color: var(--vaio-gold); opacity: 1; }

/* Chip (Intel badges) */
.chip-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-16);
}
.chip-row__badge {
  display: block;
  height: 5rem;
  width: auto;
  object-fit: contain;
}
.chip-row__badge--ia {
  height: 5.9rem;
}
.chip-row__text {
  margin: var(--space-3) 0 0;
  max-width: 42rem;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: #000;
  letter-spacing: 0.005em;
}
.chip {
  display: inline-flex;
  align-items: center;
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-sm);
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.22);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-sm);
  letter-spacing: var(--ls-normal);
  color: var(--text-on-brand);
}
.chip--intel { background: linear-gradient(135deg, #0068B5, #003F7A); border-color: transparent; }

/* ===========================================================================
   7. PERFORMANCE · card preto + tabs (Memória / Armazenamento)
   =========================================================================== */
.perf.section {
  background: linear-gradient(to bottom, #f6f5f4 0%, #f6f5f4 83%, #ffffff 100%);
  padding-block: clamp(4rem, 8vw, 7rem);
  padding-bottom: 120px;
}
.perf__container {
  max-width: var(--container-xl); /* 1200px */
  margin-inline: auto;
}
.perf__heading { margin-bottom: clamp(1.75rem, 3vw, 2.5rem); }
.perf__title {
  margin: 0;
  text-align: left;
  font-size: clamp(2rem, 4.6vw, 3.25rem);
  font-weight: var(--fw-bold);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: currentColor;
}

/* --- Card branco --------------------------------------------------------- */
.perf__card {
  position: relative;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  padding: 0;
  background: #fff;
  color: #0a0a0a;
  border-radius: clamp(20px, 2vw, 28px);
  overflow: hidden;
  box-shadow: 0 1px 2px rgba(10, 10, 10, 0.04);
}
@media (min-width: 900px) {
  .perf__card { grid-template-columns: minmax(280px, 1fr) 1.05fr; }
}

.perf__content {
  display: flex;
  flex-direction: column;
  gap: clamp(1.75rem, 3vw, 2.25rem);
  padding: clamp(2rem, 3vw, 2.75rem);
}
.perf__lead {
  margin: 0;
  font-size: clamp(1.125rem, 1.4vw, 1.25rem);
  font-weight: var(--fw-medium);
  line-height: 1.5;
  color: #000;
  max-width: 38ch;
}

/* --- Tabs (Sobre a memória / Sobre o armazenamento) ---------------------- */
.perf__tabs {
  display: flex;
  flex-direction: column;
  gap: 0;
  border-top: 1px solid rgba(10, 10, 10, 0.12);
  margin-top: auto;
}
.perf-tab {
  position: relative;
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: 1rem;
  padding: 1.125rem 1.25rem;
  background: transparent;
  border: 0;
  border-bottom: 1px solid rgba(10, 10, 10, 0.12);
  border-radius: 0;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background-color 240ms ease;
}
.perf-tab:hover:not(.is-active) { background-color: rgba(10, 10, 10, 0.03); }
.perf-tab.is-active {
  background-color: #f7f7f7;
  border-bottom-color: transparent;
}
.perf-tab:focus-visible {
  outline: 2px solid #0a0a0a;
  outline-offset: 4px;
}
.perf-tab__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  color: #0a0a0a;
  flex-shrink: 0;
  transition: background-color 320ms cubic-bezier(0.22, 1, 0.36, 1);
}
.perf-tab__icon svg,
.perf-tab__icon img { width: 22px; height: 22px; display: block; }
.perf-tab[data-tab="sistema"] .perf-tab__icon { background: #cce4ff; }
.perf-tab[data-tab="memoria"] .perf-tab__icon { background: #d9d4ff; }
.perf-tab[data-tab="armazenamento"] .perf-tab__icon { background: #ffd9b3; }
.perf-tab__body { display: grid; gap: 4px; min-width: 0; }
.perf-tab__label {
  font-size: clamp(1.0625rem, 1.2vw, 1.1875rem);
  font-weight: var(--fw-bold);
  color: #000;
  letter-spacing: -0.01em;
  line-height: 1.25;
}
.perf-tab__desc {
  font-size: 0.8rem;
  line-height: 1.55;
  color: #000;
  display: none;
}
.perf-tab.is-active .perf-tab__desc { display: block; }

/* --- Painel direito (muda conforme tab) --------------------------------- */
.perf__media {
  position: relative;
  overflow: hidden;
  min-height: clamp(320px, 42vw, 520px);
  isolation: isolate;
  transition: background-color 480ms cubic-bezier(0.22, 1, 0.36, 1);
}
.perf__card[data-active="sistema"] .perf__media { background: #5ac4ee; }
.perf__card[data-active="memoria"] .perf__media { background-color: #d9d4ff; }
.perf__card[data-active="armazenamento"] .perf__media { background-color: #ffd9b3; }

.perf__panel {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: stretch;
  padding: clamp(1.5rem, 2.5vw, 2rem) 0 0 clamp(1.5rem, 2.5vw, 2rem);
  opacity: 0;
  transform: translateY(8px);
  transition:
    opacity 360ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 360ms cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}
.perf__panel.is-active {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.perf__panel[hidden] { display: grid; } /* mantém layout, JS controla aria */

/* "Janela" branca onde entra a imagem/animação */
.perf__stage {
  position: relative;
  width: 100%;
  height: 100%;
  background: #fff;
  border-top-left-radius: clamp(12px, 1.2vw, 16px);
  border-top-right-radius: 0;
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  box-shadow: 0 18px 40px -22px rgba(10, 10, 10, 0.25);
  overflow: hidden;
  display: grid;
  place-items: center;
}
.perf__stage--sistema,
.perf__stage--memoria,
.perf__stage--armazenamento {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
.perf__stage--sistema { background-image: url("../images/bg-windows-slide.webp"); }
.perf__stage--memoria { background-image: url("../images/bg-memoria.webp"); }
.perf__stage--armazenamento { background-image: url("../images/bg-ssd.webp"); }
.perf__stage-placeholder {
  display: grid;
  gap: 6px;
  justify-items: start;
  padding: 1.25rem 1.5rem;
}
.perf__stage-num {
  font-size: clamp(2rem, 3.6vw, 2.75rem);
  font-weight: var(--fw-bold);
  line-height: 1;
  letter-spacing: -0.02em;
  color: #0a0a0a;
}
.perf__stage-num small {
  font-size: 0.55em;
  font-weight: var(--fw-medium);
  color: rgba(10, 10, 10, 0.55);
  margin-inline-start: 6px;
}
.perf__stage-tag {
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(10, 10, 10, 0.55);
}

/* ---------------------------------------------------------------------------
   PERFORMANCE · reveal em cascata (sem pressa)
   título → card → descrição → tabs → painel → stage
   --------------------------------------------------------------------------- */
.perf .perf__title,
.perf .perf__card,
.perf .perf__lead,
.perf .perf-tab,
.perf .perf__media,
.perf .perf__stage {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    background-color 240ms ease;
  transition-delay: var(--perf-delay, 0ms), var(--perf-delay, 0ms), 0ms;
  will-change: opacity, transform;
}

/* Card: entra com leve scale para sensação de "abrir" */
.perf .perf__card {
  transform: translateY(40px) scale(0.985);
  transform-origin: center top;
}

/* Painel direito: revela com clip-path (cortina suave da esquerda) */
.perf .perf__media {
  opacity: 1; /* o efeito é o clip, não o fade */
  transform: none;
  clip-path: inset(0 100% 0 0);
  transition: clip-path 1300ms cubic-bezier(0.65, 0, 0.35, 1);
  transition-delay: var(--perf-delay, 0ms);
}

/* Stage (janela branca): sobe com pequeno scale por dentro do painel */
.perf .perf__stage {
  transform: translateY(24px) scale(0.96);
  transform-origin: top left;
  transition:
    opacity 900ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--perf-delay, 0ms);
}

/* --- Estado revelado: cada elemento ganha seu delay --- */
.perf.is-revealed .perf__title,
.perf.is-revealed .perf__card,
.perf.is-revealed .perf__lead,
.perf.is-revealed .perf-tab,
.perf.is-revealed .perf__stage {
  opacity: 1;
  transform: none;
}
.perf.is-revealed .perf__media {
  clip-path: inset(0 0 0 0);
}

/* Cascata · ritmo lento, total ~3.4s */
.perf.is-revealed .perf__title  { --perf-delay: 100ms; }
.perf.is-revealed .perf__card   { --perf-delay: 700ms; }
.perf.is-revealed .perf__lead   { --perf-delay: 1500ms; }
.perf.is-revealed .perf-tab[data-tab="memoria"]       { --perf-delay: 1900ms; }
.perf.is-revealed .perf-tab[data-tab="armazenamento"] { --perf-delay: 2120ms; }
.perf.is-revealed .perf__media  { --perf-delay: 2350ms; }
.perf.is-revealed .perf__stage  { --perf-delay: 2750ms; }

/* Acessibilidade: respeita reduce-motion */
@media (prefers-reduced-motion: reduce) {
  .perf .perf__title,
  .perf .perf__card,
  .perf .perf__lead,
  .perf .perf-tab,
  .perf .perf__media,
  .perf .perf__stage {
    opacity: 1;
    transform: none;
    clip-path: none;
    transition: none;
  }
}

/* ===========================================================================
   8. TELA stats
   =========================================================================== */
.stat-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  margin-top: var(--space-6);
  padding-top: var(--space-6);
  border-top: 1px solid var(--border-subtle);
}
.stat-row__item { display: grid; gap: 2px; }
.stat-row__item > span {
  font-size: var(--fs-2xl);
  font-weight: var(--fw-bold);
  color: var(--text-primary);
  line-height: 1;
  letter-spacing: var(--ls-tight);
}
.stat-row__item > span small {
  font-size: var(--fs-md);
  color: var(--text-secondary);
  font-weight: var(--fw-medium);
  margin-inline-start: 2px;
}
.stat-row__item > small {
  font-size: var(--fs-xs);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-muted);
}

/* ===========================================================================
   9. DESIGN · imagem central com parallax sutil + 3 balões em volta
   =========================================================================== */
.design.section {
  background: #fff;
  padding-top: clamp(4rem, 8vw, 7rem);
  padding-bottom: clamp(7rem, 14vw, 11rem);
  overflow: hidden; /* contém o parallax e a drop-shadow do produto */
  position: relative;
}
/* (Tentativas de fix iOS Safari removidas — clip-path/translateZ quebravam a
   renderização da imagem em scroll. Mantemos só overflow:hidden + position:relative.) */
.design__container {
  max-width: var(--container-xl); /* 1200px */
  margin-inline: auto;
}
.design__heading {
  max-width: 720px;
  margin: 0 auto clamp(2rem, 4vw, 3.5rem);
  text-align: center;
}
.design__title {
  margin: 0 0 1rem;
  text-align: center;
  font-size: clamp(2rem, 4.6vw, 3.25rem);
  font-weight: var(--fw-bold);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: currentColor;
}
.design__lead {
  margin: 0 auto;
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.5;
  color: #000;
  max-width: 56ch;
  text-align: center;
}

/* Stage central · imagem do produto + balões orbitando */
.design__stage {
  position: relative;
  width: 100%;
  max-width: 1100px;
  margin-inline: auto;
  aspect-ratio: 16 / 10;
  isolation: isolate;
}
.design__product {
  position: absolute;
  left: 50%;
  top: 50%;
  width: min(800px, 80%);
  height: auto;
  transform: translate(-50%, calc(-50% + var(--design-parallax, 0px)));
  transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
  user-select: none;
  pointer-events: none;
  filter: drop-shadow(0 40px 50px rgba(10, 10, 10, 0.18))
          drop-shadow(0 8px 16px rgba(10, 10, 10, 0.08));
  z-index: 1;
}

/* --- Balões em volta do produto (variante do hero-bubble) ----------------- */
.design-bubble {
  --db-tx: 0px;
  --db-ty: 0px;
  --db-rot: 0deg;
  position: absolute;
  z-index: 3;
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.875rem 1.125rem;
  border-radius: 1.25rem;
  background: #fff;
  border: 1px solid rgba(10, 10, 10, 0.06);
  box-shadow:
    0 26px 60px -18px rgba(11, 17, 62, 0.22),
    0 6px 18px -6px rgba(11, 17, 62, 0.10),
    inset 0 1px 0 rgba(255, 255, 255, 0.9);
  color: var(--text-primary);
  opacity: 0;
  transform: translate(var(--db-tx), calc(24px + var(--db-ty))) scale(0.86) rotate(var(--db-rot));
  filter: blur(14px);
  transition:
    opacity 900ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.34, 1.48, 0.52, 1),
    filter 700ms cubic-bezier(0.22, 1, 0.36, 1);
}
.design-bubble {
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1300ms cubic-bezier(0.34, 1.48, 0.52, 1),
    filter 900ms cubic-bezier(0.22, 1, 0.36, 1);
}
.design-bubble--tl { top: 8%;  left: 0;     --db-tx: -32px; --db-rot: -4deg; transition-delay: 2200ms; }
.design-bubble--tr { top: 14%; right: 0;    --db-tx:  32px; --db-rot:  4deg; transition-delay: 2500ms; }
.design-bubble--br { bottom: 8%; right: 8%; --db-tx:  24px; --db-rot:  3deg; transition-delay: 2800ms; }

.design.is-revealed .design-bubble {
  opacity: 1;
  transform: translate(0, 0) scale(1) rotate(0);
  filter: blur(0);
  animation: design-bubble-float 5.4s ease-in-out infinite;
}
/* Float só começa depois da entrada terminar (2.2s + 1.3s = 3.5s, etc.) */
.design.is-revealed .design-bubble--tl { animation-delay: 3.5s; animation-duration: 5.6s; }
.design.is-revealed .design-bubble--tr { animation-delay: 4.0s; animation-duration: 6.4s; }
.design.is-revealed .design-bubble--br { animation-delay: 4.5s; animation-duration: 6.0s; }

@keyframes design-bubble-float {
  0%, 100% { translate: 0 0;     rotate: 0deg; }
  50%      { translate: 0 -15px; rotate: -0.6deg; }
}
.design-bubble__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: rgba(10, 10, 10, 0.05);
  color: #0a0a0a;
  flex-shrink: 0;
}
.design-bubble__icon svg { width: 20px; height: 20px; }
.design-bubble__body {
  display: grid;
  gap: 0.125rem;
  line-height: 1.2;
}
.design-bubble__kicker {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--vaio-gold);
}
.design-bubble__main {
  font-size: 1rem;
  font-weight: 700;
  color: #0a0a0a;
  white-space: nowrap;
}
.design-bubble__sub {
  font-size: 0.75rem;
  font-weight: 500;
  color: rgba(10, 10, 10, 0.6);
  white-space: nowrap;
}

/* --- Reveal do título/lead/produto · cinematográfico, sem pressa --------- */
.design .design__title,
.design .design__lead {
  opacity: 0;
  transform: translateY(36px);
  transition:
    opacity 1300ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1300ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--design-delay, 0ms);
  filter: blur(6px);
}
.design.is-revealed .design__title,
.design.is-revealed .design__lead {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
  transition:
    opacity 1300ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1300ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 900ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--design-delay, 0ms);
}
.design.is-revealed .design__title { --design-delay: 200ms; }
.design.is-revealed .design__lead  { --design-delay: 700ms; }

/* Imagem · centralizada com parallax; entra com fade + blur cinematográfico.
   Transition do transform fica rápida (220ms) para o parallax responder na hora;
   opacity/filter têm delay longo (1.3s) e duração ampla (1.6s) para a entrada. */
.design .design__product {
  opacity: 0;
  filter: blur(14px);
  transition:
    transform 220ms cubic-bezier(0.22, 1, 0.36, 1) 0s,
    opacity 1600ms cubic-bezier(0.22, 1, 0.36, 1) 1300ms,
    filter 1600ms cubic-bezier(0.22, 1, 0.36, 1) 1300ms;
}
.design.is-revealed .design__product {
  opacity: 1;
  filter: blur(0)
          drop-shadow(0 40px 50px rgba(10, 10, 10, 0.18))
          drop-shadow(0 8px 16px rgba(10, 10, 10, 0.08));
}

/* --- Mobile: balões empilham embaixo, imagem menor.
       Tipografia e medidas igualadas ao padrão do hero-bubble compacto. */
@media (max-width: 768px) {
  .design__stage { aspect-ratio: 4 / 3; max-width: 520px; }
  .design__product { width: 92%; }
  .design-bubble {
    padding: 0.5rem 0.625rem;
    gap: 0.5rem;
    border-radius: 0.875rem;
  }
  .design-bubble--tl { top: 4%;  left: -2%;   --db-tx: -16px; }
  .design-bubble--tr { top: 18%; right: -2%;  --db-tx:  16px; }
  .design-bubble--br { bottom: 4%; right: 4%; --db-tx:  12px; }
  .design-bubble__icon {
    width: 1.625rem;
    height: 1.625rem;
  }
  .design-bubble__icon svg { width: 14px; height: 14px; }
  .design-bubble__kicker {
    font-size: 0.5625rem;
    letter-spacing: 0.1em;
  }
  .design-bubble__main {
    font-size: 0.8125rem;
    white-space: normal;
    line-height: 1.15;
  }
  .design-bubble__sub {
    font-size: 0.625rem;
    white-space: normal;
    line-height: 1.2;
  }

  /* Debug mobile · desliga parallax e fade-in da imagem para garantir render. */
  .design .design__product {
    transform: translate(-50%, -50%) !important;
    opacity: 1 !important;
    filter: drop-shadow(0 40px 50px rgba(10, 10, 10, 0.18))
            drop-shadow(0 8px 16px rgba(10, 10, 10, 0.08)) !important;
    transition: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .design .design__title,
  .design .design__lead,
  .design .design__product,
  .design .design-bubble {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
  .design .design__product { transform: translate(-50%, -50%); }
}

/* ===========================================================================
   10. BATERIA
   =========================================================================== */
.battery {
  position: relative;
  overflow: hidden;
}
.battery::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at 75% 70%, color-mix(in oklch, var(--vaio-gold) 18%, transparent), transparent 55%);
  pointer-events: none;
}
.battery__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-16);
  align-items: center;
  position: relative;
}
.battery__hero .section-heading__kicker { color: var(--vaio-gold); }
.battery__title {
  font-size: var(--fs-hero);
  font-weight: var(--fw-bold);
  line-height: 1;
  letter-spacing: var(--ls-tighter);
  margin: 0 0 var(--space-6);
  color: var(--text-on-brand);
}
.battery__highlight { color: var(--vaio-gold); }
.battery__lead {
  font-size: var(--fs-lead);
  opacity: 0.9;
  max-width: 36rem;
}
.battery__lead strong { color: var(--vaio-gold); }

.battery__visual { display: grid; gap: var(--space-4); }
.battery__gauge {
  position: relative;
  height: 4rem;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.battery__fill {
  position: absolute;
  inset-block: 0;
  inset-inline-start: 0;
  width: 0;
  background: linear-gradient(90deg, var(--vaio-gold), color-mix(in oklch, var(--vaio-gold) 60%, white));
  animation: batteryFill 2.2s var(--ease-spring) 0.3s forwards;
}
@keyframes batteryFill { to { width: 100%; } }
.battery__tick {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: var(--at);
  transform: translate(-50%, -50%);
  font-size: var(--fs-xs);
  font-family: var(--font-mono);
  font-weight: var(--fw-semibold);
  color: var(--text-on-brand);
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
  white-space: nowrap;
}
.battery__tick--end {
  font-size: var(--fs-md);
  color: var(--vaio-kachi-iro);
  text-shadow: none;
  background: rgba(255,255,255,0.15);
  padding: 2px 8px;
  border-radius: var(--radius-sm);
}
.battery__disclaimer {
  font-size: var(--fs-xs);
  opacity: 0.7;
  margin: 0;
  color: var(--text-on-brand);
}
@media (min-width: 1024px) {
  .battery__inner { grid-template-columns: 1fr 1fr; gap: var(--space-20); }
}

/* ===========================================================================
   11. SECURITY · 12. STUDIO EFFECTS
   =========================================================================== */
.security.section {
  background: #fff;
  padding-top: 20px;
  padding-bottom: clamp(4rem, 8vw, 7rem);
}
.security__container {
  max-width: var(--container-xl); /* 1200px */
  margin-inline: auto;
}
.security__heading {
  max-width: 720px;
  margin: 0 auto clamp(2rem, 4vw, 3.5rem);
  text-align: center;
}
.security__title {
  margin: 0 0 1rem;
  font-size: clamp(2rem, 4.6vw, 3.25rem);
  font-weight: var(--fw-bold);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: currentColor;
}
.security__lead {
  margin: 0 auto;
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  line-height: 1.5;
  color: #000;
  max-width: 56ch;
}

/* Grid 2x2 (1 coluna no mobile) */
.security__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1rem, 1.5vw, 1.25rem);
}
@media (min-width: 768px) {
  .security__grid { grid-template-columns: repeat(2, 1fr); }
}

/* --- Card individual ----------------------------------------------------- */
.sec-card {
  display: flex;
  flex-direction: column;
  background: #f5f5f7;
  border-radius: clamp(18px, 1.6vw, 24px);
  overflow: hidden;
  isolation: isolate;
}
.sec-card__stage {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
  background: #fff;
  border-radius: clamp(14px, 1.2vw, 18px);
  margin: clamp(1rem, 1.5vw, 1.25rem);
  margin-bottom: 0;
  box-shadow:
    0 1px 0 rgba(10, 10, 10, 0.04),
    0 12px 28px -16px rgba(10, 10, 10, 0.18);
  overflow: hidden;
}
.sec-card__body {
  padding: clamp(1.25rem, 2vw, 1.75rem);
}
.sec-card__text {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: rgba(10, 10, 10, 0.78);
  text-align: center;
}
.sec-card__text strong {
  color: #000;
  font-weight: var(--fw-bold);
}

/* ---------------------------------------------------------------------------
   SECURITY · reveal em cascata (sem pressa)
   título → lead → 4 cards (cada um vem com leve scale + blur)
   --------------------------------------------------------------------------- */
.security .security__title,
.security .security__lead,
.security .sec-card {
  opacity: 0;
  transform: translateY(32px) scale(0.985);
  transform-origin: center top;
  filter: blur(8px);
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 900ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--security-delay, 0ms);
  will-change: opacity, transform, filter;
}
.security.is-revealed .security__title,
.security.is-revealed .security__lead,
.security.is-revealed .sec-card {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

/* Cascata · ritmo generoso, total ~3.5s */
.security.is-revealed .security__title { --security-delay: 200ms; }
.security.is-revealed .security__lead  { --security-delay: 700ms; }
.security.is-revealed .sec-card[data-card="camera"]    { --security-delay: 1300ms; }
.security.is-revealed .sec-card[data-card="leitor"]    { --security-delay: 1550ms; }
.security.is-revealed .sec-card[data-card="obturador"] { --security-delay: 1800ms; }
.security.is-revealed .sec-card[data-card="trava"]     { --security-delay: 2050ms; }

@media (prefers-reduced-motion: reduce) {
  .security .security__title,
  .security .security__lead,
  .security .sec-card {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

/* ===========================================================================
   SEC-ANIM · Card 1 · Mock Windows Hello (loop 5.5s)
   =========================================================================== */
.sec-anim {
  position: absolute;
  inset: 0;
  overflow: hidden;
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  color: rgba(255, 255, 255, 0.92);
}
.sec-anim--hello {
  background:
    radial-gradient(ellipse 60% 50% at 50% 50%, #1F62B6 0%, transparent 70%),
    radial-gradient(ellipse 80% 70% at 50% 50%, #3B82C8 0%, transparent 60%),
    linear-gradient(135deg, #C8E1F5 0%, #6FA8D9 50%, #1A4F8C 100%);
}
.sec-anim__bg {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.03) 0 1px, transparent 1.5px) 0 0/14px 14px;
  opacity: 0.6;
  pointer-events: none;
}

/* Logo Windows (4 quadrados) no topo */
.sec-anim__logo {
  position: absolute;
  top: 8%;
  left: 50%;
  transform: translateX(-50%);
  width: clamp(28px, 3.6vw, 36px);
  height: clamp(28px, 3.6vw, 36px);
  color: rgba(255, 255, 255, 0.85);
  display: block;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.35));
}
.sec-anim__logo svg { width: 100%; height: 100%; display: block; }

/* Relógio + data no topo (estilo lock screen) */
.sec-anim__time {
  position: absolute;
  top: 26%;
  left: 50%;
  transform: translateX(-50%);
  font-size: clamp(1.75rem, 5vw, 2.5rem);
  font-weight: 200;
  letter-spacing: -0.02em;
  line-height: 1;
}
.sec-anim__date {
  position: absolute;
  top: calc(26% + clamp(2rem, 5.5vw, 2.75rem));
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.6875rem;
  letter-spacing: 0.04em;
  color: rgba(255, 255, 255, 0.7);
  white-space: nowrap;
}

.sec-anim__stack {
  position: absolute;
  bottom: 12%;
  left: 50%;
  transform: translateX(-50%);
  display: grid;
  justify-items: center;
  gap: 0.625rem;
  text-align: center;
}
/* Mobile: desce o stack (avatar + check) para não sobrepor o relógio/data. */
@media (max-width: 768px) {
  .sec-anim__stack { bottom: 4%; }
}

/* --- Avatar (círculo com iniciais) ---------------------------------------- */
.sec-anim__avatar {
  position: relative;
  width: clamp(44px, 7vw, 56px);
  height: clamp(44px, 7vw, 56px);
  border-radius: 50%;
  background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
  display: grid;
  place-items: center;
  color: #1a1f3a;
  font-weight: 700;
  font-size: clamp(0.875rem, 1.6vw, 1.0625rem);
  letter-spacing: 0.02em;
  box-shadow: 0 8px 24px -8px rgba(0, 0, 0, 0.5);
  animation: hello-avatar 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.sec-anim__initials {
  display: grid;
  place-items: center;
  width: 70%;
  height: 70%;
  animation: hello-initials 5.5s infinite ease;
}
.sec-anim__initials svg { width: 100%; height: 100%; display: block; }

/* Spinner (anel girando ao redor) */
.sec-anim__ring {
  position: absolute;
  inset: -7px;
  border-radius: 50%;
  border: 2px solid transparent;
  border-top-color: rgba(96, 165, 250, 0.95);
  border-right-color: rgba(96, 165, 250, 0.6);
  opacity: 0;
  animation: hello-ring 5.5s infinite linear;
}

/* Check verde (aparece após o reconhecimento) */
.sec-anim__check {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: #10b981;
  color: #fff;
  opacity: 0;
  transform: scale(0.5);
  animation: hello-check 5.5s infinite cubic-bezier(0.34, 1.48, 0.52, 1);
}
.sec-anim__check svg { width: 55%; height: 55%; }

/* Pill "Olhando para a câmera…" */
.sec-anim__cam {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.3125rem 0.625rem;
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 999px;
  font-size: 0.6875rem;
  letter-spacing: 0.01em;
  color: rgba(255, 255, 255, 0.88);
  white-space: nowrap;
  opacity: 0;
  animation: hello-cam 5.5s infinite ease-in-out;
}
.sec-anim__cam svg {
  width: 13px;
  height: 13px;
  animation: hello-cam-pulse 1.4s infinite ease-in-out;
}

/* Greeting final */
.sec-anim__greeting {
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: rgba(255, 255, 255, 0.95);
  white-space: nowrap;
  opacity: 0;
  transform: translateY(6px);
  animation: hello-greeting 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* --- Keyframes orquestrados (cycle 5.5s) ---------------------------------
   0%-8%   : reset
   8%-16%  : avatar entra (blur+fade)
   16%-55% : ring girando + cam pill
   55%-65% : check verde
   65%-90% : greeting visível
   90%-100%: fade out tudo
   ------------------------------------------------------------------------ */
@keyframes hello-avatar {
  0%, 6%   { opacity: 0; filter: blur(10px); transform: scale(0.92); }
  16%, 90% { opacity: 1; filter: blur(0); transform: scale(1); }
  100%     { opacity: 0; filter: blur(8px); transform: scale(0.96); }
}
@keyframes hello-initials {
  0%, 55%  { opacity: 1; }
  62%, 100%{ opacity: 0; }
}
@keyframes hello-ring {
  0%, 16%  { opacity: 0; transform: rotate(0deg); }
  20%      { opacity: 1; }
  55%      { opacity: 1; transform: rotate(720deg); }
  60%, 100%{ opacity: 0; transform: rotate(720deg); }
}
@keyframes hello-cam {
  0%, 14%   { opacity: 0; transform: translateY(4px); }
  20%, 52%  { opacity: 1; transform: translateY(0); }
  58%, 100% { opacity: 0; transform: translateY(-2px); }
}
@keyframes hello-cam-pulse {
  0%, 100% { transform: scale(1);   opacity: 0.85; }
  50%      { transform: scale(1.18); opacity: 1; }
}
@keyframes hello-check {
  0%, 55%  { opacity: 0; transform: scale(0.5); }
  62%      { opacity: 1; transform: scale(1.08); }
  68%, 88% { opacity: 1; transform: scale(1); }
  94%, 100%{ opacity: 0; transform: scale(0.94); }
}
@keyframes hello-greeting {
  0%, 62%  { opacity: 0; transform: translateY(6px); }
  70%, 88% { opacity: 1; transform: translateY(0); }
  94%, 100%{ opacity: 0; transform: translateY(-3px); }
}

@media (prefers-reduced-motion: reduce) {
  .sec-anim__avatar,
  .sec-anim__initials,
  .sec-anim__ring,
  .sec-anim__check,
  .sec-anim__cam,
  .sec-anim__cam svg,
  .sec-anim__greeting {
    animation: none;
  }
  .sec-anim__avatar { opacity: 1; }
  .sec-anim__check  { opacity: 1; transform: scale(1); }
  .sec-anim__initials { opacity: 0; }
  .sec-anim__greeting { opacity: 1; transform: none; }
}

/* ===========================================================================
   SEC-ANIM · Card 2 · Leitor de digital + barra de progresso (loop 5.5s)
   =========================================================================== */
.sec-anim--fp {
  background:
    radial-gradient(120% 90% at 25% 20%, rgba(6, 182, 212, 0.10), transparent 55%),
    radial-gradient(110% 80% at 80% 85%, rgba(16, 185, 129, 0.08), transparent 60%),
    linear-gradient(135deg, #f4f6fa 0%, #e9eef5 100%);
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  color: #0f172a;
}

/* Labels topo (status) */
.fp-label {
  position: absolute;
  top: 14%;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: nowrap;
  padding: 0.3rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.fp-label--reading {
  color: #0e7490;
  animation: fp-label-reading 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.fp-label--done {
  color: #047857;
  animation: fp-label-done 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* Wrap do leitor (host do dedo absoluto) */
.fp-reader-wrap {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -54%);
  width: clamp(80px, 13vw, 110px);
  height: clamp(80px, 13vw, 110px);
}

/* Leitor circular (touchpad sensor) */
.fp-reader {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: #fff;
  display: grid;
  place-items: center;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.9) inset,
    0 8px 24px -10px rgba(15, 23, 42, 0.18),
    0 0 0 1px rgba(15, 23, 42, 0.06);
  color: #06b6d4;
  animation: fp-reader-pulse 5.5s infinite ease-in-out;
}
.fp-print {
  width: 56%;
  height: 78%;
}
.fp-print path {
  stroke-dasharray: 100;
  stroke-dashoffset: 100;
  animation: fp-print-trace 5.5s infinite ease-out;
}
.fp-print path:nth-child(1) { animation-delay: 0.00s; }
.fp-print path:nth-child(2) { animation-delay: 0.06s; }
.fp-print path:nth-child(3) { animation-delay: 0.12s; }
.fp-print path:nth-child(4) { animation-delay: 0.18s; }
.fp-print path:nth-child(5) { animation-delay: 0.24s; }
.fp-print path:nth-child(6) { animation-delay: 0.30s; }
.fp-print path:nth-child(7) { animation-delay: 0.36s; }
.fp-print path:nth-child(8) { animation-delay: 0.42s; }
.fp-print path:nth-child(9) { animation-delay: 0.48s; }

/* Check verde sobre o leitor */
.fp-check {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: #10b981;
  border-radius: 50%;
  color: #fff;
  opacity: 0;
  transform: scale(0.55);
  animation: fp-check-in 5.5s infinite cubic-bezier(0.34, 1.48, 0.52, 1);
}
.fp-check svg { width: 50%; height: 50%; }

/* Barra de progresso na base */
.fp-bar {
  position: absolute;
  bottom: 14%;
  left: 50%;
  transform: translateX(-50%);
  width: clamp(120px, 30%, 180px);
  height: 4px;
  border-radius: 999px;
  background: rgba(15, 23, 42, 0.08);
  overflow: hidden;
}
.fp-bar__fill {
  display: block;
  width: 100%;
  height: 100%;
  background: #06b6d4;
  border-radius: inherit;
  transform-origin: left center;
  transform: scaleX(0);
  animation:
    fp-bar-fill 5.5s infinite cubic-bezier(0.65, 0, 0.35, 1),
    fp-bar-color 5.5s infinite ease;
}

/* --- Keyframes coordenados (cycle 5.5s) ----------------------------------
   0-8%   : reset (leitor neutro)
   8-12%  : leitor acende em cyan, print começa a traçar
   12-58% : barra preenche, label "Lendo digital…"
   58-65% : barra completa, leitor fica verde, check + label "Acesso liberado"
   65-90% : hold
   90-100%: fade out
   ------------------------------------------------------------------------ */
@keyframes fp-reader-pulse {
  0%, 8% {
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.9) inset,
      0 8px 24px -10px rgba(15, 23, 42, 0.18),
      0 0 0 1px rgba(15, 23, 42, 0.06);
    color: rgba(6, 182, 212, 0.4);
  }
  14%, 55% {
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.9) inset,
      0 8px 24px -10px rgba(6, 182, 212, 0.35),
      0 0 0 8px rgba(6, 182, 212, 0.16);
    color: #06b6d4;
  }
  62%, 88% {
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.9) inset,
      0 8px 24px -10px rgba(16, 185, 129, 0.35),
      0 0 0 12px rgba(16, 185, 129, 0.18);
    color: #10b981;
  }
  95%, 100% {
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.9) inset,
      0 8px 24px -10px rgba(15, 23, 42, 0.18),
      0 0 0 1px rgba(15, 23, 42, 0.06);
    color: rgba(6, 182, 212, 0.2);
  }
}
@keyframes fp-print-trace {
  0%, 10%   { stroke-dashoffset: 100; opacity: 0.6; }
  48%, 55%  { stroke-dashoffset: 0;   opacity: 1; }
  64%, 100% { stroke-dashoffset: 100; opacity: 0; }
}
@keyframes fp-bar-fill {
  0%, 12%  { transform: scaleX(0); }
  58%, 88% { transform: scaleX(1); }
  95%, 100%{ transform: scaleX(0); }
}
@keyframes fp-bar-color {
  0%, 55%  { background: #06b6d4; }
  62%, 100%{ background: #10b981; }
}
@keyframes fp-check-in {
  0%, 60%  { opacity: 0; transform: scale(0.55); }
  68%      { opacity: 1; transform: scale(1.1); }
  74%, 88% { opacity: 1; transform: scale(1); }
  95%, 100%{ opacity: 0; transform: scale(0.92); }
}
@keyframes fp-label-reading {
  0%, 8%   { opacity: 0; transform: translate(-50%, 4px); }
  16%, 55% { opacity: 1; transform: translate(-50%, 0); }
  62%, 100%{ opacity: 0; transform: translate(-50%, -4px); }
}
@keyframes fp-label-done {
  0%, 60%  { opacity: 0; transform: translate(-50%, 4px); }
  68%, 88% { opacity: 1; transform: translate(-50%, 0); }
  95%, 100%{ opacity: 0; transform: translate(-50%, -4px); }
}

@media (prefers-reduced-motion: reduce) {
  .fp-label,
  .fp-reader,
  .fp-print path,
  .fp-check,
  .fp-bar__fill {
    animation: none;
  }
  .fp-label--reading { opacity: 0; }
  .fp-label--done    { opacity: 1; }
  .fp-print path     { stroke-dashoffset: 0; }
  .fp-check          { opacity: 1; transform: scale(1); }
  .fp-bar__fill      { transform: scaleX(1); background: #10b981; }
}

/* ===========================================================================
   SEC-ANIM · Card 3 · Webcam ON ↔ OFF (loop 5.5s)
   =========================================================================== */
.sec-anim--cam {
  background:
    radial-gradient(120% 90% at 25% 20%, rgba(6, 182, 212, 0.10), transparent 55%),
    radial-gradient(110% 80% at 80% 85%, rgba(16, 185, 129, 0.08), transparent 60%),
    linear-gradient(135deg, #0112483b 0%, #dfdfdf 100%);
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  color: #0a1929;
}

/* --- Labels topo (status) ----------------------------------------------- */
.cam-label {
  position: absolute;
  top: 14%;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: nowrap;
  padding: 0.3rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.cam-label::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.cam-label--active {
  color: #dc2626;
  animation: cam-label-active 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.cam-label--private {
  color: #0a1929;
  animation: cam-label-private 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* --- Câmera (host + body + lens + shutter) ------------------------------ */
.cam-stage {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -42%);
  width: clamp(80px, 14vw, 110px);
  height: clamp(80px, 14vw, 110px);
}
.cam-body {
  position: relative;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, #14283d 0%, #ffffff 100%);
  box-shadow:
    inset 0 2px 4px rgba(255, 255, 255, 0.06),
    inset 0 -2px 4px rgba(0, 0, 0, 0.4),
    0 10px 22px -10px rgba(10, 25, 41, 0.28),
    0 0 0 1px rgba(10, 25, 41, 0.10);
  overflow: hidden;
}

/* Lente · contrai ao fechar a íris */
.cam-lens {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 70%;
  height: 70%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 30% 28%, rgba(255, 255, 255, 0.4) 0%, transparent 38%),
    radial-gradient(circle at 50% 50%, #1e3a52 0%, #0f2236 55%, #050d18 100%);
  box-shadow: inset 0 0 12px rgba(0, 0, 0, 0.6);
  transform: translate(-50%, -50%) scale(1);
  animation: cam-lens-iris 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.cam-lens__pupil {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 32%;
  height: 32%;
  border-radius: 50%;
  background: #000;
  transform: translate(-50%, -50%);
  box-shadow: 0 0 10px rgba(180, 200, 220, 0.18) inset;
}
.cam-lens__highlight {
  position: absolute;
  top: 18%;
  left: 22%;
  width: 22%;
  height: 22%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.9), transparent 70%);
  filter: blur(1.5px);
}

/* Dot REC fora da câmera */
.cam-rec {
  position: absolute;
  top: -4%;
  right: -4%;
  width: clamp(8px, 1.1vw, 11px);
  height: clamp(8px, 1.1vw, 11px);
  border-radius: 50%;
  background: #ef4444;
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.55), 0 0 0 2px #fff;
  z-index: 2;
  animation: cam-rec-blink 5.5s infinite ease-in-out;
}

/* Shutter · prata escovada */
.cam-shutter {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background:
    linear-gradient(180deg, #e2e8f0 0%, #b8c2cd 50%, #94a3b8 100%);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.7),
    inset 0 -2px 4px rgba(0, 0, 0, 0.12),
    inset 6px 0 10px rgba(0, 0, 0, 0.12);
  transform: translateX(-110%);
  animation: cam-shutter-slide 5.5s infinite cubic-bezier(0.65, 0, 0.35, 1);
}

/* Mic riscado · grafite */
.cam-mic {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #374151;
  opacity: 0;
  transform: scale(0.7);
  z-index: 1;
  animation: cam-mic-in 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.cam-mic svg { width: 38%; height: 38%; }

/* Atalho Fn + Tab que dispara o shutter */
.cam-shortcut {
  position: absolute;
  bottom: 14%;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  opacity: 0;
  animation: cam-shortcut-in 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.cam-key {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2rem;
  padding: 0.3rem 0.55rem;
  background: #fff;
  border: 1px solid rgba(10, 25, 41, 0.15);
  border-bottom-width: 2px;
  border-radius: 6px;
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: #0a1929;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.9) inset,
    0 2px 4px rgba(10, 25, 41, 0.08);
  animation: cam-key-press 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.cam-plus {
  font-size: 0.75rem;
  font-weight: 600;
  color: rgba(10, 25, 41, 0.55);
  animation: cam-shortcut-fade 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes cam-shortcut-in {
  0%, 36%   { opacity: 0; transform: translate(-50%, 6px); }
  44%, 56%  { opacity: 1; transform: translate(-50%, 0); }
  64%, 100% { opacity: 0; transform: translate(-50%, -4px); }
}
@keyframes cam-shortcut-fade {
  0%, 36%   { opacity: 0; }
  44%, 56%  { opacity: 1; }
  64%, 100% { opacity: 0; }
}
@keyframes cam-key-press {
  0%, 44%   { transform: translateY(0); border-bottom-width: 2px; }
  50%       { transform: translateY(2px); border-bottom-width: 1px; }
  56%, 100% { transform: translateY(0); border-bottom-width: 2px; }
}

/* --- Keyframes coordenados (cycle 5.5s) ----------------------------------
   0-50%   : ATIVO (lens aberta, REC pisca, label "Webcam ativa")
   50-58%  : transição (shutter desliza, íris contrai)
   58-78%  : PRIVADO (shutter cobrindo, mic riscado, label "Privado")
   78-92%  : transição (shutter sai, íris reabre)
   92-100% : reset para próximo ciclo
   ------------------------------------------------------------------------ */
@keyframes cam-lens-iris {
  0%, 50%   { transform: translate(-50%, -50%) scale(1);   opacity: 1; }
  56%       { transform: translate(-50%, -50%) scale(0.6); opacity: 0.5; }
  78%       { transform: translate(-50%, -50%) scale(0.6); opacity: 0.5; }
  90%, 100% { transform: translate(-50%, -50%) scale(1);   opacity: 1; }
}
@keyframes cam-shutter-slide {
  0%, 48%   { transform: translateX(-110%); }
  56%, 78%  { transform: translateX(0); }
  90%, 100% { transform: translateX(110%); }
}
@keyframes cam-rec-blink {
  0%, 4%    { opacity: 0; transform: scale(0.7); }
  10%, 14%  { opacity: 1; transform: scale(1); }
  18%, 22%  { opacity: 0.3; transform: scale(0.85); }
  26%, 30%  { opacity: 1; transform: scale(1); }
  34%, 38%  { opacity: 0.3; transform: scale(0.85); }
  42%, 46%  { opacity: 1; transform: scale(1); }
  52%, 100% { opacity: 0; transform: scale(0.7); }
}
@keyframes cam-mic-in {
  0%, 56%   { opacity: 0; transform: scale(0.7); }
  62%       { opacity: 1; transform: scale(1.12); }
  68%, 78%  { opacity: 1; transform: scale(1); }
  86%, 100% { opacity: 0; transform: scale(0.88); }
}
@keyframes cam-label-active {
  0%, 4%    { opacity: 0; transform: translate(-50%, 4px); }
  10%, 48%  { opacity: 1; transform: translate(-50%, 0); }
  56%, 100% { opacity: 0; transform: translate(-50%, -4px); }
}
@keyframes cam-label-private {
  0%, 56%   { opacity: 0; transform: translate(-50%, 4px); }
  62%, 80%  { opacity: 1; transform: translate(-50%, 0); }
  88%, 100% { opacity: 0; transform: translate(-50%, -4px); }
}

@media (prefers-reduced-motion: reduce) {
  .cam-label,
  .cam-lens,
  .cam-shutter,
  .cam-rec,
  .cam-mic,
  .cam-shortcut,
  .cam-key,
  .cam-plus {
    animation: none;
  }
  .cam-label--active   { opacity: 1; }
  .cam-label--private  { opacity: 0; }
  .cam-rec             { opacity: 1; transform: scale(1); }
  .cam-shutter         { transform: translateX(-110%); }
  .cam-mic             { opacity: 0; }
  .cam-lens            { transform: translate(-50%, -50%) scale(1); opacity: 1; }
  .cam-shortcut        { opacity: 0; }
}

/* ===========================================================================
   SEC-ANIM · Card 4 · Cadeado + corrente (loop 5.5s)
   =========================================================================== */
.sec-anim--lock {
  background:
    radial-gradient(120% 90% at 25% 20%, rgba(6, 182, 212, 0.12), transparent 55%),
    radial-gradient(110% 80% at 80% 85%, rgba(202, 138, 4, 0.08), transparent 60%),
    linear-gradient(135deg, #f6f5f7 0%, #ececee 100%);
  font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
  color: #0a1929;
}

/* Labels topo */
.lock-label {
  position: absolute;
  top: 14%;
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  white-space: nowrap;
  padding: 0.3rem 0.75rem;
  border-radius: 999px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  background: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.lock-label::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.lock-label--unlocked {
  color: #6b7280;
  animation: lock-label-unlocked 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.lock-label--locked {
  color: #047857;
  animation: lock-label-locked 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* Stage (host do cadeado + glow + ring) */
.lock-stage {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -42%);
  width: clamp(140px, 22vw, 180px);
  height: clamp(140px, 22vw, 180px);
}

/* Glow ciano atrás do cadeado · acende quando trava */
.lock-glow {
  position: absolute;
  inset: -8%;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(6, 182, 212, 0.55) 0%, transparent 60%);
  opacity: 0;
  animation: lock-glow-pulse 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* Anel pulsante quando trava (radar leve) */
.lock-ring {
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  border: 2px solid rgba(6, 182, 212, 0.6);
  opacity: 0;
  animation: lock-ring-pulse 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}

/* Cadeado */
.lock-icon {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 50%;
  height: auto;
  transform: translate(-50%, -50%) scale(0.92);
  opacity: 0;
  color: #0a1929;
  filter: drop-shadow(0 8px 16px rgba(15, 23, 42, 0.20));
  animation: lock-icon-in 5.5s infinite cubic-bezier(0.22, 1, 0.36, 1);
}
.lock-icon__arc {
  transform-origin: 48px 38px;
  transform: rotate(-32deg) translate(-6px, -2px);
  animation: lock-arc-close 5.5s infinite cubic-bezier(0.34, 1.48, 0.52, 1);
}

/* Sweep · faixa de luz que atravessa o cadeado quando fecha */
.lock-sweep {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 60%;
  height: 60%;
  border-radius: 16px;
  transform: translate(-50%, -50%) translateX(-140%) skewX(-18deg);
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.85) 50%,
    transparent 100%
  );
  opacity: 0;
  mix-blend-mode: overlay;
  animation: lock-sweep 5.5s infinite cubic-bezier(0.65, 0, 0.35, 1);
}

/* --- Keyframes coordenados (cycle 5.5s) ----------------------------------
   0-8%   : reset
   8-20%  : cadeado entra com arco aberto, label "Aberto"
   20-30% : arco fecha com snap (overshoot)
   30-36% : sweep de luz atravessa o cadeado
   30-78% : glow + ring pulsam, label "Protegido"
   78-92% : arco reabre, glow some
   92-100%: reset
   ------------------------------------------------------------------------ */
@keyframes lock-icon-in {
  0%, 4%   { opacity: 0; transform: translate(-50%, -50%) scale(0.88); }
  18%, 84% { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  94%, 100%{ opacity: 0; transform: translate(-50%, -50%) scale(1); }
}
@keyframes lock-arc-close {
  0%, 18%   { transform: rotate(-32deg) translate(-6px, -2px); }
  28%       { transform: rotate(6deg)   translate(0, 0); }
  34%, 100% { transform: rotate(0deg)   translate(0, 0); }
}
@keyframes lock-glow-pulse {
  0%, 26%   { opacity: 0; transform: scale(0.6); }
  34%       { opacity: 1; transform: scale(1.08); }
  46%       { opacity: 0.55; transform: scale(1); }
  62%       { opacity: 0.75; transform: scale(1.04); }
  78%       { opacity: 0.55; transform: scale(1); }
  92%, 100% { opacity: 0; transform: scale(1); }
}
@keyframes lock-ring-pulse {
  0%, 28%   { opacity: 0; transform: scale(0.7); }
  36%       { opacity: 0.9; transform: scale(1); }
  52%       { opacity: 0; transform: scale(1.35); }
  60%       { opacity: 0.7; transform: scale(1); }
  74%       { opacity: 0; transform: scale(1.35); }
  92%, 100% { opacity: 0; transform: scale(1); }
}
@keyframes lock-sweep {
  0%, 28%   { opacity: 0; transform: translate(-50%, -50%) translateX(-140%) skewX(-18deg); }
  32%       { opacity: 1; }
  40%       { opacity: 0; transform: translate(-50%, -50%) translateX(140%) skewX(-18deg); }
  100%      { opacity: 0; transform: translate(-50%, -50%) translateX(140%) skewX(-18deg); }
}
@keyframes lock-label-unlocked {
  0%, 4%    { opacity: 0; transform: translate(-50%, 4px); }
  10%, 26%  { opacity: 1; transform: translate(-50%, 0); }
  34%, 100% { opacity: 0; transform: translate(-50%, -4px); }
}
@keyframes lock-label-locked {
  0%, 32%   { opacity: 0; transform: translate(-50%, 4px); }
  40%, 82%  { opacity: 1; transform: translate(-50%, 0); }
  90%, 100% { opacity: 0; transform: translate(-50%, -4px); }
}

@media (prefers-reduced-motion: reduce) {
  .lock-label,
  .lock-glow,
  .lock-ring,
  .lock-icon,
  .lock-icon__arc,
  .lock-sweep {
    animation: none;
  }
  .lock-label--unlocked { opacity: 0; }
  .lock-label--locked   { opacity: 1; }
  .lock-icon            { opacity: 1; transform: translate(-50%, -50%) scale(1); }
  .lock-icon__arc       { transform: rotate(0deg); }
  .lock-glow            { opacity: 0.55; transform: scale(1); }
  .lock-ring            { opacity: 0; }
  .lock-sweep           { opacity: 0; }
}



.studio__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

.studio__card {
  padding: var(--space-6);
  background: var(--bg-app);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg);
  transition: border-color var(--duration-normal) var(--ease-out),
              transform var(--duration-normal) var(--ease-out);
}
.studio__card:hover {
  border-color: var(--bg-brand);
  transform: translateY(-2px);
}
.studio__num {
  font-family: var(--font-mono);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  color: var(--vaio-gold);
  letter-spacing: var(--ls-wider);
  margin-bottom: var(--space-4);
}
.studio__card h3 {
  font-size: var(--fs-lg);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  line-height: var(--lh-snug);
  margin: 0 0 var(--space-2);
}
.studio__card p {
  font-size: var(--fs-sm);
  color: var(--text-secondary);
  line-height: var(--lh-normal);
  margin: 0;
}
.studio__footnote {
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--text-muted);
  margin-top: var(--space-8);
}

@media (min-width: 640px)  { .studio__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .studio__grid { grid-template-columns: repeat(4, 1fr); } }

/* ===========================================================================
   13. PORTS
   =========================================================================== */
.ports h3 {
  font-size: var(--fs-md);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  margin: var(--space-8) 0 var(--space-4);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
}
.ports__list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-3);
  list-style: none;
  padding: 0;
  margin: 0;
}
.ports__list li {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  background: var(--bg-subtle);
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
}
.ports__tag {
  font-family: var(--font-mono);
  font-weight: var(--fw-bold);
  color: var(--bg-brand);
  min-width: 2rem;
}

/* ===========================================================================
   15. DURABILITY
   =========================================================================== */
.durability__inner {
  max-width: var(--container-lg);
  margin-inline: auto;
  text-align: center;
}
.durability__inner p {
  font-size: var(--fs-lead);
  line-height: var(--lh-relaxed);
  color: var(--text-secondary);
  margin-inline: auto;
}

/* ===========================================================================
   16. PRODUCT VIEWS (tabs)
   =========================================================================== */
.product-views__container {
  max-width: var(--container-xl); /* 1200px */
  margin-inline: auto;
}

/* Header overrides · descrição em #000 e mesmo tamanho da seção segurança */
.product-views .section-heading__lead {
  color: #000;
  font-size: clamp(1rem, 1.2vw, 1.125rem);
  opacity: 1;
}

/* Tabs estilo segmented control (Apple) */
.product-views .tabs__list {
  display: inline-flex;
  justify-content: flex-start;
  flex-wrap: nowrap;
  gap: 4px;
  padding: 4px;
  margin-inline: auto;
  background: #e8e8ed;
  border: 0;
  border-radius: 999px;
  width: max-content;
  max-width: 100%;
  overflow-x: auto;
}
.product-views .tabs__list::-webkit-scrollbar { display: none; }
.product-views .tabs__trigger {
  position: relative;
  flex: 0 0 auto;
  padding: 0.55rem 1.125rem;
  background: transparent;
  border: 0;
  border-radius: 999px;
  font-size: 0.9375rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: #000;
  opacity: 0.8;
  cursor: pointer;
  white-space: nowrap;
  transition: opacity 200ms ease, background-color 240ms ease, color 240ms ease;
}
.product-views .tabs__trigger:hover { opacity: 1; }
.product-views .tabs__trigger[aria-selected="true"] {
  background: #000;
  color: #fff;
  opacity: 1;
}
.product-views .tabs__trigger[aria-selected="true"]::after { display: none; }
.product-views .tabs__trigger:focus-visible {
  outline: 2px solid #000;
  outline-offset: 3px;
}

/* Wrapper centraliza o segmented control mas mantém panels em 100% */
.product-views .tabs {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}
.product-views .tabs__panels { width: 100%; }
.product-views .tabs__panel { width: 100%; }
.product-views__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
  align-items: start;
  margin-top: var(--space-8);
}
.product-views__media { min-width: 0; }
.product-views__callouts {
  position: relative;
  list-style: none;
  margin: 0;
  padding: 0 0 0 3.25rem; /* espaço à esquerda para bullets + linha */
  display: grid;
  gap: var(--space-3);
}
/* Linha vertical que conecta os bullets numerados */
.product-views__callouts::before {
  content: "";
  position: absolute;
  left: calc(1rem - 1px); /* centro do bullet (bullet 2rem → metade = 1rem) */
  top: 1.5rem;            /* começa no centro do primeiro bullet */
  bottom: 1.5rem;         /* termina no centro do último */
  width: 2px;
  background: #e8e8ed;
  z-index: 0;
  border-radius: 999px;
}
.product-views__callouts li {
  position: relative;
  padding: 0.75rem 1rem;
  background: var(--bg-app);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
  font-size: 0.95rem;
  color: #000;
  transition: border-color var(--duration-fast) var(--ease-out);
}
.product-views__callouts li:hover { border-color: var(--bg-brand); }
.product-views__callouts li > span {
  position: absolute;
  left: -3.25rem;
  top: 50%;
  transform: translateY(-50%);
  width: 2rem;
  height: 2rem;
  display: grid;
  place-items: center;
  background: #e8e8ed;
  color: #000;
  border-radius: var(--radius-full);
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: var(--fw-bold);
  z-index: 1;
}
.product-views__footer {
  text-align: center;
  margin-top: var(--space-8);
  font-size: var(--fs-sm);
  color: var(--text-muted);
}
@media (min-width: 1024px) {
  .product-views__grid { grid-template-columns: 1.35fr 0.65fr; gap: var(--space-12); }
}

/* ---------------------------------------------------------------------------
   PRODUCT VIEWS · reveal em cascata (sem pressa)
   título → lead → tabs → media → linha vertical → callouts
   --------------------------------------------------------------------------- */
.product-views .section-heading__title,
.product-views .section-heading__lead,
.product-views .tabs__list,
.product-views .product-views__media,
.product-views .product-views__callouts li {
  opacity: 0;
  transform: translateY(28px);
  filter: blur(6px);
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 900ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--pv-delay, 0ms);
  will-change: opacity, transform;
}
.product-views .product-views__media {
  transform: translateY(28px) scale(0.985);
  transform-origin: center top;
}
.product-views.is-revealed .section-heading__title,
.product-views.is-revealed .section-heading__lead,
.product-views.is-revealed .tabs__list,
.product-views.is-revealed .product-views__media,
.product-views.is-revealed .product-views__callouts li {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

/* Linha vertical · cresce de cima para baixo */
.product-views .product-views__callouts::before {
  transform: scaleY(0);
  transform-origin: top center;
  transition:
    transform 1400ms cubic-bezier(0.22, 1, 0.36, 1) var(--pv-delay, 0ms);
}
.product-views.is-revealed .product-views__callouts::before {
  transform: scaleY(1);
}

/* Cascata · ritmo generoso (~3.6s) */
.product-views.is-revealed .section-heading__title { --pv-delay: 200ms; }
.product-views.is-revealed .section-heading__lead  { --pv-delay: 700ms; }
.product-views.is-revealed .tabs__list             { --pv-delay: 1200ms; }
.product-views.is-revealed .product-views__media   { --pv-delay: 1600ms; }
.product-views.is-revealed .product-views__callouts::before { --pv-delay: 2000ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(1) { --pv-delay: 2200ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(2) { --pv-delay: 2330ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(3) { --pv-delay: 2460ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(4) { --pv-delay: 2590ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(5) { --pv-delay: 2720ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(6) { --pv-delay: 2850ms; }
.product-views.is-revealed .product-views__callouts li:nth-child(7) { --pv-delay: 2980ms; }

@media (prefers-reduced-motion: reduce) {
  .product-views .section-heading__title,
  .product-views .section-heading__lead,
  .product-views .tabs__list,
  .product-views .product-views__media,
  .product-views .product-views__callouts li,
  .product-views .product-views__callouts::before {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

/* ===========================================================================
   16b. PROPOSTA · CTA com formulário (RD Station) — fundo branco
   =========================================================================== */
.proposal.section {
  background: linear-gradient(to bottom, #FFF 0%, #f6f5f4 35%, #f6f5f4 100%);
}
.proposal__grid {
  max-width: var(--container-xl);
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-12);
  align-items: center;
}
@media (min-width: 1024px) {
  .proposal__grid {
    grid-template-columns: 1.05fr 0.95fr;
    gap: var(--space-20);
  }
}

.proposal__title {
  font-size: var(--fs-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  color: var(--text-primary);
  margin: 0 0 var(--space-4);
  max-width: 16ch;
}
.proposal__lead {
  font-size: var(--fs-md);
  line-height: var(--lh-relaxed);
  color: #000;
  max-width: 52ch;
  margin: 0;
}

/* Selos de confiança — chips entrando em cascata + sheen contínuo sutil */
.proposal__seals {
  list-style: none;
  margin: var(--space-10) 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  max-width: 38rem;
}
.proposal-seal {
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-full);
  border: 1px solid var(--border-subtle);
  background: var(--bg-surface);
  box-shadow: var(--shadow-sm);
  font-size: var(--fs-sm);
  font-weight: var(--fw-semibold);
  line-height: 1;
  color: var(--text-primary);
  /* estado inicial da cascata */
  opacity: 0;
  transform: translateY(14px);
}
.proposal-seal svg {
  width: 1.1rem;
  height: 1.1rem;
  color: var(--vaio-gold);
  flex-shrink: 0;
}
.proposal-seal sup {
  font-size: 0.6em;
}
/* Brilho diagonal varrendo o chip (Liquid Glass vibe) */
.proposal-seal::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(
    115deg,
    transparent 38%,
    rgba(255, 255, 255, 0.55) 50%,
    transparent 62%
  );
  transform: translateX(-130%);
}

/* Cascata: cada selo entra com fade + slide escalonado quando a seção revela */
.proposal.is-revealed .proposal-seal {
  animation: proposalSealIn 600ms cubic-bezier(0.22, 1, 0.36, 1) var(--seal-delay, 0ms) both;
}
.proposal.is-revealed .proposal-seal::before {
  animation: proposalSealSheen 6s ease-in-out infinite;
  animation-delay: calc(var(--seal-delay, 0ms) + 800ms);
}
.proposal-seal:nth-child(1) { --seal-delay: 120ms; }
.proposal-seal:nth-child(2) { --seal-delay: 220ms; }
.proposal-seal:nth-child(3) { --seal-delay: 320ms; }
.proposal-seal:nth-child(4) { --seal-delay: 420ms; }
.proposal-seal:nth-child(5) { --seal-delay: 520ms; }

@keyframes proposalSealIn {
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes proposalSealSheen {
  0% { transform: translateX(-130%); }
  16%, 100% { transform: translateX(130%); }
}

@media (prefers-reduced-motion: reduce) {
  .proposal-seal {
    opacity: 1;
    transform: none;
    animation: none;
  }
  .proposal-seal::before { display: none; }
}

/* Card do formulário (RD Station) */
.proposal__card {
  background: var(--bg-app);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-xl);
  padding: clamp(1.5rem, 3vw, 2.5rem);
}
.proposal__card-title {
  font-size: var(--fs-xl);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-tight);
  color: var(--text-primary);
  margin: 0 0 var(--space-2);
}
.proposal__card-sub {
  font-size: var(--fs-sm);
  line-height: var(--lh-snug);
  color: var(--text-secondary);
  margin: 0 0 var(--space-6);
}
.proposal__form { width: 100%; }
/* Garante que os campos do RD Station ocupem a largura do card */
.proposal__form :where(input, select, textarea) { max-width: 100%; }

/* Labels do RD Station — o embed às vezes renderiza os rótulos ocultos
   (sr-only / display:none). Forçamos visíveis e estilizados no padrão da LP.
   Obs.: se o formulário estiver configurado SEM títulos no editor do RD
   Station, é preciso ativar "exibir rótulos" lá — o CSS não cria o que não
   existe no DOM. */
.proposal__form label {
  position: static !important;
  display: block !important;
  width: auto !important;
  height: auto !important;
  margin: 0 0 var(--space-1) !important;
  clip: auto !important;
  clip-path: none !important;
  overflow: visible !important;
  font-size: var(--fs-sm) !important;
  font-weight: var(--fw-semibold) !important;
  letter-spacing: var(--ls-wide);
  color: var(--text-primary) !important;
  opacity: 1 !important;
}

/* Botão de envio do RD Station — verde.
   O RD renderiza o botão como .bricks--component-button (com ID próprio e
   background-color: #000), por isso miramos essa classe + !important. */
.proposal__form .bricks--component-button {
  background-color: #6FAF1E !important;
  border-color: #6FAF1E !important;
  color: #fff !important;
  font-weight: var(--fw-bold) !important;
  transition: background-color var(--duration-fast) var(--ease-out);
}
.proposal__form .bricks--component-button,
.proposal__form .bricks--component-button * {
  color: #fff !important;
}
.proposal__form .bricks--component-button:hover {
  background-color: #5E9719 !important;
  border-color: #5E9719 !important;
}

/* Texto de privacidade abaixo do botão — é um <a> com cor branca inline.
   Mesma cor da descrição do card (--text-secondary). O !important vence o
   style inline; mirar o próprio <a> é necessário pois ele não tem classe. */
.proposal__form {
  color: var(--text-secondary);
}
.proposal__form a {
  color: var(--text-secondary) !important;
  opacity: 1 !important;
  text-decoration: underline;
}

/* Reveal de entrada · mesma linguagem das demais seções */
.proposal .proposal__intro,
.proposal .proposal__card {
  opacity: 0;
  transform: translateY(28px);
  filter: blur(6px);
  transition:
    opacity 1000ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1000ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 800ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--proposal-delay, 0ms);
  will-change: opacity, transform;
}
.proposal.is-revealed .proposal__intro,
.proposal.is-revealed .proposal__card {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}
.proposal.is-revealed .proposal__card { --proposal-delay: 180ms; }
@media (prefers-reduced-motion: reduce) {
  .proposal .proposal__intro,
  .proposal .proposal__card {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

/* ===========================================================================
   17. SPECS · Especificações Técnicas
   =========================================================================== */
.specs.section {
  background: #f6f5f4;
}
.specs__container {
  max-width: var(--container-lg); /* 1024px */
  margin-inline: auto;
}
.specs__heading {
  margin-bottom: clamp(2rem, 4vw, 3rem);
}
.specs__title {
  margin: 0;
  text-align: left;
  font-size: clamp(2rem, 4.6vw, 3.25rem);
  font-weight: var(--fw-bold);
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: currentColor;
}
.specs__wrap {
  max-width: var(--container-lg);
  margin-inline: auto;
}
.specs__wrap .table th,
.specs__wrap .table td {
  padding: var(--space-4);
  vertical-align: top;
}
.specs__wrap .table td { color: #000; }
.specs__wrap .table th {
  text-align: left;
  width: 14rem;
  color: var(--text-primary);
  background: var(--bg-subtle);
  font-weight: var(--fw-semibold);
  font-size: var(--fs-sm);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
}

/* Mobile · width da coluna th do specs */
@media (max-width: 768px) {
  .specs__wrap .table th { width: 10rem; }
}

/* Disclaimers como linhas simples */
.specs__disclaimer {
  margin: 0.25rem 0 0;
  font-size: 0.75rem;
  line-height: 1.55;
  color: #000;
}
.specs__disclaimer:first-of-type { margin-top: 1.5rem; }

.specs__actions {
  margin-top: var(--space-8);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}

/* ---------------------------------------------------------------------------
   SPECS · reveal em cascata simples
   título → tabela (bloco único) → disclaimers → botões
   --------------------------------------------------------------------------- */
.specs .specs__title,
.specs .specs__wrap .table-wrap,
.specs .specs__disclaimer,
.specs .specs__actions {
  opacity: 0;
  transform: translateY(28px);
  filter: blur(6px);
  transition:
    opacity 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    transform 1100ms cubic-bezier(0.22, 1, 0.36, 1),
    filter 900ms cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--specs-delay, 0ms);
  will-change: opacity, transform;
}
.specs.is-revealed .specs__title,
.specs.is-revealed .specs__wrap .table-wrap,
.specs.is-revealed .specs__disclaimer,
.specs.is-revealed .specs__actions {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

.specs.is-revealed .specs__title              { --specs-delay: 200ms; }
.specs.is-revealed .specs__wrap .table-wrap   { --specs-delay: 700ms; }
.specs.is-revealed .specs__disclaimer:nth-of-type(1) { --specs-delay: 1300ms; }
.specs.is-revealed .specs__disclaimer:nth-of-type(2) { --specs-delay: 1450ms; }
.specs.is-revealed .specs__actions            { --specs-delay: 1700ms; }

@media (prefers-reduced-motion: reduce) {
  .specs .specs__title,
  .specs .specs__wrap .table-wrap,
  .specs .specs__disclaimer,
  .specs .specs__actions {
    opacity: 1;
    transform: none;
    filter: none;
    transition: none;
  }
}

/* ===========================================================================
   18. CTA FINAL
   =========================================================================== */
.cta__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-12);
  align-items: center;
}
.cta__title {
  font-size: var(--fs-h2);
  font-weight: var(--fw-bold);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  color: var(--text-on-brand);
  margin: 0 0 var(--space-4);
}
.cta__lead {
  font-size: var(--fs-lead);
  line-height: var(--lh-snug);
  opacity: 0.85;
  margin: 0 0 var(--space-8);
}
.cta__trust {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: var(--space-3);
}
.cta__trust li {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  font-size: var(--fs-md);
  color: var(--text-on-brand);
  opacity: 0.9;
}
.cta__trust svg {
  width: 1.25rem;
  height: 1.25rem;
  color: var(--vaio-gold);
  flex-shrink: 0;
}

.cta__form {
  background: var(--bg-app);
  color: var(--text-primary);
  padding: var(--space-8);
  display: grid;
  gap: var(--space-4);
}
.cta__form .card__title { font-size: var(--fs-xl); margin-bottom: var(--space-2); }

@media (min-width: 1024px) {
  .cta__grid { grid-template-columns: 1fr 1fr; gap: var(--space-16); }
}

/* ===========================================================================
   19. FOOTER · disclaimer + logo Positivo Tecnologia
   =========================================================================== */
.site-footer {
  background: #f6f5f4;
  color: #000;
  padding-block: clamp(1.5rem, 3vw, 2.25rem);
}
.site-footer__container {
  max-width: var(--container-lg); /* 1024px */
  margin-inline: auto;
  padding-inline: clamp(1rem, 4vw, 2rem); /* respiro nas laterais */
  display: flex;
  flex-direction: column-reverse;
  gap: clamp(1.25rem, 3vw, 2rem);
  align-items: center;
}
.site-footer__legal {
  margin: 0;
  font-size: 0.75rem;
  line-height: 1.55;
  color: #000;
  text-align: justify;
}
.site-footer__inline-logo {
  display: inline-block;
  height: 0.9em;
  width: auto;
  vertical-align: -0.05em;
  margin-inline: 0.15em;
  /* Logo entregue em branco; inverte para preto sobre fundo branco */
  filter: invert(1);
}
.site-footer__brand {
  flex-shrink: 0;
  display: inline-block;
  line-height: 0;
}
.site-footer__brand img {
  display: block;
  height: 35px;
  width: auto;
}

@media (min-width: 768px) {
  .site-footer__container {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: clamp(1.25rem, 2.5vw, 2rem);
  }
  .site-footer__legal { flex: 1; max-width: 120ch; }
}

/* ===========================================================================
   Dark mode adjustments
   =========================================================================== */
.dark .media-box {
  background:
    repeating-linear-gradient(
      45deg,
      rgba(255,255,255,0.02) 0 14px,
      rgba(255,255,255,0.05) 14px 15px
    ),
    var(--bg-subtle);
  border-color: var(--border-strong);
}
.dark .media-box__label {
  background: color-mix(in oklch, var(--bg-surface) 85%, transparent);
  border-color: var(--border-default);
}
.dark .hero::before,
.dark .battery::before { opacity: 0.6; }
.dark .site-header { background-color: color-mix(in oklch, var(--bg-app) 78%, transparent); }

/* ===========================================================================
   Polish
   =========================================================================== */
kbd.kbd {
  display: inline-block;
  padding: 2px 6px;
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  background: var(--bg-subtle);
  border: 1px solid var(--border-default);
  border-bottom-width: 2px;
  border-radius: var(--radius-xs);
  color: var(--text-primary);
  vertical-align: baseline;
}
