/* ===========================================================================
   BANCADA — as três demos dentro da página (2026-10-09)
   ---------------------------------------------------------------------------
   Substitui a grelha de cartões da "coleção". Desktop: separadores numa
   coluna à esquerda, palco à direita com um cromado de janela (pontos,
   endereço, "ao vivo"). Telemóvel: os separadores passam a uma barra de três
   colunas por cima do palco, e cada demo empilha.

   Os estilos das demos estão todos sob `.bancada`: a Automação também corre
   na Estação 04 do percurso (`path.css`), e essa não pode mudar.
   ======================================================================== */

/* 2026-10-09: a bancada passou para dentro de `#demo` (era uma secção
   própria, `#collection`, logo a seguir — duas secções a dizer o mesmo). O
   `padding-top` grande e o fundo quente continuam a ser os do
   `.section--dark` no cauda.css: a rampa de cor precisa deles. */
#demo.bancada { padding-bottom: clamp(80px, 12vh, 140px); }

.bancada-cabeca {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
  gap: 20px clamp(32px, 5vw, 80px);
  align-items: end;
  margin-bottom: clamp(36px, 6vh, 64px);
}
.bancada-titulo { display: grid; gap: 18px; }
.bancada-cabeca .display { margin: 0; max-width: none; font-size: clamp(36px, 5.4vw, 72px); line-height: 1; letter-spacing: -.038em; }
.bancada-cabeca .lede { margin: 0; max-width: 46ch; color: var(--paper-dim); font-size: clamp(15px, 1.25vw, 18px); line-height: 1.6; }

.bancada-mesa {
  display: grid;
  grid-template-columns: minmax(220px, 290px) 1fr;
  gap: clamp(16px, 2.4vw, 28px);
  align-items: start;
}

/* ---- separadores ------------------------------------------------------ */
.bancada-abas { display: grid; gap: 10px; position: sticky; top: 96px; }
.bancada-abas [role="tab"] {
  all: unset;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: auto 1fr;
  column-gap: 14px; row-gap: 6px;
  padding: 18px 18px 18px 16px;
  border: 1px solid var(--rule);
  border-radius: 16px;
  background: rgba(238, 241, 247, .02);
  color: var(--paper);
  cursor: pointer;
  position: relative;
  transition: border-color .25s, background-color .25s, transform .25s;
}
.bancada-abas [role="tab"]:hover { border-color: var(--rule-strong); background: rgba(238, 241, 247, .045); }
.bancada-abas [role="tab"]:focus-visible { outline: 2px solid var(--volt); outline-offset: 3px; }
.bancada-abas [role="tab"][aria-selected="true"] {
  border-color: color-mix(in srgb, var(--_c) 60%, transparent);
  background: linear-gradient(135deg, color-mix(in srgb, var(--_c) 13%, transparent), rgba(238, 241, 247, .02) 70%);
}
.bancada-abas [role="tab"][aria-selected="true"]::after {
  content: ""; position: absolute; left: -1px; top: 18px; bottom: 18px; width: 3px;
  border-radius: 3px; background: var(--_c);
}
#aba-site { --_c: var(--volt); }
#aba-plataforma { --_c: var(--aqua); }
#aba-automacao { --_c: #97A3FF; }

.aba-k { grid-row: span 2; font: 500 11px/1 var(--ff-mono); letter-spacing: .08em; color: var(--_c); padding-top: 4px; }
.aba-nome { font: 600 19px/1.1 var(--ff-display); letter-spacing: -.015em; }
.aba-desc { font: 400 13px/1.45 var(--ff-ui); color: var(--paper-dim); }

/* ---- o ecrã ----------------------------------------------------------- */
.bancada-ecra {
  min-width: 0;
  border: 1px solid var(--rule-strong);
  border-radius: 20px;
  background: linear-gradient(180deg, #121624, #0B0E17);
  box-shadow: 0 40px 90px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .05);
  overflow: hidden;
}
.bancada-cromado {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--rule);
  background: rgba(238, 241, 247, .025);
}
.bancada-pontos { display: flex; gap: 6px; }
.bancada-pontos i { width: 9px; height: 9px; border-radius: 50%; background: rgba(238, 241, 247, .16); }
.bancada-endereco {
  flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font: 500 11px/1 var(--ff-mono); letter-spacing: .04em; color: var(--paper-faint);
  padding: 7px 12px; border-radius: 999px; background: rgba(7, 8, 13, .5); text-align: center;
}
.bancada-vivo { display: inline-flex; align-items: center; gap: 7px; font: 500 10px/1 var(--ff-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--volt); }
.bancada-vivo i { width: 7px; height: 7px; border-radius: 50%; background: var(--volt); box-shadow: 0 0 0 0 rgba(200, 255, 46, .6); animation: bancada-pulso 2s ease-out infinite; }
@keyframes bancada-pulso { to { box-shadow: 0 0 0 8px rgba(200, 255, 46, 0); } }

.bancada-palco { padding: clamp(18px, 3vw, 32px); min-height: 420px; }
.bancada-palco:focus-visible { outline: 2px solid var(--volt); outline-offset: -4px; }
.bancada-palco.is-entrada > .demo { animation: bancada-entra .45s cubic-bezier(.2, .8, .2, 1) both; }
@keyframes bancada-entra { from { opacity: 0; transform: translateY(10px); } }

/* ---- peças comuns das demos ------------------------------------------- */
.bancada .demo { margin: 0; }
.bancada .demo-help { margin: 0 0 22px; max-width: 62ch; font: 400 14px/1.6 var(--ff-ui); color: var(--paper-dim); }
.bancada .demo-k { font: 500 10px/1 var(--ff-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--paper-faint); }
.bancada .demo-stat, .bancada .demo-muted { font: 500 12px/1.5 var(--ff-mono); color: var(--paper-faint); margin: 0; }
.bancada .demo-stat b { color: var(--paper); font-weight: 500; }
.bancada .demo-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.bancada .btn { min-height: 46px; padding: 12px 22px; justify-content: center; }
.bancada .btn--sm { min-height: 40px; padding: 9px 16px; font-size: 13px; }
.bancada .btn--ghost { color: var(--paper); border-color: var(--rule-strong); background: rgba(238, 241, 247, .03); }
.bancada .btn:disabled { opacity: .4; cursor: not-allowed; transform: none; box-shadow: none; }

.bancada input[type="text"], .bancada textarea {
  width: 100%; box-sizing: border-box;
  font: 400 16px/1.4 var(--ff-ui); /* 16px: o iOS não faz zoom ao focar */
  color: var(--paper);
  padding: 12px 14px;
  border: 1px solid var(--rule-strong); border-radius: 12px;
  background: rgba(7, 8, 13, .55);
  resize: none;
  transition: border-color .2s, box-shadow .2s;
}
.bancada input[type="text"]:focus, .bancada textarea:focus { outline: none; border-color: var(--volt); box-shadow: 0 0 0 3px rgba(200, 255, 46, .16); }

/* ---- Site: telemóvel + editor ----------------------------------------- */
.ds-grid { display: grid; grid-template-columns: minmax(220px, 280px) 1fr; gap: clamp(20px, 3vw, 40px); align-items: start; }
.ds-telefone {
  margin: 0; padding: 10px;
  border-radius: 34px;
  background: #05060A;
  border: 1px solid rgba(238, 241, 247, .14);
  box-shadow: 0 30px 60px rgba(0, 0, 0, .5), inset 0 0 0 2px rgba(255, 255, 255, .03);
}
.ds-ecra {
  --c: var(--volt);
  position: relative;
  display: flex; flex-direction: column; gap: 10px;
  min-height: 430px;
  padding: 0 0 22px;
  border-radius: 26px;
  overflow: hidden;
  background: #F4EFE6;
  color: #1E1B18;
}
.ds-ecra[data-cor="aqua"] { --c: var(--aqua); }
.ds-ecra[data-cor="pulse"] { --c: var(--pulse); }
.ds-barra { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 6px; font: 600 12px/1 var(--ff-display); letter-spacing: .02em; }
.ds-barra i { width: 16px; height: 2px; background: currentColor; box-shadow: 0 -5px 0 currentColor, 0 5px 0 currentColor; }
.ds-foto { margin: 4px 12px 0; border-radius: 16px; aspect-ratio: 200 / 112; overflow: hidden; background: linear-gradient(180deg, #2B2F57 0%, #E98D5B 72%, #F3C38C 100%); }
.ds-foto svg { width: 100%; height: 100%; display: block; }
.ds-foto path, .ds-foto circle { stroke-width: 2; }
.ds-sol { fill: #FFE3A8; stroke: none; }
.ds-serra { stroke: rgba(30, 27, 24, .45); }
.ds-casa { stroke: #FDFAF3; fill: rgba(30, 27, 24, .18); }
.ds-janela { stroke: #FDFAF3; }
.ds-piscina { stroke: var(--c); stroke-width: 3 !important; transition: stroke .3s; }
.ds-selo {
  align-self: flex-start; margin: 4px 18px 0;
  font: 500 10px/1 var(--ff-mono); letter-spacing: .1em; text-transform: uppercase;
  padding: 6px 10px; border-radius: 999px;
  background: #1E1B18; color: #F4EFE6;
  display: inline-flex; align-items: center; gap: 6px;
}
.ds-selo::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #3BD16F; }
.ds-selo.is-rascunho { background: transparent; color: #8A5A1E; box-shadow: inset 0 0 0 1px rgba(138, 90, 30, .5); }
.ds-selo.is-rascunho::before { background: #E0A040; }
.ds-ecra h4 { margin: 2px 18px 0; font: 700 24px/1.08 var(--ff-display); letter-spacing: -.025em; overflow-wrap: anywhere; }
.ds-ecra p { margin: 0 18px; font: 400 13.5px/1.5 var(--ff-ui); color: rgba(30, 27, 24, .72); overflow-wrap: anywhere; }
.ds-cta {
  align-self: flex-start; margin: 8px 18px 0;
  font: 600 13px/1 var(--ff-ui); padding: 12px 18px; border-radius: 999px;
  background: var(--c); color: #07080D;
  transition: background-color .3s;
}
.ds-ecra.is-publicado { animation: ds-publica .7s ease; }
@keyframes ds-publica { 30% { box-shadow: inset 0 0 0 3px var(--c); } }

.ds-editor { display: grid; gap: 16px; }
.ds-editor > label { display: grid; gap: 8px; font: 500 11px/1 var(--ff-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--paper-faint); }
.ds-cores { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.ds-cores legend { padding: 0; margin-bottom: 10px; font: 500 11px/1 var(--ff-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--paper-faint); }
.ds-cor { --c: var(--volt); position: relative; display: inline-flex; align-items: center; gap: 9px; min-height: 44px; padding: 0 16px 0 12px; border-radius: 999px; border: 1px solid var(--rule-strong); cursor: pointer; font: 500 14px/1 var(--ff-ui); color: var(--paper); }
.ds-cor[data-cor="aqua"] { --c: var(--aqua); }
.ds-cor[data-cor="pulse"] { --c: var(--pulse); }
.ds-cor::before { content: ""; width: 16px; height: 16px; border-radius: 50%; background: var(--c); }
.ds-cor input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.ds-cor:has(input:checked) { border-color: var(--c); background: color-mix(in srgb, var(--c) 12%, transparent); }
.ds-cor:has(input:focus-visible) { outline: 2px solid var(--volt); outline-offset: 2px; }

/* ---- Plataforma: painel + site ---------------------------------------- */
.dp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.dp-lado { display: grid; align-content: start; gap: 14px; padding: 18px; border: 1px solid var(--rule); border-radius: 16px; background: rgba(238, 241, 247, .025); }
.dp-cabeca { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; min-height: 32px; }
.dp-interruptor {
  all: unset; box-sizing: border-box; cursor: pointer;
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 36px; padding: 0 12px 0 6px; border-radius: 999px;
  border: 1px solid var(--rule-strong);
  font: 500 12px/1 var(--ff-ui); color: var(--paper);
}
.dp-interruptor::before { content: ""; width: 34px; height: 20px; border-radius: 999px; background: rgba(238, 241, 247, .18); box-shadow: inset 2px 0 0 0 transparent; transition: background-color .25s; }
.dp-interruptor::after { content: ""; position: absolute; }
.dp-interruptor { position: relative; }
.dp-interruptor::after { left: 9px; top: 50%; width: 14px; height: 14px; margin-top: -7px; border-radius: 50%; background: var(--paper); transition: transform .25s; }
.dp-interruptor[aria-checked="true"]::before { background: var(--aqua); }
.dp-interruptor[aria-checked="true"]::after { transform: translateX(14px); background: #07080D; }
.dp-interruptor:focus-visible { outline: 2px solid var(--volt); outline-offset: 2px; }

.dp-pedidos { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.dp-pedidos > li:not(.dp-vazio) { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 10px 10px 14px; border: 1px solid var(--rule); border-radius: 12px; background: rgba(7, 8, 13, .4); animation: bancada-entra .35s ease both; }
.dp-vazio { font: 500 12px/1.5 var(--ff-mono); color: var(--paper-faint); padding: 6px 0; }
.dp-quem { display: grid; gap: 4px; min-width: 0; }
.dp-quem b { font: 600 14px/1.2 var(--ff-ui); }
.dp-quem span { font: 500 11px/1.3 var(--ff-mono); color: var(--paper-faint); }
.dp-acoes { display: flex; align-items: center; gap: 6px; flex: none; }
.dp-recusar { all: unset; box-sizing: border-box; width: 40px; height: 40px; display: grid; place-items: center; border-radius: 10px; cursor: pointer; color: var(--paper-faint); font-size: 12px; }
.dp-recusar:hover { color: var(--paper); background: rgba(238, 241, 247, .06); }
.dp-recusar:focus-visible { outline: 2px solid var(--volt); }
.dp-simular { justify-self: start; }
.dp-conflito { font: 500 10px/1.2 var(--ff-mono); letter-spacing: .08em; text-transform: uppercase; color: #FFB36B; padding: 8px 10px; border-radius: 8px; background: rgba(255, 179, 107, .08); white-space: nowrap; }

.dp-sinc { font: 500 10px/1 var(--ff-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--aqua); display: inline-flex; align-items: center; gap: 6px; }
.dp-sinc::before { content: "●"; font-size: 8px; }
.dp-sinc.is-pulso { animation: dp-sinc .9s ease; }
@keyframes dp-sinc { 0% { color: var(--volt); text-shadow: 0 0 12px rgba(200, 255, 46, .8); } }

.dp-cal { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.dp-cal li { display: grid; place-items: center; gap: 4px; padding: 8px 0; border-radius: 10px; background: rgba(238, 241, 247, .05); transition: background-color .3s, color .3s; }
.dp-cal span { font: 500 9px/1 var(--ff-mono); text-transform: uppercase; color: var(--paper-faint); }
.dp-cal b { font: 600 14px/1 var(--ff-display); }
.dp-cal li.is-ocupada { background: rgba(25, 229, 206, .16); color: var(--aqua); text-decoration: line-through; text-decoration-thickness: 1px; }
.dp-cal li.is-ocupada span { color: inherit; opacity: .7; }
.dp-cal li.is-nova { animation: dp-nova .8s ease; }
@keyframes dp-nova { 0% { background: var(--volt); color: #07080D; transform: scale(1.08); } }
.dp-livres { margin: 0; font: 400 13px/1.45 var(--ff-ui); color: var(--paper-dim); }
.dp-livres b { color: var(--paper); font: 600 18px/1 var(--ff-display); }
.dp-fechado { margin: 0; font: 400 13px/1.45 var(--ff-ui); color: #FFB36B; }
.dp-site.is-fechado .dp-cal { opacity: .35; filter: grayscale(1); }
.dp-rodape { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 16px; flex-wrap: wrap; }

/* ---- Automação: o fluxo da estação, à escala do palco ------------------- */
.bancada .demo-body { display: grid; gap: 18px; }
.bancada .demo-flow { display: flex; align-items: center; gap: 0; flex-wrap: nowrap; }
.bancada .demo-node {
  flex: 1; min-width: 0; text-align: center;
  padding: 18px 8px; border-radius: 14px;
  border: 1px solid var(--rule-strong); background: rgba(238, 241, 247, .03);
  font: 500 12px/1.2 var(--ff-mono); letter-spacing: .02em; color: var(--paper);
  overflow-wrap: anywhere;
}
.bancada .demo-node.is-live { background: rgba(151, 163, 255, .2); border-color: #97A3FF; transform: translateY(-3px); box-shadow: 0 10px 30px rgba(75, 92, 255, .3); }
.bancada .demo-node.is-done { border-color: var(--volt); color: var(--volt); }
.bancada .demo-wire { flex: 0 0 18px; height: 2px; background: var(--rule-strong); }
.bancada .demo-log { list-style: none; margin: 0; padding: 14px 16px; min-height: 64px; border-radius: 12px; background: rgba(7, 8, 13, .55); border: 1px solid var(--rule); display: grid; gap: 4px; font: 500 12px/1.5 var(--ff-mono); color: var(--paper-dim); }
.bancada .demo-log:empty::before { content: "·"; color: var(--paper-faint); }
.bancada .demo-log li:first-child { color: var(--volt); }

/* ---- telemóvel -------------------------------------------------------- */
@media (max-width: 900px) {
  .bancada-cabeca { grid-template-columns: 1fr; }
  .bancada-mesa { grid-template-columns: 1fr; }
  .bancada-abas { position: static; grid-template-columns: repeat(3, 1fr); gap: 6px; }
  .bancada-abas [role="tab"] { grid-template-columns: 1fr; row-gap: 6px; padding: 12px 10px; text-align: left; border-radius: 12px; }
  .bancada-abas [role="tab"][aria-selected="true"]::after { left: 12px; right: 12px; top: auto; bottom: -1px; width: auto; height: 3px; }
  .aba-k { grid-row: auto; padding: 0; }
  .aba-nome { font-size: 16px; }
  .aba-desc { display: none; }
  .ds-grid { grid-template-columns: 1fr; }
  .ds-telefone { max-width: 300px; justify-self: center; width: 100%; }
}
@media (max-width: 640px) {
  /* 2026-10-21: no telemóvel a secção abria com 150px de espaço e somava-os
     aos 80px do fim do Trabalho: um buraco de ~230px antes de "06 · Demo viva" */
  #demo.bancada { padding-top: 56px; padding-bottom: 48px; }
  #trabalho { padding-bottom: 40px; }
  .bancada-ecra { border-radius: 16px; margin-inline: -4px; }
  .bancada-cromado { padding: 10px 12px; gap: 10px; }
  .bancada-pontos { display: none; }
  .bancada-palco { padding: 18px 16px 22px; min-height: 0; }
  .ds-ecra { min-height: 0; }
  .ds-telefone { max-width: 260px; border-radius: 30px; }
  .dp-grid { grid-template-columns: 1fr; }
  .dp-lado { padding: 14px; }
  .dp-cal { gap: 4px; }
  .dp-cal li { padding: 7px 0; border-radius: 8px; }
  .dp-pedidos > li:not(.dp-vazio) { flex-wrap: wrap; }
  .dp-quem { flex: 1 1 140px; }
  .dp-acoes { margin-left: auto; }
  .bancada .demo-flow { flex-direction: column; align-items: stretch; }
  .bancada .demo-wire { flex: 0 0 14px; width: 2px; height: 14px; align-self: center; }
  .bancada .demo-node { padding: 14px 8px; }
  .bancada .demo-actions .btn { flex: 1 1 auto; }
}

@media (prefers-reduced-motion: reduce) {
  .bancada-vivo i, .bancada-palco.is-entrada > .demo, .ds-ecra.is-publicado,
  .dp-cal li.is-nova, .dp-sinc.is-pulso, .dp-pedidos > li { animation: none !important; }
  .bancada-abas [role="tab"], .dp-interruptor::after, .dp-interruptor::before { transition: none; }
}
