/* Nancy Salazar — Órdenes de trabajo (módulo aditivo, prefijo ot-) */
/* variables en :root para que los enganches en Pizarra/Pedidos/Clientes también las usen */
:root { --ot-ink: var(--dash-ink, #0a0a0a); --ot-line: var(--dash-line, rgba(10,10,10,.12)); --ot-muted: var(--dash-muted, #73737a);
  --ot-pearl: var(--dash-pearl, #f5f3f0); --ot-ivory: var(--dash-ivory, #f9f7f2); --ot-champ: var(--dash-champagne, #efe9df);
  --ot-pen: #16285c; --ot-warn: #8a5a2b; --ot-ok: #2f6b4f; }
.ot-eyebrow { font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; color: var(--ot-muted); margin: 0 0 .25rem; }
.ot-title { font-family: var(--dash-serif); font-weight: 500; font-size: 1.6rem; margin: 0; }
.ot-list-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.ot-list-actions { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.ot-list-actions .dash-save, .ot-list-actions .dash-reset { margin-top: 0; }
.ot-more { position: relative; }
.ot-more summary { list-style: none; margin-top: 0; display: inline-block; }
.ot-more summary::-webkit-details-marker { display: none; }
.ot-more-menu { position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; background: #fff; border: 1px solid var(--ot-line);
  box-shadow: 0 12px 30px rgba(0,0,0,.08); min-width: 230px; display: flex; flex-direction: column; }
.ot-more-menu button, .ot-more-menu label { appearance: none; border: 0; background: none; text-align: left; font: inherit; font-size: .8rem;
  padding: .7rem 1rem; cursor: pointer; color: var(--ot-ink); border-bottom: 1px solid var(--ot-line); }
.ot-more-menu button:hover, .ot-more-menu label:hover { background: var(--ot-pearl); }

/* Buscador */
.ot-search-box { position: relative; margin: .25rem 0 .75rem; }
.ot-search-ico { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--ot-muted); display: flex; }
#ot-search { width: 100%; font: inherit; font-size: 1.02rem; padding: 1rem 1rem 1rem 3rem; border: 1px solid var(--ot-ink);
  background: #fff; color: var(--ot-ink); border-radius: 0; box-shadow: 0 6px 18px rgba(0,0,0,.04); }
#ot-search:focus { outline: 2px solid var(--ot-ink); outline-offset: 0; }
.ot-filters { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; margin-bottom: 1rem; }
.ot-chip-f { appearance: none; border: 1px solid var(--ot-line); background: #fff; font: inherit; font-size: .72rem; letter-spacing: .06em;
  padding: .4rem .8rem; cursor: pointer; color: var(--ot-ink); border-radius: 999px; }
.ot-chip-f.is-on { background: var(--ot-ink); color: #fff; border-color: var(--ot-ink); }
.ot-filter-sep { width: 1px; height: 1.3rem; background: var(--ot-line); margin: 0 .35rem; }
.ot-count { margin-left: auto; font-size: .75rem; color: var(--ot-muted); }

/* Tarjetas */
.ot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: .9rem; }
.ot-card { appearance: none; text-align: left; font: inherit; color: inherit; cursor: pointer; background: #fff; border: 1px solid var(--ot-line);
  padding: 1rem 1.1rem 1.05rem; display: flex; flex-direction: column; gap: .3rem; transition: box-shadow .2s, transform .2s, border-color .2s; }
.ot-card:hover { box-shadow: 0 10px 26px rgba(0,0,0,.07); transform: translateY(-1px); border-color: rgba(10,10,10,.3); }
.ot-card.is-hit { border-color: var(--ot-ink); box-shadow: 0 0 0 2px var(--ot-ink) inset; }
.ot-card-top { display: flex; justify-content: space-between; align-items: center; gap: .5rem; margin-bottom: .2rem; }
.ot-card-code { font-family: "Cinzel", var(--dash-serif); font-size: 1.55rem; letter-spacing: .06em; line-height: 1; }
.ot-card-client { font-size: .95rem; }
.ot-card-prenda { font-size: .82rem; color: var(--ot-ink); }
.ot-card-tela { font-size: .75rem; color: var(--ot-muted); min-height: 1em; }
.ot-card-dates { display: flex; flex-wrap: wrap; gap: .25rem .8rem; font-size: .7rem; color: var(--ot-muted); margin-top: .35rem;
  padding-top: .5rem; border-top: 1px dashed var(--ot-line); }
.ot-card-dates b { color: var(--ot-ink); font-weight: 600; }
.ot-card-tags { display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; margin-top: .25rem; }
.ot-card-cel { font-size: .72rem; color: var(--ot-muted); margin-left: auto; }
.ot-card mark, .ot-card mark { background: #f1e3c8; color: inherit; padding: 0 .1em; }
.ot-tag { font-size: .6rem; letter-spacing: .1em; text-transform: uppercase; border: 1px solid var(--ot-line); padding: .12rem .4rem; background: var(--ot-pearl); }
.ot-tag-link { border-color: rgba(47,107,79,.35); color: var(--ot-ok); background: #f1f7f3; }
.ot-tag-demo { border-style: dashed; color: var(--ot-muted); }
.ot-status { display: inline-block; font-size: .62rem; letter-spacing: .06em; padding: .22rem .55rem; border-radius: 999px; border: 1px solid var(--ot-line);
  background: var(--ot-pearl); color: var(--ot-ink); white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.ot-status.is-proc { background: #fff; }
.ot-status.is-stage { background: var(--ot-champ); border-color: rgba(138,90,43,.25); }
.ot-status.is-ready { background: #f6ecd8; border-color: rgba(138,90,43,.45); }
.ot-status.is-done { background: var(--ot-ink); color: #fff; border-color: var(--ot-ink); }
.ot-empty { padding: 2rem; text-align: center; color: var(--ot-muted); background: #fff; border: 1px dashed var(--ot-line); grid-column: 1 / -1; }
.ot-muted { font-size: .78rem; color: var(--ot-muted); }
.ot-grow { flex: 1; }

/* Editor */
.ot-ed-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.ot-save-state { font-size: .7rem; letter-spacing: .08em; color: var(--ot-ok); opacity: .35; transition: opacity .3s; }
.ot-save-state.is-on { opacity: 1; }
.ot-ed-head { display: grid; grid-template-columns: auto 1fr; gap: .75rem 1.5rem; align-items: center; background: #fff; border: 1px solid var(--ot-line);
  padding: 1.1rem 1.3rem; margin-bottom: .75rem; }
.ot-ed-doc { display: flex; flex-direction: column; align-items: flex-start; gap: .35rem; }
.ot-ed-pill { background: var(--ot-ink); color: #fff; font-weight: 700; font-size: .72rem; letter-spacing: .14em; padding: .35rem .9rem; border-radius: 999px; }
.ot-ed-code { font-family: "Cinzel", var(--dash-serif); font-size: 2.9rem; line-height: .95; letter-spacing: .06em; }
.ot-ed-info { display: flex; flex-direction: column; gap: .2rem; align-items: flex-start; min-width: 0; }
.ot-ed-info strong { font-family: var(--dash-serif); font-size: 1.45rem; font-weight: 500; }
.ot-ed-info > span:not(.ot-status):not(.ot-tag) { font-size: .85rem; color: var(--ot-muted); }
.ot-ed-actions { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: .4rem; border-top: 1px solid var(--ot-line); padding-top: .75rem; }
.ot-sm.dash-save, .ot-sm.dash-reset, .dash-reset.ot-sm, .dash-save.ot-sm { margin-top: 0; padding: .55rem .9rem; font-size: .66rem; }
.ot-danger { color: #a33 !important; border-color: rgba(170,51,51,.3) !important; }

.ot-tabs { display: flex; gap: 0; overflow-x: auto; background: #fff; border: 1px solid var(--ot-line); border-bottom: 0; position: sticky; top: 0; z-index: 5; scrollbar-width: thin; }
.ot-tab { appearance: none; border: 0; border-right: 1px solid var(--ot-line); background: transparent; font: inherit; font-size: .74rem; letter-spacing: .05em;
  padding: .85rem 1rem; cursor: pointer; white-space: nowrap; color: var(--ot-muted); display: flex; align-items: center; gap: .45rem; border-bottom: 2px solid transparent; }
.ot-tab span { display: inline-grid; place-items: center; width: 1.35rem; height: 1.35rem; border-radius: 50%; border: 1px solid var(--ot-line); font-size: .65rem; }
.ot-tab.is-on { color: var(--ot-ink); border-bottom-color: var(--ot-ink); background: var(--ot-ivory); font-weight: 600; }
.ot-tab.is-on span { background: var(--ot-ink); color: #fff; border-color: var(--ot-ink); }
.ot-pane { background: #fff; border: 1px solid var(--ot-line); padding: 1.3rem; }
.ot-pane-nav { display: flex; justify-content: space-between; margin-top: .75rem; }

.ot-pane input[type=text], .ot-pane input[type=tel], .ot-pane input[type=date], .ot-pane input[type=time], .ot-pane textarea, .ot-pane select {
  font: inherit; font-size: .92rem; color: var(--ot-ink); border: 1px solid var(--ot-line); background: var(--ot-ivory); padding: .6rem .7rem; border-radius: 0; width: 100%; min-width: 0; }
.ot-pane input:focus, .ot-pane textarea:focus, .ot-pane select:focus { outline: 1px solid var(--ot-ink); border-color: var(--ot-ink); background: #fff; }
.ot-form-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .9rem 1rem; }
.ot-f { display: flex; flex-direction: column; gap: .35rem; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ot-muted); }
.ot-span2 { grid-column: span 2; }
.ot-span4 { grid-column: 1 / -1; }
.ot-label-s { font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ot-muted); margin: 0 0 .35rem; }
.ot-subh { font-family: var(--dash-serif); font-weight: 500; font-size: 1.1rem; margin: 1.3rem 0 .6rem; }

.ot-link-card, .ot-share-card { margin-top: 1.2rem; border: 1px solid var(--ot-line); background: var(--ot-pearl); padding: 1rem 1.1rem; }
.ot-link-card h4, .ot-share-card h4, .ot-cmp-wrap h4, .ot-cro-notes h4 { font-family: var(--dash-serif); font-weight: 500; font-size: 1.1rem; margin: 0 0 .6rem; }
.ot-link-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .8rem; padding: .55rem 0; border-top: 1px solid var(--ot-line); }
.ot-link-row:first-of-type { border-top: 0; }
.ot-link-label { font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ot-muted); min-width: 170px; }
.ot-link-row select { max-width: 320px; }
.ot-linked { font-size: .88rem; color: var(--ot-ok); font-weight: 500; }
.ot-others { margin-top: .9rem; display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.ot-code-chip, .ot-kchip { appearance: none; cursor: pointer; font: inherit; font-family: "Cinzel", var(--dash-serif); font-size: .74rem; letter-spacing: .06em;
  border: 1px solid var(--ot-ink); background: #fff; color: var(--ot-ink); padding: .2rem .55rem; }
.ot-code-chip:hover, .ot-kchip:hover { background: var(--ot-ink); color: #fff; }
.ot-kchips { display: flex; flex-wrap: wrap; gap: .25rem; margin-bottom: .35rem; }
.ot-kchips-inline { display: inline-flex; margin: 0 0 0 .5rem; vertical-align: middle; }
.ot-kchip { font-size: .62rem; padding: .1rem .4rem; background: var(--ot-ink); color: #fff; }
.ot-kchip:hover { background: #fff; color: var(--ot-ink); }
.ot-client-ots { margin: 1rem 0; }

/* Medidas — réplica de la hoja */
.ot-med-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem .9rem; margin-bottom: 1rem; }
.ot-toggle { display: inline-flex; border: 1px solid var(--ot-ink); }
.ot-toggle button { appearance: none; border: 0; background: #fff; font: inherit; font-size: .72rem; letter-spacing: .12em; text-transform: uppercase;
  padding: .55rem 1.1rem; cursor: pointer; color: var(--ot-ink); }
.ot-toggle button + button { border-left: 1px solid var(--ot-ink); }
.ot-toggle button.is-on { background: var(--ot-ink); color: #fff; }
.ot-mic { display: inline-flex; align-items: center; gap: .45rem; }
.ot-mic-dot { width: .6rem; height: .6rem; border-radius: 50%; background: #b33; display: inline-block; }
.ot-mic.is-rec { background: #fff2f2; border-color: #b33; }
.ot-mic.is-rec .ot-mic-dot { animation: ot-pulse 1s infinite; }
@keyframes ot-pulse { 50% { transform: scale(1.5); opacity: .5; } }
.ot-voice-help { font-size: .8rem; color: var(--ot-muted); background: var(--ot-pearl); border-left: 3px solid #b33; padding: .6rem .8rem; margin: -.3rem 0 1rem; }
#ot-voice-live { color: var(--ot-ink); font-weight: 600; margin-left: .4rem; }
.ot-sheet { display: grid; grid-template-columns: minmax(0, 520px); gap: 1.5rem; }
.ot-sheet.is-both { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ot-mcol { border: 3px double var(--ot-ink); background: #fff; }
.ot-mcol-h, .ot-msec-h { text-align: center; font-weight: 700; font-size: .78rem; letter-spacing: .1em; padding: .55rem; border-bottom: 1px solid var(--ot-ink); }
.ot-mcol-h { margin: 4px; border: 1.5px solid var(--ot-ink); }
.ot-msec-h { background: var(--ot-pearl); border-top: 1px solid var(--ot-ink); }
.ot-msec-h.is-first { margin: 0 4px 0; border: 1.5px solid var(--ot-ink); background: #fff; }
.ot-mrow { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); border-bottom: 1px solid var(--ot-line); }
.ot-mrow:last-child { border-bottom: 0; }
.ot-mrow label { font-size: .78rem; letter-spacing: .03em; padding: .5rem .7rem; display: flex; align-items: center; border-right: 1px solid var(--ot-line); cursor: text; }
.ot-mval { display: flex; align-items: center; gap: .3rem; padding: .22rem .45rem; }
.ot-pane .ot-mval input { border: 0; border-bottom: 1px dashed transparent; background: transparent; font-size: 1rem; font-weight: 600; color: var(--ot-pen);
  padding: .35rem .3rem; text-align: center; }
.ot-pane .ot-mval input:focus { background: #fffbe9; outline: 1px solid var(--ot-ink); }
.ot-mval-de input { width: 40%; }
.ot-de { font-size: .75rem; color: var(--ot-muted); }
.ot-unit { font-size: .66rem; color: var(--ot-muted); letter-spacing: .06em; }
.ot-pane input.is-warn { background: #fdf3e6 !important; box-shadow: inset 0 -2px 0 var(--ot-warn); }
.ot-flash { animation: ot-flash 1.3s ease; }
@keyframes ot-flash { 0% { background: #d8f0e0; } 100% { background: transparent; } }
.ot-hints { margin-top: 1rem; }
.ot-hints ul { margin: 0; padding: .7rem 1rem .7rem 2rem; background: #fdf6ec; border: 1px solid rgba(138,90,43,.25); font-size: .8rem; color: var(--ot-warn); }
.ot-hints li { margin: .15rem 0; }

/* Pruebas */
.ot-pruebas { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.ot-prueba { border: 1px solid var(--ot-line); padding: .9rem; background: var(--ot-ivory); display: flex; flex-direction: column; gap: .6rem; }
.ot-prueba header { display: flex; flex-direction: column; gap: .4rem; }
.ot-prueba h4 { margin: 0; font-size: .8rem; letter-spacing: .08em; text-decoration: underline; text-underline-offset: 3px; }
.ot-inline-f { display: flex; align-items: center; gap: .5rem; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ot-muted); }
.ot-adj-list { list-style: none; margin: 0 0 .5rem; padding: 0; display: flex; flex-direction: column; gap: .3rem; }
.ot-adj-list li { display: grid; grid-template-columns: 1fr auto 64px auto auto auto; gap: .3rem; align-items: center; font-size: .74rem; background: #fff; border: 1px solid var(--ot-line); padding: .25rem .4rem; }
.ot-adj-list em { font-style: normal; color: var(--ot-muted); }
.ot-pane .ot-adj-list input { padding: .3rem; text-align: center; font-weight: 600; color: var(--ot-pen); background: #fff; }
.ot-adj-add { display: grid; grid-template-columns: 1fr; gap: .35rem; }
.ot-delta { font-size: .7rem; font-weight: 700; padding: .05rem .35rem; border-radius: 999px; }
.ot-delta.is-down, .ot-cmp-down .ot-delta { background: #e7f0fb; color: #1d4f91; }
.ot-delta.is-up, .ot-cmp-up .ot-delta { background: #fbeee4; color: #9a4a17; }
.ot-x { appearance: none; border: 0; background: none; cursor: pointer; font-size: 1.1rem; line-height: 1; color: var(--ot-muted); padding: 0 .25rem; }
.ot-x:hover { color: #a33; }
.ot-cmp-wrap { margin-top: 1.3rem; }
.ot-cmp { width: 100%; border-collapse: collapse; font-size: .82rem; background: #fff; }
.ot-cmp th { font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ot-muted); text-align: left; padding: .55rem .6rem; border-bottom: 1px solid var(--ot-ink); }
.ot-cmp td { padding: .5rem .6rem; border-bottom: 1px solid var(--ot-line); }
.ot-cmp td small { display: block; font-size: .64rem; color: var(--ot-muted); }
.ot-cmp-same { color: var(--ot-muted); }
.ot-cmp-down { background: #f4f8fd; }
.ot-cmp-up { background: #fdf7f1; }

/* Croquis */
.ot-cro { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 1.3rem; }
.ot-cro-svg { background: linear-gradient(#fbfaf7, #f3f0ea); border: 1px solid var(--ot-line); padding: .6rem; cursor: crosshair; }
.ot-croquis-svg { width: 100%; height: auto; display: block; max-height: 640px; user-select: none; -webkit-user-select: none; touch-action: manipulation; }
.ot-fig-body, .ot-fig-arm { fill: #fff; stroke: #1a1a1a; stroke-width: 1.1; stroke-linejoin: round; }
.ot-fig-hair { fill: #3a3a3a; stroke: #1a1a1a; stroke-width: 1; }
.ot-fig-guide { fill: none; stroke: #9a9a9a; stroke-width: .7; stroke-dasharray: 3 3; }
.ot-fig-cap { font: 600 9px "Montserrat", sans-serif; letter-spacing: 2px; text-anchor: middle; fill: #777; }
.ot-pin { cursor: pointer; }
.ot-pin circle { fill: #0a0a0a; stroke: #fff; stroke-width: 1.6; }
.ot-pin text { fill: #fff; font: 700 9px "Montserrat", sans-serif; text-anchor: middle; pointer-events: none; }
.ot-pin.is-active circle { fill: #8a5a2b; }
.ot-pin-list { list-style: none; margin: 0 0 .6rem; padding: 0; display: flex; flex-direction: column; gap: .4rem; }
.ot-pin-list li { display: grid; grid-template-columns: auto auto 1fr auto; gap: .45rem; align-items: center; border: 1px solid var(--ot-line); padding: .35rem .45rem; background: var(--ot-ivory); }
.ot-pin-list li.is-active { border-color: var(--ot-ink); }
.ot-pin-n { display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: var(--ot-ink); color: #fff; font-size: .7rem; font-weight: 700; }
.ot-pin-view { font-size: .6rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ot-muted); }
.ot-pane .ot-pin-list input { padding: .4rem .5rem; background: #fff; }

/* Insumos */
.ot-ins-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0; border-top: 1px solid var(--ot-line); border-left: 1px solid var(--ot-line); }
.ot-ins { display: grid; grid-template-columns: 1fr 88px; align-items: center; border-right: 1px solid var(--ot-line); border-bottom: 1px solid var(--ot-line); }
.ot-ins span { font-size: .72rem; letter-spacing: .06em; padding: .45rem .6rem; }
.ot-pane .ot-ins input { border: 0; border-left: 1px solid var(--ot-line); background: transparent; text-align: center; font-weight: 600; color: var(--ot-pen); padding: .5rem .3rem; }
.ot-ins.has-val { background: #fbf8f1; }
.ot-extra { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .6rem; }
.ot-extra-row { display: grid; grid-template-columns: 1fr 120px auto; gap: .4rem; align-items: center; max-width: 520px; }
.ot-share-btns { display: flex; flex-wrap: wrap; gap: .45rem; margin-bottom: .5rem; }
.ot-share-card code { font-size: .72rem; word-break: break-all; background: #fff; padding: .15rem .35rem; }

@media (max-width: 1100px) {
  .ot-pruebas { grid-template-columns: 1fr; }
}
@media (max-width: 900px) {
  .ot-sheet.is-both { grid-template-columns: 1fr; }
  .ot-cro { grid-template-columns: 1fr; }
  .ot-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .ot-form-grid { grid-template-columns: 1fr; }
  .ot-span2 { grid-column: auto; }
  .ot-ed-head { grid-template-columns: 1fr; }
  .ot-ed-code { font-size: 2.3rem; }
  .ot-pane { padding: .9rem; }
  .ot-link-label { min-width: 0; width: 100%; }
}

/* Hoja imprimible */
#ot-print-sheet { display: none; }
@media print {
  body.ot-printing > *:not(#ot-print-sheet) { display: none !important; }
  body.ot-printing #ot-print-sheet { display: block !important; }
  body.ot-printing { background: #fff !important; }
  @page { size: A4; margin: 10mm; }
}
.ot-ps-page { font-family: Arial, Helvetica, sans-serif; color: #000; font-size: 10.5px; page-break-after: always; break-after: page; }
.ot-ps-page:last-child { page-break-after: auto; break-after: auto; }
.ot-ps-head { display: grid; grid-template-columns: auto 1fr auto; gap: 12px; align-items: center; margin-bottom: 8px; }
.ot-ps-fecha span { display: block; text-align: center; font-size: 12px; }
.ot-ps-fecha div { display: flex; gap: 4px; }
.ot-ps-fecha b { width: 30px; height: 26px; border: 1.2px solid #000; border-radius: 3px; display: grid; place-items: center; color: #16285c; }
.ot-ps-titlewrap { text-align: center; }
.ot-ps-title { display: inline-block; background: #000; color: #fff; font-weight: 800; font-size: 24px; padding: 4px 22px; border-radius: 12px; letter-spacing: 1px;
  -webkit-print-color-adjust: exact; print-color-adjust: exact; }
.ot-ps-dept { font-size: 10px; margin-top: 3px; }
.ot-ps-code { text-align: right; }
.ot-ps-code small { display: block; font-size: 8px; color: #666; text-transform: uppercase; }
.ot-ps-code strong { display: block; font-size: 26px; }
.ot-ps-code em { font-size: 8px; color: #666; }
.ot-ps-page h4 { font-size: 11px; text-decoration: underline; margin: 8px 0 4px; }
.ot-ps-line { display: flex; gap: 6px; align-items: flex-end; margin: 5px 0; }
.ot-ps-line span { white-space: nowrap; }
.ot-ps-line b { flex: 1; border-bottom: 1px solid #000; min-height: 14px; color: #16285c; padding-left: 4px; }
.ot-ps-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.ot-ps-table { width: 100%; border-collapse: collapse; border: 3px double #000; }
.ot-ps-table th, .ot-ps-table td { border: 1px solid #000; padding: 3px 5px; height: 18px; }
.ot-ps-table th { text-align: center; font-size: 10.5px; }
.ot-ps-boxed { border: 2px solid #000 !important; }
.ot-ps-val { text-align: center; color: #16285c; font-weight: 700; width: 40%; }
.ot-ps-de { color: #000; font-weight: 400; padding: 0 6px; }
.ot-ps-instr { min-height: 40px; border-bottom: 1px solid #000; color: #16285c; white-space: pre-wrap; margin: 0; }
.ot-ps-center { text-align: center; text-decoration: underline; font-size: 13px; }
.ot-ps-center small { float: right; text-decoration: none; }
.ot-ps-cols2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.ot-ps-prueba { min-height: 150px; }
.ot-ps-prueba h4 span { font-weight: 400; margin-left: 14px; text-decoration: none; }
.ot-ps-prueba p { min-height: 110px; margin: 0; color: #16285c; background: repeating-linear-gradient(transparent 0 18px, #000 18px 19px); line-height: 19px; }
.ot-ps-cols2 .ot-croquis-svg { max-height: 420px; }
.ot-ps-pins { font-size: 9.5px; color: #16285c; margin: 4px 0 0; padding-left: 16px; }
.ot-ps-ins { margin-top: 10px; }
.ot-ps-ins td { text-align: center; font-size: 9.5px; }
.ot-ps-brand { text-align: center; font-style: italic; color: #666; font-size: 9px; margin-top: 10px; }

/* Medidas: hoja + panel lateral */
.ot-med-layout { display: grid; grid-template-columns: minmax(0, 560px) minmax(220px, 1fr); gap: 1.5rem; align-items: start; }
.ot-med-layout.is-both { grid-template-columns: 1fr; }
.ot-med-layout.is-both .ot-med-side { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1rem; }
.ot-med-side { position: sticky; top: 3.6rem; display: flex; flex-direction: column; gap: 1rem; }
.ot-side-card { border: 1px solid var(--ot-line); background: var(--ot-pearl); padding: .9rem 1rem; }
.ot-tips ul { margin: 0; padding-left: 1.1rem; font-size: .78rem; color: var(--ot-muted); line-height: 1.5; }
.ot-tips b { color: var(--ot-ink); }
.ot-med-side .ot-hints { margin-top: 0; }
.ot-med-side .ot-hints:empty { display: none; }
.ot-prog-row { display: grid; grid-template-columns: 90px 1fr auto; gap: .5rem; align-items: center; font-size: .75rem; margin: .3rem 0; }
.ot-prog-bar { height: 5px; background: #fff; border: 1px solid var(--ot-line); position: relative; overflow: hidden; }
.ot-prog-bar i { position: absolute; left: 0; top: 0; bottom: 0; background: var(--ot-ink); }
@media (max-width: 900px) { .ot-med-layout { grid-template-columns: 1fr; } .ot-med-side { position: static; } }

/* Corrección segura: respetar el atributo hidden del acceso / panel (antes el login quedaba visible bajo el panel) */
.dash-gate[hidden], .dash[hidden] { display: none !important; }
.ot-ps-ins { table-layout: fixed; }
.ot-ps-ins .ot-ps-val { width: auto; }
.ot-ps-cols .ot-ps-table td { height: 21px; }
.ot-inline .dash-reset, .ot-inline .dash-save { margin-top: 0; }

.ot-live-fig { background:#f7f3ee; padding:.6rem; border:1px solid #e6ddd4; overflow:auto; max-height:70vh; }
.ot-live-fig .ot-croquis-svg { width:100%; max-width:420px; display:block; margin:0 auto; }
.ot-med-layout { display:grid; grid-template-columns: minmax(280px,1fr) minmax(200px,.7fr) minmax(200px,.7fr); gap:1rem; align-items:start; }
@media (max-width: 1100px) {
  .ot-med-layout { grid-template-columns: 1fr; }
}
.ot-dress-skirt, .ot-dress-bodice { fill: rgba(235,220,210,.72); stroke:#8a6a5c; stroke-width:1.2; }
.ot-dress-sleeve { fill: rgba(235,220,210,.55); stroke:#8a6a5c; stroke-width:1; }
.ot-dress-tulle { fill: rgba(255,255,255,.35); stroke:#c4b2a6; stroke-width:.8; }
.ot-dress-train { fill: rgba(235,220,210,.45); stroke:#8a6a5c; stroke-width:.8; }
.ot-dress-veil { fill: rgba(255,255,255,.4); stroke:#c4b2a6; stroke-width:.7; }
.ot-hot circle { fill:#111; stroke:#fff; stroke-width:1.5; cursor:pointer; }
.ot-hot text { font-size:9px; fill:#5a4a42; pointer-events:none; }
.ot-hot.is-on circle { fill:#9a4a3a; r:9; }
.ot-design-bar { display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:.8rem; }
.ot-design-bar .ot-f { min-width:140px; }

.ot-cro { display:grid; grid-template-columns: 1fr 280px; gap:1.2rem; align-items:start; }
.ot-design-bar { grid-column:1 / -1; display:flex; flex-wrap:wrap; gap:.65rem; background:#f7f1ea; padding:.75rem; border:1px solid #eadfd4; }
.ot-design-bar .ot-f { margin:0; font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; color:#7a6a60; }
.ot-design-bar select { display:block; margin-top:.25rem; min-width:132px; padding:.45rem .5rem; border:1px solid #e0d4c8; background:#fff; font-size:.85rem; text-transform:none; letter-spacing:0; }
.ot-cro-fig { background:linear-gradient(180deg,#fbf7f2,#f3ebe3); padding:1rem; border:1px solid #eadfd4; }
.ot-cro-svg svg { width:100%; height:auto; display:block; }
.ot-dress-skirt, .ot-dress-bodice { fill:url(#iv); stroke:#8d6e5d; stroke-width:1.1; }
.ot-dress-sleeve { fill:rgba(255,248,242,.7); stroke:#8d6e5d; stroke-width:.9; }
.ot-dress-tulle { fill:rgba(255,255,255,.38); stroke:#c9b6a8; stroke-width:.7; }
.ot-dress-train { fill:rgba(239,224,212,.55); stroke:#8d6e5d; stroke-width:.8; }
.ot-dress-veil { fill:rgba(255,255,255,.42); stroke:#d2c4b8; stroke-width:.6; }
.ot-dress-veil2 { fill:rgba(255,255,255,.22); }
.ot-dress-seam { fill:none; stroke:#c4a794; stroke-width:.5; stroke-dasharray:3 3; }
.ot-handle { cursor:grab; }
.ot-handle circle { fill:#fff; stroke:#111; stroke-width:1.4; }
.ot-handle-core { fill:#111 !important; stroke:none !important; }
.ot-handle text { font-size:8px; letter-spacing:.08em; text-transform:uppercase; fill:#6a5a50; pointer-events:none; }
@media (max-width: 900px) { .ot-cro { grid-template-columns:1fr; } }

.ot-3d-wrap { background: #f6f1ea; border: 1px solid #eadfd4; padding: .6rem; }
.ot-3d-wrap canvas { width: 100%; height: min(70vh, 560px); display: block; touch-action: none; background: #f6f1ea; }

.ot-3d-status { margin:0 0 .4rem; font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; color:#7a6a60; }
.ot-3d-wrap canvas { width:100% !important; height:520px !important; display:block; touch-action:none; }

.ot-stage {
  height: 560px;
  perspective: 1100px;
  background:
    radial-gradient(ellipse at 50% 80%, #fff 0%, #f3ece4 55%, #e8ddd2 100%);
  overflow: hidden;
  cursor: grab;
  touch-action: none;
}
.ot-stage:active { cursor: grabbing; }
.ot-rig {
  width: 280px; height: 520px;
  margin: 20px auto 0;
  position: relative;
  transform-style: preserve-3d;
  transform: rotateY(-18deg) rotateX(6deg);
}
.ot-fig, .ot-gown, .ot-veil {
  position: absolute; left: 50%; top: 0;
  transform-style: preserve-3d;
}
.ot-fig-front, .ot-fig-back {
  width: 120px; height: 500px; margin-left: -60px;
  background:
    radial-gradient(circle at 50% 7%, #f0d7c4 0 22px, transparent 23px),
    linear-gradient(#e7c8b0, #e7c8b0) 50% 58px / 22px 28px no-repeat,
    linear-gradient(#e4c3ab, #d9b49a) 50% 92px / 78px 120px no-repeat,
    linear-gradient(#e4c3ab, #d9b49a) 18% 110px / 18px 130px no-repeat,
    linear-gradient(#e4c3ab, #d9b49a) 82% 110px / 18px 130px no-repeat,
    linear-gradient(#e0bea6, #cda888) 38% 250px / 22px 210px no-repeat,
    linear-gradient(#e0bea6, #cda888) 62% 250px / 22px 210px no-repeat;
  filter: drop-shadow(0 12px 16px rgba(80,50,30,.12));
}
.ot-fig-back { transform: rotateY(180deg) translateZ(-1px); opacity: .92; }
.ot-fig-front { transform: translateZ(1px); }

.ot-gown-front, .ot-gown-back {
  width: 150px; margin-left: -75px; top: 96px; height: 380px;
  background: linear-gradient(180deg, #fff8f2 0%, #ead7c8 42%, #e2cbbc 100%);
  clip-path: polygon(28% 0, 72% 0, 86% 18%, 92% 100%, 8% 100%, 14% 18%);
  box-shadow: inset 0 0 0 1px rgba(120,80,60,.2);
}
.ot-gown-back { transform: rotateY(180deg) translateZ(-8px); opacity: .88; }
.ot-gown-front { transform: translateZ(8px); }

.ot-rig[data-corte="sirena"] .ot-gown-front,
.ot-rig[data-corte="sirena"] .ot-gown-back {
  clip-path: polygon(30% 0, 70% 0, 78% 16%, 62% 58%, 88% 100%, 12% 100%, 38% 58%, 22% 16%);
}
.ot-rig[data-corte="corteA"] .ot-gown-front,
.ot-rig[data-corte="corteA"] .ot-gown-back {
  clip-path: polygon(32% 0, 68% 0, 78% 16%, 98% 100%, 2% 100%, 22% 16%);
}
.ot-rig[data-corte="recto"] .ot-gown-front,
.ot-rig[data-corte="recto"] .ot-gown-back {
  clip-path: polygon(30% 0, 70% 0, 74% 16%, 76% 100%, 24% 100%, 26% 16%);
}
.ot-rig[data-escote="corazon"] .ot-gown-front {
  clip-path: polygon(28% 8%, 50% 16%, 72% 8%, 86% 20%, 92% 100%, 8% 100%, 14% 20%);
}
.ot-rig[data-cola="catedral"] .ot-gown-back,
.ot-rig[data-cola="capilla"] .ot-gown-back {
  height: 430px;
  clip-path: polygon(30% 0, 70% 0, 80% 18%, 96% 100%, 4% 100%, 20% 18%);
}
.ot-veil {
  display: none;
  width: 160px; height: 280px; margin-left: -20px; top: 18px;
  background: linear-gradient(180deg, rgba(255,255,255,.55), rgba(255,255,255,.08));
  clip-path: polygon(20% 0, 40% 0, 90% 100%, 10% 80%);
  transform: translateZ(16px) rotateY(-12deg);
}
.ot-rig[data-velo="corto"] .ot-veil,
.ot-rig[data-velo="largo"] .ot-veil { display: block; }
.ot-rig[data-velo="largo"] .ot-veil { height: 420px; }

.ot-stage { position: relative; }
.ot-floor {
  position: absolute; left: 10%; right: 10%; bottom: 28px; height: 70px;
  background: radial-gradient(ellipse at center, rgba(80,50,30,.12), transparent 70%);
  transform: rotateX(78deg);
}
.ot-rig {
  width: 240px; height: 520px; margin: 8px auto 0; position: relative;
  transform-style: preserve-3d;
}
.ot-card {
  position: absolute; inset: 0;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  background: transparent;
}
.ot-card-front { transform: translateZ(8px); }
.ot-card-back { transform: rotateY(180deg) translateZ(8px); }
.ot-vista-svg { width: 100%; height: 100%; display: block; }
.ot-vista-svg .ot-fig-body { fill: #f0d5c2; stroke: #5a4034; stroke-width: 1.2; }
.ot-vista-svg .ot-fig-arm { fill: #ebceb9; stroke: #5a4034; stroke-width: 1; }
.ot-vista-svg .ot-fig-hair { fill: #3a2a24; stroke: none; }
.ot-vista-svg .ot-fig-guide { fill: none; stroke: #c4a090; stroke-width: .4; stroke-dasharray: 2 3; }
.ot-vista-svg .ot-fig-cap { display: none; }
.ot-vista-svg .ot-hot { display: none; }
.ot-vista-svg .ot-handle { display: none; }

.ot-paper {
  position: absolute; inset: 0;
  background-image: url("assets/silueta-mujer.png");
  background-repeat: no-repeat;
  background-size: 215% auto;
  background-color: #f3efe8;
}
.ot-paper-front { background-position: 3% 6%; }
.ot-paper-back { background-position: 97% 6%; }
.ot-card { overflow: hidden; background: #f3efe8; }
.ot-card .ot-vista-svg {
  position: absolute;
  left: 21%;
  right: 21%;
  top: 7%;
  bottom: 3%;
  pointer-events: none;
  opacity: .78;
  mix-blend-mode: multiply;
}
.ot-cro-paper .ot-cro-svg {
  background: url("assets/silueta-mujer.png") center / contain no-repeat;
}
.ot-cro-paper .ot-croquis-svg { background: transparent; }

.ot-chips { display:flex; flex-wrap:wrap; align-items:center; gap:.35rem; width:100%; }
.ot-chips > span {
  min-width:4.2rem;
  font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:#7a6a60;
}
.ot-chip {
  border:1px solid #e0d4c8; background:#fff; padding:.35rem .65rem;
  font: inherit; font-size:.78rem; cursor:pointer;
}
.ot-chip.is-on { background:#111; color:#fff; border-color:#111; }


/* Dictado por voz — barra + estado */
.ot-voice-bar { margin: -.2rem 0 1rem; }
.ot-voice-type { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .45rem; }
.ot-voice-input { flex: 1 1 220px; min-width: 180px; padding: .55rem .7rem; border: 1px solid var(--ot-line, #ccc); border-radius: 6px; font: inherit; }
.ot-voice-status { margin: .45rem 0 0; font-size: .8rem; color: var(--ot-muted, #666); }
.ot-voice-status.is-ok { color: #1a7a3c; }
.ot-voice-status.is-bad { color: #a32020; }
.ot-voice-warn { color: #a32020; font-weight: 600; }
.ot-voice-live { color: var(--ot-ink, #111); font-weight: 600; }


/* Rayado a mano + barra de herramientas croquis */
.ot-draw-bar {
  display: flex; flex-wrap: wrap; gap: .45rem; align-items: center;
  margin: 0 0 .75rem; padding: .55rem .65rem;
  background: #f7f1ea; border: 1px solid #eadfd4; border-radius: 8px;
}
.ot-draw-label {
  font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: #7a6a60; margin-right: .25rem;
}
.ot-draw-btn {
  border: 1px solid #d9cbbf; background: #fff; color: #3a2f2a;
  padding: .4rem .7rem; border-radius: 999px; font-size: .82rem; cursor: pointer;
}
.ot-draw-btn.is-on {
  background: #3a2f2a; color: #fff; border-color: #3a2f2a;
}
.ot-stroke {
  fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round;
  pointer-events: stroke; opacity: .92;
}
.ot-stroke.is-live { opacity: .75; }
.ot-cro-svg.is-rayar, .ot-cro-svg:has(+ *) { }
.ot-3d-bar { margin-bottom: .6rem; }
.ot-3d-wrap .ot-vista-svg { width: 100%; height: 100%; display: block; }


/* —— Croquis atelier polish —— */
.ot-cro-atelier {
  background:
    radial-gradient(ellipse at 30% 20%, #fffaf5 0%, transparent 55%),
    linear-gradient(180deg, #f7efe6 0%, #efe4d8 100%);
  border: 1px solid #e2d3c4;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.5);
}
.ot-cro-atelier .ot-croquis-svg {
  filter: drop-shadow(0 8px 18px rgba(90,60,40,.08));
}
.ot-fig-body, .ot-fig-arm {
  fill: #f3dccb !important;
  stroke: #5a4034 !important;
  stroke-width: 1.15 !important;
}
.ot-fig-guide { stroke: rgba(90,64,52,.28) !important; }
.ot-dress-skirt, .ot-dress-bodice {
  fill: #efe0d2 !important;
  stroke: #7a5646 !important;
  stroke-width: 1.35 !important;
}
.ot-dress-sleeve { fill: rgba(255,248,242,.85) !important; stroke: #7a5646 !important; }
.ot-dress-train { fill: rgba(236,220,208,.75) !important; }
.ot-dress-veil, .ot-dress-tulle { fill: rgba(255,255,255,.55) !important; }
.ot-dress-seam { stroke: #a88878 !important; stroke-width: .7 !important; }
.ot-stroke {
  fill: none !important;
  stroke-linecap: round;
  stroke-linejoin: round;
  opacity: .95;
}
.ot-draw-ink { margin-top: .4rem; }
.ot-ink {
  width: 22px; height: 22px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 0 0 1px #cbb8aa;
  background: var(--ink, #2a2220); cursor: pointer; padding: 0;
}
.ot-ink.is-on { box-shadow: 0 0 0 2px #2a2220; }

/* Maniquí */
.ot-stage {
  background:
    radial-gradient(ellipse at 50% 30%, #fff9f3 0%, #e8ddd2 55%, #d9cfc4 100%) !important;
  min-height: 520px;
  border-radius: 12px;
}
.ot-man-body, .ot-man-arm {
  fill: #e8c4ae;
  stroke: #6a4a3c;
  stroke-width: 1.2;
}
.ot-card {
  background: rgba(255,255,255,.12) !important;
  border: 1px solid rgba(255,255,255,.25);
  backdrop-filter: blur(2px);
  box-shadow: 0 18px 40px rgba(60,40,30,.18);
}
.ot-vista-svg { width: 100%; height: 100%; }
.ot-3d-status { font-weight: 600; color: #5a463c !important; }


/* Siluetas PNG reales (Nancy) */
.ot-sil-img { pointer-events: none; opacity: 0.98; }
.ot-sil-img-3d { pointer-events: none; opacity: 0.95; filter: drop-shadow(0 0 12px rgba(255,255,255,.15)); }
.ot-croquis-svg { background: #f6efe7; border-radius: 10px; }
.ot-dress-wrap .ot-dress-skirt,
.ot-dress-wrap .ot-dress-bodice {
  fill: rgba(255, 248, 242, 0.78) !important;
  stroke: #6a4a3c !important;
  stroke-width: 1.4 !important;
}
.ot-dress-back { mix-blend-mode: multiply; }
.ot-cro-atelier {
  background:
    radial-gradient(ellipse at 50% 0%, #fffdf9 0%, #f3e8dc 70%) !important;
  padding: 1rem !important;
}
.ot-stage {
  background:
    radial-gradient(ellipse at 50% 35%, #3a322c 0%, #1a1614 70%) !important;
}
.ot-3d-status { color: #e8dcd0 !important; }
.ot-card {
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}
.ot-paper-front, .ot-paper-back { display: none !important; }
.ot-vista-svg { filter: drop-shadow(0 12px 28px rgba(0,0,0,.45)); }


/* Vestido / velo pro (2026-09-28) */
.ot-dress-skirt, .ot-dress-bodice {
  fill: url(#iv) rgba(255,248,242,.88);
  stroke: #7a5646;
  stroke-width: 1.15;
  stroke-linejoin: round;
}
.ot-dress-sleeve {
  fill: rgba(255,248,242,.78);
  stroke: #7a5646;
  stroke-width: .95;
}
.ot-dress-tulle {
  fill: rgba(255,255,255,.32);
  stroke: #d0c0b4;
  stroke-width: .6;
}
.ot-dress-train {
  fill: rgba(242,228,216,.7);
  stroke: #8a6a5c;
  stroke-width: .85;
}
.ot-dress-veil {
  fill: rgba(255,255,255,.38);
  stroke: none;
  pointer-events: none;
}
.ot-dress-veil-back {
  fill: rgba(255,255,255,.22);
  mix-blend-mode: soft-light;
}
.ot-dress-veil-edge {
  fill: none;
  stroke: rgba(255,255,255,.55);
  stroke-width: 1.1;
  stroke-linecap: round;
}
.ot-dress-comb {
  fill: #f5ebe3;
  stroke: #c4a794;
  stroke-width: .8;
}
.ot-dress-fold {
  fill: none;
  stroke: rgba(120,80,60,.28);
  stroke-width: .7;
  stroke-linecap: round;
}
.ot-dress-fold-soft {
  stroke: rgba(120,80,60,.18);
  stroke-dasharray: 2 4;
}
.ot-dress-shine {
  opacity: .35;
  pointer-events: none;
  mix-blend-mode: soft-light;
}
.ot-dress-lace {
  fill: none;
  stroke: #c9a990;
  stroke-width: 1.35;
  stroke-linecap: round;
}
.ot-dress-seam {
  fill: none;
  stroke: rgba(140,100,80,.35);
  stroke-width: .55;
}
.ot-dress-wrap .ot-dress-skirt,
.ot-dress-wrap .ot-dress-bodice {
  fill: rgba(255, 250, 245, 0.86) !important;
  stroke: #6e4c3c !important;
  stroke-width: 1.2 !important;
}
.ot-dress-back {
  mix-blend-mode: multiply;
  opacity: 0.92;
}
.ot-vista-svg .ot-dress-veil,
.ot-croquis-svg .ot-dress-veil {
  fill: rgba(255,255,255,.4) !important;
}
.ot-vista-svg .ot-dress-veil-edge {
  stroke: rgba(255,255,255,.65) !important;
}


/* ═════════ Croquis v2 (2026-09-30) — papel de atelier, herramientas con íconos, etiquetas en columna ═════════ */
.ot-cro { grid-template-columns: minmax(0, 1fr) minmax(250px, 340px); align-items: start; }
.ot-cro-main { min-width: 0; }
.ot-cro-paper .ot-cro-svg { background: none; }
.ot-cro-atelier { background: #fbf6ee !important; padding: .6rem !important; border-radius: 12px; box-shadow: 0 1px 0 rgba(255,255,255,.8) inset, 0 8px 24px rgba(90,60,40,.07); }
.ot-cro-hint { margin: 0 0 .45rem; font-size: .78rem; }
.ot-cro-svg { padding: 0; border: 0; background: none; cursor: crosshair; touch-action: none; }
.ot-cro-svg.is-rayar { cursor: crosshair; }
.ot-cro-svg.is-mover { cursor: grab; }
.ot-cro-svg.is-borrar { cursor: pointer; }
.ot-cro-svg .ot-croquis-svg { max-height: 78vh; border-radius: 10px; background: #faf5ec; filter: none; touch-action: none; }
.ot-sil-img { opacity: .9; }
.ot-baseline { stroke: #cdbba4; stroke-width: .5; stroke-dasharray: 2 3; }
.ot-cro-atelier .ot-fig-cap, .ot-croquis-svg .ot-fig-cap { font: 600 7.5px "Montserrat", sans-serif; letter-spacing: 2.4px; fill: #a08d7a; }

/* Vestido: líneas finas y sombreado sutil */
.ot-dr-skirt, .ot-dr-bodice, .ot-dr-sleeve, .ot-dr-train, .ot-dr-leg { stroke: #8f7360; stroke-width: .55; stroke-linejoin: round; }
.ot-dr-train { opacity: .93; stroke-width: .45; }
.ot-dr-shade { pointer-events: none; }
.ot-dr-fold { fill: none; stroke: rgba(122,90,70,.26); stroke-width: .35; stroke-linecap: round; }
.ot-dr-fold-soft { stroke: rgba(122,90,70,.16); stroke-dasharray: none; }
.ot-dr-shine { fill: #fff; opacity: .55; pointer-events: none; }
.ot-dr-trim { fill: none; stroke: #b48f76; stroke-width: .8; stroke-linecap: round; stroke-linejoin: round; }
.ot-dr-trim2 { fill: #f6ede2; stroke: #b48f76; stroke-width: .4; }
.ot-dr-seam { fill: none; stroke: rgba(140,100,80,.32); stroke-width: .3; }
.ot-dr-waist { fill: none; stroke: rgba(122,90,70,.4); stroke-width: .5; }
.ot-dr-btn { fill: #f5ece2; stroke: #b48f76; stroke-width: .25; }
.ot-dr-tulle { fill: rgba(255,255,255,.4); stroke: rgba(160,135,115,.5); stroke-width: .3; }
.ot-dr-tulle-net { pointer-events: none; }
.ot-dr-veil { fill: rgba(255,255,255,.55); stroke: rgba(160,135,115,.35); stroke-width: .3; pointer-events: none; }
.ot-dr-veil-net { pointer-events: none; }
.ot-dr-veil-edge { fill: none; stroke: rgba(170,140,120,.55); stroke-width: .6; stroke-linecap: round; pointer-events: none; }
.ot-dr-comb { fill: #f5ebe0; stroke: #b48f76; stroke-width: .4; }
.ot-dress { pointer-events: none; }
.ot-dress .ot-handle { pointer-events: all; }

/* Etiquetas de medidas: columna a cada lado con líneas guía finas */
.ot-croquis-svg .ot-hot { cursor: pointer; }
.ot-croquis-svg .ot-hot .ot-hot-line { stroke: #b9a48f; stroke-width: .5; fill: none; }
.ot-croquis-svg .ot-hot circle.ot-hot-dot { fill: #8a6a52; stroke: #fff; stroke-width: .8; r: 2.2; }
.ot-croquis-svg .ot-hot .ot-hot-pill { fill: #fff; stroke: #d9c9b6; stroke-width: .6; }
.ot-croquis-svg .ot-hot text { font: 600 7.4px "Montserrat", sans-serif; fill: #6b5646; text-anchor: middle; letter-spacing: .3px; pointer-events: none; }
.ot-croquis-svg .ot-hot:hover .ot-hot-pill { stroke: #8a6a52; }
.ot-croquis-svg .ot-hot.is-on .ot-hot-pill { fill: #3a2f2a; stroke: #3a2f2a; }
.ot-croquis-svg .ot-hot.is-on text { fill: #fff; }
.ot-croquis-svg .ot-hot.is-on .ot-hot-line { stroke: #3a2f2a; }
.ot-croquis-svg .ot-hot.is-on circle.ot-hot-dot { fill: #3a2f2a; r: 2.6; }
.ot-live-fig .ot-croquis-svg { max-width: 460px; }

/* Pines pequeños y claros */
.ot-croquis-svg .ot-pin { cursor: pointer; }
.ot-croquis-svg .ot-pin circle.ot-pin-dot { fill: #3a2f2a; stroke: #fff; stroke-width: 1.1; filter: drop-shadow(0 .6px 1px rgba(60,40,30,.35)); }
.ot-croquis-svg .ot-pin text { fill: #fff; font: 700 5.6px "Montserrat", sans-serif; text-anchor: middle; pointer-events: none; }
.ot-croquis-svg .ot-pin.is-active circle.ot-pin-dot { fill: #9a4a3a; }
.ot-croquis-svg .ot-pin-hit { fill: transparent !important; stroke: none !important; filter: none !important; }

/* Asas de ajuste del vestido: pequeñas, con etiqueta suave */
.ot-croquis-svg .ot-handle circle { fill: #fff; stroke: #8a6a52; stroke-width: 1; }
.ot-croquis-svg .ot-handle .ot-handle-core { fill: #8a6a52 !important; stroke: none !important; }
.ot-croquis-svg .ot-handle .ot-handle-hit { fill: transparent; stroke: none; }
.ot-croquis-svg .ot-handle text { font: 600 5.8px "Montserrat", sans-serif; letter-spacing: .6px; text-transform: uppercase; fill: #8a7565; paint-order: stroke; stroke: #faf5ec; stroke-width: 1.6px; }
.ot-stroke { stroke-width: 1.6; }

/* Barra de herramientas con íconos */
.ot-toolbar { display: flex; flex-wrap: wrap; gap: .5rem .9rem; align-items: center; margin: 0 0 .6rem; padding: .45rem .55rem; background: #f7f1ea; border: 1px solid #eadfd4; border-radius: 12px; }
.ot-tg { display: flex; align-items: center; gap: .25rem; padding-right: .9rem; border-right: 1px solid #e3d6c8; }
.ot-tg:last-child { border-right: 0; padding-right: 0; }
.ot-tb { appearance: none; display: inline-flex; align-items: center; gap: .35rem; border: 1px solid transparent; background: transparent; color: #3a2f2a; padding: .38rem .55rem; border-radius: 9px; font: inherit; font-size: .76rem; cursor: pointer; min-height: 36px; }
.ot-tb svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.ot-tb em { font-style: normal; }
.ot-tb:hover:not(:disabled) { background: #fff; border-color: #ddcfbf; }
.ot-tb.is-on { background: #3a2f2a; color: #fff; }
.ot-tb:disabled { opacity: .35; cursor: default; }
.ot-tg-ink { gap: .35rem; }
.ot-tg-ink .ot-ink { width: 20px; height: 20px; }
.ot-sw { appearance: none; width: 30px; height: 30px; border-radius: 8px; border: 1px solid #ddcfbf; background: #fff; display: inline-grid; place-items: center; padding: 0; cursor: pointer; }
.ot-sw i { display: block; width: 16px; background: #3a2f2a; border-radius: 2px; }
.ot-sw.is-on { border-color: #3a2f2a; box-shadow: 0 0 0 1px #3a2f2a; }
.ot-zoom-n { font-size: .72rem; color: #7a6a60; min-width: 2.6em; text-align: center; }

/* Notas: multilínea, sin cortes */
.ot-cro-notes { min-width: 0; }
.ot-pin-list li { grid-template-columns: auto 1fr auto; grid-template-areas: "n v x" "t t t"; align-items: center; row-gap: .35rem; padding: .5rem .55rem; border-radius: 10px; background: #fff; }
.ot-pin-list li .ot-pin-n { grid-area: n; width: 1.35rem; height: 1.35rem; font-size: .66rem; background: #3a2f2a; }
.ot-pin-list li .ot-pin-view { grid-area: v; }
.ot-pin-list li .ot-x { grid-area: x; display: inline-grid; place-items: center; width: 30px; height: 30px; border: 1px solid #e3d6c8; background: #fff; border-radius: 8px; cursor: pointer; padding: 0; color: #8a4a3a; }
.ot-pin-list li .ot-x svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.ot-pin-list li .ot-x:hover { background: #f8e9e4; }
.ot-pin-list li textarea { grid-area: t; width: 100%; box-sizing: border-box; resize: vertical; min-height: 3.2em; line-height: 1.35; font: inherit; font-size: .85rem; padding: .45rem .55rem; border: 1px solid #e0d4c8; border-radius: 8px; background: #fffdf9; white-space: pre-wrap; overflow-wrap: anywhere; }
.ot-pin-list li.is-active { border-color: #3a2f2a; box-shadow: 0 0 0 1px #3a2f2a inset; }

@media (max-width: 900px) {
  .ot-cro { grid-template-columns: minmax(0, 1fr); }
  .ot-toolbar { gap: .4rem .5rem; }
  .ot-tg { padding-right: .5rem; }
  .ot-tb { padding: .4rem .5rem; }
  .ot-tb em { display: none; }
  .ot-cro-svg .ot-croquis-svg { max-height: none; }
}

/* ═════════ Maniquí 3D v2 (three.js) — escena de estudio ═════════ */
.ot-3d-wrap { background: #f6f1ea; border: 1px solid #eadfd4; padding: .7rem; border-radius: 14px; }
.ot-3d-status { margin: 0 0 .5rem; font-size: .74rem; letter-spacing: .06em; text-transform: none; color: #6b5646 !important; font-weight: 500; min-height: 1.2em; }
.ot-3d-tools { margin-bottom: .5rem; }
.ot-3d-tools .ot-tg-fab { gap: .25rem; flex-wrap: wrap; }
.ot-tb-txt { padding: .38rem .7rem; }
.ot-tb-cta { background: #3a2f2a; color: #fff; }
.ot-tb-cta:hover:not(:disabled) { background: #55463d; color: #fff; border-color: #55463d; }
.ot-3d-tools .ot-tb em { display: inline; }
.ot-stage {
  position: relative; height: clamp(440px, 68vh, 640px); min-height: 0; overflow: hidden; border-radius: 14px; perspective: none;
  background:
    radial-gradient(ellipse 70% 55% at 50% 36%, #fffdf8 0%, rgba(255,253,248,0) 70%),
    linear-gradient(180deg, #f8f3ea 0%, #efe6d9 62%, #e2d6c6 100%) !important;
  box-shadow: inset 0 0 0 1px rgba(120,95,70,.12), inset 0 -40px 60px rgba(150,120,90,.10);
  cursor: grab; touch-action: none;
}
.ot-stage:active { cursor: grabbing; }
.ot-stage canvas.ot-canvas3d { position: absolute; inset: 0; width: 100% !important; height: 100% !important; display: block; touch-action: none; background: transparent; outline: none; }
.ot-3d-badge { position: absolute; left: 12px; bottom: 10px; font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; color: var(--ot-fg, rgba(90,70,56,.6)); pointer-events: none; }
.ot-3d-fallback { position: absolute; inset: 0; display: flex; justify-content: center; padding: 8px; }
.ot-3d-fallback[hidden] { display: none; }
.ot-3d-fallback .ot-vista-svg { height: 100%; width: auto; max-width: 100%; filter: none; }
.ot-stage.is-fallback .ot-3d-badge { display: none; }
@media (max-width: 900px) {
  .ot-stage { height: clamp(420px, 66vh, 560px); }
  .ot-3d-tools .ot-tb em { display: inline; }
  .ot-3d-tools .ot-tb { padding: .4rem .55rem; }
}

/* ───────── Fase 2 · Catálogo de modelos (nc-) e imagen con IA (ia-) ───────── */
.nc-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.nc-help { font-size: .82rem; color: var(--ot-muted); margin: .3rem 0; line-height: 1.5; }
.nc-err, .ia-err { color: #8c2f2f; background: #fbeeee; border: 1px solid #ecc9c9; padding: .6rem .8rem; font-size: .84rem; margin: .6rem 0; }
.nc-none { padding: 1rem; background: #fff; border: 1px dashed var(--ot-line); font-size: .86rem; color: var(--ot-muted); }
.nc-link { appearance: none; background: none; border: 0; padding: .35rem .2rem; font: inherit; font-size: .78rem; text-decoration: underline; cursor: pointer; color: var(--ot-ink); min-height: 32px; }
.nc-danger { color: #8c2f2f; }
.nc-search { display: flex; flex-wrap: wrap; gap: .5rem; margin: .4rem 0 .8rem; }
.nc-search input { flex: 1 1 240px; font: inherit; font-size: .95rem; padding: .7rem .9rem; border: 1px solid var(--ot-ink); background: #fff; border-radius: 0; }
.nc-filters { display: grid; gap: .5rem; margin-bottom: 1rem; }
.nc-fgroup { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.nc-fgroup > span { min-width: 4.2rem; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--ot-muted); }
.nc-fchip { appearance: none; border: 1px solid var(--ot-line); background: #fff; font: inherit; font-size: .76rem; padding: .45rem .85rem; min-height: 38px; border-radius: 999px; cursor: pointer; color: var(--ot-ink); }
.nc-fchip.is-on { background: var(--ot-ink); color: #fff; border-color: var(--ot-ink); }
.nc-fchip:focus-visible, .nc-pic:focus-visible, .nc-fav:focus-visible, .nc-link:focus-visible, .ia-thumb:focus-visible, .ia-pic:focus-visible { outline: 2px solid #b79c6b; outline-offset: 2px; }
.nc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 1rem; }
.nc-card { margin: 0; background: #fff; border: 1px solid var(--ot-line); display: flex; flex-direction: column; }
.nc-pic { appearance: none; border: 0; padding: 0; margin: 0; background: #efe9df; cursor: zoom-in; display: block; width: 100%; }
.nc-pic img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.nc-card figcaption { padding: .7rem .8rem .8rem; display: grid; gap: .35rem; font-size: .84rem; }
.nc-card figcaption small { color: var(--ot-muted); font-size: .76rem; line-height: 1.4; }
.nc-tags { display: flex; flex-wrap: wrap; gap: .25rem; }
.nc-tag { font-style: normal; font-size: .64rem; letter-spacing: .05em; padding: .18rem .5rem; border-radius: 999px; background: var(--ot-champ); color: #4a3d33; }
.nc-tag--none { background: transparent; border: 1px dashed var(--ot-line); color: var(--ot-muted); }
.nc-acts { display: flex; gap: .8rem; }
.nc-empty { max-width: 560px; margin: 1.5rem auto; text-align: center; padding: 2rem 1.4rem; background: #fff; border: 1px dashed #cdbfae; }
.nc-empty h3 { font-family: var(--dash-serif); font-weight: 500; font-size: 1.6rem; margin: .4rem 0; }
.nc-empty p { font-size: .9rem; color: #5b5048; line-height: 1.55; }
.nc-empty ol { text-align: left; font-size: .86rem; line-height: 1.6; color: #5b5048; margin: .8rem auto 1.2rem; max-width: 420px; padding-left: 1.2rem; }
.nc-empty-ico svg { width: 56px; height: 56px; fill: none; stroke: #b79c6b; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
/* bloque dentro de «Maniquí 3D» */
.nc-host { margin-top: .8rem; }
.nc-suggest { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; justify-content: space-between; background: #fff; border: 1px solid #eadfd4; padding: .7rem .9rem; }
.nc-suggest > div { display: grid; font-size: .86rem; }
.nc-suggest > div span { color: var(--ot-muted); font-size: .76rem; }
.nc-sbtn { min-height: 44px; }
.nc-pane { background: #fff; border: 1px solid #eadfd4; border-top: 0; padding: .8rem .9rem; }
.nc-chk { display: flex; gap: .5rem; align-items: center; font-size: .8rem; margin-bottom: .6rem; min-height: 32px; }
.nc-strip { display: flex; gap: .8rem; overflow-x: auto; padding-bottom: .5rem; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
.nc-mini { flex: 0 0 172px; margin: 0; border: 1px solid var(--ot-line); scroll-snap-align: start; background: #fff; display: flex; flex-direction: column; }
.nc-mini.is-fav { border-color: #b79c6b; box-shadow: 0 0 0 2px rgba(183,156,107,.35); }
.nc-mini figcaption { padding: .5rem; display: grid; gap: .3rem; font-size: .76rem; }
.nc-mini small { color: var(--ot-muted); font-size: .68rem; }
.nc-fav { appearance: none; border: 1px solid var(--ot-line); background: #fff; font: inherit; font-size: .72rem; padding: .5rem .4rem; min-height: 44px; cursor: pointer; line-height: 1.25; }
.nc-fav.is-on { background: #b79c6b; color: #fff; border-color: #b79c6b; }
.nc-msg { font-size: .8rem; color: #5a463c; min-height: 1.1em; margin: .4rem 0 0; }
/* modal */
.nc-modal { position: fixed; inset: 0; z-index: 900; background: rgba(10,10,10,.55); display: flex; align-items: flex-start; justify-content: center; padding: 4vh .8rem; overflow-y: auto; }
.nc-dialog { background: #fff; width: min(620px, 100%); padding: 1.1rem 1.2rem 1.3rem; box-shadow: 0 24px 60px rgba(0,0,0,.25); }
.nc-dialog header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .6rem; }
.nc-dialog h3 { font-family: var(--dash-serif); font-weight: 500; font-size: 1.5rem; margin: 0; }
.nc-x { appearance: none; border: 0; background: none; font-size: 1.8rem; line-height: 1; cursor: pointer; width: 44px; height: 44px; }
.nc-lock { overflow: hidden; }
.nc-drop { display: grid; gap: .2rem; place-items: center; text-align: center; border: 2px dashed #cdbfae; padding: 1.2rem; cursor: pointer; background: #faf7f2; font-size: .9rem; }
.nc-drop.is-over { border-color: #b79c6b; background: #f3ece1; }
.nc-drop input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.nc-drop:focus-within { outline: 2px solid #b79c6b; }
.nc-drop small { color: var(--ot-muted); }
.nc-prev { display: flex; flex-wrap: wrap; gap: .4rem; margin: .6rem 0; }
.nc-prev img { width: 64px; height: 80px; object-fit: cover; border: 1px solid var(--ot-line); }
.nc-f { display: grid; gap: .25rem; font-size: .78rem; margin: .6rem 0; }
.nc-f input, .nc-f textarea { font: inherit; font-size: .95rem; padding: .6rem .7rem; border: 1px solid var(--ot-line); background: #fff; border-radius: 0; }
.nc-picks { display: grid; gap: .4rem; }
.nc-fs { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .3rem; align-items: center; }
.nc-fs legend { float: left; min-width: 4.2rem; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--ot-muted); padding: 0; margin-right: .3rem; }
.nc-pick { position: relative; }
.nc-pick input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.nc-pick span { display: inline-block; border: 1px solid var(--ot-line); border-radius: 999px; padding: .42rem .8rem; font-size: .76rem; cursor: pointer; background: #fff; min-height: 36px; line-height: 1.5; }
.nc-pick.is-on span { background: var(--ot-ink); color: #fff; border-color: var(--ot-ink); }
.nc-pick input:focus-visible + span { outline: 2px solid #b79c6b; outline-offset: 2px; }
.nc-row { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: .9rem; align-items: center; }
.nc-edit-pic img { width: 100%; max-height: 260px; object-fit: contain; background: #efe9df; }
.nc-toast { position: fixed; left: 50%; bottom: 22px; transform: translate(-50%, 20px); background: #111; color: #fff; padding: .7rem 1.1rem; font-size: .84rem; z-index: 1200; opacity: 0; pointer-events: none; transition: .25s; max-width: min(92vw, 520px); text-align: center; }
.nc-toast.is-on { opacity: 1; transform: translate(-50%, 0); }
.nc-lb-cap { position: absolute; z-index: 1; left: 0; right: 0; top: max(16px, env(safe-area-inset-top)); margin: 0; text-align: center; color: rgba(244,230,198,.9); font: 400 .8rem var(--pr-sans, sans-serif); padding: 0 4.5rem; pointer-events: none; }
/* Imagen con IA */
.ia-host[hidden] { display: none; }
.ia-box { margin-top: .8rem; background: #fff; border: 1px solid #eadfd4; padding: .8rem .9rem 1rem; }
.ia-head { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: space-between; align-items: center; }
.ia-head > div { display: grid; font-size: .92rem; }
.ia-head em { font-style: normal; font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: #8a5a2b; margin-left: .3rem; }
.ia-head span { color: var(--ot-muted); font-size: .78rem; }
.ia-sm { padding: .55rem .9rem !important; min-height: 44px; display: inline-flex; align-items: center; margin-top: 0 !important; text-decoration: none; }
.ia-sum { font-size: .82rem; margin: .7rem 0 .4rem; line-height: 1.5; }
.ia-f { display: grid; gap: .25rem; font-size: .78rem; margin: .6rem 0; }
.ia-f input, .ia-f textarea, .ia-f select { font: inherit; font-size: .95rem; padding: .6rem .7rem; border: 1px solid var(--ot-line); background: #fff; border-radius: 0; max-width: 100%; }
.ia-chk { display: flex; gap: .5rem; align-items: flex-start; font-size: .8rem; margin: .5rem 0; min-height: 32px; }
.ia-go { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; margin-top: .6rem; }
.ia-gen { min-height: 48px; margin-top: 0 !important; }
.ia-gen[disabled] { opacity: .55; cursor: not-allowed; }
.ia-meter { display: grid; font-size: .82rem; }
.ia-meter span { color: var(--ot-muted); font-size: .74rem; }
.ia-cost, .ia-fine, .ia-help { font-size: .76rem; color: var(--ot-muted); line-height: 1.5; margin: .5rem 0; }
.ia-ok { background: #edf6f0; border: 1px solid #c4ddcd; color: #2f6b4f; padding: .5rem .7rem; font-size: .82rem; margin: .4rem 0; }
.ia-guide { background: #faf4ea; border: 1px solid #ecdcc0; padding: .8rem 1rem; font-size: .86rem; margin-top: .6rem; }
.ia-guide ol { margin: .5rem 0 .8rem; padding-left: 1.2rem; line-height: 1.6; }
.ia-cfg { background: #faf7f2; border: 1px solid var(--ot-line); padding: .4rem .9rem .9rem; margin-top: .7rem; }
.ia-row { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin-top: .6rem; }
.ia-msg { font-size: .8rem; color: #8c2f2f; min-height: 1.1em; margin: .3rem 0 0; }
.ia-busy { display: flex; gap: .6rem; align-items: center; font-size: .84rem; background: #f6f1ea; padding: .6rem .8rem; margin: .6rem 0; }
.ia-spin { width: 18px; height: 18px; border: 2px solid #cdbfae; border-top-color: #111; border-radius: 50%; animation: ia-rot .9s linear infinite; flex: none; }
@keyframes ia-rot { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .ia-spin { animation-duration: 3s; } .nc-toast { transition: none; } }
.ia-res { margin: .8rem 0 0; display: grid; gap: .5rem; max-width: 420px; }
.ia-pic { appearance: none; border: 0; padding: 0; background: #efe9df; cursor: zoom-in; display: block; }
.ia-pic img { display: block; width: 100%; height: auto; }
.ia-label { margin: 0; font-size: .78rem; font-weight: 600; color: #5a463c; }
.ia-note { font-size: .78rem; color: #2f6b4f; margin: .4rem 0 0; }
.ia-hist { margin-top: .8rem; font-size: .82rem; }
.ia-hist summary { cursor: pointer; padding: .4rem 0; min-height: 32px; }
.ia-thumbs { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .4rem; }
.ia-thumb { appearance: none; border: 1px solid var(--ot-line); padding: 0; background: #fff; cursor: pointer; }
.ia-thumb img { display: block; width: 64px; height: 90px; object-fit: cover; }
@media (max-width: 520px) {
  .nc-grid { grid-template-columns: repeat(2, 1fr); gap: .6rem; }
  .nc-fgroup > span { width: 100%; }
  .nc-mini { flex-basis: 150px; }
  .nc-dialog { padding: .9rem .8rem 1.1rem; }
  .ia-res { max-width: 100%; }
}

/* ───────── Color del vestido (color1) ───────── */
.ot-color { margin: 0 0 .7rem; padding: .6rem .7rem .7rem; border: 1px solid #eadfd4; background: #fffdfa; border-radius: 10px; }
.ot-color-h { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .4rem .8rem; margin-bottom: .45rem; }
.ot-color-t { font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: #7a6a60; }
.ot-color-now { font-size: .84rem; font-weight: 600; color: #3a2d26; display: inline-flex; align-items: center; gap: .4rem; }
.ot-color-now i { display: inline-block; width: 1.05rem; height: 1.05rem; border-radius: 50%; background: var(--c, #fff); border: 1px solid rgba(60,40,30,.35); }
.ot-color-sw { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: .4rem; }
.ot-sw-c { appearance: none; padding: 0; width: 100%; aspect-ratio: 1 / 1; min-width: 34px; min-height: 34px; border-radius: 50%; background: var(--c); border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(90,70,56,.35); cursor: pointer; }
.ot-sw-c.is-white { box-shadow: 0 0 0 1px rgba(90,70,56,.5); }
.ot-sw-c.is-on { box-shadow: 0 0 0 2px #111, 0 0 0 4px #fff, 0 0 0 5px #b48f76; }
.ot-sw-c:focus-visible, .ot-color-pick:focus-visible, .ot-color-hex:focus-visible { outline: 2px solid #b48f76; outline-offset: 2px; }
.ot-color-free { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .55rem .9rem; margin-top: .55rem; }
.ot-color-l { display: flex; flex-direction: column; gap: .18rem; font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; color: #7a6a60; }
.ot-color-pick { width: 52px; height: 38px; padding: 2px; border: 1px solid #d8cabb; background: #fff; border-radius: 6px; cursor: pointer; }
.ot-color-hex, .ot-color-name { height: 38px; padding: 0 .55rem; border: 1px solid #d8cabb; border-radius: 6px; font: inherit; font-size: .85rem; letter-spacing: 0; text-transform: none; color: #2a2220; background: #fff; }
.ot-color-hex { width: 7.6rem; font-family: ui-monospace, Consolas, monospace; }
.ot-color-hex.is-bad { border-color: #b33a4a; background: #fff5f6; }
.ot-color-name { width: 11rem; max-width: 100%; }
.ot-color-chk { display: inline-flex; align-items: center; gap: .4rem; min-height: 38px; font-size: .8rem; color: #3a2d26; }
.ot-color-chk input { width: 18px; height: 18px; }
.ot-color-clear { appearance: none; min-height: 38px; padding: 0 .8rem; border: 1px solid #d8cabb; background: #fff; border-radius: 6px; font: inherit; font-size: .78rem; cursor: pointer; color: #6a5648; }
.ot-color-clear[hidden] { display: none; }
@media (max-width: 560px) {
  .ot-color-sw { grid-template-columns: repeat(8, minmax(0, 1fr)); gap: .28rem; }
  .ot-sw-c { min-width: 0; min-height: 0; }
  .ot-color-name { width: 100%; }
  .ot-color-l.ot-color-nm { flex: 1 1 100%; }
}

/* ───────── Paleta compacta (paleta1): círculos chicos, «+ Otro tono» plegado, barras más bajas ───────── */
.ot-sr { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ot-3d-wrap { padding: .45rem .5rem .5rem; }
.ot-3d-wrap .ot-3d-bar { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: .1rem .9rem; padding: .3rem .5rem; margin-bottom: .35rem; border-radius: 10px; }
.ot-3d-wrap .ot-chips { flex-wrap: nowrap; overflow-x: auto; gap: .25rem; scrollbar-width: none; min-width: 0; }
.ot-3d-wrap .ot-chips::-webkit-scrollbar { display: none; }
.ot-3d-wrap .ot-chips > span { min-width: 3.1rem; font-size: .58rem; letter-spacing: .1em; flex: none; }
.ot-3d-wrap .ot-chip { padding: .18rem .5rem; font-size: .72rem; line-height: 1.25; white-space: nowrap; flex: none; border-radius: 999px; }
.ot-3d-wrap .ot-color { margin: 0 0 .35rem; padding: .25rem .5rem; border-radius: 10px; }
.ot-color-row { display: flex; align-items: center; gap: .5rem .7rem; min-width: 0; }
.ot-color-compact .ot-color-h { margin: 0; flex: none; flex-wrap: nowrap; gap: .45rem; align-items: center; justify-content: flex-start; }
.ot-color-compact .ot-color-t { font-size: .58rem; letter-spacing: .12em; }
.ot-color-compact .ot-color-now { font-size: .74rem; min-width: 7.5rem; max-width: 11rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ot-color-compact .ot-color-now i { width: .8rem; height: .8rem; flex: none; }
.ot-color-compact .ot-color-sw { display: flex; flex-wrap: nowrap; gap: 0; overflow-x: auto; flex: 1 1 auto; min-width: 0; scrollbar-width: none; padding: 1px 0; }
.ot-color-compact .ot-color-sw::-webkit-scrollbar { display: none; }
.ot-color-compact .ot-sw-c { position: relative; flex: none; width: 28px; height: 28px; min-width: 28px; min-height: 28px; aspect-ratio: auto; border: 0; border-radius: 50%; background: transparent; box-shadow: none; }
.ot-color-compact .ot-sw-c::after { content: ""; position: absolute; left: 50%; top: 50%; width: 22px; height: 22px; margin: -11px 0 0 -11px; border-radius: 50%; background: var(--c); box-shadow: 0 0 0 1px rgba(90,70,56,.35); transition: transform .12s; }
.ot-color-compact .ot-sw-c.is-white::after { box-shadow: 0 0 0 1px rgba(90,70,56,.5); }
.ot-color-compact .ot-sw-c:hover::after { transform: scale(1.1); }
.ot-color-compact .ot-sw-c.is-on { box-shadow: none; }
.ot-color-compact .ot-sw-c.is-on::after { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #3a2f2a; }
.ot-color-compact .ot-sw-c:focus-visible { outline: 2px solid #b48f76; outline-offset: -1px; }
.ot-color-more { appearance: none; flex: none; min-height: 28px; padding: 0 .6rem; border: 1px solid #d8cabb; background: #fff; border-radius: 999px; font: inherit; font-size: .72rem; color: #5a463c; cursor: pointer; white-space: nowrap; }
.ot-color-more[aria-expanded="true"] { background: #3a2f2a; color: #fff; border-color: #3a2f2a; }
.ot-color-compact .ot-color-free { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; margin-top: .3rem; padding-top: .3rem; border-top: 1px solid #efe5da; }
.ot-color-compact .ot-color-free[hidden] { display: none; }
.ot-color-compact .ot-color-l { flex-direction: row; align-items: center; gap: 0; }
.ot-color-compact .ot-color-pick { width: 34px; height: 28px; padding: 1px; border-radius: 6px; }
.ot-color-compact .ot-color-hex, .ot-color-compact .ot-color-name { height: 28px; font-size: .78rem; padding: 0 .45rem; border-radius: 6px; }
.ot-color-compact .ot-color-hex { width: 5.8rem; }
.ot-color-compact .ot-color-name { width: 10rem; }
.ot-color-compact .ot-color-chk { min-height: 28px; font-size: .74rem; gap: .3rem; }
.ot-color-compact .ot-color-chk input { width: 15px; height: 15px; margin: 0; }
.ot-color-compact .ot-color-clear { min-height: 28px; padding: 0 .6rem; font-size: .72rem; }
.ot-3d-wrap .ot-3d-tools { margin-bottom: .3rem; padding: .2rem .4rem; gap: .2rem .5rem; border-radius: 10px; }
.ot-3d-wrap .ot-3d-tools .ot-tg { padding-right: .5rem; gap: .15rem; }
.ot-3d-wrap .ot-3d-tools .ot-tb { min-height: 28px; padding: .2rem .5rem; font-size: .72rem; border-radius: 8px; }
.ot-3d-wrap .ot-3d-tools .ot-tb svg { width: 16px; height: 16px; }
.ot-3d-wrap .ot-3d-tools .ot-tb-txt { padding: .2rem .5rem; }
.ot-3d-wrap .ot-3d-status { margin: 0 0 .25rem; font-size: .68rem; min-height: 0; line-height: 1.2; }
.ot-3d-wrap .ot-stage { height: clamp(380px, calc(100vh - 264px), 640px); }
@media (max-width: 900px) {
  .ot-3d-wrap .ot-3d-tools .ot-tb em { display: inline; }
  .ot-3d-wrap .ot-3d-tools [data-v3="auto"] em, .ot-3d-wrap .ot-3d-tools [data-v3="zoom"] em, .ot-3d-wrap .ot-3d-tools [data-v3="png"] em { display: none; }
  .ot-3d-wrap .ot-3d-tools .ot-tb { min-height: 30px; }
  .ot-3d-wrap .ot-3d-bar { grid-template-columns: minmax(0, 1fr); }
  .ot-3d-wrap .ot-stage { height: clamp(340px, calc(100vh - 392px), 560px); }
  .ot-3d-wrap .ot-3d-tools { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .ot-3d-wrap .ot-3d-tools::-webkit-scrollbar { display: none; }
  .ot-3d-wrap .ot-3d-tools .ot-tg { flex: none; }
  .ot-3d-wrap .ot-3d-tools .ot-tg-fab { flex-wrap: nowrap; }
  .ot-3d-wrap .ot-3d-tools .ot-draw-label { display: none; }
  .ot-3d-wrap .ot-3d-status { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
}
@media (max-width: 560px) {
  .ot-color-row { flex-wrap: wrap; }
  .ot-color-compact .ot-color-h { order: 1; flex: 1 1 0; min-width: 0; }
  .ot-color-compact .ot-color-now { min-width: 0; }
  .ot-color-more { order: 2; }
  .ot-color-compact .ot-color-sw { order: 3; flex: 1 1 100%; }
  .ot-color-compact .ot-color-name { width: 100%; }
  .ot-color-compact .ot-color-l.ot-color-nm { flex: 1 1 100%; }
}

/* ───────── «Solo maniquí» (solo1) ───────── */
.ot-3d-wrap .ot-3d-tools .ot-tb-solo em { display: inline; }
.ot-3d-wrap .ot-3d-tools .ot-tb-solo { border-color: #ddcfbf; }
.ot-3d-wrap .ot-3d-tools .ot-tb-solo.is-on { background: #3a2f2a; color: #fff; border-color: #3a2f2a; }

/* ───────── Volumen de la falda (volumen1): slider fino dentro de la barra de diseño ───────── */
.ot-3d-wrap .ot-vol { align-items: center; gap: .4rem; }
.ot-vol-r { -webkit-appearance: none; appearance: none; flex: 1 1 110px; min-width: 90px; max-width: 220px; height: 20px; padding: 0 !important; margin: 0; border: 0 !important; background: transparent !important; cursor: pointer; accent-color: #3a2f2a; }
.ot-vol-r::-webkit-slider-runnable-track { height: 3px; border-radius: 2px; background: #d8cabb; }
.ot-vol-r::-moz-range-track { height: 3px; border-radius: 2px; background: #d8cabb; }
.ot-vol-r::-webkit-slider-thumb { -webkit-appearance: none; width: 16px; height: 16px; margin-top: -6.5px; border-radius: 50%; background: #3a2f2a; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(58,47,42,.4); }
.ot-vol-r::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: #3a2f2a; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(58,47,42,.4); }
.ot-vol-r:focus-visible { outline: 2px solid #b48f76; outline-offset: 2px; }
.ot-vol-v { font-size: .72rem; font-weight: 600; color: #3a2d26; min-width: 2.6rem; text-align: right; flex: none; font-variant-numeric: tabular-nums; }
.ot-vol-reset { appearance: none; flex: none; width: 24px; height: 24px; padding: 0; border: 1px solid #d8cabb; background: #fff; border-radius: 50%; font: inherit; font-size: .8rem; line-height: 1; color: #5a463c; cursor: pointer; }
.ot-vol-reset[hidden] { display: none; }
@media (max-width: 560px) { .ot-vol-r { max-width: none; height: 28px; } .ot-vol-reset { width: 28px; height: 28px; } }

/* ── Look del maniquí (piel, peinado, accesorios): panel plegable, líneas finas con scroll lateral ── */
.ot-3d-wrap .ot-tb-look { white-space: nowrap; }
.ot-3d-wrap .ot-tb-look.is-on { background: #3a2f2a; color: #fff; border-color: #3a2f2a; }
.ot-look-dot { display: inline-block; width: 7px; height: 7px; margin-left: 2px; border-radius: 50%; background: #b48f76; vertical-align: middle; }
.ot-look { margin: 0 0 .35rem; padding: .22rem .5rem; border: 1px solid #eadfd4; background: #fffdfa; border-radius: 10px; display: flex; flex-direction: column; gap: .16rem; }
.ot-look[hidden] { display: none; }
.ot-lk-row { display: flex; align-items: center; flex-wrap: wrap; gap: .3rem .45rem; min-width: 0; padding: 1px 0; }   /* pelo2: la fila envuelve (antes: una sola línea con scroll oculto que recortaba los peinados) */
.ot-lk-l { flex: none; font-size: .58rem; letter-spacing: .1em; text-transform: uppercase; color: #7a6a60; }
.ot-lk-sep { flex: none; width: 1px; height: 16px; background: #e3d6c8; margin: 0 .15rem; }
.ot-lk-dots, .ot-lk-chips { display: inline-flex; align-items: center; flex: 0 1 auto; flex-wrap: wrap; min-width: 0; max-width: 100%; gap: 0; }
.ot-lk-chips { gap: .25rem; }
.ot-lk-chips .ot-chip, .ot-look > .ot-lk-row > .ot-chip { flex: none; white-space: nowrap; }
.ot-lk-dot { position: relative; flex: none; width: 26px; height: 26px; padding: 0; border: 0; background: transparent; border-radius: 50%; cursor: pointer; }
.ot-lk-dot::after { content: ""; position: absolute; left: 50%; top: 50%; width: 17px; height: 17px; margin: -8.5px 0 0 -8.5px; border-radius: 50%; background: var(--c, #ddd); box-shadow: 0 0 0 1px rgba(90,70,56,.4); transition: transform .12s; }
.ot-lk-dot:hover::after { transform: scale(1.12); }
.ot-lk-dot.is-on::after { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #3a2f2a; }
.ot-lk-dot:focus-visible { outline: 2px solid #b48f76; outline-offset: -2px; }
.ot-lk-metal.is-plata::after { background: linear-gradient(135deg, #f4f6f8, #aeb4bb 55%, #e6e9ec); }
.ot-lk-metal.is-dorado::after { background: linear-gradient(135deg, #f7e2a6, #c79a3d 55%, #f0d287); }
.ot-lk-reset { flex: none; appearance: none; min-height: 26px; padding: 0 .6rem; border: 1px solid #d8cabb; background: #fff; border-radius: 999px; font: inherit; font-size: .7rem; color: #6a5648; cursor: pointer; white-space: nowrap; }
.ot-lk-reset[hidden] { display: none; }
.ot-3d-wrap { --look-h: 0px; }
.ot-3d-wrap .ot-stage { height: clamp(380px, calc(100vh - 264px - var(--look-h)), 640px); }
@media (max-width: 900px) { .ot-3d-wrap .ot-stage { height: clamp(340px, calc(100vh - 392px - var(--look-h)), 560px); } }
.ot-3d-wrap { min-width: 0; }
.ot-look { min-width: 0; max-width: 100%; box-sizing: border-box; overflow: hidden; }
.ot-look { contain: inline-size; }

/* ── medidas reales en el maniquí: «Con mis medidas», «Cinta» y etiqueta ── */
.ot-3d-wrap .ot-tb-fit, .ot-3d-wrap .ot-tb-tape { white-space: nowrap; }
.ot-3d-wrap .ot-tb-fit.is-on, .ot-3d-wrap .ot-tb-tape.is-on { background: #3a2f2a; color: #fff; border-color: #3a2f2a; }
.ot-3d-wrap .ot-tb-fit:disabled { opacity: .55; cursor: not-allowed; }
.ot-3d-fit { position: absolute; left: 12px; top: 8px; max-width: calc(100% - 24px); font-size: .66rem; letter-spacing: .02em; color: var(--ot-pill-fg, #5a463c); background: var(--ot-pill-bg, rgba(255,252,246,.78)); border-radius: 999px; padding: 2px 9px; pointer-events: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ot-3d-fit:empty { display: none; }
.ot-stage.is-fallback .ot-3d-fit { display: none; }

/* ───── flujo-pasos: asistente por pasos (v flujo1) ───── */
.ot-flow-line { margin: .35rem 0 0; font-size: .82rem; color: #6b625b; letter-spacing: .01em; }
.ot-card-prog { display: inline-block; align-self: flex-start; font-size: .7rem; letter-spacing: .04em; color: #5b5149; background: var(--ot-pearl, #f6f2ec); border: 1px solid var(--ot-line, #e5ddd2); border-radius: 999px; padding: .1rem .55rem; margin: .1rem 0 .25rem; }
.ot-ed-links { display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; align-items: center; background: #fff; border: 1px solid var(--ot-line, #e5ddd2); border-top: 0; padding: .55rem 1rem; font-size: .84rem; margin-bottom: .7rem; }
.ot-ed-links .ot-lk b { font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; color: #7a6f65; margin-right: .3rem; }
.ot-ed-links em { color: #9a8f84; }
.ot-ed-links .at-link-btn { padding: .1rem .2rem; }
.ot-pg { margin: .2rem 0 .6rem; }
.ot-pg-top { display: flex; justify-content: space-between; align-items: baseline; font-size: .86rem; margin-bottom: .3rem; }
.ot-pg-bar { height: 8px; background: #ece5db; border-radius: 99px; overflow: hidden; }
.ot-pg-bar i { display: block; height: 100%; background: linear-gradient(90deg, #8a6d4b, #b99468); border-radius: 99px; transition: width .35s ease; }
.ot-steps { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); overflow: visible; position: static; border-bottom: 0; }
.ot-step { appearance: none; border: 0; border-right: 1px solid var(--ot-line, #e5ddd2); background: transparent; font: inherit; cursor: pointer; display: flex; flex-direction: column; align-items: center; gap: .15rem; padding: .6rem .25rem .55rem; border-bottom: 3px solid transparent; color: #7a6f65; min-width: 0; }
.ot-step:last-child { border-right: 0; }
.ot-step em { font-style: normal; font-size: .76rem; letter-spacing: .02em; text-align: center; line-height: 1.15; }
.ot-step small { font-size: .64rem; letter-spacing: .04em; text-transform: uppercase; opacity: .85; text-align: center; }
.ot-step-n { display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; border: 1.5px solid #c9bfb2; font-size: .75rem; font-weight: 600; background: #fff; }
.ot-step.is-doing .ot-step-n { border-color: #b8860b; color: #8a6200; background: #fff8e6; }
.ot-step.is-done .ot-step-n { border-color: #3d7a55; background: #3d7a55; color: #fff; }
.ot-step.is-done small { color: #2f6a47; }
.ot-step.is-doing small { color: #8a6200; }
.ot-step.is-on { background: var(--ot-ivory, #faf6f0); border-bottom-color: var(--ot-ink, #2a2220); color: var(--ot-ink, #2a2220); font-weight: 600; }
.ot-step:focus-visible { outline: 2px solid var(--ot-ink, #2a2220); outline-offset: -2px; }
.ot-step-help { margin: .6rem .1rem .5rem; font-size: .9rem; color: #4a423c; }
.ot-subtabs { display: flex; gap: .4rem; margin: 0 0 .6rem; }
.ot-subtab { appearance: none; border: 1px solid var(--ot-line, #e5ddd2); background: #fff; font: inherit; font-size: .82rem; padding: .4rem .9rem; border-radius: 999px; cursor: pointer; color: #5b5149; }
.ot-subtab.is-on { background: var(--ot-ink, #2a2220); color: #fff; border-color: var(--ot-ink, #2a2220); }
.ot-paso-mark { display: flex; align-items: center; gap: .5rem; margin: .6rem .1rem 0; font-size: .84rem; color: #5b5149; }
.ot-pane-nav { gap: .6rem; flex-wrap: wrap; }
.ot-cli-card { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .8rem; background: var(--ot-pearl, #f6f2ec); border: 1px solid var(--ot-line, #e5ddd2); padding: 1rem 1.1rem; margin-bottom: .8rem; }
.ot-cli-main { display: flex; flex-direction: column; gap: .15rem; }
.ot-cli-main strong { font-family: var(--dash-serif, serif); font-size: 1.25rem; font-weight: 500; }
.ot-cli-ok { color: #2f6a47; font-size: .78rem; letter-spacing: .05em; text-transform: uppercase; }
.ot-cli-btns, .ot-btn-row { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: .7rem 0 0; }
.ot-cli-res { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .5rem; margin: .5rem 0 1rem; }
.ot-cli-pick { appearance: none; text-align: left; border: 1px solid var(--ot-line, #e5ddd2); background: #fff; padding: .6rem .8rem; cursor: pointer; font: inherit; display: flex; flex-direction: column; gap: .1rem; }
.ot-cli-pick:hover, .ot-cli-pick:focus-visible { border-color: var(--ot-ink, #2a2220); background: var(--ot-ivory, #faf6f0); }
.ot-cli-pick span { font-size: .8rem; color: #7a6f65; }
.ot-money { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: .6rem; margin: .4rem 0; }
.ot-money > div { background: #fff; border: 1px solid var(--ot-line, #e5ddd2); padding: .55rem .7rem; display: flex; flex-direction: column; }
.ot-money span { font-size: .7rem; letter-spacing: .05em; text-transform: uppercase; color: #7a6f65; }
.ot-money strong { font-size: 1.1rem; }
.ot-warn-box { background: #fff6e5; border: 1px solid #ecd49a; color: #6d5313; padding: .7rem .9rem; font-size: .88rem; }
.ot-appt-list { margin: .2rem 0 .5rem; padding-left: 1.1rem; font-size: .88rem; }
.ot-appt-list li.is-done { color: #2f6a47; }
.ot-prueba4 { margin-top: 1rem; }
.ot-pane .ot-design-bar { margin-top: .4rem; }
@media (max-width: 860px) {
  .ot-steps { display: flex; overflow-x: auto; scrollbar-width: thin; }
  .ot-step { flex: 0 0 auto; min-width: 5.6rem; }
  .ot-ed-links { gap: .35rem 1rem; }
}
@media print { .ot-pg, .ot-steps, .ot-step-help, .ot-subtabs, .ot-paso-mark, .ot-ed-links { display: none !important; } }

/* Arreglo: reglas viejas del maniquí (.ot-card absoluto/transparente) deformaban la lista de fichas. Se acotan a la lista. */
#ot-results .ot-card { position: static; inset: auto; backface-visibility: visible; -webkit-backface-visibility: visible; overflow: visible; backdrop-filter: none;
  background: #fff !important; border: 1px solid var(--ot-line) !important; box-shadow: none !important; }
#ot-results .ot-card:hover { box-shadow: 0 10px 26px rgba(0,0,0,.07) !important; border-color: rgba(10,10,10,.3) !important; }
#ot-results .ot-card.is-hit { border-color: var(--ot-ink) !important; box-shadow: 0 0 0 2px var(--ot-ink) inset !important; }

/* escotes (v. escotes2): selector desplegable — escote elegido (icono + nombre) y grilla con los 15; espalda en fila simple de botones grandes */
.ot-esc { display: block; width: 100%; min-width: 0; }
.ot-esc-lab { display: block; font-size: .62rem; letter-spacing: .14em; text-transform: uppercase; color: #7a6a60; margin: 0 0 .2rem; }
.ot-esc-cur { appearance: none; display: flex; align-items: center; gap: .6rem; width: 100%; min-height: 2.9rem; padding: .25rem .6rem; border: 1px solid #cdbfb2; background: #fff; border-radius: 10px; font: inherit; cursor: pointer; text-align: left; color: #111; }
.ot-esc-cur:hover { border-color: #111; }
.ot-esc-name { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.ot-esc-name b { font-size: .88rem; font-weight: 600; }
.ot-esc-name small { font-size: .68rem; color: #7a6a60; letter-spacing: .02em; }
.ot-esc-ic { flex: none; width: 40px; height: 34px; }
.ot-esc-sk { fill: #ead9cb; }
.ot-esc-dr { fill: #2b2623; }
.ot-esc-hr { fill: #3b2a22; }
.ot-esc-fx { fill: #6b4a3c; }
.ot-esc-sh { fill: #fff; fill-opacity: .55; stroke: #2b2623; stroke-width: 1; stroke-dasharray: 1.6 1.4; }
.ot-esc-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .4rem; margin: .45rem 0 .2rem; padding: .5rem; background: #faf6f1; border: 1px solid #eadfd4; border-radius: 10px; }
.ot-esc-grid[hidden] { display: none; }
.ot-esc-opt { appearance: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .15rem; min-height: 4.2rem; min-width: 44px; padding: .3rem .2rem; border: 1px solid #e0d4c8; background: #fff; border-radius: 10px; font: inherit; font-size: .72rem; line-height: 1.2; text-align: center; color: #111; cursor: pointer; }
.ot-esc-opt:hover { border-color: #111; }
.ot-esc-opt.is-on { border-color: #111; box-shadow: 0 0 0 2px #111 inset; background: #f3ebe2; font-weight: 600; }
.ot-esc-cur:focus-visible, .ot-esc-opt:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }
.ot-3d-wrap .ot-esc.is-open { grid-column: 1 / -1; }
.ot-chips-esp .ot-chip { min-height: 2.75rem; min-width: 44px; }
@media (max-width: 700px) {
  .ot-esc-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .35rem; padding: .4rem; }
  .ot-esc-opt { min-height: 4.4rem; font-size: .68rem; }
  .ot-3d-wrap .ot-chips-esp .ot-chip { padding: .3rem .7rem; font-size: .78rem; }
}
@media (max-width: 420px) { .ot-esc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* ---- fila «Fondo» del maniquí 3D (fondo1): misma estética que la paleta del vestido ---- */
.ot-fondo { margin-top: 0; }
.ot-fondo .ot-color-now { min-width: 6.5rem; }
.ot-fondo-deg[aria-pressed="true"] { background: #3a2f2a; color: #fff; border-color: #3a2f2a; }
.ot-fondo-deg:disabled { opacity: .45; cursor: not-allowed; }
.ot-fondo .ot-sw-f.is-on::after { box-shadow: 0 0 0 2px #fff, 0 0 0 3px #3a2f2a; }
@media (max-width: 640px) {
  .ot-fondo .ot-color-more { order: 2; min-height: 32px; }
  .ot-fondo .ot-color-sw { padding-bottom: 2px; }
  .ot-fondo .ot-sw-c { width: 32px; height: 32px; min-width: 32px; min-height: 32px; }
  .ot-fondo .ot-color-now { font-size: .7rem; }
}

/* ===== tiaras1: desplegable «Tiara / corona» del panel Look ===== */
.ot-look { overflow: visible; }
.ot-lk-tia { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .7rem; padding: .1rem 0; }
.ot-lk-tia .ot-esc { flex: 0 1 270px; width: auto; min-width: 200px; }
.ot-lk-tia .ot-esc-lab { display: none; }
.ot-lk-tia .ot-esc-cur { min-height: 2.5rem; padding: .15rem .5rem; }
.ot-lk-tia .ot-esc-grid { position: absolute; left: 0; right: 0; top: calc(100% + 2px); z-index: 40; margin: 0; box-shadow: 0 10px 26px rgba(40, 25, 15, .22); }
.ot-lk-tia .ot-esc-opt { min-height: 4rem; font-size: .68rem; }
.ot-lk-tiaopt { display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .5rem; min-width: 0; }
.ot-lk-metal.is-rosado::after { background: linear-gradient(135deg, #fbe0d6, #d9967f 55%, #f3c3b2); }
@media (max-width: 700px) {
  .ot-lk-tia .ot-esc { flex: 1 1 100%; }
  .ot-lk-tia .ot-esc-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 420px) { .ot-lk-tia .ot-esc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.ot-ps-tocado { margin: 2px 0 0; font-size: .85em; color: #16285c; }

/* ===== velos1: color y borde del velo bajo el desplegable «Velo» ===== */
.ot-vopt { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .3rem .45rem; padding: .15rem .1rem; }
.ot-vopt-l { font-size: .62rem; letter-spacing: .12em; text-transform: uppercase; color: #7a6a60; }
.ot-vsw { appearance: none; width: 26px; height: 26px; min-width: 26px; padding: 0; border-radius: 50%; border: 2px solid #cdbfb2; background: var(--c, #fff); cursor: pointer; box-shadow: inset 0 0 0 2px #fff; }
.ot-vsw.is-on { border-color: #111; box-shadow: inset 0 0 0 2px #fff, 0 0 0 1px #111; }
.ot-vsw:focus-visible { outline: 3px solid #1a73e8; outline-offset: 2px; }

/* telas2: selector de tela del maniquí 3D (desplegable agrupado, brillo y densidad) */
.ot-3d-tools .ot-fab-more { flex: 1 1 100%; margin: .15rem 0; }
.ot-3d-tools .ot-fab-more > summary { cursor: pointer; font-size: .72rem; letter-spacing: .06em; padding: .25rem .5rem; border: 1px dashed var(--ot-line, #d9d2c8); border-radius: 999px; display: inline-block; list-style: none; }
.ot-3d-tools .ot-fab-more[open] > summary { background: #111; color: #fff; border-color: #111; }
.ot-3d-tools .ot-fab-grp { display: flex; flex-wrap: wrap; gap: .25rem; align-items: center; margin: .3rem 0 0; }
.ot-3d-tools .ot-fab-grp > b { flex: 1 1 100%; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: #8a7f72; font-weight: 600; }
.ot-3d-tools .ot-fab-opt { display: inline-flex; align-items: center; gap: .25rem; margin-left: .35rem; }
.ot-3d-tools .ot-fab-opt > i { font-style: normal; font-size: .68rem; letter-spacing: .08em; text-transform: uppercase; color: #8a7f72; }
.ot-3d-tools .ot-tb-txt.is-on { background: #111; color: #fff; border-color: #111; }

/* peinados (pelo2): desplegable «Ver todos los peinados» con mini iconos; la grilla se adapta al ancho y tiene su propio scroll vertical visible */
.ot-lk-tia.ot-lk-hair .ot-esc-grid { grid-template-columns: repeat(auto-fill, minmax(5.3rem, 1fr)); max-height: min(60vh, 25rem); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
.ot-lk-hair .ot-esc-opt { min-height: 4.2rem; font-size: .66rem; }
.ot-lk-hair .ot-lk-tiaopt { flex: 1 1 260px; }
.ot-lk-hcols { flex-wrap: wrap; max-width: 100%; }
@media (max-width: 700px) { .ot-lk-tia.ot-lk-hair .ot-esc-grid { grid-template-columns: repeat(auto-fill, minmax(4.6rem, 1fr)); max-height: min(56vh, 22rem); } }
@media (max-width: 700px) { .ot-look .ot-lk-dot { width: 32px; height: 32px; min-width: 32px; min-height: 32px; } }

/* espaldas (espalda2): desplegable «Ver todas las espaldas» con mini iconos (18 tipos) + detalles del croquis 2D de espalda */
.ot-esc-lt { fill: #f1e8de; }
.ot-esc-ls { fill: none; stroke: #f1e8de; stroke-width: 1.1; stroke-linecap: round; stroke-linejoin: round; }
.ot-esc-ln { fill: none; stroke: #2b2623; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.ot-dr-hole { fill: #ead9cb; stroke: #b48f76; stroke-width: .5; stroke-linejoin: round; }
.ot-dr-lace { fill: none; stroke: #8f7360; stroke-width: .9; stroke-linecap: round; stroke-linejoin: round; }
.ot-dr-bow { fill: #f6ede2; stroke: #b48f76; stroke-width: .5; stroke-linejoin: round; }
.ot-dr-rib { fill: none; stroke: #b48f76; stroke-width: 4.2; stroke-linecap: round; }
.ot-dr-rib2 { fill: none; stroke: #f6ede2; stroke-width: 3; stroke-linecap: round; }
.ot-esc[data-esc-key="espalda"] .ot-esc-grid { max-height: min(22rem, 52vh); overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; }
.ot-esc[data-esc-key="espalda"] .ot-esc-opt { min-height: 4.6rem; }
.ot-esc[data-esc-key="espalda"] .ot-esc-opt span { font-size: .66rem; line-height: 1.15; text-align: center; overflow-wrap: anywhere; hyphens: auto; }
@media (max-width: 700px) {
  .ot-esc[data-esc-key="espalda"] .ot-esc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: min(20rem, 46vh); }
}

/* ===== escenas1 / cuerpo1: escena y luz del maniquí, mini iconos de escena y de forma de cuerpo ===== */
.ot-escena { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .35rem .9rem; margin: .45rem 0 .15rem; min-width: 0; }
.ot-escena > .ot-esc { flex: 0 1 300px; width: auto; min-width: 220px; }
.ot-escena > .ot-esc.is-open { flex: 1 1 100%; }
.ot-luz { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .4rem; padding-top: 1.05rem; min-width: 0; }
.ot-chip-luz { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.4rem; }
.ot-chip-luz i { width: .72rem; height: .72rem; border-radius: 50%; background: var(--c, #ccc); box-shadow: 0 0 0 1px rgba(0,0,0,.25) inset; flex: none; }
.ot-escena-note { flex: 1 1 100%; margin: 0; font-size: .7rem; line-height: 1.35; color: #7a6a60; }
.ot-esc-ic-sc { border-radius: 6px; }
.ot-esc-opt .ot-esc-ic-sc { width: 44px; height: 37px; }
@media (max-width: 700px) {
  .ot-escena > .ot-esc { flex: 1 1 100%; }
  .ot-luz { padding-top: 0; }
  .ot-chip-luz { min-height: 2.75rem; padding: .3rem .7rem; font-size: .78rem; }
}

/* cortes1: desplegable de corte (18 opciones, mismo componente que escotes y mangas) y piernas/sobrefalda del croquis */
.ot-dr-over { opacity: .97; }

/* ===== poses1: pose del maniquí (desplegable), viento y desfile ===== */
.ot-mov { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .4rem; margin: .1rem 0 .3rem; min-width: 0; }
.ot-chip-viento, .ot-chip-vimg { min-height: 2.4rem; }
.ot-chip:disabled { opacity: .45; cursor: not-allowed; }
.ot-mov-note { flex: 1 1 100%; margin: 0; font-size: .7rem; line-height: 1.35; color: #7a6a60; }
.ot-mov-note[hidden] { display: none; }
.ot-tb-desf.is-on { background: #2b2623; color: #fff; }
@media (max-width: 700px) {
  .ot-chip-viento, .ot-chip-vimg { min-height: 2.75rem; padding: .3rem .7rem; font-size: .78rem; }
}
@media print { .ot-mov, .ot-tb-desf { display: none !important; } }
.ot-mov .ot-tb-desf { min-height: 2.4rem; padding: .3rem .7rem; margin-left: .2rem; }
@media (max-width: 700px) { .ot-mov .ot-tb-desf { min-height: 2.75rem; } }

/* ───────── rostro2: «Rostro de la clienta» (foto → maniquí). La foto se procesa solo en el navegador. ───────── */
.ot-rf-row { align-items: center; }
.ot-rf-th { width: 34px; height: 42px; object-fit: cover; border-radius: 50%/42%; border: 2px solid #fff; box-shadow: 0 0 0 1px rgba(22, 40, 92, .35); flex: none; }
.ot-rf-note { font-size: .74rem; color: #5b6477; line-height: 1.25; max-width: 46ch; }
.ot-rf-del { color: #8a1f2f; }
.ot-ps-rf { vertical-align: middle; margin-left: 6px; border: 1px solid #aaa; border-radius: 50%/42%; object-fit: cover; }
html.nsrf-lock, html.nsrf-lock body { overflow: hidden; }
.nsrf { position: fixed; inset: 0; z-index: 10050; display: flex; align-items: center; justify-content: center; padding: 10px; }
.nsrf-back { position: absolute; inset: 0; background: rgba(12, 16, 30, .62); }
.nsrf-card { position: relative; width: min(1040px, 100%); max-height: calc(100vh - 20px); max-height: calc(100dvh - 20px); overflow: auto; background: #fff; color: #1d2433; border-radius: 14px; box-shadow: 0 18px 60px rgba(0, 0, 0, .4); outline: none; font-size: .88rem; line-height: 1.35; }
.nsrf-head { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: #16285c; color: #fff; border-radius: 14px 14px 0 0; }
.nsrf-head h3 { margin: 0; font-size: 1.02rem; font-weight: 600; }
.nsrf-x { appearance: none; border: 0; background: transparent; color: #fff; font-size: 1.7rem; line-height: 1; width: 40px; height: 40px; cursor: pointer; border-radius: 8px; }
.nsrf-x:hover, .nsrf-x:focus-visible { background: rgba(255, 255, 255, .16); }
.nsrf-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; padding: 14px; }
.nsrf-col { min-width: 0; display: flex; flex-direction: column; gap: 10px; }
.nsrf-priv, .nsrf-honest { margin: 0; padding: 8px 10px; border-radius: 8px; background: #eef3ff; border: 1px solid #c9d6f5; color: #1c2f66; font-size: .8rem; }
.nsrf-honest { background: #fff7e8; border-color: #f0d9a6; color: #5a4310; }
.nsrf-btns, .nsrf-zoom, .nsrf-act { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.nsrf-btn { appearance: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 40px; padding: 0 14px; border: 1px solid #b9c2d8; border-radius: 9px; background: #fff; color: #16285c; font: inherit; font-weight: 600; cursor: pointer; }
.nsrf-btn:hover, .nsrf-btn:focus-within { background: #f1f4fb; }
.nsrf-btn[disabled] { opacity: .5; cursor: not-allowed; }
.nsrf-btn-main { background: #16285c; border-color: #16285c; color: #fff; }
.nsrf-btn-main:hover, .nsrf-btn-main:focus-within { background: #20367a; }
.nsrf-mini { min-width: 40px; padding: 0 10px; }
.nsrf-edwrap { display: flex; flex-direction: column; gap: 8px; align-items: center; }
.nsrf-cv { width: min(100%, 360px); height: auto; aspect-ratio: 4 / 5; background: #1b1b1b; border-radius: 10px; touch-action: none; cursor: grab; display: block; }
.nsrf-zoom input[type="range"] { flex: 1 1 120px; min-width: 100px; }
.nsrf-hint { margin: 0; font-size: .78rem; color: #4a5368; }
.nsrf-empty { margin: 0; padding: 26px 10px; text-align: center; color: #5b6477; border: 2px dashed #c9d0e0; border-radius: 10px; }
.nsrf-guia, .nsrf-chk, .nsrf-est { padding: 8px 10px; border: 1px solid #dfe4f0; border-radius: 8px; background: #fafbfe; }
.nsrf-guia ul, .nsrf-chk ul, .nsrf-est ul { margin: 4px 0 0; padding-left: 18px; }
.nsrf-chk ul { list-style: none; padding-left: 0; }
.nsrf-chk li { display: flex; gap: 6px; align-items: flex-start; margin: 3px 0; }
.nsrf-chk li span { flex: none; width: 18px; height: 18px; border-radius: 50%; text-align: center; font-size: .72rem; line-height: 18px; font-weight: 700; color: #fff; background: #2f8f5b; }
.nsrf-chk li.aviso span { background: #c27a12; }
.nsrf-chk:empty, .nsrf-est:empty { display: none; }
.nsrf-modos { margin: 0; padding: 8px 10px; border: 1px solid #dfe4f0; border-radius: 8px; display: flex; flex-direction: column; gap: 6px; }
.nsrf-modos legend { padding: 0 4px; font-weight: 600; }
.nsrf-modos label, .nsrf-consent { display: flex; gap: 8px; align-items: flex-start; cursor: pointer; }
.nsrf-sub { font-size: .8rem; color: #4a5368; padding-left: 4px; }
.nsrf input[type="radio"], .nsrf input[type="checkbox"] { width: 18px; height: 18px; flex: none; margin-top: 1px; accent-color: #16285c; }
.nsrf-consent { padding: 8px 10px; border-radius: 8px; background: #f3faf5; border: 1px solid #bfe0c9; }
@media (max-width: 760px) {
  .nsrf { padding: 0; align-items: stretch; }
  .nsrf-card { max-height: 100vh; max-height: 100dvh; border-radius: 0; }
  .nsrf-head { border-radius: 0; }
  .nsrf-body { grid-template-columns: minmax(0, 1fr); padding: 10px; }
  .nsrf-cv { width: min(100%, 320px); }
  .nsrf-act { position: sticky; bottom: 0; background: #fff; padding: 8px 0; border-top: 1px solid #e3e7f0; }
  .nsrf-act .nsrf-btn { flex: 1 1 0; }
}
@media print { .nsrf { display: none !important; } }

/* rostro3: botones de acercamiento (Rostro, Busto, Cuerpo…) y «Usar este encuadre» */
.ot-tg-zoom { flex-wrap: wrap; gap: .2rem; }
.ot-tb-z { padding: .38rem .6rem; }
.ot-3d-tools .ot-tb-z em { display: inline; }
.ot-tb-enc { font-size: .78rem; padding: .34rem .55rem; border: 1px solid #ddcfbf; background: #fff; color: #3a2f2a; }
.ot-tb-enc.is-on { background: #3a2f2a; color: #fff; }
@media (max-width: 640px) { .ot-tg-zoom { padding-right: 0; border-right: 0; } .ot-tb-z { padding: .36rem .5rem; font-size: .82rem; } }

/* ===== detalles1: cola elegible (5 largos + «Recoger cola»), panel «Detalles» (chips combinables con mini iconos) y ramo ===== */
.ot-3d-wrap .ot-chips.ot-chips-cola { flex-wrap: wrap; overflow: visible; row-gap: .3rem; }
.ot-chips-cola .ot-chip { flex: none; white-space: nowrap; }
.ot-chips-cola .ot-chip[disabled] { opacity: .45; cursor: not-allowed; }
.ot-chips-cola .ot-cola-aviso { flex: 1 1 100%; font-size: .66rem; color: #8a5a3a; line-height: 1.3; }
.ot-det { gap: .3rem; }
.ot-det .ot-det-row { align-items: flex-start; row-gap: .25rem; }
.ot-det .ot-lk-l { padding-top: .45rem; min-width: 5.6rem; }
.ot-det .ot-lk-dots { padding-top: .1rem; }
.ot-chip-det { display: inline-flex; align-items: center; gap: .28rem; min-height: 32px; }
.ot-det-ic { flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; opacity: .85; }
.ot-chip-det.is-on .ot-det-ic { opacity: 1; }
.ot-det-sw { display: inline-block; flex: none; width: 12px; height: 12px; border-radius: 50%; box-shadow: 0 0 0 1px rgba(90,70,56,.4); }
.ot-det-sw-same { background: conic-gradient(#f1e8de, #d8c3a0, #f1e8de); }
.ot-det-sep { height: 1px; background: #eadfd4; margin: .1rem 0; }
.ot-det-note { margin: 0; font-size: .68rem; line-height: 1.35; color: #7a6a60; }
.ot-det-note[hidden] { display: none; }
@media (max-width: 700px) {
  .ot-det .ot-lk-l { flex: 1 1 100%; padding-top: 0; min-width: 0; }
  .ot-chip-det { min-height: 36px; padding: .2rem .65rem; font-size: .78rem; }
  .ot-det .ot-lk-chips { max-width: 100%; }
}

/* ═════════════════════════════════════════════════════════════════════════════
   ui1 · Estudio del maniquí 3D: el maniquí manda; opciones por pasos (cajón lateral o panel inferior)
   Todo cuelga de .ot-studio (no depende de la sesión; reutilizable en la propuesta). Paleta marfil / champagne / dorado suave.
   ═════════════════════════════════════════════════════════════════════════════ */
.ot-3d-wrap.ot-studio { --st-ink: #2b211c; --st-muted: #7a6a60; --st-gold: #b8975a; --st-gold-d: #96763a; --st-ivory: #faf6ef; --st-card: #fffdf9; --st-champ: #efe5d3; --st-line: #e6dac8;
  container-type: inline-size; container-name: ots; position: relative; padding: 0; margin: 0; border: 0; background: transparent; border-radius: 0; color: var(--st-ink); }
.ot-studio, .ot-studio * { box-sizing: border-box; }
.ot-studio button { font-family: inherit; }
.ot-studio :focus-visible { outline: 3px solid var(--st-gold); outline-offset: 2px; }
.ot-st-main { position: relative; display: flex; flex-direction: column; height: clamp(600px, calc(100svh - 110px), 960px); border-radius: 22px; overflow: hidden; background: var(--st-ivory); border: 1px solid var(--st-line); box-shadow: 0 22px 50px -28px rgba(60, 40, 20, .45); }
.ot-st-stagewrap { position: relative; flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; background: #f6f1ea; }
.ot-studio .ot-stage { flex: 1 1 auto; min-height: 0; height: auto !important; width: 100%; margin: 0 !important; border-radius: 0 !important; border: 0 !important; }
.ot-studio .ot-stage canvas.ot-canvas3d { position: absolute; inset: 0; width: 100% !important; height: 100% !important; }
.ot-studio .ot-3d-status { flex: none; margin: 0; padding: .4rem 1rem .45rem; font-size: .7rem; line-height: 1.25; letter-spacing: 0; text-transform: none; font-weight: 500; color: #6b5646 !important; background: rgba(250, 246, 239, .96); border-top: 1px solid var(--st-line);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.5em; }
.ot-studio .ot-3d-badge { top: auto !important; bottom: 10px; left: 12px; right: auto; font-size: .6rem; opacity: .75; }
.ot-studio .ot-3d-fit { position: absolute; top: 12px; left: 50%; transform: translateX(-50%); max-width: min(46%, 380px); right: auto; font-size: .64rem; line-height: 1.25; padding: .25rem .6rem; border-radius: 999px; background: rgba(255, 253, 249, .88); color: var(--st-muted); text-align: center; pointer-events: none; z-index: 3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ot-studio .ot-3d-fit:empty { display: none; }
.ot-studio[data-mode="clienta"] .ot-3d-fit, .ot-studio[data-mode="clienta"] .nc-host, .ot-studio[data-mode="clienta"] .ia-host { display: none !important; }
.ot-studio .ot-st-disc { margin: .7rem .3rem 0; font-size: .74rem; line-height: 1.4; color: var(--st-muted); }
.ot-studio.ot-st-full .ot-st-disc, .ot-studio.ot-st-full .nc-host, .ot-studio.ot-st-full .ia-host { display: none !important; }

/* barra flotante de vistas / zoom sobre el 3D */
.ot-st-tools { position: absolute; inset: 0 0 auto 0; bottom: 0; pointer-events: none; z-index: 6; }
.ot-st-tools > * { pointer-events: auto; }
.ot-st-tg { position: absolute; top: 10px; display: flex; gap: 2px; padding: 4px; background: rgba(255, 253, 249, .93); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); border: 1px solid var(--st-line); border-radius: 16px; box-shadow: 0 8px 22px -12px rgba(60, 40, 20, .5); }
.ot-st-tg-l { left: 10px; } .ot-st-tg-r { right: 10px; }
.ot-st-ib { position: relative; appearance: none; width: 46px; min-height: 46px; padding: 3px 0 2px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; border: 0; background: transparent; border-radius: 12px; color: #3a2e27; cursor: pointer; transition: background-color .15s, color .15s; }
.ot-st-ib svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ot-st-ib em { font-style: normal; font-size: .56rem; line-height: 1; letter-spacing: .01em; color: inherit; opacity: .8; }
.ot-st-ib:hover { background: #f3eadb; }
.ot-st-ib.is-on, .ot-st-ib[aria-pressed="true"] { background: var(--st-ink); color: #fff; }
.ot-st-ib::after { content: attr(data-tip); position: absolute; top: calc(100% + 8px); left: 50%; transform: translateX(-50%); white-space: nowrap; background: var(--st-ink); color: #fff; font-size: .7rem; padding: .3rem .55rem; border-radius: 8px; opacity: 0; pointer-events: none; transition: opacity .15s; z-index: 30; }
@media (hover: hover) { .ot-st-ib:hover::after, .ot-st-ib:focus-visible::after { opacity: 1; } }
.ot-st-popw { position: relative; }
.ot-st-pop { position: absolute; top: calc(100% + 8px); left: 0; z-index: 25; min-width: 200px; padding: 6px; display: flex; flex-direction: column; gap: 2px; background: var(--st-card); border: 1px solid var(--st-line); border-radius: 14px; box-shadow: 0 16px 34px -14px rgba(60, 40, 20, .55); }
.ot-st-pop[hidden] { display: none; }
.ot-st-pop-r, .ot-st-tg-r .ot-st-pop { left: auto; right: 0; }
.ot-st-pop button, .ot-st-pi { appearance: none; display: flex; align-items: center; gap: .6rem; width: 100%; min-height: 44px; padding: .45rem .7rem; border: 0; border-radius: 10px; background: transparent; color: var(--st-ink); font-size: .86rem; text-align: left; cursor: pointer; box-shadow: none; }
.ot-st-pop button:hover { background: #f6eddd; }
.ot-st-pop button em { font-style: normal; }
.ot-st-pop button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; flex: none; }
.ot-st-pop button[aria-pressed="true"] { background: var(--st-champ); font-weight: 600; }
.ot-studio[data-mode="taller"] .ot-st-m-t, .ot-studio[data-mode="clienta"] .ot-st-m-c { display: none; }
.ot-st-cta { position: absolute; left: 50%; transform: translateX(-50%); bottom: 54px; appearance: none; display: flex; align-items: center; gap: .5rem; min-height: 48px; padding: 0 1.25rem; border: 0; border-radius: 999px; background: var(--st-ink); color: #fff; font-weight: 600; font-size: .9rem; cursor: pointer; box-shadow: 0 12px 26px -12px rgba(30, 18, 10, .75); transition: transform .15s, background-color .15s; white-space: nowrap; }
.ot-st-cta:hover { background: #4a382d; transform: translateX(-50%) translateY(-1px); }
.ot-st-cta svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.ot-st-cta em { font-style: normal; }

/* panel de opciones */
.ot-st-panel { position: relative; flex: none; display: flex; flex-direction: column; min-height: 0; background: var(--st-card); border-top: 1px solid var(--st-line); container-type: inline-size; container-name: otp; }
.ot-st-grab { appearance: none; position: relative; display: flex; justify-content: center; align-items: center; width: 100%; height: 26px; padding: 0; border: 0; background: transparent; cursor: grab; touch-action: none; flex: none; }
.ot-st-grab::before { content: ""; position: absolute; inset: -10px 0 -6px; }
.ot-st-grab i { display: block; width: 44px; height: 5px; border-radius: 99px; background: #d9ccb8; }
.ot-st-head { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: 12px 14px 4px; flex: none; }
.ot-st-brand { display: flex; flex-direction: column; line-height: 1.15; min-width: 0; }
.ot-st-brand b { font-family: var(--dash-serif, "Cormorant Garamond", Georgia, serif); font-size: 1.2rem; font-weight: 600; letter-spacing: .01em; }
.ot-st-brand small { font-size: .7rem; color: var(--st-muted); }
.ot-st-modes { display: inline-flex; padding: 3px; border-radius: 999px; background: var(--st-champ); flex: none; }
.ot-st-modes button { appearance: none; min-height: 36px; padding: 0 .85rem; border: 0; border-radius: 999px; background: transparent; color: var(--st-muted); font-size: .76rem; font-weight: 600; cursor: pointer; transition: background-color .15s, color .15s; }
.ot-st-modes button[aria-pressed="true"] { background: var(--st-ink); color: #fff; }
.ot-st-tabs { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; padding: 8px 10px 4px; flex: none; }
.ot-st-tab { position: relative; appearance: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; min-height: 62px; padding: 6px 2px 5px; border: 1.5px solid transparent; border-radius: 14px; background: transparent; color: #5b4c42; cursor: pointer; transition: background-color .18s, border-color .18s, color .18s, transform .18s; }
.ot-st-tab svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.ot-st-tab b { font-size: .66rem; font-weight: 600; line-height: 1.1; text-align: center; letter-spacing: .01em; }
.ot-st-tab b .l { display: none; }
.ot-st-tab .ot-st-n { position: absolute; top: 3px; left: 5px; font-size: .56rem; font-weight: 700; color: #b3a28d; }
.ot-st-tab:hover { background: #f8f0e3; }
.ot-st-tab.is-on { background: linear-gradient(#fffaf0, #f4e8d0); border-color: var(--st-gold); color: var(--st-ink); box-shadow: 0 8px 16px -12px rgba(150, 110, 40, .7); }
.ot-st-tab.is-on .ot-st-n { color: var(--st-gold-d); }
@container otp (min-width: 440px) { .ot-st-tab b .l { display: inline; } .ot-st-tab b .sh { display: none; } .ot-st-tab b { font-size: .7rem; } }
.ot-st-subs { display: flex; gap: 6px; padding: 6px 12px 6px; overflow-x: auto; scrollbar-width: none; flex: none; }
.ot-st-subs::-webkit-scrollbar { display: none; }
.ot-st-subs:empty { display: none; }
.ot-st-sub { appearance: none; flex: none; min-height: 40px; padding: 0 1rem; border: 1.5px solid var(--st-line); border-radius: 999px; background: #fff; color: #5b4c42; font-size: .8rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: background-color .15s, border-color .15s, color .15s; }
.ot-st-sub:hover { border-color: #cdb68a; }
.ot-st-sub.is-on { background: var(--st-ink); border-color: var(--st-ink); color: #fff; }
.ot-st-sub.ot-st-more { background: transparent; border-style: dashed; color: var(--st-muted); }
.ot-st-sub.ot-st-more[aria-pressed="true"] { color: var(--st-ink); }
@media (pointer: coarse) { .ot-st-sub { min-height: 44px; } }
.ot-studio[data-mode="taller"] .ot-st-more { display: none; }
.ot-studio[data-mode="clienta"][data-more="0"] [data-adv] { display: none !important; }
.ot-st-ttl { padding: 6px 16px 2px; flex: none; }
.ot-st-ttl h3 { margin: 0; font-family: var(--dash-serif, "Cormorant Garamond", Georgia, serif); font-size: 1.32rem; font-weight: 600; line-height: 1.15; color: var(--st-ink); }
.ot-st-ttl p { margin: .15rem 0 0; font-size: .8rem; line-height: 1.35; color: var(--st-muted); }
.ot-st-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; padding: 8px 14px 16px; scrollbar-width: thin; scrollbar-color: #d9ccb8 transparent; scroll-behavior: smooth; }
.ot-st-body:focus { outline: none; }
.ot-st-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid #efe5d6; background: var(--st-card); flex: none; }
.ot-st-nav { appearance: none; min-height: 46px; padding: 0 1.1rem; border: 1.5px solid var(--st-line); border-radius: 999px; background: #fff; color: var(--st-ink); font-size: .86rem; font-weight: 600; cursor: pointer; transition: background-color .15s, opacity .15s; }
.ot-st-nav:hover:not(:disabled) { border-color: #cdb68a; }
.ot-st-nav:disabled { opacity: .38; cursor: default; }
.ot-st-nav-go { background: var(--st-ink); border-color: var(--st-ink); color: #fff; }
.ot-st-nav-go:hover:not(:disabled) { background: #4a382d; border-color: #4a382d; }
.ot-st-count { font-size: .76rem; color: var(--st-muted); letter-spacing: .08em; }

/* secciones: solo se ve la del paso activo */
.ot-studio [data-g] { display: none; }
.ot-studio .ot-look, .ot-studio .ot-det { display: contents !important; }
.ot-studio [data-look-panel][hidden], .ot-studio [data-det-panel][hidden] { display: contents !important; }
.ot-studio[data-act="vestido.corte"] [data-g~="vestido.corte"] { display: block; }
.ot-studio[data-act="vestido.escote"] [data-g~="vestido.escote"] { display: block; }
.ot-studio[data-act="vestido.espalda"] [data-g~="vestido.espalda"] { display: block; }
.ot-studio[data-act="vestido.manga"] [data-g~="vestido.manga"] { display: block; }
.ot-studio[data-act="vestido.cola"] [data-g~="vestido.cola"] { display: block; }
.ot-studio[data-act="tela.tela"] [data-g~="tela.tela"] { display: block; }
.ot-studio[data-act="tela.color"] [data-g~="tela.color"] { display: block; }
.ot-studio[data-act="detalles.main"] [data-g~="detalles.main"] { display: block; }
.ot-studio[data-act="velo.velo"] [data-g~="velo.velo"] { display: block; }
.ot-studio[data-act="velo.tocado"] [data-g~="velo.tocado"] { display: block; }
.ot-studio[data-act="velo.ramo"] [data-g~="velo.ramo"] { display: block; }
.ot-studio[data-act="ella.rostro"] [data-g~="ella.rostro"] { display: block; }
.ot-studio[data-act="ella.cuerpo"] [data-g~="ella.cuerpo"] { display: block; }
.ot-studio[data-act="ella.piel"] [data-g~="ella.piel"] { display: block; }
.ot-studio[data-act="ella.look"] [data-g~="ella.look"] { display: block; }
.ot-studio[data-act="ella.medidas"] [data-g~="ella.medidas"] { display: block; }
.ot-studio[data-act="ambiente.escena"] [data-g~="ambiente.escena"] { display: block; }
.ot-studio[data-act="ambiente.fondo"] [data-g~="ambiente.fondo"] { display: block; }
.ot-studio[data-act="ambiente.viento"] [data-g~="ambiente.viento"] { display: block; }
.ot-studio .ot-st-g { margin: 0; padding: 0; min-width: 0; }

/* desplegables de siempre → tarjetas visuales con miniatura */
.ot-studio .ot-esc { display: block; width: 100%; min-width: 0; }
.ot-studio .ot-esc-cur { display: none !important; }
.ot-studio .ot-esc-lab { display: none; }
.ot-studio .ot-st-g--multi .ot-esc-lab { display: block; margin: 14px 0 2px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); }
.ot-studio .ot-st-g--multi > .ot-esc:first-child .ot-esc-lab, .ot-studio .ot-st-g--multi > .ot-lk-tia:first-child .ot-esc-lab { margin-top: 2px; }
.ot-studio .ot-esc-grid, .ot-studio .ot-esc-grid[hidden], .ot-studio .ot-lk-tia .ot-esc-grid, .ot-studio .ot-lk-tia.ot-lk-hair .ot-esc-grid, .ot-studio .ot-esc[data-esc-key="espalda"] .ot-esc-grid {
  display: grid !important; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px; margin: 6px 0 4px; padding: 2px; background: none; border: 0; border-radius: 0; max-height: none !important; overflow: visible !important; position: static !important; box-shadow: none !important; }
.ot-studio .ot-esc-opt { position: relative; appearance: none; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap: .4rem; min-height: 98px; min-width: 0; padding: .6rem .3rem .5rem; border: 1.5px solid #eadfcf; border-radius: 16px; background: #fff; color: var(--st-ink); font-size: .74rem; line-height: 1.15; text-align: center; cursor: pointer; box-shadow: none; transition: border-color .15s, transform .15s, box-shadow .15s, background-color .15s; }
.ot-studio .ot-esc-opt span { overflow-wrap: anywhere; hyphens: auto; }
.ot-studio .ot-esc-opt:hover { border-color: #cdb68a; transform: translateY(-1px); box-shadow: 0 10px 20px -14px rgba(100, 70, 30, .6); }
.ot-studio .ot-esc-opt.is-on { border-color: var(--st-gold); background: linear-gradient(#fffaf0, #f6ead2); box-shadow: 0 0 0 2px rgba(184, 151, 90, .35) inset, 0 10px 20px -14px rgba(150, 110, 40, .7); font-weight: 600; }
.ot-studio .ot-esc-opt.is-on::after { content: "✓"; position: absolute; top: 5px; right: 6px; width: 18px; height: 18px; border-radius: 50%; background: var(--st-gold); color: #fff; font-size: .68rem; line-height: 18px; text-align: center; font-weight: 700; }
.ot-studio .ot-esc-ic { width: 60px; height: 52px; flex: none; }
.ot-studio .ot-esc-ic-sc { width: 64px; height: 54px; border-radius: 8px; }
.ot-studio .ot-lk-tia { position: static; margin: 0 0 6px; }
.ot-studio .ot-lk-tiaopt { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 8px 0 12px; padding: 10px 12px; border-radius: 14px; background: var(--st-ivory); border: 1px solid #efe5d6; }

/* chips, filas y botones pequeños de siempre → botones cómodos */
.ot-studio .ot-chips { display: flex; flex-wrap: wrap !important; overflow: visible !important; align-items: center; gap: 8px; margin: 0 0 12px; min-width: 0; }
.ot-studio .ot-chips > span:first-child { flex: 1 1 100%; min-width: 0; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); }
.ot-studio .ot-chip, .ot-studio .ot-lk-reset, .ot-studio .ot-color-more, .ot-studio .ot-color-clear { appearance: none; min-height: 42px; padding: .4rem .95rem; border: 1.5px solid var(--st-line); border-radius: 999px; background: #fff; color: #4a3b32; font-size: .8rem; line-height: 1.2; font-weight: 500; white-space: normal; cursor: pointer; transition: background-color .15s, border-color .15s, color .15s; display: inline-flex; align-items: center; gap: .4rem; flex: none; }
.ot-studio .ot-chip:hover, .ot-studio .ot-color-more:hover { border-color: #cdb68a; }
.ot-studio .ot-chip.is-on, .ot-studio .ot-chip[aria-pressed="true"] { background: var(--st-ink); border-color: var(--st-ink); color: #fff; }
.ot-studio .ot-chip:disabled { opacity: .45; cursor: default; }
.ot-studio .ot-chip-det .ot-det-ic { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.ot-studio .ot-lk-row, .ot-studio .ot-det-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 14px; padding: 0; border: 0; background: none; }
.ot-studio .ot-lk-l, .ot-studio .ot-vopt-l { flex: 1 1 100%; margin: 4px 0 0; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); font-weight: 500; }
.ot-studio .ot-lk-chips, .ot-studio .ot-lk-dots { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; flex: 1 1 100%; }
.ot-studio .ot-lk-sep { display: none; }
.ot-studio .ot-lk-dot, .ot-studio .ot-sw-c, .ot-studio .ot-vsw { appearance: none; width: 38px; height: 38px; border-radius: 50%; border: 2px solid #fff; background: var(--c, #ddd); box-shadow: 0 0 0 1.5px #d9ccb8; cursor: pointer; padding: 0; transition: box-shadow .15s, transform .15s; flex: none; }
.ot-studio .ot-lk-dot:hover, .ot-studio .ot-sw-c:hover, .ot-studio .ot-vsw:hover { transform: scale(1.08); }
.ot-studio .ot-lk-dot.is-on, .ot-studio .ot-sw-c.is-on, .ot-studio .ot-vsw.is-on { box-shadow: 0 0 0 2.5px var(--st-gold), 0 6px 12px -6px rgba(100, 70, 30, .6); }
.ot-studio .ot-sw-c.is-white { box-shadow: 0 0 0 1.5px #cbbfae; }
@media (pointer: coarse) { .ot-studio .ot-lk-dot, .ot-studio .ot-sw-c, .ot-studio .ot-vsw { width: 44px; height: 44px; } }
.ot-studio .ot-vopt { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 6px 0 12px; padding: 12px; border-radius: 14px; background: var(--st-ivory); border: 1px solid #efe5d6; }
.ot-studio .ot-det-note, .ot-studio .ot-st-note, .ot-studio .ot-escena-note, .ot-studio .ot-mov-note, .ot-studio .ot-cola-aviso { flex: 1 1 100%; margin: 4px 0 10px; font-size: .76rem; line-height: 1.4; color: var(--st-muted); }
.ot-studio .ot-det-sep { display: none; }
.ot-studio .ot-vol { align-items: center; }
.ot-studio .ot-vol input[type=range] { flex: 1 1 140px; min-width: 120px; accent-color: var(--st-gold-d); height: 30px; }
.ot-studio .ot-vol-reset { appearance: none; min-width: 44px; min-height: 44px; border-radius: 50%; border: 1.5px solid var(--st-line); background: #fff; cursor: pointer; }
.ot-studio .ot-escena { display: block; margin: 0; }
.ot-studio .ot-escena > .ot-esc { width: 100%; flex: none; }
.ot-studio .ot-mov { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.ot-studio .ot-mov .ot-vopt-l { margin-top: 0; }
.ot-studio .ot-tb-desf { appearance: none; display: inline-flex; align-items: center; gap: .45rem; min-height: 42px; padding: .4rem .95rem; border: 1.5px solid var(--st-line); border-radius: 999px; background: #fff; color: #4a3b32; font-size: .8rem; cursor: pointer; }
.ot-studio .ot-tb-desf svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.ot-studio .ot-tb-desf em { font-style: normal; }
.ot-studio .ot-tb-desf.is-on { background: var(--st-ink); color: #fff; border-color: var(--st-ink); }
.ot-st-fit { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.ot-st-fit .ot-tb { appearance: none; min-height: 42px; padding: .4rem .95rem; border: 1.5px solid var(--st-line); border-radius: 999px; background: #fff; color: #4a3b32; font-size: .8rem; cursor: pointer; }
.ot-st-fit .ot-tb.is-on { background: var(--st-ink); color: #fff; border-color: var(--st-ink); }
.ot-st-fit .ot-tb:disabled { opacity: .45; cursor: default; }

/* color del vestido / fondo */
.ot-studio .ot-color, .ot-studio .ot-color-compact { margin: 0 0 10px; padding: 0; border: 0; background: none; }
.ot-studio .ot-color-row { display: flex; flex-direction: column; align-items: stretch; gap: 10px; }
.ot-studio .ot-color-h { display: flex; align-items: baseline; gap: .6rem; }
.ot-studio .ot-color-t { font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); }
.ot-studio .ot-color-now { font-size: .86rem; font-weight: 600; }
.ot-studio .ot-color-sw { display: flex; flex-wrap: wrap; gap: 10px; }
.ot-studio .ot-color-more, .ot-studio .ot-color-clear, .ot-studio .ot-fondo-deg { align-self: flex-start; }
.ot-studio .ot-color-free { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 10px; padding: 12px; border-radius: 14px; background: var(--st-ivory); border: 1px solid #efe5d6; }
.ot-studio .ot-color-free[hidden] { display: none; }
.ot-studio .ot-color-hex, .ot-studio .ot-color-name { min-height: 42px; padding: 0 .8rem; border: 1.5px solid var(--st-line); border-radius: 12px; background: #fff; font: inherit; font-size: .84rem; max-width: 100%; }
.ot-studio .ot-color-hex { width: 7.5rem; } .ot-studio .ot-color-name { flex: 1 1 140px; }
.ot-studio .ot-color-pick { width: 44px; height: 44px; border: 0; padding: 0; background: none; cursor: pointer; }
.ot-studio .ot-color-chk { display: flex; align-items: center; gap: .5rem; font-size: .82rem; flex: 1 1 100%; min-height: 36px; }
.ot-studio .ot-color + .ot-color { margin-top: 10px; }

/* telas: muestras */
.ot-tela-grp { margin: 0 0 14px; }
.ot-tela h4 { margin: 0 0 8px; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); font-weight: 500; }
.ot-tl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(92px, 1fr)); gap: 10px; }
.ot-studio .ot-tl { position: relative; appearance: none; display: flex; flex-direction: column; align-items: stretch; gap: 6px; min-height: 92px; padding: 7px 7px 8px; border: 1.5px solid #eadfcf; border-radius: 16px; background: #fff; color: var(--st-ink); font-size: .72rem; line-height: 1.15; text-align: center; cursor: pointer; transition: border-color .15s, transform .15s, box-shadow .15s; }
.ot-studio .ot-tl:hover { border-color: #cdb68a; transform: translateY(-1px); }
.ot-studio .ot-tl.is-on { border-color: var(--st-gold); background: linear-gradient(#fffaf0, #f6ead2); box-shadow: 0 0 0 2px rgba(184, 151, 90, .35) inset; font-weight: 600; }
.ot-studio .ot-tl.is-on::after { content: "✓"; position: absolute; top: 10px; right: 10px; width: 18px; height: 18px; border-radius: 50%; background: var(--st-gold); color: #fff; font-size: .68rem; line-height: 18px; font-weight: 700; }
.ot-tl-sw { display: block; width: 100%; height: 46px; border-radius: 10px; border: 1px solid rgba(60, 40, 20, .1); }
.ot-tela-opt { margin: 0 0 14px; padding: 12px; border-radius: 14px; background: var(--st-ivory); border: 1px solid #efe5d6; }
.ot-tela-opt .ot-fab-opt { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 6px; }
.ot-tela-opt .ot-fab-opt i { flex: 1 1 100%; font-style: normal; font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; color: var(--st-muted); }

/* pantalla completa */
html.ot-st-lock { overflow: hidden; }
.ot-3d-wrap.ot-studio.ot-st-full { position: fixed; inset: 0; z-index: 2000; background: #f6f1ea; padding: 0; }
.ot-st-full .ot-st-main { height: 100svh; height: 100dvh; border-radius: 0; border: 0; box-shadow: none; }

/* ancho: cajón lateral; estrecho: panel inferior deslizable (el 3D siempre arriba) */
@container ots (min-width: 700px) {
  .ot-st-main { flex-direction: row; }
  .ot-st-panel { width: clamp(330px, 38%, 470px); height: 100%; border-top: 0; border-left: 1px solid var(--st-line); }
  .ot-st-grab { display: none; }
  .ot-st-head { padding-top: 14px; }
}
@container ots (max-width: 699.98px) {
  .ot-st-main { height: clamp(560px, calc(100svh - 84px), 980px); }
  .ot-st-panel { height: var(--sheet-h, 50%); transition: height .28s cubic-bezier(.2, .8, .2, 1); border-radius: 20px 20px 0 0; margin-top: -18px; z-index: 8; box-shadow: 0 -14px 30px -18px rgba(60, 40, 20, .5); }
  .ot-studio[data-sheet="min"] .ot-st-panel { --sheet-h: auto; }
  .ot-studio[data-sheet="mid"] .ot-st-panel { --sheet-h: 52%; }
  .ot-studio[data-sheet="max"] .ot-st-panel { --sheet-h: 84%; }
  .ot-studio[data-sheet="min"] .ot-st-head, .ot-studio[data-sheet="min"] .ot-st-subs, .ot-studio[data-sheet="min"] .ot-st-ttl, .ot-studio[data-sheet="min"] .ot-st-body, .ot-studio[data-sheet="min"] .ot-st-foot { display: none; }
  .ot-studio[data-sheet="mid"] .ot-st-head, .ot-studio[data-sheet="mid"] .ot-st-ttl p { display: none; }
  .ot-st-ttl { padding-top: 2px; } .ot-st-ttl h3 { font-size: 1.12rem; }
  .ot-st-tab { min-height: 56px; } .ot-st-tab svg { width: 22px; height: 22px; }
  .ot-st-foot { padding-top: 6px; padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px)); }
  .ot-st-nav { min-height: 44px; }
  /* barras flotantes en columna para no tapar el maniquí */
  .ot-st-tg { flex-direction: column; } .ot-st-tg-l { top: 8px; left: 8px; } .ot-st-tg-r { top: 8px; right: 8px; }
  .ot-st-ib::after { top: 50%; left: calc(100% + 8px); transform: translateY(-50%); }
  .ot-st-tg-r .ot-st-ib::after { left: auto; right: calc(100% + 8px); }
  .ot-st-pop { top: 0; left: auto; right: calc(100% + 8px); }
  .ot-st-cta { bottom: 46px; min-height: 46px; padding: 0 1rem; font-size: .84rem; }
  .ot-studio .ot-3d-status { display: none; }
  .ot-studio .ot-3d-fit { display: none; }
}
@container ots (max-width: 420px) { .ot-st-tab { min-height: 54px; } .ot-st-tab .ot-st-n { display: none; } .ot-st-ib { width: 44px; min-height: 44px; } .ot-st-tabs { gap: 2px; padding-inline: 6px; } .ot-st-body { padding-inline: 12px; } .ot-studio .ot-esc-grid, .ot-studio .ot-esc-grid[hidden], .ot-studio .ot-lk-tia .ot-esc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .ot-tl-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } }
@media (prefers-reduced-motion: reduce) { .ot-studio *, .ot-studio *::before, .ot-studio *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* ui1: con poco ancho (móvil o escritorio angosto) las barras flotantes van en columna, solo iconos, para no tapar al maniquí */
@container ots (max-width: 899.98px) {
  .ot-st-ib em { display: none; } .ot-st-ib { width: 44px; min-height: 44px; } .ot-st-tg { padding: 3px; gap: 1px; border-radius: 14px; flex-direction: column; }
  .ot-st-tg-l { top: 8px; left: 8px; } .ot-st-tg-r { top: 8px; right: 8px; }
  .ot-st-ib::after { top: 50%; left: calc(100% + 8px); transform: translateY(-50%); }
  .ot-st-tg-r .ot-st-ib::after { left: auto; right: calc(100% + 8px); }
  .ot-st-pop { top: 0; left: auto; right: calc(100% + 8px); }
  .ot-studio .ot-3d-status { display: none; }
}

/* natural1: forro interior y monograma secreto (paso Detalles) */
.ot-forro { margin: 10px 0 0; padding: 12px 12px 4px; border-radius: 14px; background: #faf6ef; border: 1px solid #efe5d6; }
.ot-mono-row { align-items: flex-end !important; }
.ot-mono-f { display: flex; flex-direction: column; gap: 3px; font-size: .68rem; color: #7a6a60; }
.ot-mono-f input { min-height: 42px; padding: .35rem .7rem; border: 1.5px solid #e6dac8; border-radius: 12px; background: #fff; font: inherit; font-size: .95rem; color: #2b211c; }
.ot-mono-f input[data-mono-text] { width: 7.5em; text-transform: uppercase; letter-spacing: .12em; font-family: Georgia, "Times New Roman", serif; }
.ot-mono-f input:focus { outline: 2px solid #b8975a; outline-offset: 1px; }
.ot-mono-pv { --hilo: #b8913a; --forro: #f4ecdc; display: inline-flex; flex-direction: column; align-items: center; justify-content: center; min-width: 88px; min-height: 52px; padding: 4px 12px; border-radius: 10px; border: 1px dashed rgba(120, 90, 50, .35);
  background: var(--forro); color: var(--hilo); font: italic 600 1.15rem/1 Georgia, "Times New Roman", serif; letter-spacing: .08em; text-shadow: 0 1px 0 rgba(255, 255, 255, .55), 0 -1px 0 rgba(0, 0, 0, .18); }
.ot-mono-pv small { margin-top: 3px; font: 500 .62rem/1 Georgia, serif; letter-spacing: .14em; font-style: normal; }
.ot-mono-pv.is-empty { color: rgba(122, 106, 96, .4); text-shadow: none; }
.ot-studio .ot-forro-ver { border-style: dashed; }

/* manga2: un solo bloque «Largo» + «Ajuste» de la manga, con el mismo estilo que «Volumen» */
.ot-sleeve-ctl { display: flex; flex-direction: column; gap: .35rem; margin-top: .55rem; }
.ot-sleeve-ctl .ot-vol { display: flex; flex-wrap: nowrap; align-items: center; gap: .5rem; margin: 0; }
.ot-sleeve-ctl .ot-vol > span { flex: none; width: 3.6rem; font-size: .66rem; letter-spacing: .14em; text-transform: uppercase; color: #6d5a4f; font-weight: 600; }
.ot-sleeve-ctl .ot-ml-v { min-width: 7.4rem; white-space: nowrap; }
.ot-sleeve-ctl .ot-ml-note { margin: .1rem 0 0; font-size: .74rem; line-height: 1.35; }
@media (max-width: 560px) { .ot-sleeve-ctl .ot-ml-v { min-width: 6.6rem; font-size: .7rem; } .ot-sleeve-ctl .ot-vol > span { width: 3.1rem; } }
