/* Subl3D Mapa Estelar 3D — solo se carga en la ficha del producto con el configurador activo. */
.s3sm-product{--sm-ink:var(--s3-brown-deep,#3b2a1e);--sm-line:var(--s3-line,#e3d7c3);--sm-bg:var(--s3-white,#fffdf9);--sm-accent:var(--s3-brown,#5a4030);--sm-muted:var(--s3-muted,#7a6a5a);--sm-r:var(--s3-radius,14px)}

/* Vista previa (sustituye a la galería) */
.s3sm-product div.product .s3sm-stage{position:relative;margin-bottom:1.5rem;min-width:0}
.s3sm-view{position:relative;aspect-ratio:1/1;width:100%;border-radius:var(--sm-r);background:radial-gradient(120% 90% at 50% 15%,#fbf7ef 0,#efe6d6 70%,#e6dac6 100%);overflow:hidden;touch-action:none}
.s3sm-3d,.s3sm-3d canvas,.s3sm-2d{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
.s3sm-2d[hidden],.s3sm-3d[hidden]{display:none!important}
.s3sm-3d canvas{cursor:grab}
.s3sm-3d canvas:active{cursor:grabbing}
.s3sm-loading{position:absolute;inset:0;display:none;align-items:center;justify-content:center;gap:10px;color:var(--sm-muted);font-size:14px;background:rgba(251,247,239,.75)}
.s3sm-stage.is-loading .s3sm-loading{display:flex}
.s3sm-loading span{width:18px;height:18px;border-radius:50%;border:2px solid var(--sm-line);border-top-color:var(--sm-accent);animation:s3sm-spin 1s linear infinite}
@keyframes s3sm-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.s3sm-loading span{animation:none}}
.s3sm-toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:.75rem 0 .25rem}
.s3sm-toolbar[data-only2d] [data-s3sm-mode],.s3sm-stage[data-mode="2d"] .s3sm-reset{display:none}
.s3sm-tool{font-family:inherit;font-weight:600;line-height:1.2;text-transform:none;letter-spacing:normal;min-height:40px;padding:6px 14px;border-radius:999px;border:1.5px solid var(--sm-line);background:var(--sm-bg);color:var(--sm-ink);font-size:14px;cursor:pointer}
.s3sm-tool[aria-pressed="true"]{border-color:var(--sm-accent);background:var(--sm-accent);color:#fff}
.s3sm-tool:focus-visible{outline:3px solid var(--sm-accent);outline-offset:2px}
.s3sm-note{font-size:13px;color:var(--sm-muted);margin:.25rem 0 0}

/* Controles */
.s3sm-product .variations_form table.variations,.s3sm-product .variations_form .reset_variations{display:none!important}
.s3sm{display:grid;gap:14px;margin:0 0 1rem;width:100%}
.s3sm-group{border:1px solid var(--sm-line);border-radius:var(--sm-r);padding:14px 16px 16px;margin:0;background:var(--sm-bg);min-width:0}
.s3sm-group legend{font-weight:700;color:var(--sm-ink);padding:0 6px;display:flex;align-items:center;gap:8px}
.s3sm-step{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--sm-accent);color:#fff;font-size:13px}
.s3sm-field{display:grid;gap:4px;margin:0 0 10px;min-width:0}
.s3sm-field label,.s3sm-label{font-size:14px;font-weight:600;color:var(--sm-ink);margin:0}
.s3sm-label{margin:6px 0 6px}
.s3sm-field input{width:100%;min-height:44px;font-size:16px}
.s3sm-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.s3sm-count{font-weight:400;color:var(--sm-muted);font-size:12px;margin-left:6px}
.s3sm-help{font-size:12.5px;color:var(--sm-muted);margin:2px 0 0;word-break:break-word}
.s3sm-combo{position:relative}
.s3sm-results{position:absolute;z-index:30;left:0;right:0;top:100%;margin:4px 0 0;padding:4px;list-style:none;background:#fff;border:1px solid var(--sm-line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);max-height:300px;overflow:auto}
.s3sm-results li{padding:9px 10px;border-radius:8px;cursor:pointer;display:grid;gap:1px}
.s3sm-results li span{font-size:12.5px;color:var(--sm-muted)}
.s3sm-results li[aria-selected="true"],.s3sm-results li:hover{background:#f4ecdf}
.s3sm-details summary{cursor:pointer;font-size:14px;color:var(--sm-accent);margin:0 0 8px;min-height:32px}
.s3sm-checks{display:flex;flex-wrap:wrap;gap:8px 16px}
.s3sm-checks label{display:flex;align-items:center;gap:6px;min-height:40px;font-size:15px}
.s3sm-checks input{width:20px;height:20px}
.s3sm-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.s3sm-choice{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:8px;border:1.5px solid var(--sm-line);border-radius:12px;background:#fff;cursor:pointer;text-align:center;font-size:13.5px;line-height:1.2}
.s3sm-choice input{position:absolute;opacity:0;width:1px;height:1px}
.s3sm-choice:has(input:checked){border-color:var(--sm-accent);box-shadow:0 0 0 2px var(--sm-accent) inset}
.s3sm-choice:has(input:focus-visible){outline:3px solid var(--sm-accent);outline-offset:2px}
.s3sm-status{border-radius:10px;padding:10px 12px;background:#fff7ec;border:1px solid #edd3ad}
.s3sm-status[hidden]{display:none}
.s3sm-msg{margin:0;font-size:14px}
.s3sm-msg+.s3sm-msg{margin-top:6px}
.s3sm-msg.is-error{color:#9b2c1d;font-weight:600}
.s3sm-msg.is-info{color:var(--sm-muted)}
.s3sm-summary,.s3sm-credits{font-size:12.5px;color:var(--sm-muted);margin:0}
.single_add_to_cart_button.s3sm-blocked{opacity:.6}
@media (max-width:767px){
  .s3sm-choices{gap:6px}
  .s3sm-choice{font-size:12.5px;padding:6px}
}
@media (pointer:coarse){.s3sm-view{touch-action:pan-y}}

/* La vista previa acompaña al desplazamiento (sin JS: position:sticky).
   .s3sm-pair envuelve vista + resumen (controles): la vista fija nunca sale de esa zona, así que no tapa
   las pestañas, los relacionados ni el pie. */
.s3sm-product{--sm-top:16px}
.admin-bar.s3sm-product{--sm-top:48px}
.s3sm-product div.product .s3sm-pair>.images,.s3sm-product div.product .s3sm-pair>.summary{width:auto!important;float:none!important;margin:0!important;min-width:0}
/* Escritorio (≥922 px, 2 columnas): el envoltorio no genera caja (los hijos siguen en la rejilla del tema).
   La columna de la vista ocupa toda la fila y su contenido (.s3sm-stick) se queda fijo dentro de ella. */
@media (min-width:922px){
  .s3sm-product div.product .s3sm-pair{display:contents}
  .s3sm-product div.product .s3sm-pair>.s3sm-stage{align-self:stretch}
  .s3sm-product .s3sm-stick{position:sticky;top:var(--sm-top)}
  .s3sm-product .s3sm-view{width:min(100%,calc(100svh - var(--sm-top) - 120px));margin-inline:auto}
}
/* Una columna (móvil y tableta): vista compacta (≤ 38 % de la altura) fija arriba mientras se recorren
   los controles; mismo tamaño fija o no, así que no hay saltos. */
@media (max-width:921px){
  .s3sm-product div.product .s3sm-pair{display:block;grid-column:1/-1;min-width:0}
  .s3sm-product div.product .s3sm-pair>.s3sm-stage{position:sticky;top:var(--sm-top);z-index:20;padding:8px 0 6px!important;margin:0 0 24px!important;background:var(--s3-cream,#f7f2e8);box-shadow:0 10px 12px -12px rgba(59,42,30,.35)}
  .s3sm-product .s3sm-view{width:min(100%,38svh);margin-inline:auto}
  .s3sm-product .s3sm-toolbar{justify-content:center;margin:.5rem 0 0;gap:6px}
  .s3sm-product .s3sm-tool{min-height:36px;padding:4px 12px;font-size:13px}
  .s3sm-product .s3sm-note{display:none}
  /* Al enfocar un campo (teclado del móvil), el navegador lo deja por debajo de la vista fija */
  .s3sm-product [data-s3sm] :is(input,select,textarea,button,legend){scroll-margin-top:calc(var(--sm-top,0px) + 38svh + 72px)}
}
/* Pantallas estrechas o bajas (p. ej. 320 × 568): botones en una sola fila y vista algo menor */
@media (max-width:400px){
  .s3sm-product .s3sm-toolbar{flex-wrap:nowrap;gap:4px}
  .s3sm-product .s3sm-tool{min-height:32px;padding:3px 9px;font-size:12px;white-space:nowrap}
}
@media (max-height:640px) and (max-width:921px){
  .s3sm-product .s3sm-view{width:min(100%,32svh)}
  .s3sm-product [data-s3sm] :is(input,select,textarea,button,legend){scroll-margin-top:calc(var(--sm-top,0px) + 32svh + 64px)}
}
@media (max-width:782px){.admin-bar.s3sm-product{--sm-top:46px}}
@media (max-width:600px){.admin-bar.s3sm-product{--sm-top:0px}}
@media (max-height:520px) and (max-width:921px){
  /* Móvil en horizontal: sin vista fija, no quedaría sitio para los controles */
  .s3sm-product div.product .s3sm-pair>.s3sm-stage{position:relative;box-shadow:none}
  .s3sm-product .s3sm-view{width:min(100%,70svh)}
}
/* Tarjetas de opciones */
.s3sm-choice-name{font-weight:600;color:var(--sm-ink)}
.s3sm-choice-hint{font-size:12px;color:var(--sm-muted);line-height:1.25}
.s3sm-compact{grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}
.s3sm-sub{margin-top:10px}
.s3sm-check{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:40px;font-size:15px}
.s3sm-check input{width:20px;height:20px}
.s3sm-example{font-size:12.5px;color:var(--sm-muted);font-variant-numeric:tabular-nums}
/* 1. Diseño: tarjetas de modelo (Órbita, Eclipse, Infinito) con miniatura SVG a escala real */
.s3sm-layouts{gap:12px}
.s3sm-layouts .s3sm-model{justify-content:flex-start;gap:4px;padding:8px 8px 12px;border:1.5px solid var(--sm-line);border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(59,42,30,.06);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background-color .2s ease}
.s3sm-layouts .s3sm-model:hover{transform:translateY(-3px);box-shadow:0 8px 18px -8px rgba(59,42,30,.35)}
.s3sm-model-art{display:flex;align-items:center;justify-content:center;width:100%;height:110px;margin-bottom:6px;border-radius:10px;background:linear-gradient(160deg,#f7f1e6 0%,#eadfcd 100%)}
.s3sm-model-art svg{display:block;height:96px;width:auto;max-width:100%;overflow:visible;filter:drop-shadow(0 3px 4px rgba(59,42,30,.28))}
.s3sm-layouts .s3sm-choice-name{font-size:16px;font-weight:700;line-height:1.2;color:var(--sm-ink)}
.s3sm-layouts .s3sm-choice-hint{font-size:12.5px;color:#8a7a6a}
.s3sm-layouts .s3sm-model:has(input:checked){border:2.5px solid #4a2f22;padding:7px 7px 11px;background:#fffdf9;box-shadow:0 6px 16px -8px rgba(74,47,34,.45)}
.s3sm-layouts .s3sm-model::after{content:"";position:absolute;top:8px;right:8px;width:24px;height:24px;border-radius:50%;background:#4a2f22 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M6.5 12.5l3.5 3.5 7.5-8' fill='none' stroke='%23fff' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/16px no-repeat;box-shadow:0 2px 6px rgba(74,47,34,.35);opacity:0;transform:scale(.6);transition:opacity .2s ease,transform .2s ease;pointer-events:none}
.s3sm-layouts .s3sm-model:has(input:checked)::after{opacity:1;transform:scale(1)}
@media (prefers-reduced-motion:reduce){.s3sm-layouts .s3sm-model,.s3sm-layouts .s3sm-model::after{transition:none}.s3sm-layouts .s3sm-model:hover{transform:none}}
@media (max-width:767px){
  .s3sm-layouts{gap:8px}
  .s3sm-layouts .s3sm-model{padding:6px 6px 10px}
  .s3sm-layouts .s3sm-model:has(input:checked){padding:5px 5px 9px}
  .s3sm-model-art{height:96px}
  .s3sm-model-art svg{height:84px}
  .s3sm-layouts .s3sm-choice-name{font-size:15px}
  .s3sm-layouts .s3sm-choice-hint{font-size:11.5px}
  .s3sm-layouts .s3sm-model::after{top:6px;right:6px;width:20px;height:20px;background-size:13px}
}
@media (max-width:380px){
  .s3sm-model-art{height:84px}
  .s3sm-model-art svg{height:74px}
  .s3sm-layouts .s3sm-choice-name{font-size:14px}
}
.s3sm-sw::before{content:"";width:26px;height:26px;border-radius:50%;border:1px solid rgba(0,0,0,.2);background:radial-gradient(circle,var(--c) 0 30%,#161616 32%)}
.s3sm-sw-blanco{--c:#f4f4f0}.s3sm-sw-beige{--c:#e8dcc2}
.s3sm-fonts{grid-template-columns:repeat(4,minmax(0,1fr))}
.s3sm-font-sample{font-size:22px;line-height:1.1;color:var(--sm-ink)}
.s3sm-fonts .s3sm-choice-name{font-size:11.5px;font-weight:500}
@media (max-width:767px){.s3sm-fonts{grid-template-columns:repeat(4,minmax(0,1fr))}.s3sm-font-sample{font-size:19px}}
/* Muestras de tipografía: los mismos archivos que se usan para grabar */
@font-face{font-family:"S3SM sans-bold";src:url(../fonts/dejavu-sans-bold.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM condensed-bold";src:url(../fonts/dejavu-sans-condensed-bold.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM serif-bold";src:url(../fonts/dejavu-serif-bold.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM manrope";src:url(../fonts/manrope-700.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM garamond";src:url(../fonts/eb-garamond-700.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM cinzel";src:url(../fonts/cinzel-700.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM playfair";src:url(../fonts/playfair-display-700.woff) format("woff");font-display:swap}
@font-face{font-family:"S3SM script";src:url(../fonts/dancing-script-700.woff) format("woff");font-display:swap}
.s3sm-font-sans-bold .s3sm-font-sample{font-family:"S3SM sans-bold"}
.s3sm-font-condensed-bold .s3sm-font-sample{font-family:"S3SM condensed-bold"}
.s3sm-font-serif-bold .s3sm-font-sample{font-family:"S3SM serif-bold"}
.s3sm-font-manrope .s3sm-font-sample{font-family:"S3SM manrope"}
.s3sm-font-garamond .s3sm-font-sample{font-family:"S3SM garamond"}
.s3sm-font-cinzel .s3sm-font-sample{font-family:"S3SM cinzel"}
.s3sm-font-playfair .s3sm-font-sample{font-family:"S3SM playfair"}
.s3sm-font-script .s3sm-font-sample{font-family:"S3SM script"}
