/* Jorge Romano — jorgeromano.com.mx
   Hoja única del sitio estático. Tokens del design system + fuentes locales +
   estilos de página. Generada desde templates/landing-editorial (canon). */

/* ---------- Fuentes (locales, subset latin) ---------- */
@font-face{font-family:"Big Shoulders Display";font-style:normal;font-weight:700 900;font-display:swap;src:url("../fonts/big-shoulders-display-var-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Onest";font-style:normal;font-weight:400 600;font-display:swap;src:url("../fonts/onest-var-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-400-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("../fonts/ibm-plex-mono-500-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* ---------- tokens/colors.css ---------- */
:root{
/* Base — burnt orange ramp */
--orange-100:#fff1e6;
--orange-400:#f48c06;
--orange-500:#e85d04;
--orange-600:#c2410c;
--orange-deep:#9a3412;
/* Base — ink / paper */
--ink:#0b0b0b;
--ink-muted:#5c5c5c;
--paper:#ffffff;
--paper-soft:#f7f7f5;
--paper-warm:#f4f2ef;
--line:#e8e8e4;
--stage:#0b0b0b;
--stage-elevated:#161616;

/* Gradient-only stops — NEVER used as flat fills, borders or type colours.
   They exist so gradients can travel in hue the way the reference sites do. */
--teal-ink:#0b2b33;
--teal-deep:#0e3a45;
--ember-red:#b03a16;
--ember-plum:#6e1b2a;
--ember-black:#2a0a12;

/* On-gradient text — solid values, never alpha-muted, so copy stays legible
   at 4.5:1 over every stop of the meshes in effects.css. */
--text-on-gradient:#ffffff;
--text-on-gradient-body:#f1ece8;
--text-on-gradient-meta:#ffd9b8;

/* Semantic aliases — light mode defaults (see modes.css for dark / orange-field) */
--accent:var(--orange-500);
--accent-hover:var(--orange-600);
--accent-quiet:var(--orange-100);
--text-body:var(--ink);
--text-muted:var(--ink-muted);
--text-display:var(--ink);
--text-on-accent:var(--paper);
--surface-page:var(--paper);
--surface-card:var(--paper-soft);
--surface-sunken:var(--paper-warm);
--border-hairline:var(--line);
--border-strong:var(--ink);
--focus-ring:var(--orange-500);
}

/* ---------- tokens/typography.css ---------- */
:root{
/* Families */
--font-display:"Big Shoulders Display",system-ui,sans-serif;
--font-body:"Onest",system-ui,sans-serif;
--font-mono:"IBM Plex Mono",ui-monospace,monospace;

/* Weights */
--weight-display:800;
--weight-display-max:900;
--weight-display-min:700;
--weight-body:400;
--weight-body-medium:500;
--weight-body-semibold:600;
--weight-body-bold:700;

/* Scale */
--text-h1:clamp(2.75rem,6vw,4rem);
--text-h2:clamp(1.75rem,3vw,2.5rem);
--text-h3:1.5rem;
--text-base:1.125rem;
--text-small:0.875rem;
--text-meta:0.75rem;

/* Leading / tracking */
--leading-display:1.05;
--leading-body:1.55;
--tracking-display:-0.02em;
--tracking-meta:0.08em;
}

/* Utility classes shipped by the source system */
.font-display{font-family:var(--font-display);font-weight:var(--weight-display);letter-spacing:var(--tracking-display);line-height:var(--leading-display)}
.font-display-upper{font-family:var(--font-display);font-weight:var(--weight-display);text-transform:uppercase;letter-spacing:var(--tracking-display);line-height:var(--leading-display)}
.font-body{font-family:var(--font-body);font-weight:var(--weight-body);line-height:var(--leading-body)}
.font-meta{font-family:var(--font-mono);font-weight:500;font-size:var(--text-meta);text-transform:uppercase;letter-spacing:var(--tracking-meta)}
.logo-wordmark{font-family:var(--font-display);font-weight:var(--weight-display);text-transform:uppercase;letter-spacing:var(--tracking-display)}
.logo-wordmark .period{color:var(--orange-500)}

/* ---------- tokens/spacing.css ---------- */
:root{
/* Base unit 8px */
--space:8px;
--space-1:8px;
--space-2:16px;
--space-3:24px;
--space-4:32px;
--space-5:40px;
--space-6:48px;
--space-8:64px;
--space-10:80px;
--space-12:96px;
--space-16:128px;

/* Rhythm aliases */
--gap-inline:12px;
--gap-stack:24px;
--section-y:var(--space-16);
--section-y-tight:var(--space-10);
--container:1160px;
--container-narrow:720px;

/* Radii */
--radius-sm:8px;
--radius-md:12px;
--radius-lg:20px;
--radius-pill:999px;
}

/* ---------- tokens/effects.css ---------- */
:root{
/* Gradients (locked) */
--grad-dark-hero:radial-gradient(ellipse at 30% 20%,#e85d04 0%,#9a3412 35%,#0b0b0b 70%); /* @kind color */
--grad-orange-field:linear-gradient(135deg,#e85d04 0%,#c2410c 50%,#9a3412 100%); /* @kind color */
--grad-protect-bottom:linear-gradient(to top,rgba(11,11,11,.85) 0%,rgba(11,11,11,0) 70%); /* @kind color */

/* Rich gradient system (added 2026-09-15) — deep, multi-stop, cinematic.
   These replace flat dark fields as the default hero ground. */
--grad-gel:linear-gradient(160deg,#fbb040 0%,#f48c06 20%,#e85d04 44%,#b03a16 64%,#6e1b2a 84%,#2a0a12 100%); /* @kind color */
--grad-cinematic:radial-gradient(78% 68% at 0% 100%,#f4720a 0%,#b03a16 28%,rgba(176,58,22,0) 66%),radial-gradient(92% 78% at 3% 0%,#1a6276 0%,#0e3a45 36%,rgba(14,58,69,0) 72%),radial-gradient(140% 140% at 94% 42%,#121212 20%,#0b0b0b 100%); /* @kind color */
--grad-stage:radial-gradient(120% 95% at 50% -8%,#3a1a0a 0%,rgba(58,26,10,.55) 32%,rgba(58,26,10,0) 62%),#0b0b0b; /* @kind color */
--grad-ember-glow:radial-gradient(60% 60% at 50% 50%,rgba(232,93,4,.55) 0%,rgba(232,93,4,0) 70%); /* @kind color */

/* Protection gradients — legibility over photography. Capsules and frosted
   glass are still rejected; these are the only scrims. */
--grad-protect-strong:linear-gradient(to top,rgba(11,11,11,.94) 0%,rgba(11,11,11,.58) 34%,rgba(11,11,11,0) 76%); /* @kind color */
--grad-protect-left:linear-gradient(to right,rgba(11,11,11,.9) 0%,rgba(11,11,11,.35) 38%,rgba(11,11,11,0) 70%); /* @kind color */
--grad-gel-photo:linear-gradient(200deg,rgba(232,93,4,.42) 0%,rgba(11,11,11,0) 42%,rgba(14,58,69,.5) 100%); /* @kind color */

/* Film grain — fine, desaturated, tiled 1:1 so it reads as photographic warmth
   rather than digital noise. Never stretch the tile; always blend, never stack
   a flat grey veil. Overlay on gradient grounds only, never over type or UI. */
--texture-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); /* @kind other */
--grain-tile:130px; /* @kind other */
--grain-opacity:0.05; /* @kind other */
--grain-blend:overlay; /* @kind other */

/* Shadows — restrained; the system leans on hairlines and flat fields */
--shadow-card:0 1px 2px rgba(11,11,11,.04),0 8px 24px rgba(11,11,11,.06);
--shadow-lift:0 2px 4px rgba(11,11,11,.06),0 16px 40px rgba(11,11,11,.10);
--shadow-inset-hairline:inset 0 0 0 1px var(--border-hairline);

/* Motion */
--ease-standard:cubic-bezier(.2,.6,.2,1); /* @kind other */
--ease-exit:cubic-bezier(.4,0,1,1); /* @kind other */
--dur-fast:120ms; /* @kind other */
--dur-base:200ms; /* @kind other */
--dur-slow:420ms; /* @kind other */
}

/* Grain overlay — add as an aria-hidden first child of a gradient ground. */
.grain-overlay{position:absolute;inset:0;pointer-events:none;background-image:var(--texture-grain);background-size:var(--grain-tile) var(--grain-tile);opacity:var(--grain-opacity);mix-blend-mode:var(--grain-blend)}

/* ---------- tokens/modes.css ---------- */
/* Section modes — set data-mode on a section wrapper and mix down the page.
   Rule: white or black owns ~80% of the layout. Orange is a spark or ONE field block. */

[data-mode="light"]{
--bg:var(--paper);
--fg:var(--ink);
--fg-muted:var(--ink-muted);
--accent:var(--orange-500);
--accent-hover:var(--orange-600);
--surface:var(--paper-soft);
--border:var(--line);
--text-body:var(--ink);
--text-muted:var(--ink-muted);
--text-display:var(--ink);
--surface-page:var(--paper);
--surface-card:var(--paper-soft);
--border-hairline:var(--line);
--border-strong:var(--ink);
}

[data-mode="dark"]{
--bg:var(--stage);
--fg:#ffffff;
--fg-muted:#a3a3a3;
--accent:var(--orange-400);
--accent-hover:var(--orange-500);
--surface:var(--stage-elevated);
--border:#2a2a2a;
--text-body:#ffffff;
--text-muted:#a3a3a3;
--text-display:#ffffff;
--surface-page:var(--stage);
--surface-card:var(--stage-elevated);
--border-hairline:#2a2a2a;
--border-strong:#ffffff;
--focus-ring:var(--orange-400);
}

[data-mode="orange-field"]{
--bg:var(--orange-500);
--fg:var(--ink);
--fg-muted:#3f2a1a;
--accent:var(--paper);
--accent-hover:var(--orange-100);
--surface:var(--orange-600);
--border:var(--orange-deep);
--text-body:var(--ink);
--text-muted:#3f2a1a;
--text-display:var(--ink);
--surface-page:var(--orange-500);
--surface-card:var(--orange-600);
--border-hairline:var(--orange-deep);
--border-strong:var(--ink);
--focus-ring:var(--ink);
}

:root{--bg:var(--paper);--fg:var(--ink);--fg-muted:var(--ink-muted);--surface:var(--paper-soft);--border:var(--line)}

[data-mode]{background:var(--bg);color:var(--fg)}
[data-mode="dark"],[data-mode="orange-field"]{position:relative}

/* Links — defined here so authored pages never fall back to browser blue */
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--accent-hover)}
[data-mode="orange-field"] a{color:var(--ink);text-decoration-color:var(--ink)}
[data-mode="orange-field"] a:hover{color:var(--paper)}


/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:#0b0b0b;color:#fff;font-family:var(--font-body);overflow-x:hidden;-webkit-font-smoothing:antialiased}
main{position:relative;width:100%;max-width:100%;overflow-x:clip}
img{display:block;max-width:100%}
a{color:inherit}
:focus-visible{outline:2px solid #f48c06;outline-offset:3px}
.skip{position:absolute;left:16px;top:-64px;z-index:100;padding:12px 18px;border-radius:999px;background:#e85d04;color:#fff;font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;text-decoration:none;transition:top 200ms var(--ease-standard)}
.skip:focus{top:16px}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

@keyframes jr-marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes jr-cue{0%,100%{transform:translateY(0);opacity:.45}50%{transform:translateY(8px);opacity:1}}

/* ---------- Tipos de texto ---------- */
.display{font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.025em;line-height:1.02;color:#fff;margin:0}
.meta{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em}
.period{color:#f48c06}

/* ---------- Botón pill (canon §6) ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:12px;overflow:hidden;isolation:isolate;font-weight:600;font-size:1.0625rem;line-height:1;padding:19px 40px;border-radius:999px;text-decoration:none;white-space:nowrap;cursor:pointer}
.btn-sweep{position:absolute;inset:0;z-index:0;border-radius:999px;transform:scaleX(0);transform-origin:left center}
.btn-label,.btn-arrow{position:relative;z-index:1}
.btn-arrow{display:inline-block}
/* Blanco sobre #e85d04 da 3.5:1: a 19px/700 cuenta como texto grande (AA ≥ 3:1). */
.btn-primary{background:#e85d04;color:#fff;border:1.5px solid #e85d04;font-size:1.1875rem;font-weight:700}
.btn-primary .btn-sweep{background:#0b0b0b}
.btn-ink{background:#0b0b0b;color:#fff;border:1.5px solid #0b0b0b;padding:20px 44px}
.btn-ink .btn-sweep{background:#fff}
.btn-nav{gap:9px;padding:13px 26px;background:#fff;color:#0b0b0b;font-family:var(--font-mono);font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.13em;border:0}
.btn-nav .btn-sweep{background:#f48c06}

/* ---------- Nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;gap:24px;align-items:center;padding:clamp(34px,4.2vw,58px) clamp(20px,4vw,56px);border-bottom:1px solid rgba(255,255,255,0)}
.nav-bg{position:absolute;inset:0;pointer-events:none;background:rgba(11,11,11,.92);opacity:0}
.wordmark{position:relative;font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:1;font-size:1.375rem;color:#fff;text-decoration:none;white-space:nowrap}
.nav-links{position:relative;margin-left:auto;display:flex;gap:clamp(18px,2.4vw,34px);align-items:center}
.nav-ind{position:absolute;left:0;bottom:-9px;width:0;height:2px;background:#f48c06;opacity:0;pointer-events:none}
.nav-link{position:relative;font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.14em;color:#fff;text-decoration:none;white-space:nowrap;opacity:.7}
.nav-toggle{display:none;position:relative;margin-left:auto;width:44px;height:44px;padding:0;border:0;border-radius:999px;background:transparent;color:#fff;cursor:pointer}
.nav-toggle span{position:absolute;left:12px;right:12px;height:2px;background:currentColor;transition:transform 300ms var(--ease-standard),opacity 200ms var(--ease-standard)}
.nav-toggle span:nth-child(1){top:16px}
.nav-toggle span:nth-child(2){top:22px}
.nav-toggle span:nth-child(3){top:28px}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* Menú móvil: panel de tinta sólida, sin blur (canon §8). */
.menu{position:fixed;inset:0;z-index:45;display:flex;flex-direction:column;justify-content:flex-end;gap:32px;padding:120px clamp(20px,6vw,40px) clamp(32px,6vh,56px);background:#0b0b0b;opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity 320ms var(--ease-standard),transform 320ms var(--ease-standard),visibility 0s linear 320ms}
.menu[data-open="true"]{opacity:1;visibility:visible;transform:none;transition-delay:0s}
.menu-links{display:flex;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none}
.menu-link{display:block;padding:14px 0;border-bottom:1px solid #2a2a2a;font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:1;font-size:clamp(2.25rem,11vw,3.5rem);color:#fff;text-decoration:none}
.menu-link:hover,.menu-link:focus-visible{color:#f48c06}
.menu-foot{display:flex;flex-direction:column;gap:20px;align-items:flex-start}
.menu-mail{font-family:var(--font-mono);font-size:.8125rem;letter-spacing:.06em;color:#f1ece8;text-decoration:none}
.menu-mail:hover{color:#f48c06}
body[data-menu-open="true"]{overflow:hidden}

@media (max-width:900px){
  .nav{gap:16px;padding:22px clamp(20px,4vw,56px)}
  .nav-links{display:none}
  .nav-toggle{display:block}
}

/* ---------- Hero ---------- */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:clamp(140px,16vh,200px) clamp(20px,4vw,56px) clamp(80px,10vh,120px);overflow:hidden}
.hero-photo{position:absolute;inset:0;z-index:0}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 38%}
.hero-scrim{position:absolute;inset:0;z-index:1;pointer-events:none}
.hero-inner{position:relative;z-index:2;width:100%;max-width:1180px;margin:0 auto;text-align:center}
.h1{font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.028em;line-height:1.22;font-size:clamp(2.75rem,6.4vw,6.25rem);color:#fff;margin:0}
.tilde-host{position:relative;display:inline-block}
.tilde{position:absolute;left:50%;bottom:1.10em;width:.54em;height:.19em;transform:translate(-50%,7px);display:flex;align-items:flex-end;justify-content:space-between;gap:.024em;opacity:0}
.tilde-bar{flex:1 1 0;border-radius:2px;background:currentColor;transform:scaleY(0);transform-origin:center bottom}
.hero-lede{font-size:clamp(1.0625rem,1.5vw,1.375rem);font-weight:500;line-height:1.5;color:#f1ece8;margin:clamp(26px,3vw,38px) auto 0;max-width:62ch;text-wrap:pretty}
.hero-roles{font-family:var(--font-mono);font-size:clamp(.6875rem,.95vw,.8125rem);line-height:1.8;text-transform:uppercase;letter-spacing:.14em;color:#ffd9b8;margin:clamp(22px,2.4vw,30px) auto 0;max-width:56ch}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:clamp(34px,4vw,48px)}
.hero-cue{position:absolute;z-index:2;left:50%;bottom:clamp(26px,4vh,44px);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px;text-decoration:none}
.hero-cue-arrow{display:block;font-size:1rem;color:#f48c06;animation:jr-cue 1.9s var(--ease-standard) infinite}
/* Entrada del hero (canon: stagger-rise 42px, 900ms, escalonado 120ms). Va en CSS y
   no en el motor para que el H1 pinte en el primer frame y no espere al JS (LCP). */
@keyframes jr-rise{from{opacity:0;transform:translateY(42px)}to{opacity:1;transform:none}}
.hero-line{animation:jr-rise 900ms var(--ease-standard) both}
.hero-inner>.hero-line:nth-child(1){animation-delay:120ms}
.hero-inner>.hero-line:nth-child(2){animation-delay:240ms}
.hero-inner>.hero-line:nth-child(3){animation-delay:360ms}
.hero-inner>.hero-line:nth-child(4){animation-delay:480ms}
@media (max-width:900px){.hero{padding-top:120px;padding-bottom:110px}.hero-cue{display:none}}

/* ---------- Rail de logos (banda de papel) ---------- */
.clients{position:relative;z-index:2;background:#f4f2ef;padding:clamp(52px,7vw,84px) 0;overflow:hidden}
.clients-eyebrow{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.16em;color:#5c5c5c;margin:0 0 clamp(30px,4vw,44px);text-align:center;padding:0 20px}
.rail-wrap{position:relative;overflow:hidden;white-space:nowrap}
.rail-fade{position:absolute;top:0;bottom:0;z-index:2;width:clamp(48px,10vw,140px);pointer-events:none}
.rail-fade-l{left:0;background:linear-gradient(to right,#f4f2ef 0%,rgba(244,242,239,0) 100%)}
.rail-fade-r{right:0;background:linear-gradient(to left,#f4f2ef 0%,rgba(244,242,239,0) 100%)}
.logo-rail{--lh:clamp(38px,5vw,62px);display:inline-flex;align-items:center;gap:clamp(44px,6vw,92px);padding:0 clamp(44px,6vw,92px) 0 0;margin:0;list-style:none;animation:jr-marq 46s linear infinite;will-change:transform}

.logo-rail img{display:block;height:calc(var(--lh) * var(--m,1));width:auto;max-width:none;opacity:.62;filter:grayscale(1);transition:opacity 260ms var(--ease-standard)}
.logo-rail img:hover{opacity:1}

/* ---------- Identidad ---------- */
.identity{position:relative;z-index:2;background:#0b0b0b;padding:clamp(88px,12vw,170px) clamp(20px,4vw,56px) clamp(48px,6vw,80px)}
.glow{position:absolute;pointer-events:none;background:var(--grad-ember-glow)}
.container-1180{position:relative;max-width:1180px;margin:0 auto}
.container-1280{position:relative;max-width:1280px;margin:0 auto}
.h2-xl{font-size:clamp(2.5rem,7vw,5.5rem)}
.h2{font-size:clamp(2.25rem,5vw,4.25rem)}
.manifesto{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.02em;line-height:1.12;font-size:clamp(1.5rem,3.4vw,2.875rem);color:#fff;margin:clamp(34px,4vw,56px) 0 0;text-wrap:balance}
.identity-body{font-size:clamp(1.0625rem,1.4vw,1.25rem);line-height:1.6;color:#f1ece8;margin:clamp(30px,3.4vw,44px) 0 0;max-width:62ch;text-wrap:pretty}

/* ---------- Quién es + galería ---------- */
.about{position:relative;z-index:2;background:#0b0b0b;padding:clamp(40px,5vw,64px) clamp(20px,4vw,56px) clamp(88px,12vw,150px)}
.rule{display:block;height:1px;background:#2a2a2a}
.about-head{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:clamp(20px,3vw,48px);align-items:end;padding-top:clamp(28px,3vw,44px);padding-bottom:clamp(24px,2.8vw,38px)}
.about-roles{font-family:var(--font-mono);font-size:.75rem;line-height:1.9;text-transform:uppercase;letter-spacing:.14em;color:#ffd9b8;margin:0;max-width:40ch}
.about-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:clamp(34px,4.4vw,72px);margin-top:clamp(34px,4vw,56px)}
.cursor-label{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:999px;background:#e85d04;color:#fff;font-family:var(--font-mono);font-size:.625rem;text-transform:uppercase;letter-spacing:.16em;white-space:nowrap}
.gal-frame{position:relative;overflow:hidden;border-radius:18px}
.gal-fade{position:absolute;top:0;bottom:0;z-index:2;width:clamp(28px,5vw,72px);pointer-events:none}
.gal-fade-l{left:0;background:linear-gradient(to right,#0b0b0b 0%,rgba(11,11,11,0) 100%)}
.gal-fade-r{right:0;background:linear-gradient(to left,#0b0b0b 0%,rgba(11,11,11,0) 100%)}
.gal-rail{display:flex;gap:10px;height:clamp(210px,26vw,320px);width:max-content;animation:jr-marq 90s linear infinite;will-change:transform}
.gal-item{position:relative;flex:0 0 auto;height:100%;padding:0;border:0;border-radius:16px;overflow:hidden;background:#101010;cursor:zoom-in;transition:transform 520ms var(--ease-standard);color:inherit;font:inherit}
.gal-item:hover{transform:scale(1.035)}
.gal-item:focus-visible{outline-offset:-3px}
.gal-item img{width:100%;height:100%;object-fit:cover}
.gal-n{width:clamp(124px,15.4vw,200px)}
.gal-w{width:clamp(198px,24.6vw,320px)}
.gal-foot{display:flex;flex-wrap:wrap;gap:16px;align-items:baseline;justify-content:space-between;padding-top:14px}
.gal-foot p{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.14em;color:#a3a3a3;margin:0}
.bio{max-width:58ch}
.bio-lead{font-size:clamp(1.125rem,1.7vw,1.5rem);font-weight:500;line-height:1.5;color:#fff;margin:0;text-wrap:pretty}
.bio-more{font-size:1.0625rem;line-height:1.6;color:#f1ece8;margin:clamp(20px,2.4vw,28px) 0 0}
.bio-meta{font-family:var(--font-mono);font-size:.8125rem;line-height:1.9;text-transform:uppercase;letter-spacing:.1em;color:#f48c06;margin:clamp(22px,2.6vw,32px) 0 0}

/* ---------- Contacto (cierre gel) ---------- */
.contact{position:relative;z-index:2;background:var(--grad-gel);padding:clamp(96px,14vw,200px) clamp(20px,4vw,56px)}
.contact-h{letter-spacing:-.03em;line-height:.98;font-size:clamp(2.5rem,8vw,6.5rem)}
.contact-p{font-family:var(--font-mono);font-size:.875rem;line-height:1.9;color:#fff;margin:clamp(24px,3vw,36px) auto 0;max-width:52ch}
.contact-cta{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:clamp(32px,4vw,48px)}

/* ---------- Footer ---------- */
.footer{position:relative;z-index:2;background:#0b0b0b;padding:clamp(48px,6vw,80px) clamp(20px,4vw,56px) 40px}
.footer-grid{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:clamp(28px,4vw,56px);align-items:start}
.footer-wordmark{font-family:var(--font-display);font-weight:900;text-transform:uppercase;letter-spacing:-.02em;line-height:1;font-size:1.5rem;color:#fff}
.footer-tag{font-family:var(--font-mono);font-size:.6875rem;line-height:1.9;text-transform:uppercase;letter-spacing:.12em;color:#a3a3a3;margin:16px 0 0;max-width:30ch}
.footer-col{display:flex;flex-direction:column;gap:12px;margin:0;padding:0;list-style:none}
.footer-link{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:#f1ece8;text-decoration:none;transition:color 200ms var(--ease-standard)}
.footer-link.mail{text-transform:none;letter-spacing:.06em}
.footer-link:hover{color:#f48c06}
.footer-bottom{max-width:1280px;margin:clamp(40px,5vw,64px) auto 0;padding-top:26px;border-top:1px solid #2a2a2a;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between}
.footer-bottom p{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.13em;color:#a3a3a3;margin:0}

/* ---------- Lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:90;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:clamp(18px,4vw,56px);border:0;background:rgba(11,11,11,.96);color:#fff;cursor:zoom-out}
.lightbox::backdrop{background:transparent}
.lightbox[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(16px,2.4vw,26px)}
.lightbox img{max-width:min(100%,1180px);max-height:74vh;width:auto;height:auto;object-fit:contain;border-radius:10px;cursor:default}
.lightbox-bar{display:flex;flex-wrap:wrap;gap:clamp(14px,2vw,26px);align-items:center;justify-content:center}
.lightbox-btn{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:999px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.3);color:#fff;font-family:var(--font-body);font-size:1.125rem;line-height:1;cursor:pointer;padding:0;transition:background 200ms var(--ease-standard),border-color 200ms var(--ease-standard)}
.lightbox-btn:hover{background:#e85d04;border-color:#e85d04}
.lightbox-cap{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.14em;color:#fff;margin:0;min-width:16ch;text-align:center}
.lightbox-count{font-family:var(--font-mono);font-size:.6875rem;text-transform:uppercase;letter-spacing:.14em;color:#a3a3a3;margin:0}
.lightbox-close{position:absolute;top:clamp(14px,3vw,28px);right:clamp(14px,3vw,28px)}

/* ---------- Movimiento reducido ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .logo-rail,.gal-rail{animation:none}
  .hero-cue-arrow{animation:none}
  .tilde{opacity:1;transform:translate(-50%,0)}
  .tilde-bar{transform:scaleY(1)}
  .gal-item,.menu,.btn-sweep{transition:none}
  .hero-line{animation:none}
}

/* ---------- Ajustes de <picture> ---------- */
.hero-photo picture,.gal-item picture{display:block;width:100%;height:100%}
.logo-rail{padding-right:clamp(44px,6vw,92px)}
