/* OMEN STUDIOS — landing. Identity from omen.com.mx: pure black #000 / white #fff, Helvetica Neue. */
@font-face{font-family:"OMEN Helvetica Condensed";src:url("assets/fonts/Helvetica-Condensed-Bold.otf") format("opentype");font-weight:700;font-display:swap}
:root{
  --black:#000;--white:#fff;
  /* theme tokens — dark (default) */
  --bg:#000;--fg:#fff;--bg-rgb:0,0,0;--grey:#8a8a8a;--line:rgba(255,255,255,.18);--tile:#0d0d0d;
  --hero-fade:rgba(0,0,0,.55);--hero-fade-0:rgba(0,0,0,0);
  color-scheme:dark;
  --sans:"Helvetica Neue",Helvetica,Arial,"Inter Tight",sans-serif;
  --cond:"OMEN Helvetica Condensed","Helvetica Neue",Helvetica,Arial,"Inter Tight",sans-serif;
  --pad:clamp(12px,1.6vw,24px);--gap:clamp(6px,.6vw,10px);
  --small:11px;
  --theme-ease:.45s cubic-bezier(.2,.7,.2,1);
}
/* light (inverted) theme — only colours swap; photos, videos and GIFs keep their real colours */
:root[data-theme="light"]{
  --bg:#fff;--fg:#000;--bg-rgb:255,255,255;--grey:#6b6b6b;--line:rgba(0,0,0,.16);--tile:#efefef;
  --hero-fade:rgba(255,255,255,.82);--hero-fade-0:rgba(255,255,255,0);
  color-scheme:light;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;overflow-x:hidden}
body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-size:14px;line-height:1.35;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img,video{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.label{font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--grey);margin-bottom:12px}

/* Japanese: Latin stays Helvetica, Japanese glyphs fall back to Hiragino / Noto Sans JP (loaded only for JA) */
html[lang="ja"]{--sans:"Helvetica Neue",Helvetica,Arial,"Hiragino Kaku Gothic ProN","Hiragino Sans","Noto Sans JP",sans-serif;--cond:"OMEN Helvetica Condensed","Helvetica Neue",Helvetica,Arial,"Hiragino Kaku Gothic ProN","Hiragino Sans","Noto Sans JP",sans-serif}
html[lang="ja"] .work__title,html[lang="ja"] .map__title,html[lang="ja"] .contact__big{letter-spacing:0;line-height:1.05}
html[lang="ja"] .about__lede{letter-spacing:.01em;line-height:1.3;max-width:24em;font-size:clamp(26px,3.6vw,60px)}
html[lang="ja"] .contact__big{font-size:clamp(48px,10vw,200px)}
html[lang="ja"] .services li,html[lang="ja"] .sectors{letter-spacing:.02em}
html[lang="ja"] .sectors{line-height:1.6}
html[lang="ja"] .contact__grid,html[lang="ja"] .map__addr{line-height:1.7}

/* Header */
.hdr{position:fixed;inset:0 0 auto 0;z-index:50;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding:14px var(--pad);color:#fff;mix-blend-mode:difference;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.hdr__mark img{height:28px;width:auto}
.hdr__nav{display:flex;gap:clamp(12px,2vw,28px);justify-content:center}
.hdr__nav a,.hdr__cta{position:relative}
.hdr__end{display:flex;align-items:center;gap:clamp(14px,2vw,28px)}
.lang{display:inline-flex;align-items:center;gap:6px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1}
.lang__btn{padding:4px 0;opacity:.55;position:relative;letter-spacing:.08em;transition:opacity .2s}
.lang__btn:hover,.lang__btn[aria-pressed="true"]{opacity:1}
.lang__btn[aria-pressed="true"]::after{content:"";position:absolute;left:0;right:.08em;bottom:0;height:1px;background:currentColor}
.lang__btn:focus-visible{outline:1px solid currentColor;outline-offset:3px}
.lang__sep{opacity:.55}
.theme-toggle{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;line-height:1;padding:4px 0;position:relative}
.theme-toggle__dot{width:12px;height:12px;border-radius:50%;border:1px solid currentColor;background:linear-gradient(90deg,currentColor 50%,transparent 50%);transition:transform var(--theme-ease);flex:none}
:root[data-theme="light"] .theme-toggle__dot{transform:rotate(180deg)}
.theme-toggle__txt{position:relative}
.theme-toggle__txt::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.theme-toggle:hover .theme-toggle__txt::after{transform:scaleX(1)}
.theme-toggle:focus-visible,.hdr a:focus-visible{outline:1px solid currentColor;outline-offset:4px}
:focus-visible{outline:1px solid var(--fg);outline-offset:3px}
.hdr__nav a::after,.hdr__cta::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.7,.2,1)}
.hdr__nav a:hover::after,.hdr__cta:hover::after{transform:scaleX(1)}

/* Hero */
.hero{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--pad) var(--pad)}
.hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.08)}
.hero{color:var(--fg)}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,var(--hero-fade),var(--hero-fade-0) 45%)}
.hero>*:not(video){position:relative;z-index:2}
.hero__meta{display:flex;justify-content:space-between;gap:16px;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding-bottom:10px;border-bottom:1px solid var(--fg);margin-bottom:6px}
.hero__meta--tagline{justify-content:center;text-align:center}
.hero__word{font-family:var(--cond);font-weight:700;text-transform:uppercase;line-height:.8;letter-spacing:-.035em;display:flex;justify-content:center;align-items:baseline;gap:.18em;text-align:center;font-size:15vw;white-space:nowrap;width:100%;max-width:100%;overflow:hidden}
.hero__word span,.ftr__word span{display:inline-block}
.hero .hero__tag{position:absolute;right:var(--pad);top:50%;transform:translateY(-50%);font-size:var(--small);font-weight:700;letter-spacing:.3em;text-transform:uppercase;writing-mode:vertical-rl;color:#fff;mix-blend-mode:difference}

/* Work */
.work{padding:clamp(48px,8vw,120px) var(--pad) 0}
.work__bar{display:grid;grid-template-columns:auto 1fr auto;align-items:end;gap:24px;padding-bottom:14px;border-bottom:1px solid var(--fg);margin-bottom:var(--gap);position:sticky;top:0;z-index:20;background:var(--bg);padding-top:56px}
.work__title{font-family:var(--cond);font-size:clamp(40px,7vw,112px);line-height:.8;text-transform:uppercase;letter-spacing:-.03em}
.filters{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.filters button{opacity:.45;transition:opacity .2s;padding:2px 0}
.filters button[aria-selected="true"],.filters button:hover{opacity:1}
.filters button sup{font-size:8px;margin-left:2px;letter-spacing:0}
.filters button[aria-selected="true"]{text-decoration:underline;text-underline-offset:4px}
.work__count{font-size:var(--small);font-weight:700;letter-spacing:.08em;color:var(--grey)}

.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap);grid-auto-flow:dense}
.tile{position:relative;cursor:zoom-in;outline:none;min-width:0}
.tile__media{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--tile)}
.tile--wide{grid-column:span 2}
.tile--wide .tile__media{aspect-ratio:8/5}
.tile--feature{grid-column:1/-1}
.tile--feature .tile__media{aspect-ratio:21/9}
.tile--tall .tile__media{aspect-ratio:9/16}
.tile__media img,.tile__media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1),opacity .6s}
.tile__media img[data-src],.tile__media video[data-src]{opacity:0}
.tile:hover .tile__media img,.tile:hover .tile__media video{transform:scale(1.035)}
.tile__hover{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:12px;background:linear-gradient(to top,rgba(0,0,0,.7),rgba(0,0,0,0) 55%);color:#fff;opacity:0;transition:opacity .35s;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.tile:hover .tile__hover,.tile:focus-visible .tile__hover{opacity:1}
.tile__hover b{font-family:var(--cond);font-size:clamp(18px,2vw,30px);line-height:.9;letter-spacing:-.01em;font-weight:700}
.tile--feature .tile__hover b{font-size:clamp(32px,6vw,96px)}
.tile__cap{display:flex;justify-content:space-between;gap:10px;padding:7px 0 14px;font-size:var(--small);font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.25}
.tile__cap span:last-child{color:var(--grey);white-space:nowrap}
.tile__badge{position:absolute;top:10px;left:10px;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:3px 6px;border:1px solid currentColor;color:#fff;mix-blend-mode:difference}
.tile.is-hidden{display:none}

/* Moving mosaic — the ordered grid drifts upward as one block (static grid is the fallback) */
.grid.is-marquee{display:block;height:clamp(2200px,450vh,5400px);height:clamp(2200px,450svh,5400px);overflow:hidden;overflow:clip;position:relative}
.grid.is-marquee .mcol{position:relative;height:100%;overflow:hidden;overflow:clip}
.grid.is-marquee .mtrack{will-change:transform;backface-visibility:hidden}
.grid.is-marquee .mset{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));grid-auto-rows:var(--rowH,420px);gap:var(--gap);padding-bottom:var(--gap)}
.grid.is-marquee .tile{height:100%;min-height:0}
.grid.is-marquee .tile .tile__media{aspect-ratio:auto;height:100%}
.grid.is-marquee .tile__cap{display:none}
/* hover caption: framed panel over the media, centred, follows the invert theme */
.grid.is-marquee .tile__hover{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:16px;background:rgba(var(--bg-rgb),.88);color:var(--fg);border:1px solid var(--fg);opacity:0;transition:opacity .3s}
.grid.is-marquee .tile__hover span{order:-1;font-size:var(--small);font-weight:700;letter-spacing:.08em;padding-bottom:6px;border-bottom:1px solid currentColor}
.grid.is-marquee .tile__hover b{font-size:clamp(22px,2.6vw,44px);line-height:.92;max-width:14ch}
.grid.is-marquee .tile--feature .tile__hover b{font-size:clamp(32px,5vw,80px)}
.grid.is-marquee .tile:hover .tile__hover,.grid.is-marquee .tile:focus-visible .tile__hover{opacity:1}
.grid.is-marquee .tile:hover .tile__media img,.grid.is-marquee .tile:hover .tile__media video{transform:scale(1.02)}
.grid.is-marquee .tile:focus-visible{outline:1px solid var(--fg);outline-offset:-1px}

/* About */
.about{padding:clamp(80px,12vw,200px) var(--pad);display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px) var(--pad);border-bottom:1px solid var(--fg)}
.about__lede{grid-column:1/-1;font-family:var(--cond);text-transform:uppercase;font-size:clamp(34px,5.6vw,96px);line-height:.92;letter-spacing:-.02em;max-width:18ch}
.services{list-style:none;columns:2;column-gap:var(--pad);counter-reset:s}
.services li{counter-increment:s;font-size:clamp(16px,1.6vw,22px);font-weight:700;letter-spacing:-.01em;padding:6px 0;border-top:1px solid var(--line);break-inside:avoid;display:flex;gap:12px}
.services li::before{content:counter(s,decimal-leading-zero);font-size:var(--small);color:var(--grey);padding-top:4px}
/* Crystal eye — translucent glass object (alpha from luminance), 3D tilt + moving sheen */
.crystal{margin:0 auto clamp(28px,3.5vw,56px);width:min(100%,540px);perspective:1100px}
.crystal__tilt{position:relative;transform-style:preserve-3d;will-change:transform;mix-blend-mode:screen}
.crystal img{display:block;width:100%;height:auto}
.crystal__sheen{position:absolute;inset:0;overflow:hidden;pointer-events:none;mix-blend-mode:screen;opacity:.9;
  -webkit-mask:url("assets/brand/crystal-eye.webp") center/100% 100% no-repeat;mask:url("assets/brand/crystal-eye.webp") center/100% 100% no-repeat}
.crystal__glint{position:absolute;left:-50%;top:-50%;width:200%;height:200%;will-change:transform;
  background:radial-gradient(closest-side at 50% 50%,rgba(255,255,255,.75),rgba(220,235,255,.25) 45%,rgba(255,255,255,0) 72%);transform:translate3d(-12%,-8%,0)}
:root[data-theme="light"] .crystal__tilt{mix-blend-mode:multiply}
:root[data-theme="light"] .crystal img{filter:invert(1) grayscale(.6) contrast(1.05)}
:root[data-theme="light"] .crystal__sheen{mix-blend-mode:multiply;opacity:.55}
:root[data-theme="light"] .crystal__glint{background:radial-gradient(closest-side at 50% 50%,rgba(0,0,0,.55),rgba(20,30,50,.2) 45%,rgba(0,0,0,0) 72%)}
.sectors{font-size:clamp(16px,1.6vw,22px);font-weight:700;line-height:1.35;letter-spacing:-.01em;text-transform:uppercase}

/* Contact */
.contact{padding:clamp(60px,10vw,160px) var(--pad)}
.contact__big{display:block;font-family:var(--cond);text-transform:uppercase;font-size:clamp(64px,15vw,300px);line-height:.8;letter-spacing:-.035em;margin-bottom:clamp(40px,6vw,90px);transition:opacity .3s}
.contact__big:hover{opacity:.6}
.contact__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--pad);font-size:13px;line-height:1.45}
.contact__grid a{border-bottom:1px solid transparent}
.contact__grid a:hover{border-color:currentColor}

/* Cómo llegar (map) */
.map{padding:0 var(--pad) var(--pad);border-top:1px solid var(--fg)}
.map__head{display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:clamp(16px,3vw,48px);padding:clamp(28px,4vw,56px) 0 clamp(16px,2vw,24px)}
.map__title{font-family:var(--cond);font-size:clamp(40px,7vw,112px);line-height:.8;text-transform:uppercase;letter-spacing:-.03em;font-weight:700}
.map__addr{font-style:normal;font-size:13px;line-height:1.45}
.map__btn{display:inline-flex;align-items:center;gap:10px;padding:12px 18px;border:1px solid var(--fg);font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;transition:background-color .25s,color .25s}
.map__btn:hover,.map__btn:focus-visible{background:var(--fg);color:var(--bg)}
.map__frame{position:relative;height:clamp(320px,42vw,600px);background:var(--tile);border:1px solid var(--line);overflow:hidden}
.map__frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) invert(.92) contrast(.9);transition:filter var(--theme-ease)}
:root[data-theme="light"] .map__frame iframe{filter:grayscale(1) contrast(1.05)}

/* WhatsApp floating button — follows the invert theme; double ring keeps it visible over any background */
.wa{position:fixed;right:max(var(--pad),env(safe-area-inset-right));bottom:max(var(--pad),env(safe-area-inset-bottom));z-index:60;width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--fg);color:var(--bg);border:1px solid var(--bg);box-shadow:0 0 0 1px var(--fg);transition:transform .3s cubic-bezier(.2,.7,.2,1),background-color .25s,color .25s,opacity .25s,visibility .25s}
.wa:hover{transform:scale(1.06);background:var(--bg);color:var(--fg)}
.wa:focus-visible{outline:1px solid var(--fg);outline-offset:4px}
body.lb-open .wa{opacity:0;visibility:hidden;pointer-events:none}
.ftr__row{padding-right:68px} /* keep "Top ↑" clear of the floating WhatsApp button */
@media (max-width:760px){.wa{width:48px;height:48px}.wa svg{width:20px;height:20px}.ftr__row{padding-right:60px}}

/* Footer */
.ftr{background:var(--fg);color:var(--bg);padding:var(--pad);overflow:hidden}
.ftr__word{font-family:var(--cond);text-transform:uppercase;font-size:30vw;line-height:.74;letter-spacing:-.04em;text-align:center;white-space:nowrap;overflow:hidden;padding-top:.04em}
.ftr__shape{font-family:var(--cond);font-weight:700;text-transform:uppercase;font-size:9vw;line-height:.8;letter-spacing:-.035em;text-align:center;white-space:nowrap;overflow:hidden;padding-top:.06em}
.ftr__shape-in{display:inline-flex;align-items:baseline;justify-content:center;gap:.2em}
.ftr__cyc{display:inline-grid;justify-items:start;align-items:baseline;overflow:hidden;line-height:.86;padding-top:.07em;margin-top:-.07em}
.ftr__w{grid-area:1/1;display:block;transform:translateY(112%);transition:none;will-change:transform}
.ftr__w.is-active{transform:none;transition:transform .85s cubic-bezier(.76,0,.24,1)}
.ftr__w.is-leaving{transform:translateY(-112%);transition:transform .85s cubic-bezier(.76,0,.24,1)}
@media (max-width:760px){
  .ftr__shape-in{flex-direction:column;align-items:center;gap:.04em}
  .ftr__cyc{justify-items:center}
}
@media (prefers-reduced-motion:reduce){.ftr__w{transform:translateY(112%)!important;transition:none!important}.ftr__w.is-active{transform:none!important}}
.ftr__row{display:flex;justify-content:space-between;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding-top:14px;border-top:1px solid currentColor;margin-top:12px}

/* Lightbox */
.lb{position:fixed;inset:0;z-index:100;background:var(--bg);color:var(--fg);display:flex;align-items:center;justify-content:center}
.lb[hidden]{display:none}
.lb__stage{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:56px var(--pad) 64px}
.lb__stage img,.lb__stage video{max-width:100%;max-height:100%;object-fit:contain}
.lb__stage iframe{width:min(100%,calc((100vh - 120px)*16/9));aspect-ratio:16/9;border:0}
.lb__cap{position:absolute;left:var(--pad);right:var(--pad);bottom:18px;display:flex;justify-content:space-between;gap:16px;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.lb__btn{position:absolute;font-size:var(--small);font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:16px var(--pad)}
.lb__close{top:0;right:0}
.lb__prev{left:0;top:0;bottom:0;width:22%;text-align:left;cursor:w-resize;opacity:0}
.lb__next{right:0;top:56px;bottom:56px;width:22%;text-align:right;cursor:e-resize;opacity:0}
.lb__prev:hover,.lb__next:hover,.lb__prev:focus-visible,.lb__next:focus-visible{opacity:1}
body.lb-open{overflow:hidden}

/* Theme switch transition */
html.theme-anim,html.theme-anim body,html.theme-anim *:not(img):not(video):not(iframe),html.theme-anim *::before,html.theme-anim *::after{
  transition:background-color var(--theme-ease),color var(--theme-ease),border-color var(--theme-ease),outline-color var(--theme-ease),background-image var(--theme-ease)!important}
html.theme-anim .tile__media img,html.theme-anim .tile__media video{transition:none!important}

@media (max-width:1100px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.contact__grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){
  .hdr{grid-template-columns:auto 1fr;gap:12px}
  .hdr__nav{justify-content:flex-end;gap:12px}
  .hdr__nav a:nth-child(n+3):not([href="#contact"]){display:none}
  .hdr__cta{display:none}
  .hdr{grid-template-columns:auto 1fr auto}
  .theme-toggle__txt{display:none}
  .lang{gap:4px}
  .hdr__end{gap:12px}
  .theme-toggle{padding:6px 0 6px 4px}
  .theme-toggle__dot{width:14px;height:14px}
  .hero__meta span:nth-child(2){display:none}
  .hero__word{flex-direction:column;align-items:center;gap:0;font-size:22vw;line-height:.8}
  .hero__tag{display:none}
  .work__bar{grid-template-columns:1fr auto;padding-top:52px}
  .filters{grid-column:1/-1;grid-row:2;overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tile--wide{grid-column:1/-1}
  .tile--feature .tile__media{aspect-ratio:16/9}
  .tile__hover{display:none}
  .grid.is-marquee{height:420vh;height:420svh;min-height:2200px}
  .grid.is-marquee .tile__hover{display:none}
  .about{grid-template-columns:1fr}
  .services{columns:1}
  .contact__grid{grid-template-columns:1fr 1fr}
  .map__head{grid-template-columns:1fr 1fr;align-items:start}
  .map__title{grid-column:1/-1}
  .map__btn{align-self:end;justify-self:end}
  .map__frame{height:380px}
  .lb__prev,.lb__next{opacity:1;top:auto;bottom:40px;height:auto;width:auto}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.cap-label{display:none}
@media (max-width:760px){.cap-idx{display:none}.cap-label{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

.lb__link{color:inherit;text-decoration:underline;text-underline-offset:3px}
.lb__link:hover{opacity:.7}
.about__seo{grid-column:1/-1;max-width:62ch;font-size:clamp(14px,1.1vw,17px);line-height:1.5;color:var(--grey);margin-top:clamp(8px,1vw,16px)}
