/* ═══════════════════════════════════════════════════════════════
 * MOVEO · Mapa de Recuerdos — sección "Mis clases" en pestaña Mi mapa coach
 * Pin = alumno (mv-me__avatar + line + dot) sobre MapLibre Positron.
 * Tap pin → ficha rápida lateral con datos del alumno.
 * Filtro por año (Todo / 2026 / 2025 / 2024).
 * ═══════════════════════════════════════════════════════════════ */

.mvmem{
  --paper:var(--paper,#FBF7EF);
  --sand:var(--sand-50,#F2EBDE);
  --sand2:var(--sand-100,#E8DFCC);
  --sand50:var(--sand-50,#EFEAE0);
  --rule:var(--line,#E7DFD1);
  --ink:var(--ink,#241F18);
  --espresso:var(--ink-2,#3B332A);
  --taupe:var(--mute,#8A7E68);
  --gold:var(--accent,#B8956A);
  --serif:'Cormorant Garamond',Georgia,serif;
  --mono:'IBM Plex Mono',ui-monospace,monospace;
  --sans:'DM Sans',system-ui,sans-serif;
  margin-top:18px;
}
.mvmem__divider{height:1px;background:var(--rule);margin:2px 0 16px;border:0}
.mvmem__head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.mvmem__head h3{font-family:var(--serif);font-style:italic;font-weight:500;font-size:23px;line-height:1.05;margin:0;white-space:nowrap}
.mvmem__stat{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--taupe);text-transform:uppercase;white-space:nowrap}
.mvmem__sub{font-size:12.5px;line-height:1.4;color:var(--taupe);margin:0 0 14px}

/* Year filter chips */
.mvmem__years{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.mvmem__ychip{font-family:var(--sans);font-size:12.5px;font-weight:600;padding:7px 15px;border-radius:999px;background:var(--sand);border:1px solid var(--rule);color:var(--espresso);cursor:pointer;transition:all .16s}
.mvmem__ychip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.mvmem__ychip .n{font-family:var(--mono);font-size:10px;opacity:.6;margin-left:5px}
.mvmem__ychip.on .n{opacity:.7}
.mvmem__yeardd{position:relative;margin-left:auto}
.mvmem__yeardd-btn{display:inline-flex;align-items:center;gap:7px;font-family:var(--sans);font-size:12.5px;font-weight:600;padding:7px 14px;border-radius:999px;background:var(--sand);border:1px solid var(--rule);color:var(--espresso);cursor:pointer}
.mvmem__yeardd-btn.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.mvmem__yeardd-btn .cur{font-family:var(--mono);font-size:10px;opacity:.7}
.mvmem__yeardd-btn svg{width:12px;height:12px;transition:transform .18s}
.mvmem__yeardd.open .mvmem__yeardd-btn svg{transform:rotate(180deg)}
/* [v6.21 / Arantxa pantalla 2] Filtro Años: fondo opaco hardcodeado (var --paper no resolvía en el sheet → menú se veía transparente) */
.mvmem__yeardd-menu{position:absolute;right:0;top:calc(100% + 6px);background:#FBF7EF !important;border:1px solid #E7DFD1;border-radius:13px;box-shadow:0 12px 30px -10px rgba(0,0,0,.4);padding:6px;min-width:128px;z-index:20;display:none;flex-direction:column;gap:4px}
.mvmem__yeardd.open .mvmem__yeardd-menu{display:flex}
.mvmem__yeardd-opt{display:flex;align-items:center;justify-content:space-between;gap:16px;font-family:var(--sans);font-size:13px;font-weight:600;padding:9px 12px;border-radius:9px;background:transparent;border:none;color:var(--espresso);cursor:pointer;text-align:left}
.mvmem__yeardd-opt:hover{background:var(--sand)}
.mvmem__yeardd-opt.on{background:var(--ink);color:var(--paper)}
.mvmem__yeardd-opt .n{font-family:var(--mono);font-size:10px;opacity:.6}

/* [v6.22] Map container responsive — height adaptativa svh + touch-action pan-y deja pasar scroll vertical */
.mvmem__map{position:relative;height:42svh;min-height:280px;max-height:380px;border-radius:18px;overflow:hidden;border:1px solid var(--rule);background:var(--sand);touch-action:pan-y}
.mvmem__map .maplibregl-canvas{touch-action:pan-y}
/* MapLibre cooperative gesture overlay — "Usa 2 dedos para mover el mapa" */
.mvmem__map .maplibregl-cooperative-gesture-screen{font-family:var(--sans);font-weight:600}
.mvmem__map .maplibregl-ctrl-group{border-radius:9px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.18)}
.mvmem__map .maplibregl-ctrl-attrib{font-size:9px}

/* Pin marker (uses mv-me classes from mv-me.css) */
.mvmem-mk{cursor:pointer}
.mvmem-mk .mv-me__avatar{border-width:2px;box-shadow:0 4px 10px rgba(63,53,43,.28)}
.mvmem-mk.sel{z-index:7}
.mvmem-mk.sel .mv-me__avatar{transform:scale(1.14);border-color:var(--gold);box-shadow:0 8px 18px -4px rgba(0,0,0,.45)}
/* [v6.22] Star rating badge — hardcode ink/paper/gold porque var() no resuelve en el sheet → badge salía transparente */
.mvmem-rate{position:absolute;top:-5px;right:-11px;display:inline-flex;align-items:center;gap:2px;background:#241F18 !important;color:#FBF7EF !important;border:1.5px solid #FBF7EF;border-radius:999px;padding:1px 5px;font-family:var(--mono);font-size:8.5px;line-height:1.45;white-space:nowrap;box-shadow:0 2px 6px rgba(0,0,0,.3);z-index:3}
.mvmem-rate b{color:#B8956A !important;font-weight:400}

/* Side card anchored to LEFT of the map — fondo opaco hardcoded (var --paper no resolvía) */
.mvmem-card{position:absolute;left:10px;top:10px;width:206px;max-height:calc(100% - 20px);overflow-y:auto;overflow-x:hidden;background:#FBF7EF !important;border:1px solid #E7DFD1;border-radius:14px;padding:13px;box-shadow:0 14px 34px -12px rgba(0,0,0,.45);z-index:8;opacity:0;transform:translateX(-18px);pointer-events:none;transition:opacity .2s ease,transform .22s cubic-bezier(.22,1,.36,1)}
.mvmem-card.show{opacity:1;transform:translateX(0);pointer-events:auto}
.mvmem-card__x{position:absolute;top:7px;right:7px;width:24px;height:24px;border:none;border-radius:50%;background:var(--sand);color:var(--taupe);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2}
.mvmem-card__x:hover{background:var(--sand2);color:var(--ink)}
/* [v7.23] La tarjeta del pin SIEMPRE es clara (#FBF7EF). En oscuro, los var(--ink…)
   se vuelven claros → texto ilegible. Redefinimos los tokens DENTRO de la tarjeta a
   sus valores claros para que el texto (incl. "Ver ficha del alumno") sea legible. */
html[data-theme="dark"] .mvmem-card{
  --ink:#241F18; --espresso:#3B332A; --taupe:#8A7E68; --rule:#E7DFD1;
  --sand:#F2EBDE; --sand2:#E8DFCC; --sand50:#FBF7EF; --gold:#B8956A;
}
.mvmem-qc-link{color:#241F18}
.mvmem-card .mvmem-qc-link{font-weight:700}
.mvmem-qc-top{display:flex;align-items:center;gap:10px;margin-bottom:9px;padding-right:22px}
.mvmem-qc-ava{width:38px;height:38px;border-radius:50%;flex:none;border:1.5px solid var(--ink);background:var(--sand2) center/cover;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:17px;color:var(--ink)}
.mvmem-qc-who{min-width:0;flex:1}
.mvmem-qc-who .nm{font-family:var(--serif);font-style:italic;font-size:17px;line-height:1.1;color:var(--ink)}
.mvmem-qc-who .sp{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe);margin-top:2px}
.mvmem-qc-rating{display:flex;align-items:center;gap:3px;margin-bottom:8px}
.mvmem-qc-rating .stars{color:var(--gold);font-size:13px;letter-spacing:1px}
.mvmem-qc-rating .stars .off{color:var(--rule)}
.mvmem-qc-rating .val{font-family:var(--mono);font-size:10px;color:var(--espresso);margin-left:3px}
.mvmem-qc-meta{display:flex;align-items:flex-start;gap:6px;font-size:11.5px;line-height:1.35;color:var(--espresso);margin-bottom:4px}
.mvmem-qc-meta svg{width:11px;height:11px;flex:none;color:var(--taupe);margin-top:2px}
.mvmem-qc-date{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;color:var(--taupe);text-transform:uppercase;margin-bottom:9px}
.mvmem-qc-note{font-size:12px;line-height:1.4;color:var(--espresso);background:var(--sand50);border-radius:9px;padding:8px 9px;border-left:2px solid var(--gold)}
.mvmem-qc-note .lbl{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe);margin-bottom:3px}
.mvmem-qc-link{display:block;text-align:center;margin-top:9px;font-family:var(--sans);font-size:11.5px;font-weight:600;color:var(--ink);border:1px solid var(--rule);border-radius:9px;padding:7px;cursor:pointer;background:transparent}
.mvmem-qc-link:hover{background:var(--sand)}
.mvmem__hint{text-align:center;font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe);margin-top:12px}
/* [v7.20] Modo LISTA "Mis clases" (coach · datos reales · sin mapa) */
.mvmem__list{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.mvmem-li{border:1px solid var(--rule);border-radius:14px;padding:13px 14px;background:var(--paper,var(--sand50))}
.mvmem-li .mvmem-qc-link{margin-top:11px}
.mvmem__empty{text-align:center;padding:26px 18px;color:var(--taupe);font-size:13px}

/* ¿Dónde entrenas? — mini-mapa Positron con lock overlay + city input */
.mvmem__train-fieldlabel{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--espresso);margin:2px 0 8px}
.mvmem__train-mapwrap{position:relative;margin-bottom:0}
.mvmem__train-map{height:200px;border-radius:18px;overflow:hidden;border:1px solid var(--rule);background:var(--sand)}
.mvmem__train-map .maplibregl-ctrl-attrib{font-size:9px}
.mvmem__train-lock{position:absolute;inset:0;z-index:9;border-radius:18px;background:rgba(36,31,24,.42);backdrop-filter:blur(1.5px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#FBF7EF;text-align:center;padding:16px}
.mvmem__train-lock svg{width:26px;height:26px;opacity:.92}
.mvmem__train-lock-tx{font-family:var(--sans);font-size:12.5px;font-weight:600;max-width:220px}
.mvmem__train-lock-btn{font-family:var(--sans);font-size:12.5px;font-weight:600;padding:9px 18px;border-radius:999px;background:#B8956A;color:#fff;border:none;cursor:pointer}
.mvmem__train-lock-btn:hover{filter:brightness(1.06)}
.mvmem__train-lock.blocked{background:rgba(160,60,40,.5)}
.mvmem__train-lock.blocked .mvmem__train-lock-btn{background:rgba(255,255,255,.18);cursor:not-allowed}
.mvmem__train-input{width:100%;margin-top:10px;padding:12px 14px;border-radius:12px;border:1px solid var(--rule);background:#FBF7EF;color:var(--ink);font-family:var(--sans);font-size:14px}
.mvmem__train-input:disabled{background:#EFEAE0;color:var(--taupe)}
.mvmem__train-hint{text-align:left;text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:11.5px;color:var(--taupe);margin:6px 0 0}

/* [v6.22] Picker INLINE — editing UI */
.mvmem__train-map--edit{ background:#E4E6EA; }
.mvmem__train-search{ position:absolute; top:10px; left:10px; right:10px; z-index:10; display:flex; gap:6px; background:rgba(251,247,239,.95) !important; border:1px solid #E7DFD1; border-radius:11px; padding:6px; backdrop-filter:blur(6px); box-shadow:0 4px 14px rgba(0,0,0,.18); }
.mvmem__train-search input{ flex:1; border:none; background:transparent; padding:7px 10px; font-family:inherit; font-size:13px; outline:none; color:#241F18; }
.mvmem__train-search input::placeholder{ color:#8A7E68; }
.mvmem__train-search-go{ background:#241F18 !important; color:#FBF7EF !important; border:none; padding:7px 14px; border-radius:8px; font-family:inherit; font-size:11.5px; font-weight:600; cursor:pointer; }
.mvmem__train-centerpin{ position:absolute; left:50%; top:50%; transform:translate(-50%,-100%); z-index:8; pointer-events:none; }
.mvmem__train-centerpin .pin{ width:30px; height:30px; border-radius:50% 50% 50% 0; transform:rotate(-45deg); background:#B8956A !important; border:3px solid #FBF7EF; box-shadow:0 6px 14px rgba(0,0,0,.3); }
.mvmem__train-centerpin .pin::after{ content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%) rotate(45deg); width:10px; height:10px; border-radius:50%; background:#FBF7EF; }
.mvmem__train-coords{ position:absolute; bottom:10px; left:10px; z-index:8; background:rgba(36,31,24,.85) !important; color:#FBF7EF !important; padding:5px 10px; border-radius:99px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; letter-spacing:.06em; backdrop-filter:blur(6px); }
.mvmem__train-actions{ display:flex; gap:8px; margin-top:12px; }
.mvmem__train-actions button{ flex:1; padding:12px; border-radius:11px; font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; border:none; }
.mvmem__train-actions .ghost{ background:transparent !important; color:#241F18 !important; border:1px solid #E7DFD1 !important; }
.mvmem__train-actions .save{ background:#241F18 !important; color:#FBF7EF !important; }
.mvmem__train-actions button:disabled{ opacity:.55; cursor:not-allowed; }
/* [v7.41] FIX dark: el botón Cancel (.ghost) tenía color fijo #241F18 sobre el fondo
   oscuro del sheet → invisible. En dark: texto claro + borde visible. */
html[data-theme="dark"] .mvmem__train-actions .ghost,
html[data-theme="dark"] .mvmem__pwd-btn.ghost{ color:#EDE6D8 !important; border-color:#4A4234 !important; background:rgba(255,255,255,.06) !important; }
/* [v7.41] Autocomplete tipo Google Maps: dropdown de sugerencias bajo el buscador */
.mvmem__train-suggest{ position:absolute; top:50px; left:10px; right:10px; z-index:11; background:rgba(251,247,239,.98); border:1px solid #E7DFD1; border-radius:11px; box-shadow:0 10px 26px rgba(0,0,0,.25); overflow:hidden; max-height:210px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.mvmem__train-suggest[hidden]{ display:none; }
.mvmem__train-sugg-item{ display:block; width:100%; text-align:left; background:transparent; border:none; border-bottom:1px solid #EFE8DD; padding:10px 12px; font-family:inherit; font-size:12.5px; color:#241F18; cursor:pointer; line-height:1.3; }
.mvmem__train-sugg-item:last-child{ border-bottom:none; }
.mvmem__train-sugg-item:hover{ background:#F2EBDE; }
.mvmem--saving{ pointer-events:none; opacity:.7; transition:opacity .15s; }

/* Password modal */
.mvmem__pwd-back{ position:fixed; inset:0; z-index:9999; background:rgba(20,15,8,.55); display:flex; align-items:center; justify-content:center; padding:22px; }
.mvmem__pwd{ width:100%; max-width:320px; background:#FBF7EF !important; border:1px solid #E7DFD1; border-radius:16px; padding:20px; box-shadow:0 24px 60px -20px rgba(0,0,0,.6); }
.mvmem__pwd h4{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:20px; margin:0 0 6px; color:#241F18; }
.mvmem__pwd p{ font-size:12.5px; line-height:1.4; color:#8A7E68; margin:0 0 14px; }
.mvmem__pwd input{ width:100%; padding:12px 14px; border-radius:12px; border:1px solid #E7DFD1; background:#EFEAE0 !important; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:14px; outline:none; color:#241F18; }
.mvmem__pwd input:focus{ border-color:#B8956A; }
.mvmem__pwd-row{ display:flex; gap:8px; margin-top:14px; }
.mvmem__pwd-btn{ flex:1; padding:11px; border-radius:999px; border:1px solid #241F18; background:#241F18 !important; color:#FBF7EF !important; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:13px; font-weight:600; cursor:pointer; }
.mvmem__pwd-btn.ghost{ background:transparent !important; color:#241F18 !important; border-color:#E7DFD1 !important; }
.mvmem__pwd-err{ display:block; min-height:14px; margin-top:8px; font-size:11.5px; color:#C0492F; }

/* Toast */
.mvmem__toast{ position:fixed; left:50%; bottom:24px; transform:translateX(-50%) translateY(15px); background:#241F18 !important; color:#FBF7EF !important; padding:10px 18px; border-radius:99px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:13px; font-weight:600; opacity:0; transition:opacity .25s, transform .25s; z-index:10000; max-width:84vw; text-align:center; box-shadow:0 8px 24px rgba(0,0,0,.4); }
.mvmem__toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
.mvmem__toast.err{ background:#A24B2A !important; }

