/* NEXTEP · Fase 2: motion, gallery, reviews, visit card and review form.
   Animations only touch transform/opacity and are switched off with prefers-reduced-motion. */
.nx-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Reading progress */
.nx-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:70;pointer-events:none;background:linear-gradient(90deg,#9c7c3c,var(--gold) 55%,#f1dfab);transform-origin:0 50%;transform:scaleX(0)}

/* Home header: transparent over the hero, glass green once the page scrolls */
.home{scroll-padding-top:84px}
.home body>header,.home body>header.stuck{position:fixed;top:0;left:0;right:0;width:100%;background:transparent;border-bottom-color:transparent;isolation:isolate;transition:height .45s cubic-bezier(.2,.7,.2,1),border-color .45s}
.home body>header:before{content:"";position:absolute;inset:0;z-index:-1;background:#10241cd6;-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);opacity:0;transition:opacity .45s;box-shadow:0 18px 40px #0003}
.home body>header.is-scrolled{height:70px;border-bottom-color:#d3b36b30}
.home body>header.is-scrolled:before{opacity:1}
.home .brand-seal{transition:transform .45s cubic-bezier(.2,.7,.2,1);transform-origin:0 50%}
.home header.is-scrolled .brand-seal{transform:scale(.8)}
.home .hero-copy{padding-top:178px}
.home .hero-art.family-hero:before{content:"";position:absolute;inset:0 0 auto;height:200px;z-index:1;background:linear-gradient(#10241cb8,transparent);pointer-events:none}

/* Hero: words, drawn line, parallax and 3D seal */
.nx-hero-line{display:block;width:min(180px,40%);height:1px;margin:-8px 0 28px;background:linear-gradient(90deg,var(--gold),#d3b36b00);transform-origin:0 50%}
.nx-word{display:inline-block}
.nx-motion .nx-word{opacity:0;transform:translateY(.45em);animation:nx-rise .95s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i) * 70ms + .2s)}
.nx-motion .nx-hero-line{transform:scaleX(0);animation:nx-draw 1.6s cubic-bezier(.65,0,.25,1) .9s forwards}
.nx-motion .family-hero>img{transform:scale(1.08);will-change:transform}
.nx-seal{position:absolute;z-index:3;top:118px;right:clamp(22px,5vw,70px);width:clamp(96px,9.5vw,150px);aspect-ratio:1;perspective:800px;pointer-events:none}
.nx-seal-tilt,.nx-seal-spin{position:relative;width:100%;height:100%;transform-style:preserve-3d}
.nx-seal-tilt{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.nx-seal-spin:before{content:"";position:absolute;inset:3%;border-radius:50%;background:radial-gradient(circle at 35% 28%,#2c4b3c,#0d2018 72%);box-shadow:0 0 0 1px #d3b36b66,0 24px 50px #0009;transform:translateZ(-5px)}
.nx-seal-spin:after{content:"";position:absolute;inset:3%;border-radius:50%;background:radial-gradient(circle at var(--gx,30%) var(--gy,25%),#fff7df55,transparent 45%);transform:translateZ(2px);mix-blend-mode:screen}
.nx-seal img{position:relative;display:block;width:100%;height:100%;object-fit:contain}
.nx-motion .nx-seal-spin{animation:nx-spin 16s ease-in-out infinite alternate}

/* Scroll reveal additions */
.js-motion .reveal{transform:translateY(24px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.js-motion .reveal.visible{transform:none}
.nx-motion .nx-reveal{opacity:0;translate:0 24px;transition:opacity .9s cubic-bezier(.2,.7,.2,1),translate .9s cubic-bezier(.2,.7,.2,1)}
.nx-motion .nx-reveal.nx-in{opacity:1;translate:none}
.nx-motion .nx-stagger>*{opacity:0;translate:0 24px;transition:opacity .9s cubic-bezier(.2,.7,.2,1) var(--d,0ms),translate .9s cubic-bezier(.2,.7,.2,1) var(--d,0ms)}
.nx-motion .nx-stagger.nx-in>*{opacity:1;translate:none}

/* 3D tilt + light that follows the cursor */
.nx-tilt{position:relative;overflow:hidden;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.nx-tilt.is-tilting{transition:transform .14s linear}
.reveal.nx-tilt{transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.nx-tilt.is-tilting{transition:opacity .9s,transform .14s linear}
.nx-motion .nx-stagger>.nx-tilt{transition:opacity .9s cubic-bezier(.2,.7,.2,1) var(--d,0ms),translate .9s cubic-bezier(.2,.7,.2,1) var(--d,0ms),transform .8s cubic-bezier(.2,.7,.2,1)}
.nx-motion .nx-stagger>.nx-tilt.is-tilting{transition:opacity .9s,translate .9s,transform .14s linear}
.nx-glare{position:absolute;left:0;top:0;z-index:3;width:560px;height:560px;margin:-280px 0 0 -280px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#fff4d63d,#fff4d600 62%);opacity:0;transition:opacity .5s}
.is-tilting>.nx-glare{opacity:1}

/* Soft radial light on dark sections */
.nx-lit{position:relative;isolation:isolate;overflow:hidden}
.nx-spot{position:absolute;left:0;top:0;z-index:-1;width:760px;height:760px;margin:-380px 0 0 -380px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,#d3b36b1f,#d3b36b00 65%);opacity:0;transition:opacity .8s}
.nx-lit.is-lit>.nx-spot{opacity:1}

/* Gold buttons: magnetic + sheen */
.btn.gold{position:relative;overflow:hidden;isolation:isolate;transition:transform .25s,translate .35s cubic-bezier(.2,.7,.2,1),background .25s,box-shadow .35s}
.btn.gold:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,#fff0 30%,#fffbea99 50%,#fff0 70%);transform:translateX(-120%);pointer-events:none}
.btn.gold:hover{box-shadow:0 14px 30px -12px #d3b36baa}
.btn.gold:hover:after{transform:translateX(120%);transition:transform .9s cubic-bezier(.2,.7,.2,1)}

/* 5 % shimmer */
.nx-motion .fee-figure strong{background:linear-gradient(100deg,var(--gold) 0 42%,#fff2c9 50%,var(--gold) 58% 100%) 100% 0/260% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:nx-shimmer 6.5s ease-in-out 1.5s infinite}

/* Tab transitions */
.cita-tabs button{transition:background .35s,color .35s,border-color .35s}
.nx-motion .cita-panel:not([hidden]),.nx-motion .panel:not([hidden]){animation:nx-fade .55s cubic-bezier(.2,.7,.2,1)}

/* El despacho · gallery */
.nx-despacho{background:var(--night);color:var(--cream);--pad:clamp(24px,7vw,110px);overflow-x:clip}
.nx-despacho .tag{color:var(--gold)}
.nx-despacho .heading>p{color:#c3cec7;font-size:16px}
.nx-despacho h2{font-size:clamp(38px,4.4vw,66px);line-height:1.02;margin:16px 0 0}
.nx-gallery{margin-top:60px}
.nx-gallery-track{display:flex;gap:clamp(14px,2vw,28px);overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:var(--pad);padding:0 var(--pad);margin:0 calc(-1 * var(--pad));scrollbar-width:none;cursor:grab;position:relative;outline-offset:-4px}
.nx-gallery-track::-webkit-scrollbar{display:none}
.nx-gallery-track:after{content:"";flex:0 0 1px}
.nx-gallery-track.is-dragging{scroll-snap-type:none;cursor:grabbing;user-select:none}
.nx-gallery-track:focus-visible{outline:2px solid var(--gold)}
.nx-slide{flex:0 0 min(72vw,1080px);aspect-ratio:16/9;margin:0;overflow:hidden;scroll-snap-align:start;background:#1d3c2f;position:relative}
.nx-slide img{display:block;width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;user-select:none}
.nx-motion .nx-slide img{transform:scale(1.12);will-change:transform}
.nx-gallery-ui{display:flex;align-items:center;gap:28px;margin-top:28px}
.nx-count{margin:0;font:400 20px 'Fraunces',serif;color:#c3cec7;letter-spacing:.04em;white-space:nowrap}
.nx-count b{font-weight:400;color:var(--gold)}
.nx-gallery-bar{flex:1;height:1px;background:#ffffff26;overflow:hidden}
.nx-gallery-bar i{display:block;height:100%;background:var(--gold);transform-origin:0 50%;transform:scaleX(var(--p,.333));transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.nx-arrows{display:flex;gap:10px}
.nx-arrow{width:52px;height:52px;border-radius:50%;border:1px solid #d3b36b77;background:transparent;color:var(--cream);font:18px 'Inter',sans-serif;cursor:pointer;display:grid;place-items:center;transition:background .3s,color .3s,border-color .3s,opacity .3s}
.nx-arrow:hover:not(:disabled){background:var(--gold);color:var(--night);border-color:var(--gold)}
.nx-arrow:disabled{opacity:.35;cursor:default}
.nx-arrow:focus-visible{outline:2px solid var(--gold);outline-offset:3px}

/* Reviews carousel */
.nx-reviews{background:var(--night);color:var(--cream)}
.nx-reviews[hidden]{display:none!important}
.nx-reviews .tag{color:var(--gold)}
.nx-reviews-head{display:flex;justify-content:space-between;align-items:end;gap:6%;flex-wrap:wrap}
.nx-reviews h2{font-size:clamp(38px,4.4vw,66px);line-height:1.02;margin:16px 0 0}
.nx-score{display:flex;align-items:center;gap:18px;margin-top:24px}
.nx-score>strong{font:400 clamp(54px,5vw,76px)/1 'Fraunces',serif;color:var(--gold);letter-spacing:-.03em}
.nx-score p{margin:8px 0 0;font-size:13px;color:#c3cec7}
.nx-stars{position:relative;display:inline-block;font-size:18px;letter-spacing:3px;line-height:1;color:#ffffff2e;white-space:nowrap}
.nx-stars>span{position:absolute;inset:0 auto 0 0;overflow:hidden;color:var(--gold)}
.nx-carousel{margin-top:56px}
.nx-viewport{overflow:hidden;touch-action:pan-y;cursor:grab}
.nx-viewport.is-dragging{cursor:grabbing;user-select:none}
.nx-track{--per:1;--gap:24px;display:flex;gap:var(--gap);list-style:none;margin:0;padding:0;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.nx-viewport.is-dragging .nx-track{transition:none}
.nx-review{flex:0 0 calc((100% - (var(--per) - 1) * var(--gap)) / var(--per));min-width:0;margin:0;padding:clamp(28px,3vw,40px);background:#173327;border:1px solid #d3b36b2e;border-top:2px solid var(--gold);display:flex;flex-direction:column;transition:opacity .6s}
.nx-review[aria-hidden=true]{opacity:.45}
.nx-review blockquote{margin:22px 0 28px;font:400 clamp(19px,1.5vw,23px)/1.5 'Fraunces',serif;color:var(--cream);flex:1}
.nx-review blockquote p{margin:0}
.nx-review figcaption{border-top:1px solid #ffffff1f;padding-top:18px;font-size:12px;color:#a9b7ae;line-height:1.7}
.nx-review figcaption b{display:block;font-size:14px;font-weight:600;color:var(--cream)}
.nx-carousel-ui{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:30px;flex-wrap:wrap}
.nx-dots{display:flex;gap:6px;flex-wrap:wrap}
.nx-dots button{width:30px;height:30px;padding:0;border:0;background:none;cursor:pointer;display:grid;place-items:center}
.nx-dots button:before{content:"";width:22px;height:2px;background:#ffffff40;transition:background .3s,transform .3s}
.nx-dots button[aria-current=true]:before{background:var(--gold);transform:scaleX(1.3)}
.nx-dots button:focus-visible,.nx-pause:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.nx-carousel-ui .nx-arrows{align-items:center}
.nx-pause{height:40px;padding:0 14px;border:1px solid #ffffff33;background:transparent;color:#c3cec7;font:11px 'Inter',sans-serif;letter-spacing:.06em;cursor:pointer;margin-right:8px}
.nx-pause:hover{color:var(--cream);border-color:var(--gold)}
.nx-reviews-note{margin:34px 0 0;font-size:11px;color:#8d9c93}

/* Footer · visit card */
.footer-contact{grid-template-columns:1fr}
.nx-visit{display:grid;grid-template-columns:1.35fr 1fr;background:#12271d;border:1px solid #d3b36b33}
.nx-visit-photos{display:grid;grid-template-columns:1.6fr 1fr;grid-template-rows:1fr 1fr;gap:4px;min-height:400px}
.nx-visit-photos figure{margin:0;overflow:hidden;position:relative;background:#1d3c2f}
.nx-visit-photos .nx-visit-main{grid-row:1/3}
.nx-visit-photos img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.nx-visit-photos figure:not(.nx-visit-main):hover img{transform:scale(1.07)}
.nx-motion .nx-visit-main img{animation:nx-kenburns 26s ease-in-out infinite alternate}
.nx-visit-info{padding:clamp(28px,4vw,52px);display:flex;flex-direction:column;justify-content:center;font-size:13px}
.footer-contact .nx-visit h3{font:400 clamp(28px,2.6vw,40px)/1.1 'Fraunces',serif;color:var(--cream);letter-spacing:-.01em;text-transform:none;margin:0 0 22px}
.nx-visit .over{color:var(--gold);margin:0 0 14px}
.nx-visit address{font-size:15px;color:var(--cream)}
.nx-visit-hours{margin:18px 0 0;padding-top:18px;border-top:1px solid #ffffff1f;color:#c3cec7}
.nx-visit-hours span{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.nx-visit-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.nx-visit-actions .btn{font-size:12px;padding:15px 20px}
.btn.nx-ghost{border:1px solid #faf8f266;color:var(--cream)}
.btn.nx-ghost:hover{border-color:var(--gold);color:var(--gold)}
.nx-visit-cif{margin:24px 0 0;font-size:11px;color:#8d9c93}
.nx-broker{display:flex;gap:18px;align-items:baseline;flex-wrap:wrap}
.nx-broker h3{margin:0}

/* /opinion.html */
.opinion-section{background:var(--paper)}
.opinion-card{max-width:820px;margin:0 auto;background:#fff;border:1px solid var(--line);border-top:3px solid var(--gold);padding:clamp(24px,4vw,52px)}
.opinion-card .form-grid{margin-bottom:4px}
.rating{display:flex;gap:4px}
.rating label{position:relative;cursor:pointer;width:46px;height:46px;display:grid;place-items:center;color:#e7e4da;transition:color .2s,transform .2s}
.rating label.is-on{color:var(--gold)}
.rating label:hover{transform:scale(1.08)}
.rating input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.rating svg{width:34px;height:34px;fill:currentColor;stroke:#a88a45;stroke-width:.6}
.rating input:focus-visible+svg{outline:2px solid var(--rust);outline-offset:3px}
.rating-value{font-size:12px;color:var(--muted);margin:6px 0 0}
.text-counter{font-size:11px;color:var(--muted);margin:0}
.text-counter.is-ok{color:#2f6b4c}

@keyframes nx-rise{to{opacity:1;transform:none}}
@keyframes nx-draw{to{transform:scaleX(1)}}
@keyframes nx-spin{from{transform:rotateY(-18deg) rotateX(4deg)}to{transform:rotateY(18deg) rotateX(-4deg)}}
@keyframes nx-shimmer{0%,55%{background-position:100% 0}85%,100%{background-position:0 0}}
@keyframes nx-fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes nx-kenburns{from{transform:scale(1) translate(0,0)}to{transform:scale(1.12) translate(-2%,-1.5%)}}

@media(max-width:1100px){.nx-visit{grid-template-columns:1fr}
.nx-visit-photos{min-height:340px}}
@media(max-width:900px){.home .hero-copy{padding-top:158px}
.home .hero-art.family-hero:before{display:none}
.nx-seal{top:26px;width:110px}
.nx-slide{flex-basis:84vw}
.nx-reviews-head{display:block}}
@media(max-width:620px){.nx-despacho{--pad:24px}
.home body>header,.home body>header.stuck{height:72px}
.home body>header.is-scrolled{height:62px}
.home{scroll-padding-top:72px}
.home .hero-copy{padding-top:134px}
.nx-seal{top:20px;right:20px;width:86px}
.nx-slide{flex-basis:86vw;aspect-ratio:4/3}
.nx-gallery{margin-top:40px}
.nx-gallery-ui{gap:16px}
.nx-arrow{width:46px;height:46px}
.nx-visit-photos{grid-template-columns:1fr 1fr;grid-template-rows:220px 130px;min-height:0}
.nx-visit-photos .nx-visit-main{grid-row:auto;grid-column:1/-1}
.nx-visit-actions .btn{flex:1;text-align:center}
.rating label{width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){.nx-word,.nx-hero-line,.nx-seal-spin,.nx-visit-main img,.fee-figure strong{animation:none!important;opacity:1;transform:none}
.nx-track,.nx-gallery-bar i,.btn.gold:after{transition:none!important}
.btn.gold:after{display:none}}
