/* Configurador: escenario 3D a la izquierda (arriba y fijo en móvil) y panel de opciones */
.config { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); min-height: 100vh; }
@media (max-width: 900px) { .config { grid-template-columns: minmax(0, 1fr); } }

.escenario { position: sticky; top: 0; height: 100vh; overflow: hidden; background: radial-gradient(120% 80% at 50% 30%, #12263a 0%, #070b11 70%); }
@media (max-width: 900px) { .escenario { height: 52vh; min-height: 330px; z-index: 5; border-bottom: 1px solid var(--linea); } }
.escenario-fondo { position: absolute; inset: 0; pointer-events: none; }
.halo { position: absolute; left: 50%; top: 46%; width: 70vmin; height: 70vmin; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, rgb(45 226 200 / .22), transparent 65%); filter: blur(10px); animation: respira 6s ease-in-out infinite; }
.sombra-suelo { position: absolute; left: 50%; bottom: 14%; width: 55%; height: 40px; transform: translateX(-50%); background: radial-gradient(ellipse, rgb(0 0 0 / .55), transparent 70%); }
@keyframes respira { 50% { transform: translate(-50%, -50%) scale(1.12); opacity: .7; } }
.visor { position: absolute; inset: 0; touch-action: none; }
.visor canvas { display: block; outline: none; }
.cargando { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 14px; color: var(--tinta-2); text-align: center; padding: 20px; }
.ola-carga { width: 64px; height: 64px; border-radius: 50%; border: 3px solid var(--linea-fuerte); border-top-color: var(--aqua); animation: gira 0.9s linear infinite; }
@keyframes gira { to { transform: rotate(360deg); } }
.escenario-info { position: absolute; left: 28px; top: 92px; pointer-events: none; display: grid; gap: 6px; }
.escenario-info h1 { font-size: clamp(2.6rem, 7vw, 5.6rem); line-height: .9; background: linear-gradient(180deg, #fff, rgb(255 255 255 / .35)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.specs { color: var(--tinta-2); font-size: .9rem; }
.escenario-acciones { position: absolute; left: 28px; bottom: 26px; display: flex; gap: 8px; }
.escenario-acciones .btn { background: rgb(10 16 24 / .6); backdrop-filter: blur(8px); }
.pista { position: absolute; right: 24px; bottom: 32px; font-size: .75rem; color: var(--tinta-3); letter-spacing: .08em; text-transform: uppercase; }
@media (max-width: 900px) {
  .escenario-info { left: 16px; top: 16px; }
  .escenario-info h1 { font-size: 2.4rem; }
  .escenario-acciones { left: 16px; bottom: 14px; }
  .pista { display: none; }
}

/* Panel de opciones */
.panel { padding: 104px 32px 40px; display: grid; gap: 14px; align-content: start; }
@media (max-width: 900px) { .panel { padding: 18px 16px 120px; } }
.paso-config { border: 1px solid var(--linea); border-radius: var(--radio); padding: 18px; margin: 0; display: grid; gap: 14px; background: var(--capa); min-width: 0; }
.paso-config legend { padding: 0 6px; font-family: var(--fuente-display); text-transform: uppercase; letter-spacing: -.01em; font-size: 1rem; }
.paso-config legend .num { color: var(--aqua); margin-right: 6px; }
.sub { display: block; font-size: .75rem; text-transform: uppercase; letter-spacing: .12em; color: var(--tinta-3); font-weight: 700; margin-bottom: 8px; }
.texto-modelo { font-size: .9rem; min-height: 1.5em; }

.modelos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.modelo-opcion input, .diseno-opcion input, .quilla-opcion input { position: absolute; opacity: 0; pointer-events: none; }
.modelo-tarjeta { display: grid; gap: 2px; padding: 12px 14px; border-radius: 14px; border: 1px solid var(--linea); cursor: pointer; transition: border-color .2s, background .2s, transform .25s var(--ease); }
.modelo-tarjeta strong { font-family: var(--fuente-display); text-transform: uppercase; font-size: 1.05rem; }
.modelo-tarjeta span { font-size: .8rem; color: var(--tinta-2); }
.modelo-opcion:hover .modelo-tarjeta { border-color: var(--linea-fuerte); transform: translateY(-2px); }
.modelo-opcion input:checked + .modelo-tarjeta { border-color: var(--aqua); background: rgb(45 226 200 / .08); box-shadow: 0 0 0 1px var(--aqua) inset; }
.modelo-opcion input:focus-visible + .modelo-tarjeta, .diseno-opcion input:focus-visible + .diseno-chip, .quilla-opcion input:focus-visible + span { outline: 2px solid var(--aqua); outline-offset: 2px; }

.colores { display: grid; gap: 14px; }
.muestras { display: flex; flex-wrap: wrap; gap: 8px; }
.muestra { width: 34px; height: 34px; border-radius: 50%; border: 2px solid rgb(255 255 255 / .15); background: var(--c); cursor: pointer; padding: 0; transition: transform .2s var(--ease); }
.muestra:hover { transform: scale(1.12); }
.muestra[aria-checked="true"] { box-shadow: 0 0 0 3px var(--fondo), 0 0 0 5px var(--aqua); }
.muestra-libre { position: relative; overflow: hidden; background: conic-gradient(red, yellow, lime, cyan, blue, magenta, red); }
.muestra-libre input { position: absolute; inset: -8px; width: 52px; height: 52px; opacity: 0; cursor: pointer; }

.disenos { display: flex; flex-wrap: wrap; gap: 8px; }
.diseno-chip { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px 8px 8px; border-radius: 99px; border: 1px solid var(--linea); cursor: pointer; font-size: .88rem; font-weight: 600; }
.diseno-chip::before { content: ""; width: 26px; height: 26px; border-radius: 50%; background: var(--base); border: 1px solid rgb(255 255 255 / .2); }
[data-mini="degradado"]::before { background: linear-gradient(0deg, var(--acento), var(--base)); }
[data-mini="franjas"]::before { background: linear-gradient(90deg, var(--base) 34%, var(--canto) 34% 40%, var(--acento) 40% 60%, var(--canto) 60% 66%, var(--base) 66%); }
[data-mini="ola"]::before { background: radial-gradient(circle at 50% 120%, var(--acento) 45%, transparent 46%), var(--base); }
[data-mini="marmol"]::before { background: conic-gradient(from 40deg, var(--base), var(--acento), var(--base), var(--canto), var(--base)); }
.diseno-opcion input:checked + .diseno-chip { border-color: var(--aqua); color: var(--aqua); }
.entrada-nombre { text-transform: uppercase; font-family: var(--fuente-display); letter-spacing: .04em; }

.quillas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.quilla-opcion span { display: grid; gap: 1px; padding: 10px 12px; border-radius: 14px; border: 1px solid var(--linea); cursor: pointer; }
.quilla-opcion small { color: var(--tinta-2); font-size: .76rem; }
.quilla-opcion input:checked + span { border-color: var(--aqua); background: rgb(45 226 200 / .08); }
.extras { display: grid; gap: 6px; }
.extra { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 12px; background: var(--capa-2); cursor: pointer; }
.extra input { width: 18px; height: 18px; accent-color: var(--aqua); }
.extra small { margin-left: auto; color: var(--tinta-2); }

.comprar { position: sticky; bottom: 14px; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding: 16px 18px; border-radius: var(--radio); background: rgb(18 28 40 / .85); backdrop-filter: blur(14px); border: 1px solid var(--linea-fuerte); box-shadow: var(--sombra); }
.precio { display: block; font-family: var(--fuente-display); font-size: 2.2rem; line-height: 1; margin: 2px 0 4px; }
.comprar small { font-size: .75rem; }
/* Móvil: precio y botón en una sola fila compacta, encima de la barra de navegación */
@media (max-width: 760px) {
  .comprar { bottom: 80px; flex-wrap: nowrap; gap: 10px; padding: 10px 10px 10px 16px; border-radius: 99px; }
  .comprar .sub, .comprar small { display: none; }
  .precio { font-size: 1.5rem; margin: 0; }
  .comprar .btn { min-height: 44px; padding: 0 16px; font-size: .9rem; }
  /* La guía plegada sube por encima del recuadro del precio */
  body:has(.comprar) .guia { bottom: 148px; }
}
@media (max-width: 900px) { .escenario { height: 44vh; min-height: 280px; } }
