/* ============================================================
   NOKAM DESIGNS — sistema de diseño "DIMTECH 3D"
   Alineado con la identidad de dimtech3d.com: fondo claro
   azulado, tinta marino y un único acento turquesa/tech.
   El visor 3D sigue siendo la pieza central.
   ============================================================ */

:root{
  --paper:        #EEF3F7;   /* fondo general, blanco frío ligeramente azulado */
  --paper-raised: #FFFFFF;   /* tarjetas, vitrina del visor */
  --ink:          #0B1E33;   /* texto principal, marino oscuro */
  --ink-soft:     #56697C;   /* texto secundario */
  --line:         #D6E0E9;   /* hairlines, bordes */
  --accent:       #0EA5BE;   /* turquesa/tech — único acento, uso deliberado */
  --accent-hover: #0B8CA2;
  --accent-ink:   #FFFFFF;   /* texto sobre el acento */
  --notice-bg:    #E7F6F9;
  --notice-line:  #BCE5EC;
  --notice-ink:   #0C6B79;

  --radius-stage: 20px;
  --radius-card:  12px;
  --radius-sm:    7px;
  --radius-pill:  999px;

  --shadow-stage: 0 36px 64px -32px rgba(11,30,51,.34), 0 1px 0 rgba(11,30,51,.06);
  --shadow-card:  0 10px 22px -16px rgba(11,30,51,.28);

  --font-display: 'Space Grotesk', sans-serif;
  --font-body:    'Inter', sans-serif;
}

*{ box-sizing: border-box; }

html, body{ margin:0; padding:0; }

body{
  background: var(--paper);
  color: var(--ink);
  font-family: var(--font-body);
  font-size: 15px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

img{ max-width:100%; display:block; }

/* ---------- utilidades heredadas (no tocar los nombres: el JS las usa) --- */

.center{ display:flex; flex-direction:column; align-items:center; text-align:center; }

.ocultar{ display:none !important; }
.mostrar{ display:block; }
.mostrarInline{ display:inline-block; }

/* ---------- cabecera de marca ---------- */

.topbar{
  width:100%;
  max-width: 1040px;
  margin: 0 auto;
  padding: 28px 28px 0;
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap: 16px;
}

.topbar .wordmark{
  font-family: var(--font-display);
  font-weight:700;
  font-size: 14px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink);
}

.topbar .wordmark span{ color: var(--accent); }

.topbar .tagline{
  font-family: var(--font-body);
  font-size: 12.5px;
  color: var(--ink-soft);
}

main{ display:block; width:100%; }

/* ---------- botones ---------- */

.btn{
  font-family: var(--font-display);
  font-weight:600;
  font-size: 15px;
  letter-spacing:.01em;
  padding: 14px 26px;
  border-radius: var(--radius-sm);
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  cursor:pointer;
  transition: background .15s ease, color .15s ease, border-color .15s ease, transform .12s ease;
}

.btn:hover{ transform: translateY(-1px); }
.btn:active{ transform: translateY(0); }

.btn-primary{
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-ink);
}
.btn-primary:hover{ background: var(--accent-hover); border-color: var(--accent-hover); }

.btn-ghost{
  background: transparent;
  border-color: var(--accent);
  color: var(--accent);
}
.btn-ghost:hover{ background: var(--notice-bg); border-color: var(--accent-hover); color: var(--accent-hover); }

/* ---------- pantalla ENTRADA ---------- */

#entrada{
  padding: 8px 20px 70px;
  max-width: 1040px;
  margin: 0 auto;
}

#entrada h1,
#salida h1,
#confirmar h1{
  font-family: var(--font-display);
  font-weight: 600;
  font-size: clamp(24px, 3vw, 34px);
  line-height:1.25;
  letter-spacing:-.01em;
  color: var(--ink);
  max-width: 620px;
  margin: 30px auto 24px;
}

#redirectDesignGeneration2{ margin-bottom: 30px; }
.scene-actions #redirectDesignGeneration{ margin-bottom: 0; }

/* Fila con las acciones a la izquierda y el visor a la derecha */
.stage-row{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  justify-content:center;
  gap: 40px;
  width:100%;
}

.actions-col{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  text-align:left;
  flex: 0 0 220px;
  padding-top: 4px;
}

.scene-actions{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap: 10px;
  margin-top: 18px;
  width: 100%;
}
.scene-actions .btn{
  width: 100%;
  padding: 13px 20px;
  font-size: 14px;
}

.saved-col{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  text-align:left;
  flex: 0 0 220px;
  padding-top: 4px;
}

/* Opciones generadas ("Opcion 1", "Opcion 2"...) — el JS les asigna un
   estilo inline propio; usamos !important sólo aquí para poder
   reescribirlo sin tocar controlador.js. */
#contenedorInputs{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  margin-bottom: 0;
}

.inputTexture{
  background: var(--paper-raised) !important;
  border: 1px solid var(--line) !important;
  color: var(--ink) !important;
  border-radius: var(--radius-pill) !important;
  font-family: var(--font-display) !important;
  font-weight: 600 !important;
  font-size: 15px !important;
  letter-spacing: .02em;
  box-shadow: var(--shadow-card);
  transition: border-color .15s ease, transform .12s ease, background .15s ease, color .15s ease;
}
.inputTexture:hover{ border-color: var(--ink) !important; transform: translateY(-1px); }
.inputTexture.active{
  background: var(--accent) !important;
  border-color: var(--accent) !important;
  color: var(--accent-ink) !important;
}

/* Vitrina del visor 3D */

#contenedorEnlace.viewer-stage{
  flex: 1 1 auto;
  position: relative;
  width: 100%;
  max-width: 460px;
  aspect-ratio: 4 / 5;
  margin: 0 auto;
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
}

#contenedorEnlace .canvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
}

#loading.canvas{
  display:flex;
  align-items:center;
  justify-content:center;
  background: transparent;
}
#loading .loading{ width:56px; height:56px; opacity:.5; }

/* Perchero de ideas guardadas (tercera columna) */

.saved-col h2{
  font-family: var(--font-display);
  font-weight:600;
  font-size: 17px;
  color: var(--ink);
  margin: 0 0 16px;
  width: 100%;
  text-align: center;
}

.saved-col #selectModels{
  width: 100%;
  font-family: var(--font-body);
  font-size: 14px;
  color: var(--ink);
  background: var(--paper-raised);
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  padding: 11px 14px;
  margin-bottom: 22px;
  cursor:pointer;
}

/* #slots (miniaturas) y #showSlots (enlaces "Ver Guardado") son dos listas
   separadas que genera controlador.js, en el mismo orden. display:contents
   hace que sus hijos entren directamente en esta rejilla de 3 columnas, así
   la miniatura N (fila 1) cae justo encima de su "Ver Guardado" (fila 2),
   sin tocar el JS. */
.saved-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 10px;
  width: 100%;
}
.saved-grid #slots,
.saved-grid #showSlots{
  display:contents;
}

.modelSlot{
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}

.modelSlotIcono, .modelSlotIconoVacio{
  display:flex;
  flex-direction:column;
  align-items:center;
  width:100%;
  border-radius: var(--radius-card);
  border: 1px solid var(--line);
  background: var(--paper-raised);
  box-shadow: var(--shadow-card);
  overflow:visible;
  padding-bottom: 6px;
}
.modelSlotIconoVacio{ border-style: dashed; background: transparent; box-shadow:none; }
.modelSlotIconoInactivo{ opacity:.4; }

.slotTexture{
  display:block;
  width:100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  object-position: center;
  background: var(--paper-raised);
  border-radius: var(--radius-card) var(--radius-card) 0 0;
  cursor:pointer;
}

.slotTextureSubtitulo{
  font-family: var(--font-body);
  font-size: 12px;
  color: var(--ink-soft);
  text-align:center;
  margin-top: 5px;
  padding: 0 4px;
}

.verSlot, .verSlotInactivo{
  font-family: var(--font-body);
  font-size: 12.5px;
  text-align:center;
  color: var(--ink-soft);
  cursor:pointer;
  margin-top: 6px;
}
.verSlot:hover{ color: var(--accent); }
.verSlotInactivo{ opacity:.35; pointer-events:none; }
.activeShowSlot .verSlot{ color: var(--accent); font-weight:600; }

.saved-col #continuar{ margin-top: 28px; width: 100%; }



/* ---------- pantalla SALIDA (selección para pedido) ---------- */

#salida{ max-width: 900px; margin: 0 auto; padding: 8px 20px 70px; }

#volver{ margin-bottom: 26px; }

.notice{
  display:inline-flex;
  align-items:center;
  gap: 10px;
  background: var(--notice-bg);
  border: 1px solid var(--notice-line);
  color: var(--notice-ink);
  font-family: var(--font-body);
  font-weight:500;
  font-size: 13.5px;
  padding: 12px 18px;
  border-radius: var(--radius-sm);
  margin: 4px 0 30px;
}

#contenedorIconos{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap: 26px;
}

.outputModel{
  font-family: var(--font-display);
  font-weight:600;
  font-size: 16px;
  color: var(--ink);
  width:100%;
  margin: 22px 0 12px;
}

.outputContenedorIconos{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap: 12px;
}

.slotTexture.slotTextureActive{ outline: 3px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
.slotTexture.slotTextureNoActive{ opacity:.5; }

#finalizar{ margin-top: 36px; }

/* ---------- pantalla CONFIRMAR ---------- */

#confirmar{ max-width: 600px; margin: 0 auto; padding: 60px 20px 80px; }

#redirectDesignGeneration2{ margin-top: 10px; }

/* ---------- responsive ---------- */

@media (max-width: 960px){
  .stage-row{ flex-direction:column; align-items:center; }
  .actions-col{ align-items:center; text-align:center; flex:none; width:100%; padding-top:0; }
  #contenedorInputs{ justify-content:center; margin-top: 26px; }
  .scene-actions{ align-items:center; margin-top: 18px; }
  .saved-col{ align-items:center; text-align:center; flex:none; width:100%; max-width: 420px; margin-top: 50px; }
  .saved-col .modelSlot{ justify-content:center; }
}

@media (max-width: 640px){
  .topbar{ padding: 16px 16px 0; gap: 10px; }
  .topbar .wordmark{ font-size: 11px; letter-spacing: .1em; white-space: nowrap; }
  .topbar .tagline{ font-size: 10.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  #contenedorEnlace.viewer-stage{ aspect-ratio: 3 / 4; }
  .inputTexture{ width: 130px !important; height: 52px !important; margin: 6px !important; }

  .stage-row{ gap: 14px; }
  #contenedorInputs{ margin-top: 0; }
  .saved-col{ margin-top: 18px !important; }
}
