:root {
  --fundo: #0f0f0f;
  --painel: #171716;
  --painel-2: #1f1e1c;
  --tinta: #e9e3d6;
  --suave: #9a9386;
  --linha: #34322e;
  --osso: #cfc8ba;
  --ferrugem: #a4492f;
  --ferrugem-2: #c25b3c;
  --gotica: "UnifrakturCook", "Old English Text MT", Georgia, serif;
  --serif: "Cormorant Garamond", Georgia, "Times New Roman", serif;
}
* { box-sizing: border-box; }
body {
  margin: 0;
  padding-inline: 28px;
  padding-block: 20px 32px;
  color: var(--tinta);
  font: 16px/1.45 var(--serif);
  background:
    radial-gradient(1200px 500px at 10% -10%, #26221c 0%, transparent 60%),
    repeating-linear-gradient(90deg, transparent 0 119px, rgba(207,200,186,.025) 119px 120px),
    repeating-linear-gradient(0deg, transparent 0 119px, rgba(207,200,186,.025) 119px 120px),
    var(--fundo);
  min-height: 100vh;
}

/* ------------------------------------------------ cabeçalho */
.topo {
  display: grid; grid-template-columns: auto 1fr auto; gap: 24px; align-items: center;
  padding-bottom: 18px; margin-bottom: 22px; border-bottom: 1px solid var(--linha);
}
.logo { width: 118px; height: auto; display: block; }
.kicker { margin: 0; color: var(--ferrugem-2); letter-spacing: .22em; text-transform: uppercase; font-size: 12px; font-weight: 700; }
.topo h1 { margin: 2px 0 0; font: 700 48px/1 var(--gotica); letter-spacing: .01em; color: var(--osso); }
.sub { margin: 6px 0 0; color: var(--suave); font-style: italic; }
.rosa { width: 76px; height: 76px; color: var(--osso); opacity: .35; }
@media (max-width: 700px) {
  .topo { grid-template-columns: auto 1fr; }
  .rosa { display: none; }
  .logo { width: 80px; }
  .topo h1 { font-size: 36px; }
}

.aviso {
  margin: 0 0 18px; padding: 12px 16px; border-radius: 10px;
  background: rgba(164,73,47,.18); border: 1px solid var(--ferrugem); color: #f3d9cf;
  font-weight: 700;
}

/* ------------------------------------------------ títulos */
h2 {
  display: flex; align-items: center; gap: 10px;
  margin: 0 0 12px; font: 700 13px/1 var(--serif);
  text-transform: uppercase; letter-spacing: .24em; color: var(--osso);
}
h2 span {
  display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding-inline: 4px;
  border: 1px solid var(--ferrugem); color: var(--ferrugem-2); border-radius: 50%;
  font-size: 11px; letter-spacing: 0;
}
h2::after { content: ""; flex: 1; height: 1px; background: linear-gradient(90deg, var(--linha), transparent); }

/* ------------------------------------------------ layout */
main { display: grid; grid-template-columns: 340px 1fr; gap: 24px; align-items: start; }
@media (max-width: 950px) { main { grid-template-columns: 1fr; } }
aside { display: grid; gap: 16px; }
.cartao {
  background: linear-gradient(180deg, var(--painel-2), var(--painel));
  border: 1px solid var(--linha); border-radius: 12px; padding: 16px;
  box-shadow: 0 1px 0 rgba(255,255,255,.03) inset;
}
.dica { color: var(--suave); font-size: 14px; margin: 0 0 12px; }

/* ------------------------------------------------ cores */
.cores { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px 6px; }
.cor {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  background: none; border: 0; padding: 0; cursor: pointer; color: var(--suave);
  font: 12px/1.1 var(--serif); letter-spacing: .02em;
}
.cor i {
  display: block; width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,.18); box-shadow: 0 2px 6px rgba(0,0,0,.5) inset;
  transition: transform .15s;
}
.cor:hover i { transform: scale(1.06); }
.cor.ativa { color: var(--tinta); font-weight: 700; }
.cor.ativa i { outline: 2px solid var(--ferrugem-2); outline-offset: 3px; }

/* ------------------------------------------------ peças */
.peca {
  display: grid; grid-template-columns: 56px 1fr 24px; gap: 10px; align-items: center;
  padding: 9px; border: 1px solid var(--linha); border-radius: 9px; margin-bottom: 8px;
  cursor: pointer; background: rgba(0,0,0,.2);
}
.peca.ativa { border-color: var(--ferrugem); background: rgba(164,73,47,.1); }
.miniatura {
  width: 56px; height: 56px; object-fit: contain; border-radius: 6px;
  background: repeating-conic-gradient(#2a2926 0 25%, #3a3834 0 50%) 0 0 / 12px 12px;
}
.campos { display: grid; gap: 6px; min-width: 0; }
select, input[type=number] {
  font: inherit; font-size: 14px; padding: 4px 6px; color: var(--tinta);
  background: #0c0c0b; border: 1px solid var(--linha); border-radius: 6px;
}
.campos select { width: 100%; }
.linha { display: flex; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--suave); }
.linha input { width: 60px; }
.remover { border: 0; background: none; font-size: 22px; color: var(--suave); cursor: pointer; }
.remover:hover { color: var(--ferrugem-2); }
.artes { display: grid; grid-template-columns: 1fr auto; gap: 6px; margin-block: 10px 8px; }
.artes select { min-width: 0; }

/* ------------------------------------------------ botões */
.botao {
  display: inline-block; font: 700 14px/1 var(--serif); letter-spacing: .08em; text-transform: uppercase;
  padding: 11px 14px; border-radius: 8px; cursor: pointer; text-align: center;
  background: var(--osso); color: #151412; border: 1px solid var(--osso);
}
.botao:hover { filter: brightness(1.06); }
.botao.secundario { background: transparent; color: var(--osso); border-color: var(--linha); }
.botao.secundario:hover { border-color: var(--osso); }
.botao.ia { background: var(--ferrugem); border-color: var(--ferrugem); color: #f6efe3; }
.botao:disabled { opacity: .45; cursor: not-allowed; }
.botao.largo { display: block; }
.acoes { display: grid; gap: 8px; }
.modo { display: grid; gap: 4px; font-size: 13px; color: var(--suave); }
.grelha figure.largo { grid-column: 1 / -1; }

/* ------------------------------------------------ palco */
.palco { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1250px) { .palco { grid-template-columns: 1fr; } }
figure { margin: 0; border: 1px solid var(--linha); border-radius: 12px; overflow: hidden; background: var(--painel); }
canvas { display: block; width: 100%; height: auto; cursor: grab; background: #fff; }
canvas:active { cursor: grabbing; }
figcaption {
  padding: 10px 14px; font: 700 13px/1 var(--serif); letter-spacing: .2em; text-transform: uppercase; color: var(--osso);
}
figcaption small { font-weight: 500; letter-spacing: .02em; text-transform: none; color: var(--suave); margin-left: 6px; font-style: italic; }

/* ------------------------------------------------ resultados */
.resultados { margin-top: 28px; }
.grelha { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.grelha figure img { width: 100%; display: block; background: #fff; }
.grelha figcaption { display: flex; justify-content: space-between; gap: 8px; }
.grelha figcaption a { color: var(--ferrugem-2); letter-spacing: .08em; }
.a-gerar { display: grid; place-items: center; aspect-ratio: 1; color: var(--suave); font-style: italic; background: #121211; }

footer {
  margin-top: 32px; padding-top: 14px; border-top: 1px solid var(--linha);
  color: var(--suave); font: 20px var(--gotica); text-align: center;
}

/* ------------------------------------------------ site sem servidor */
.estatico .so-servidor { display: none !important; }

/* ------------------------------------------------ telemóvel */
canvas { touch-action: none; }
.separadores { display: none; }
@media (max-width: 950px) {
  body { padding-inline: 14px; padding-block: 12px 24px; }
  main { gap: 16px; }
  .palco { order: -1; position: sticky; top: 0; z-index: 5; background: var(--fundo); padding-bottom: 8px; }
  .palco { grid-template-columns: 1fr; gap: 8px; }
  .separadores { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
  .separadores button {
    font: 700 13px/1 var(--serif); letter-spacing: .18em; text-transform: uppercase;
    padding: 10px; border-radius: 8px; border: 1px solid var(--linha);
    background: var(--painel); color: var(--suave);
  }
  .separadores button.ativo { color: var(--tinta); border-color: var(--ferrugem); background: rgba(164,73,47,.15); }
  .palco[data-vista="frente"] figure[data-vista="costas"],
  .palco[data-vista="costas"] figure[data-vista="frente"] { display: none; }
  .palco canvas { max-height: 44vh; width: auto; max-width: 100%; margin-inline: auto; }
  .palco figure { background: #fff; }
  .palco figcaption { display: none; }
  .topo { gap: 12px; padding-bottom: 12px; margin-bottom: 14px; }
  .kicker { font-size: 10px; letter-spacing: .14em; }
  .sub { font-size: 13px; }
  .peca { grid-template-columns: 48px 1fr 32px; }
  .miniatura { width: 48px; height: 48px; }
  select, input[type=number] { font-size: 16px; }
  .remover { font-size: 28px; }
  .botao { padding: 14px; }
}
@media (max-width: 420px) {
  .cores { gap: 10px 2px; }
  .cor i { width: 40px; height: 40px; }
  .linha label { display: flex; align-items: center; gap: 4px; }
}
