/* ---------- Fuentes locales (WOFF2, subconjunto latino) ---------- */
@font-face{font-family:'Bebas Neue';font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/bebas-neue-400.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:300;font-display:swap;src:url(assets/fonts/barlow-300.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:400;font-display:swap;src:url(assets/fonts/barlow-400.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:500;font-display:swap;src:url(assets/fonts/barlow-500.woff2) format('woff2')}
@font-face{font-family:'Barlow';font-style:normal;font-weight:600 700;font-display:swap;src:url(assets/fonts/barlow-600.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:300 400;font-display:swap;src:url(assets/fonts/barlow-condensed-400.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500 600;font-display:swap;src:url(assets/fonts/barlow-condensed-600.woff2) format('woff2')}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url(assets/fonts/barlow-condensed-700.woff2) format('woff2')}

/* ---------- Base ---------- */
:root{--red:#e8192c;--red-glow:rgba(232,25,44,.35);--black:#070707;--black-2:#0d0d0d;--black-3:#121212;--white:#f8f8f8;--muted:rgba(255,255,255,.62);--line:rgba(255,255,255,.1);--heading:'Bebas Neue',Impact,'Arial Narrow',sans-serif;--condensed:'Barlow Condensed','Arial Narrow',Arial,sans-serif;--body:'Barlow',Arial,sans-serif;--ease:cubic-bezier(.22,1,.36,1);--header-h:78px}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:var(--header-h);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--black);color:var(--white);font-family:var(--body);overflow-x:hidden;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body.no-scroll{overflow:hidden}
img{max-width:100%}
picture{display:contents}
.shell{width:min(1400px,100%);margin:auto;padding-inline:clamp(20px,4vw,48px)}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button,a{cursor:pointer;-webkit-tap-highlight-color:transparent}
::selection{background:var(--red);color:#fff}
.i{width:1.15em;height:1.15em;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.2em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;z-index:200;left:16px;top:-60px;padding:12px 18px;background:var(--red);color:#fff;font:700 .9rem var(--condensed);letter-spacing:.1em;transition:top .2s}
.skip-link:focus{top:16px}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.button:focus-visible,.gallery-filters button:focus-visible{outline-color:#fff}

/* ---------- Cabecera ---------- */
.site-header{position:fixed;z-index:50;inset:0 0 auto;transition:background .35s,border-color .35s,backdrop-filter .35s;background:linear-gradient(180deg,rgba(0,0,0,.72),transparent);border-bottom:1px solid transparent}
.site-header.scrolled,.site-header.menu-open{background:rgba(7,7,7,.9);border-bottom-color:rgba(255,255,255,.06);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4)}
.nav{height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:inline-flex;align-items:center;gap:13px;font-family:var(--heading);font-size:1.55rem;letter-spacing:.16em;font-weight:400}
.brand-mark{display:grid;place-items:center;width:40px;height:40px;background:var(--red);font-size:1.1rem;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);transition:transform .5s var(--ease)}
.brand:hover .brand-mark{transform:rotate(60deg)}
.brand-mark .i{vertical-align:0}
.brand:hover .brand-mark .i{transform:rotate(-60deg);transition:transform .5s var(--ease)}
.nav-links{display:flex;align-items:center;gap:clamp(14px,2vw,32px);margin-left:auto}
.nav-links a:not(.button),.footer-links a{position:relative;font-family:var(--condensed);font-size:.8rem;font-weight:600;letter-spacing:.13em;color:rgba(255,255,255,.68);transition:color .25s}
.nav-links a:not(.button)::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease)}
.nav-links a:not(.button):hover,.nav-links a.active,.footer-links a:hover{color:#fff}
.nav-links a:not(.button):hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-links .nav-mobile-cta{display:none}
.menu-toggle{display:none;place-items:center;width:44px;height:44px;padding:0;color:white;background:transparent;border:0;font-size:1.5rem}

/* ---------- Botones ---------- */
.button{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;background:var(--red);color:#fff;padding:16px 28px;font-family:var(--condensed);font-weight:700;font-size:.92rem;letter-spacing:.13em;line-height:1;overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s,background .3s}
.button::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.25) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s var(--ease)}
.button:hover{transform:translateY(-2px);box-shadow:0 14px 34px var(--red-glow)}
.button:hover::before{transform:translateX(120%)}
.button:active{transform:translateY(0)}
.button-small{font-size:.78rem;padding:12px 21px;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
.button-ghost{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.28);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.button-ghost:hover{border-color:#fff;box-shadow:none;background:rgba(255,255,255,.08)}
.button-whatsapp{background:#1fae52}
.button-whatsapp:hover{box-shadow:0 14px 34px rgba(31,174,82,.3)}
.button.disabled{background:rgba(255,255,255,.05);color:rgba(255,255,255,.32);box-shadow:none;cursor:not-allowed}
.button.disabled:hover{transform:none}
.button.disabled::before{display:none}
.full{width:100%}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;overflow:hidden;background:#050505}
.hero-image,.hero-shade{position:absolute;inset:0;width:100%;height:100%}
.hero-image{object-fit:cover;object-position:center 22%;filter:brightness(.45) saturate(1.1);animation:heroZoom 18s ease-out both}
.hero-shade{background:linear-gradient(to top,#070707 0%,rgba(7,7,7,.5) 43%,rgba(7,7,7,.1) 100%),linear-gradient(to right,rgba(7,7,7,.78),transparent 65%),radial-gradient(ellipse at 15% 100%,rgba(232,25,44,.22),transparent 55%)}
.hero-content{position:relative;z-index:1;padding-bottom:clamp(68px,9vw,128px);padding-top:150px}
.eyebrow{display:flex;align-items:center;gap:12px;margin:0 0 20px;color:var(--red);font-family:var(--condensed);font-size:.8rem;font-weight:600;letter-spacing:.3em}
.eyebrow span{width:40px;height:1px;background:currentColor}
.eyebrow.centered{justify-content:center}
.hero .eyebrow{animation:fadeUp .8s .05s both}
.hero h1{margin:0;line-height:.83;font-family:var(--heading);font-size:clamp(6.5rem,18vw,14rem);font-weight:400;letter-spacing:.03em;animation:fadeUp .9s .15s both}
.hero h1>span:not(.sr-only),.hero h1 strong{display:block}
.hero h1 strong{color:var(--red);font-weight:400;text-shadow:0 0 80px rgba(232,25,44,.45)}
.hero-copy{max-width:680px;margin:26px 0 23px;color:rgba(255,255,255,.76);font-size:clamp(1.12rem,2vw,1.48rem);font-weight:300;line-height:1.6;animation:fadeUp .9s .3s both}
.hero-copy b{color:white;font-weight:500}
.waveform{height:40px;display:flex;align-items:flex-end;gap:3px;margin-bottom:30px;animation:fadeUp .9s .4s both}
.waveform i{display:block;width:3px;height:39px;background:var(--red);border-radius:4px;transform-origin:bottom;animation:wave .65s ease-in-out infinite alternate;will-change:transform}
.waveform i:nth-child(2n){animation-delay:.12s;animation-duration:.55s}
.waveform i:nth-child(3n){animation-delay:.24s;animation-duration:.75s}
.waveform i:nth-child(4n){animation-delay:.36s}
.waveform i:nth-child(5n){animation-duration:.5s}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;animation:fadeUp .9s .5s both}
.scroll-cue{position:absolute;right:clamp(22px,4vw,58px);bottom:27px;display:grid;place-items:center;width:44px;height:44px;border:1px solid rgba(255,255,255,.18);border-radius:50%;color:rgba(255,255,255,.55);font-size:1.3rem;animation:bounce 1.8s infinite}
.scroll-cue:hover{color:#fff;border-color:#fff}

/* ---------- Estadísticas ---------- */
.stats-strip{position:relative;background:var(--red);overflow:hidden}
.stats-strip::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,transparent 0 22px,rgba(0,0,0,.05) 22px 44px)}
.stats-grid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding-block:30px;text-align:center}
.stats-grid div{display:flex;flex-direction:column;gap:4px}
.stats-grid div+div{border-left:1px solid rgba(255,255,255,.2)}
.stats-grid strong{font:400 clamp(3.3rem,6vw,5.1rem)/.9 var(--heading);letter-spacing:.03em;font-variant-numeric:tabular-nums}
.stats-grid span{font:600 .9rem var(--condensed);letter-spacing:.14em;color:rgba(255,255,255,.85)}

/* ---------- Secciones ---------- */
.section{position:relative;padding-block:clamp(82px,10vw,142px)}
.section-heading{text-align:center;margin:0 auto 68px;max-width:750px}
.section-heading .eyebrow{margin-bottom:15px}
.section-heading>p:not(.eyebrow){margin:18px auto 0;color:var(--muted);font-size:1.1rem;font-weight:300;line-height:1.6}
.about-copy h2,.section-heading h2{margin:0;font:400 clamp(3.4rem,7vw,6rem)/.95 var(--heading);letter-spacing:.04em}

/* ---------- Sobre mí ---------- */
.about-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(54px,10vw,150px);align-items:center}
.photo-collage{position:relative;padding:0 28px 28px 0}
.photo-main{overflow:hidden;clip-path:polygon(0 0,100% 0,100% 92%,92% 100%,0 100%);background:#111}
.photo-main img{width:100%;height:min(580px,66vw);display:block;object-fit:cover;object-position:center top;transition:transform 1.2s var(--ease)}
.photo-collage:hover .photo-main img{transform:scale(1.04)}
.photo-inset{position:absolute;right:0;bottom:0;width:36%;aspect-ratio:11/14;border:4px solid var(--red);overflow:hidden;background:#111;box-shadow:0 24px 50px rgba(0,0,0,.5)}
.photo-inset img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}
.photo-accent{position:absolute;left:-10px;top:27%;width:4px;height:112px;background:var(--red);box-shadow:0 0 20px var(--red)}
.about-copy h2 em{display:block;color:var(--red);font-style:normal}
.about-copy>p:not(.eyebrow){margin:18px 0;color:var(--muted);font-size:1.1rem;font-weight:300;line-height:1.65}
.about-copy b{color:#fff;font-weight:600}
.skills{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:19px 24px;margin-top:32px}
.skills p{display:flex;justify-content:space-between;gap:10px;margin:0 0 8px;font:600 .92rem var(--condensed);color:rgba(255,255,255,.82)}
.skills p b{color:var(--red)}
.skills i{position:relative;display:block;height:4px;background:rgba(255,255,255,.1);overflow:hidden}
.skills i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);background:linear-gradient(90deg,#9e0f1c,var(--red));transform:scaleX(0);transform-origin:left;transition:transform 1.4s var(--ease) .3s}
.visible .skills i::after{transform:scaleX(1)}
.social-buttons{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}
.social-buttons a{display:inline-flex;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.2);padding:12px 20px;font:600 .9rem var(--condensed);letter-spacing:.1em;transition:background .25s,border-color .25s}
.social-buttons .i{color:var(--red)}
.social-buttons a:hover{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.48)}

/* ---------- Servicios ---------- */
.services-section,.sessions-section{background:var(--black-2)}
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.service-card{position:relative;min-height:300px;padding:32px;border:1px solid rgba(255,255,255,.07);background:linear-gradient(160deg,#141414,#0f0f0f);overflow:hidden;transition:transform .45s var(--ease),border-color .35s,box-shadow .45s}
.service-card::before{content:"";position:absolute;right:-60px;top:-60px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,var(--red-glow),transparent 70%);opacity:0;transition:opacity .45s}
.service-card::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.service-card:hover{transform:translateY(-8px);border-color:rgba(232,25,44,.45);box-shadow:0 24px 50px rgba(0,0,0,.45)}
.service-card:hover::before{opacity:1}
.service-card:hover::after{transform:scaleX(1)}
.service-card small{display:inline-block;padding:5px 10px;color:var(--red);background:rgba(232,25,44,.12);font:700 .72rem var(--condensed);letter-spacing:.14em}
.service-icon{display:grid;place-items:center;width:62px;height:62px;margin:24px 0 16px;color:var(--red);font-size:30px;border:1px solid rgba(232,25,44,.3);background:rgba(232,25,44,.06);transition:background .35s,color .35s}
.service-icon .i{stroke-width:1.6;vertical-align:0}
.service-card:hover .service-icon{background:var(--red);color:#fff}
.service-card h3{margin:0 0 10px;font:700 1.65rem/1.15 var(--condensed);letter-spacing:.02em}
.service-card p{margin:0;color:var(--muted);font-size:.98rem;font-weight:300;line-height:1.6}

/* ---------- Galería ---------- */
.gallery-filters{display:flex;justify-content:center;flex-wrap:wrap;gap:12px;margin:-35px 0 38px}
.gallery-filters button{border:1px solid rgba(255,255,255,.16);background:transparent;color:rgba(255,255,255,.6);padding:11px 20px;font:700 .86rem var(--condensed);letter-spacing:.13em;transition:background .2s,border-color .2s,color .2s}
.gallery-filters button b{font-weight:400;opacity:.7}
.gallery-filters button.active,.gallery-filters button:hover{border-color:var(--red);background:var(--red);color:#fff}
.gallery-grid{columns:4 230px;column-gap:13px}
.gallery-item{position:relative;display:block;width:100%;padding:0;margin:0 0 13px;border:0;background:#141414;overflow:hidden;break-inside:avoid;text-align:left;animation:galleryIn .5s var(--ease) both}
.gallery-item[hidden]{display:none}
.gallery-item img{display:block;width:100%;height:auto;transition:transform .7s var(--ease),filter .5s}
.gallery-item::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.85),transparent 60%);opacity:0;transition:opacity .35s}
.gallery-item span{position:absolute;z-index:1;left:16px;right:16px;bottom:14px;color:white;font:600 .92rem var(--condensed);letter-spacing:.04em;opacity:0;transform:translateY(8px);transition:opacity .35s,transform .35s var(--ease)}
.gallery-item span::before{content:"";display:block;width:24px;height:2px;margin-bottom:8px;background:var(--red)}
.gallery-item:hover img,.gallery-item:focus-visible img{transform:scale(1.06)}
.gallery-item:hover::after,.gallery-item:hover span,.gallery-item:focus-visible::after,.gallery-item:focus-visible span{opacity:1}
.gallery-item:hover span,.gallery-item:focus-visible span{transform:none}
.gallery-item:focus-visible{outline-offset:-2px}

/* ---------- Sesiones ---------- */
.instagram-banner{display:grid;grid-template-columns:auto 1fr auto;gap:17px;align-items:center;margin:-31px 0 42px;padding:22px 25px;border:1px solid rgba(255,255,255,.1);background:linear-gradient(135deg,rgba(131,58,180,.15),rgba(253,29,29,.09),rgba(252,176,69,.08))}
.instagram-symbol{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;background:linear-gradient(135deg,#833ab4,#fd1d1d,#fcb045);font-size:26px}
.instagram-symbol .i{vertical-align:0}
.instagram-banner h3{margin:0 0 2px;font:700 1.3rem var(--condensed)}
.instagram-banner p{margin:0;color:var(--muted);font-weight:300}
.instagram-banner a{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:13px 19px;background:linear-gradient(135deg,#833ab4,#fd1d1d,#fcb045);font:700 .85rem var(--condensed);letter-spacing:.1em;white-space:nowrap;transition:transform .3s var(--ease),box-shadow .3s}
.instagram-banner a:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(253,29,29,.25)}
.sessions-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.session-card{border:1px solid rgba(255,255,255,.1);background:#111;overflow:hidden;transition:transform .4s var(--ease),border-color .3s}
.session-card.available:hover{transform:translateY(-5px);border-color:rgba(232,25,44,.45)}
.session-cover{position:relative;height:210px;overflow:hidden;background:#111}
.session-cover img{display:block;width:100%;height:100%;object-fit:cover;filter:brightness(.6) saturate(1.1);transition:transform .6s var(--ease)}
.session-card:hover .session-cover img{transform:scale(1.06)}
.locked .session-cover img{filter:brightness(.24) saturate(.2)}
.session-cover>span,.session-cover>em{position:absolute;top:13px;padding:5px 10px;background:var(--red);color:white;font:700 .74rem var(--condensed);letter-spacing:.13em;font-style:normal}
.session-cover>span{left:13px}
.session-cover>em{right:13px;background:rgba(255,255,255,.12);color:rgba(255,255,255,.6)}
.session-cover>b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:64px;height:64px;background:rgba(232,25,44,.9);color:white;font-size:26px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);transition:transform .4s var(--ease)}
.session-cover>b .i{vertical-align:0}
.available:hover .session-cover>b{transform:translate(-50%,-50%) scale(1.1)}
.locked .session-cover>b{background:rgba(255,255,255,.09);color:rgba(255,255,255,.5)}
.session-content{padding:25px}
.session-content h3{margin:0;font:700 1.5rem var(--condensed)}
.session-content time{display:block;margin:3px 0 15px;color:var(--red);font-size:.92rem}
.tags{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 18px}
.tags span{border:1px solid rgba(255,255,255,.09);background:rgba(255,255,255,.04);padding:3px 7px;color:rgba(255,255,255,.6);font:600 .74rem var(--condensed);letter-spacing:.06em}
.session-meta{display:flex;flex-wrap:wrap;gap:6px 16px;margin:0 0 17px;color:rgba(255,255,255,.5);font-size:.85rem;font-weight:300}
.session-meta span{display:inline-flex;align-items:center;gap:6px}
.session-content .button{width:100%;padding:14px}

/* ---------- FAQ ---------- */
.faq-shell{max-width:980px}
.faq-list{display:grid;gap:12px}
.faq-item{border:1px solid rgba(255,255,255,.08);background:#0e0e0e;transition:border-color .3s,background .3s}
.faq-item[open]{border-color:rgba(232,25,44,.45);background:#121212}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 24px;list-style:none;cursor:pointer}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary h3{margin:0;font:600 1.2rem/1.3 var(--condensed);letter-spacing:.02em}
.faq-icon{display:grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border:1px solid rgba(255,255,255,.15);color:var(--red);transition:transform .35s var(--ease),background .3s,color .3s}
.faq-icon .i{vertical-align:0}
.faq-item[open] .faq-icon{transform:rotate(45deg);background:var(--red);color:#fff;border-color:var(--red)}
.faq-item p{margin:0;padding:0 24px 22px;color:var(--muted);font-weight:300;line-height:1.7;max-width:780px}
.faq-item[open] p{animation:fadeUp .4s var(--ease)}

/* ---------- Contacto ---------- */
.contact-section{overflow:hidden;background:#070707}
.contact-bg{position:absolute;inset:0;background:url(assets/img/dj-silhouette-smoke.jpg) center/cover no-repeat;background-image:image-set(url(assets/img/dj-silhouette-smoke-590.webp) type('image/webp'),url(assets/img/dj-silhouette-smoke.jpg) type('image/jpeg'));filter:brightness(.11) saturate(.5);opacity:.9}
.contact-bg::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0,rgba(232,25,44,.12),transparent 60%)}
.contact-content{position:relative;z-index:1}
.contact-grid{display:grid;grid-template-columns:3fr 2fr;gap:45px;max-width:1180px;margin:auto}
.booking-form{display:grid;gap:18px;align-content:start}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.booking-form label{display:grid;gap:8px;color:rgba(255,255,255,.6);font:600 .8rem var(--condensed);letter-spacing:.12em;text-transform:uppercase}
.booking-form input,.booking-form select,.booking-form textarea{width:100%;min-height:48px;border:1px solid rgba(255,255,255,.12);border-radius:0;outline:0;background:rgba(255,255,255,.04);padding:12px 14px;color:white;font:300 1rem var(--body);letter-spacing:0;text-transform:none;color-scheme:dark;transition:border-color .2s,background .2s,box-shadow .2s}
.booking-form select option{background:#151515}
.booking-form textarea{resize:vertical}
.booking-form input:focus,.booking-form select:focus,.booking-form textarea:focus{border-color:var(--red);background:rgba(255,255,255,.06);box-shadow:0 0 0 3px rgba(232,25,44,.18)}
.booking-form.was-validated :invalid{border-color:#ff5a67}
.form-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form-note{min-height:20px;margin:0;color:rgba(255,255,255,.7);font-size:.92rem}
.form-note.error{color:#ff7a85}
.contact-cards{display:grid;gap:12px;align-content:start}
.contact-card{display:flex;align-items:flex-start;gap:15px;padding:16px;border:1px solid rgba(255,255,255,.07);background:rgba(255,255,255,.025);transition:border-color .25s,background .25s,transform .3s var(--ease)}
.contact-card[href]:hover{border-color:rgba(255,255,255,.25);background:rgba(255,255,255,.05);transform:translateX(4px)}
.contact-card>span{display:grid;place-items:center;width:42px;height:42px;flex:0 0 auto;background:rgba(232,25,44,.15);color:var(--red);font-size:19px}
.contact-card>span .i{vertical-align:0}
.contact-card small{display:block;margin-bottom:2px;color:rgba(255,255,255,.45);font:600 .75rem var(--condensed);letter-spacing:.13em}
.contact-card b{display:block;color:white;font-weight:500;overflow-wrap:anywhere}
.contact-card p{margin:3px 0 0;color:rgba(255,255,255,.48);font-size:.86rem;font-weight:300}
.whatsapp{display:flex;align-items:center;justify-content:center;gap:10px;border:1px solid rgba(31,174,82,.5);background:rgba(31,174,82,.08);padding:15px;color:white;font:700 .9rem var(--condensed);letter-spacing:.13em;transition:background .25s,border-color .25s}
.whatsapp .i{color:#25d366}
.whatsapp:hover{background:rgba(31,174,82,.18);border-color:#25d366}

/* ---------- Pie ---------- */
.footer{border-top:1px solid rgba(255,255,255,.06);background:#050505}
.footer-top{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:45px 0}
.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:20px}
.footer-social{display:flex;gap:10px}
.footer-social a{display:grid;place-items:center;width:40px;height:40px;border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.7);transition:border-color .2s,color .2s,background .2s}
.footer-social a .i{vertical-align:0}
.footer-social a:hover{border-color:var(--red);background:var(--red);color:white}
.footer-bottom{display:flex;justify-content:space-between;gap:16px;border-top:1px solid rgba(255,255,255,.06);padding:23px 0;color:rgba(255,255,255,.4);font:400 .78rem var(--condensed);letter-spacing:.11em}
.footer-bottom p{margin:0}
.footer-bottom p:last-child{color:rgba(232,25,44,.8)}

/* ---------- WhatsApp flotante ---------- */
.whatsapp-float{position:fixed;z-index:40;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:#1fae52;color:#fff;font-size:28px;box-shadow:0 10px 30px rgba(0,0,0,.45);opacity:0;transform:translateY(20px) scale(.8);pointer-events:none;transition:opacity .4s,transform .4s var(--ease)}
.whatsapp-float .i{vertical-align:0}
.whatsapp-float.show{opacity:1;transform:none;pointer-events:auto}
.whatsapp-float::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #1fae52;animation:pulse 2.4s infinite}
.whatsapp-float:hover{background:#25c25d}

/* ---------- Modales ---------- */
.modal{position:fixed;z-index:100;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.94);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeIn .25s ease-out}
.modal[hidden]{display:none}
.modal figure{margin:0;max-width:min(90vw,1200px);max-height:88vh;text-align:center}
.modal figure img{display:block;max-width:90vw;max-height:80vh;margin:auto;object-fit:contain;transition:opacity .25s}
.modal figure img.loading{opacity:.25}
.modal figcaption{padding-top:14px;color:rgba(255,255,255,.7);font:600 .92rem var(--condensed);letter-spacing:.08em}
.modal-close{position:absolute;z-index:2;top:16px;right:18px;display:grid;place-items:center;width:48px;height:48px;border:0;background:transparent;color:rgba(255,255,255,.75);font-size:30px;line-height:1}
.modal-arrow{position:absolute;top:50%;display:grid;place-items:center;width:56px;height:56px;border:1px solid rgba(255,255,255,.15);border-radius:50%;background:rgba(0,0,0,.4);color:rgba(255,255,255,.8);font-size:28px;line-height:1;transform:translateY(-50%);transition:background .2s,color .2s,border-color .2s}
.modal-close .i,.modal-arrow .i{vertical-align:0}
.modal-arrow:hover{background:var(--red);border-color:var(--red);color:white}
.modal-close:hover{color:white}
.modal-arrow.prev{left:20px}
.modal-arrow.next{right:20px}
.download-dialog{position:relative;width:min(100%,460px);max-height:calc(100vh - 48px);overflow:auto;border:1px solid rgba(255,255,255,.12);background:#111;padding:38px;text-align:center;animation:modalIn .35s var(--ease)}
.download-dialog .modal-close{top:6px;right:6px;font-size:24px}
.download-dialog h3{margin:0;font:400 2.1rem var(--heading);letter-spacing:.06em}
.download-dialog p{color:var(--muted);font-size:.96rem;font-weight:300;line-height:1.55}
.modal-icon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 16px;background:var(--red);font-size:28px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.modal-icon .i{vertical-align:0}
.modal-icon.instagram-symbol{border-radius:16px;clip-path:none}
.instagram-button{width:100%;margin:13px 0;background:linear-gradient(135deg,#833ab4,#fd1d1d,#fcb045)}
.outline-action{width:100%;border:1px solid rgba(255,255,255,.14);background:transparent;padding:14px;color:rgba(255,255,255,.7);font:600 .86rem var(--condensed);letter-spacing:.1em;transition:border-color .2s,color .2s}
.outline-action:hover{border-color:rgba(255,255,255,.4);color:white}
.download-info{display:grid;gap:4px;margin:18px 0;border:1px solid rgba(255,255,255,.07);padding:15px;text-align:left;background:rgba(255,255,255,.025)}
.download-info b{display:flex;align-items:center;gap:8px;font:700 1.1rem var(--condensed)}
.download-info b .i{color:var(--red)}
.download-info span{color:rgba(255,255,255,.5);font-size:.82rem}
.check-label{display:flex;align-items:flex-start;gap:10px;margin:17px 0;text-align:left;color:rgba(255,255,255,.65);font-size:.88rem;line-height:1.45;cursor:pointer}
.check-label input{flex:0 0 auto;width:18px;height:18px;margin-top:1px;accent-color:var(--red)}
#downloadLink[aria-disabled="true"]{pointer-events:none}

/* ---------- Animaciones ---------- */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.visible{opacity:1;transform:none}
.services-grid .reveal:nth-child(3n+2){transition-delay:.08s}
.services-grid .reveal:nth-child(3n){transition-delay:.16s}
.no-js .reveal{opacity:1;transform:none}
@keyframes fadeUp{from{opacity:0;transform:translateY(34px)}to{opacity:1;transform:none}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes heroZoom{from{transform:scale(1.12)}to{transform:scale(1.01)}}
@keyframes wave{from{transform:scaleY(.15)}to{transform:scaleY(1)}}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
@keyframes modalIn{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:none}}
@keyframes galleryIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pulse{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(1.45);opacity:0}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .reveal{opacity:1;transform:none}
  .waveform i{transform:scaleY(.5)}
}

/* ---------- Responsive ---------- */
@media (max-width:960px){
  .menu-toggle{display:grid;margin-left:auto}
  .nav-links{position:absolute;top:100%;left:0;right:0;height:calc(100vh - var(--header-h));height:calc(100dvh - var(--header-h));display:flex;flex-direction:column;align-items:stretch;gap:0;padding:12px 25px 32px;background:#070707;border-top:1px solid rgba(255,255,255,.08);overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity .3s,transform .35s var(--ease),visibility 0s .35s}
  .nav-links.open{opacity:1;visibility:visible;transform:none;transition:opacity .3s,transform .35s var(--ease)}
  .nav-links a:not(.button){padding:16px 0;border-bottom:1px solid rgba(255,255,255,.06);color:white;font-size:1.35rem;letter-spacing:.1em}
  .nav-links a:not(.button)::after{display:none}
  .nav-links a.active{color:var(--red)}
  .nav-links .nav-mobile-cta{display:inline-flex;margin-top:26px}
  .nav-reserve{display:none}
  .about-grid,.contact-grid{grid-template-columns:1fr;gap:50px}
  .services-grid,.sessions-grid{grid-template-columns:repeat(2,1fr)}
  .photo-main img{height:580px}
  .contact-grid{max-width:720px}
  .contact-cards{grid-template-columns:1fr 1fr}
  .whatsapp{grid-column:1/-1}
  .footer-top{flex-direction:column}
}
@media (max-width:620px){
  :root{--header-h:68px}
  .brand{font-size:1.4rem}
  .brand-mark{width:36px;height:36px}
  .hero-content{padding-bottom:88px}
  .eyebrow{letter-spacing:.2em;font-size:.74rem}
  .eyebrow span{width:28px}
  .hero h1{font-size:clamp(6rem,26vw,8.7rem)}
  .hero-copy{font-size:1.05rem}
  .scroll-cue{display:none}
  .stats-grid{grid-template-columns:1fr 1fr;gap:28px 12px}
  .stats-grid div+div{border-left:0}
  .about-grid{gap:42px}
  .skills,.form-row,.form-actions{grid-template-columns:1fr}
  .photo-main img{height:420px}
  .services-grid,.sessions-grid{grid-template-columns:1fr}
  .service-card{min-height:0}
  .section-heading{margin-bottom:48px}
  .gallery-filters{gap:8px}
  .gallery-filters button{padding:9px 11px;font-size:.76rem;letter-spacing:.08em}
  .gallery-grid{columns:2 140px;column-gap:9px}
  .gallery-item{margin-bottom:9px}
  .gallery-item span{font-size:.8rem;left:10px;right:10px;bottom:10px}
  .instagram-banner{grid-template-columns:auto 1fr}
  .instagram-banner a{grid-column:1/-1;text-align:center}
  .faq-item summary{padding:18px}
  .faq-item summary h3{font-size:1.08rem}
  .faq-item p{padding:0 18px 18px}
  .contact-cards{grid-template-columns:1fr}
  .footer-links{gap:12px 16px}
  .footer-bottom{flex-direction:column;text-align:center}
  .footer{padding-bottom:70px}
  .modal{padding:12px}
  .modal-arrow{width:44px;height:44px;font-size:22px;top:auto;bottom:18px;transform:none}
  .modal-arrow.prev{left:calc(50% - 56px)}
  .modal-arrow.next{right:calc(50% - 56px)}
  .modal figure img{max-width:100%;max-height:72vh}
  .download-dialog{padding:40px 22px 28px}
  .social-buttons a{flex:1;justify-content:center}
  .hero-actions .button{width:100%}
  .whatsapp-float{width:52px;height:52px;font-size:25px}
}
