/*
Theme Name: JP Fotografía
Theme URI: https://jpfotografía.es
Author: JP Fotografía
Description: Tema editorial sobrio para retrato femenino, boudoir, fine art y desnudo implícito.
Version: 1.20.0
Text Domain: jp-fotografia
*/
:root{--bg:#0b0b0b;--panel:#121212;--ink:#f3f0ea;--muted:#aaa39a;--line:#2a2825;--accent:#bca686;--max:1320px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}img{max-width:100%;height:auto;display:block}.wrap{width:min(calc(100% - 40px),var(--max));margin:auto}.site-header{position:sticky;top:0;z-index:90;background:rgba(11,11,11,.86);backdrop-filter:blur(16px);border-bottom:1px solid rgba(255,255,255,.06)}.header-inner{height:76px;display:flex;align-items:center;justify-content:space-between}.brand{font-family:Georgia,serif;letter-spacing:.14em;font-size:1.05rem}.brand small{display:block;font-family:Arial,sans-serif;font-size:.55rem;color:var(--muted);letter-spacing:.28em;margin-top:1px}.nav{display:flex;gap:28px;align-items:center;font-size:.83rem;letter-spacing:.08em;text-transform:uppercase}.nav .client{padding:10px 15px;border:1px solid var(--accent);color:#e4d5bf}.menu-toggle{display:none;background:none;border:0;color:var(--ink);font-size:1.3rem}.hero{min-height:83vh;display:grid;align-items:end;position:relative;overflow:hidden;background-color:#0b0b0b;background-image:url('assets/images/hero-ternes-desktop.webp');background-size:cover;background-position:72% 46%;background-repeat:no-repeat}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,7,7,.94) 0%,rgba(7,7,7,.84) 24%,rgba(7,7,7,.58) 42%,rgba(7,7,7,.26) 58%,rgba(7,7,7,.06) 76%,rgba(7,7,7,.12) 100%),linear-gradient(0deg,rgba(7,7,7,.42) 0%,rgba(7,7,7,.04) 46%,rgba(7,7,7,.16) 100%)}.hero-copy{position:relative;z-index:1;padding:90px 0 80px;max-width:640px;margin-left:18px;text-shadow:0 2px 24px rgba(0,0,0,.5)}.hero h1{max-width:620px;font-size:clamp(52px,5.6vw,82px);line-height:.95}.hero .lead{max-width:600px;opacity:.88}.eyebrow{font-size:.75rem;letter-spacing:.28em;text-transform:uppercase;color:var(--accent)}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:clamp(3rem,7.4vw,7.4rem);line-height:.93;margin:.2em 0 .22em;letter-spacing:-.035em}h2{font-size:clamp(2.1rem,4vw,4.2rem);line-height:1.02;margin:.18em 0 .45em}.lead{font-family:Georgia,serif;font-size:clamp(1.08rem,1.7vw,1.45rem);color:#d7d0c7;max-width:760px}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}.btn{display:inline-block;border:1px solid var(--accent);padding:13px 20px;text-transform:uppercase;letter-spacing:.11em;font-size:.74rem}.btn.fill{background:var(--accent);color:#111}.section{padding:105px 0;border-top:1px solid var(--line)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:start}.intro-number{font-family:Georgia,serif;font-size:8rem;color:#211f1c;line-height:1}.muted{color:var(--muted)}.services{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:45px}.service{background:var(--bg);padding:36px;min-height:260px}.service .n{font-size:.7rem;color:var(--accent);letter-spacing:.2em}.service h3{font-size:1.65rem;margin:42px 0 12px}.portfolio{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;margin-top:50px}.shot{margin:0;background:#161513;min-height:400px;position:relative;overflow:hidden}.shot:nth-child(1){grid-column:span 7;min-height:610px}.shot:nth-child(2){grid-column:span 5}.shot:nth-child(3){grid-column:span 5}.shot:nth-child(4){grid-column:span 7;min-height:610px}.shot img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s ease,filter .7s ease}.shot:before{content:"";position:absolute;z-index:1;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.58) 0%,rgba(0,0,0,0) 35%);pointer-events:none}.shot:after{content:attr(data-label);position:absolute;z-index:2;left:20px;bottom:18px;font-family:Georgia,serif;color:#f0e9df;font-size:1.05rem}.shot:hover img{transform:scale(1.018);filter:brightness(1.03)}.shot-yara img{object-position:50% 38%}.shot-fina img{object-position:50% 44%}.shot-fineart img{object-position:50% 48%}.shot-natural img{object-position:50% 48%}.quote{max-width:1000px;margin:auto;text-align:center}.quote p{font-family:Georgia,serif;font-size:clamp(1.7rem,3vw,3.2rem);line-height:1.25}.process{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:45px}.step{border-top:1px solid var(--accent);padding-top:20px}.step strong{font-family:Georgia,serif;font-weight:400;font-size:1.4rem}.shop-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:42px}.product-card{border:1px solid var(--line);padding:24px;min-height:210px}.product-card h3{font-size:1.35rem}.testimonial{border-left:1px solid var(--accent);padding-left:28px}.testimonial p{font-family:Georgia,serif;font-size:1.35rem}.site-footer{padding:55px 0 35px;border-top:1px solid var(--line);color:var(--muted)}.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:40px}.legal{font-size:.75rem;margin-top:40px;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.wp-content{padding:80px 0;max-width:900px}.wp-content h1{font-size:3.5rem}.gallery-login{max-width:520px;margin:80px auto;padding:38px;border:1px solid var(--line);background:#101010}.jp-private-gallery{padding:40px 0}.jp-gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.jp-photo-card{position:relative;border:1px solid var(--line);background:#111;overflow:hidden}.jp-photo-card img{width:100%;aspect-ratio:3/4;object-fit:cover}.jp-photo-actions{padding:12px;display:flex;gap:8px;flex-wrap:wrap}.jp-photo-actions button{background:#151515;color:var(--ink);border:1px solid #49433b;padding:8px 10px;cursor:pointer}.jp-photo-actions button.active{border-color:var(--accent);background:#231f1a}.jp-gallery-toolbar{position:sticky;bottom:15px;background:rgba(18,18,18,.95);border:1px solid var(--line);padding:15px;display:flex;justify-content:space-between;align-items:center;gap:12px;z-index:50;margin-top:20px}.jp-watermark-note{font-size:.75rem;color:var(--muted)}
@media(max-width:900px){.hero-copy{margin-left:0}.hero h1{font-size:clamp(46px,10vw,68px);max-width:620px}.hero{background-image:url('assets/images/hero-ternes-mobile.webp');background-position:center 48%;min-height:82vh}.hero:before{background:linear-gradient(0deg,rgba(7,7,7,.86) 0%,rgba(7,7,7,.64) 38%,rgba(7,7,7,.18) 70%,rgba(7,7,7,.08) 100%)}.hero-copy{max-width:680px}.nav{display:none;position:absolute;top:76px;left:0;right:0;background:#0b0b0b;padding:22px 20px;flex-direction:column;align-items:flex-start;border-bottom:1px solid var(--line)}.nav.open{display:flex}.menu-toggle{display:block}.grid-2{grid-template-columns:1fr;gap:30px}.services{grid-template-columns:1fr}.process{grid-template-columns:1fr 1fr}.shop-grid{grid-template-columns:1fr 1fr}.portfolio{display:block}.shot{margin-bottom:14px;min-height:420px!important}.footer-grid{grid-template-columns:1fr}.jp-gallery-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.hero{min-height:78vh;background-position:center 44%}.hero-copy{padding-top:180px}.wrap{width:min(calc(100% - 26px),var(--max))}.hero-copy{padding-bottom:58px}.section{padding:72px 0}.process,.shop-grid,.jp-gallery-grid{grid-template-columns:1fr}.jp-gallery-toolbar{align-items:flex-start;flex-direction:column}}

/* v1.8 · enlaces de portfolio y galerías públicas */
.portfolio .shot-link{display:block;grid-column:span 6;text-decoration:none;color:inherit;min-width:0}
.portfolio .shot-link:nth-child(1){grid-column:span 7}
.portfolio .shot-link:nth-child(2){grid-column:span 5}
.portfolio .shot-link:nth-child(3){grid-column:span 5}
.portfolio .shot-link:nth-child(4){grid-column:span 7}
.portfolio .shot-link .shot{height:100%;min-height:400px}
.portfolio .shot-link:nth-child(1) .shot,
.portfolio .shot-link:nth-child(4) .shot{min-height:610px}
.portfolio .shot-link:focus-visible{outline:1px solid var(--accent);outline-offset:5px}
.portfolio .shot-link:hover .shot:after{color:#fff}
.portfolio .shot-link:hover img{transform:scale(1.018);filter:brightness(1.03)}

.gallery-page{background:var(--bg);color:var(--text)}
.gallery-hero{padding:110px 0 65px;border-bottom:1px solid var(--line)}
.gallery-intro{max-width:900px}
.gallery-intro h1{font-size:clamp(52px,7vw,96px);line-height:.95;margin:.2em 0 .28em}
.gallery-intro .lead{max-width:760px}
.back-link{display:inline-block;margin-top:22px;color:var(--accent);text-decoration:none;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}
.back-link:hover{color:var(--text)}
.gallery-section{padding:28px 0 80px}
.gallery-masonry{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.gallery-item{margin:0;min-height:480px;position:relative;overflow:hidden;background:#171614}
.gallery-item img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover}
.gallery-item:nth-child(6n+1){grid-column:span 7;min-height:720px}
.gallery-item:nth-child(6n+2){grid-column:span 5;min-height:720px}
.gallery-item:nth-child(6n+3){grid-column:span 5;min-height:590px}
.gallery-item:nth-child(6n+4){grid-column:span 7;min-height:590px}
.gallery-item:nth-child(6n+5){grid-column:span 6;min-height:650px}
.gallery-item:nth-child(6n+6){grid-column:span 6;min-height:650px}
.gallery-item img{transition:transform .8s ease,filter .8s ease}
.gallery-item:hover img{transform:scale(1.012);filter:brightness(1.025)}
.gallery-cta{border-top:1px solid var(--line)}
.gallery-cta .quote{padding-top:20px;padding-bottom:20px}

@media(max-width:900px){
  .portfolio .shot-link,.portfolio .shot-link:nth-child(n){grid-column:span 12}
  .portfolio .shot-link .shot,.portfolio .shot-link:nth-child(n) .shot{min-height:70vw}
  .gallery-hero{padding:80px 0 48px}
  .gallery-masonry{grid-template-columns:1fr;gap:10px}
  .gallery-item,.gallery-item:nth-child(n){grid-column:1;min-height:115vw}
}

/* v1.9 */
.gallery-intro .lead{max-width:820px}
.gallery-item img{object-position:center center}

/* v1.12 · Sobre mí */
.about-section{padding-top:115px;padding-bottom:115px}
.about-layout{display:grid;grid-template-columns:minmax(300px,.82fr) minmax(0,1.35fr);gap:88px;align-items:stretch}
.about-photo-placeholder{min-height:650px;border:1px solid var(--line);background:linear-gradient(145deg,#111 0%,#171511 55%,#0e0e0e 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;overflow:hidden;padding:34px;color:var(--muted)}
.about-photo-placeholder:before{content:"";position:absolute;inset:22px;border:1px solid rgba(188,166,134,.18);pointer-events:none}
.about-photo-placeholder .eyebrow{position:absolute;top:42px;left:42px}
.about-photo-placeholder p{font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;max-width:220px;margin:18px auto 0}
.about-photo-mark{font-family:Georgia,serif;font-size:clamp(5rem,9vw,8.5rem);line-height:1;color:#24211d;letter-spacing:-.06em}
.about-content h2{max-width:720px;margin-bottom:52px}
.about-points{border-top:1px solid var(--line)}
.about-point{display:grid;grid-template-columns:58px 1fr;gap:26px;padding:30px 0 32px;border-bottom:1px solid var(--line)}
.about-number{font-size:.68rem;letter-spacing:.18em;color:var(--accent);padding-top:8px}
.about-point h3{font-size:1.55rem;margin:0 0 8px}
.about-point p{margin:0;color:#c9c3bb;max-width:760px}
.philosophy-section .quote p{max-width:980px;margin-left:auto;margin-right:auto}

@media(max-width:900px){
  .about-layout{grid-template-columns:1fr;gap:46px}
  .about-photo-placeholder{min-height:520px;max-width:620px;width:100%}
  .about-content h2{margin-bottom:36px}
}
@media(max-width:560px){
  .about-photo-placeholder{min-height:420px}
  .about-photo-placeholder .eyebrow{top:30px;left:30px}
  .about-point{grid-template-columns:42px 1fr;gap:15px}
  .about-point h3{font-size:1.35rem}
}

/* v1.13 · Foto Sobre mí */
.about-photo{min-height:650px;position:relative;overflow:hidden;background:#111;border:1px solid var(--line)}
.about-photo:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.025);pointer-events:none}
.about-photo img{width:100%;height:100%;min-height:650px;object-fit:cover;object-position:center center;display:block;filter:saturate(.88) contrast(1.03)}
@media(max-width:900px){.about-photo,.about-photo img{min-height:520px}}
@media(max-width:560px){.about-photo,.about-photo img{min-height:420px}}


/* v1.15 · Contacto integrado en la home */
.contact-section{padding-top:120px;padding-bottom:125px;background:#0d0d0d}
.contact-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(460px,1.1fr);gap:90px;align-items:start}
.contact-copy h2{max-width:650px}
.contact-copy .lead{max-width:650px;color:#c9c3bb}
.contact-direct{margin-top:44px;border-top:1px solid var(--line)}
.contact-direct-item{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 0;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:opacity .2s ease}
.contact-direct-item:hover{opacity:.7}
.contact-label{text-transform:uppercase;letter-spacing:.16em;font-size:.68rem;color:var(--muted)}
.contact-direct-item strong{font-size:.94rem;font-weight:500;text-align:right}
.contact-note{margin-top:26px;max-width:520px;color:var(--muted);font-size:.9rem}
.contact-form-wrap{border:1px solid var(--line);padding:38px;background:#111}
.contact-form{display:grid;grid-template-columns:1fr 1fr;column-gap:22px;row-gap:23px}
.form-field{display:flex;flex-direction:column;gap:8px}
.form-field-full,.form-consent,.contact-submit,.form-status{grid-column:1/-1}
.form-field label{font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:#bdb7ae}
.form-field label span{font-size:.62rem;color:var(--muted);letter-spacing:.07em}
.form-field input,.form-field select,.form-field textarea{
  width:100%;border:0;border-bottom:1px solid #35322f;border-radius:0;background:#111;color:#f3efe9;
  padding:11px 1px 13px;font:inherit;outline:none;transition:border-color .2s ease
}
.form-field select{cursor:pointer}
.form-field textarea{resize:vertical;min-height:145px;line-height:1.55}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--accent)}
.form-field input::placeholder,.form-field textarea::placeholder{color:#706b64}
.form-consent{margin-top:3px}
.form-consent label{display:flex;align-items:flex-start;gap:11px;color:#aaa49c;font-size:.82rem;line-height:1.5;cursor:pointer}
.form-consent input{margin-top:4px;accent-color:#bca686}
.contact-submit{justify-self:start;margin-top:7px}
.form-status{padding:14px 16px;margin-bottom:24px;border:1px solid var(--line);font-size:.9rem;line-height:1.5}
.form-status.success{border-color:rgba(188,166,134,.55);color:#ded5c8}
.form-status.error{border-color:rgba(180,90,90,.45);color:#d4abab}
@media(max-width:980px){
  .contact-layout{grid-template-columns:1fr;gap:50px}
  .contact-form-wrap{max-width:760px;width:100%}
}
@media(max-width:620px){
  .contact-form-wrap{padding:26px 20px}
  .contact-form{grid-template-columns:1fr}
  .form-field-full,.form-consent,.contact-submit,.form-status{grid-column:1}
  .contact-direct-item{align-items:flex-start;flex-direction:column;gap:6px}
  .contact-direct-item strong{text-align:left}
}


/* v1.16 · Opiniones */
.testimonials-section{padding-top:120px;padding-bottom:120px;overflow:hidden}
.testimonials-heading{max-width:760px;margin-bottom:48px}
.testimonials-heading h2{margin-bottom:18px}
.testimonials-heading .lead{max-width:700px}
.testimonials-track{
  display:grid;
  grid-auto-flow:column;
  grid-auto-columns:minmax(310px, 31%);
  gap:22px;
  overflow-x:auto;
  padding:2px 2px 18px;
  scroll-snap-type:x mandatory;
  scrollbar-width:thin;
  scrollbar-color:#4a4640 transparent;
}
.testimonials-track::-webkit-scrollbar{height:6px}
.testimonials-track::-webkit-scrollbar-track{background:transparent}
.testimonials-track::-webkit-scrollbar-thumb{background:#4a4640;border-radius:10px}
.testimonial-card{
  min-height:255px;
  padding:32px 30px;
  border:1px solid var(--line);
  background:#111;
  display:flex;
  align-items:flex-start;
  scroll-snap-align:start;
  position:relative;
}
.testimonial-card:before{
  content:"“";
  position:absolute;
  top:14px;
  right:24px;
  font-family:Georgia,serif;
  font-size:5rem;
  line-height:1;
  color:rgba(188,166,134,.12);
}
.testimonial-card p{
  position:relative;
  z-index:1;
  margin:0;
  color:#d4cec5;
  font-size:1.02rem;
  line-height:1.75;
}
@media(max-width:980px){
  .testimonials-track{grid-auto-columns:minmax(300px, 46%)}
}
@media(max-width:620px){
  .testimonials-section{padding-top:90px;padding-bottom:90px}
  .testimonials-heading{margin-bottom:34px}
  .testimonials-track{grid-auto-columns:86%;gap:16px}
  .testimonial-card{min-height:240px;padding:28px 24px}
}


/* v1.17 · Sesión, galería privada e impresión */
.session-section h2{max-width:980px;margin-bottom:50px}
.session-section .process{align-items:stretch}
.session-section .step{height:100%}
.session-section .step .muted{line-height:1.7}

.private-gallery-section .private-gallery-closing{
  margin:30px 0 18px;
  font-family:Georgia,serif;
  font-size:1.45rem;
  line-height:1.45;
  color:#e4ddd3;
}

.products-section{padding-top:120px;padding-bottom:120px}
.products-intro{max-width:900px}
.products-subintro{max-width:860px;color:#aaa49c;margin:18px 0 46px}
.product-visual-grid{align-items:stretch}
.visual-product-card{padding:0;overflow:hidden;display:flex;flex-direction:column}
.visual-product-card figure{margin:0;aspect-ratio:4/3;overflow:hidden;background:#111}
.visual-product-card img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .5s ease}
.visual-product-card:hover img{transform:scale(1.025)}
.product-card-copy{padding:24px 24px 28px}
.product-card-copy h3{margin-top:0}
.products-closing{
  max-width:820px;
  margin:48px auto 0;
  text-align:center;
  font-family:Georgia,serif;
  font-size:clamp(1.45rem,2.4vw,2.1rem);
  line-height:1.45;
  color:#e1d9cf;
}

@media(max-width:760px){
  .session-section h2{margin-bottom:36px}
  .products-section{padding-top:90px;padding-bottom:90px}
  .products-subintro{margin-bottom:34px}
}


/* v1.20 · Portfolio fullscreen + portada Luz natural móvil */
.gallery-item .portfolio-preview-open{
  display:block;
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  cursor:zoom-in;
}
.gallery-item .portfolio-preview-open img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.portfolio-lightbox{
  position:fixed;
  inset:0;
  z-index:999999;
  display:none;
  background:rgba(5,5,5,.98);
  overscroll-behavior:contain;
  touch-action:pan-y;
}
.portfolio-lightbox.is-open{display:block}
.portfolio-lightbox-stage{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:58px 58px 72px;
}
.portfolio-lightbox-image{
  display:block;
  max-width:100%;
  max-height:100%;
  width:auto;
  height:auto;
  object-fit:contain;
  user-select:none;
  -webkit-user-drag:none;
}
.portfolio-lightbox-close,
.portfolio-lightbox-prev,
.portfolio-lightbox-next{
  position:absolute;
  z-index:2;
  border:0;
  background:rgba(0,0,0,.32);
  color:#f3efe9;
  cursor:pointer;
  line-height:1;
}
.portfolio-lightbox-close{
  top:14px;
  right:14px;
  width:46px;
  height:46px;
  border-radius:50%;
  font-size:34px;
}
.portfolio-lightbox-prev,
.portfolio-lightbox-next{
  top:50%;
  transform:translateY(-50%);
  width:48px;
  height:64px;
  font-size:48px;
}
.portfolio-lightbox-prev{left:10px}
.portfolio-lightbox-next{right:10px}
.portfolio-lightbox-counter{
  position:absolute;
  left:50%;
  bottom:22px;
  transform:translateX(-50%);
  z-index:2;
  color:#bdb7ae;
  font-size:.78rem;
  letter-spacing:.13em;
}

/* La modelo de la portada horizontal está situada a la izquierda.
   En móvil desplazamos el recorte hacia ella en lugar de centrarlo. */
@media(max-width:900px){
  .shot-natural img{object-position:22% 50%}
}
@media(max-width:600px){
  .portfolio-lightbox-stage{padding:52px 8px 62px}
  .portfolio-lightbox-prev,
  .portfolio-lightbox-next{
    top:auto;
    bottom:12px;
    width:44px;
    height:44px;
    border-radius:50%;
    font-size:34px;
  }
  .portfolio-lightbox-prev{left:12px}
  .portfolio-lightbox-next{right:12px}
  .portfolio-lightbox-counter{bottom:26px}
}
