/* =========================================================
   Bellísima Beauty Studio: estilos
   Paleta y tipografías según el manual de marca.
   Bromawo (títulos) y Migra (botones) son de pago: por ahora
   se usa Cormorant Garamond. Si llegan los archivos, basta
   con cambiar --font-title y --font-button.
   ========================================================= */

:root {
  /* Paleta de marca */
  --desert: #b5936e;
  --ecru: #c1b6a4;
  --macarron: #ebcaa7;
  --linen: #f5e4d2;
  --light-beige: #f7eee7;
  --oyster: #e5e5e3;

  /* Derivados para texto y botones (contraste AA) */
  --brand: #a48878;       /* marrón del logo */
  --brand-deep: #87695a;  /* botones, acentos legibles */
  --ink: #2e241f;
  --muted: #74655c;
  --line: #e2d5cb;
  --surface: #fffdfa;

  /* Tipografías */
  --font-title: 'Cormorant Garamond', Georgia, serif;
  --font-sub: 'Bebas Neue', 'Arial Narrow', sans-serif;
  --font-body: 'Playfair Display', Georgia, serif;
  --font-button: 'Cormorant Garamond', Georgia, serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: #fff;
  color: var(--ink);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  font-variant-numeric: lining-nums;
}
img { display: block; max-width: 100%; }
a { color: inherit; }
p { font-style: italic; }

.wrap { width: min(1400px, calc(100% - 64px)); margin: auto; }

/* ---------- Header ---------- */
header {
  height: 108px;
  background: var(--surface);
  display: flex;
  align-items: center;
  position: relative;
  z-index: 20;
  border-bottom: 1px solid var(--line);
}
.head { display: grid; grid-template-columns: 330px 1fr 170px; align-items: center; gap: 20px; }
.logo { height: 100px; width: auto; mix-blend-mode: multiply; }
nav { display: flex; justify-content: center; gap: 44px; }
nav a {
  text-decoration: none;
  font-family: var(--font-sub);
  font-size: 19px;
  letter-spacing: .12em;
  padding: 10px 0;
  border-bottom: 1px solid transparent;
}
nav a:hover, nav a[aria-current="page"] { border-bottom-color: var(--ink); }
.lang { text-align: right; font-family: var(--font-sub); font-size: 18px; letter-spacing: .12em; }
.lang a { text-decoration: none; color: var(--muted); }
.lang a:hover { color: var(--ink); }
.mobile-menu { display: none; }

/* ---------- Botones ---------- */
.actions { display: flex; gap: 16px; flex-wrap: wrap; }
.btn {
  height: 56px;
  min-width: 220px;
  padding: 0 32px;
  border: 1px solid var(--brand-deep);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  font-family: var(--font-button);
  font-weight: 600;
  font-size: 20px;
  transition: background .2s, color .2s;
}
.btn.primary { background: var(--brand-deep); color: #fff; }
.btn.primary:hover { background: #6f5446; }
.btn.secondary { background: var(--surface); color: var(--brand-deep); }
.btn.secondary:hover { background: var(--light-beige); }

/* ---------- Títulos comunes ---------- */
.kicker {
  font-family: var(--font-sub);
  font-size: 17px;
  letter-spacing: .24em;
  color: var(--brand-deep);
  margin-bottom: 8px;
}
h1, h2 { font-family: var(--font-title); font-weight: 300; }
h2 { font-size: 56px; line-height: 1; margin: 0; }

/* ---------- Hero ----------
   Degradado solo en beiges. La foto de Franmari es un recorte sin
   fondo (PNG transparente); se desvanece abajo y en el borde izquierdo,
   donde el brazo queda cortado por el encuadre original. */
.hero {
  background: linear-gradient(90deg, #e2c6ab 0%, #e6cdb4 36%, var(--linen) 50%, var(--light-beige) 60%, #fbf6f1 100%);
  position: relative;
  overflow: hidden;
}
.hero .wrap { position: relative; min-height: 580px; display: grid; grid-template-columns: 55% 45%; align-items: center; }
.hero-copy { padding: 70px 80px 72px 0; position: relative; z-index: 4; }
.hero h1 { font-size: clamp(58px, 5.4vw, 88px); line-height: .98; letter-spacing: -.01em; margin: 0 0 24px; max-width: 820px; }
.hero p { font-size: 20px; line-height: 1.45; max-width: 640px; margin: 0 0 34px; }
.note { font-size: 14px; font-style: italic; color: var(--muted); margin-top: 15px; }
.hero-photo {
  position: absolute;
  z-index: 3;
  right: 175px;
  bottom: 0;
  height: 100%;
  width: auto;
  max-width: none;
  object-fit: contain;
  pointer-events: none;
  filter: drop-shadow(0 18px 30px rgba(107, 79, 63, .14));
  -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 9%), linear-gradient(to bottom, #000 88%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image: linear-gradient(to right, transparent 0%, #000 9%), linear-gradient(to bottom, #000 88%, transparent 100%);
  mask-composite: intersect;
}
.hero-quote { position: absolute; z-index: 5; right: 8px; top: 110px; width: 165px; color: #4f3c32; }
.hero-quote em { display: block; font-family: var(--font-title); font-style: italic; font-size: 40px; line-height: 1.05; }
.hero-quote i { display: block; width: 28px; border-top: 1px solid #4f3c32; margin: 30px 0 20px; }
.hero-quote b { font-family: var(--font-sub); font-weight: 400; font-size: 15px; letter-spacing: .3em; line-height: 1.5; }

/* ---------- Servicios ---------- */
.services { background: #fff; padding: 84px 0 48px; position: relative; z-index: 3; }
.services-title { margin-bottom: 34px; display: flex; align-items: end; gap: 26px; }
.services-title:after { content: ''; height: 1px; background: var(--ecru); width: 75px; margin-bottom: 14px; }
/* Una sola fila de 8 tarjetas del mismo tamaño: pestañas (4), micropigmentación (2)
   y complementarios (2). La primera columna se calcula para que todas midan igual:
   50% - separación entre grupos (32px) + mitad del espacio entre tarjetas (14px). */
.groups { display: grid; grid-template-columns: calc(50% - 25px) 1fr 1fr; gap: 0 32px; }
.label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-sub);
  font-size: 17px;
  letter-spacing: .18em;
  margin-bottom: 12px;
}
.label:after { content: ''; height: 1px; background: var(--ecru); flex: 1; }
.cards { display: grid; gap: 14px; }
.cards.four { grid-template-columns: repeat(4, 1fr); }
.cards.two { grid-template-columns: repeat(2, 1fr); }
.card {
  background: var(--light-beige);
  text-align: center;
  text-decoration: none;
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid #f0e6de;
  transition: transform .2s, box-shadow .2s;
}
a.card:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(66, 44, 34, .1); }
/* Tono de marca: aclara sombras (ojeras) y calienta un poco, sin tocar los archivos */
.card img { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; filter: contrast(.92) brightness(1.04) sepia(.12) saturate(.95); }
.card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto;
  aspect-ratio: 1 / 1;
  background: var(--linen);
  opacity: .22;
  mix-blend-mode: soft-light;
  pointer-events: none;
  z-index: 1;
}
.card .name { font-family: var(--font-title); font-size: 19px; font-weight: 500; padding: 10px 8px 0; }
.card .desc { display: block; font-size: 12px; font-style: italic; line-height: 1.3; color: var(--muted); padding: 2px 8px 4px; min-height: 2.6em; }
.card { padding-bottom: 12px; position: relative; }
/* Nota "Foto real": aparece al pasar el cursor sobre la foto (computadora)… */
.real-note {
  position: absolute;
  z-index: 2;
  top: 0;
  left: 0;
  right: 0;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: flex-end;
  opacity: 0;
  transition: opacity .25s;
  pointer-events: none;
}
.real-note span {
  width: 100%;
  padding: 5px 8px;
  background: rgba(245, 228, 210, .92);
  font-family: var(--font-title);
  font-style: italic;
  font-size: 13px;
  line-height: 1.2;
  color: var(--ink);
}
.card:hover .real-note, .card:focus-within .real-note, a.card:focus .real-note { opacity: 1; }
/* …y en pantallas táctiles se muestra siempre, pequeña, debajo de la foto */
@media (hover: none) {
  .real-note { position: static; aspect-ratio: auto; display: block; opacity: 1; }
  .real-note span { display: block; padding: 6px 6px 0; background: none; font-size: 12px; color: var(--muted); }
}
.card strong { display: block; font-family: var(--font-title); font-size: 24px; font-weight: 600; padding: 2px 8px 0; }

/* Servicios sin foto: lista con precio y botón para solicitar */
.extras { list-style: none; margin: 12px 0 0; padding: 0; }
.extras li {
  display: flex;
  align-items: baseline;
  gap: 16px;
  padding: 11px 12px;
  background: var(--light-beige);
  border: 1px solid #f0e6de;
  border-radius: 4px;
  margin-top: 8px;
  font-family: var(--font-title);
  font-size: 20px;
  font-weight: 500;
}
.extras span { flex: 1; }
.extras strong { font-size: 22px; font-weight: 600; }

/* Botones explícitos para pedir cita (solo ellos abren WhatsApp) */
.card-cta, .row-cta {
  font-family: var(--font-button);
  color: var(--brand-deep);
  text-decoration: none;
  border: 1px solid var(--brand-deep);
  border-radius: 999px;
  white-space: nowrap;
  transition: background .2s, color .2s;
}
div.card { display: flex; flex-direction: column; align-items: center; }
div.card img { align-self: stretch; }
div.card strong { margin-bottom: 10px; }
.card-cta { display: inline-block; margin-top: auto; padding: 6px 16px; font-size: 16px; }
.row-cta { padding: 3px 12px; font-size: 15px; }
.card-cta:hover, .row-cta:hover { background: var(--brand-deep); color: #fff; }
.services-more { margin-top: 32px; text-align: center; }

/* ---------- Página de servicios ---------- */
.page-head { background: linear-gradient(90deg, var(--linen), var(--light-beige)); padding: 64px 0 52px; }
.page-head h1 { font-size: clamp(44px, 5vw, 72px); line-height: 1; margin: 0 0 20px; }
.page-head p { font-size: 18px; line-height: 1.5; max-width: 680px; margin: 0; }
.catalog { padding: 56px 0 32px; }
.page-head .wrap, .catalog .wrap { max-width: 1000px; }
.cat + .cat { margin-top: 48px; }
.price-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.catalog-note { margin: 40px 0 0; font-size: 14px; color: var(--muted); }

/* ---------- Sobre Franmari ---------- */
.about { background: linear-gradient(90deg, var(--light-beige), #fcfaf8 55%, #efe5de); }
.about-grid { display: grid; grid-template-columns: 30% 34% 36%; min-height: 390px; }
.about-main { width: 100%; height: 390px; object-fit: cover; object-position: center 20%; }
.about-copy { padding: 60px 42px 40px; display: flex; flex-direction: column; justify-content: center; }
.about-copy h2 { font-size: 50px; }
.about-copy p { font-size: 17px; line-height: 1.5; color: #564b44; }
.about-copy .btn { align-self: flex-start; height: 52px; min-width: 250px; }
.editorials { display: grid; grid-template-columns: 1fr 1fr .45fr; gap: 8px; padding: 14px 0; }
.editorials img { width: 100%; height: 360px; object-fit: cover; object-position: center 18%; }
.precision { align-self: center; padding: 10px; }
.precision:before { content: ''; display: block; width: 30px; border-top: 1px solid var(--brand-deep); margin-bottom: 16px; }
.precision span { display: block; font-family: var(--font-sub); font-size: 15px; letter-spacing: .2em; line-height: 1.5; }

/* ---------- Pasos ---------- */
.steps { padding: 48px 0; background: #fff; }
.steps-grid { display: grid; grid-template-columns: 42% 58%; align-items: center; }
.steps-copy h2 { font-size: 52px; }
.steps-copy p { font-size: 16px; line-height: 1.5; color: var(--muted); max-width: 540px; }
.steps-items { display: grid; grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--line); }
.step { text-align: center; padding: 16px 24px; min-height: 170px; }
.step + .step { border-left: 1px solid var(--line); }
.num {
  display: inline-grid;
  place-items: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  font-family: var(--font-title);
  font-size: 22px;
  font-weight: 600;
}
.step h3 { font-family: var(--font-title); font-size: 23px; font-weight: 500; margin: 14px 0 8px; }
.step p { font-size: 14px; line-height: 1.45; color: var(--muted); margin: 0; }

/* ---------- Ubicación ---------- */
.location { background: #fcf8f5; padding: 40px 0; }
.loc-grid { display: grid; grid-template-columns: 31% 39% 30%; gap: 24px; }
.loc-copy h2 { font-size: 48px; margin-bottom: 16px; }
.line { display: grid; grid-template-columns: 30px 1fr; gap: 12px; margin: 16px 0; }
.line .sym { font-size: 20px; color: var(--brand-deep); }
.line p { margin: 0; font-size: 16px; line-height: 1.45; }
.line small { color: var(--muted); }
.map { min-height: 260px; position: relative; border: 1px solid var(--line); overflow: hidden; }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.mapsbtn {
  position: absolute;
  right: 12px;
  bottom: 12px;
  background: #fff;
  padding: 10px 14px;
  text-decoration: none;
  font-size: 13px;
  box-shadow: 0 6px 16px rgba(66, 44, 34, .15);
}
.experience { background: linear-gradient(135deg, var(--linen), var(--light-beige)); padding: 36px; display: flex; flex-direction: column; justify-content: center; }
.experience em { font-family: var(--font-title); font-size: 38px; color: var(--brand-deep); line-height: 1.12; }
.experience b { margin-top: 24px; font-family: var(--font-sub); font-weight: 400; font-size: 16px; letter-spacing: .28em; line-height: 1.5; color: var(--brand-deep); }

/* ---------- Footer ---------- */
footer { background: var(--light-beige); border-top: 1px solid var(--line); }
.foot { min-height: 110px; display: grid; grid-template-columns: 260px 1fr 280px; align-items: center; gap: 20px; }
.foot img { height: 92px; width: auto; mix-blend-mode: multiply; }
.foot nav { gap: 24px; }
.foot nav a { font-size: 15px; }
.foot nav a:first-child { border-bottom-color: transparent; }
.foot em { font-family: var(--font-title); font-size: 20px; color: var(--brand-deep); text-align: right; }
.copy { border-top: 1px solid var(--line); padding: 14px 0; font-size: 12px; color: var(--muted); display: flex; justify-content: space-between; }

/* ---------- Tablet / móvil ---------- */
@media (max-width: 900px) {
  .wrap { width: min(100% - 28px, 720px); }
  header { height: 84px; }
  .head { grid-template-columns: 1fr auto auto; }
  .logo { height: 62px; }
  header nav { display: none; }
  .lang { font-size: 16px; }
  .mobile-menu { display: block; border: 0; background: none; font-size: 28px; cursor: pointer; color: var(--ink); }
  header.open nav {
    display: flex;
    flex-direction: column;
    gap: 0;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--surface);
    border-bottom: 1px solid var(--line);
    padding: 8px 20px 16px;
    z-index: 30;
  }
  header.open nav a { padding: 14px 0; border-bottom: 1px solid var(--line); }

  .hero .wrap { display: block; min-height: 700px; }
  .hero-copy { padding: 54px 0 0; width: 58%; z-index: 10; }
  .hero h1 { font-size: 50px; line-height: 1.02; }
  .hero p { font-size: 16px; }
  .actions { display: block; }
  .btn { width: 100%; min-width: 0; margin-bottom: 10px; height: 50px; font-size: 18px; }
  .hero-photo { height: 560px; right: -45px; }
  .hero-quote { right: 8px; top: 45px; width: 135px; }
  .hero-quote em { font-size: 26px; }
  .hero-quote b { display: none; }

  .services { padding-top: 36px; }
  h2 { font-size: 44px; }
  /* Tablet: pestañas en una fila; micropigmentación y complementarios debajo */
  .groups { grid-template-columns: 1fr 1fr; gap: 28px 32px; }
  .group:first-child { grid-column: 1 / -1; }
  .cards { gap: 12px; }
  .card .name { font-size: 18px; }
  .price-cols { grid-template-columns: 1fr; gap: 32px; }
  .page-head { padding: 40px 0 36px; }
  .services-more .btn { width: 100%; }

  .about-grid { grid-template-columns: 1fr; min-height: 0; }
  .about-main { height: 330px; }
  .about-copy { padding: 38px 22px; }
  .about-copy h2 { font-size: 42px; }
  .editorials { padding: 0 14px 24px; grid-template-columns: 1fr 1fr; }
  .editorials img { height: 280px; }
  .precision { display: none; }

  .steps-grid { grid-template-columns: 1fr; }
  .steps-items { border-left: 0; margin-top: 24px; }
  .step { padding: 12px 8px; }
  .loc-grid { grid-template-columns: 1fr; }
  .experience { min-height: 180px; }

  .foot { grid-template-columns: 1fr; text-align: center; padding: 25px 0; }
  .foot img { margin: auto; }
  .foot nav { display: flex; justify-content: center; }
  .foot em { text-align: center; }
  .copy { font-size: 11px; }
}

@media (max-width: 560px) {
  .wrap { width: calc(100% - 24px); }
  /* En celular la foto va debajo del texto, no encima */
  .hero { background: linear-gradient(180deg, #e2c6ab 0%, #e6cdb4 35%, var(--linen) 58%, #fbf6f1 100%); }
  .hero .wrap { min-height: 0; display: flex; flex-direction: column; }
  .hero-copy { width: 100%; padding-top: 36px; }
  .hero h1 { font-size: clamp(30px, 9.4vw, 40px); }
  .hero p { font-size: 15px; margin-bottom: 24px; }
  .hero-photo { position: static; height: 420px; margin: -30px auto 0; }
  .hero-quote { display: none; }
  .services-title { margin-bottom: 24px; }
  h2 { font-size: 40px; }
  .steps-items { grid-template-columns: 1fr; }
  .groups { grid-template-columns: 1fr; }
  .card-cta, .row-cta { padding: 9px 16px; }
  .cards.four { grid-template-columns: repeat(2, 1fr); }
  .step + .step { border-left: 0; border-top: 1px solid var(--line); }
}
