.reel-stage {
  position: relative;
  display: grid;
  align-items: center;
  min-height: clamp(11rem, 30vw, 26rem);
  overflow: hidden;
}

.reel-stage::before {
  position: absolute;
  inset: 0;
  background: url("assets/logo-af-filigrana.webp") center / min(78%, 48rem) auto no-repeat;
  opacity: .18;
  pointer-events: none;
  content: "";
}

.reel-still {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  align-items: center;
  gap: .7rem;
}

.reel-still img {
  width: 100%;
  height: auto;
  border-radius: var(--radius-control);
}

.reel-mask {
  position: absolute;
  inset: 0;
  visibility: hidden;
  pointer-events: none;
  mask-image: linear-gradient(90deg, transparent 2%, #000 14%, #000 85%, transparent 98%);
}

.reel-camera { position: absolute; inset: 0; }
.reel--enhanced .reel-still { opacity: 0; }
.reel--enhanced .reel-mask { visibility: visible; }

.reel-description {
  max-width: 34rem;
  margin: 1.25rem auto 0;
  color: var(--muted);
  line-height: 1.65;
  text-align: center;
}

.reel-tile {
  position: absolute;
  top: calc(50% - var(--tile-height) / 2);
  left: calc(50% - var(--tile-width) / 2);
  width: var(--tile-width);
  height: var(--tile-height);
  transform-style: preserve-3d;
  animation: reel-orbit linear infinite paused;
}

.reel--playing .reel-tile { animation-play-state: running; }

.reel-facet {
  position: absolute;
  inset-block: 0;
  backface-visibility: hidden;
  background-image: var(--reel-image);
  background-size: var(--tile-width) var(--tile-height);
  background-repeat: no-repeat;
}

.reel-facet:first-child { border-radius: .75rem 0 0 .75rem; }
.reel-facet:last-child { border-radius: 0 .75rem .75rem 0; }

[hidden] { display: none !important; }

.smart-tv {
  --tv-bezel: clamp(.38rem, .9vw, .7rem);
  --tv-feet: clamp(.55rem, 1.5vw, 1.15rem);
  position: relative;
  width: min(100%, 59rem);
  margin-inline: auto;
  margin-block-end: var(--tv-feet);
  padding: var(--tv-bezel);
  border: 1px solid #f8f7f8;
  border-radius: clamp(.82rem, 1.8vw, 1.4rem);
  color: var(--ink);
  background: linear-gradient(155deg, #fff 0%, #f5f3ef 30%, #dedbdc 76%, #f3f1ef 100%);
  box-shadow:
    inset 0 1px 2px #fff,
    inset 0 -1px 1px #8d898b,
    0 .75rem 1.6rem -.75rem #000a;
}

.smart-tv::before, .smart-tv::after {
  position: absolute;
  top: 100%;
  width: clamp(1.5rem, 6.5vw, 3.6rem);
  height: var(--tv-feet);
  border-radius: 0 0 .18rem .18rem;
  background: linear-gradient(#aaa6aa, #efeeee 82%, #cbc8cd);
  box-shadow: 0 .3rem .6rem -.15rem #0006;
  pointer-events: none;
  content: "";
}

.smart-tv::before { left: 14%; transform: skewX(-25deg); }
.smart-tv::after { right: 14%; transform: skewX(25deg); }

.smart-tv__screen { position: relative; }

.smart-tv__endmark {
  position: absolute;
  top: 50%;
  left: 50%;
  width: min(31%, 15rem);
  height: auto;
  transform: translate(-50%, -50%);
  filter: drop-shadow(0 0 1px #fffb) drop-shadow(0 .22rem .8rem #000a);
  pointer-events: none;
  animation: endmark-in 240ms ease-out;
}

@keyframes endmark-in { from { opacity: 0; } to { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
  .smart-tv__endmark { animation: none; }
}

.smart-tv video {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 1px solid #0b090a;
  border-radius: clamp(.45rem, 1.25vw, .85rem);
  background: #0b090a;
  object-fit: contain;
}

.smart-tv__controls {
  position: relative;
  display: grid;
  justify-items: center;
  gap: .3rem;
  padding: .4rem .8rem .05rem;
}

.smart-tv__controls::after {
  position: absolute;
  top: 1.65rem;
  right: clamp(.7rem, 2vw, 1.5rem);
  width: .38rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: color-mix(in srgb, var(--wine) 42%, var(--dark));
  content: "";
}

.smart-tv[data-playing] .smart-tv__controls::after { background: var(--wine); box-shadow: 0 0 .55rem color-mix(in srgb, var(--wine) 55%, transparent); }
.smart-tv__controls .smart-tv__toggle { min-width: 6.5rem; min-height: 2.75rem; }
.smart-tv__controls .pearl-button__surface { padding: .4rem .95rem; }
.smart-tv video:focus-visible, .smart-tv .smart-tv__toggle:focus-visible { outline-color: var(--wine); }
.smart-tv__status:empty { display: none; }
.smart-tv__status { color: var(--ink); font-size: .85rem; text-align: center; }

@media (min-width: 44rem) and (min-height: 36rem) {
  .smart-tv { max-width: calc((100svh - 15rem) * 16 / 9); }
}

.demo-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: clamp(2.5rem, 5.5vw, 5rem);
  padding-block-end: 0;
}

.agent-gallery {
  --agent-image-width: clamp(9.75rem, 46vw, 19.2rem);
  --agent-image-height: clamp(9.75rem, 46vw, 18.5rem);
  --agent-radius: clamp(5.25rem, 25vw, 20.75rem);
  --agent-rear-rise: clamp(1.8rem, 3.5vw, 3rem);
  position: relative;
  overflow: clip;
}

.agent-gallery__ring {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 10.5rem), 1fr));
  gap: 1.35rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.agent-gallery__item { text-align: center; }
.agent-gallery__item picture { display: block; }

.agent-gallery__item img {
  width: 100%;
  height: min(var(--agent-image-height), 15rem);
  object-fit: contain;
}

.agent-gallery__caption { margin-block-start: .65rem; }

.agent-gallery__caption h3, .agent-gallery__role {
  margin-block-end: .25rem;
  color: var(--wine-dark);
  font-size: clamp(1.15rem, 2.5vw, 1.5rem);
  font-weight: 700;
  letter-spacing: -.035em;
  line-height: 1.15;
}

.agent-gallery__caption p, .agent-gallery__description { color: var(--muted); font-size: .95rem; line-height: 1.45; }

.agent-gallery__featured {
  min-height: 4.65rem;
  margin-inline: auto;
  max-width: 36ch;
  text-align: center;
}

.agent-gallery--enhanced .agent-gallery__scene {
  position: relative;
  height: clamp(14.25rem, 63vw, 23.5rem);
  perspective: clamp(1100px, 170vw, 2000px);
}

.agent-gallery--enhanced .agent-gallery__ring {
  position: absolute;
  inset: 0;
  display: block;
  padding: 0;
  transform: rotateY(var(--agent-rotation, 0deg));
  transform-style: preserve-3d;
}

.agent-gallery--enhanced .agent-gallery__item {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--agent-image-width);
  opacity: var(--agent-opacity, 1);
  transform:
    translate(-50%, calc(-50% - var(--agent-depth) * var(--agent-rear-rise)))
    rotateY(var(--agent-angle))
    translateZ(var(--agent-radius))
    rotateY(calc(var(--agent-yaw) - var(--agent-angle) - var(--agent-rotation)));
}

.agent-gallery--enhanced .agent-gallery__item img { height: var(--agent-image-height); }

.agent-gallery--enhanced .agent-gallery__caption {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: 0;
  overflow: hidden;
  clip-path: inset(50%);
}

.agent-gallery__controls {
  position: relative;
  display: flex;
  justify-content: center;
  gap: .65rem;
  padding: .6rem 1rem .85rem;
}

.agent-gallery__controls .pearl-button__surface {
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: .45rem .95rem;
}

.agent-gallery__controls [data-agent-pause] .pearl-button__surface { min-width: 6.3rem; }

@media (max-width: 36rem), (max-width: 57rem) and (hover: none) and (pointer: coarse) {
  .agent-gallery--enhanced {
    --agent-image-width: clamp(7.2rem, 35vw, 11rem);
    --agent-image-height: var(--agent-image-width);
    --agent-radius: clamp(5.85rem, 29.5vw, 10rem);
    --agent-rear-rise: clamp(4rem, 19vw, 5.5rem);
  }

  .agent-gallery--enhanced .agent-gallery__scene { height: clamp(12rem, 55vw, 17rem); }

  .agent-gallery--enhanced .agent-gallery__item {
    opacity: calc(1 - var(--agent-depth, 0) * .96);
  }

  .agent-gallery--enhanced .agent-gallery__item img {
    transform: scale(calc(1 - var(--agent-depth, 0) * .66));
  }
}

.demo-card {
  min-width: 0;
  padding: clamp(1.15rem, 3vw, 2.3rem);
  border: 1px solid var(--rule);
  border-radius: var(--radius-card);
  background: var(--surface);
  box-shadow: var(--shadow-card);
}

.automation-result:not(:empty) { margin-block-start: .8rem; padding: .75rem .85rem; border-radius: var(--radius-control); background: #f5efec; }

.demo-card.automation-card { padding: 0; }

.automation-diagram {
  display: block;
  width: 100%;
  height: auto;
  border-block-end: 1px solid var(--rule);
  border-start-start-radius: inherit;
  border-start-end-radius: inherit;
  background:
    radial-gradient(ellipse at center, #fcf9f5 7%, transparent 76%),
    radial-gradient(circle, color-mix(in srgb, var(--wine) 16%, transparent) 1px, transparent 1px) center / 1.15rem 1.15rem,
    var(--tint);
}

.automation-diagram__wires { fill: none; stroke: color-mix(in srgb, var(--wine) 46%, var(--rule)); stroke-width: 1.25; }

.automation-diagram__signals {
  fill: none;
  stroke: var(--wine);
  stroke-width: 2.5;
  stroke-linecap: round;
}

.automation-diagram__signals use {
  opacity: 0;
  stroke-dasharray: 12 88;
  animation: automation-signal 3.6s linear infinite paused;
}

.automation-diagram__signals use:nth-child(3n + 2) { animation-delay: -.7s; }
.automation-diagram__signals use:nth-child(3n) { animation-delay: -1.4s; }
.automation-diagram__signals use:nth-child(n + 4) { animation-delay: -1.8s; }
.automation-card[data-flow-active] .automation-diagram__signals use { animation-play-state: running; }

@keyframes automation-signal {
  0% { opacity: 0; stroke-dashoffset: 12; }
  7%, 43% { opacity: 1; }
  50%, 100% { opacity: 0; stroke-dashoffset: -100; }
}

.automation-diagram__tile rect,
.automation-diagram__hub rect {
  fill: var(--surface);
  stroke: color-mix(in srgb, var(--wine) 28%, var(--rule));
  stroke-width: 1;
  filter: drop-shadow(0 4px 4px #0002);
}

.automation-diagram__hub rect { stroke: var(--wine); stroke-width: 1.5; }
.automation-diagram__tile path { fill: none; stroke: var(--wine); stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
#automation-title span { color: var(--wine); }
.automation-content { padding: clamp(1.15rem, 3vw, 2.3rem); }
.automation-content h3 { font-size: clamp(1.45rem, 2.8vw, 2.35rem); line-height: 1.1; letter-spacing: -.055em; }
.automation-content h3 + p { margin-block: .65rem 1rem; color: var(--muted); }

@media (min-width: 57rem) {
  .automation-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .85fr); align-items: center; }
  .automation-diagram {
    height: 100%;
    border-block-end: 0;
    border-inline-end: 1px solid var(--rule);
    border-start-end-radius: 0;
    border-end-start-radius: inherit;
  }
}

.automation-input {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
  margin: 0 0 .8rem;
  padding: 0;
  list-style: none;
}

.automation-input li {
  padding: .4rem .65rem;
  border: 1px solid var(--rule);
  border-radius: var(--radius-pill);
  background: #f5efec;
  font-size: .82rem;
  font-weight: 700;
}

.design-scanner {
  --scan-width: clamp(15rem, 30vw, 25rem);
  --scan-gap: clamp(1.15rem, 4vw, 3.75rem);
  --scan-base: var(--dark);
  --scan-spark: color-mix(in srgb, var(--wine) 56%, white);
  --scan-highlight: var(--wine-light);
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--wine) 53%, var(--dark));
  border-radius: var(--radius-card);
  background: var(--scan-base);
  color: var(--white);
  box-shadow: var(--shadow-card);
}

.scanner-stage {
  position: relative;
  display: grid;
  align-items: center;
  min-height: clamp(14rem, 26vw, 22rem);
  overflow: hidden;
  background: radial-gradient(ellipse at center, color-mix(in srgb, var(--wine) 44%, var(--dark)), var(--scan-base) 75%);
}

.scanner-code {
  display: grid;
  align-content: center;
  justify-content: center;
  overflow: hidden;
  color: var(--wine-light);
  background: linear-gradient(110deg, color-mix(in srgb, var(--wine) 19%, var(--dark)), color-mix(in srgb, var(--wine) 55%, var(--dark)));
  font: 500 clamp(.32rem, .68vw, .61rem)/1.4 var(--mono);
}

.scanner-code pre {
  margin: 0;
  color: inherit;
  font: inherit;
  white-space: pre;
  mask-image: linear-gradient(90deg, #000, #000d 45%, #0008);
}

.scanner-window {
  min-width: 0;
  overflow: hidden;
  mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}

.scanner-track, .scanner-set { display: flex; width: max-content; }
.scanner-track { margin-block: 1.35rem; }
.scanner-set { flex: none; gap: var(--scan-gap); padding-inline-end: var(--scan-gap); }
.design-scanner:not(.design-scanner--ready) .scanner-window { mask-image: none; }
.design-scanner:not(.design-scanner--ready) .scanner-track { display: block; width: 100%; }
.design-scanner:not(.design-scanner--ready) .scanner-set {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  gap: .85rem;
  width: 100%;
  padding-inline: clamp(.75rem, 2vw, 1.35rem);
}
.design-scanner:not(.design-scanner--ready) .scanner-set:not(:first-child) { display: none; }
.design-scanner:not(.design-scanner--ready) .scan-card { width: 100%; }
.design-scanner--ready .scanner-track { will-change: transform; }

.design-scanner--ready .scanner-window {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
}

.design-scanner--ready .scanner-track { grid-area: 1 / 1; }
.scanner-clip { grid-area: 1 / 1; min-width: 0; clip-path: inset(0 0 0 50%); }
.scanner-clip--code { clip-path: inset(0 50% 0 0); }

.scanner-sparks, .scanner-beam { position: absolute; pointer-events: none; }
.scanner-sparks { inset: 0; width: 100%; height: 100%; }

.scanner-beam {
  display: none;
  inset: 8% auto 8% 50%;
  width: 2px;
  border-radius: var(--radius-pill);
  transform: translateX(-50%);
  background: linear-gradient(transparent, var(--scan-spark) 16%, var(--scan-highlight) 51%, var(--scan-spark) 84%, transparent);
  opacity: .5;
  transition: opacity 150ms ease;
}

.design-scanner--ready .scanner-beam { display: block; }
.design-scanner--crossing .scanner-beam { opacity: 1; }
.scanner-beam::after { position: absolute; inset: 3% -1.3rem; background: radial-gradient(ellipse, color-mix(in srgb, var(--wine) 50%, transparent), transparent 70%); content: ""; }

.scan-card {
  flex: 0 0 var(--scan-width);
  width: var(--scan-width);
  margin: 0;
  border: 1px solid color-mix(in srgb, var(--wine) 58%, var(--rule));
}

.scan-card:where(figure) { display: grid; grid-template-rows: minmax(0, 1fr) auto; }
.scan-card--collection, .scan-card--detail { background: #f4ece7; color: var(--ink); }
.scan-card--detail { background: color-mix(in srgb, var(--wine) 49%, var(--dark)); color: var(--white); }

.scan-ui {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: .3rem;
  padding: clamp(.7rem, 1.7vw, 1.2rem);
}

.scan-ui p { font-size: .71rem; font-weight: 700; }
.scan-ui strong { font-size: clamp(1rem, 2vw, 1.55rem); line-height: 1.1; }
.scan-ui img { width: 100%; height: 100%; min-height: 0; object-fit: cover; border-radius: .5rem; }
.scan-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: minmax(0, 1fr); gap: .5rem; }
.scanner-toggle { margin-block-start: .85rem; cursor: pointer; }

.project-art {
  position: relative;
  overflow: hidden;
  aspect-ratio: 1.62;
  border-radius: var(--radius-media);
}

.project-art--app { color: var(--ink); background: radial-gradient(ellipse at 66% 24%, color-mix(in srgb, var(--wine) 13%, var(--surface)), color-mix(in srgb, var(--wine) 32%, var(--surface)) 94%); }

.project-art figcaption {
  display: flex;
  align-items: center;
  min-height: 2rem;
  padding: .28rem clamp(.55rem, 1.35vw, .95rem);
  border-block-start: 1px solid #fff4;
  color: var(--white);
  background: var(--dark);
  font: 500 clamp(.66rem, 1.25vw, .76rem)/1.35 var(--mono);
}

.app-visual { position: relative; container-type: inline-size; }

.app-window {
  position: absolute;
  width: 68%;
  height: 83%;
  top: 13%;
  left: 10%;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--wine) 25%, var(--rule));
  border-radius: 1.5cqw;
  background: #faf6f3;
  box-shadow: 0 2cqw 7cqw #0003;
}

.app-window-bar { display: flex; align-items: center; height: 10%; gap: .58cqw; padding-inline: 2cqw; background: #ede3df; }
.app-window-bar i { display: block; width: .77cqw; height: .77cqw; border-radius: 50%; background: color-mix(in srgb, var(--wine) 22%, var(--muted)); }
.app-window-body { display: grid; height: 90%; grid-template-columns: 18% 1fr; }
.app-sidebar { display: grid; align-content: start; gap: 2.5cqw; padding: 3.4cqw 1.7cqw; border-inline-end: 1px solid #e5d7d4; }
.app-sidebar b { height: .65cqw; border-radius: .3cqw; background: color-mix(in srgb, var(--wine) 15%, var(--rule)); }
.app-sidebar b:first-child { background: var(--wine); }
.app-content { padding: 2.35cqw; }
.app-content > span, .phone-content > span { display: block; margin-block-end: 1cqw; font-size: 2.65cqw; font-weight: 700; letter-spacing: -.06em; }

.app-feature, .phone-feature {
  position: relative;
  overflow: hidden;
  padding: 1.65cqw 2.1cqw;
  border-radius: .65cqw;
  color: var(--white);
  background: linear-gradient(136deg, var(--wine-dark), var(--wine));
}

.app-feature::after, .phone-feature::after {
  position: absolute;
  width: 25cqw;
  aspect-ratio: 1;
  top: -4cqw;
  right: -5cqw;
  border: 1px solid #fff6;
  border-radius: 48% 52% 71% 29%;
  box-shadow: 0 0 0 1.4cqw #fff3, 0 0 0 3.3cqw #fff2, 0 0 0 5cqw #ffffff16;
  transform: rotate(-34deg);
  content: "";
}

.app-feature small, .phone-feature small { display: block; margin-block-end: .5cqw; font: 500 1.12cqw/1.2 var(--mono); letter-spacing: .08em; }
.app-feature strong, .phone-feature strong { position: relative; z-index: 1; display: block; font-size: 4.15cqw; line-height: .99; letter-spacing: -.075em; }
.app-tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.3cqw; margin-block-start: 1.45cqw; }
.app-tiles i { height: 9cqw; border: 1px solid #e4d4d0; border-radius: .55cqw; background: #f2e9e4; }

.app-phone {
  position: absolute;
  width: 20.5%;
  height: 79%;
  left: 70%;
  top: 21%;
  overflow: hidden;
  border: .55cqw solid var(--dark);
  border-radius: 2.6cqw;
  background: #faf6f3;
  box-shadow: 0 1.4cqw 4cqw #0004;
}

.phone-camera { width: 4cqw; height: .85cqw; margin: .75cqw auto .45cqw; border-radius: 1cqw; background: var(--dark); }
.phone-content { padding: 1.4cqw; }
.phone-content > span { font-size: 2.4cqw; }
.phone-feature { padding: 1.65cqw 1.15cqw 2.6cqw; }
.phone-feature small { font-size: .85cqw; }
.phone-feature strong { font-size: 2.75cqw; }
.phone-feature::after { right: -20cqw; }
.phone-row { display: flex; align-items: center; gap: .65cqw; padding-block: .75cqw; border-block-end: 1px solid #e6d8d4; }
.phone-row i:first-child { width: 3cqw; height: 3cqw; border-radius: .35cqw; background: #dfc6c5; }
.phone-row i:last-child { width: 6cqw; height: .65cqw; border-radius: .3cqw; background: color-mix(in srgb, var(--wine) 20%, var(--rule)); }

.project-details { border: 1px solid var(--rule); border-radius: var(--radius-control); }

.project-details summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  min-height: 3rem;
  padding: .55rem .75rem .55rem .95rem;
  border-radius: inherit;
  cursor: pointer;
  list-style: none;
  color: var(--wine);
  font-size: .9rem;
  font-weight: 700;
}

.project-details summary::-webkit-details-marker { display: none; }
.project-details summary:hover, .project-details summary:active { background: var(--tint); }
.project-details[open] { background: #f7f1ee; }
.project-details p { max-width: 36rem; padding: .35rem .95rem 1rem; color: var(--muted); }

.toggle-icon {
  position: relative;
  display: block;
  flex: none;
  width: 1.6rem;
  height: 1.6rem;
  border: 1px solid var(--rule);
  border-radius: 50%;
}

.toggle-icon::before, .toggle-icon::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: .6rem;
  height: 1px;
  background: currentColor;
  transform: translate(-50%, -50%);
  content: "";
}

.toggle-icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.project-details[open] .toggle-icon::after { display: none; }
