/* ══════════════════════════════════════════════════════════════════════════
   Asistente por pasos para CREAR un tándem (one-page quiz estilo Duolingo).
   Solo se carga con TANDEM_WIZARD_ENABLED. Es una PIEL sobre #tandemProposeModal:
   oculta la cabecera/formulario/pie clásicos (.tw-on) y pinta el asistente (.tw).
   Colores del "join a tandem": turquesa/oscuro/azul/amarillo PBC. Nada de verde.
   ══════════════════════════════════════════════════════════════════════════ */
:root{
  --tw-teal:#02A9CA; --tw-dark:#0A5F73; --tw-blue:#1666D6; --tw-yellow:#FFD400;
  --tw-fill-teal:#D6EFF7; --tw-fill-blue:#E6F0FC;
  --tw-ink:#12313A; --tw-muted:#6B8792; --tw-line:#E2EEF2;
}

/* Con el asistente puesto, esconde el formulario clásico dentro del mismo modal. */
.tandem-modal-dialog.tw-on > .tandem-modal-header,
.tandem-modal-dialog.tw-on > #tandemProposeForm,
.tandem-modal-dialog.tw-on > .tandem-modal-header + form,
.tandem-modal-dialog.tw-on > div.px-4.py-3.border-t,
.tandem-modal-dialog.tw-on > .tw-hidden-classic{ display:none !important; }

.tandem-modal-dialog.tw-on{ padding:0; overflow:hidden; }

/* Contenedor del asistente */
.tw, .tw *{ box-sizing:border-box; }
.tw{ display:flex; flex-direction:column; min-height:560px; max-height:88vh; }
@media (min-width:640px){ .tw{ width:430px; max-width:92vw; min-height:600px; } }

.tw-top{ display:flex; align-items:center; gap:12px; padding:16px 18px 6px; }
.tw-back,.tw-x{ width:34px; height:34px; border-radius:10px; border:none; background:#EEF6F9;
  color:var(--tw-dark); font-size:18px; cursor:pointer; flex:0 0 auto; line-height:1; }
.tw-x{ font-size:16px; }
.tw-back[hidden]{ visibility:hidden; }
.tw-bar{ flex:1; height:13px; border-radius:10px; background:#E3EEF2; overflow:hidden; }
.tw-bar > i{ display:block; height:100%; border-radius:10px; width:16%;
  background:linear-gradient(90deg,var(--tw-teal),#1BC3E0); transition:width .28s ease; }

.tw-body{ flex:1; min-height:0; overflow-y:auto; padding:8px 20px 4px; }
.tw-ask{ display:flex; gap:12px; align-items:flex-start; margin:6px 0 20px; }
.tw-mascot{ font-size:32px; line-height:1; flex:0 0 auto;
  filter:drop-shadow(0 3px 4px rgba(10,95,115,.18)); }
.tw-bubble{ position:relative; background:var(--tw-fill-teal); color:var(--tw-dark);
  padding:12px 15px; border-radius:16px; font-size:16px; font-weight:700; line-height:1.35; }
.tw-bubble:after{ content:""; position:absolute; left:-8px; top:15px; border:7px solid transparent;
  border-right-color:var(--tw-fill-teal); border-left:0; }

.tw-sub{ font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--tw-muted);
  font-weight:800; margin:-8px 0 12px; }

/* Par de idiomas */
.tw-pair{ display:flex; flex-direction:column; gap:10px; position:relative; }
.tw-lang{ border:2px solid var(--tw-line); border-radius:18px; padding:14px 16px; cursor:pointer;
  background:#fff; text-align:left; width:100%; }
.tw-lang small{ display:block; font-size:12px; font-weight:800; text-transform:uppercase;
  letter-spacing:.04em; color:var(--tw-muted); margin-bottom:3px; }
.tw-lang b{ font-size:20px; color:var(--tw-ink); }
/* Sin idioma elegido aún: el tile pregunta ("Choose a language"), en tono apagado. */
.tw-lang.unset b{ color:var(--tw-muted); font-weight:600; font-style:italic; }
.tw-lang .tw-chev{ float:right; color:var(--tw-muted); font-size:15px; margin-top:6px; }
/* "Otro 🌍": campo para escribir el idioma a mano, bajo el tile de su lado. */
.tw-other{ width:100%; border:2px solid var(--tw-line); border-radius:14px; padding:12px 14px;
  font-size:16px; color:var(--tw-ink); background:#fff; box-sizing:border-box; margin-top:-2px; }
.tw-other:focus{ outline:none; border-color:var(--tw-teal); }
.tw-swap{ position:absolute; right:16px; top:50%; transform:translateY(-50%);
  width:44px; height:44px; border-radius:50%; background:#fff; border:2px solid var(--tw-teal);
  color:var(--tw-teal); font-size:20px; cursor:pointer; box-shadow:0 4px 0 rgba(2,169,202,.25);
  z-index:2; line-height:1; }

/* Lista de opciones (nivel, tamaño) */
.tw-opts{ display:flex; flex-direction:column; gap:12px; }
.tw-opt{ display:flex; align-items:center; gap:14px; border:2px solid var(--tw-line); border-radius:18px;
  padding:16px 18px; cursor:pointer; background:#fff; font-size:17px; font-weight:700; color:var(--tw-ink);
  text-align:left; width:100%; }
.tw-opt .tw-ico{ font-size:22px; flex:0 0 auto; }
.tw-opt.sel{ border-color:var(--tw-teal); background:var(--tw-fill-teal); }
.tw-opt .tw-tag{ margin-left:auto; font-size:13px; font-weight:800; color:var(--tw-muted); }

/* Tarjetas de tipo */
.tw-cards{ display:flex; gap:14px; }
.tw-card{ flex:1; border:2px solid var(--tw-line); border-radius:20px; padding:22px 12px; text-align:center;
  cursor:pointer; background:#fff; }
.tw-card.sel{ border-color:var(--tw-blue); background:var(--tw-fill-blue); }
.tw-card .tw-big{ font-size:38px; }
.tw-card b{ display:block; margin-top:10px; font-size:16px; color:var(--tw-ink); }
.tw-card span{ display:block; font-size:13px; color:var(--tw-muted); margin-top:3px; }

/* Tamaños de grupo (parejas) */
.tw-size{ display:flex; align-items:center; gap:14px; border:2px solid var(--tw-line); border-radius:18px;
  padding:16px 18px; cursor:pointer; background:#fff; width:100%; text-align:left; }
.tw-size.sel{ border-color:var(--tw-blue); background:var(--tw-fill-blue); }
.tw-size .tw-n{ font-size:22px; font-weight:900; color:var(--tw-blue); min-width:62px; }
.tw-size .tw-d{ font-size:14px; color:var(--tw-muted); font-weight:600; }

/* Calendario */
.tw-cal-h{ display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.tw-cal-h b{ font-size:17px; color:var(--tw-ink); }
.tw-cal-h button{ border:none; background:#EEF6F9; color:var(--tw-dark); width:32px; height:32px;
  border-radius:9px; cursor:pointer; font-size:15px; }
.tw-cal-h button[disabled]{ opacity:.35; cursor:default; }
.tw-dow{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin-bottom:6px; }
.tw-dow span{ text-align:center; font-size:11px; font-weight:800; color:var(--tw-muted); text-transform:uppercase; }
.tw-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
/* Blindaje contra el "aplasta-grids" móvil de global-responsive.css
   ([class*="grid"]{grid-template-columns:1fr !important}): más especificidad
   (.tw .tw-grid) + !important para ganar siempre las 7 columnas. */
.tw .tw-grid{ grid-template-columns:repeat(7,1fr) !important; }
/* min-height de RESPALDO: el WebView del movil de Guille no entiende aspect-ratio
   y dejaba las celdas con altura 0 (calendario "en blanco", nada que tocar). */
.tw-day{ aspect-ratio:1; min-height:44px; border:none; border-radius:12px; display:flex; align-items:center;
  justify-content:center; font-size:15px; font-weight:700; color:var(--tw-ink); cursor:pointer;
  background:#F4FAFC; }
.tw-day.mut{ color:#C4D6DD; background:transparent; cursor:default; }
.tw-day.sel{ background:var(--tw-teal); color:#fff; box-shadow:0 4px 0 rgba(2,169,202,.35); }
.tw-day.today{ outline:2px solid var(--tw-teal); outline-offset:-2px; }

/* Respaldo del calendario: selector de fecha nativo del telefono. */
.tw-date-native{ width:100%; border:2px solid var(--tw-line); border-radius:16px;
  padding:16px; font-size:18px; font-weight:700; color:var(--tw-ink); background:#fff; }

/* Chivato temporal de diagnostico del calendario (solo allowlist). */
.tw-debug{ margin-top:10px; text-align:center; font-size:11px; color:#9DB6BF; }

/* Ruleta de hora */
.tw-wheel{ position:relative; height:220px; overflow:hidden; margin:4px 0;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent);
          mask-image:linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent); }
.tw-band{ position:absolute; left:0; right:0; top:50%; transform:translateY(-50%); height:50px;
  background:var(--tw-fill-teal); border-radius:12px; z-index:0; pointer-events:none; }
.tw-reel{ position:relative; z-index:1; }
.tw-tick{ height:50px; display:flex; align-items:center; justify-content:center;
  font-size:21px; font-weight:800; color:#B7CBD3; scroll-snap-align:center;
  transition:color .12s ease, font-size .12s ease; }
.tw-tick.mid{ color:var(--tw-dark); font-size:25px; }
.tw-scroll{ position:absolute; top:0; right:0; bottom:0; left:0; overflow-y:scroll; z-index:2; scroll-snap-type:y mandatory;
  -ms-overflow-style:none; scrollbar-width:none; }
.tw-scroll::-webkit-scrollbar{ display:none; }
.tw-spacer{ height:85px; }

/* Duración (segmentos) */
.tw-dur{ display:flex; gap:8px; margin-top:16px; }
.tw-dur button{ flex:1; border:2px solid var(--tw-line); background:#fff; border-radius:12px;
  padding:10px; font-size:14px; font-weight:800; color:var(--tw-muted); cursor:pointer; }
.tw-dur button.sel{ border-color:var(--tw-teal); background:var(--tw-fill-teal); color:var(--tw-dark); }
.tw-dur-lbl{ font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--tw-muted);
  font-weight:800; margin-top:18px; }

/* Repaso */
.tw-sum{ border:2px solid var(--tw-line); border-radius:20px; overflow:hidden; }
.tw-row{ display:flex; align-items:center; gap:12px; padding:14px 15px; border-bottom:1px solid var(--tw-line);
  width:100%; background:#fff; text-align:left; border-left:none; border-right:none; border-top:none; cursor:default; }
.tw-row:last-child{ border-bottom:none; }
.tw-row .tw-ri{ font-size:19px; width:26px; text-align:center; flex:0 0 auto; }
.tw-row > div{ flex:1; min-width:0; }
.tw-row .tw-rl{ font-size:11px; font-weight:800; text-transform:uppercase; color:var(--tw-muted); }
.tw-row .tw-rv{ font-size:16px; font-weight:700; color:var(--tw-ink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.tw-row .tw-edit{ margin-left:auto; flex:0 0 auto; font-size:14px; font-weight:800; color:var(--tw-teal);
  background:none; border:none; cursor:pointer; white-space:nowrap; padding-left:8px; }

.tw-foot{ padding:12px 20px 18px; border-top:1px solid var(--tw-line); background:#fff; }
.tw-err{ display:none; font-size:14px; color:#c0392b; font-weight:600; background:#fdecea;
  border:1px solid #f5c6c2; border-radius:10px; padding:9px 12px; margin-bottom:10px; }
.tw-err.show{ display:block; }
.tw-cta{ width:100%; border:none; border-radius:16px; padding:15px; font-size:18px; font-weight:900;
  cursor:pointer; color:#fff; background:var(--tw-teal); box-shadow:0 5px 0 var(--tw-dark); }
.tw-cta.tw-yellow{ background:var(--tw-yellow); color:#12232E; box-shadow:0 5px 0 #D9B200; }
.tw-cta:active{ transform:translateY(3px); box-shadow:0 2px 0 var(--tw-dark); }
.tw-cta.tw-yellow:active{ box-shadow:0 2px 0 #D9B200; }
.tw-cta[disabled]{ opacity:.6; cursor:default; }
.tw-stepno{ text-align:center; font-size:12px; color:var(--tw-muted); font-weight:700; margin-top:12px; }

/* Overlay para elegir idioma */
.tw-picker{ position:absolute; top:0; right:0; bottom:0; left:0; background:rgba(10,49,58,.35); z-index:30; display:flex;
  align-items:flex-end; justify-content:center; }
.tw-picker__sheet{ background:#fff; width:100%; max-height:70%; overflow-y:auto; border-radius:20px 20px 0 0;
  padding:10px 0 16px; }
.tw-picker__title{ font-size:13px; font-weight:800; text-transform:uppercase; color:var(--tw-muted);
  padding:12px 20px 6px; }
.tw-picker__opt{ display:block; width:100%; text-align:left; border:none; background:none;
  padding:14px 20px; font-size:17px; font-weight:700; color:var(--tw-ink); cursor:pointer; }
.tw-picker__opt.sel{ color:var(--tw-teal); }
.tw-picker__opt:hover{ background:#F4FAFC; }

/* ── Blindaje contra global-responsive.css en móvil (<576px) ─────────────────────
   Esa hoja hace, para TODOS los <button>: width:100% + display:block +
   margin-bottom. Dentro del asistente rompía dos cosas (23/07/2026):
     · El resumen final: el botón "Edit" se estiraba al 100% y aplastaba el texto
       de cada fila a 0px de ancho (parecía vacío, filas gigantes).
     · Los botones cuadrados (atrás, cerrar, ⇅, ‹ ›) se estiraban.
   Se restauran sus tamaños propios. Mismo breakpoint que la regla que corrige. */
@media (max-width:575.98px){
  .tw .tw-back, .tw .tw-x{ width:34px !important; }
  .tw .tw-swap{ width:44px !important; }
  .tw-cal-h button{ width:32px !important; }
  .tw .tw-day{ width:auto !important; }
  .tw .tw-row .tw-edit{ width:auto !important; display:inline-block !important; }
  .tw-cards .tw-card{ width:auto !important; }
  .tw .tw-back, .tw .tw-x, .tw .tw-swap, .tw-cal-h button, .tw .tw-day,
  .tw .tw-row .tw-edit, .tw-cards .tw-card, .tw .tw-cta, .tw .tw-opt,
  .tw .tw-size, .tw .tw-lang{ margin-bottom:0 !important; }
}
