:root{
  --bg:#141414; --ink:#f4f2ee; --muted:rgba(244,242,238,.72);
  --glass:rgba(20,20,20,.55); --glass2:rgba(255,255,255,.12); --line:rgba(255,255,255,.22);
  --accent:#6E1F38;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --word:"Anton",Impact,sans-serif;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);overflow:hidden;touch-action:pan-x pan-y;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.hidden{display:none !important}

#stage{position:fixed;inset:0;overflow:hidden;background:#000}
#video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}
#gl,#debug{position:absolute;inset:0;width:100%;height:100%;display:block}
#debug{pointer-events:none}

.word{font-family:var(--word);letter-spacing:.14em;font-size:14px;color:var(--ink);opacity:.92}

/* ---------- barra superior ---------- */
#top{position:absolute;left:0;right:0;top:0;padding:calc(env(safe-area-inset-top) + 10px) 12px 10px;display:flex;align-items:center;justify-content:space-between;
  background:linear-gradient(rgba(0,0,0,.5),rgba(0,0,0,0));z-index:5;pointer-events:none}
#top>*{pointer-events:auto}
#brand{display:flex;flex-direction:column;align-items:center;gap:3px}
#logo{height:15px;width:auto;filter:drop-shadow(0 1px 6px rgba(0,0,0,.6))}
#brand .ring{font-size:12px;color:var(--muted);letter-spacing:.02em}
.icon{width:42px;height:42px;border-radius:50%;background:var(--glass);backdrop-filter:blur(10px);display:grid;place-items:center}
.icon svg{width:22px;height:22px}
.icon.spacer{visibility:hidden}
/* slots del stack (riel ancho): ‹ slot › por fila, ⇄ entre filas */
#slots{gap:3px}
.slotRow{display:flex;align-items:center;gap:3px}
.slot{width:64px;height:44px;border-radius:12px;border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;position:relative;color:var(--ink);background:rgba(255,255,255,.06);transition:background .2s,border-color .2s}
.slot.on{border-color:#fff;background:rgba(255,255,255,.2)}
.slot.loading{animation:busy 1s ease-in-out infinite}
.slot.empty{border-style:dashed;color:var(--muted);font-size:20px;font-weight:300}
.slot b{font-size:10px;font-weight:600;letter-spacing:.01em;max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.1}
.slot svg{width:18px;height:18px;display:block}
.slot .x{position:absolute;top:-6px;right:-6px;width:17px;height:17px;border-radius:50%;background:#fff;color:#111;font-size:12px;line-height:17px;text-align:center;display:none}
.slot.on .x{display:block}
.nx{width:26px;height:44px;border-radius:10px;font-size:22px;line-height:1;color:var(--ink);display:grid;place-items:center;background:rgba(255,255,255,.08)}
.nx:active{background:rgba(255,255,255,.22)}
#slots .swap{width:26px;height:18px;display:grid;place-items:center;color:var(--muted);border-radius:8px}
#slots .swap svg{width:16px;height:16px}
#slots .swap:active{background:rgba(255,255,255,.16);color:#fff}
#railMetals.row{flex-direction:row;gap:8px}
.railRow{display:flex;align-items:center;gap:4px}
.railRow .vsep{width:1px;height:26px;background:var(--line);margin:0 2px}
.panelHead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px}
.panelHead #panelTitle{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.panelHead .nav{display:flex;gap:2px}
.railArrow{width:34px;height:28px;display:grid;place-items:center;border-radius:12px;color:var(--ink);opacity:.9}
.railArrow svg{width:22px;height:22px}
.railArrow:active{background:rgba(255,255,255,.16)}

/* ---------- riel derecho: metal · talla · quilates ---------- */
#rail{position:absolute;right:8px;top:50%;transform:translateY(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:10px 8px;border-radius:26px;background:var(--glass);backdrop-filter:blur(12px)}
.railGroup{display:flex;flex-direction:column;gap:10px;align-items:center}
.railSep{width:22px;height:1px;background:var(--line)}
.metal{width:28px;height:28px;border-radius:50%;border:2px solid transparent;padding:2px;background-clip:content-box;transition:transform .2s,border-color .2s}
.metal.on{border-color:#fff;transform:scale(1.1)}
.railBtn{display:flex;flex-direction:column;align-items:center;gap:1px;width:44px;padding:6px 0;border-radius:14px;transition:background .2s}
.railBtn b{font-weight:600;font-size:14px;line-height:1}
.railBtn small{font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.railBtn.open{background:rgba(255,255,255,.16)}
.stoneDot{width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:inset 0 -3px 5px rgba(0,0,0,.25),0 0 0 1.5px rgba(255,255,255,.7);margin-bottom:2px}
.panel .stoneChip{display:flex;align-items:center;gap:8px;text-align:left;min-width:120px}
.panel .stoneChip i{width:14px;height:14px;border-radius:50%;flex:none;box-shadow:inset 0 -2px 4px rgba(0,0,0,.25)}
.panel{position:absolute;right:var(--railW,70px);top:50%;transform:translateY(-50%);z-index:6;display:flex;flex-direction:column;gap:6px;max-height:70vh;overflow-y:auto;
  padding:8px;border-radius:18px;background:var(--glass);backdrop-filter:blur(12px);scrollbar-width:none}
.panel::-webkit-scrollbar{display:none}
.panel .chip{min-width:52px;text-align:center;padding:9px 10px}
/* panel de modelos (riel derecho): pestañas + apilados + lista vertical */
#ringPanel{width:min(50vw,200px);gap:8px;max-height:72vh;background:rgba(20,20,20,.5)}
#ringPanel .tabs{justify-content:flex-start;flex-wrap:wrap;gap:4px 12px}
#ringPanel .tabs button{font-size:12px}
#ringPanel .tabs.small button{font-size:11.5px}
#ringPanel .stack{justify-content:flex-start;gap:5px}
#ringPanel .stack .pill,#ringPanel .stack .add{font-size:11.5px;padding:5px 9px}
#ringPanel .chips{flex-direction:column;align-items:stretch;padding:0;gap:6px;overflow:visible;scroll-snap-type:none;max-width:none}
#ringPanel .chips .chip{text-align:left;min-width:0;padding:9px 12px;background:rgba(255,255,255,.06)}
#ringPanel .chips .chip.on{background:rgba(255,255,255,.18)}
#railRing svg{display:block;margin-bottom:1px}

/* ---------- abajo: modelos + disparador ---------- */
#bottom{position:absolute;left:0;right:0;bottom:0;padding:10px 14px calc(env(safe-area-inset-bottom) + 14px);z-index:5;
  background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.55));display:flex;flex-direction:column;align-items:center;gap:16px}
.tabs{display:flex;gap:18px;justify-content:center}
.tabs button{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:4px 2px;border-bottom:2px solid transparent;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.tabs button.on{color:#fff;border-bottom-color:#fff}
.tabs.small button{font-size:12px;font-weight:500;text-transform:none;letter-spacing:.02em}
.chips{display:flex;gap:8px;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding:2px 40vw;max-width:100%;scroll-snap-type:x proximity}
.chips .chip{scroll-snap-align:center}
.chips::-webkit-scrollbar{display:none}
.chip{padding:9px 14px;border-radius:999px;background:var(--glass);backdrop-filter:blur(10px);border:1px solid transparent;font-size:13px;white-space:nowrap;color:var(--muted);transition:all .2s}
.chip.on{color:var(--ink);border-color:var(--line);background:rgba(255,255,255,.16)}
.stack{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;max-width:100%}
.stack .pill{display:flex;align-items:center;gap:6px;padding:6px 10px 6px 12px;border-radius:999px;font-size:12px;background:rgba(255,255,255,.14);border:1px solid var(--line);color:var(--ink)}
.stack .pill.base{background:transparent}
.stack .pill .x{width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;font-size:12px;line-height:1}
.stack .swap{width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.14);border:1px solid var(--line);font-size:13px;line-height:1;display:grid;place-items:center;color:var(--ink)}
.stack .add{padding:6px 12px;border-radius:999px;font-size:12px;border:1px dashed var(--line);color:var(--muted)}
.stack .add.on{border-style:solid;background:#fff;color:#111;font-weight:600}
.panel .sep{height:1px;background:var(--line);margin:4px 2px}
.panel .chip.small{font-size:11.5px;padding:7px 10px;min-width:0}
#shutter{width:72px;height:72px;border-radius:50%;border:4px solid #fff;display:grid;place-items:center}
#shutter span{width:56px;height:56px;border-radius:50%;background:#fff;transition:transform .12s}
#shutter:active span{transform:scale(.88)}

/* ---------- coach ---------- */
#coach{position:absolute;left:0;right:0;top:var(--topH,70px);bottom:var(--bottomH,230px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:4;pointer-events:none;transition:opacity .5s}
/* silueta de Danna (brand/mano.svg): mano izquierda por el dorso, como máscara blanca translúcida */
#coach .hand{position:relative;height:min(40vh,375px);max-width:58vw;aspect-ratio:1024/1536;animation:float 3s ease-in-out infinite;filter:drop-shadow(0 2px 12px rgba(0,0,0,.45))}
#coach .handMask{position:absolute;inset:0;background:rgba(255,255,255,.6);
  -webkit-mask:url(brand/mano.svg) center/contain no-repeat;mask:url(brand/mano.svg) center/contain no-repeat}
#coach .pulse{position:absolute;left:37.6%;top:36.5%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 6px rgba(0,0,0,.4)}
#coach p{margin:0;text-align:center;font-size:15px;line-height:1.45;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.7)}
#coach.fade{opacity:0}
#coach.pose p{background:rgba(20,20,20,.6);backdrop-filter:blur(10px);padding:10px 16px;border-radius:14px;text-shadow:none}
#coach.pose .hand{opacity:.6}
.pulse{animation:pulse 1.6s ease-out infinite}
@keyframes pulse{0%{transform:scale(.6);opacity:1}100%{transform:scale(2.2);opacity:0}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

/* ---------- intro / cargando / foto ---------- */
#intro,#loading,#result{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:var(--bg)}
#intro .card{max-width:420px;padding:32px 28px;text-align:center;display:flex;flex-direction:column;gap:14px;align-items:center}
.introLogo{height:21px;width:auto;margin-bottom:6px}
#intro h1{font-weight:500;font-size:28px;margin:4px 0 0;line-height:1.2}
#intro h1 em{font-style:normal;font-family:var(--word);letter-spacing:.04em;font-weight:400}
#intro p{margin:0;color:var(--muted);font-size:15px;line-height:1.5}
.primary{background:var(--ink);color:#111;padding:14px 26px;border-radius:999px;font-weight:600;font-size:15px;transition:transform .15s}
.primary:active{transform:scale(.97)}
.primary.pulse2{animation:pulse2 1.1s ease-in-out infinite}
@keyframes pulse2{50%{transform:scale(1.05)}}
.primary.busy{opacity:.75;animation:busy 1.2s ease-in-out infinite}
@keyframes busy{50%{opacity:.45}}
.ghost{padding:14px 18px;border-radius:999px;border:1px solid var(--line);font-weight:500;font-size:15px;background:var(--glass2)}
.fine{font-size:12px !important;opacity:.7}
#qrWrap{margin-top:14px;display:flex;flex-direction:column;align-items:center;gap:10px}
#qr{background:#fff;padding:10px;border-radius:12px;line-height:0}
#qr svg,#qr img{width:150px;height:150px}

#loading{flex-direction:column;gap:16px;background:rgba(20,20,20,.86)}
.spin{width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;animation:spin .9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
#loading p{margin:0;color:var(--muted)}

#result{flex-direction:column;gap:16px;padding:calc(env(safe-area-inset-top) + 20px) 18px calc(env(safe-area-inset-bottom) + 20px)}
#shot{display:block;-webkit-touch-callout:default;-webkit-user-select:auto;user-select:auto;width:auto;height:auto;min-width:0;max-width:calc(100vw - 36px);max-height:70vh;border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
#result .actions{display:flex;gap:10px}
#resultHint{margin:0;color:var(--muted);font-size:12px;text-align:center}
.buy{color:var(--muted);font-size:14px;text-decoration:underline;text-underline-offset:4px}

#toast{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom) + 150px);transform:translateX(-50%);background:rgba(255,255,255,.92);color:#111;padding:10px 16px;border-radius:999px;font-size:13px;z-index:20;box-shadow:0 6px 24px rgba(0,0,0,.4)}

#flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:6}

/* acomodando el anillo */
#fitRing{position:absolute;width:80px;height:80px;border-radius:50%;border:1.5px dashed rgba(255,255,255,.85);pointer-events:none;z-index:4;
  transform:translate(-50%,-50%);animation:fitspin 2.4s linear infinite;box-shadow:0 0 14px rgba(0,0,0,.25)}
@keyframes fitspin{to{transform:translate(-50%,-50%) rotate(360deg)}}
#fitting{position:absolute;left:50%;top:calc(env(safe-area-inset-top) + 74px);transform:translateX(-50%);display:flex;align-items:center;gap:8px;
  background:var(--glass);backdrop-filter:blur(10px);color:#fff;font-size:13px;padding:8px 14px;border-radius:999px;z-index:5;pointer-events:none;transition:opacity .3s}
#fitting .dot{width:8px;height:8px;border-radius:50%;background:#fff;animation:fitpulse 1s ease-in-out infinite}
#fitting.done .dot{animation:none;background:#7ED99A}
@keyframes fitpulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}

@media (min-width:900px){ #intro .card{padding:40px} }

#diag{position:fixed;left:8px;top:calc(env(safe-area-inset-top) + 66px);z-index:50;background:rgba(0,0,0,.72);color:#9f9;font:11px/1.35 monospace;padding:6px 8px;border-radius:8px;white-space:pre-wrap;max-width:70vw;pointer-events:none}
