/* ==========================================================================
   Estefanía Gutiérrez — Portfolio. Feuille de style du site public.
   Les projets (section #proyectos et #feature) sont rendus par script.js
   depuis data/content.json — les classes de grille ci-dessous (.g-*) sont
   les « presets » de mise en page que l'espace admin propose.
   ========================================================================== */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{--cream:#f0ece4;--cream-dark:#e6e1d7;--ink:#1a1713;--ink-mid:#3d3830;--ink-light:#7a7060;--gold:#b8976a;--white:#faf8f4}
html{scroll-behavior:smooth}
/* `[hidden]` doit l'emporter sur les règles de disposition (.cl est en flex). */
[hidden]{display:none !important}
body{background:var(--cream);color:var(--ink);font-family:'DM Sans',sans-serif;font-weight:300;overflow-x:hidden;cursor:none}
.cursor{position:fixed;width:8px;height:8px;background:var(--ink);border-radius:50%;pointer-events:none;z-index:9999;transform:translate(-50%,-50%)}
.cursor-ring{position:fixed;width:36px;height:36px;border:1px solid var(--ink);border-radius:50%;pointer-events:none;z-index:9998;transform:translate(-50%,-50%);opacity:.4;transition:width .3s,height .3s,opacity .3s}
body:has(a:hover) .cursor-ring{width:54px;height:54px;opacity:.15}
nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;justify-content:space-between;align-items:center;padding:1.8rem 4rem;mix-blend-mode:multiply}
.nav-logo{font-family:'Cormorant SC',serif;font-size:.75rem;letter-spacing:.25em;color:var(--ink);text-decoration:none;text-transform:uppercase}
.nav-links{display:flex;gap:2.5rem;list-style:none}
.nav-links a{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-mid);text-decoration:none;transition:color .3s}
.nav-links a:hover{color:var(--ink)}
.hero{min-height:100vh;display:flex;align-items:flex-end;padding:0 4rem 5rem;position:relative;overflow:hidden}
.hero-bg-line{position:absolute;top:0;right:10%;width:1px;height:100%;background:linear-gradient(to bottom,transparent,var(--ink-light) 30%,var(--ink-light) 70%,transparent);opacity:.12}
.hero-counter{position:absolute;top:50%;right:4rem;transform:translateY(-50%);writing-mode:vertical-rl;font-size:.65rem;letter-spacing:.3em;color:var(--ink-light);text-transform:uppercase}
.hero-title{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(4rem,10vw,9rem);line-height:.9;letter-spacing:-.02em;opacity:0;animation:fadeUp 1s .5s forwards}
.hero-title em{font-style:italic;color:var(--ink-mid)}
.hero-subtitle{font-size:.7rem;letter-spacing:.35em;text-transform:uppercase;color:var(--ink-light);margin-bottom:2rem;opacity:0;animation:fadeUp 1s .3s forwards}
.hero-desc{margin-top:3rem;max-width:420px;font-size:.85rem;line-height:1.9;color:var(--ink-light);opacity:0;animation:fadeUp 1s .8s forwards}
.hero-scroll{position:absolute;bottom:3rem;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:.75rem;opacity:0;animation:fadeIn 1s 1.2s forwards}
.hero-scroll span{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-light)}
.scroll-line{width:1px;height:50px;background:var(--ink-light);animation:scrollDrop 2s 1.5s ease-in-out infinite;transform-origin:top}
@keyframes fadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes scrollDrop{0%,100%{transform:scaleY(0);opacity:0}50%{transform:scaleY(1);opacity:1}}
.lbl{font-size:.65rem;letter-spacing:.35em;text-transform:uppercase;color:var(--ink-light);margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem}
.lbl::before{content:'';display:block;width:2rem;height:1px;background:var(--ink-light)}
.sec-intro{padding:8rem 4rem;display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:center;border-top:1px solid rgba(26,23,19,.1)}
.intro-h{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.5rem,5vw,4rem);line-height:1.1;letter-spacing:-.01em}
.intro-h em{font-style:italic}
.intro-t{font-size:.9rem;line-height:1.9;color:var(--ink-mid)}
.det{margin-top:2.5rem;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.dl{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-light);margin-bottom:.25rem}
.dv{font-family:'Cormorant Garamond',serif;font-size:1.1rem}
.mq{padding:1.5rem 0;border-top:1px solid rgba(26,23,19,.1);border-bottom:1px solid rgba(26,23,19,.1);overflow:hidden;white-space:nowrap}
.mq-t{display:inline-flex;animation:mq 25s linear infinite}
.mq-i{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.2rem;color:var(--ink-light);padding:0 3rem}
.mq-d{color:var(--gold);font-style:normal}
@keyframes mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.sec-h{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2rem,3vw,2.8rem);letter-spacing:-.01em}
.sec-h em{font-style:italic}
.proj-sec{padding:0 4rem 8rem}
.proj-hd{display:flex;justify-content:space-between;align-items:flex-end;padding:3rem 0 4rem;border-top:1px solid rgba(26,23,19,.1)}
.proj-cnt{font-family:'Cormorant Garamond',serif;font-size:5rem;font-weight:300;line-height:1;color:rgba(26,23,19,.07)}
.proj{display:grid;grid-template-columns:1fr 1fr;gap:4rem;padding:5rem 0;border-top:1px solid rgba(26,23,19,.1);opacity:0;transform:translateY(40px);transition:opacity .9s,transform .9s}
.proj.on{opacity:1;transform:translateY(0)}
.proj:nth-child(even) .pv{order:-1}
.pm{display:flex;flex-direction:column;justify-content:center;padding:2rem 0}
.pn{font-family:'Cormorant Garamond',serif;font-size:.85rem;color:var(--ink-light);letter-spacing:.1em;margin-bottom:2rem}
.pc{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:.75rem}
.pt{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2rem,3.5vw,3rem);line-height:1.15;letter-spacing:-.01em;margin-bottom:.5rem}
.pt em{font-style:italic}
.ps{font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-light);margin-bottom:2.5rem;padding-bottom:2.5rem;border-bottom:1px solid rgba(26,23,19,.1)}
.pd{font-size:.85rem;line-height:1.9;color:var(--ink-mid);margin-bottom:2.5rem}
.pd p+p{margin-top:1em}
.tags{display:flex;gap:.75rem;flex-wrap:wrap}
.tag{font-size:.65rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-mid);border:1px solid rgba(26,23,19,.2);padding:.3rem .8rem}
.iw{overflow:hidden;background:var(--cream-dark)}
.iw img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.23,1,.32,1)}
.iw:hover img{transform:scale(1.05)}
.il{aspect-ratio:16/9}
.iw4{aspect-ratio:4/3}
.isq{aspect-ratio:1/1}
.ita{aspect-ratio:3/4}
/* --- Presets de galerie (rendus par script.js) --- */
.pv{display:flex;flex-direction:column;gap:.75rem}
.g-row{display:grid;gap:.75rem}
.g-2{grid-template-columns:1fr 1fr}
.g-3{grid-template-columns:1fr 1fr 1fr}
.g-col{display:flex;flex-direction:column;gap:.75rem}
.g-portrait{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
/* --- Projet mis en avant (« Propuesta especial ») --- */
.feat-sec{padding:0 4rem 8rem;border-top:1px solid rgba(26,23,19,.1)}
.feat-hd{padding:4rem 0 3rem;display:flex;justify-content:space-between;align-items:flex-end}
.feat-sub{font-size:.75rem;color:var(--ink-light);letter-spacing:.1em}
.feat-main{display:grid;grid-template-columns:1.5fr 1fr;gap:.75rem}
.feat-side{display:flex;flex-direction:column;gap:.75rem}
.feat-concept{flex:1;background:var(--cream-dark);padding:2.5rem;display:flex;flex-direction:column;justify-content:flex-end}
.feat-concept-l{font-size:.65rem;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-light);margin-bottom:1rem}
.feat-concept-v{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:300;line-height:1.3}
.feat-concept-v em{font-style:italic}
.feat-quote{background:var(--ink);padding:2rem;display:flex;align-items:center;justify-content:center;min-height:120px}
.feat-quote p{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.1rem;color:var(--cream);text-align:center;line-height:1.7}
.feat-more{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-top:.75rem}
.feat-more .iw:only-child{grid-column:1/-1}
.feat-desc{max-width:640px;font-size:.85rem;line-height:1.9;color:var(--ink-mid);margin-top:2rem}
.sig{padding:6rem 4rem;border-top:1px solid rgba(26,23,19,.1);display:grid;grid-template-columns:1fr 1fr;gap:6rem;align-items:center}
.sig-h{font-family:'Cormorant Garamond',serif;font-weight:300;font-size:clamp(2.5rem,4vw,3.5rem);line-height:1.15;margin-bottom:2rem}
.sig-h em{font-style:italic}
.sig-t{font-size:.85rem;line-height:1.9;color:var(--ink-mid);margin-bottom:3rem}
.sig-c{display:flex;flex-direction:column;gap:1.25rem}
.cl{display:flex;align-items:baseline;gap:1rem}
.cll{font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-light);min-width:5rem}
.clv{font-family:'Cormorant Garamond',serif;font-size:1.1rem}
.clv a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(26,23,19,.25)}
/* --- Formulaire de contact --- */
.cform{margin:0 0 2.5rem}
.cform__row{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.cf{margin-bottom:1.4rem}
.cf label{display:block;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-light);margin-bottom:.5rem}
.cf input,.cf textarea{width:100%;font-family:'DM Sans',sans-serif;font-weight:300;font-size:.9rem;color:var(--ink);background:transparent;border:0;border-bottom:1px solid rgba(26,23,19,.2);padding:.45rem 0;transition:border-color .3s}
.cf textarea{resize:vertical;line-height:1.8;min-height:5.5rem}
.cf input:focus,.cf textarea:focus{outline:none;border-bottom-color:var(--ink)}
.cf input:disabled,.cf textarea:disabled{opacity:.5}
.cf.is-bad input,.cf.is-bad textarea{border-bottom-color:#a33d33}
.cf-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.cform__foot{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap;margin-top:.5rem}
.cform__btn{font-family:'DM Sans',sans-serif;font-size:.65rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink);background:transparent;border:1px solid var(--ink);padding:.85rem 2.2rem;cursor:pointer;transition:background .3s,color .3s}
.cform__btn:hover{background:var(--ink);color:var(--cream)}
.cform__btn[disabled]{opacity:.45;cursor:default}
.cform__msg{font-size:.78rem;color:var(--ink-light);line-height:1.6;margin:0}
.cform__msg.is-ok{color:var(--gold)}
.cform__msg.is-bad{color:#a33d33}
.sig-img{position:relative}
.sig-img img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center 20%;filter:grayscale(1);mix-blend-mode:multiply;display:block}
.sig-ov{position:absolute;bottom:-1rem;right:-1rem;width:60%;height:60%;border:1px solid rgba(26,23,19,.15);z-index:-1}
.sig-nm{position:absolute;bottom:2rem;left:2rem;font-family:'Cormorant Garamond',serif;font-style:italic;font-weight:300;font-size:2.5rem;color:var(--white);line-height:1;text-shadow:0 1px 12px rgba(26,23,19,.5)}
footer{padding:3rem 4rem;border-top:1px solid rgba(26,23,19,.1);display:flex;justify-content:space-between;align-items:center}
.fl{font-family:'Cormorant SC',serif;font-size:.8rem;letter-spacing:.2em;color:var(--ink-mid)}
.fc{font-size:.7rem;color:var(--ink-light)}
.rv{opacity:0;transform:translateY(30px);transition:opacity .9s,transform .9s}
.rv.on{opacity:1;transform:translateY(0)}
.preview-badge{position:fixed;bottom:1rem;left:1rem;z-index:200;font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;background:var(--ink);color:var(--cream);padding:.5rem .9rem}
.lang-sw{display:flex;align-items:center;gap:.15rem;margin-left:2rem}
.lang-sw button{background:none;border:none;font-family:'DM Sans',sans-serif;font-size:.65rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-light);cursor:pointer;padding:.2rem .35rem;transition:color .25s;line-height:1}
.lang-sw button.active{color:var(--ink);border-bottom:1px solid var(--ink)}
.lang-sw button:hover{color:var(--ink)}
.lang-sw span{color:var(--ink-light);font-size:.55rem;opacity:.5}
@media(max-width:768px){
  .cursor,.cursor-ring{display:none}
  body{cursor:auto}
  nav{padding:1.2rem 1.5rem}
  .nav-links{display:none}
  .lang-sw{margin-left:auto;gap:.1rem}
  .lang-sw button{font-size:.6rem;padding:.15rem .28rem;letter-spacing:.12em}
  .hero{padding:0 1.5rem 4rem;min-height:100svh}
  .hero-counter{display:none}
  .hero-title{font-size:clamp(3.2rem,16vw,5rem)}
  .hero-desc{margin-top:1.5rem;font-size:.82rem;max-width:100%}
  .hero-subtitle{margin-bottom:1.2rem}
  .mq-i{font-size:1rem;padding:0 1.5rem}
  .sec-intro{grid-template-columns:1fr;gap:2rem;padding:4rem 1.5rem}
  .proj-sec{padding:0 1.5rem 5rem}
  .proj-hd{padding:2rem 0 2.5rem}
  .proj-cnt{font-size:3.5rem}
  .proj{grid-template-columns:1fr;gap:2rem;padding:3rem 0}
  .proj .pv,.proj:nth-child(even) .pv{order:-1}
  .pm{padding:.5rem 0}
  .pt{font-size:clamp(1.8rem,8vw,2.5rem)}
  .g-3{grid-template-columns:1fr 1fr}
  .g-3 .iw:nth-child(3){display:none}
  .feat-sec{padding:0 1.5rem 4rem}
  .feat-hd{padding:2rem 0 1.5rem;flex-direction:column;align-items:flex-start;gap:.5rem}
  .feat-main,.feat-more{grid-template-columns:1fr}
  .sig{grid-template-columns:1fr;gap:3rem;padding:4rem 1.5rem}
  .sig-img{max-width:280px;margin:0 auto}
  .cform__row{grid-template-columns:1fr;gap:0}
  footer{padding:2rem 1.5rem;flex-direction:column;gap:.75rem;text-align:center}
}
@media(max-width:480px){
  .hero-title{font-size:clamp(2.8rem,14vw,4rem)}
  .nav-links{gap:.9rem}
  .nav-links a{font-size:.6rem;letter-spacing:.08em}
  .tags{gap:.5rem}
  .tag{font-size:.6rem;padding:.25rem .6rem}
  .sig-nm{font-size:1.8rem}
}
