:root{--ink:#13100f;--cream:#f4efe7;--red:#CE174F;--wine:#701134;--muted:#6f6862;--line:rgba(19,16,15,.14)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:"Baloo 2",sans-serif}.noise{position:fixed;inset:0;pointer-events:none;opacity:.06;z-index:20;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E")}.topbar{height:76px;padding:0 4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(244,239,231,.9);backdrop-filter:blur(16px);z-index:10}.brand{font:bold 21px "Baloo 2";text-decoration:none;color:var(--ink);letter-spacing:-1.2px}.brand span{font-weight:400;color:var(--red)}nav{display:flex;gap:32px}nav a,footer a{color:var(--ink);font-size:13px;text-decoration:none}nav a{padding:29px 0;position:relative}nav a.active:after{content:"";position:absolute;bottom:20px;left:0;width:18px;height:2px;background:var(--red)}button,.button{font:600 12px "Baloo 2";cursor:pointer}.header-actions{display:flex;align-items:center;gap:10px}.header-actions button{border:0;background:none;padding:10px}.login{border:1px solid var(--ink)!important}.bag b{display:inline-grid;place-items:center;background:var(--red);color:#fff;width:19px;height:19px;border-radius:50%;font-size:10px;margin-left:4px}.hero{min-height:670px;position:relative;padding:110px 7vw 70px;overflow:hidden}.hero:before{content:"";position:absolute;inset:0 0 0 47%;background:#171211}.eyebrow,.kicker{font-size:12px;letter-spacing:.22em;font-weight:700;color:var(--red)}h1,h2{font-family:"Baloo 2",sans-serif;margin:0;font-weight:700;letter-spacing:-.055em;line-height:.88}h1{font-size:clamp(68px,9vw,132px);position:relative;z-index:2;max-width:700px}.hero h1 em{color:var(--red)}em{font-weight:500}.hero>p{max-width:500px;line-height:1.8;color:#685f59;margin:36px 0;position:relative;z-index:2}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;text-decoration:none;border:1px solid var(--ink);transition:.25s}.button:hover{transform:translateY(-2px)}.primary{background:var(--red);border-color:var(--red);color:#fff}.ghost{color:var(--ink);margin-left:8px}.hero-actions,.trust-row{position:relative;z-index:2}.trust-row{display:flex;gap:28px;font-size:12px;text-transform:uppercase;letter-spacing:.09em;margin-top:92px}.trust-row i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--red);margin-right:5px}.hero-art{position:absolute;inset:0 0 0 47%;color:#fff}.orb{position:absolute;border-radius:50%;filter:blur(2px)}.orb-one{width:430px;height:430px;right:8%;top:12%;background:radial-gradient(circle at 33% 30%,#F47AA2 0,#CE174F 29%,#5E1029 70%,transparent 71%);box-shadow:0 0 90px #CE174F44}.orb-two{width:230px;height:230px;right:31%;bottom:-3%;background:linear-gradient(140deg,#ffc6a6,#831033 62%,#241115)}.monogram{font:500 260px/1 "Baloo 2",sans-serif;position:absolute;right:8%;bottom:7%;mix-blend-mode:screen;opacity:.16}.monogram span{font-style:italic}.vertical-copy{writing-mode:vertical-rl;position:absolute;right:2.5%;top:18%;font-size:12px;letter-spacing:.3em;opacity:.6}.section{padding:100px 5vw}.section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:42px}.section h2,.content-market h2,.join h2{font-size:clamp(44px,5vw,78px)}.section h2 em{color:var(--red)}.result-count{font-size:12px;color:var(--muted)}.filterbar{display:flex;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:15px 0;margin-bottom:32px}.tabs{display:flex;gap:8px}.tabs button,.market-tabs button{border:0;background:none;color:var(--muted);padding:10px 14px}.tabs button.active,.market-tabs button.active{background:var(--ink);color:#fff}.search{margin-left:auto;border-left:1px solid var(--line);padding-left:18px}.search input{background:transparent;border:0;outline:0;padding:10px;width:160px}.filter-btn{border:1px solid var(--line);background:transparent;padding:10px 14px}.filter-btn span{background:var(--red);color:#fff;padding:2px 6px;border-radius:9px;margin-left:5px}.profile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.profile-card{min-width:0}.portrait{height:430px;position:relative;overflow:hidden;background:var(--tone);transition:.35s}.portrait:before{content:"";position:absolute;width:70%;height:88%;border-radius:48% 48% 8% 8%;left:15%;bottom:-12%;background:linear-gradient(160deg,rgba(255,255,255,.65),var(--shade));box-shadow:inset 20px 20px 60px rgba(255,255,255,.25)}.portrait:after{content:"";position:absolute;width:38%;height:38%;border-radius:50%;left:31%;top:13%;background:linear-gradient(145deg,#f4c3aa,#8e4d3d)}.profile-card:hover .portrait{transform:translateY(-5px)}.badge{position:absolute;z-index:2;top:14px;left:14px;padding:7px 9px;background:rgba(18,14,13,.78);color:#fff;font-size:12px;letter-spacing:.08em}.online{position:absolute;z-index:2;right:14px;top:14px;width:9px;height:9px;background:var(--success);border:2px solid white;border-radius:50%}.card-info{display:flex;justify-content:space-between;padding:14px 2px}.card-info h3{font:500 24px "Baloo 2";margin:0}.card-info p{font-size:12px;color:var(--muted);margin:6px 0}.verified{color:var(--red)}.distance{font-size:12px;color:var(--muted);padding-top:5px}.content-market{background:var(--ink);color:#fff;padding:100px 5vw;display:grid;grid-template-columns:minmax(240px,1fr) minmax(0,2.2fr);gap:4vw;overflow:hidden}.content-market h2{margin:18px 0 28px}.content-market h2 em{color:#F05B89}.market-intro p{color:#a8a09b;line-height:1.8;font-size:13px}.market-tabs{display:flex;margin-top:35px}.market-tabs button{border:1px solid #ffffff20;color:#aaa}.market-tabs button.active{background:#fff;color:#111}.product-rail{display:grid;grid-template-columns:repeat(2,minmax(230px,1fr));gap:16px}.product{background:#24201e}.product-art{height:250px;background:radial-gradient(circle at 70% 20%,var(--glow),transparent 35%),linear-gradient(135deg,var(--c1),var(--c2));position:relative}.play{position:absolute;display:grid;place-items:center;width:54px;height:54px;border:1px solid #ffffff88;border-radius:50%;left:calc(50% - 27px);top:calc(50% - 27px);backdrop-filter:blur(5px)}.product-type{position:absolute;top:12px;left:12px;font-size:12px;letter-spacing:.1em}.product-body{padding:18px}.product-body h3{font:500 21px "Baloo 2";margin:0 0 6px}.product-body p{margin:0;color:#aaa;font-size:12px}.buy-row{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.buy-row button{border:1px solid #ffffff40;color:#fff;background:none;width:32px;height:32px}.creators{background:#e6ded3}.creator-row{display:grid;grid-template-columns:repeat(6,1fr);gap:20px}.creator{text-align:center}.avatar{aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 30%,#efc0aa 0 20%,transparent 21%),linear-gradient(145deg,var(--c1),var(--c2));border:6px solid rgba(255,255,255,.5)}.creator h3{font:500 18px "Baloo 2";margin:12px 0 3px}.creator p{font-size:12px;letter-spacing:.08em;color:var(--muted)}.text-link{border:0;background:none}.join{background:var(--red);color:#fff;padding:90px 7vw;display:grid;grid-template-columns:1fr 1fr;gap:12vw}.join .kicker{color:#2b0d0b}.join h2 em{color:#31100d}.join p{line-height:1.8}.light{background:#fff;color:#111;border-color:#fff;margin-top:12px}footer{padding:45px 5vw;display:grid;grid-template-columns:1fr 2fr 1fr auto;gap:30px;align-items:center;font-size:12px}footer p{color:var(--muted)}footer div{display:flex;gap:18px}.age-gate{position:fixed;inset:0;background:rgba(12,8,7,.92);backdrop-filter:blur(18px);z-index:100;display:grid;place-items:center;padding:20px;transition:.5s}.age-gate.hidden{opacity:0;visibility:hidden}.gate-card{width:min(520px,100%);background:var(--cream);padding:58px;text-align:center;border:1px solid #ffffff33;box-shadow:0 30px 100px #000}.gate-mark{display:grid;place-items:center;margin:0 auto 25px;width:62px;height:62px;border-radius:50%;background:var(--red);color:white;font:italic 23px "Baloo 2"}.gate-card h2{font-size:52px;margin:14px 0 24px}.gate-card h2 em{color:var(--red)}.gate-card p{font-size:12px;line-height:1.7;color:var(--muted)}.gate-card .button{width:100%;margin-top:14px}.leave{border:0;background:none;margin-top:20px;color:var(--muted)}.drawer{position:fixed;right:0;top:0;height:100%;width:min(460px,92vw);padding:60px 45px;background:var(--cream);z-index:60;transform:translateX(105%);transition:.35s;box-shadow:-30px 0 80px #0003}.drawer.open{transform:none}.drawer h2{font-size:50px;margin:12px 0 35px}.close{position:absolute;right:25px;top:20px;font-size:28px;border:0;background:none}.city-list{display:grid;grid-template-columns:1fr 1fr}.city-list button{padding:16px 0;text-align:left;border:0;border-bottom:1px solid var(--line);background:none}.city-list button:hover{color:var(--red)}.scrim{position:fixed;inset:0;background:#0008;z-index:50;opacity:0;visibility:hidden;transition:.3s}.scrim.open{opacity:1;visibility:visible}.bag-items{min-height:220px}.empty{color:var(--muted)}.bag-line{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:16px 0;font-size:12px}.bag-line button{border:0;background:none;color:var(--red)}.bag-total{display:flex;justify-content:space-between;border-top:1px solid var(--ink);padding-top:18px}.checkout{width:100%;margin-top:22px}@media(max-width:900px){nav{display:none}.city-trigger{display:none}.hero{padding-top:80px;min-height:620px}.hero:before{inset:48% 0 0}.hero-art{inset:48% 0 0}.orb-one{width:290px;height:290px}.trust-row{margin-top:55px}.profile-grid{grid-template-columns:repeat(2,1fr)}.content-market{grid-template-columns:1fr}.creator-row{grid-template-columns:repeat(3,1fr)}footer{grid-template-columns:1fr 1fr}.portrait{height:390px}}@media(max-width:560px){.topbar{padding:0 18px}.login{display:none}.hero{padding:60px 22px 40px;min-height:670px}.hero h1{font-size:61px}.hero>p{font-size:13px}.trust-row{gap:10px;flex-wrap:wrap}.section,.content-market{padding:72px 20px}.section-head{align-items:start}.result-count{display:none}.filterbar{flex-wrap:wrap}.tabs{overflow:auto;width:100%}.search{margin:10px auto 0 0;border-left:0}.profile-grid{gap:10px}.portrait{height:270px}.card-info h3{font-size:18px}.product-rail{display:flex;overflow-x:auto}.product{min-width:250px}.creator-row{grid-template-columns:repeat(3,1fr);gap:12px}.join{grid-template-columns:1fr;padding:72px 22px;gap:30px}.join h2{font-size:48px}footer{grid-template-columns:1fr}.gate-card{padding:40px 24px}.gate-card h2{font-size:43px}}

/* Modal "Contacto y denuncias" (público) */
.support-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(480px,92vw);max-height:88vh;overflow:auto;background:var(--cream);z-index:101;padding:40px 32px;box-shadow:0 30px 100px #0006}
.support-modal[hidden]{display:none}
.support-modal h2{font-size:34px;margin:0 0 8px}
.support-modal>p{color:var(--muted);font-size:13px;margin:0 0 20px}
.support-modal form{display:flex;flex-direction:column;gap:14px}
.support-modal label{font-size:12px;color:var(--muted);display:flex;flex-direction:column;gap:6px}
.support-modal input,.support-modal select,.support-modal textarea{font:14px "Baloo 2",sans-serif;padding:11px 12px;border:1px solid var(--line);background:#fff;color:var(--ink)}
.support-modal textarea{resize:vertical}
.support-modal .form-message{color:var(--red);font-size:12px;min-height:1em;margin:0}
.support-modal .button{width:100%}
html[data-theme="dark"] .support-modal{background:#1a1513}
@media(max-width:560px){.support-modal{padding:28px 20px}}

/* === UX Fase 1 === */

/* 1. Botón "Ingresar" (.login): antes solo tenía un borde por el !important
   de arriba, sin tipografía ni color propios, por lo que el navegador
   pintaba el <a> con su azul y subrayado por defecto. Lo convertimos en un
   botón píldora consistente con los demás controles del header. */
a.login {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  padding: 0 20px;
  color: var(--ink) !important;
  text-decoration: none !important;
  font: 600 12px "Baloo 2", sans-serif;
  letter-spacing: .01em;
  white-space: nowrap;
  transition: transform .25s, background-color .25s, color .25s;
}
a.login:hover { background: color-mix(in srgb, var(--ink) 8%, transparent); transform: translateY(-1px); }
a.login:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }

/* 2. Footer: en pantallas intermedias los 5 links se apretaban y
   "Publica tu perfil" quedaba en 3 líneas. Nuevo layout: marca +
   descripción a la izquierda, links que se acomodan en flex-wrap sin
   partirse palabra por palabra, y el © en su propia fila con una línea
   divisoria. Mobile (<560px): una sola columna. */
footer {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 28px 40px;
  padding: 44px 5vw 26px;
}
footer > .brand { flex: 0 0 auto; }
footer > p { flex: 1 1 260px; max-width: 380px; margin: 0; order: 2; }
footer > div { flex: 0 1 auto; flex-wrap: wrap; gap: 10px 22px; order: 3; }
footer > div a { white-space: nowrap; }
footer > small {
  flex: 1 0 100%;
  order: 4;
  margin-top: 6px;
  padding-top: 18px;
  border-top: 1px solid var(--line);
  color: var(--muted);
}
@media (max-width: 560px) {
  footer { flex-direction: column; align-items: flex-start; gap: 20px; padding: 40px 20px 24px; }
  footer > div { gap: 12px 20px; }
}

/* 3. Rail de productos: cuando no hay perfiles con contenido de pago (o
   mientras carga) la mitad derecha de "Más cerca de tus favoritas" quedaba
   vacía. content-market es una sección siempre oscura en ambos temas
   (fondo forzado a negro/#060506 vía membership.css), así que estos
   estilos usan blancos/translúcidos fijos en vez de variables de tema. */
.product-skeleton .product-art { background: linear-gradient(90deg,#2a2523,#332d2a,#2a2523); }
.product-locked { position: relative; }
.product-art-locked {
  height: 250px;
  position: relative;
  overflow: hidden;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 30% 20%, #4a1f30, transparent 55%), linear-gradient(150deg, #2a2220, #171412 70%);
}
.product-art-locked::after {
  content: "";
  position: absolute;
  inset: 0;
  backdrop-filter: blur(6px);
  background: linear-gradient(180deg, transparent, rgba(6,5,6,.55));
}
.product-art-locked .lock-icon {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.35);
  background: rgba(0,0,0,.35);
  font-size: 17px;
}
.product-locked .product-body h3 { color: #fff; }
.product-locked .product-body p { color: #a8a09b; }
.product-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 14px;
  color: var(--red);
  font: 600 12px "Baloo 2", sans-serif;
  text-decoration: none;
}
.product-cta:hover { text-decoration: underline; }

/* 4. "Ver todas →" (creadoras) se partía en 3 líneas en mobile. */
.section-head .text-link { white-space: nowrap; }
@media (max-width: 560px) {
  .section-head { flex-wrap: wrap; row-gap: 10px; }
  .section-head .text-link { flex: 1 0 100%; text-align: left; }
}

/* Perfiles de ejemplo (fase 0, migración 014): etiqueta EJEMPLO en la tarjeta
   y aviso sin contacto en la ficha (clases que agrega public/app.js). */
/* Colores fijos: en modo oscuro --cream se redefine a un tono oscuro. */
.badge.badge-demo { top: 44px; background: #f4efe7; color: #701134; }
.public-contact.is-demo { grid-template-columns: 1fr; }
.public-contact.is-demo > div:first-child { display: none; }
.public-contact.is-demo .contact-actions { min-width: 0; }
.demo-notice { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin: 0; }
.demo-notice p { margin: 0; color: var(--ink); font-size: 14px; }
.demo-notice p b { color: var(--red); letter-spacing: .08em; font-size: 11px; display: block; }
.demo-notice a { color: var(--red); font-size: 13px; font-weight: 600; }
html[data-theme="dark"] .demo-notice p { color: #f6eee8; }
.demo-tag { display: inline-block; padding: 1px 6px; border-radius: 999px; background: #f4efe7; color: #701134; font-size: 8px; font-weight: 700; letter-spacing: .1em; line-height: 1.6; }
.story-strip a.story .demo-tag { margin-top: -3px; }

/* === UX Fase 2 === */
/* Navegación mobile: barra inferior, header compacto, chip de ciudad en el
   título y filtros fijos bajo el header. membership.css carga después, por
   eso algunos selectores llevan un prefijo extra de especificidad. */

:root { --tabbar-h: 58px; --filter-top: 86px; }
#perfiles, #mensajes, #membresias, #creadoras { scroll-margin-top: 84px; }

/* 1. Chip de ciudad dentro de «Escorts en <ciudad>» */
.city-chip {
  display: inline-flex;
  align-items: center;
  gap: .12em;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  cursor: pointer;
  border-radius: .18em;
}
.city-chip em {
  text-decoration: underline;
  text-decoration-thickness: .045em;
  text-underline-offset: .14em;
  text-decoration-color: color-mix(in srgb, var(--red) 32%, transparent);
  transition: text-decoration-color .25s;
}
.city-chip-caret {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: .6em;
  height: .6em;
  margin-top: .08em;
  border-radius: 50%;
  background: color-mix(in srgb, var(--red) 12%, transparent);
  color: var(--red);
  transition: background .25s, color .25s, transform .35s cubic-bezier(.2,.9,.25,1.25);
}
.city-chip-caret .lucide { width: .38em; height: .38em; stroke-width: 2.6; }
.city-chip:hover em { text-decoration-color: var(--red); }
.city-chip:hover .city-chip-caret, .city-chip[aria-expanded="true"] .city-chip-caret { background: var(--red); color: #fff; transform: translateY(.04em); }
.city-chip:focus-visible { outline: 2px solid var(--red); outline-offset: 4px; }

/* 2. Filtros fijos bajo el header (desktop y mobile) */
.profiles > .filterbar {
  position: sticky;
  top: var(--filter-top);
  z-index: 9;
  background: color-mix(in srgb, var(--cream) 86%, transparent);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
  backdrop-filter: blur(16px) saturate(1.4);
}
.filter-btn { display: inline-flex; align-items: center; gap: 7px; color: var(--ink); cursor: pointer; }
.filter-btn::before {
  content: "";
  width: 15px;
  height: 15px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M4 7h10M18 7h2M4 17h2M10 17h10'/%3E%3Ccircle cx='16' cy='7' r='2.2'/%3E%3Ccircle cx='8' cy='17' r='2.2'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M4 7h10M18 7h2M4 17h2M10 17h10'/%3E%3Ccircle cx='16' cy='7' r='2.2'/%3E%3Ccircle cx='8' cy='17' r='2.2'/%3E%3C/svg%3E") center / contain no-repeat;
}
.filter-btn #filterCount {
  display: inline-grid;
  place-items: center;
  min-width: 18px;
  height: 18px;
  margin-left: 0;
  padding: 0 5px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  line-height: 1;
  box-shadow: 0 0 0 2px var(--cream);
  animation: se-pop .35s cubic-bezier(.2,.9,.25,1.25);
}
.filter-btn #filterCount[hidden] { display: none; }
@keyframes se-pop { from { transform: scale(.4); opacity: 0; } }

/* 3. Barra inferior (solo <900px) */
.tabbar { display: none; }

@media (max-width: 900px) {
  :root { --filter-top: 74px; }
  body { padding-bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom)); }

  .tabbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 44; /* bajo el botón del asistente (45), el velo (50), cajones y ficha */
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    padding: 0 max(6px, env(safe-area-inset-right)) env(safe-area-inset-bottom) max(6px, env(safe-area-inset-left));
    border-top: 1px solid var(--line);
    background: color-mix(in srgb, var(--cream) 80%, transparent);
    -webkit-backdrop-filter: blur(22px) saturate(1.6);
    backdrop-filter: blur(22px) saturate(1.6);
    box-shadow: 0 -14px 34px rgba(19,16,15,.07);
  }
  .tabbar-item {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    min-height: var(--tabbar-h);
    padding: 9px 2px 6px;
    border: 0;
    background: none;
    color: var(--muted);
    font: 600 11px/1 "Baloo 2", sans-serif;
    letter-spacing: .02em;
    text-decoration: none;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: color .2s;
  }
  .tabbar-item .lucide { width: 22px; height: 22px; stroke-width: 1.8; transition: transform .3s cubic-bezier(.2,.9,.25,1.25); }
  .tabbar-item::before {
    content: "";
    position: absolute;
    top: 3px;
    left: 50%;
    width: 4px;
    height: 4px;
    margin-left: -2px;
    border-radius: 50%;
    background: var(--red);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--red) 16%, transparent), 0 0 10px var(--red);
    opacity: 0;
    transform: scale(0);
    transition: opacity .2s, transform .35s cubic-bezier(.2,.9,.25,1.25);
  }
  .tabbar-item.is-active { color: var(--ink); }
  .tabbar-item.is-active::before { opacity: 1; transform: scale(1); }
  .tabbar-item:active .lucide { transform: scale(.88); }
  .tabbar-item:focus-visible { outline: 2px solid var(--red); outline-offset: -4px; border-radius: 14px; }
  html[data-theme="dark"] .tabbar { box-shadow: 0 -14px 34px rgba(0,0,0,.35); }

  /* Elementos flotantes por encima de la barra */
  body .assist-fab { bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px); }
  body .toast { bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px); }

  /* Header compacto: logo a la izquierda, acciones de 40px */
  header.topbar { height: 64px; padding-inline: 16px 10px; }
  header.topbar > .brand { transform: none; }
  .topbar .brand-logo { width: 146px; height: 36px; }
  .topbar .header-actions { gap: 6px; }
  .header-actions a.login { display: none; } /* la cuenta vive en la barra inferior */
  .header-actions .profile-icon-button { width: 40px; height: 40px; }
  .header-actions .theme-toggle {
    width: 40px;
    height: 40px;
    padding: 0 !important;
    border-radius: 50%;
    justify-content: center;
  }
  .header-actions .theme-toggle .toggle-thumb { display: none; }
  .header-actions .theme-toggle .lucide {
    position: absolute;
    left: 50%;
    top: 50%;
    right: auto;
    width: 18px;
    height: 18px;
    margin: -9px 0 0 -9px;
    color: var(--ink);
    transition: opacity .25s, transform .45s cubic-bezier(.2,.9,.25,1.25);
  }
  /* Se ve solo el icono del modo al que se cambia. */
  .header-actions .theme-toggle:not(.is-dark) .theme-sun,
  .header-actions .theme-toggle.is-dark .theme-moon { opacity: 0; transform: rotate(-90deg) scale(.4); }
  .header-actions .theme-toggle:not(.is-dark) .theme-moon,
  .header-actions .theme-toggle.is-dark .theme-sun { opacity: 1; transform: none; color: var(--ink); }

  /* La tarjeta «Explorando…» sobra: el título ya abre el selector. */
  .profiles > .app-welcome { display: none; }
  .profiles > .section-head h2 { font-size: clamp(36px, 10vw, 52px); }

  /* Filtros fijos compactos; los géneros en una fila deslizable */
  .profiles > .filterbar { flex-wrap: wrap; gap: 8px; padding: 8px; margin-inline: -8px; }
  .profiles > .filterbar .tabs {
    flex: 0 1 auto;
    min-width: 0;
    width: auto;
    display: flex;
    flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 2px;
    scrollbar-width: none;
    overscroll-behavior-x: contain;
  }
  .profiles > .filterbar .tabs::-webkit-scrollbar { display: none; }
  .profiles > .filterbar .tabs button { flex: 0 0 auto; min-height: 40px; padding: 0 16px; white-space: nowrap; scroll-snap-align: start; }
  .profiles > .filterbar .search { flex: 1 1 auto; min-width: 0; margin: 0; padding-left: 10px; border-left: 0; }
  .profiles > .filterbar .search input { min-height: 40px; padding: 0 8px; }
  .profiles > .filterbar .filter-btn { min-height: 40px; padding: 0 14px; flex: 0 0 auto; }
}

@media (max-width: 560px) {
  :root { --filter-top: 70px; }
  header.topbar { padding-inline: 14px 8px; }
  .header-actions .install-app { width: 40px; height: 40px; padding: 0; justify-content: center; }
  .profiles > .filterbar .tabs { flex: 1 0 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .filter-btn #filterCount { animation: none; }
  .tabbar-item::before, .tabbar-item .lucide, .city-chip-caret { transition: none; }
}

/* === UX Fase 3 === */
/* Listado y ficha de perfil: tarjetas con proporción 3/4 y nombre sobre la
   foto, entrada escalonada, estados vacíos con el corazón de la marca,
   galería deslizable en mobile y contacto fijo (barra en mobile, bloque
   sticky en desktop). Las clases nuevas las agrega public/app.js. */

/* 1. Grilla: 2 columnas en mobile, 3 en tablet, 4 desde 1200px */
.profile-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 30px 16px; }
@media (min-width: 1200px) { .profile-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 34px 18px; } }
@media (max-width: 559.98px) { .profile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 10px; } }

/* Tarjeta: la imagen manda la altura (3/4), sin alturas fijas */
a.profile-card .portrait,
.profile-card.skeleton-card .portrait { height: auto; aspect-ratio: 3 / 4; border-radius: 20px; }
a.profile-card .portrait { isolation: isolate; transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s; }
a.profile-card:hover .portrait { box-shadow: 0 22px 40px -22px rgba(112, 17, 52, .6); }
@media (hover: none) { a.profile-card:hover .portrait { transform: none; box-shadow: none; } }

/* Nombre y edad sobre la foto, con degradado inferior para que se lean */
.portrait-caption {
  position: absolute;
  z-index: 2;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 64px 14px 13px;
  background: linear-gradient(to top, rgba(14, 9, 10, .86) 0%, rgba(14, 9, 10, .52) 42%, rgba(14, 9, 10, 0) 100%);
  color: #fff;
  pointer-events: none;
}
.portrait-caption h3 {
  margin: 0;
  overflow: hidden;
  font: 700 23px/1.02 "Baloo 2", sans-serif;
  letter-spacing: -.02em;
  color: #fff;
  white-space: nowrap;
  text-overflow: ellipsis;
  text-shadow: 0 1px 14px rgba(0, 0, 0, .3);
}
.portrait-caption p { margin: 3px 0 0; font-size: 12px; font-weight: 600; letter-spacing: .04em; color: rgba(255, 255, 255, .84); }
.portrait-caption .verified {
  display: inline-grid;
  place-items: center;
  width: 16px;
  height: 16px;
  margin-left: 2px;
  border-radius: 50%;
  background: var(--red);
  color: #fff;
  font-size: 10px;
  line-height: 1;
  vertical-align: 4px;
  text-shadow: none;
}

/* Debajo: ciudad y precio en una línea, atributos (≥11px) */
a.profile-card .card-info { display: block; padding: 11px 4px 0; }
a.profile-card .card-meta {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 4px 10px;
  margin: 0;
  font-size: 12px;
  line-height: 1.3;
  color: var(--muted);
}
a.profile-card .card-city { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
a.profile-card .distance { flex: none; padding: 0; font-size: 12px; font-weight: 700; color: var(--ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
html[data-theme="dark"] a.profile-card .distance { color: #f6eee8; }
a.profile-card .card-attribute-tags { gap: 4px; margin-top: 8px; }
a.profile-card .card-attribute-tags span { padding: 3px 8px; font-size: 11px; line-height: 1.35; }

/* Tarjetas compactas en mobile (2 columnas) y en "Más perfiles" de la ficha */
@media (max-width: 559.98px) {
  a.profile-card .portrait, .profile-card.skeleton-card .portrait { border-radius: 16px; }
  a.profile-card .badge { top: 9px; left: 9px; padding: 5px 7px; }
  a.profile-card .badge.badge-demo { top: 34px; }
  a.profile-card .online { top: 10px; right: 10px; }
  .portrait-caption { padding: 44px 10px 9px; }
  .portrait-caption h3 { font-size: 18px; }
  .portrait-caption p { font-size: 11px; }
  a.profile-card .card-info { padding: 8px 2px 0; }
  a.profile-card .card-meta { flex-wrap: wrap; font-size: 11px; }
  a.profile-card .distance { font-size: 11px; }
  a.profile-card .card-attribute-tags { margin-top: 6px; }
  a.profile-card .card-attribute-tags span:nth-child(n+3) { display: none; }
}
.related-grid .portrait-caption { padding: 44px 11px 10px; }
.related-grid .portrait-caption h3 { font-size: 18px; }
.related-grid a.profile-card .card-attribute-tags span:nth-child(n+3) { display: none; }

/* 2. Entrada escalonada de las tarjetas al pintar el listado (tope: 12) */
@keyframes fase3-card-in {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: none; }
}
.profile-grid > a.profile-card {
  animation: fase3-card-in .6s cubic-bezier(.2, .8, .2, 1) both;
  animation-delay: calc(min(var(--i, 0), 11) * 45ms);
}

/* 3. Estados vacíos (ciudad sin perfiles, filtros sin resultados, error) */
.profiles-empty.empty-card {
  grid-column: 1 / -1;
  display: grid;
  justify-items: center;
  margin: 4px 0;
  padding: 56px 28px 48px;
  border: 1px solid var(--line);
  border-radius: 28px;
  background:
    radial-gradient(90% 70% at 50% -10%, color-mix(in srgb, var(--red) 11%, transparent), transparent 70%),
    color-mix(in srgb, var(--ink) 2%, transparent);
  color: var(--ink);
  text-align: center;
}
.empty-heart { width: 68px; height: 68px; margin-bottom: 18px; overflow: visible; }
.empty-heart-core { fill: var(--red); }
.empty-heart-shine { fill: #fff; fill-opacity: .88; }
.empty-heart-burst circle { fill: var(--red); opacity: .38; transform-box: fill-box; transform-origin: center; animation: fase3-burst 2.8s ease-in-out infinite; }
.empty-heart-burst circle:nth-child(2) { animation-delay: .35s; }
.empty-heart-burst circle:nth-child(3) { animation-delay: .7s; }
.empty-heart-burst circle:nth-child(4) { animation-delay: 1.05s; }
@keyframes fase3-burst { 0%, 100% { opacity: .18; transform: scale(.7); } 50% { opacity: .6; transform: scale(1.1); } }
.empty-card.is-filtered .empty-heart, .empty-card.profiles-error .empty-heart { width: 50px; height: 50px; margin-bottom: 14px; }
.empty-card.profiles-error .empty-heart-core { fill: var(--wine); }
html[data-theme="dark"] .empty-card.profiles-error .empty-heart-core { fill: #9b123d; }
.empty-kicker { margin-bottom: 8px; font-size: 10px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: var(--red); }
.empty-card h3 { max-width: 22ch; margin: 0; font: 700 clamp(24px, 3vw, 34px)/1.08 "Baloo 2", sans-serif; letter-spacing: -.02em; color: var(--ink); text-wrap: balance; }
.empty-card.is-filtered h3, .empty-card.profiles-error h3 { font-size: clamp(21px, 2.4vw, 26px); }
.empty-card > p { max-width: 40ch; margin: 10px 0 22px; font-size: 14px; line-height: 1.6; color: var(--muted); }
.empty-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }
.profiles-empty.empty-card .empty-actions .button { display: inline-flex; align-items: center; justify-content: center; margin: 0; min-height: 46px; padding: 0 22px; background: transparent; color: var(--ink); font: 600 14px "Baloo 2", sans-serif; text-decoration: none; cursor: pointer; }
.profiles-empty.empty-card .empty-actions .button.primary { background: var(--red); border-color: var(--red); color: #fff; }
.profiles-empty.empty-card .empty-actions .button:hover { transform: translateY(-1px); }
.empty-actions .button:focus-visible, .empty-cities button:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
.empty-cities { width: min(540px, 100%); margin-top: 30px; padding-top: 22px; border-top: 1px dashed var(--line); }
.empty-cities small { display: block; margin-bottom: 12px; font-size: 10px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.empty-cities div { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.empty-cities button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 38px;
  padding: 0 8px 0 14px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--cream);
  color: var(--ink);
  font: 600 13px "Baloo 2", sans-serif;
  cursor: pointer;
  transition: border-color .2s, color .2s, transform .2s;
}
.empty-cities button b { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: color-mix(in srgb, var(--red) 12%, transparent); color: var(--red); font-size: 11px; }
.empty-cities button:hover { border-color: var(--red); color: var(--red); transform: translateY(-1px); }
@media (max-width: 559.98px) {
  .profiles-empty.empty-card { padding: 40px 18px 34px; border-radius: 22px; }
  .empty-actions { width: 100%; flex-direction: column; }
  .profiles-empty.empty-card .empty-actions .button { width: 100%; }
}

/* 4. Galería de la ficha: pista con scroll-snap; flechas en desktop, puntos
   y deslizamiento en mobile/táctil. La foto se amplía tocándola o con el
   botón de la esquina. */
.gallery-track {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  border-radius: inherit;
}
.gallery-track::-webkit-scrollbar { display: none; }
.gallery-slide {
  flex: 0 0 100%;
  height: 100%;
  padding: 0;
  border: 0;
  background: transparent center / cover no-repeat;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  cursor: zoom-in;
}
.gallery-slide:focus { outline: none; }
.profile-cover .gallery-zoom {
  inset: auto;
  top: 14px;
  right: 14px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(19, 16, 15, .42);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  color: #fff;
  transition: background-color .2s, transform .2s;
}
.profile-cover .gallery-zoom[hidden] { display: none; }
.profile-cover .gallery-zoom:hover { background: rgba(19, 16, 15, .62); transform: scale(1.05); }
.profile-cover .gallery-zoom:focus-visible { outline: 2px solid #fff; outline-offset: 2px; border-radius: 50%; }
.gallery-zoom svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.gallery-dots {
  position: absolute;
  z-index: 2;
  left: 50%;
  bottom: 16px;
  display: none;
  gap: 6px;
  padding: 6px 9px;
  border-radius: 999px;
  background: rgba(19, 16, 15, .34);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  transform: translateX(-50%);
  pointer-events: none;
}
.gallery-dots i { width: 6px; height: 6px; border-radius: 3px; background: rgba(255, 255, 255, .5); transition: width .25s, background-color .25s; }
.gallery-dots i.active { width: 18px; background: #fff; }
@media (max-width: 900px), (hover: none) {
  .profile-cover .gallery-nav { display: none; }
  .gallery-dots:not([hidden]) { display: flex; }
}

/* 5. Contacto de la ficha. Íconos en los botones. */
.contact-actions .button, .contact-bar a { gap: 8px; text-decoration: none; }
.contact-actions svg, .contact-bar svg { flex: none; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }

/* Desktop: el bloque de contacto queda fijo (sticky) en la columna de info */
@media (min-width: 901px) {
  .profile-main .public-contact {
    position: sticky;
    top: 76px;
    z-index: 3;
    padding: 18px 20px 18px 24px;
    background: var(--cream);
    box-shadow: 0 20px 34px -28px rgba(19, 16, 15, .45);
  }
  .profile-main .public-contact h2 { font-size: 30px; }
  .profile-main .public-contact .contact-actions { min-width: 180px; }
  html[data-theme="dark"] .profile-main .public-contact { box-shadow: 0 20px 34px -24px rgba(0, 0, 0, .7); }
}

/* Mobile (≤900px): barra fija inferior con el canal principal grande */
.contact-bar { display: none; }
@media (max-width: 900px) {
  .contact-bar:not([hidden]) {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 6;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px max(14px, env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(14px, env(safe-area-inset-left));
    border-top: 1px solid var(--line);
    background: color-mix(in srgb, var(--cream) 90%, transparent);
    -webkit-backdrop-filter: blur(18px) saturate(1.2);
    backdrop-filter: blur(18px) saturate(1.2);
    box-shadow: 0 -14px 30px -20px rgba(19, 16, 15, .4);
  }
  .contact-bar-primary {
    flex: 1;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 0 18px;
    border: 1px solid transparent;
    border-radius: 999px;
    font: 700 16px "Baloo 2", sans-serif;
    white-space: nowrap;
  }
  .contact-bar-primary span { overflow: hidden; text-overflow: ellipsis; }
  .contact-bar-primary.call { background: var(--ink); border-color: var(--ink); color: var(--cream); }
  .contact-bar-primary svg { width: 20px; height: 20px; }
  .contact-bar-icon { flex: none; display: grid; place-items: center; width: 52px; height: 52px; border: 1px solid var(--line); border-radius: 50%; color: var(--ink); }
  .contact-bar-icon.call { border-color: var(--ink); }
  .contact-bar a:active { transform: scale(.97); }
  .contact-bar a:focus-visible { outline: 2px solid var(--red); outline-offset: 2px; }
  .contact-bar-demo { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 40px; }
  .contact-bar-demo .demo-tag { flex: none; font-size: 9px; padding: 3px 8px; }
  .contact-bar-demo p { flex: 1; min-width: 0; margin: 0; font-size: 13px; line-height: 1.3; color: var(--ink); }
  .contact-bar-demo a { flex: none; color: var(--red); font-size: 13px; font-weight: 700; white-space: nowrap; }
  /* Con la barra visible, el bloque en línea sobra */
  .profile-main .public-contact.has-bar { display: none; }
  .profile-view .profile-shell { padding-bottom: calc(120px + env(safe-area-inset-bottom)); }
  body:has(#profileView.open) .toast { bottom: calc(90px + env(safe-area-inset-bottom)); }
}

/* Tablet (560–900px): la columna de info no puede desbordar la ficha */
.profile-view .profile-layout { grid-template-columns: minmax(330px, 42%) minmax(0, 1fr); }
@media (min-width: 560px) and (max-width: 900px) {
  .profile-view .profile-layout { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 28px; }
  .profile-view .profile-heading { flex-direction: column; }
  .profile-view .quick-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .profile-view .access-card { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 559.98px) { .profile-view .profile-layout { grid-template-columns: minmax(0, 1fr); } }

@media (prefers-reduced-motion: reduce) {
  .profile-grid > a.profile-card { animation: none; }
  .empty-heart-burst circle { animation: none; }
  a.profile-card .portrait, .gallery-dots i, .contact-bar a { transition: none; }
  .gallery-track { scroll-behavior: auto; }
}

/* === UX Fase 4 === */
/* Tokens de diseño: superficies, texto secundario, estado y foco, y escalas
   de espaciado/tipografía para nuevos componentes. No cambian paleta ni
   layout: --muted ya se fijó arriba en un tono con más contraste sobre
   --cream (antes #8f8780 ≈3.1:1, ahora #6f6862 ≈4.8:1) y --success unifica
   los verdes casi duplicados (#43aa64/#48c56b/#62ce83/#4dcc76) con un valor
   por tema que cumple ≥4.5:1 sobre su fondo (ver override en membership.css
   dentro de html[data-theme="dark"]). */
:root {
  --surface: #ffffff;
  --surface-2: #f9f5ee;
  --text-2: var(--muted);
  --success: #256640;
  --focus: var(--red);
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-7: 32px; --space-8: 40px;
  --fs-xs: 12px; --fs-sm: 13px; --fs-md: 15px; --fs-lg: 18px; --fs-xl: 24px;
}

/* Tipografía: el cuerpo de texto (párrafos) pasa a Hanken Grotesk; logo,
   títulos y botones se quedan en Baloo 2 (ya la declaran explícitamente). */
p, .legal-content li, details.faq li {
  font-family: "Hanken Grotesk", "Baloo 2", sans-serif;
}

/* Foco visible y consistente para todo elemento interactivo del sitio
   público (no toca panel.css, fuera de alcance). */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible,
input:focus-visible, select:focus-visible, textarea:focus-visible,
summary:focus-visible, .tabbar-item:focus-visible {
  outline: 2px solid var(--focus, #CE174F);
  outline-offset: 3px;
  border-radius: 4px;
}
/* La pista de la galería de la ficha apaga el foco por completo (:focus, no
   solo :focus-visible): le devolvemos un anillo visible al navegar con teclado. */
.gallery-slide:focus-visible { outline: 2px solid var(--focus, #CE174F); outline-offset: -4px; }

/* Movimiento reducido a nivel de sitio: cualquier transición/animación que
   no esté ya cubierta por las reglas de fase 2/3 queda casi instantánea
   (cajones, ficha, hover de tarjetas y botones, aviso, etc.). */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* Cajones y ficha cerrados: no deben quedar en el orden de tabulación. Las
   clases .open siguen mandando la transición visual; [inert] (agregado por
   app.js al abrir/cerrar) saca el contenido del árbol de foco/lectura. */
.drawer[inert], .profile-view[inert] { pointer-events: none; }

/* === Sellos de verificación y retoque (migración 016) ==========================
   «100% VERIFICADA»: sello redondo carmesí y blanco (verificación presencial o por
   video del equipo). «NO VERIFICADA»: etiqueta rectangular gris con borde punteado
   (forma distinta a propósito). Los perfiles de ejemplo sólo llevan EJEMPLO. */
.stamp { position: absolute; z-index: 3; top: 12px; left: 12px; pointer-events: auto; user-select: none; }
.stamp-verified {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  width: 66px; height: 66px; border-radius: 50%; padding: 0; text-align: center; line-height: 1;
  background: radial-gradient(circle at 30% 22%, #f0457c, #CE174F 55%, #8c0e36);
  color: #fff; border: 2px solid #fff;
  box-shadow: 0 0 0 2px rgba(206, 23, 79, .9), 0 6px 14px rgba(24, 0, 9, .38);
  transform: rotate(-8deg);
}
.stamp-verified svg { width: 13px; height: 13px; fill: none; stroke: #fff; stroke-width: 3.2; stroke-linecap: round; stroke-linejoin: round; margin-bottom: 1px; }
.stamp-verified b { font: 800 15px/1 "Baloo 2", sans-serif; letter-spacing: -.02em; }
.stamp-verified small { font: 800 7.6px/1.15 "Baloo 2", sans-serif; letter-spacing: .05em; margin-top: 1px; }
.stamp-unverified {
  padding: 5px 8px; border-radius: 3px; background: rgba(66, 66, 70, .8); color: #ecebe8;
  border: 1.5px dashed rgba(255, 255, 255, .7);
  font: 700 9px/1 "Baloo 2", sans-serif; letter-spacing: .1em; white-space: nowrap;
}
a.profile-card .portrait > .badge.badge-demo { top: 14px; }
.cover-stamp { position: absolute; left: 14px; bottom: 14px; z-index: 3; }
.cover-stamp .stamp { position: static; }
.cover-stamp .stamp-verified { width: 78px; height: 78px; }
.cover-stamp .stamp-verified svg { width: 16px; height: 16px; }
.cover-stamp .stamp-verified b { font-size: 19px; }
.cover-stamp .stamp-verified small { font-size: 8.5px; }
.cover-stamp .stamp-unverified { font-size: 10.5px; padding: 6px 10px; }
.cover-stamp:empty { display: none; }
.retouch-tag {
  position: absolute; left: 14px; top: 58px; z-index: 3; padding: 5px 11px; border-radius: 999px;
  background: rgba(19, 16, 15, .66); color: #fff; font: 600 11.5px/1.2 "Baloo 2", sans-serif;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.retouch-tag[hidden] { display: none; }
.retouch-tag--lightbox { position: fixed; left: 20px; top: auto; bottom: 20px; z-index: 5; }
.service-note { margin: 2px 0 8px; font-size: 12px; color: var(--muted); }
@media (max-width: 560px) {
  .stamp { top: 9px; left: 9px; }
  .stamp-verified { width: 54px; height: 54px; }
  .stamp-verified svg { width: 10px; height: 10px; }
  .stamp-verified b { font-size: 12px; }
  .stamp-verified small { font-size: 6px; }
  .stamp-unverified { font-size: 7.5px; padding: 4px 6px; }
  a.profile-card .portrait > .badge.badge-demo { top: 9px; }
  .cover-stamp { left: 10px; bottom: 10px; }
  .cover-stamp .stamp-verified { width: 62px; height: 62px; }
  .retouch-tag { left: 10px; top: 52px; }
  .retouch-tag--lightbox { top: auto; bottom: 16px; }
}
@media (prefers-reduced-motion: reduce) { .stamp-verified { transform: none; } }

/* Franja horaria del aviso en la ficha (migración 015) */
.detail-schedule { margin: 4px 0 0; font-size: 13px; font-weight: 600; letter-spacing: .02em; color: var(--red); }
