/*
Theme Name: Claudia Cello
Theme URI: https://claudiacello.com
Author: Clàudia Romaní
Description: Tema a medida para Clàudia Romaní, violonchelista profesional. Diseño premium de una página enfocado a bodas y eventos. Todos los textos e imágenes son editables desde Apariencia → Personalizar.
Version: 1.0.7
Requires PHP: 7.4
Text Domain: claudiacello
*/

/* ============================================================
   PALETA (Marfil & Oro) + TIPOGRAFÍA (Cormorant Garamond)
   ============================================================ */
:root {
  --bg:        #faf7f2;
  --bg-alt:    #f2ede4;
  --ink:       #2b2723;
  --ink-soft:  #6d655c;
  --accent:    #a8894f;
  --accent-2:  #c3aa74;
  --dark:      #211d19;
  --dark-ink:  #efe9df;
  --dark-soft: #b3a996;
  --line:      #ddd3c2;
  --card:      #ffffff;
  --font-display: 'Cormorant Garamond', Georgia, serif;
  --font-body: 'Jost', 'Segoe UI', sans-serif;
  --display-weight: 500;
  --display-spacing: 0.01em;
}

/* ============================================================
   BASE
   ============================================================ */
* { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--ink);
  font-weight: 300;
  line-height: 1.75;
  font-size: 16.5px;
  -webkit-font-smoothing: antialiased;
}
h1,h2,h3,h4 { font-family: var(--font-display); font-weight: var(--display-weight); letter-spacing: var(--display-spacing); line-height:1.15; }
img { max-width:100%; display:block; }
a { color:inherit; text-decoration:none; }
img.cover { width:100%; height:100%; object-fit:cover; }

.wrap { max-width:1180px; margin:0 auto; padding:0 32px; }
section { padding:110px 0; }

.eyebrow {
  display:inline-flex; align-items:center; gap:14px;
  font-family:var(--font-body); font-size:12px; letter-spacing:.32em; text-transform:uppercase;
  color:var(--accent); font-weight:400; line-height:1.4; margin:0 0 22px;
}
.eyebrow::before { content:''; width:36px; height:1px; background:var(--accent); flex:none; }
.title {
  font-family:var(--font-display); font-weight:var(--display-weight);
  letter-spacing:var(--display-spacing); line-height:1.15;
  font-size:clamp(34px,4.5vw,52px); margin-bottom:24px;
}
.lead { color:var(--ink-soft); max-width:640px; font-size:17.5px; }

.btn {
  display:inline-block; padding:16px 42px;
  font-size:12.5px; letter-spacing:.26em; text-transform:uppercase; font-weight:400;
  border:1px solid var(--accent); color:var(--accent);
  background:transparent; cursor:pointer;
  transition:all .35s ease;
}
.btn:hover { background:var(--accent); color:var(--bg); }
.btn.solid { background:var(--accent); color:#fff; }
.btn.solid:hover { background:var(--accent-2); border-color:var(--accent-2); }

/* ============================================================
   NAV
   ============================================================ */
nav.site-nav {
  position:fixed; top:0; left:0; right:0; z-index:900;
  padding:22px 0; transition:all .4s ease;
}
nav.site-nav.scrolled { background:color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter:blur(14px); padding:14px 0; border-bottom:1px solid var(--line); }
nav.site-nav .wrap { display:flex; align-items:center; justify-content:space-between; }
.logo { font-family:var(--font-display); font-size:23px; letter-spacing:.08em; }
.logo em { font-style:normal; color:var(--accent); }
/* El logo del menú va en mayúsculas, con tracking amplio para que respire */
nav.site-nav .logo { text-transform:uppercase; font-size:18px; letter-spacing:.2em; }
.nav-links { display:flex; gap:36px; list-style:none; align-items:center; }
.nav-links a { font-size:11.5px; letter-spacing:.22em; text-transform:uppercase; color:var(--ink-soft); transition:color .3s; }
.nav-links a:hover { color:var(--accent); }
.nav-links .nav-cta { border:1px solid var(--accent); color:var(--accent); padding:10px 24px; }
.nav-links .nav-cta:hover { background:var(--accent); color:var(--bg); }
.burger { display:none; background:none; border:none; cursor:pointer; flex-direction:column; gap:5px; padding:6px; }
.burger span { width:24px; height:1.5px; background:var(--ink); transition:.3s; }

/* Sobre el hero oscuro (portada sin scroll), la nav es clara */
body.home nav.site-nav:not(.scrolled) .logo,
body.home nav.site-nav:not(.scrolled) .nav-links a:not(.nav-cta) { color:var(--dark-ink); }
body.home nav.site-nav:not(.scrolled) .burger span { background:var(--dark-ink); }
body.home nav.site-nav:not(.scrolled) .nav-links .nav-cta { border-color:var(--accent-2); color:var(--accent-2); }
/* En páginas interiores la nav siempre es sólida */
body:not(.home) nav.site-nav { background:var(--bg); border-bottom:1px solid var(--line); }

/* ============================================================
   HERO
   ============================================================ */
.hero {
  min-height:100vh; display:flex; align-items:center;
  background:
    radial-gradient(ellipse 80% 60% at 75% 30%, color-mix(in srgb, var(--accent) 16%, transparent), transparent),
    linear-gradient(160deg, var(--dark) 0%, color-mix(in srgb, var(--dark) 82%, var(--accent)) 140%);
  color:var(--dark-ink); position:relative; overflow:hidden; padding:140px 0 80px;
}
.hero::after {
  content:''; position:absolute; inset:0; opacity:.05; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg width='120' height='120' viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M20 100 Q60 20 100 100' stroke='white' fill='none' stroke-width='0.5'/%3E%3C/svg%3E");
}
.hero .wrap { display:grid; grid-template-columns:1.1fr .9fr; gap:70px; align-items:center; position:relative; z-index:2; }
.hero-title {
  font-family:var(--font-display); font-weight:var(--display-weight);
  letter-spacing:var(--display-spacing); line-height:1.15;
  font-size:clamp(44px,6vw,78px); color:var(--dark-ink); margin:16px 0 26px;
}
.hero-title em { font-style:italic; color:var(--accent-2); }
.hero p.sub { color:var(--dark-soft); font-size:17px; max-width:520px; margin-bottom:40px; }
.hero-ctas { display:flex; gap:18px; flex-wrap:wrap; }
.hero .btn { border-color:var(--accent-2); color:var(--accent-2); }
.hero .btn:hover { background:var(--accent-2); color:var(--dark); }
.hero .btn.solid { background:var(--accent-2); color:var(--dark); }
.hero .btn.solid:hover { background:transparent; color:var(--accent-2); }

.hero-visual { position:relative; display:flex; justify-content:center; }
.hero-frame {
  width:min(380px,100%); aspect-ratio:3/4; position:relative;
  border:1px solid color-mix(in srgb, var(--accent-2) 55%, transparent);
  padding:16px;
}
.hero-photo { width:100%; height:100%; background:var(--dark); position:relative; overflow:hidden; }
.hero-frame::before {
  content:''; position:absolute; top:-14px; right:-14px; width:88px; height:88px;
  border-top:1px solid var(--accent-2); border-right:1px solid var(--accent-2);
}
.hero-frame::after {
  content:''; position:absolute; bottom:-14px; left:-14px; width:88px; height:88px;
  border-bottom:1px solid var(--accent-2); border-left:1px solid var(--accent-2);
}

.scroll-hint {
  position:absolute; bottom:34px; left:50%; transform:translateX(-50%);
  font-size:10px; letter-spacing:.3em; text-transform:uppercase; color:var(--dark-soft);
  display:flex; flex-direction:column; align-items:center; gap:10px; z-index:2;
}
.scroll-hint::after { content:''; width:1px; height:44px; background:linear-gradient(var(--accent-2), transparent); animation:drop 2.2s ease infinite; }
@keyframes drop { 0%{opacity:0; transform:scaleY(0); transform-origin:top;} 40%{opacity:1; transform:scaleY(1);} 100%{opacity:0;} }

/* ============================================================
   BODAS
   ============================================================ */
.bodas-photo { aspect-ratio:16/7; margin-top:56px; overflow:hidden; border:1px solid var(--line); }
.moments { display:grid; grid-template-columns:repeat(3,1fr); gap:34px; margin-top:34px; }
.moment {
  background:var(--card); border:1px solid var(--line); padding:52px 40px 46px;
  position:relative; transition:transform .4s ease, box-shadow .4s ease;
}
.moment:hover { transform:translateY(-8px); box-shadow:0 30px 60px -30px color-mix(in srgb, var(--ink) 28%, transparent); }
.moment .num { font-family:var(--font-display); font-size:15px; color:var(--accent); letter-spacing:.2em; margin-bottom:20px; display:block; }
.moment h3 { font-size:27px; margin-bottom:16px; }
.moment p { color:var(--ink-soft); font-size:15.5px; }
.moment .pieces { margin-top:24px; padding-top:22px; border-top:1px solid var(--line); letter-spacing:.06em; color:var(--ink-soft); font-style:italic; font-family:var(--font-display); font-size:16px; }

/* ============================================================
   FORMACIONES
   ============================================================ */
.dark-section { background:var(--dark); color:var(--dark-ink); }
.dark-section .lead, .dark-section p { color:var(--dark-soft); }
.formats { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:color-mix(in srgb, var(--dark-soft) 25%, transparent); margin-top:70px; border:1px solid color-mix(in srgb, var(--dark-soft) 25%, transparent); }
.format { background:var(--dark); padding:56px 42px; transition:background .4s; }
.format:hover { background:color-mix(in srgb, var(--dark) 86%, var(--accent)); }
.format h3 { font-size:26px; margin-bottom:8px; }
.format .tag { font-size:11px; letter-spacing:.28em; text-transform:uppercase; color:var(--accent-2); display:block; margin-bottom:22px; }
.format p { font-size:15px; }
.format ul { list-style:none; margin-top:22px; }
.format li { font-size:14px; color:var(--dark-soft); padding:9px 0; border-bottom:1px solid color-mix(in srgb, var(--dark-soft) 18%, transparent); display:flex; gap:12px; align-items:baseline; }
.format li::before { content:'—'; color:var(--accent-2); flex:none; }
.formats-cta { text-align:center; margin-top:52px; }
.formats-cta .btn { border-color:var(--accent-2); color:var(--accent-2); }
.formats-cta .btn:hover { background:var(--accent-2); color:var(--dark); }

/* ============================================================
   SOBRE MÍ
   ============================================================ */
.about .wrap { display:grid; grid-template-columns:.85fr 1.15fr; gap:80px; align-items:start; }
.about-visual { position:sticky; top:120px; }
.about-photo { aspect-ratio:3/4; border:1px solid var(--line); overflow:hidden; position:relative; }
.cred-list { margin-top:44px; display:grid; gap:0; }
.cred {
  display:grid; grid-template-columns:56px 1fr; gap:22px; padding:26px 0;
  border-bottom:1px solid var(--line); align-items:start;
}
.cred:first-child { border-top:1px solid var(--line); }
.cred .icon { width:44px; height:44px; border:1px solid var(--accent); border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--accent); }
.cred .icon svg { width:19px; height:19px; }
.cred h4 { font-size:20px; margin-bottom:4px; }
.cred p { font-size:14.5px; color:var(--ink-soft); }

/* ============================================================
   REPERTORIO
   ============================================================ */
.repertoire { background:var(--bg-alt); }
.rep-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:34px; margin-top:64px; }
.rep-col h3 { font-size:23px; margin-bottom:6px; }
.rep-col .rep-sub { font-size:11px; letter-spacing:.26em; text-transform:uppercase; color:var(--accent); display:block; margin-bottom:24px; }
.rep-col ul { list-style:none; }
.rep-col li { padding:13px 0; border-bottom:1px solid var(--line); font-size:15px; display:flex; justify-content:space-between; gap:16px; }
.rep-col li span { color:var(--ink-soft); font-style:italic; font-family:var(--font-display); font-size:15.5px; }
.rep-note { margin-top:52px; text-align:center; font-family:var(--font-display); font-style:italic; font-size:20px; color:var(--ink-soft); }
.rep-note strong { color:var(--accent); font-weight:500; }

/* ============================================================
   OTROS SERVICIOS
   ============================================================ */
.services-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:34px; margin-top:64px; }
.service { border:1px solid var(--line); padding:48px 38px; background:var(--card); }
.service h3 { font-size:24px; margin-bottom:14px; }
.service p { font-size:15px; color:var(--ink-soft); }
.service .icon { width:48px; height:48px; border:1px solid var(--accent); border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--accent); margin-bottom:26px; }
.service .icon svg { width:20px; height:20px; }

/* ============================================================
   WEDDING PLANNERS
   ============================================================ */
.planners { position:relative; overflow:hidden; }
.planner-stars { position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; opacity:.8; }
.planners .wrap { position:relative; z-index:1; display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.planner-points { list-style:none; margin-top:34px; }
.planner-points li { padding:16px 0; border-bottom:1px solid color-mix(in srgb, var(--dark-soft) 20%, transparent); display:flex; gap:16px; align-items:baseline; font-size:15.5px; color:var(--dark-soft); }
.planner-points li::before { content:'✦'; color:var(--accent-2); font-size:11px; flex:none; }
.planner-points li strong { color:var(--dark-ink); font-weight:400; }
.planners .btn { margin-top:40px; border-color:var(--accent-2); color:var(--accent-2); }
.planners .btn:hover { background:var(--accent-2); color:var(--dark); }
.quote-block { border-left:1px solid var(--accent-2); padding-left:40px; }
.quote-block blockquote { font-family:var(--font-display); font-size:clamp(24px,2.6vw,32px); font-style:italic; line-height:1.45; }
.quote-block cite { display:block; margin-top:24px; font-style:normal; font-size:12px; letter-spacing:.26em; text-transform:uppercase; color:var(--dark-soft); }

/* ============================================================
   FOTO DÚO (chelo y piano) — banda a todo el ancho, parallax en PC
   ============================================================ */
.duo-photo {
  height:clamp(400px, 58vh, 560px);
  background-size:cover; background-position:center; background-repeat:no-repeat;
  background-attachment:fixed;   /* parallax en escritorio */
}
@media (hover:none) { .duo-photo { background-attachment:scroll; } }

/* ============================================================
   IMAGEN INTERLUDIO (parallax: imagen fija que se descubre al hacer scroll)
   ============================================================ */
.interlude-photo {
  height:clamp(400px, 66vh, 660px);
  background-image:var(--interlude-desktop);
  background-size:cover;
  background-position:center 30%;
  background-attachment:fixed;
  background-repeat:no-repeat;
}
/* En táctiles el fixed real no funciona: se hace parallax con JS (background-position) */
@media (hover:none) {
  .interlude-photo { background-attachment:scroll; }
}

/* ============================================================
   TESTIMONIOS
   ============================================================ */
.testimonials .cards { display:grid; grid-template-columns:repeat(3,1fr); gap:34px; margin-top:64px; }
.tcard { background:var(--card); border:1px solid var(--line); padding:46px 38px; }
.tcard .stars { color:var(--accent); letter-spacing:6px; font-size:13px; margin-bottom:22px; }
.tcard p { font-family:var(--font-display); font-style:italic; font-size:18.5px; line-height:1.55; }
.tcard cite { display:block; margin-top:26px; font-style:normal; font-size:12px; letter-spacing:.22em; text-transform:uppercase; color:var(--ink-soft); }

/* ============================================================
   PROCESO
   ============================================================ */
.process { background:var(--bg-alt); }
.process-string { position:relative; width:100%; height:72px; margin-top:64px; margin-bottom:-16px; }
.process-string svg { display:block; width:100%; height:72px; overflow:visible; }
#stringPath { transition:stroke .5s ease; }
.string-node { transition:fill .55s ease, stroke .55s ease; }
.steps { display:grid; grid-template-columns:repeat(4,1fr); gap:40px; margin-top:0; }
.step { text-align:left; position:relative; padding-top:24px; }
.step .n { font-family:var(--font-display); font-size:15px; letter-spacing:.2em; color:var(--accent); }
.step h4 { font-size:21px; margin:10px 0 8px; }
.step p { font-size:14.5px; color:var(--ink-soft); }

/* ============================================================
   FAQ
   ============================================================ */
.faq-list { max-width:820px; margin:56px auto 0; }
details { border-bottom:1px solid var(--line); }
details:first-child { border-top:1px solid var(--line); }
summary {
  cursor:pointer; list-style:none; padding:28px 0;
  font-family:var(--font-display); font-size:21px;
  display:flex; justify-content:space-between; align-items:center; gap:24px;
  transition:color .3s;
}
summary:hover { color:var(--accent); }
summary::-webkit-details-marker { display:none; }
summary .plus { flex:none; width:14px; height:14px; position:relative; }
summary .plus::before, summary .plus::after { content:''; position:absolute; background:var(--accent); transition:transform .3s; }
summary .plus::before { top:50%; left:0; right:0; height:1px; }
summary .plus::after { left:50%; top:0; bottom:0; width:1px; }
details[open] .plus::after { transform:scaleY(0); }
details .answer { padding:0 0 30px; color:var(--ink-soft); font-size:15.5px; max-width:700px; }

/* ============================================================
   CONTACTO
   ============================================================ */
.contact { background:var(--dark); color:var(--dark-ink); }
.contact .wrap { display:grid; grid-template-columns:1fr 1fr; gap:90px; }
.contact-info > p:not(.title) { color:var(--dark-soft); font-size:16px; margin-bottom:36px; }
.contact-info .title { color:var(--dark-soft); margin-bottom:20px; }
.contact-lines { display:grid; gap:20px; }
.contact-lines a { display:flex; gap:16px; align-items:center; color:var(--dark-ink); font-size:15px; letter-spacing:.04em; transition:color .3s; }
.contact-lines a:hover { color:var(--accent-2); }
.contact-lines .icon { width:40px; height:40px; border:1px solid color-mix(in srgb, var(--accent-2) 60%, transparent); border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--accent-2); flex:none; }
.contact-lines .icon svg { width:16px; height:16px; }
.contact-photo {
  margin:48px auto 0; max-width:280px; aspect-ratio:3/4; position:relative;
  border:1px solid color-mix(in srgb, var(--accent-2) 45%, transparent); padding:12px;
}
.contact-photo::before {
  content:''; position:absolute; top:-11px; right:-11px; width:64px; height:64px;
  border-top:1px solid var(--accent-2); border-right:1px solid var(--accent-2);
}
.contact-photo::after {
  content:''; position:absolute; bottom:-11px; left:-11px; width:64px; height:64px;
  border-bottom:1px solid var(--accent-2); border-left:1px solid var(--accent-2);
}
.contact-photo .inner { width:100%; height:100%; overflow:hidden; }
/* El formulario ocupa toda la altura de la columna (como la izquierda) pero
   con align-content:space-between el espacio sobrante va a los huecos entre
   campos, NO a agrandar el botón. El botón queda con su tamaño fijo. */
form.cc-form { display:grid; gap:26px; align-content:space-between; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:26px; }
.field label { display:block; font-size:10.5px; letter-spacing:.26em; text-transform:uppercase; color:var(--dark-soft); margin-bottom:10px; }
.field input, .field select, .field textarea {
  width:100%; background:transparent; border:none; border-bottom:1px solid color-mix(in srgb, var(--dark-soft) 45%, transparent);
  padding:10px 2px; color:var(--dark-ink); font-family:var(--font-body); font-size:15.5px; font-weight:300;
  transition:border-color .3s; border-radius:0;
}
.field select option { background:var(--dark); }
.field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--accent-2); }
.field textarea { resize:vertical; min-height:110px; }
form.cc-form .btn { justify-self:start; border-color:var(--accent-2); color:var(--accent-2); }
/* En escritorio el botón de enviar es más discreto; en móvil mantiene el tamaño original */
@media (min-width: 981px) {
  form.cc-form .btn { padding:13px 32px; font-size:11.5px; }
  /* El formulario empieza a la altura del título "Reservad vuestra fecha"
     (bajándolo el alto del rótulo "Contacto"), no a la altura del rótulo. */
  form.cc-form { padding-top:40px; }
}
form.cc-form .btn:hover { background:var(--accent-2); color:var(--dark); }
.hp-field { position:absolute !important; left:-9999px; opacity:0; height:0; overflow:hidden; }
.form-status { padding:16px 20px; border:1px solid var(--accent-2); font-size:14.5px; margin-bottom:6px; }
.form-status.ok { color:var(--dark-ink); }
.form-status.err { color:#e8b4a8; border-color:#a8555f; }

/* ============================================================
   FOOTER
   ============================================================ */
footer.site-footer { background:var(--dark); color:var(--dark-soft); padding:44px 0; border-top:1px solid color-mix(in srgb, var(--dark-soft) 20%, transparent); }
footer.site-footer .wrap { display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; font-size:12.5px; letter-spacing:.08em; }
footer.site-footer .logo { font-size:16px; color:var(--dark-ink); text-transform:uppercase; letter-spacing:.2em; }

/* ============================================================
   PÁGINAS INTERIORES (privacidad, etc.)
   ============================================================ */
.page-plain { padding:160px 0 90px; min-height:60vh; }
.page-plain h1 { font-size:clamp(32px,4vw,46px); margin-bottom:28px; }
.page-plain .content p { margin-bottom:18px; color:var(--ink-soft); }

/* ============================================================
   ANIMACIONES DE ENTRADA
   ============================================================ */
.reveal { opacity:0; transform:translateY(26px); transition:opacity .8s ease, transform .8s ease; }
.reveal.visible { opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity:1; transform:none; transition:none; }
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 980px) {
  section { padding:80px 0; }
  .hero .wrap, .about .wrap, .planners .wrap, .contact .wrap { grid-template-columns:1fr; gap:56px; }
  .hero-visual { order:-1; }
  .hero-frame { width:min(280px,80%); }
  .moments, .formats, .rep-grid, .services-grid, .testimonials .cards { grid-template-columns:1fr; }
  .steps { grid-template-columns:1fr 1fr; gap:48px 32px; }
  .process-string { display:none; }
  .step { padding-top:30px; border-top:1px solid var(--line); }
  .about-visual { position:static; max-width:340px; }
  /* Sin backdrop-filter en móvil: el desenfoque convertía la barra en "contenedor"
     del menú desplegable (position:fixed) y este dejaba de cubrir la pantalla. */
  nav.site-nav.scrolled { backdrop-filter:none; -webkit-backdrop-filter:none; }
  .nav-links {
    position:fixed; inset:0; background:var(--dark); flex-direction:column; justify-content:center;
    gap:30px; transform:translateX(100%); transition:transform .4s ease;
  }
  .nav-links.open { transform:none; }
  .nav-links a { color:var(--dark-ink) !important; font-size:14px; }
  .burger { display:flex; z-index:950; }
  .form-row { grid-template-columns:1fr; }
  .bodas-photo { aspect-ratio:16/10; }
  /* Móvil: imagen completa (aspecto real de la foto), fija, sin parallax */
  .duo-photo { background-attachment:scroll; aspect-ratio:2000/1078; height:auto; }
  /* Banda más baja que la imagen para que sobre margen vertical y el parallax JS se mueva */
  .interlude-photo { background-image:var(--interlude-mobile); background-attachment:scroll; height:clamp(380px, 56vh, 500px); }
  .planners .btn { display:block; width:fit-content; margin-left:auto; margin-right:auto; }
  form.cc-form .btn { justify-self:center; }
  /* En móvil ocultamos solo el texto "Descubre"; la línea dorada animada se queda */
  .scroll-hint span { display:none; }
  .contact-photo { margin-left:auto; margin-right:auto; }
}
