/* ============================================================
   Bocca Dental — propuesta de sitio · Voize Tech, agosto 2026
   Voz: precisa · franca · cercana
   Objeto físico de referencia: la hoja de honorarios de un
   consultorio bien llevado + la señalética de un hospital moderno.
   Estrategia de color: Committed — morado profundo en los anclajes,
   blanco frío clínico en el cuerpo, #9000C0 solo en la acción.
   ============================================================ */

/* Tipografía autoalojada: sin dependencia de CDN, carga sin red y no bloquea el render. */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/inter-normal-400.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/inter-normal-500.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/inter-normal-600.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/inter-normal-700.woff2') format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/manrope-normal-600.woff2') format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/manrope-normal-700.woff2') format('woff2')}
@font-face{font-family:'Manrope';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/manrope-normal-800.woff2') format('woff2')}

:root{
  /* — Color. Todo deriva del morado real del logo (#9000C0). — */
  --plum:      oklch(0.25 0.115 313);   /* anclaje drenched: hero, pie */
  --plum-2:    oklch(0.31 0.135 313);   /* elevación dentro del plum */
  --purple:    oklch(0.48 0.253 313);   /* = #9000C0 · acción, marca */
  --purple-ink:oklch(0.40 0.215 313);   /* hover, texto morado denso */
  --purple-dim:oklch(0.34 0.180 313);   /* texto morado sobre tinte */
  --purple-tint:oklch(0.968 0.017 313); /* superficie tintada */
  --purple-line:oklch(0.90 0.045 313);

  --ink:       oklch(0.215 0.018 310);  /* tinta principal */
  --ink-2:     oklch(0.44 0.014 310);   /* secundaria — 7.0:1 */
  --ink-3:     oklch(0.55 0.012 310);   /* terciaria — solo ≥18px */
  --bg:        oklch(0.988 0.003 310);  /* blanco frío */
  --surface:   #fff;
  --line:      oklch(0.915 0.005 310);
  --line-2:    oklch(0.855 0.006 310);

  --teal:      oklch(0.50 0.088 205);   /* funcional: éxito */
  --teal-tint: oklch(0.965 0.020 205);
  --amber-tint:oklch(0.965 0.035 85);
  --amber-ink: oklch(0.46 0.105 70);

  /* — Escala fluida, ratio ≥1.25 — */
  --step--1: clamp(.8rem, .78rem + .1vw, .875rem);
  --step-0:  clamp(1.0625rem, 1.03rem + .16vw, 1.15rem);
  --step-1:  clamp(1.33rem, 1.26rem + .32vw, 1.5rem);
  --step-2:  clamp(1.66rem, 1.53rem + .6vw, 2.05rem);
  --step-3:  clamp(2.07rem, 1.83rem + 1.05vw, 2.8rem);
  --step-4:  clamp(2.6rem, 2.15rem + 1.95vw, 4rem);

  --sp-1:.5rem; --sp-2:.875rem; --sp-3:1.375rem; --sp-4:2.125rem;
  --sp-5:3.25rem; --sp-6:clamp(3.5rem,7vw,6rem); --sp-7:clamp(5rem,11vw,9rem);

  --r-sm:8px; --r:12px; --r-lg:16px;
  --ease: cubic-bezier(.22,1,.36,1);

  --z-sticky:100; --z-dock:200; --z-menu:300; --z-cookie:400;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:var(--step-0); line-height:1.6; color:var(--ink); background:var(--bg);
  -webkit-font-smoothing:antialiased; font-synthesis-weight:none;
}
img{max-width:100%;display:block;height:auto}
a{color:inherit}
h1,h2,h3,h4{font-family:'Manrope','Inter',sans-serif;line-height:1.12;letter-spacing:-.028em;text-wrap:balance;font-weight:800}
h1{font-size:var(--step-4)}
h2{font-size:var(--step-3)}
h3{font-size:var(--step-1)}
p{text-wrap:pretty;max-width:68ch}
::selection{background:var(--purple);color:#fff}
:focus-visible{outline:3px solid var(--purple);outline-offset:3px;border-radius:4px}

.wrap{width:min(100% - 2.5rem, 1180px);margin-inline:auto}
.wrap-narrow{width:min(100% - 2.5rem, 940px);margin-inline:auto}
.skip{position:absolute;left:-9999px}
.skip:focus{left:1rem;top:1rem;z-index:999;background:var(--surface);padding:.75rem 1.25rem;border-radius:var(--r-sm)}

/* ══ Encabezado ══ */
.top{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:var(--z-sticky)}
.top-inner{display:flex;align-items:center;gap:var(--sp-3);padding:.9rem 0}
.brand{display:flex;align-items:center;flex:0 0 auto;margin-right:auto}
.brand img{height:38px;width:auto}
.nav{display:flex;align-items:center;gap:.35rem}
.nav a{
  text-decoration:none;font-size:var(--step--1);font-weight:600;color:var(--ink-2);
  padding:.55rem .7rem;border-radius:var(--r-sm);transition:color .18s var(--ease),background .18s var(--ease);
}
.nav a:hover{color:var(--purple-ink);background:var(--purple-tint)}
.nav a[aria-current]{color:var(--purple-ink)}
.nav .urgencia{color:var(--amber-ink)}
.nav .urgencia::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;display:inline-block;margin-right:.4rem;vertical-align:.05em}
.top .tel{font-size:var(--step--1);font-weight:700;text-decoration:none;white-space:nowrap;padding:.55rem .7rem}
.burger{display:none;background:none;border:1px solid var(--line-2);border-radius:var(--r-sm);padding:.6rem .7rem;cursor:pointer;font:inherit;font-size:var(--step--1);font-weight:700}

/* ══ Botones ══ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font:inherit;font-size:var(--step--1);font-weight:700;letter-spacing:-.005em;
  padding:.85rem 1.4rem;border-radius:100px;border:0;cursor:pointer;text-decoration:none;white-space:nowrap;
  min-height:48px;transition:background .2s var(--ease),transform .12s var(--ease),color .2s var(--ease);
}
.btn-1{background:var(--purple);color:#fff}
.btn-1:hover{background:var(--purple-ink)}
.btn-2{background:var(--ink);color:#fff}
.btn-2:hover{background:var(--purple-ink)}
.btn-ghost{background:transparent;color:var(--purple-ink);box-shadow:inset 0 0 0 1.5px var(--purple-line)}
.btn-ghost:hover{background:var(--purple-tint)}
.btn-on-plum{background:#fff;color:var(--plum)}
.btn-on-plum:hover{background:var(--purple-tint)}
.btn-line-on-plum{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.42)}
.btn-line-on-plum:hover{background:rgba(255,255,255,.11)}
.btn:active{transform:scale(.975)}
.btn-lg{padding:1.05rem 1.8rem;font-size:var(--step-0);min-height:56px}

/* ══ Hero drenched ══ */
.hero{background:var(--plum);color:#fff;position:relative;overflow:hidden}
.hero::after{
  content:"";position:absolute;inset:auto -10% -45% 55%;height:70%;
  background:radial-gradient(closest-side, oklch(0.42 0.19 313 / .55), transparent);
  pointer-events:none;
}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--sp-5);align-items:center;
  padding-block:var(--sp-7) var(--sp-6);position:relative;z-index:1}
.hero-solo{padding-block:var(--sp-7) var(--sp-6);position:relative;z-index:1;max-width:none}
.hero-solo h1{max-width:17ch}
/* Tira de anclas de precio en el hero: información real ocupando el lugar
   que en otras marcas ocuparía una fotografía. */
.anclas{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1px;
  margin-top:var(--sp-5);background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.16);
  border-radius:var(--r);overflow:hidden}
.ancla{background:var(--plum);padding:var(--sp-3)}
.ancla b{display:block;font-size:var(--step--1);color:oklch(0.82 0.05 313);font-weight:600;margin-bottom:.35rem}
.ancla .v{font-family:'Manrope',sans-serif;font-size:var(--step-2);font-weight:800;letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;line-height:1}
.ancla .u{display:block;font-size:var(--step--1);color:oklch(0.80 0.05 313);margin-top:.3rem}
.ancla .v.sin{font-size:var(--step-0);font-weight:700;color:oklch(0.86 0.04 313)}
.hero h1{line-height:1.04;letter-spacing:-.03em;max-width:15ch}
.hero .lede{margin-top:var(--sp-3);font-size:var(--step-1);line-height:1.45;color:oklch(0.92 0.02 313);max-width:44ch;font-weight:400}
.hero .acts{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:var(--sp-4)}
.hero .sedes{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);margin-top:var(--sp-5);
  padding-top:var(--sp-3);border-top:1px solid rgba(255,255,255,.18)}
.hero .sede b{display:block;font-size:var(--step--1);letter-spacing:.02em;color:oklch(0.80 0.06 313)}
.hero .sede span{font-weight:600}
.hero-media{border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/5;background:var(--plum-2)}
.hero-media img{width:100%;height:100%;object-fit:cover}

/* ══ Secciones ══ */
.sec{padding-block:var(--sp-6)}
.sec-tight{padding-block:var(--sp-5)}
.sec-head{max-width:60ch;margin-bottom:var(--sp-4)}
.sec-head p{margin-top:var(--sp-2);color:var(--ink-2);font-size:var(--step-0)}
.plum-band{background:var(--plum);color:#fff}
.plum-band .sec-head p{color:oklch(0.88 0.025 313)}
.tint-band{background:var(--purple-tint)}

/* ══ Lista de tratamientos — hoja de honorarios, no grid de tarjetas ══ */
.trat{border-top:1px solid var(--line-2)}
.trat-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:var(--sp-3);align-items:center;
  padding:var(--sp-3) 0;border-bottom:1px solid var(--line);text-decoration:none;
  transition:background .18s var(--ease);
}
.trat-row:hover{background:var(--surface)}
.trat-row h3{font-size:var(--step-1);letter-spacing:-.02em}
.trat-row .inc{color:var(--ink-2);font-size:var(--step--1);margin-top:.3rem;max-width:52ch}
.precio{font-family:'Manrope',sans-serif;font-size:var(--step-2);font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap}
.precio small{display:block;font-size:var(--step--1);font-weight:600;color:var(--ink-2);letter-spacing:0}
.precio.pendiente{font-size:var(--step--1);font-weight:700;color:var(--purple-dim);
  background:var(--purple-tint);padding:.5rem .85rem;border-radius:100px;letter-spacing:0}
.trat-row .go{color:var(--purple);font-weight:700;font-size:var(--step-1);transition:transform .2s var(--ease)}
.trat-row:hover .go{transform:translateX(4px)}

/* ══ Bloques de contenido ══ */
.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-5);align-items:center}
.split-media{border-radius:var(--r-lg);overflow:hidden;background:var(--purple-tint)}
.split-media img{width:100%;aspect-ratio:1/1;object-fit:cover}
.fig-cap{font-size:var(--step--1);color:var(--ink-2);margin-top:var(--sp-2)}

.dupla{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-3)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--sp-3)}
.panel h3{font-size:var(--step-0);font-weight:700;margin-bottom:.45rem}
.panel p{font-size:var(--step--1);color:var(--ink-2)}

.faq{border-top:1px solid var(--line-2)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  padding:var(--sp-3) 0;cursor:pointer;font-weight:700;font-size:var(--step-0);
  list-style:none;display:flex;justify-content:space-between;gap:var(--sp-3);align-items:center;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--purple);font-size:var(--step-1);font-weight:700;transition:transform .2s var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding-bottom:var(--sp-3);color:var(--ink-2)}

/* ══ Tabla de precios ══ */
.tabla{width:100%;border-collapse:collapse;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.tabla th{
  text-align:left;font-size:var(--step--1);font-weight:700;color:var(--ink-2);
  padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line-2);background:var(--bg);
}
.tabla td{padding:var(--sp-3);border-bottom:1px solid var(--line);vertical-align:top}
.tabla tr:last-child td{border-bottom:0}
.tabla .t-nombre{font-weight:700}
.tabla .t-precio{font-family:'Manrope',sans-serif;font-weight:800;font-size:var(--step-1);font-variant-numeric:tabular-nums;white-space:nowrap}
.inc-list{list-style:none;font-size:var(--step--1);color:var(--ink-2)}
.inc-list li{padding-left:1.3rem;position:relative;margin-bottom:.3rem}
.inc-list li::before{position:absolute;left:0;font-weight:700}
.inc-list li.si::before{content:"✓";color:var(--teal)}
.inc-list li.no::before{content:"–";color:var(--ink-3)}

/* ══ Reseñas y equipo ══ */
.quote{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--sp-3)}
.quote p{font-size:var(--step-0);margin-bottom:var(--sp-2)}
.quote cite{font-style:normal;font-size:var(--step--1);color:var(--ink-2);font-weight:600}
.stars{color:var(--purple);letter-spacing:.1em;font-size:var(--step--1);margin-bottom:.6rem}

/* ══ Marcador de contenido pendiente ══ */
.pend{
  border:1.5px dashed var(--purple-line);border-radius:var(--r);background:var(--purple-tint);
  padding:var(--sp-3);color:var(--purple-dim);font-size:var(--step--1);font-weight:600;
  display:flex;flex-direction:column;justify-content:center;min-height:150px;text-align:center;gap:.35rem;
}
.pend b{display:block;font-size:var(--step-0);color:var(--purple-ink)}
.pend.retrato{aspect-ratio:4/5;min-height:0}
/* Variante sobre fondo morado (hero) */
.pend-dark{border:1.5px dashed rgba(255,255,255,.42);border-radius:var(--r-lg);
  background:rgba(255,255,255,.07);padding:var(--sp-4);color:oklch(0.88 0.03 313);
  font-size:var(--step--1);font-weight:500;display:flex;flex-direction:column;justify-content:center;
  gap:.5rem;text-align:center;aspect-ratio:4/5}
.pend-dark b{display:block;font-size:var(--step-0);font-weight:700;color:#fff}
.pend-dark .q{font-size:var(--step--1);color:oklch(0.80 0.05 313)}

/* ══ Formulario ══ */
.form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4)}
.form .campo{margin-bottom:var(--sp-3)}
.form label{display:block;font-size:var(--step--1);font-weight:700;margin-bottom:.4rem}
.form input,.form select{
  width:100%;font:inherit;font-size:var(--step-0);padding:.85rem 1rem;min-height:52px;
  border:1.5px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);color:var(--ink);
  transition:border-color .18s var(--ease);
}
.form input::placeholder{color:var(--ink-3)}
.form input:focus,.form select:focus{border-color:var(--purple);outline:none}
.form .hint{font-size:var(--step--1);color:var(--ink-2);margin-top:.4rem}
.form .consent{display:flex;gap:.7rem;align-items:flex-start;font-size:var(--step--1);color:var(--ink-2)}
.form .consent input{width:22px;height:22px;min-height:0;flex:0 0 auto;margin-top:.15rem;accent-color:var(--purple)}
.form .consent a{color:var(--purple-ink)}
.campo.error input{border-color:oklch(0.50 0.16 25)}
.msg-error{font-size:var(--step--1);font-weight:600;color:oklch(0.45 0.16 25);margin-top:.4rem}
.msg-ok{background:var(--teal-tint);border:1px solid oklch(0.85 0.05 205);border-radius:var(--r);
  padding:var(--sp-3);color:oklch(0.38 0.08 205);font-size:var(--step--1)}
.msg-ok b{display:block;font-size:var(--step-0);margin-bottom:.3rem}

/* ══ WhatsApp fijo ══ */
.wa{
  position:fixed;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom));z-index:var(--z-dock);
  display:inline-flex;align-items:center;gap:.6rem;background:var(--purple);color:#fff;
  text-decoration:none;font-weight:700;font-size:var(--step--1);padding:.9rem 1.3rem;border-radius:100px;
  box-shadow:0 6px 20px oklch(0.25 0.115 313 / .3);min-height:52px;
  transition:background .2s var(--ease),transform .12s var(--ease);
}
.wa:hover{background:var(--purple-ink)}
.wa:active{transform:scale(.97)}

/* ══ Pie ══ */
.pie{background:var(--plum);color:#fff;padding-block:var(--sp-5) var(--sp-5)}
/* El pie es morado como las secciones ancla: sin franja clara intermedia. */
.sec + .pie, .sec-tight + .pie{margin-top:var(--sp-6)}
.plum-band + .pie{margin-top:0;border-top:1px solid rgba(255,255,255,.14)}
.pie-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:var(--sp-4)}
.pie img.logo{height:34px;width:auto;margin-bottom:var(--sp-2)}
.pie h4{font-size:var(--step--1);letter-spacing:.03em;color:oklch(0.78 0.06 313);margin-bottom:.7rem;font-weight:700}
.pie a{color:#fff;text-decoration:none;display:block;padding:.28rem 0;font-size:var(--step--1)}
.pie a:hover{text-decoration:underline}
.pie .legal{border-top:1px solid rgba(255,255,255,.18);margin-top:var(--sp-4);padding-top:var(--sp-3);
  padding-right:11rem; /* deja libre el botón fijo de WhatsApp */
  display:flex;flex-wrap:wrap;gap:var(--sp-3);justify-content:space-between;align-items:center;
  font-size:var(--step--1);color:oklch(0.80 0.04 313)}
.pie .legal img{height:22px;width:auto;opacity:.9}

/* ══ Cookies ══ */
.cookies{
  position:fixed;left:1rem;right:1rem;bottom:1rem;z-index:var(--z-cookie);
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);
  padding:var(--sp-3);display:grid;grid-template-columns:1fr auto;gap:var(--sp-3);align-items:center;
  box-shadow:0 8px 28px oklch(0.25 0.06 313 / .16);max-width:640px;margin-inline:auto;
}
.cookies p{font-size:var(--step--1);color:var(--ink-2);max-width:none}
.cookies .acts{display:flex;gap:.5rem;flex-wrap:wrap}
.cookies .btn{padding:.7rem 1.1rem;min-height:44px}

/* ══ Nota de propuesta (solo maqueta) ══ */
.nota{background:var(--ink);color:#fff;font-size:var(--step--1);padding:.7rem 0}
.nota .wrap{display:flex;gap:var(--sp-3);align-items:center;justify-content:space-between;flex-wrap:wrap}
.nota b{font-weight:700}
.nota a{color:oklch(0.85 0.09 313)}

/* ══ Responsive ══ */
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;gap:var(--sp-4);padding-block:var(--sp-5)}
  .hero-media{aspect-ratio:16/10;order:-1}
  .hero h1{max-width:none}
  .split{grid-template-columns:1fr;gap:var(--sp-4)}
  .pie-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:760px){
  .nav{
    display:none;position:absolute;top:100%;left:0;right:0;background:var(--surface);
    border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;
    padding:var(--sp-2);gap:.15rem;z-index:var(--z-menu);
  }
  .nav[data-open]{display:flex}
  .nav a{padding:.9rem .8rem;font-size:var(--step-0);min-height:48px;display:flex;align-items:center}
  .burger{display:block}
  .top .tel{display:none}
  .top-inner{position:relative}
  .top-inner .btn{padding:.7rem 1.05rem;font-size:.82rem}
  .brand img{height:32px}
  .hero h1{font-size:clamp(2.15rem,8.5vw,2.9rem)}
  .trat-row{grid-template-columns:1fr auto;gap:var(--sp-2) var(--sp-3)}
  .trat-row .go{display:none}
  .precio{font-size:var(--step-1)}
  .pie-grid{grid-template-columns:1fr}
  .cookies{grid-template-columns:1fr}
  body{padding-bottom:5rem}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .btn:active,.wa:active{transform:none}
}

/* ══════════════════════════════════════════════════════════════
   Sitio completo — menú desplegable, utilidades y bloques nuevos
   ══════════════════════════════════════════════════════════════ */

/* ── Desplegable de tratamientos ── */
.drop{position:relative}
.drop-t{
  font:inherit;font-size:var(--step--1);font-weight:600;color:var(--ink-2);background:none;border:0;
  padding:.55rem .7rem;border-radius:var(--r-sm);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;
  transition:color .18s var(--ease),background .18s var(--ease);
}
.drop-t:hover,.drop:hover .drop-t{color:var(--purple-ink);background:var(--purple-tint)}
.drop-t[aria-current]{color:var(--purple-ink)}
.drop-p{
  position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-6px);
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r);
  padding:var(--sp-3);display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:var(--sp-3);align-items:start;
  box-shadow:0 12px 32px oklch(0.25 0.06 313 / .14);z-index:var(--z-menu);width:max-content;max-width:min(92vw,760px);
  opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s var(--ease),transform .18s var(--ease);
}
.drop:hover .drop-p,.drop:focus-within .drop-p,.drop[data-open] .drop-p{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.drop-p .mg h4{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);
  font-weight:700;margin-bottom:.5rem}
.drop-p .mg a{display:block;padding:.42rem .5rem;margin-left:-.5rem;border-radius:6px;
  font-size:var(--step--1);font-weight:500;color:var(--ink);text-decoration:none;line-height:1.35}
.drop-p .mg a:hover{background:var(--purple-tint);color:var(--purple-ink)}

/* ── Tarjeta de enlace (relacionados, sedes) ── */
.rel{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
  padding:var(--sp-3);text-decoration:none;transition:border-color .18s var(--ease)}
.rel:hover{border-color:var(--purple-line)}
.rel h3{font-size:var(--step-0);font-weight:700;margin-bottom:.35rem}
.rel p{font-size:var(--step--1);color:var(--ink-2)}

/* ── Tabla con scroll propio en móvil ── */
.tabla-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tabla .t-u{font-size:var(--step--1);font-weight:600;color:var(--ink-2)}
.tabla .t-precio{font-family:'Manrope',sans-serif;font-weight:800;font-size:var(--step-1);
  font-variant-numeric:tabular-nums;white-space:nowrap}

/* ── Prosa (legal) ── */
.prosa h2{font-size:var(--step-1)}
.prosa .sec-p{color:var(--ink-2)}

/* ── Utilidades ── */
.mt0{margin-top:0}.mt2{margin-top:var(--sp-2)}.mt3{margin-top:var(--sp-3)}.mt4{margin-top:var(--sp-4)}
.mb3{margin-bottom:var(--sp-3)}
.pb6{padding-bottom:var(--sp-6)}
.rel-z{position:relative;z-index:1}
.wfull{width:100%}
.one-col{grid-template-columns:1fr}
.center{text-align:center}
.center-x{margin-inline:auto}
.sec-p{color:var(--ink-2)}
.lnk{color:var(--purple-ink);font-weight:600;text-decoration:none}
.lnk:hover{text-decoration:underline}
.lc{font-weight:400;margin:0}
.dato b{color:var(--ink)}
.dato{color:var(--ink-2)}
.hero-precio{font-size:var(--step-3);color:#fff}
.precio.pendiente.sobre-plum{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.3)}
.on-plum{margin-top:var(--sp-3);color:oklch(0.90 0.025 313)}
.on-plum-2{color:oklch(0.80 0.06 313);font-size:var(--step--1)}
.tel-block{margin-top:var(--sp-4);padding-top:var(--sp-3);border-top:1px solid rgba(255,255,255,.18)}
.tel-big{font-family:'Manrope',sans-serif;font-size:var(--step-2);font-weight:800;letter-spacing:-.03em;
  text-decoration:none;font-variant-numeric:tabular-nums;color:#fff}
.revisar{margin-top:var(--sp-3);font-size:var(--step--1);color:var(--ink-2);
  background:var(--amber-tint);padding:var(--sp-3);border-radius:var(--r)}
.revisar b{color:var(--amber-ink)}
.pend.alto{min-height:320px}
.pie-lede{color:oklch(0.85 0.03 313);font-size:var(--step--1);max-width:34ch}
.pie-tel{font-weight:700;text-decoration:none;font-variant-numeric:tabular-nums}
.legal .il{display:inline}
.legal .prep{display:flex;align-items:center;gap:.6rem}

@media (max-width:760px){
  .drop{width:100%}
  .drop-t{width:100%;justify-content:space-between;padding:.9rem .8rem;font-size:var(--step-0);min-height:48px}
  .drop-p{position:static;transform:none;opacity:1;visibility:visible;pointer-events:auto;
    box-shadow:none;border:0;border-left:0;padding:0 0 var(--sp-2) .8rem;grid-template-columns:1fr;
    width:auto;max-width:none;display:none;background:none}
  .drop[data-open] .drop-p{display:grid;transform:none}
  .drop-p .mg a{padding:.6rem .5rem;min-height:44px;display:flex;align-items:center}
  .legal{padding-right:0}
  .legal .prep{width:100%}
}

/* La etiqueta de precio sin cifra es larga: en móvil no puede empujar la fila. */
@media (max-width:760px){
  .precio.pendiente{white-space:normal;text-align:right;max-width:11rem;line-height:1.3;padding:.45rem .75rem}
  .trat-row{align-items:start}
}

/* El marcador de retrato no debe estirarse a lo ancho de una columna grande. */
.pend.retrato{max-width:300px;width:100%}
.dupla .pend.retrato{justify-self:start}

/* ══════════════════════════════════════════════════════════════
   Listados en móvil — la pantalla es angosta y el scroll es caro
   ══════════════════════════════════════════════════════════════ */
@media (max-width:760px){

  /* 1 · Tabla de precios → tarjetas apiladas.
     Una tabla de 3 columnas en 390 px obliga a scroll horizontal, que es el
     gesto que más se pierde en móvil. Cada fila pasa a ser una tarjeta con
     su etiqueta, y el valor sube arriba junto al nombre. */
  .tabla-wrap{overflow:visible}
  .tabla{border:0;background:none}
  .tabla thead{position:absolute;left:-9999px}
  .tabla tbody,.tabla tr,.tabla td{display:block;width:100%}
  .tabla tr{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--r);
    padding:var(--sp-3);margin-bottom:var(--sp-2);
    display:grid;grid-template-columns:1fr auto;gap:.5rem var(--sp-2);align-items:start;
  }
  .tabla td{border:0;padding:0}
  .tabla td.t-nombre{grid-column:1;grid-row:1;font-size:var(--step-0)}
  .tabla td[data-l="Valor"]{grid-column:2;grid-row:1;text-align:right}
  .tabla td[data-l="Qué incluye"]{grid-column:1/-1;grid-row:2}
  .tabla td[data-l="Qué incluye"]::before{
    content:attr(data-l);display:block;font-size:10px;font-weight:700;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-3);margin-bottom:.4rem;
  }
  .tabla .t-precio{font-size:var(--step-1)}

  /* 2 · Filas de tratamiento compactas.
     Título y precio comparten línea; la descripción baja a ancho completo y
     se recorta a dos líneas. Pasa de ~136 px por fila a ~95 px. */
  .trat-row{grid-template-columns:1fr auto;gap:.3rem var(--sp-2);padding:var(--sp-2) 0;align-items:center}
  .trat-row > div:first-child{display:contents}
  .trat-row h3{grid-column:1;grid-row:1;font-size:var(--step-0);align-self:center}
  .trat-row .precio{grid-column:2;grid-row:1;align-self:center;font-size:var(--step-0)}
  .trat-row .precio small{font-size:10px}
  .trat-row .precio.pendiente{font-size:11px;padding:.35rem .6rem;max-width:8.5rem}
  .trat-row .inc{
    grid-column:1/-1;grid-row:2;font-size:12.5px;line-height:1.45;margin-top:.15rem;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }

  /* 3 · Listas de «incluye / se cobra aparte» más densas */
  .inc-list li{margin-bottom:.2rem;line-height:1.45}

  /* 4 · Los grupos de tarjetas no necesitan tanto aire entre sí */
  .dupla{gap:var(--sp-2)}
  .panel{padding:var(--sp-2) var(--sp-3)}
}

/* ── Bloque colapsable (listas largas) ── */
.colapso{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.colapso > summary{
  list-style:none;cursor:pointer;padding:var(--sp-3);display:flex;align-items:center;
  justify-content:space-between;gap:var(--sp-3);font-weight:700;min-height:56px;
}
.colapso > summary::-webkit-details-marker{display:none}
.colapso > summary::after{content:"+";color:var(--purple);font-size:var(--step-2);font-weight:700;
  line-height:1;transition:transform .2s var(--ease)}
.colapso[open] > summary::after{transform:rotate(45deg)}
.colapso > summary:hover{background:var(--purple-tint)}
.colapso .cnt{display:block;font-weight:400;font-size:var(--step--1);color:var(--ink-2);margin-top:.15rem}
.colapso-body{padding:0 var(--sp-3) var(--sp-3)}
@media (max-width:760px){
  .colapso-body{padding:0 var(--sp-2) var(--sp-2)}
  .colapso-body .tabla tr{padding:var(--sp-2)}
}

/* 🔴 `display:grid` en .cookies anula el atributo [hidden] (que solo aplica
   display:none como estilo de user-agent). Sin esta regla el aviso no se
   cierra nunca, ni al cargar ni al pulsar un botón. */
.cookies[hidden]{display:none}
.cookies{animation:sube .28s var(--ease) both}
@keyframes sube{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.cookies{animation:none}}
