/* ═══════════════════════════════════════════════════════════
   NOMIKAI — CORE DESIGN SYSTEM
   Shared tokens, reset, components, utilities and responsive.
   Version: 2.8
   ═══════════════════════════════════════════════════════════ */

/* ───────────────────────────────────────────────────────────
   N27 FONT FAMILY
   ─────────────────────────────────────────────────────────── */
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705811/N27-Thin_gh1xkh.otf') format('opentype');font-weight:100;font-style:normal;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705814/N27-ThinItalic_flyj1b.otf') format('opentype');font-weight:100;font-style:italic;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705808/N27-ExtraLight_m29u9g.otf') format('opentype');font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705811/N27-ExtraLightItalic_hemkya.otf') format('opentype');font-weight:200;font-style:italic;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705813/N27-Regular_vqvgtj.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705811/N27-RegularItalic_f2og8s.otf') format('opentype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705811/N27-Medium_onvc9w.otf') format('opentype');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705812/N27-MediumItalic_adlyi7.otf') format('opentype');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705807/N27-Bold_dfsbb0.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'N27';src:url('https://res.cloudinary.com/duuq8lnz5/raw/upload/v1772705809/N27-BoldItalic_yyo81v.otf') format('opentype');font-weight:700;font-style:italic;font-display:swap}

/* ───────────────────────────────────────────────────────────
   DESIGN TOKENS
   8px grid · Perfect Fourth scale (1.333)
   ─────────────────────────────────────────────────────────── */
:root{
  /* ── Color palette ── */
  --c-red:#DC2626;
  --c-red-muted:rgba(220,38,38,.28);
  --c-black:#0A0A0A;
  --c-dark:#111;
  --c-dark-card:#161616;
  --c-white:#F5F5F5;
  --c-gray:#888;
  --c-gray-light:#AAA;

  /* ── Semantic borders & overlays ── */
  --c-border:rgba(255,255,255,.06);
  --c-border-soft:rgba(255,255,255,.1);
  --c-border-focus:rgba(255,255,255,.3);
  --c-overlay-85:rgba(245,245,245,.85);

  /* ── Typography — Perfect Fourth (1.333) ── */
  --font:'N27',sans-serif;
  --fs-xs:.6875rem;       /*  11px */
  --fs-sm:.75rem;         /*  12px */
  --fs-caption:.8125rem;  /*  13px */
  --fs-body:1.125rem;     /*  18px */
  --fs-body-lg:1.25rem;   /*  20px */
  --fs-h3:clamp(1.25rem,2vw,2rem);
  --fs-h2:clamp(3rem,5vw,5rem);
  --fs-h1:clamp(3rem,7vw,6.5rem);
  --fs-display:clamp(3.375rem,6vw,5.875rem);

  /* ── Spacing — 8px grid ── */
  --sp-1:.25rem;    /*   4 */
  --sp-2:.5rem;     /*   8 */
  --sp-3:1rem;      /*  16 */
  --sp-4:1.5rem;    /*  24 */
  --sp-5:2rem;      /*  32 */
  --sp-6:2.5rem;    /*  40 */
  --sp-7:3rem;      /*  48 */
  --sp-8:3.5rem;    /*  56 */
  --sp-9:4rem;      /*  64 */
  --sp-10:5rem;     /*  80 */
  --sp-11:6rem;     /*  96 */
  --sp-12:7.5rem;   /* 120 */
  --sp-13:8.75rem;  /* 140 */

  /* ── Motion ── */
  --ease:cubic-bezier(.25,.46,.45,.94);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --dur-fast:.3s;
  --dur-mid:.5s;
  --dur-slow:.8s;

  /* ── Layout ── */
  --radius-pill:3.125rem;
  --radius-sm:.25rem;

  /* ── Entrance animation delays (overridable per page) ── */
  --enter-nav-delay:.2s;
  --enter-side-delay:.6s;
  --enter-icon-delay:.8s;
}

/* ───────────────────────────────────────────────────────────
   RESET & BASE
   ─────────────────────────────────────────────────────────── */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{font-size:16px;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:var(--c-red) var(--c-black);overscroll-behavior:none;background:var(--c-black)}
::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-track{background:var(--c-black)}
::-webkit-scrollbar-thumb{background:var(--c-red)}
body{font-family:var(--font);background:var(--c-black);color:var(--c-white);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}
a{text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}
img{max-width:100%;display:block}
:focus-visible{outline:2px solid var(--c-red);outline-offset:var(--sp-1);border-radius:var(--radius-sm)}

/* ───────────────────────────────────────────────────────────
   CROSS-DOCUMENT VIEW TRANSITIONS
   Shared chrome (nav, kanpai, icons) persists visually
   across page navigations — no flicker, no re-animation.
   ─────────────────────────────────────────────────────────── */
@view-transition{navigation:auto}

.side-text{view-transition-name:kanpai}
.icon-corner{view-transition-name:icons}

/* Shared elements: kill entire transition chain — no duplication */
::view-transition-group(kanpai),
::view-transition-group(icons){animation:none}

::view-transition-old(kanpai),
::view-transition-old(icons){display:none}

::view-transition-new(kanpai),
::view-transition-new(icons){animation:none}

/* Page content: instant swap — no flash */
::view-transition-old(root),
::view-transition-new(root){animation:none}

/* ───────────────────────────────────────────────────────────
   ENTRANCE ANIMATIONS — first visit only
   .first-visit is set via inline <script> in <head> when
   sessionStorage has no prior visit flag. Subsequent
   navigations within the session skip all entrance fx.
   ─────────────────────────────────────────────────────────── */
.first-visit .side-text{opacity:0;animation:fadeIn 1.2s var(--enter-side-delay) var(--ease) forwards}
.first-visit .icon-corner{opacity:0;animation:fadeIn 1.2s var(--enter-icon-delay) var(--ease) forwards}
.first-visit .nav{opacity:0;animation:fadeDown .8s var(--enter-nav-delay) var(--ease) forwards}

/* ───────────────────────────────────────────────────────────
   SIDE TEXT — KANPAI
   ─────────────────────────────────────────────────────────── */
.side-text{position:fixed;left:var(--sp-6);top:var(--sp-6);z-index:100;display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-sm);font-weight:400;letter-spacing:.125rem;color:rgba(245,245,245,.9);cursor:default;user-select:none;-webkit-user-select:none}
.side-text span{display:block;line-height:1.5;transition:color var(--dur-fast)}
.side-text:hover span{color:var(--c-red)}

/* ───────────────────────────────────────────────────────────
   ICON CORNER
   ─────────────────────────────────────────────────────────── */
.icon-corner{position:fixed;right:var(--sp-6);bottom:var(--sp-6);z-index:100;width:1.75rem;height:1.75rem}
.icon-corner-img{position:absolute;inset:0;width:100%;height:auto;filter:brightness(0) invert(1);opacity:0;transition:opacity 1.5s ease}
.icon-corner-img.active{opacity:.85}
.icon-corner:hover .icon-corner-img.active{filter:url(#filter-red);opacity:1}

/* ───────────────────────────────────────────────────────────
   NAV
   ─────────────────────────────────────────────────────────── */
.nav{position:fixed;top:var(--sp-6);left:50%;transform:translateX(-50%);z-index:1000;display:flex;align-items:center;background:rgba(20,20,20,.3);backdrop-filter:blur(28px) saturate(1.3);-webkit-backdrop-filter:blur(28px) saturate(1.3);border:1px solid var(--c-border-soft);border-radius:var(--radius-pill);padding:.625rem;transition:background .6s var(--ease),border-color .6s}
.nav.scrolled{background:rgba(14,14,14,.5);border-color:var(--c-border)}
.nav-link{font-size:.9375rem;font-weight:400;letter-spacing:.125rem;color:var(--c-white);padding:var(--sp-2) var(--sp-4);position:relative;transition:color .4s var(--ease)}
.nav-link::after{content:'';position:absolute;bottom:var(--sp-1);left:50%;width:0;height:1px;background:var(--c-red);transition:width .4s var(--ease),left .4s var(--ease)}
.nav-link:hover{color:var(--c-red)}
.nav-link:hover::after{width:36%;left:32%}
.nav-link.active{color:var(--c-red)}
.nav-link.active::after{width:36%;left:32%}
.nav-logo{order:2;padding:0 2.25rem;display:flex;align-items:center;justify-content:center;position:relative;height:var(--sp-7);min-width:11.25rem}
.nav-logo a{display:flex;align-items:center;justify-content:center;position:relative;width:100%;height:100%;transition:filter .6s var(--ease)}
.nav-logo a:hover{filter:url(#filter-liquid)}
.logo-full,.logo-imago{position:absolute;filter:brightness(0) invert(1)}
.logo-full{height:2.75rem;width:auto;opacity:1;transition:opacity .4s var(--ease)}
.logo-imago{height:2.75rem;width:auto;opacity:0;transition:opacity var(--dur-mid) .1s var(--ease)}
.nav.scrolled .logo-full{opacity:0;transition:opacity var(--dur-fast) var(--ease)}
.nav.scrolled .logo-imago{opacity:1;transition:opacity var(--dur-mid) .1s var(--ease)}
.nav-hamburger{display:none}
.nav-menu-card{display:contents}
.nav-menu-card .nav-link:nth-child(-n+2){order:1}
.nav-menu-card .nav-link:nth-child(n+3){order:3}

/* ───────────────────────────────────────────────────────────
   BUTTONS
   ─────────────────────────────────────────────────────────── */
.btn-primary{display:inline-block;font-family:var(--font);font-size:var(--fs-sm);font-weight:400;letter-spacing:.1875rem;text-transform:uppercase;color:var(--c-white);background:var(--c-red);padding:var(--sp-3) var(--sp-6);border:none;cursor:pointer;position:relative;overflow:hidden;transition:transform .4s var(--ease),box-shadow .4s}
.btn-primary::before{content:'';position:absolute;inset:0;background:var(--c-white);transform:translateY(100%);transition:transform var(--dur-mid) var(--ease)}
.btn-primary span{position:relative;z-index:1;transition:color .4s}
.btn-primary:not(:disabled):hover{transform:translateY(-2px);box-shadow:0 .75rem 2.5rem rgba(220,38,38,.3)}
.btn-primary:not(:disabled):hover::before{transform:translateY(0)}
.btn-primary:not(:disabled):hover span{color:var(--c-black)}
.btn-primary:disabled{background:var(--c-red-muted);cursor:not-allowed}
.btn-primary:disabled span{color:rgba(245,245,245,.4)}
.btn-primary:disabled::before{display:none}
#btn-enviar{align-self:flex-start;margin-top:var(--sp-3)}
.cta-wrapper{text-align:center;padding:var(--sp-8) 0 var(--sp-10)}

.btn-ghost{font-family:var(--font);font-size:var(--fs-sm);font-weight:400;letter-spacing:.125rem;text-transform:uppercase;color:var(--c-white);display:inline-flex;align-items:center;gap:.625rem;transition:color var(--dur-fast),gap .4s var(--ease);cursor:pointer;background:none;border:none}
.btn-ghost .arrow{display:inline-flex;align-items:center;transition:transform .4s var(--ease)}
.btn-ghost .arrow img{width:.875rem;height:.875rem;filter:brightness(0) invert(1);transition:filter var(--dur-fast)}
.btn-ghost:hover{gap:var(--sp-3)}
.btn-ghost:hover .arrow{transform:translateX(var(--sp-1))}

/* ───────────────────────────────────────────────────────────
   FULLSCREEN BACKGROUND (reusable)
   ─────────────────────────────────────────────────────────── */
.fullscreen-bg{position:absolute;inset:0;z-index:0}
.fullscreen-bg-img{width:100%;height:100%;object-fit:cover;object-position:center 30%}
.fullscreen-bg-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.6) 0%,rgba(10,10,10,.7) 50%,rgba(10,10,10,.85) 100%)}

/* ───────────────────────────────────────────────────────────
   CONTACTO
   ─────────────────────────────────────────────────────────── */
.section-contacto{position:relative;z-index:2;background:var(--c-black);padding:var(--sp-11) var(--sp-10);display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-10);opacity:0;transform:translateY(var(--sp-6));transition:opacity var(--dur-slow) var(--ease),transform var(--dur-slow) var(--ease)}
.section-contacto.visible{opacity:1;transform:translateY(0)}
.contacto-left h2{font-size:var(--fs-h2);font-weight:200;line-height:1.12;margin-bottom:var(--sp-5)}
.contacto-left h2 span{color:var(--c-red)}
.contacto-left p{font-size:var(--fs-body);font-weight:200;color:var(--c-white);line-height:1.7;max-width:27.5rem}
.contacto-whatsapp,.contacto-instagram{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-body);font-weight:400;color:var(--c-white);letter-spacing:.0625rem;transition:color var(--dur-fast),gap .3s var(--ease);width:fit-content}
.contacto-whatsapp:hover,.contacto-instagram:hover{color:var(--c-red);gap:var(--sp-4)}
.contacto-whatsapp svg,.contacto-instagram svg{width:1.25rem;height:1.25rem;fill:currentColor;flex-shrink:0}
.contacto-whatsapp{margin-top:var(--sp-5)}
.contacto-instagram{margin-top:var(--sp-3)}
.contacto-right{display:flex;flex-direction:column;gap:var(--sp-6);justify-content:center}

/* ── Floating labels ── */
.contacto-field{position:relative;padding-top:var(--sp-4);padding-bottom:1.5rem}
.contacto-field label{position:absolute;top:var(--sp-4);left:0;font-size:var(--fs-body-lg);font-weight:200;color:rgba(255,255,255,.88);text-transform:none;letter-spacing:normal;transform-origin:0 0;transition:transform .3s var(--ease),font-size .3s var(--ease),color .3s var(--ease),letter-spacing .3s var(--ease),font-weight .3s var(--ease);pointer-events:none}
.contacto-field input,
.contacto-field textarea{width:100%;background:none;border:none;outline:none;color:var(--c-white);font-family:var(--font);font-size:var(--fs-body-lg);font-weight:200;resize:none;padding-bottom:var(--sp-3)}
.contacto-field input::placeholder,
.contacto-field textarea::placeholder{color:transparent}

/* ── Single line system: ::before = base, ::after = focus expand from center ── */
.contacto-field::before{content:'';position:absolute;bottom:1.5rem;left:0;width:100%;height:1px;background:var(--c-border-soft)}
.contacto-field::after{content:'';position:absolute;bottom:1.5rem;left:0;width:100%;height:1px;background:var(--c-white);transform:scaleX(0);transform-origin:center;transition:transform .4s var(--ease),background .3s}
.contacto-field:focus-within::after{transform:scaleX(1)}
.contacto-field.has-error::before{background:var(--c-red)}
.contacto-field.has-error::after{background:var(--c-red);transform:scaleX(1)}

/* ── Float up on focus or when filled ── */
.contacto-field input:focus ~ label,
.contacto-field textarea:focus ~ label,
.contacto-field input:not(:placeholder-shown) ~ label,
.contacto-field textarea:not(:placeholder-shown) ~ label{transform:translateY(calc(var(--sp-4) * -1));font-size:var(--fs-sm);font-weight:400;letter-spacing:.1rem;color:var(--c-white)}
.field-error{display:block;position:absolute;bottom:0;left:0;font-size:var(--fs-xs);letter-spacing:.03rem;color:var(--c-red);min-height:.875rem;opacity:0;transition:opacity var(--dur-fast)}
.field-error.visible{opacity:1}

/* ───────────────────────────────────────────────────────────
   SCROLL INDICATOR — shared hero component
   ─────────────────────────────────────────────────────────── */
.scroll-indicator{position:absolute;bottom:var(--sp-6);left:0;right:0;width:fit-content;margin:0 auto;z-index:2;font-size:.625rem;font-weight:400;letter-spacing:.25rem;color:var(--c-gray);opacity:0;animation:fadeUp 1s 1s var(--ease) forwards,float 3s 2s ease-in-out infinite}
.scroll-indicator.hide{animation:scrollHide 1.2s var(--ease) forwards}
.scroll-indicator.show{animation:scrollShow .8s var(--ease) forwards,float 3s ease-in-out infinite}
.scroll-indicator::after{content:'';display:block;width:1px;height:var(--sp-4);background:linear-gradient(to bottom,var(--c-gray),transparent);margin:var(--sp-3) auto 0;animation:scrollLine 2s ease-in-out infinite}

/* ───────────────────────────────────────────────────────────
   PROCESO — reusable process/steps section
   ─────────────────────────────────────────────────────────── */
.section-proceso{position:relative;z-index:20;padding:clamp(1rem,2vw,2rem) 8% clamp(3rem,6vw,6rem)}
.proceso-title{font-size:var(--fs-h2);font-weight:200;line-height:1.1;margin-bottom:clamp(2.5rem,5vw,5rem);opacity:0;transform:translateY(2rem)}
.proceso-title em{font-style:italic;font-weight:200;color:var(--c-red)}
.proceso-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(2rem,4vw,4rem)}
.proceso-item{position:relative;padding-top:var(--sp-7);opacity:0;transform:translateY(2rem)}
.proceso-item::before{content:'';position:absolute;top:0;left:0;width:2.5rem;height:2px;background:var(--c-red)}
.proceso-label{font-size:clamp(.65rem,.8vw,.8rem);font-weight:400;letter-spacing:.25rem;text-transform:uppercase;color:var(--c-red);margin-bottom:var(--sp-3)}
.proceso-heading{font-size:var(--fs-h3);font-weight:200;line-height:1.2;color:var(--c-white);margin-bottom:var(--sp-4)}
.proceso-desc{font-size:clamp(.875rem,1vw,1rem);font-weight:200;line-height:1.7;color:var(--c-white)}
.proceso-cta{margin-top:clamp(2.5rem,5vw,5rem);text-align:center;opacity:0;transform:translateY(2rem)}

/* ───────────────────────────────────────────────────────────
   EVENTS — grid, cards, detail overlay, gallery (shared)
   ─────────────────────────────────────────────────────────── */
.section-eventos{position:relative;z-index:2;background:var(--c-black)}
.section-red-header{background:var(--c-red);padding:var(--sp-10) 0 var(--sp-11);display:grid;grid-template-columns:repeat(3,1fr);gap:2px;align-items:center}
.section-red-header h2{font-size:var(--fs-display);font-weight:200;line-height:1;color:var(--c-black);grid-column:1/3;padding-left:var(--sp-9)}
.section-red-header p{font-size:var(--fs-body-lg);font-weight:400;color:#000;max-width:100%;line-height:1.6;padding:0 var(--sp-9) 0 0}

/* ── Event grid + cards ── */
.event-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px}
.event-card{position:relative;overflow:hidden;cursor:pointer;background:var(--c-dark-card)}
.event-card-img-wrap{position:relative;overflow:hidden;display:block;line-height:0}
.event-card-img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:brightness(.85);transition:filter var(--dur-fast);display:block}
.event-card-info{padding:var(--sp-4);display:flex;justify-content:space-between;align-items:center;background:var(--c-dark);border-top:1px solid rgba(255,255,255,.04);transition:background .35s var(--ease)}
.event-card:hover .event-card-info{background:var(--c-red)}
.event-card-title{font-size:var(--fs-body);font-weight:400;color:var(--c-white)}
.event-card-meta{font-size:var(--fs-caption);font-weight:200;color:rgba(245,245,245,.62);margin-top:var(--sp-1);letter-spacing:.03rem;transition:color var(--dur-fast)}
.event-card:hover .event-card-meta{color:rgba(255,255,255,.82)}
.event-card-arrow{width:1.75rem;height:1.75rem;opacity:.45;filter:brightness(0) invert(1);flex-shrink:0;transition:opacity var(--dur-fast),transform .4s var(--ease)}
.event-card:hover .event-card-arrow{opacity:1;transform:translateX(var(--sp-2))}

/* ── RGB glitch — cards ── */
.event-card-img-wrap::before,
.event-card-img-wrap::after{content:'';position:absolute;inset:0;opacity:0;pointer-events:none;z-index:2}
.event-card-img-wrap::before{background:rgba(220,38,38,.5);mix-blend-mode:screen}
.event-card-img-wrap::after{background:rgba(40,60,255,.4);mix-blend-mode:screen}
.event-card:hover .event-card-img-wrap::before{animation:glitch-r .4s steps(6) forwards}
.event-card:hover .event-card-img-wrap::after{animation:glitch-b .4s steps(6) .03s forwards}
.event-card:hover .event-card-img{animation:glitch-shake .4s steps(6) forwards;filter:brightness(1)}

/* ── Event detail overlay ── */
.event-detail{position:fixed;inset:0;z-index:900;background:var(--c-black);overflow-y:auto;overflow-x:hidden;overscroll-behavior:none;opacity:0;visibility:hidden;transition:opacity var(--dur-slow) var(--ease),visibility 0s var(--dur-slow)}
.event-detail.open{opacity:1;visibility:visible;transition:opacity .15s var(--ease),visibility 0s 0s}
.event-detail::before,
.event-detail::after{content:'';position:fixed;inset:0;z-index:999;pointer-events:none;opacity:0}
.event-detail::before{background:rgba(220,38,38,.5);mix-blend-mode:screen}
.event-detail::after{background:rgba(40,60,255,.4);mix-blend-mode:screen}
.event-detail.open::before{animation:detail-glitch-r .5s steps(8) forwards}
.event-detail.open::after{animation:detail-glitch-b .5s steps(8) .03s forwards}

/* ── Back button ── */
.btn-back{position:fixed;top:var(--sp-6);left:var(--sp-6);z-index:950;display:inline-flex;align-items:center;gap:var(--sp-3);font-family:var(--font);font-size:var(--fs-body);font-weight:400;letter-spacing:.0625rem;color:var(--c-white);background:rgba(10,10,10,.5);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--c-border-soft);border-radius:var(--radius-pill);padding:var(--sp-3) var(--sp-5) var(--sp-3) var(--sp-4);cursor:pointer;transition:background var(--dur-fast),border-color var(--dur-fast),gap .4s var(--ease);opacity:0;transform:translateX(-1rem)}
.event-detail.open .btn-back{animation:slideInLeft .6s .3s var(--ease-out) forwards}
.btn-back:hover{background:rgba(10,10,10,.8);border-color:var(--c-border-focus);gap:var(--sp-4)}
.btn-back .btn-back-arrow{width:1.125rem;height:1.125rem;filter:brightness(0) invert(1);transform:scaleX(-1);transition:transform var(--dur-fast) var(--ease)}
.btn-back:hover .btn-back-arrow{transform:scaleX(-1) translateX(4px)}

/* ── Detail hero ── */
.detail-hero{position:relative;width:100%;height:75vh;min-height:32rem;overflow:hidden}
.detail-hero-img{width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.05)}
.event-detail.open .detail-hero-img{animation:detail-img-glitch .5s steps(8) both}
.detail-hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,10,10,.1) 0%,rgba(10,10,10,.7) 80%,var(--c-black) 100%)}
.detail-hero-content{position:absolute;bottom:var(--sp-4);left:var(--sp-9);right:var(--sp-9);z-index:2}
.detail-hero-title{font-size:clamp(2.5rem,5vw,4.5rem);font-weight:200;line-height:1.1;margin-left:-.125rem;opacity:0;transform:translateY(var(--sp-5))}
.event-detail.open .detail-hero-title{animation:fadeUp .8s .2s var(--ease-out) forwards}
.detail-hero-meta{display:none}

/* ── Detail body ── */
.detail-body{padding:var(--sp-6) var(--sp-9) var(--sp-10);opacity:0;transform:translateY(var(--sp-5))}
.event-detail.open .detail-body{animation:fadeUp .8s .5s var(--ease-out) forwards}
.detail-body p{font-size:var(--fs-body-lg);font-weight:200;color:var(--c-gray-light);line-height:1.7;max-width:44rem}

/* ── Detail gallery ── */
.detail-gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(16rem,auto);gap:2px;opacity:0;transform:translateY(var(--sp-5))}
.event-detail.open .detail-gallery{animation:fadeUp .8s .65s var(--ease-out) forwards}
.gallery-item{overflow:hidden;position:relative}
.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease)}
.gallery-item:hover img{transform:scale(1.04)}
.gallery-info{background:var(--c-red);display:flex;flex-direction:column;justify-content:flex-end;padding:var(--sp-6)}
.gallery-info-label{font-size:var(--fs-caption);font-weight:400;letter-spacing:.25rem;text-transform:uppercase;color:var(--c-black);opacity:.7;margin-bottom:var(--sp-2)}
.gallery-info-value{font-size:clamp(2rem,3.5vw,3rem);font-weight:200;line-height:1.1;color:var(--c-black)}
.gallery-info-value.is-number{font-size:clamp(4rem,8vw,7rem);font-weight:100;line-height:.9}

/* ───────────────────────────────────────────────────────────
   FOOTER
   ─────────────────────────────────────────────────────────── */
.footer{position:relative;z-index:2;background:var(--c-black);padding:var(--sp-5) var(--sp-10);display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--c-border)}
.footer-left{display:flex;align-items:center;gap:var(--sp-5)}
.footer-left .footer-logo-img{height:1.25rem;width:auto;filter:brightness(0) invert(1);opacity:.8;transition:opacity var(--dur-fast)}
.footer-left .footer-logo-img:hover{opacity:1}
.footer-copy{font-size:var(--fs-xs);color:rgba(245,245,245,.55);letter-spacing:.0625rem}
.footer-links{display:flex;gap:var(--sp-5)}
.footer-links a{font-size:var(--fs-xs);color:rgba(245,245,245,.8);letter-spacing:.0625rem;transition:color var(--dur-fast)}
.footer-links a:hover{color:var(--c-red)}

/* ───────────────────────────────────────────────────────────
   KEYFRAMES — shared
   ─────────────────────────────────────────────────────────── */
@keyframes fadeUp{from{opacity:0;transform:translateY(1.875rem)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeDown{from{opacity:0;transform:translate(-50%,-1.25rem)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-.5rem)}}
@keyframes scrollLine{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}50.01%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@keyframes scrollHide{to{opacity:0;transform:translateY(.5rem)}}
@keyframes scrollShow{from{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}
@keyframes slideInLeft{from{opacity:0;transform:translateX(-1rem)}to{opacity:1;transform:translateX(0)}}

/* Glitch — cards & editorial */
@keyframes glitch-shake{0%{transform:translate(0) scale(1)}20%{transform:translate(-6px,3px) scale(1.04)}40%{transform:translate(5px,-2px) scale(1.06)}60%{transform:translate(-3px,2px) scale(1.07)}80%{transform:translate(4px,-1px) scale(1.08)}100%{transform:translate(0) scale(1.08)}}
@keyframes glitch-r{0%{opacity:.7;transform:translate(10px,-4px)}20%{opacity:.8;transform:translate(-8px,3px)}40%{opacity:.6;transform:translate(6px,-2px)}60%{opacity:.4;transform:translate(-4px,2px)}80%{opacity:.15;transform:translate(2px,0)}100%{opacity:0;transform:translate(0)}}
@keyframes glitch-b{0%{opacity:.6;transform:translate(-9px,4px)}20%{opacity:.7;transform:translate(7px,-3px)}40%{opacity:.5;transform:translate(-5px,2px)}60%{opacity:.3;transform:translate(3px,-1px)}80%{opacity:.1;transform:translate(-1px,0)}100%{opacity:0;transform:translate(0)}}

/* Glitch — detail overlay transition */
@keyframes detail-glitch-r{0%{opacity:.8;transform:translate(12px,-5px)}12%{opacity:.9;transform:translate(-8px,3px)}25%{opacity:.7;transform:translate(6px,-2px)}37%{opacity:.6;transform:translate(-10px,4px)}50%{opacity:.5;transform:translate(8px,-3px)}62%{opacity:.3;transform:translate(-4px,2px)}75%{opacity:.15;transform:translate(3px,-1px)}100%{opacity:0;transform:translate(0)}}
@keyframes detail-glitch-b{0%{opacity:.7;transform:translate(-10px,4px)}12%{opacity:.8;transform:translate(9px,-4px)}25%{opacity:.6;transform:translate(-7px,3px)}37%{opacity:.5;transform:translate(8px,-2px)}50%{opacity:.4;transform:translate(-5px,2px)}62%{opacity:.25;transform:translate(4px,-1px)}75%{opacity:.1;transform:translate(-2px,1px)}100%{opacity:0;transform:translate(0)}}
@keyframes detail-img-glitch{0%{transform:translate(0) scale(calc(var(--img-scale,1) * 1.05));opacity:0}10%{transform:translate(-6px,3px) scale(calc(var(--img-scale,1) * 1.04));opacity:.7}20%{transform:translate(5px,-2px) scale(calc(var(--img-scale,1) * 1.03));opacity:.85}30%{transform:translate(-3px,2px) scale(calc(var(--img-scale,1) * 1.02));opacity:.9}50%{transform:translate(4px,-1px) scale(calc(var(--img-scale,1) * 1.01));opacity:.95}70%{transform:translate(-2px,1px) scale(var(--img-scale,1));opacity:1}100%{transform:translate(0) scale(var(--img-scale,1));opacity:1}}

/* ───────────────────────────────────────────────────────────
   UTILITIES
   ─────────────────────────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(1.875rem);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.visible{opacity:1;transform:translateY(0)}
.d-br{display:inline}
body.detail-open{overflow:hidden}
body.detail-open .side-text,
body.detail-open .icon-corner{pointer-events:none}

/* ───────────────────────────────────────────────────────────
   CONTACT MODAL — Japanese vertical card over dark overlay
   ─────────────────────────────────────────────────────────── */
.modal-contacto{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:flex-end;padding:6.5rem var(--sp-5) var(--sp-5);background:rgba(0,0,0,0);backdrop-filter:blur(0px);-webkit-backdrop-filter:blur(0px);visibility:hidden;transition:background .5s var(--ease),backdrop-filter .5s var(--ease),-webkit-backdrop-filter .5s var(--ease),visibility 0s .6s}
.modal-contacto.open{background:rgba(0,0,0,.75);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);visibility:visible;transition:background .5s var(--ease),backdrop-filter .5s var(--ease),-webkit-backdrop-filter .5s var(--ease),visibility 0s 0s}
body.modal-open{overflow:hidden}

/* ── Card — tall vertical, no scroll, slides from right ── */
.modal-contacto-inner{display:flex;flex-direction:column;width:min(34rem,90vw);height:100%;background:var(--c-red);overflow:hidden;transform:translateX(110vw);transition:transform .65s cubic-bezier(.22,.68,.31,1)}
.modal-contacto.open .modal-contacto-inner{transform:translateX(0)}

/* ── Top area — KANPAI left + photo right ── */
.modal-contacto-top{display:grid;grid-template-columns:auto 1fr;height:65%;overflow:hidden}

/* KANPAI vertical */
.modal-contacto-kanpai{display:flex;flex-direction:column;align-items:center;padding:var(--sp-6) var(--sp-5) var(--sp-6) var(--sp-7);gap:var(--sp-2)}
.modal-contacto-kanpai span{font-family:var(--font);font-size:1rem;font-weight:400;letter-spacing:.9rem;color:var(--c-black);text-transform:uppercase;line-height:1}

/* Photo — flush right edge always, narrower via left margin */
.modal-contacto-photo{overflow:hidden;margin-left:var(--sp-6)}
.modal-contacto-photo img{width:100%;height:100%;object-fit:cover;display:block;opacity:0;transform:scale(1.06);transition:opacity .5s .4s var(--ease),transform .7s .4s var(--ease)}
.modal-contacto.open .modal-contacto-photo img{opacity:1;transform:scale(1)}

/* ── Bottom area — header row (title + close) then links ── */
.modal-contacto-bottom{flex-shrink:0;padding:var(--sp-7) var(--sp-6) var(--sp-7) var(--sp-8)}
.modal-contacto-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-5)}
.modal-contacto-title{font-family:var(--font);font-size:1.5rem;font-weight:400;color:var(--c-black);line-height:1.2;white-space:nowrap;opacity:0;transform:translateY(var(--sp-3));transition:opacity .5s .45s var(--ease),transform .5s .45s var(--ease)}
.modal-contacto.open .modal-contacto-title{opacity:1;transform:translateY(0)}

/* Close — inline right of title, bigger */
.modal-contacto-close{width:2.5rem;height:2.5rem;background:none;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:var(--sp-4);opacity:0;transition:transform .3s var(--ease),opacity .5s .45s var(--ease);-webkit-tap-highlight-color:transparent}
.modal-contacto.open .modal-contacto-close{opacity:1}
.modal-contacto-close:hover{transform:rotate(90deg)}
.modal-contacto-close:focus-visible{outline:2px solid var(--c-black);outline-offset:2px}
.modal-contacto-close span{display:block;position:relative;width:1.25rem;height:1.25rem}
.modal-contacto-close span::before,.modal-contacto-close span::after{content:'';position:absolute;top:50%;left:50%;width:100%;height:1.5px;background:var(--c-black);border-radius:1px}
.modal-contacto-close span::before{transform:translate(-50%,-50%) rotate(45deg)}
.modal-contacto-close span::after{transform:translate(-50%,-50%) rotate(-45deg)}

/* Links */
.modal-contacto-link{display:flex;align-items:center;gap:var(--sp-3);font-family:var(--font);font-size:var(--fs-body);font-weight:400;color:var(--c-black);text-decoration:none;opacity:0;transform:translateY(var(--sp-2));transition:gap .3s var(--ease),opacity .5s .5s var(--ease),transform .5s .5s var(--ease)}
.modal-contacto.open .modal-contacto-link{opacity:1;transform:translateY(0)}
.modal-contacto.open .modal-contacto-link:nth-child(2){transition-delay:.58s}
.modal-contacto-link:hover{gap:var(--sp-4)}
.modal-contacto-link+.modal-contacto-link{margin-top:var(--sp-4)}
.modal-contacto-link svg{width:1.25rem;height:1.25rem;fill:var(--c-black);flex-shrink:0}

/* ───────────────────────────────────────────────────────────
   RESPONSIVE — shared breakpoints
   ─────────────────────────────────────────────────────────── */
@media(max-width:1024px){
  .footer{padding:var(--sp-5) var(--sp-6);flex-direction:column;gap:var(--sp-4);text-align:center}
  .footer-left{flex-direction:column;gap:var(--sp-3)}
  .footer-links{justify-content:center}
  .section-contacto{grid-template-columns:1fr;padding:var(--sp-11) var(--sp-6);gap:var(--sp-9)}
  .section-red-header{padding:var(--sp-6) 0;grid-template-columns:1fr;gap:var(--sp-4)}
  .section-red-header h2{grid-column:1;padding-left:var(--sp-6)}
  .section-red-header p{padding-left:var(--sp-6);padding-right:var(--sp-6)}
  .event-grid{grid-template-columns:1fr 1fr}
  .detail-hero-content{left:var(--sp-6);right:var(--sp-6);bottom:var(--sp-7)}
  .detail-body{padding:var(--sp-9) var(--sp-6)}
  .detail-gallery{grid-template-columns:1fr 1fr}
  .proceso-grid{grid-template-columns:repeat(3,1fr);gap:var(--sp-6)}
}

@media(max-width:640px){

  /* ── KANPAI + icon-corner hidden on mobile ── */
  .side-text,.icon-corner{display:none}

  /* ── Mobile floating bottom nav — pill bar (always same layout) ── */
  .nav{top:auto;bottom:var(--sp-5);left:var(--sp-3);right:var(--sp-3);transform:none;width:auto;padding:.75rem .75rem .75rem var(--sp-4);justify-content:space-between;align-items:center;border:none;box-shadow:0 4px 24px rgba(0,0,0,.35);transition:transform .35s var(--ease),box-shadow .3s}
  .nav.nav-hidden{transform:translateY(calc(100% + var(--sp-5)));pointer-events:none}
  .nav.menu-open.nav-hidden{transform:none;pointer-events:auto}
  .nav-link{display:none}

  /* Logo: always full logotype, never imago */
  .nav-logo{order:1;padding:0;min-width:auto;height:2rem}
  .logo-full{opacity:1 !important;position:relative;height:1.25rem !important}
  .logo-imago{display:none !important}

  /* ── "+" button — rotates 45° to "×" on its axis, gentle ── */
  .nav-hamburger{order:2;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;background:none;border:none;border-radius:0;cursor:pointer;padding:0;position:relative;transition:transform .25s cubic-bezier(.25,.46,.45,.94);-webkit-tap-highlight-color:transparent}
  .nav-hamburger::before{content:'';position:absolute;top:-.5rem;bottom:-.5rem;right:-.75rem;left:-6rem;z-index:1}
  .nav-hamburger span{position:absolute;display:block;background:var(--c-white);border-radius:1px}
  .nav-hamburger span:nth-child(1){width:.875rem;height:1.5px}
  .nav-hamburger span:nth-child(2){width:1.5px;height:.875rem}
  .nav.menu-open .nav-hamburger{transform:rotate(45deg)}

  /* ── Card panel — floats above bar, animates in/out ── */
  .nav-menu-card{display:flex;position:absolute;bottom:calc(100% + var(--sp-2));left:0;right:0;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);background:rgba(14,14,14,.9);backdrop-filter:blur(28px) saturate(1.3);-webkit-backdrop-filter:blur(28px) saturate(1.3);border-radius:1.5rem;border:none;box-shadow:0 4px 24px rgba(0,0,0,.35);transform:translateY(var(--sp-3));opacity:0;visibility:hidden;transition:transform .3s var(--ease),opacity .3s var(--ease),visibility 0s .3s;pointer-events:none}
  .nav.menu-open .nav-menu-card{transform:translateY(0);opacity:1;visibility:visible;transition:transform .3s var(--ease),opacity .3s var(--ease),visibility 0s 0s;pointer-events:auto}

  /* Individual link cards */
  .nav.menu-open .nav-link{display:flex;align-items:center;justify-content:space-between;background:rgba(35,35,35,.70);border:none;border-radius:1rem;padding:var(--sp-3) var(--sp-4);font-size:1rem;font-weight:400;letter-spacing:0;color:var(--c-white);opacity:0;animation:fadeUp .35s var(--ease) forwards}
  .nav.menu-open .nav-link:nth-child(1){animation-delay:.03s}
  .nav.menu-open .nav-link:nth-child(2){animation-delay:.06s}
  .nav.menu-open .nav-link:nth-child(3){animation-delay:.09s}
  .nav.menu-open .nav-link:nth-child(4){animation-delay:.12s}

  /* Arrow — Cloudinary icon */
  .nav.menu-open .nav-link::after{content:'';position:relative;bottom:auto;left:auto;width:2.5rem;height:2.5rem;border-radius:50%;background:rgba(255,255,255,.06) url("https://res.cloudinary.com/duuq8lnz5/image/upload/v1772789662/ic_arrow_next_vrvcpy.svg") center/1.375rem no-repeat;filter:brightness(0) invert(1);flex-shrink:0;transition:transform .3s var(--ease);transform:rotate(-45deg)}
  .nav.menu-open .nav-link:active::after{transform:rotate(0deg)}

  /* Active page — red highlight */
  .nav.menu-open .nav-link.active{background:rgba(220,38,38,.70);color:var(--c-white)}

  /* Entrance animation */
  .first-visit .nav{animation:fadeIn .8s var(--enter-nav-delay) var(--ease) forwards}

  /* Scroll indicator above floating nav */
  .scroll-indicator{display:none}
  body:not(.menu-open){padding-bottom:4.5rem}
  .footer{padding-bottom:calc(var(--sp-5) + 4.5rem);padding-left:var(--sp-4);padding-right:var(--sp-4)}
  body.detail-open .nav{display:none}

  /* ── Desktop-only breaks hidden ── */
  .d-br{display:none}

  /* ── Hero centering — offset for floating nav ── */
  .hero,.hero-video{padding-bottom:6rem}
  .hero-content,.hero-video-content{padding-left:var(--sp-4);padding-right:var(--sp-4)}

  /* ── Hero spacing — tighter gaps ── */
  .hero-title{line-height:1.2}
  .hero-subtitle,.hero-video-sub{margin-top:var(--sp-3)}
  .hero-actions{margin-top:var(--sp-5)}

  /* ── Buttons — never full-width, keep lateral breathing room ── */
  .btn-primary{max-width:calc(100% - var(--sp-9))}

  /* ── CTA spacing — reduce gap before contacto ── */
  .cta-wrapper{padding-top:var(--sp-7) !important;padding-bottom:var(--sp-4) !important}

  /* ── Contacto form — tighter fields ── */
  .contacto-left h2{font-size:clamp(2.25rem,9vw,3.5rem)}
  .contacto-right{gap:var(--sp-3)}
  .contacto-field label{font-size:var(--fs-body)}
  .contacto-field input,
  .contacto-field textarea{font-size:var(--fs-body)}

  /* ── Footer — reorder: logo → links → copyright ── */
  .footer-left{display:contents}
  .footer-left > a{order:0}
  .footer-links{order:1}
  .footer-copy{order:2}

  /* ── Event cards — compact text + padding, equal height ── */
  .event-card{display:flex;flex-direction:column}
  .event-card-info{padding:var(--sp-3);flex:1;align-items:flex-start}
  .event-card-title{font-size:var(--fs-caption)}
  .event-card-meta{font-size:var(--fs-xs);margin-top:2px}
  .event-card-arrow{width:1.25rem;height:1.25rem}

  /* ── Red header — tighter margins ── */
  .section-red-header{padding:var(--sp-5) 0}
  .section-red-header h2{padding-left:var(--sp-4);font-size:clamp(2.25rem,9vw,3.5rem);font-weight:200}
  .section-red-header p{padding-left:var(--sp-4);padding-right:var(--sp-4);font-size:var(--fs-body);line-height:1.5}

  /* ── Gallery red info squares — smaller + tighter ── */
  .gallery-info{padding:var(--sp-4) var(--sp-4) var(--sp-5) var(--sp-5)}
  .gallery-info-label{font-size:var(--fs-body);letter-spacing:.15rem;margin-bottom:var(--sp-2)}
  .gallery-info-value{font-size:clamp(2.5rem,9vw,3.5rem);line-height:1;font-weight:200}
  .gallery-info-value.is-number{font-size:clamp(4.5rem,17vw,7rem);line-height:.85;font-weight:200}

  /* ── Detail overlay — mobile refinements ── */
  .btn-back{top:var(--sp-4);left:var(--sp-4);padding:0;width:3rem;height:3rem;min-width:3rem;border-radius:50%;justify-content:center;gap:0;font-size:0;color:transparent;letter-spacing:0}
  .btn-back .btn-back-arrow{width:1.5rem;height:1.5rem}
  .detail-hero-title{font-size:clamp(2rem,7.5vw,3rem)}
  .detail-hero-overlay{background:linear-gradient(180deg,rgba(10,10,10,.05) 0%,rgba(10,10,10,.15) 40%,rgba(10,10,10,.55) 70%,var(--c-black) 100%)}
  .detail-body{padding:0 var(--sp-4) var(--sp-5);margin-top:-.5rem}
  .detail-body p{font-size:.9375rem;line-height:1.6}

  /* ── Layout — refinements beyond 1024px ── */
  .section-contacto{padding:var(--sp-10) var(--sp-4);gap:var(--sp-6)}
  .event-card-img{aspect-ratio:3/2 !important;height:auto}
  .detail-hero{height:60vh;min-height:24rem}
  .detail-hero-content{left:var(--sp-4);right:var(--sp-4);bottom:var(--sp-6)}
  .detail-gallery{grid-template-columns:1fr}
  .proceso-grid{grid-template-columns:1fr;gap:var(--sp-7)}
  .section-proceso{padding:var(--sp-9) var(--sp-4)}

  /* ── Modal — mobile card ── */
  .modal-contacto{padding:var(--sp-4) var(--sp-3) 5.5rem}
  .modal-contacto-inner{width:min(24rem,88vw)}
  .modal-contacto-kanpai{padding:var(--sp-5) var(--sp-4)}
  .modal-contacto-bottom{padding:var(--sp-6) var(--sp-5) var(--sp-7)}
}
