:root {
  color-scheme: light;
  --bg: #f3f6fb;
  --card: #ffffff;
  --edge: #dde5f0;
  --ink: #0b1526;
  --soft: #56637a;
  --accent: #0a6cff;
  --accent-hover: #0059d6;
  --accent-ink: #0050c2;
  --accent-soft: #e5efff;
  --field: #eef3fa;
  --ok: #00875a;
  --ok-fill: #00b37e;
  --ok-soft: #dff6ec;
  --warn-bg: #fff4dc;
  --warn-edge: #f3d38f;
  --warn-ink: #7a4a00;
  --warn-fill: #f5a524;
  --danger: #d42a1f;
  --grad: linear-gradient(135deg, #0a6cff 0%, #0a8cff 55%, #00b37e 130%);
  --glow: 0 10px 24px -10px rgba(10, 108, 255, 0.55);
  --radius: 16px;
  --shadow: 0 1px 2px rgba(11, 21, 38, 0.05), 0 12px 32px -16px rgba(11, 21, 38, 0.2);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --bg: #120b2b;
    --card: #1f1449;
    --edge: #352672;
    --ink: #f4f1ff;
    --soft: #a99fd6;
    --accent: #8f6bff;
    --accent-hover: #a587ff;
    --accent-ink: #c4b2ff;
    --accent-soft: #2e1f6b;
    --field: #1a1040;
    --ok: #34d399;
    --ok-fill: #22c38e;
    --ok-soft: #0e2e25;
    --warn-bg: #2d2310;
    --warn-edge: #5a4516;
    --warn-ink: #f5c451;
    --warn-fill: #f5a524;
    --danger: #ff6b61;
    --grad: linear-gradient(135deg, #7c4dff 0%, #b14dff 60%, #ff4d9d 130%);
    --glow: 0 10px 28px -10px rgba(143, 107, 255, 0.6);
    --shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 16px 36px -18px rgba(0, 0, 0, 0.75);
  }
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #120b2b;
  --card: #1f1449;
  --edge: #352672;
  --ink: #f4f1ff;
  --soft: #a99fd6;
  --accent: #8f6bff;
  --accent-hover: #a587ff;
  --accent-ink: #c4b2ff;
  --accent-soft: #2e1f6b;
  --field: #1a1040;
  --ok: #34d399;
  --ok-fill: #22c38e;
  --ok-soft: #0e2e25;
  --warn-bg: #2d2310;
  --warn-edge: #5a4516;
  --warn-ink: #f5c451;
  --warn-fill: #f5a524;
  --danger: #ff6b61;
  --grad: linear-gradient(135deg, #7c4dff 0%, #b14dff 60%, #ff4d9d 130%);
  --glow: 0 10px 28px -10px rgba(143, 107, 255, 0.6);
  --shadow: 0 1px 2px rgba(0, 0, 0, 0.35), 0 16px 36px -18px rgba(0, 0, 0, 0.75);
}

* { box-sizing: border-box; }

[hidden] { display: none !important; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 15.5px;
  line-height: 1.6;
  padding-inline: 20px;
  padding-block: 28px 48px;
}

.wrap {
  max-width: 660px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: "Sora", sans-serif;
  font-weight: 600;
  font-size: 15px;
  color: var(--ink);
}

.mark {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  background: var(--grad);
  color: #fff;
  font-size: 14px;
  box-shadow: var(--glow);
}

.lang { display: flex; gap: 4px; }

.lang-btn {
  font-family: "IBM Plex Mono", monospace;
  font-size: 11.5px;
  font-weight: 500;
  padding: 5px 9px;
  border-radius: 7px;
  border: 1px solid var(--edge);
  background: transparent;
  color: var(--soft);
  cursor: pointer;
}

.lang-btn.on { background: var(--accent); color: #fff; border-color: transparent; }

.card {
  background: var(--card);
  border: 1px solid var(--edge);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 26px;
}

.center { text-align: center; }

#viewDelivered { display: flex; flex-direction: column; gap: 18px; }

h1 {
  font-family: "Sora", sans-serif;
  font-size: clamp(21px, 4vw, 27px);
  letter-spacing: -0.015em;
  margin: 0 0 10px;
  text-wrap: balance;
}

h2 {
  font-family: "Sora", sans-serif;
  font-size: 19px;
  margin: 0 0 8px;
}

p { margin: 0 0 12px; }
p:last-child { margin-bottom: 0; }

.muted { color: var(--soft); }
.small { font-size: 13px; }
.mono { font-family: "IBM Plex Mono", monospace; }

.eyebrow {
  display: inline-block;
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--accent-ink);
  background: var(--accent-soft);
  padding: 4px 10px;
  border-radius: 999px;
  margin-bottom: 12px;
}

/* — Resumen y progreso del pedido — */

.order {
  background: var(--card);
  border: 1px solid var(--edge);
  border-radius: var(--radius);
  padding: 18px 22px 20px;
}

.order-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 18px;
}
.order-label {
  display: block;
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--soft);
}
.order-product { font-family: "Sora", sans-serif; font-size: 17px; }
.order-code {
  font-size: 12.5px;
  color: var(--soft);
  background: var(--field);
  border-radius: 8px;
  padding: 5px 9px;
  letter-spacing: 0.04em;
}

/* Cada paso es un punto sobre una línea: hecho (verde), actual (acento), pendiente. */
.progress {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-auto-columns: 1fr;
  grid-auto-flow: column;
}
.progress li {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  text-align: center;
  font-size: 12.5px;
  color: var(--soft);
}
.progress li + li::before {
  content: "";
  position: absolute;
  top: 13px;
  right: 50%;
  width: 100%;
  height: 2px;
  background: var(--edge);
  z-index: 0;
}
.progress li.is-done + li::before { background: var(--ok-fill); }
.progress .dot {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--card);
  border: 2px solid var(--edge);
  font: 600 12px/1 "IBM Plex Mono", monospace;
}
.progress li.is-done { color: var(--ink); }
.progress li.is-done .dot { background: var(--ok-fill); border-color: var(--ok-fill); color: #fff; }
.progress li.is-current { color: var(--ink); font-weight: 700; }
.progress li.is-current .dot { background: var(--accent); border-color: var(--accent); color: #fff; box-shadow: 0 0 0 5px var(--accent-soft); animation: pulso 2.2s ease-in-out infinite; }
@keyframes pulso { 50% { box-shadow: 0 0 0 9px var(--accent-soft); } }
.progress li.is-current .label { color: var(--accent-ink); }
.progress .label { max-width: 11ch; line-height: 1.3; }

/* — Aviso de privacidad: presente pero discreto — */

.private {
  display: flex;
  gap: 10px;
  align-items: center;
  background: var(--warn-bg);
  border: 1px solid var(--warn-edge);
  border-radius: 12px;
  padding: 10px 14px;
  color: var(--warn-ink);
}
.private-icon { font-size: 16px; line-height: 1; flex: none; }
.private p { margin: 0; font-size: 13.5px; line-height: 1.5; }
.private strong { font-weight: 700; }

/* — Sin stock: caja que se rellena, con ondas y destellos — */

.restock { padding-block: 34px 28px; }

.restock-art {
  position: relative;
  width: 150px;
  height: 150px;
  margin: 0 auto 18px;
  display: grid;
  place-items: center;
}
.ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 2px solid var(--accent);
  opacity: 0;
  animation: ondas 3s ease-out infinite;
}
.ring.r2 { animation-delay: 1s; }
.ring.r3 { animation-delay: 2s; }
@keyframes ondas {
  0% { transform: scale(0.45); opacity: 0.55; }
  100% { transform: scale(1); opacity: 0; }
}

.box {
  position: relative;
  width: 62px;
  height: 56px;
  animation: flota 2.4s ease-in-out infinite;
}
.box-body {
  position: absolute;
  inset: 14px 0 0;
  border-radius: 6px 6px 10px 10px;
  background: linear-gradient(180deg, var(--accent), var(--accent-ink));
}
.box-lid {
  position: absolute;
  left: -5px;
  right: -5px;
  top: 4px;
  height: 14px;
  border-radius: 5px;
  background: var(--accent);
  filter: brightness(1.15);
  transform-origin: 10% 100%;
  animation: tapa 2.4s ease-in-out infinite;
  z-index: 1;
}
@keyframes flota { 0%, 100% { transform: translateY(2px); } 50% { transform: translateY(-5px); } }
@keyframes tapa { 0%, 60%, 100% { transform: rotate(0); } 75% { transform: rotate(-16deg); } }

.spark {
  position: absolute;
  color: var(--accent);
  font-size: 14px;
  opacity: 0;
  animation: destello 2.4s ease-in-out infinite;
}
.spark.s1 { top: 26px; left: 38px; }
.spark.s2 { top: 16px; right: 40px; animation-delay: 0.8s; font-size: 11px; }
.spark.s3 { top: 46px; right: 26px; animation-delay: 1.6s; font-size: 9px; }
@keyframes destello {
  0%, 100% { opacity: 0; transform: translateY(6px) scale(0.6); }
  50% { opacity: 1; transform: translateY(-4px) scale(1); }
}

.restock-body { max-width: 46ch; margin-inline: auto; }

.restock-bar {
  position: relative;
  height: 6px;
  max-width: 280px;
  margin: 18px auto 20px;
  border-radius: 999px;
  background: var(--field);
  overflow: hidden;
}
.restock-bar span {
  position: absolute;
  inset: 0 auto 0 0;
  width: 40%;
  border-radius: inherit;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
  animation: barrido 1.8s ease-in-out infinite;
}
@keyframes barrido { from { transform: translateX(-100%); } to { transform: translateX(250%); } }

.save-order {
  max-width: 480px;
  margin: 0 auto 22px;
  padding: 16px;
  text-align: left;
  background: var(--accent-soft);
  border-radius: 14px;
}
.save-order strong { display: block; font-family: "Sora", sans-serif; font-size: 15px; margin-bottom: 4px; }
.save-order p { margin: 0 0 12px; }
.save-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: stretch; }
.save-row code {
  flex: 1 1 220px;
  min-width: 0;
  align-self: center;
  font-size: 12.5px;
  word-break: break-all;
  padding: 10px 12px;
  border-radius: 10px;
  background: var(--card);
  border: 1px solid var(--edge);
}
.save-row button { flex: 0 0 auto; }
@media (max-width: 480px) { .save-row button { flex: 1 1 100%; } }

.restock-facts {
  list-style: none;
  padding: 0;
  margin: 0 auto 16px;
  display: inline-flex;
  flex-direction: column;
  gap: 6px;
  text-align: left;
  font-size: 14px;
  color: var(--soft);
}
.restock-facts li { position: relative; padding-left: 24px; }
.restock-facts li::before { content: "✓"; position: absolute; left: 0; color: var(--ok); font-weight: 700; }

.restock-live {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  color: var(--soft);
  background: var(--field);
  padding: 6px 12px;
  border-radius: 999px;
}
.restock-live .live-dot { animation: latido 1.6s ease-in-out infinite; }
@keyframes latido { 50% { opacity: 0.3; } }

@media (max-width: 480px) {
  .order { padding: 16px; }
  .progress .label { font-size: 11.5px; }
}

/* — Garantías — */

.trust {
  list-style: none;
  padding: 0;
  margin: 14px 0 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.trust li {
  position: relative;
  padding-left: 24px;
  font-size: 14px;
  color: var(--soft);
}

.trust li::before {
  content: "✓";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--ok);
  font-weight: 700;
}

.verified {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: var(--ok-soft);
  color: var(--ok);
  border: 1px solid color-mix(in srgb, var(--ok-fill) 40%, transparent);
  font-size: 13px;
  font-weight: 700;
  padding: 5px 11px;
  border-radius: 999px;
  margin: 0 0 14px;
}

/* — Aviso de un solo uso — */

.warn {
  background: var(--warn-bg);
  border: 1px solid var(--warn-edge);
  border-radius: 11px;
  padding: 14px 16px;
  margin: 16px 0 20px;
}

.warn strong {
  display: block;
  font-family: "Sora", sans-serif;
  font-size: 13.5px;
  color: var(--warn-ink);
  margin-bottom: 5px;
}

.warn p { font-size: 14px; color: var(--warn-ink); margin: 0; }

/* — El enlace — */

.linkbox {
  display: flex;
  align-items: stretch;
  gap: 8px;
  background: var(--field);
  border: 1px solid var(--edge);
  border-radius: 11px;
  padding: 10px;
  margin: 4px 0 8px;
  flex-wrap: wrap;
}

.linkbox code {
  flex: 1 1 240px;
  min-width: 0;
  font-family: "IBM Plex Mono", monospace;
  font-size: 12.5px;
  line-height: 1.5;
  word-break: break-all;
  align-self: center;
}

.cta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  background: var(--grad);
  color: #fff;
  text-decoration: none;
  font-weight: 700;
  font-size: 16.5px;
  padding: 16px;
  border-radius: 13px;
  margin: 16px 0 4px;
  box-shadow: var(--glow);
  transition: transform 0.12s ease, filter 0.15s ease;
}
.cta::after { content: "↗"; font-size: 18px; line-height: 1; }
.cta:hover { filter: brightness(1.07); transform: translateY(-1px); }

.expires { margin: 0 0 4px; }

/* — Pasos — */

.steps {
  margin-top: 20px;
  border-top: 1px solid var(--edge);
  padding-top: 16px;
}

.steps summary {
  cursor: pointer;
  font-family: "Sora", sans-serif;
  font-size: 14.5px;
  font-weight: 600;
  color: var(--accent-ink);
}

.steps ol { padding-left: 20px; margin: 14px 0 0; }
.steps li { margin-bottom: 10px; }

.tip {
  background: var(--accent-soft);
  border-radius: 9px;
  padding: 11px 13px;
  font-size: 13.5px;
  margin-top: 12px;
}

/* — Formulario Canva — */

.emailrow {
  display: flex;
  gap: 8px;
  margin: 14px 0 8px;
  flex-wrap: wrap;
}

.emailrow input {
  flex: 1 1 200px;
  min-width: 0;
  font-family: "Manrope", sans-serif;
  font-size: 15px;
  padding: 12px 13px;
  border-radius: 10px;
  border: 1px solid var(--edge);
  background: var(--field);
  color: var(--ink);
}

.done {
  background: var(--ok-soft);
  color: var(--ok);
  border-radius: 10px;
  padding: 12px 14px;
  font-weight: 600;
  font-size: 14px;
}

/* — Estado de Canva — */

.canva-state {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: var(--field);
  border-radius: 11px;
  padding: 14px 16px;
  margin-top: 6px;
}
.canva-state strong { font-family: "Sora", sans-serif; font-size: 14.5px; }
.canva-state p { margin: 2px 0 0; }

.state-dot {
  flex: none;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin-top: 6px;
}
.state-dot.pending { background: var(--warn-ink); box-shadow: 0 0 0 4px var(--warn-bg); }
.state-dot.ok { background: var(--ok); box-shadow: 0 0 0 4px var(--ok-soft); }

.linkish {
  background: none;
  border: none;
  padding: 0;
  margin-top: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--accent-ink);
  cursor: pointer;
}

/* — Soporte — */

.support-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.support h2 { margin-bottom: 4px; }

.live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: var(--ok);
  background: var(--ok-soft);
  padding: 4px 10px;
  border-radius: 999px;
}
.live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); }

.thread {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 380px;
  min-height: 90px;
  overflow-y: auto;
  background: var(--field);
  border: 1px solid var(--edge);
  border-radius: 12px;
  padding: 14px;
  margin: 12px 0 10px;
  overscroll-behavior: contain;
}

.thread-empty { margin: auto; text-align: center; }

.msg {
  max-width: 82%;
  padding: 9px 12px;
  border-radius: 14px;
  font-size: 14.5px;
  line-height: 1.5;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}
.msg time {
  display: block;
  margin-top: 3px;
  font-size: 11px;
  opacity: 0.65;
  font-variant-numeric: tabular-nums;
}
.msg.cliente {
  align-self: flex-end;
  background: var(--accent);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.msg.admin {
  align-self: flex-start;
  background: var(--card);
  border: 1px solid var(--edge);
  border-bottom-left-radius: 4px;
}
.msg.admin .who {
  display: block;
  font-size: 11.5px;
  font-weight: 700;
  color: var(--accent-ink);
  margin-bottom: 2px;
}
.msg.sistema {
  align-self: center;
  max-width: 94%;
  background: transparent;
  color: var(--soft);
  font-size: 13px;
  text-align: center;
  padding: 4px 8px;
}
.msg.sistema.ok { color: var(--ok); font-weight: 600; }

.msg-card {
  align-self: stretch;
  background: var(--ok-soft);
  border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
  border-radius: 12px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.msg-card-eyebrow {
  font-family: "IBM Plex Mono", monospace;
  font-size: 10.5px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ok);
}
.msg-card-title { font-family: "Sora", sans-serif; font-size: 15px; color: var(--ok); }
.msg-card p { margin: 0; font-size: 14px; color: var(--ink); overflow-wrap: anywhere; }
.msg-card time { font-size: 11px; color: var(--soft); font-variant-numeric: tabular-nums; }

.composer {
  display: flex;
  gap: 8px;
  align-items: flex-end;
}
.composer textarea {
  flex: 1;
  min-width: 0;
  resize: none;
  font-family: "Manrope", sans-serif;
  font-size: 15px;
  line-height: 1.45;
  padding: 11px 13px;
  border-radius: 10px;
  border: 1px solid var(--edge);
  background: var(--field);
  color: var(--ink);
  max-height: 140px;
}
.chat-error { color: var(--danger); margin: 8px 0 0; }
.chat-closed {
  margin: 10px 0 0;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--soft);
  background: var(--field);
  border-radius: 10px;
  padding: 10px 12px;
  text-align: center;
}
.composer.closed { opacity: 0.5; pointer-events: none; }

/* — Botones — */

button {
  font-family: "Manrope", sans-serif;
  font-weight: 600;
  font-size: 14.5px;
  padding: 11px 18px;
  border-radius: 10px;
  border: 1px solid transparent;
  cursor: pointer;
  transition: opacity 0.15s ease, transform 0.08s ease;
}

button:active { transform: scale(0.99); }
button:disabled { opacity: 0.5; cursor: not-allowed; }

.primary { background: var(--accent); color: #fff; }
.primary:hover:not(:disabled) { background: var(--accent-hover); }
.primary.big {
  width: 100%;
  padding: 17px;
  font-size: 17px;
  font-weight: 700;
  border-radius: 13px;
  background: var(--grad);
  box-shadow: var(--glow);
}
.primary.big:hover:not(:disabled) { background: var(--grad); filter: brightness(1.07); }

.ghost {
  background: transparent;
  border-color: var(--edge);
  color: var(--soft);
}
.ghost:hover:not(:disabled) { color: var(--ink); }
.ghost.small { font-size: 13px; padding: 8px 13px; margin-top: 14px; }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* — Cargando — */

.spin {
  display: inline-block;
  width: 13px;
  height: 13px;
  border: 2px solid var(--edge);
  border-top-color: var(--accent);
  border-radius: 50%;
  animation: spin 0.7s linear infinite;
}

.spin.big { width: 26px; height: 26px; border-width: 3px; margin-bottom: 12px; }

@keyframes spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .spin, .ring, .box, .box-lid, .spark, .restock-bar span, .restock-live .live-dot, .progress li.is-current .dot { animation: none; }
  .ring.r1 { opacity: 0.25; transform: scale(0.8); }
  .spark { opacity: 0.6; }
  * { transition: none !important; }
}

.foot { text-align: center; color: var(--soft); }

/* — Garantía: aviso llamativo para canjear enseguida — */

.urgent {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 12px;
  align-items: flex-start;
  margin: 0 0 16px;
  padding: 14px 16px 16px;
  border-radius: 14px;
  background: var(--warn-bg);
  border: 1px solid var(--warn-edge);
  border-left: 4px solid var(--warn-fill);
  color: var(--warn-ink);
}
.urgent > div { flex: 1 1 220px; min-width: 0; }
.urgent-clock {
  font: 700 26px/1 "IBM Plex Mono", ui-monospace, monospace;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  color: var(--warn-ink);
  background: var(--card);
  border: 1px solid var(--warn-edge);
  border-radius: 10px;
  padding: 8px 12px;
}
.urgent-bar {
  flex: 1 1 100%;
  height: 6px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--warn-fill) 22%, transparent);
  overflow: hidden;
}
.urgent-bar span { display: block; height: 100%; border-radius: inherit; background: var(--warn-fill); transition: width 1s linear; }
.urgent.over .urgent-clock, .urgent.over .urgent-bar { display: none; }
.urgent-icon { font-size: 20px; line-height: 1.2; }
.urgent strong { display: block; font-family: "Sora", sans-serif; font-size: 15px; }
.urgent p { margin: 2px 0 0; font-size: 14px; }
.urgent.over { background: var(--field); border-color: var(--edge); border-left-color: var(--edge); color: var(--soft); }

/* — Avisos por correo — */

.notify {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid var(--edge);
}
.notify strong { font-family: "Sora", sans-serif; font-size: 14.5px; }
.notify p { margin: 2px 0 10px; }
.notify-saved { display: flex; gap: 10px; align-items: center; }
.notify-saved p { margin: 0; }

/* — Guía visual — */
.steps li span { display: block; }
.guide-img {
  display: block;
  width: 100%;
  max-width: 420px;
  height: auto;
  margin: 10px 0 4px;
  border: 1px solid var(--edge);
  border-radius: 10px;
}

/* Confirmación de lectura en los mensajes propios: ✓ enviado, ✓✓ leído (con color, como WhatsApp). */
:root { --tick-leido: #9ff5d6; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --tick-leido: #9ff5d6; } }
:root[data-theme="dark"] { --tick-leido: #9ff5d6; }
.ticks {
  display: inline-block;
  margin-left: 5px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: -0.28em;
  padding-right: 0.28em;
  opacity: 0.85;
}
.ticks.leido { color: var(--tick-leido); opacity: 1; }
.msg.cliente time { display: flex; align-items: center; justify-content: flex-end; opacity: 1; color: rgba(255, 255, 255, 0.72); }

/* — Aviso de reposición y entrega de códigos — */
.restock-notify {
  max-width: 480px;
  margin: 0 auto 22px;
  padding: 16px;
  text-align: left;
  border: 1px solid var(--edge);
  border-radius: 14px;
  background: var(--card);
}
.restock-notify strong { display: block; font-family: "Sora", sans-serif; font-size: 15px; margin-bottom: 4px; }
.restock-notify p { margin: 0; }
.restock-notify .emailrow { margin: 12px 0 0; }
.restock-notify .notify-saved p { font-weight: 600; }

#theLink.is-code {
  font-size: clamp(17px, 4.6vw, 22px);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ink);
}
.code-help {
  margin: 4px 0 8px;
  padding: 10px 12px;
  border-radius: 10px;
  background: var(--accent-soft);
  color: var(--accent-ink);
  font-size: 14px;
}

/* A supplier's link: what to try when it doesn't load. */
.supplier-help { margin-top: 10px; color: var(--ink); font-size: 13.5px; }

/* — ¿Funcionó? 👍 / 👎 — */
.feedback {
  margin-top: 18px;
  padding: 16px;
  border: 1px solid var(--edge);
  border-radius: 14px;
  background: var(--field);
}
.feedback strong { display: block; font-family: "Sora", sans-serif; font-size: 16px; margin-bottom: 2px; }
.feedback p { margin: 0 0 12px; }
.feedback-row { display: flex; gap: 8px; flex-wrap: wrap; }
.fb-btn {
  flex: 1 1 180px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid var(--edge);
  background: var(--card);
  color: var(--ink);
  font-weight: 700;
}
.fb-btn.up:hover:not(:disabled) { border-color: var(--ok-fill); background: var(--ok-soft); }
.fb-btn.down:hover:not(:disabled) { border-color: var(--danger); }
.fb-done.ok strong { color: var(--ok); }
.fb-done.bad strong { color: var(--danger); }
.fb-done p { margin: 2px 0 10px; }
.fb-done.ok p { margin-bottom: 0; }
.small-fb { flex: none; padding: 9px 13px; font-size: 14px; }

/* Replacement requests: reviewed by hand */
.replace {
  margin-top: 18px;
  padding: 14px 16px;
  border: 1px solid var(--edge);
  border-radius: 14px;
  background: var(--field);
  display: grid;
  gap: 10px;
  justify-items: start;
}
.replace p { margin: 0; }
.replace-trust { font-size: 13.5px; line-height: 1.5; color: var(--soft); }
.replace #reportBtn:disabled { opacity: 0.7; cursor: not-allowed; font-variant-numeric: tabular-nums; }
.replace-form { display: grid; gap: 8px; width: 100%; }
.replace-form label { font-weight: 600; font-size: 14px; }
.replace-form textarea {
  width: 100%;
  box-sizing: border-box;
  resize: vertical;
  font: inherit;
  font-size: 15px;
  line-height: 1.45;
  padding: 10px 12px;
  border-radius: 10px;
  border: 1px solid var(--edge);
  background: var(--card);
  color: var(--ink);
}
.replace-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* — Chat images — */
.attach {
  flex: none;
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 10px;
  border: 1px solid var(--edge);
  background: var(--field);
  color: var(--soft);
  cursor: pointer;
}
.attach:hover { color: var(--accent-ink); border-color: var(--accent); }
.attach:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.attach:disabled { opacity: 0.5; cursor: not-allowed; }
.attach.is-busy svg { animation: pulso-img 1s ease-in-out infinite; }
@keyframes pulso-img { 50% { opacity: 0.35; } }
.msg.has-image { padding: 5px; }
.msg.has-image .who { padding: 2px 6px 4px; }
.msg.has-image time { padding: 0 6px 2px; }
.msg-image {
  display: block;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
  border-radius: 10px;
  overflow: hidden;
  max-width: 100%;
}
.msg-image img { display: block; width: 240px; max-width: 100%; height: auto; min-height: 60px; object-fit: cover; background: var(--field); }
.msg-image:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.lightbox {
  padding: 0;
  border: 0;
  background: transparent;
  max-width: min(96vw, 1200px);
  max-height: 94vh;
  overflow: visible;
}
.lightbox::backdrop { background: rgba(5, 10, 20, 0.85); }
.lightbox img { display: block; max-width: min(96vw, 1200px); max-height: 90vh; width: auto; height: auto; border-radius: 12px; background: #0b1526; }
.lightbox-close {
  position: fixed;
  top: 14px;
  right: 14px;
  width: 44px;
  height: 44px;
  border-radius: 999px;
  border: 0;
  background: rgba(255, 255, 255, 0.92);
  color: #0b1526;
  font-size: 18px;
  cursor: pointer;
}
.lightbox-close:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .attach.is-busy svg { animation: none; } }

/* Email request card in the chat */
.email-card p { margin: 0; }
.email-card .emailrow { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.email-card .emailrow input { flex: 1 1 200px; min-width: 0; }
.email-card-saved { margin-top: 8px !important; font-weight: 600; overflow-wrap: anywhere; }
.email-card-note { color: var(--danger); margin-top: 6px !important; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* Out of stock: the email notice is the main action */
.restock-notify.is-primary {
  border: 2px solid var(--accent);
  background: var(--accent-soft);
  padding: 18px;
  box-shadow: var(--glow);
}
.restock-notify.is-primary strong { font-size: 17px; margin-bottom: 6px; }
.restock-notify.is-primary p { color: var(--ink); line-height: 1.5; }
.restock-notify.is-primary .emailrow input { background: var(--card); font-size: 16px; }
.restock-notify.is-primary .emailrow button { font-size: 15px; padding-left: 18px; padding-right: 18px; }
.restock-notify.is-primary .restock-privacy { margin-top: 8px; color: var(--soft); }
.restock-notify.is-primary .notify-saved { align-items: flex-start; }
.restock-notify.is-primary .notify-saved p { font-size: 15px; line-height: 1.5; color: var(--ok); }

/* While the reported link is being checked on Google */
#replaceStatus.is-checking { color: var(--accent-ink); font-weight: 600; }
#replaceStatus.is-checking::after {
  content: "";
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-left: 8px;
  vertical-align: -1px;
  border: 2px solid var(--accent);
  border-top-color: transparent;
  border-radius: 50%;
  animation: giro-check 0.8s linear infinite;
}
@keyframes giro-check { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { #replaceStatus.is-checking::after { animation: none; } }

/* Approved replacement: waiting for the customer to reveal the new link */
.approved-banner {
  margin: 0 auto 18px;
  max-width: 480px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--ok);
  background: var(--ok-soft);
  text-align: left;
}
.approved-banner strong { display: block; font-family: "Sora", sans-serif; font-size: 16px; color: var(--ok); margin-bottom: 4px; }
.approved-banner p { margin: 0; font-size: 14px; line-height: 1.5; color: var(--ink); }

.site-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; margin-top: 10px; }
.site-links a { color: inherit; }

/* — Móvil: el chat de soporte necesita ancho y dedos, no ratón — */

@media (max-width: 560px) {
  /* El hilo se lleva la pantalla que sobra en vez de quedarse en una cajita. */
  .thread { max-height: min(58vh, 460px); padding: 12px; }
  .msg { max-width: 88%; }

  /* La caja de texto en su propia línea: entre los dos botones no le quedaban ni tres palabras. */
  .composer { flex-wrap: wrap; row-gap: 8px; }
  .composer textarea { flex: 1 1 100%; order: -1; font-size: 16px; }
  .composer .attach { flex: none; }
  .composer > button[type="submit"], .composer .primary { margin-left: auto; }

  input, select, textarea { font-size: 16px; }
}

/* — Lo que el pedido todavía necesita del cliente —
   El enlace llega solo; el puesto de Canva no, porque hace falta su correo. Mientras no lo
   deje, esto es lo único pendiente de su pedido y se nota: un aviso arriba, el paso del
   recorrido convertido en botón y la tarjeta marcada. Cuando ya lo dejó, todo vuelve a su
   sitio y la tarjeta es una más. */

.todo {
  display: flex;
  align-items: center;
  gap: 12px 14px;
  flex-wrap: wrap;
  padding: 14px 16px;
  border-radius: var(--radius);
  background: var(--accent-soft);
  border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
  border-left: 4px solid var(--accent);
}
.todo-icon { font-size: 22px; line-height: 1; }
.todo-text { flex: 1 1 200px; display: flex; flex-direction: column; gap: 2px; font-size: 14px; color: var(--ink); }
.todo-text strong { font-family: "Sora", sans-serif; font-size: 15.5px; color: var(--accent-ink); }
.todo .primary { flex: none; }

/* La tarjeta del paso pendiente: mismo lenguaje que el resto, con el borde de acento. */
.card.is-todo {
  border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent), var(--shadow);
}
.card.is-todo .eyebrow { background: var(--accent); color: #fff; }
.card.flash { animation: destacar 1.2s ease; }
@keyframes destacar {
  0%, 100% { box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 12%, transparent), var(--shadow); }
  35% { box-shadow: 0 0 0 7px color-mix(in srgb, var(--accent) 26%, transparent), var(--shadow); }
}

/* Los tres pasos de Canva: qué pasa después de escribir el correo. */
.how {
  list-style: none;
  margin: 16px 0 4px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.how li { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; color: var(--soft); }
.how-n {
  flex: none;
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--accent-soft);
  color: var(--accent-ink);
  font: 700 12.5px/1 "IBM Plex Mono", ui-monospace, monospace;
}

/* El correo, en su propia línea: al lado del botón no cabe una dirección entera. */
.emailrow.stacked { flex-direction: column; align-items: stretch; gap: 8px; }
.emailrow.stacked input { flex: none; width: 100%; font-size: 16px; }
.emailrow.stacked .primary { width: 100%; }
.field-label {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--soft);
}
.canva-error { margin: 0 0 8px; font-size: 13.5px; font-weight: 600; color: var(--danger); }

/* El paso pendiente del recorrido lleva a la tarjeta que lo pide. */
.progress li.is-todo { cursor: pointer; }
/* Paso actual y paso pendiente no compiten: el actual va relleno, este va perfilado. */
.progress li.is-todo .dot { background: var(--card); color: var(--accent-ink); border-color: var(--accent); border-width: 2px; }
.progress li.is-todo .label { color: var(--accent-ink); font-weight: 700; }
.progress li.is-todo:hover .label { text-decoration: underline; }
.progress li.is-todo:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 8px; }

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

@media (max-width: 560px) {
  .todo { padding: 12px 14px; }
  .todo .primary { width: 100%; }
}

/* — El botón que hay que pulsar —
   Es la única acción de la página y aun así se perdía entre el texto: mismo tamaño, mismo
   peso visual que todo lo demás. Ahora respira: un halo que late despacio lo señala sin
   saltar ni molestar, y una flecha encima dice dónde mirar. Se para al pasar el ratón (ya lo
   encontró) y no existe para quien pide menos animación. */

/* Letra pequeña bajo el botón: la garantía de un mes que se acepta al reclamar. */
.fine-print {
  margin: 12px auto 0;
  max-width: 52ch;
  text-align: center;
  font-size: 12px;
  line-height: 1.5;
  color: var(--soft);
  text-wrap: pretty;
}
.fine-print a { color: inherit; text-decoration: underline; }

.reveal-hint {
  display: block;
  margin: 0 0 8px;
  text-align: center;
  font-size: 13.5px;
  font-weight: 700;
  color: var(--accent-ink);
}
.reveal-hint::after {
  content: " ↓";
  display: inline-block;
  animation: senalar 1.8s ease-in-out infinite;
}

.primary.big.is-call { animation: latido-boton 2.4s ease-in-out infinite; }
.primary.big.is-call:hover { animation: none; }

@keyframes latido-boton {
  0%, 100% { box-shadow: var(--glow); }
  50% { box-shadow: var(--glow), 0 0 0 10px color-mix(in srgb, var(--accent) 14%, transparent); }
}
@keyframes senalar {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(3px); }
}

@media (prefers-reduced-motion: reduce) {
  .primary.big.is-call, .reveal-hint::after { animation: none; }
}

/* Qué hacer después de decir que no funciona: el camino a la solución, en el mismo sitio. */
.fb-next { margin: 10px 0 0; font-size: 14px; line-height: 1.5; color: var(--ink); }
.fb-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.fb-actions .primary.small-fb { font-size: 14.5px; padding: 11px 18px; }

/* "Escríbenos antes de nada": aparece donde el cliente se frustra (sin stock, algo falló). */
.help-first {
  margin: 14px 0 0;
  padding: 11px 14px;
  border-radius: 12px;
  background: var(--accent-soft);
  color: var(--accent-ink);
  font-size: 13.5px;
  line-height: 1.5;
  text-align: left;
}

/* — Our shop, below the order: noticeable, but never above the main action — */
.shop-promo {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius);
  padding: 24px;
  color: #fff;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(255, 255, 255, 0.2), transparent 55%),
    radial-gradient(80% 70% at 0% 100%, rgba(0, 0, 0, 0.18), transparent 60%),
    var(--grad);
  box-shadow: var(--glow), var(--shadow);
  display: grid;
  gap: 16px;
}
.promo-head h2 {
  margin: 4px 0 6px;
  font-family: "Sora", sans-serif;
  font-size: clamp(20px, 3.2vw, 24px);
  line-height: 1.2;
  letter-spacing: -0.015em;
  text-wrap: balance;
}
.promo-head p { margin: 0; font-size: 14.5px; line-height: 1.5; opacity: 0.92; max-width: 52ch; }
.promo-eyebrow {
  display: inline-block;
  font: 600 11px/1.4 "IBM Plex Mono", ui-monospace, monospace;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.3);
}
.promo-products { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 12px; }
.promo-item {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 10px;
  border-radius: 14px;
  background: var(--card);
  color: var(--ink);
  text-decoration: none;
  box-shadow: 0 6px 18px -10px rgba(0, 0, 0, 0.45);
  transition: transform 0.15s ease;
}
.promo-item:hover { transform: translateY(-2px); }
.promo-thumb {
  width: 76px;
  aspect-ratio: 4 / 3;
  border-radius: 10px;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: var(--grad);
  color: #fff;
  font-size: 22px;
}
.promo-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.promo-info { display: grid; gap: 2px; min-width: 0; }
.promo-name { font-weight: 700; font-size: 14px; line-height: 1.3; overflow-wrap: anywhere; }
.promo-price { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.promo-price strong { font-family: "Sora", sans-serif; font-size: 18px; font-variant-numeric: tabular-nums; }
.promo-buy { font-size: 12.5px; font-weight: 700; color: var(--accent-ink); }
.promo-cta {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 11px 18px;
  border-radius: 999px;
  background: #fff;
  color: #0b1526;
  font-weight: 700;
  font-size: 14.5px;
  text-decoration: none;
}
.promo-cta:hover { filter: brightness(0.96); }
.promo-cta:focus-visible, .promo-item:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .promo-item { transition: none; } }

/* Stars for the shop's reviews */
.review-box { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--edge); }
#reviewAsk { display: grid; gap: 10px; }
#reviewAsk > strong { font-family: "Sora", sans-serif; font-size: 16px; }
#reviewAsk > p { margin: -6px 0 0; }
.rv-stars { display: flex; gap: 4px; }
.rv-star {
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 10px;
  background: none;
  color: var(--edge);
  font-size: 32px;
  line-height: 1;
  cursor: pointer;
  transition: transform 0.12s ease, color 0.12s ease;
}
.rv-star.on { color: #f5a524; }
.rv-star:hover { transform: scale(1.12); }
.rv-star:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.rv-text, .rv-name {
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--edge);
  border-radius: 10px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: 14px;
  resize: vertical;
}
.rv-error { margin: 0; color: var(--danger); }
#reviewBox .primary { justify-self: start; }

/* Delivered by hand: being prepared */
.manual-view { display: grid; justify-items: center; gap: 10px; }
.manual-art { position: relative; width: 84px; height: 84px; display: grid; place-items: center; margin-bottom: 4px; }
.manual-icon { font-size: 40px; position: relative; }
.manual-ring { position: absolute; inset: 0; border-radius: 50%; border: 3px solid var(--accent); border-right-color: transparent; animation: manual-spin 2.4s linear infinite; opacity: 0.6; }
@keyframes manual-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .manual-ring { animation: none; } }
.manual-due { margin: 0; padding: 8px 14px; border-radius: 999px; background: var(--accent-soft, #e5efff); color: var(--accent-ink, #0050c2); font-weight: 700; font-size: 14px; }
.manual-due:empty { display: none; }
.manual-due.is-late { background: var(--warn-bg); color: var(--warn-ink); border-radius: 12px; font-weight: 600; }
.manual-ask { width: 100%; max-width: 440px; display: grid; gap: 8px; text-align: left; margin-top: 6px; }
.manual-ask-label { font-weight: 700; font-size: 14px; }
.manual-ask textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--edge); border-radius: 10px; background: transparent; color: inherit; font: inherit; resize: vertical; }
.manual-ask-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
#theLink.is-code { white-space: pre-wrap; }

/* ————————————————————————————————————————————————
   Section identities: one colour per job, always the same.
   Order = blue (accent) · Support chat = teal · Canva = violet · Warnings = amber.
   ———————————————————————————————————————————————— */
:root {
  --chat: #0f8a7e;
  --chat-strong: #0b7268;
  --chat-ink: #0a5c55;
  --chat-soft: #e4f6f3;
  --chat-edge: #b9e5de;
  --chat-on: #ffffff;
  --chat-head: linear-gradient(135deg, #0b1526 0%, #0f2f3a 70%, #0f3f3f 100%);
  --violet: #6d3fd6;
  --violet-soft: #efe8ff;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --chat: #2dd4bf;
    --chat-strong: #5eead4;
    --chat-ink: #7ff0dc;
    --chat-soft: #0c2826;
    --chat-edge: #1b4a46;
    --chat-on: #04211e;
    --chat-head: linear-gradient(135deg, #0d1b2e 0%, #0f2f36 70%, #10403e 100%);
    --violet: #b39dfc;
    --violet-soft: #241a43;
  }
}
:root[data-theme="dark"] {
  --chat: #2dd4bf;
  --chat-strong: #5eead4;
  --chat-ink: #7ff0dc;
  --chat-soft: #0c2826;
  --chat-edge: #1b4a46;
  --chat-on: #04211e;
  --chat-head: linear-gradient(135deg, #0d1b2e 0%, #0f2f36 70%, #10403e 100%);
  --violet: #b39dfc;
  --violet-soft: #241a43;
}

.wrap { gap: 20px; }

/* Order summary: the reference everything else hangs from. */
.order { box-shadow: var(--shadow); }
.order-label { color: var(--accent-ink); }

/* Canva has its own colour so it's never mistaken for the main step. */
#canvaCard .eyebrow { color: var(--violet); background: var(--violet-soft); }
#canvaCard { border-color: color-mix(in srgb, var(--violet) 28%, var(--edge)); }
#viewOutOfStock .eyebrow { color: var(--warn-ink); background: var(--warn-bg); }

/* — Support chat: the one place to talk to us, and it looks like it — */
.card.support {
  padding: 0;
  overflow: hidden;
  border-color: color-mix(in srgb, var(--chat) 40%, var(--edge));
  box-shadow: 0 1px 2px rgba(11, 21, 38, 0.06), 0 22px 48px -22px color-mix(in srgb, var(--chat) 55%, transparent);
  scroll-margin-top: 16px;
}
.support-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 22px;
  background: var(--chat-head);
  color: #fff;
}
.support-avatar {
  position: relative;
  flex: none;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2dd4bf, #0a6cff);
  color: #fff;
  font-size: 18px;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.12);
}
.support-avatar-dot {
  position: absolute;
  right: 0;
  bottom: 1px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #34d399;
  border: 2px solid #0f2f3a;
}
.support-id { flex: 1; min-width: 0; display: grid; gap: 1px; }
.support-eyebrow {
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.68);
}
.card.support h2 { margin: 0; color: #fff; font-size: 20px; }
.support-head .live { background: rgba(52, 211, 153, 0.16); color: #7ff0c4; }
.support-head .live-dot { background: #34d399; box-shadow: 0 0 0 3px rgba(52, 211, 153, 0.25); }
.support-body { padding: 16px 22px 22px; }
.support-intro { margin-bottom: 0; }
.card.support .thread {
  min-height: 200px;
  max-height: 460px;
  padding: 16px;
  border-color: var(--edge);
  background:
    radial-gradient(circle at 1px 1px, color-mix(in srgb, var(--soft) 14%, transparent) 1px, transparent 0) 0 0 / 18px 18px,
    var(--field);
}
.card.support .msg { box-shadow: 0 1px 1px rgba(11, 21, 38, 0.06); }
.card.support .msg.admin { border-color: var(--chat-edge); }
.card.support .msg.admin .who { color: var(--chat-ink); }
.card.support .msg.sistema { box-shadow: none; }
.card.support .composer {
  align-items: flex-end;
  padding: 6px;
  border: 1.5px solid var(--edge);
  border-radius: 14px;
  background: var(--card);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.card.support .composer:focus-within { border-color: var(--chat); box-shadow: 0 0 0 4px color-mix(in srgb, var(--chat) 18%, transparent); }
.card.support .composer textarea { border: 0; background: transparent; padding: 9px 10px; min-height: 44px; }
.card.support .composer textarea:focus { outline: none; }
.card.support #chatSend { background: var(--chat); color: var(--chat-on); box-shadow: none; }
.card.support #chatSend:hover { background: var(--chat-strong); }
.card.support .notify { border-color: var(--chat-edge); }

/* "Write to us first" notes belong to the chat: same colour, and they take you there. */
.help-first {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  background: var(--chat-soft);
  color: var(--chat-ink);
  border: 1px solid var(--chat-edge);
  cursor: pointer;
  transition: border-color 0.15s ease;
}
.help-first::before { content: "💬"; flex: none; }
.help-first::after { content: "↓"; flex: none; margin-left: auto; font-weight: 800; }
.help-first:hover { border-color: var(--chat); }
.help-first:focus-visible { outline: 2px solid var(--chat); outline-offset: 2px; }

/* Floating button to the chat, shown while the chat is off screen. */
.chat-fab {
  position: fixed;
  right: max(16px, env(safe-area-inset-right));
  bottom: max(16px, env(safe-area-inset-bottom));
  z-index: 30;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 18px 12px 14px;
  border-radius: 999px;
  border: 0;
  background: var(--chat);
  color: var(--chat-on);
  font-weight: 800;
  font-size: 14.5px;
  box-shadow: 0 12px 28px -10px color-mix(in srgb, var(--chat) 80%, transparent), 0 2px 6px rgba(11, 21, 38, 0.18);
  animation: fab-in 0.25s ease;
}
.chat-fab svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linejoin: round; }
.chat-fab:hover { background: var(--chat-strong); }
.chat-fab:focus-visible { outline: 3px solid color-mix(in srgb, var(--chat) 40%, transparent); outline-offset: 2px; }
.chat-fab-dot { width: 10px; height: 10px; border-radius: 50%; background: #ff4d4f; box-shadow: 0 0 0 2px var(--chat); }
@keyframes fab-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .chat-fab { animation: none; } }

/* The shop sits between the order and the chat. */
.shop-promo { box-shadow: var(--shadow); }

@media (max-width: 520px) {
  .support-head { padding: 16px 18px; }
  .support-body { padding: 14px 16px 18px; }
  .card.support .thread { max-height: 60vh; }
}
/* Room at the end so the floating chat button never covers the footer. */
@media (max-width: 720px) { body { padding-bottom: 96px; } }

/* Manual delivery: the one thing we need from the customer, as a clear step */
.manual-ask {
  padding: 16px;
  border: 1px solid var(--edge);
  border-radius: 14px;
  background: var(--field);
}
.manual-ask.is-required { border-color: color-mix(in srgb, var(--accent) 45%, var(--edge)); background: var(--accent-soft); }
.manual-ask-step {
  justify-self: start;
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--accent-ink);
}
.manual-ask-label { font-size: 15.5px; }
.manual-ask-hint { margin: -2px 0 2px; }
.manual-ask input[type="email"] {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--edge);
  border-radius: 10px;
  background: var(--card);
  color: var(--ink);
  font: inherit;
}
.manual-ask input[type="email"]:focus { outline: 2px solid var(--accent); outline-offset: 1px; }
.mn-error { margin: 0; color: var(--danger); }
.manual-given {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  max-width: 440px;
  padding: 12px 14px;
  border-radius: 14px;
  background: var(--ok-soft);
  text-align: left;
}
.manual-given-check { display: grid; place-items: center; width: 28px; height: 28px; flex: none; border-radius: 50%; background: var(--ok-fill); color: #fff; font-weight: 800; }
.manual-given > div { display: grid; flex: 1; min-width: 0; }
.manual-given-label { font-size: 12.5px; color: var(--soft); }
.manual-given strong { overflow-wrap: anywhere; }
.manual-done { margin: -4px 0 14px; color: var(--soft); font-size: 14px; white-space: pre-line; }

/* An account, field by field; free text keeps its line breaks. */
#theLink.is-text { white-space: pre-wrap; word-break: break-word; font-size: 15px; line-height: 1.55; }
.account-box { display: grid; gap: 8px; margin: 4px 0 8px; }
.account-row {
  display: grid;
  grid-template-columns: minmax(84px, auto) 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--edge);
  border-radius: 12px;
  background: var(--field);
}
.account-label { font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--soft); }
.account-value { font-size: 16px; font-weight: 700; color: var(--ink); word-break: break-all; user-select: all; }
@media (max-width: 480px) {
  .account-row { grid-template-columns: 1fr auto; }
  .account-label { grid-column: 1 / -1; }
}
.account-copy.ghost.small { margin-top: 0; }
.expires:empty { display: none; }

/* Manual orders: the details asked for, one field each; the password with show/hide. */
.manual-fields { display: grid; gap: 14px; }
.manual-field { display: grid; gap: 6px; }
.manual-field input, .manual-field textarea {
  width: 100%;
  padding: 11px 12px;
  border: 1px solid var(--edge);
  border-radius: 10px;
  background: var(--field);
  color: var(--ink);
  font: inherit;
}
.manual-field input:focus, .manual-field textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: transparent; }
.manual-pass { position: relative; }
.manual-pass input { padding-right: 84px; }
.manual-pass-toggle { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-size: 13px; font-weight: 700; }
.manual-given > div { flex: 1 1 auto; min-width: 0; }
.manual-given-list { display: grid; gap: 2px; margin: 4px 0 0; }
.manual-given-list dt { font-size: 12.5px; color: var(--soft); }
.manual-given-list dt:not(:first-child) { margin-top: 6px; }
.manual-given-list dd { margin: 0; font-weight: 700; overflow-wrap: anywhere; }

/* The shop's own logo in place of the ✦ mark (set in the panel): same size, no coloured tile. */
img.mark.brand-logo { object-fit: contain; background: none; box-shadow: none; padding: 0; border-radius: 8px; }

/* The customer pages share the shop's world: one dark violet ground with a soft glow on top. */
:root[data-theme="dark"] body { background: radial-gradient(1100px 520px at 50% -180px, #2a1866 0%, transparent 70%), var(--bg); background-attachment: scroll; }
/* The page ground reaches the bottom of the window even on short pages. */
:root[data-theme="dark"] { background: var(--bg); }
