/* ════════════════════════════════════════════════════════════════
   MOVEO · mv-me — Localización del alumno · Student location
   Componente nuevo, no modifica nada existente.
   Namespacing: todo bajo .mv-me, .mvme-* y .mvme-sheet*
   Tokens usados: var(--paper), var(--ink), var(--espresso), var(--rule),
                  var(--sand), var(--sand-2), var(--taupe), var(--green),
                  var(--red), var(--serif,'Cormorant Garamond',Georgia,serif), var(--sans,'DM Sans',system-ui,sans-serif), var(--mono,'IBM Plex Mono',ui-monospace,monospace).
   ════════════════════════════════════════════════════════════════ */

/* ─── EL PIN EN EL MAPA ─── */
.mv-me{
  --size:30px;
  --line:30px;
  --dot:8px;
  display:flex; flex-direction:column; align-items:center;
  cursor:pointer; position:relative;
  pointer-events:auto;
}
.mv-me__avatar{
  width:var(--size); height:var(--size); border-radius:50%;
  background:var(--paper); border:1.5px solid var(--ink);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:calc(var(--size) * .42);
  color:var(--ink); font-weight:500;
  box-shadow:0 3px 8px rgba(63,53,43,.12);
  background-size:cover; background-position:center;
  transition:transform .25s ease;
}
.mv-me:hover .mv-me__avatar{ transform:scale(1.06); }
.mv-me__line{
  width:1px; background:var(--ink); height:var(--line);
  transform-origin:top;
  animation:mv-me-draw .3s ease-out .1s both;
}
.mv-me__dot{
  width:var(--dot); height:var(--dot); border-radius:50%;
  background:var(--ink); margin-top:-1px;
  animation:mv-me-breath 1.8s ease-in-out infinite;
  position:relative;
}
.mv-me__dot::before, .mv-me__dot::after{
  content:""; position:absolute; inset:0; border-radius:50%;
  border:1.5px solid var(--ink); opacity:0; pointer-events:none;
}
.mv-me.is-ping .mv-me__dot::before{ animation:mv-me-ping 1.2s ease-out; }
.mv-me.is-ping .mv-me__dot::after{ animation:mv-me-ping 1.2s ease-out .15s; }

.mv-me.is-hidden{ display:none !important; }

@keyframes mv-me-draw  { from{ transform:scaleY(0); } to{ transform:scaleY(1); } }
@keyframes mv-me-breath{
  0%,100%{ transform:scale(1); box-shadow:0 0 0 0 rgba(26,26,26,.4); }
  50%    { transform:scale(1.18); box-shadow:0 0 0 9px rgba(26,26,26,0); }
}
@keyframes mv-me-ping  {
  0%  { transform:scale(.6); opacity:.7; }
  100%{ transform:scale(3.6); opacity:0; }
}

/* Tamaños alternativos (lo aplica el JS según zoom del mapa) */
.mv-me--s{ --size:22px; --line:22px; --dot:6px; }
.mv-me--m{ --size:30px; --line:30px; --dot:8px; }
.mv-me--l{ --size:42px; --line:38px; --dot:10px; }


/* ════════════════════════════════════════════════════════════════
   BOTTOM-SHEET (móvil principalmente, también desktop como popover)
   ════════════════════════════════════════════════════════════════ */

.mvme-sheet-backdrop{
  position:fixed; inset:0;
  background:rgba(26,26,26,.28);
  opacity:0; pointer-events:none;
  transition:opacity .25s ease;
  z-index:1100;
}
.mvme-sheet-backdrop.is-open{ opacity:1; pointer-events:auto; }

.mvme-sheet{
  position:fixed; left:0; right:0; bottom:0;
  background:var(--paper);
  border-top:1px solid var(--rule);
  border-radius:24px 24px 0 0;
  transform:translateY(100%);
  transition:transform .38s cubic-bezier(.32,.72,.32,1.04);
  z-index:1110;
  box-shadow:0 -20px 40px rgba(63,53,43,.18);
  padding:8px 16px 24px;
  max-width:560px; margin:0 auto;
}
.mvme-sheet.is-open{ transform:translateY(0); }

.mvme-sheet__handle{
  width:42px; height:4px; background:var(--rule);
  border-radius:99px; margin:6px auto 12px; cursor:grab;
}
.mvme-sheet__header{
  display:flex; align-items:center; gap:11px;
  padding:0 4px 14px;
  border-bottom:1px dashed var(--rule);
}
.mvme-sheet__avatar{
  width:42px; height:42px; border-radius:50%;
  background:var(--sand-2) center/cover;
  border:1.5px solid var(--ink); flex:none;
  /* [BUG108 v27.2] iniciales centradas cuando no hay photo_url */
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:18px; color:var(--ink); font-weight:500;
}
.mvme-sheet__title{ flex:1; min-width:0; line-height:1.15; }
.mvme-sheet__title h4{
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-style:normal; font-weight:600;
  font-size:13.5px; letter-spacing:.15em; text-transform:uppercase;
  color:var(--ink); margin:0;
}
.mvme-sheet__title small{
  display:block;
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.2em;
  color:var(--taupe); text-transform:uppercase;
}
/* [v6.47 / BUG 259] Link "Ir a mi localización" en el header del sheet (espejo de .mvcoach-mapview). */
.mvme-mapview{
  display:inline-block; margin-top:6px; font-family:var(--sans,'DM Sans',system-ui,sans-serif);
  font-size:11.5px; font-weight:600; color:var(--gold,#B8956A);
  text-decoration:none; letter-spacing:.01em; padding:3px 0;
}
.mvme-mapview:hover{ color:var(--ink,#241F18); text-decoration:underline; }
/* [v7.32] Switch de modo (cuenta dual) en el header del sheet alumno */
.mvme-modeswitch{ display:block; width:max-content; max-width:100%; margin-top:7px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:11.5px; font-weight:700; color:var(--gold,#B8956A); text-decoration:none; letter-spacing:.01em; padding:4px 10px; border:1px solid var(--gold,#B8956A); border-radius:999px; }
.mvme-modeswitch:hover{ background:var(--gold,#B8956A); color:var(--paper,#FBF7EF); }
.mvme-sheet__close{
  width:28px; height:28px; border-radius:50%;
  background:var(--sand-2); border:none; color:var(--ink);
  cursor:pointer; font-size:14px; line-height:1;
  display:flex; align-items:center; justify-content:center;
}

.mvme-sheet__grid{
  display:grid; grid-template-columns:repeat(2,1fr); gap:9px;
  margin:14px 0 10px;
}
.mvme-sheet__btn{
  display:flex; flex-direction:column; align-items:flex-start; gap:6px;
  background:var(--sand); border:1px solid var(--rule); border-radius:14px;
  padding:12px; cursor:pointer; transition:all .18s;
  text-align:left; font-family:var(--sans,'DM Sans',system-ui,sans-serif); color:var(--espresso);
}
.mvme-sheet__btn:hover{ background:var(--sand-2); border-color:var(--taupe); }
.mvme-sheet__btn.is-active{
  background:var(--ink); color:var(--paper); border-color:var(--ink);
}
.mvme-sheet__btn .ico{
  width:22px; height:22px;
  display:flex; align-items:center; justify-content:center;
}
.mvme-sheet__btn .lab{
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px;
  letter-spacing:.18em; text-transform:uppercase;
}
.mvme-sheet__btn .sub{
  font-size:11.5px; color:inherit; opacity:.7;
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic;
}

.mvme-sheet__danger{
  margin-top:6px; width:100%;
  background:transparent; border:1px solid var(--rule); color:var(--espresso);
  padding:11px; border-radius:14px; cursor:pointer;
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:12px;
  display:flex; align-items:center; justify-content:center; gap:8px;
  transition:all .18s;
}
.mvme-sheet__danger:hover{
  background:#F7E9E5; border-color:var(--red); color:var(--red);
}
.mvme-sheet__danger .ico{ width:14px; height:14px; display:inline-flex; }


/* ════════════════════════════════════════════════════════════════
   PESTAÑA "ANCLAJE" en el menú del alumno
   ════════════════════════════════════════════════════════════════ */

.mvme-tab{
  padding:24px 28px;
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); color:var(--espresso);
  max-width:680px;
}
.mvme-tab__eyebrow{
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--taupe); margin-bottom:6px;
}
.mvme-tab h2{
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-weight:500; font-size:28px;
  color:var(--ink); margin:0 0 6px;
}
.mvme-tab h2 em{ font-style:italic; }
.mvme-tab__lead{
  font-size:13.5px; line-height:1.6; color:var(--espresso);
  margin:0 0 22px; max-width:560px;
}

.mvme-tab__card{
  background:var(--paper); border:1px solid var(--rule);
  border-radius:16px; padding:22px;
  margin-bottom:18px;
}
.mvme-tab__row{
  display:flex; gap:18px; align-items:center;
  flex-wrap:wrap;
}
.mvme-tab__photo{
  width:88px; height:88px; border-radius:50%;
  background:var(--sand-2) center/cover;
  border:1.5px solid var(--ink); flex:none;
  position:relative; cursor:pointer; overflow:hidden;
}
.mvme-tab__photo input[type="file"]{
  position:absolute; inset:0; opacity:0; cursor:pointer;
}
.mvme-tab__photo .placeholder{
  width:100%; height:100%; display:flex; align-items:center; justify-content:center;
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.2em;
  color:var(--taupe); text-transform:uppercase;
}
.mvme-tab__photo:hover::after{
  content:"Cambiar"; position:absolute; inset:0;
  background:rgba(26,26,26,.55); color:var(--paper);
  display:flex; align-items:center; justify-content:center;
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; letter-spacing:.16em;
  text-transform:uppercase;
}

.mvme-tab__info{ flex:1; min-width:200px; }
.mvme-tab__info h3{
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:20px;
  color:var(--ink); margin:0 0 4px;
}
.mvme-tab__info .status{
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--taupe);
  display:inline-flex; align-items:center; gap:6px;
}
.mvme-tab__info .status .dot{
  width:7px; height:7px; border-radius:50%; background:var(--taupe);
}
.mvme-tab__info .status.is-on{ color:var(--green); }
.mvme-tab__info .status.is-on .dot{
  background:var(--green); box-shadow:0 0 0 4px rgba(74,138,90,.18);
}

.mvme-tab__actions{
  display:flex; gap:10px; flex-wrap:wrap; margin-top:18px;
}
.mvme-tab__btn{
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:13px;
  background:var(--ink); color:var(--paper); border:1px solid var(--ink);
  border-radius:999px; padding:10px 18px; cursor:pointer;
  transition:background .2s, border-color .2s;
}
.mvme-tab__btn:hover{ background:var(--espresso); border-color:var(--espresso); }
.mvme-tab__btn.ghost{
  background:transparent; color:var(--ink); border-color:var(--rule);
}
.mvme-tab__btn.ghost:hover{ background:var(--sand-2); border-color:var(--taupe); }
.mvme-tab__btn[disabled]{ opacity:.5; cursor:not-allowed; }

.mvme-tab__note{
  font-size:11.5px; color:var(--taupe); line-height:1.55;
  margin-top:14px; padding-top:14px; border-top:1px dashed var(--rule);
}
.mvme-tab__note b{ color:var(--espresso); }


/* ════════════════════════════════════════════════════════════════
   MODAL "¿Quieres aparecer en el mapa?" (just-in-time prompt)
   ════════════════════════════════════════════════════════════════ */

.mvme-prompt-backdrop{
  position:fixed; inset:0; z-index:1200;
  background:rgba(26,26,26,.42);
  display:flex; align-items:center; justify-content:center;
  opacity:0; pointer-events:none;
  transition:opacity .22s ease;
  padding:18px;
}
.mvme-prompt-backdrop.is-open{ opacity:1; pointer-events:auto; }

.mvme-prompt{
  background:var(--paper); border:1px solid var(--rule);
  border-radius:18px; padding:26px;
  max-width:420px; width:100%;
  box-shadow:0 30px 60px rgba(63,53,43,.30);
  transform:translateY(8px) scale(.98);
  transition:transform .22s ease;
}
.mvme-prompt-backdrop.is-open .mvme-prompt{ transform:translateY(0) scale(1); }
.mvme-prompt h3{
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:24px;
  color:var(--ink); margin:0 0 6px;
}
.mvme-prompt p{
  font-size:13px; line-height:1.55; color:var(--espresso); margin:0 0 18px;
}
.mvme-prompt__actions{ display:flex; gap:8px; flex-wrap:wrap; }
.mvme-prompt__btn{
  flex:1; min-width:120px;
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:13px; padding:11px 14px;
  border-radius:999px; cursor:pointer; transition:all .18s;
  border:1px solid var(--ink); background:var(--ink); color:var(--paper);
}
.mvme-prompt__btn:hover{ background:var(--espresso); }
.mvme-prompt__btn.ghost{
  background:transparent; color:var(--ink); border-color:var(--rule);
}
.mvme-prompt__btn.ghost:hover{ background:var(--sand-2); border-color:var(--taupe); }

.mvme-prompt__hint{
  display:block; margin-top:14px; padding-top:12px;
  border-top:1px dashed var(--rule);
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px; letter-spacing:.18em;
  color:var(--taupe); text-transform:uppercase;
}


/* ════════════════════════════════════════════════════════════════
   PIEZA 2 (v27.3.1) — Panel rico del alumno (preview-129 aprobado)
   Todo namespaced .mvme-* para no colisionar con la CSS global de
   index.html (.btn/.filters/.status/.map/.grid… son globales ahí).
   Tokens con fallback por si la página no define gold/amber/green.
   ════════════════════════════════════════════════════════════════ */

/* [APP-NATIVA v27.4] sheet altura FIJA 88svh + header/grid fijos + body scroll independiente.
   Reemplaza el scroll global del sheet (antes overflow-y en .mvme-sheet). */
.mvme-sheet{ height:88vh; height:88svh; min-height:88vh; min-height:88svh; max-height:88vh; max-height:88svh; display:flex; flex-direction:column; overflow:hidden; padding-bottom:env(safe-area-inset-bottom); }
.mvme-sheet__handle{ flex:none; }
.mvme-sheet__header{ flex:none; }
.mvme-sheet__grid{ flex:none; }
.mvme-sheet__danger{ flex:none; margin-top:0; }

/* quick-grid → 4 columnas (mockup) — reusa wiring 109/117. [BUG171 v27.3.2-hotfix6 · PARTE 2]
   "Mi mapa" RESTAURADO (mockup aprobado): 3→4 cols. */
.mvme-sheet__grid{ grid-template-columns:repeat(4,1fr); gap:6px; margin:14px 0 12px; }
.mvme-sheet__btn{ flex-direction:column; align-items:center; gap:5px; padding:11px 4px; border-radius:13px; text-align:center; }
.mvme-sheet__btn .ico{ width:20px; height:20px; }
.mvme-sheet__btn .lab{ font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:10px; font-weight:600; letter-spacing:0; text-transform:none; }

/* [APP-NATIVA] el data-box es el BODY scrollable independiente. */
.mvme-data{ margin-top:2px; flex:1 1 auto; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.mvme-data::-webkit-scrollbar{ display:none; }
.mvme-view.hidden{ display:none; }
/* [BUG196] mes fusionado arriba de Reservas */
.mvme-cal-wrap{ margin-bottom:14px; }

/* [BUG-PERFIL] Vista Perfil in-sheet (alumno) */
.mvme-data.mvme-show-profile .mvme-tabs,
.mvme-data.mvme-show-profile .mvme-today,
.mvme-data.mvme-show-profile .mvme-myloc{ display:none; }
/* [BUG219] Vista "Mi mapa" in-sheet: oculta tabs + Tu día (solo mini-mapa + botón Volver) */
.mvme-data.mvme-show-map .mvme-tabs,
.mvme-data.mvme-show-map .mvme-today{ display:none; }
/* [v6.40 / BUG 252] Vista Mensajes in-sheet (alumno): oculta tabs + Tu día + mini-mapa
   (igual que Perfil/Mi mapa). El diseño de las cards lo aporta mv-coach.css (.mvcoach-msg-*). */
.mvme-data.mvme-show-messages .mvme-tabs,
.mvme-data.mvme-show-messages .mvme-today,
.mvme-data.mvme-show-messages .mvme-myloc{ display:none; }
/* [v6.37 / BUG 249] "Mi localización" del alumno IGUAL que coach (compacto). Antes 300px
   se veía enorme; coach usa 100px (#mvcoach-view-map .mvcoach-myloc__map). */
#mvme-view-map .mvme-myloc__map{ height:100px; }
.mvme-mapback{ margin-top:12px; display:block; width:100%; text-align:center; background:var(--ink,#241F18); color:var(--paper,#FBF7EF); border:none; border-radius:13px; padding:14px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:14px; font-weight:600; cursor:pointer; }
.mvme-prof-eyebrow{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--taupe,#8A7E68); margin:6px 2px 10px; }
.mvme-prof-opt{ display:flex; align-items:center; gap:13px; width:100%; background:var(--paper,#FBF7EF); border:1px solid var(--rule,#E7DFD1); border-radius:13px; padding:13px 14px; margin-bottom:8px; cursor:pointer; text-align:left; font-family:var(--sans,'DM Sans',system-ui,sans-serif); color:var(--ink,#241F18); }
/* [v7.29] FIX legibilidad dark: --sand50 (sin guión) NO existe en theme-dark → caía al
   crema #EFEAE0 y el título (--ink=crema en dark) quedaba crema-sobre-crema = invisible.
   --sand-2 SÍ conmuta (claro #E8DFCC / oscuro #34301F) → texto --ink siempre legible. */
.mvme-prof-opt:hover{ background:var(--sand-2,#EFEAE0); color:var(--ink,#241F18); }
.mvme-prof-opt:hover .mvme-prof-tx b{ color:var(--ink,#241F18); }
.mvme-prof-ic{ width:34px; height:34px; flex:none; border-radius:50%; background:var(--sand,#F2EBDE); display:flex; align-items:center; justify-content:center; color:var(--espresso,#3B332A); }
.mvme-prof-ic svg{ width:17px; height:17px; }
.mvme-prof-tx{ flex:1; min-width:0; }
.mvme-prof-tx b{ display:block; font-size:14px; font-weight:600; }
.mvme-prof-tx span{ display:block; font-size:11.5px; color:var(--taupe,#8A7E68); margin-top:1px; }
.mvme-prof-arr{ color:var(--taupe,#8A7E68); flex:none; font-size:18px; line-height:1; }
.mvme-prof-opt.logout{ border-color:rgba(192,73,47,.3); margin-top:4px; }
.mvme-prof-opt.logout .mvme-prof-ic{ background:rgba(192,73,47,.1); color:var(--red,#C0492F); }
.mvme-prof-opt.logout .mvme-prof-tx b{ color:var(--red,#C0492F); }
.mvme-prof-cta{ margin-top:12px; display:block; width:100%; text-align:center; background:var(--ink,#241F18); color:var(--paper,#FBF7EF); border:none; border-radius:13px; padding:14px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:14px; font-weight:600; cursor:pointer; }
/* [APP-NATIVA] fundido 200ms al cambiar de tab */
@keyframes mvmeFade{ from{ opacity:0 } to{ opacity:1 } }
.mvme-view{ animation:mvmeFade .2s ease; }
.mvme-tev.hidden{ display:none; }

/* ── Tu día de hoy ── */
.mvme-today{ margin-bottom:14px; }
.mvme-today__label{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--espresso,#3B332A); margin-bottom:8px; }
.mvme-today__track{ position:relative; height:50px; background:var(--sand,#F2EBDE); border:1px solid var(--rule,#E7DFD1); border-radius:13px; overflow:hidden; }
.mvme-today__now{ position:absolute; top:0; bottom:0; width:2px; background:var(--gold,#B8956A); opacity:.9; }
.mvme-today__now::before{ content:"AHORA"; position:absolute; top:3px; left:4px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:7px; letter-spacing:.12em; color:var(--gold,#B8956A); }
.mvme-tblk{ position:absolute; top:8px; bottom:8px; min-width:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; overflow:hidden; cursor:pointer; border-left:3px solid; padding:0 2px; }
.mvme-tblk span{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:8.5px; font-weight:500; color:var(--ink,#241F18); white-space:nowrap; }
.mvme-tblk.confirmed{ background:rgba(59,122,75,.16); border-left-color:var(--green,#3B7A4B); }
.mvme-tblk.pending{ background:rgba(200,145,31,.18); border-left-color:var(--amber,#C8911F); }
.mvme-today__empty{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:13px; color:var(--taupe,#8A7E68); }
.mvme-today__axis{ display:flex; justify-content:space-between; margin-top:5px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.06em; color:var(--taupe,#8A7E68); }
.mvme-today__list{ margin-top:9px; display:flex; flex-direction:column; gap:6px; }
.mvme-tev{ display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid var(--rule,#E7DFD1); border-radius:10px; background:var(--paper,#FBF7EF); font-size:12.5px; border-left:3px solid var(--green,#3B7A4B); }
.mvme-tev.pending{ border-left-color:var(--amber,#C8911F); }
.mvme-tev b{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:11px; }
.mvme-tev .sp{ color:var(--espresso,#3B332A); }
.mvme-tev .co{ color:var(--taupe,#8A7E68); }
.mvme-tev__txt{ flex:1; min-width:0; }
.mvme-tev__x{ flex:none; border:none; background:none; color:var(--taupe,#8A7E68); font-size:11px; line-height:1; cursor:pointer; padding:3px; border-radius:6px; opacity:.55; }
.mvme-tev__x:hover{ opacity:1; color:var(--ink,#241F18); }
.mvme-today__hint{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:11px; color:var(--taupe,#8A7E68); text-align:center; margin-top:7px; }

/* ── segmentado Resumen / Reservas / Calendario ── */
/* [APP-NATIVA] tabs STICKY dentro del body (wrapper paper para tapar el contenido al scrollear) */
.mvme-tabs{ position:sticky; top:0; z-index:2; background:var(--paper,#FBF7EF); padding:2px 0 0; margin:0 0 14px; }
.mvme-seg{ display:flex; gap:4px; background:var(--sand-2,#E8DFCC); padding:4px; border-radius:12px; margin-bottom:0; }
.mvme-seg button{ flex:1; border:none; background:transparent; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:12.5px; font-weight:600; color:var(--espresso,#3B332A); padding:9px; border-radius:9px; cursor:pointer; }
.mvme-seg button.on{ background:var(--paper,#FBF7EF); color:var(--ink,#241F18); box-shadow:0 1px 4px rgba(40,33,24,.14); }

.mvme-eyebrow{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--taupe,#8A7E68); margin:16px 0 8px; display:flex; align-items:center; gap:8px; }
.mvme-eyebrow::after{ content:""; flex:1; height:1px; background:var(--rule,#E7DFD1); }

/* ── KPIs (Resumen) ── */
.mvme-kpis{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:2px 0 12px; }
.mvme-kpi{ border:1px solid var(--rule,#E7DFD1); border-radius:13px; background:var(--paper,#FBF7EF); padding:12px 13px; }
.mvme-kpi.dark{ background:var(--ink,#241F18); border-color:var(--ink,#241F18); }
.mvme-kpi .kpi-k{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:8px; letter-spacing:.16em; text-transform:uppercase; color:var(--taupe,#8A7E68); }
.mvme-kpi.dark .kpi-k{ color:rgba(231,222,207,.7); }
.mvme-kpi .kpi-v{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:26px; line-height:1.1; margin-top:4px; }
.mvme-kpi.dark .kpi-v{ color:var(--paper,#FBF7EF); }
.mvme-kpi .kpi-s{ font-size:10.5px; color:var(--taupe,#8A7E68); margin-top:2px; }
.mvme-kpi.dark .kpi-s{ color:#9DBCA0; }
.mvme-all{ display:block; text-align:center; font-size:11px; letter-spacing:.04em; color:var(--ink,#241F18); padding-top:12px; text-decoration:underline; text-underline-offset:3px; cursor:pointer; }

/* ── filtros (Reservas) ── */
.mvme-filters{ display:flex; gap:6px; margin:2px 0 4px; flex-wrap:wrap; }
.mvme-fchip{ border:1px solid var(--rule,#E7DFD1); background:var(--paper,#FBF7EF); border-radius:999px; padding:6px 13px; font-size:11.5px; font-weight:600; color:var(--espresso,#3B332A); cursor:pointer; font-family:var(--sans,'DM Sans',system-ui,sans-serif); }
.mvme-fchip.on{ background:var(--ink,#241F18); color:var(--paper,#FBF7EF); border-color:var(--ink,#241F18); }

/* ── ficha próxima sesión ── */
.mvme-ficha{ background:var(--paper,#FBF7EF); border:1px solid var(--rule,#E7DFD1); border-radius:16px; overflow:hidden; }
.mvme-soon{ display:flex; align-items:center; gap:7px; background:rgba(200,145,31,.13); color:var(--amber,#C8911F); font-size:11.5px; font-weight:600; padding:8px 12px; border-bottom:1px solid var(--rule,#E7DFD1); }
.mvme-soon svg{ width:14px; height:14px; flex:none; }
.mvme-ficha__hero{ display:flex; align-items:center; gap:11px; padding:14px 15px; }
.mvme-av{ width:40px; height:40px; border-radius:50%; background:var(--sand-2,#E8DFCC) center/cover; border:2px solid var(--ink,#241F18); flex:none; display:flex; align-items:center; justify-content:center; font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:16px; color:var(--ink,#241F18); }
.mvme-who{ flex:1; min-width:0; }
.mvme-who .nm{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:18px; line-height:1.05; color:var(--ink,#241F18); }
.mvme-who .id{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.14em; color:var(--taupe,#8A7E68); text-transform:uppercase; margin-top:3px; }
.mvme-status{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.14em; text-transform:uppercase; padding:5px 10px; border-radius:999px; white-space:nowrap; flex:none; background:var(--sand,#F2EBDE); color:var(--espresso,#3B332A); }
.mvme-status.confirmed{ background:rgba(59,122,75,.13); color:var(--green,#3B7A4B); }
.mvme-status.pending{ background:rgba(200,145,31,.16); color:var(--amber,#C8911F); }
.mvme-status.cancelled{ background:rgba(192,73,47,.13); color:var(--red,#C0492F); }
.mvme-status.done{ background:var(--sand,#F2EBDE); color:var(--taupe,#8A7E68); }
.mvme-stats{ display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--rule,#E7DFD1); }
.mvme-stat{ padding:11px 8px; text-align:center; border-right:1px solid var(--rule,#E7DFD1); }
.mvme-stat:last-child{ border-right:none; }
.mvme-stat .k{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:8px; letter-spacing:.14em; color:var(--taupe,#8A7E68); text-transform:uppercase; }
.mvme-stat .v{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:16px; margin-top:3px; color:var(--ink,#241F18); }
.mvme-stat .v small{ font-size:11px; color:var(--taupe,#8A7E68); }
.mvme-locblk{ padding:13px 15px; border-top:1px solid var(--rule,#E7DFD1); }
.mvme-locblk .addr{ display:flex; align-items:center; gap:7px; font-size:13px; color:var(--espresso,#3B332A); margin-bottom:9px; }
.mvme-locblk .addr svg{ color:var(--gold,#B8956A); flex:none; width:13px; height:15px; }
.mvme-locblk .addr span{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.mvme-route{ color:var(--gold,#B8956A); text-decoration:underline; text-underline-offset:2px; font-size:12px; white-space:nowrap; cursor:pointer; flex:none; }
.mvme-minimap{ height:96px; border-radius:11px; border:1px solid var(--rule,#E7DFD1); overflow:hidden; position:relative; background:repeating-linear-gradient(135deg,#EDE6D6 0 11px,#E6DDC9 11px 22px); }
.mvme-minimap .tag{ position:absolute; left:8px; bottom:7px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:8px; letter-spacing:.14em; text-transform:uppercase; color:var(--taupe,#8A7E68); background:rgba(251,247,239,.82); padding:2px 6px; border-radius:5px; }
.mvme-cta{ display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:13px 15px; border-top:1px solid var(--rule,#E7DFD1); }
.mvme-btn{ text-align:center; padding:11px; border-radius:11px; font-size:13px; font-weight:600; cursor:pointer; border:1px solid var(--ink,#241F18); font-family:var(--sans,'DM Sans',system-ui,sans-serif); background:transparent; color:var(--ink,#241F18); }
.mvme-btn.ink{ background:var(--ink,#241F18); color:var(--paper,#FBF7EF); }
.mvme-btn.gold{ background:var(--gold,#B8956A); color:#fff; border-color:var(--gold,#B8956A); }
.mvme-cta-note{ font-size:11px; line-height:1.4; color:var(--amber,#C8911F); text-align:center; padding:9px 15px 0; }
.mvme-ics{ display:flex; align-items:center; justify-content:center; gap:6px; font-size:11.5px; color:var(--gold,#B8956A); text-decoration:none; font-weight:600; padding:11px 15px; border-top:1px solid var(--rule,#E7DFD1); cursor:pointer; }
.mvme-ics svg{ width:14px; height:14px; }
.mvme-cancel{ text-align:center; color:var(--red,#C0492F); font-size:11.5px; padding:11px 0; text-decoration:underline; text-underline-offset:2px; cursor:pointer; border-top:1px solid var(--rule,#E7DFD1); }

/* ── listas (Siguientes / Histórico / filtros) ── */
.mvme-list{ margin-top:4px; }
.mvme-li{ display:flex; align-items:center; gap:9px; padding:10px 2px; border-top:1px solid var(--rule,#E7DFD1); text-decoration:none; color:inherit; cursor:pointer; }
.mvme-li:first-child{ border-top:none; }
.mvme-dot{ width:7px; height:7px; border-radius:50%; flex:none; background:var(--taupe,#8A7E68); }
.mvme-dot.confirmed{ background:var(--green,#3B7A4B); }
.mvme-dot.pending{ background:var(--amber,#C8911F); }
.mvme-dot.done{ background:var(--taupe,#8A7E68); }
.mvme-dot.cancelled{ background:var(--red,#C0492F); }
.mvme-li__nm{ flex:1; min-width:0; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--ink,#241F18); }
.mvme-li__meta{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px; letter-spacing:.08em; color:var(--taupe,#8A7E68); text-transform:uppercase; flex:none; }
.mvme-again{ flex:none; color:var(--gold,#B8956A); font-size:10px; font-weight:700; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); letter-spacing:.04em; }

/* ── estado vacío ── */
.mvme-empty{ text-align:center; padding:22px 14px; border:1px dashed var(--rule,#E7DFD1); border-radius:14px; margin-top:12px; }
.mvme-empty .ic{ width:42px; height:42px; border-radius:50%; background:var(--sand,#F2EBDE); display:flex; align-items:center; justify-content:center; margin:0 auto 8px; color:var(--taupe,#8A7E68); }
.mvme-empty .ic svg{ width:20px; height:20px; }
.mvme-empty b{ display:block; font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-style:italic; font-size:17px; color:var(--ink,#241F18); }
.mvme-empty span{ font-size:12px; color:var(--taupe,#8A7E68); }

/* ── mini-cal mensual ── */
.mvme-cal{ background:var(--paper,#FBF7EF); border:1px solid var(--rule,#E7DFD1); border-radius:16px; padding:14px 14px 12px; }
.mvme-cal__title{ font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:19px; text-transform:capitalize; margin-bottom:10px; color:var(--ink,#241F18); }
.mvme-cal__wk{ display:grid; grid-template-columns:repeat(7,1fr); gap:3px; text-align:center; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.06em; color:var(--taupe,#8A7E68); margin-bottom:4px; }
.mvme-cal__grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.mvme-cell{ min-height:54px; border:none; background:transparent; border-radius:9px; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:1px; padding:4px 2px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:12px; color:var(--ink,#241F18); cursor:default; line-height:1.05; }
.mvme-cell.empty{ visibility:hidden; }
.mvme-cell.has{ cursor:pointer; background:var(--sand,#F2EBDE); }
.mvme-cell.muted{ color:var(--taupe,#8A7E68); }
.mvme-cell.today{ background:var(--ink,#241F18); color:var(--paper,#FBF7EF); font-weight:700; }
.mvme-cell.sel{ outline:2px solid var(--gold,#B8956A); outline-offset:-1px; border-radius:9px; }  /* [v7.27] día seleccionado */
.mvme-cell .num{ font-size:12px; }
.mvme-cell .ev{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:7px; line-height:1.2; text-align:center; margin-top:2px; }
.mvme-cell .ev .h{ display:block; font-weight:600; font-size:7.5px; }
.mvme-cell .ev .sp{ display:block; font-weight:600; }
.mvme-cell.confirmed .ev{ color:var(--green,#3B7A4B); }
.mvme-cell.pending .ev{ color:var(--amber,#C8911F); }
.mvme-cell.done .ev{ color:var(--taupe,#8A7E68); }
.mvme-cell.today .ev{ color:#E7DECF; }
/* [v7.42] FIX dark (alumno): la celda 'today' tiene fondo crema (--ink invertido) en
   oscuro; el .ev crema fijo quedaba crema-sobre-crema = invisible. Texto oscuro en dark. */
html[data-theme="dark"] .mvme-cell.today .ev{ color:#2B2117; }
.mvme-cal__legend{ display:flex; flex-wrap:wrap; gap:11px; margin-top:11px; font-size:10.5px; color:var(--taupe,#8A7E68); }
.mvme-cal__legend span{ display:inline-flex; align-items:center; gap:5px; }
.mvme-cal__legend i{ width:7px; height:7px; border-radius:50%; display:inline-block; }
.mvme-cal__legend i.c-confirmed{ background:var(--green,#3B7A4B); }
.mvme-cal__legend i.c-pending{ background:var(--amber,#C8911F); }
.mvme-cal__legend i.c-done{ background:var(--taupe,#8A7E68); }
.mvme-cal__hint{ font-size:11px; color:var(--taupe,#8A7E68); text-align:center; margin-top:10px; font-style:italic; font-family:var(--serif,'Cormorant Garamond',Georgia,serif); }

/* [BUG145 v27.3.2] avatar robusto del header: iniciales de base + foto superpuesta. */
.mvme-sheet__avatar{ position:relative; overflow:hidden; }
.mvme-sheet__avimg{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:50%; }
/* [BUG149 v27.3.2] mini-cal reutilizado arriba de la vista Reservas. */
.mvme-resv-cal{ margin-bottom:14px; }

/* [BUG 189 v27.3.3] Bloque "Mi localización" arriba del panel (encima de Tu día de hoy).
   OFF → botón activar; ON → mini-mapa ESTÁTICO con pin (cero MapLibre en el sheet). */
.mvme-myloc{ margin-bottom:16px; }
.mvme-myloc__label{ font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:10px; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--espresso,#3B332A); margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.mvme-myloc__dot{ width:6px; height:6px; border-radius:50%; flex:none; }
.mvme-myloc__dot.on{ background:var(--green,#3B7A4B); }
.mvme-myloc__dot.off{ background:var(--taupe,#8A7E68); }
.mvme-myloc__cta{ width:100%; display:flex; align-items:center; gap:13px; text-align:left; cursor:pointer; border:1.5px dashed var(--gold,#B8956A); background:linear-gradient(180deg,rgba(184,149,106,.08),rgba(184,149,106,.03)); border-radius:15px; padding:14px 15px; color:var(--ink,#241F18); font-family:var(--sans,'DM Sans',system-ui,sans-serif); min-height:44px; }
.mvme-myloc__cta:hover{ background:rgba(184,149,106,.12); }
.mvme-myloc__ic{ width:40px; height:40px; flex:none; border-radius:50%; background:var(--ink,#241F18); color:var(--paper,#FBF7EF); display:flex; align-items:center; justify-content:center; }
.mvme-myloc__tx{ flex:1; min-width:0; }
.mvme-myloc__tx b{ display:block; font-size:14.5px; font-weight:700; letter-spacing:-.01em; }
.mvme-myloc__tx span{ display:block; font-size:11.5px; color:var(--espresso,#3B332A); margin-top:2px; line-height:1.35; }
.mvme-myloc__arrow{ color:var(--gold,#B8956A); flex:none; }
.mvme-myloc__map{ position:relative; height:122px; border-radius:15px; overflow:hidden; border:1px solid var(--rule,#E7DFD1); cursor:pointer; background:radial-gradient(140px 100px at 26% 26%, #EFEADD 0%, transparent 70%), radial-gradient(160px 120px at 74% 64%, #E9E2D0 0%, transparent 72%), linear-gradient(160deg,#F2ECDD,#E7DECA); }
.mvme-myloc__water{ position:absolute; right:-20px; bottom:-30px; width:150px; height:120px; border-radius:50%; background:radial-gradient(circle at 40% 40%, rgba(122,145,111,.22), rgba(122,145,111,.10)); }
/* [v6.54 / BUG 264] Mapa REAL (MapLibre) sobre el arte estático, bajo el pin/chip/hide. */
.mvme-myloc__gl{ position:absolute; inset:0; z-index:1; background:var(--paper,#FBF7EF); }
.mvme-myloc__pin, .mvme-myloc__chip, .mvme-myloc__hide{ z-index:2; }
.mvme-myloc__streets{ position:absolute; inset:0; }
.mvme-myloc__streets path{ fill:none; stroke-linecap:round; }
.mvme-myloc__streets .minor{ stroke:rgba(255,255,255,.55); stroke-width:3; }
.mvme-myloc__streets .major{ stroke:#fff; opacity:.85; stroke-width:6; }
.mvme-myloc__bldg{ position:absolute; background:rgba(155,138,108,.30); border-radius:2px; }
.mvme-myloc__zone{ position:absolute; left:50%; top:48%; width:96px; height:96px; transform:translate(-50%,-50%); border-radius:50%; background:rgba(122,145,111,.18); border:1.5px solid var(--olive,#7A916F); }
.mvme-myloc__pin{ position:absolute; left:50%; top:48%; transform:translate(-50%,-50%); display:flex; align-items:center; justify-content:center; }
.mvme-myloc__ring{ position:absolute; width:58px; height:58px; border-radius:50%; border:2px solid var(--olive,#7A916F); opacity:.5; animation:mvmePing 2.4s ease-out infinite; }
.mvme-myloc__ring.b{ animation-delay:1.2s; }
@keyframes mvmePing{ 0%{ transform:scale(.5); opacity:.7 } 100%{ transform:scale(1.5); opacity:0 } }
.mvme-myloc__ava{ width:38px; height:38px; border-radius:50%; border:2.5px solid var(--paper,#FBF7EF); background:radial-gradient(circle at 40% 34%, #C9BCA2, #9C8E72) center/cover; box-shadow:0 3px 10px rgba(40,33,24,.3); position:relative; z-index:1; }
.mvme-myloc__chip{ position:absolute; left:10px; top:10px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9px; letter-spacing:.1em; text-transform:uppercase; background:rgba(251,247,239,.92); border:1px solid var(--rule,#E7DFD1); border-radius:999px; padding:4px 9px; color:var(--espresso,#3B332A); }
.mvme-myloc__hide{ position:absolute; right:10px; bottom:10px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:11px; font-weight:600; background:rgba(251,247,239,.94); border:1px solid var(--rule,#E7DFD1); border-radius:999px; padding:7px 11px; color:var(--red,#C0492F); cursor:pointer; min-height:32px; }

/* ─────────────────────────────────────────────────────────────
   [v7.28] CÍRCULO "COACHES GUARDADOS" (header del menú rápido alumno)
   + PANEL de favoritos con nota privada por coach. Reusa tokens del
   sistema (var(--sand/--ink/--rule/--gold/--paper)) → themea solo en
   modo oscuro como el resto del sheet.
   ───────────────────────────────────────────────────────────── */
.mvme-fav-circle{
  position:relative; flex:none; width:38px; height:38px; border-radius:50%;
  background:var(--sand-2,#EFE7D7); border:1.5px solid var(--gold,#B8956A);
  color:var(--gold,#B8956A); cursor:pointer; padding:0;
  display:flex; align-items:center; justify-content:center;
  transition:transform .12s ease, background .15s ease;
}
.mvme-fav-circle:hover{ transform:scale(1.06); background:var(--gold,#B8956A); color:var(--paper,#FBF7EF); }
.mvme-fav-circle:active{ transform:scale(.96); }
.mvme-fav-badge{
  position:absolute; top:-4px; right:-4px; min-width:17px; height:17px; padding:0 4px;
  border-radius:999px; background:var(--gold,#B8956A); color:#fff;
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:10px; font-weight:700;
  line-height:17px; text-align:center; border:1.5px solid var(--paper,#FBF7EF);
}

.mvme-fav-overlay{ position:fixed; inset:0; z-index:1300; display:flex; align-items:flex-end; justify-content:center; opacity:0; transition:opacity .2s ease; }
.mvme-fav-overlay.is-open{ opacity:1; }
.mvme-fav-backdrop{ position:absolute; inset:0; background:rgba(28,23,17,.55); }
.mvme-fav-panel{
  position:relative; width:100%; max-width:520px; max-height:86vh; display:flex; flex-direction:column;
  background:var(--paper,#FBF7EF); border-radius:22px 22px 0 0;
  box-shadow:0 -10px 40px rgba(28,23,17,.35); transform:translateY(18px); transition:transform .22s ease;
  padding:14px 16px calc(16px + env(safe-area-inset-bottom));
}
.mvme-fav-overlay.is-open .mvme-fav-panel{ transform:translateY(0); }
.mvme-fav-head{ display:flex; align-items:center; gap:10px; padding:0 2px 12px; border-bottom:1px dashed var(--rule,#E7DFD1); }
.mvme-fav-head h4{
  flex:1; margin:0; color:var(--ink,#241F18);
  font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-weight:600;
  font-size:13.5px; letter-spacing:.12em; text-transform:uppercase;
}
.mvme-fav-head h4 span{ color:var(--taupe,#8A7E68); font-weight:500; }
.mvme-fav-x{ width:30px; height:30px; border-radius:50%; background:var(--sand-2,#EFE7D7); border:none; color:var(--ink,#241F18); cursor:pointer; font-size:16px; line-height:1; flex:none; }
.mvme-fav-body{ overflow-y:auto; -webkit-overflow-scrolling:touch; padding:12px 2px 2px; display:flex; flex-direction:column; gap:11px; }

.mvme-favcard{ background:var(--sand,#F4EEE2); border:1px solid var(--rule,#E7DFD1); border-radius:15px; padding:12px; }
.mvme-favcard__top{ display:flex; align-items:center; gap:11px; }
.mvme-favcard__ph{
  width:48px; height:48px; border-radius:50%; flex:none; background:var(--sand-2,#EFE7D7) center/cover no-repeat;
  border:1.5px solid var(--ink,#241F18); display:flex; align-items:center; justify-content:center;
  font-family:var(--serif,'Cormorant Garamond',Georgia,serif); font-size:19px; color:var(--ink,#241F18);
}
.mvme-favcard__who{ flex:1; min-width:0; }
.mvme-favcard__who .nm{ font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-weight:700; font-size:15px; color:var(--ink,#241F18); display:flex; align-items:center; gap:5px; }
.mvme-favcard__who .nm .v{ width:14px; height:14px; border-radius:50%; background:var(--gold,#B8956A); color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:9px; flex:none; }
.mvme-favcard__who .mt{ font-size:12.5px; color:var(--taupe,#8A7E68); margin-top:1px; }
.mvme-favcard__who .rt{ font-size:12.5px; color:var(--espresso,#3B332A); margin-top:2px; }
.mvme-favcard__who .rt .star{ color:#C9A24B; margin-right:1px; }
.mvme-favcard__rm{ flex:none; width:26px; height:26px; border-radius:50%; background:transparent; border:none; color:var(--taupe,#8A7E68); cursor:pointer; font-size:17px; line-height:1; }
.mvme-favcard__rm:hover{ color:var(--red,#C0492F); }
.mvme-favcard__notelbl{ display:block; margin:10px 0 5px; font-family:var(--mono,'IBM Plex Mono',ui-monospace,monospace); font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--taupe,#8A7E68); }
.mvme-favcard__note{
  width:100%; box-sizing:border-box; resize:vertical; min-height:42px;
  background:var(--paper,#fff); border:1px solid var(--rule,#E7DFD1); border-radius:10px; padding:9px 10px;
  font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:13.5px; color:var(--ink,#241F18); line-height:1.4;
}
.mvme-favcard__note:focus{ outline:none; border-color:var(--gold,#B8956A); }
.mvme-favcard__note::placeholder{ color:var(--taupe,#8A7E68); opacity:.8; }
.mvme-favcard__book{ display:inline-block; margin-top:9px; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-size:12.5px; font-weight:700; color:var(--gold,#B8956A); text-decoration:none; }
.mvme-favcard__book:hover{ color:var(--ink,#241F18); text-decoration:underline; }

.mvme-fav-empty{ text-align:center; padding:24px 16px 14px; }
.mvme-fav-empty__h{ font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-weight:700; font-size:15.5px; color:var(--ink,#241F18); }
.mvme-fav-empty p{ font-size:13.5px; color:var(--taupe,#8A7E68); max-width:340px; margin:7px auto 14px; line-height:1.45; }
.mvme-fav-empty__cta{ display:inline-block; background:var(--ink,#241F18); color:var(--paper,#FBF7EF); text-decoration:none; font-family:var(--sans,'DM Sans',system-ui,sans-serif); font-weight:700; font-size:13.5px; padding:11px 20px; border-radius:12px; }
