:root {
  --ink: #080c0c;
  --forest: #111111;
  --forest-light: #262626;
  --yellow: #f1f1ed;
  --yellow-soft: #ffffff;
  --accent: #ffd21a;
  --cream: #f5f5f2;
  --muted: #9b9b98;
  --line: rgba(255, 255, 255, 0.16);
  --topo: #c8c8c3;
  --mono: "DM Mono", monospace;
  --display: "Barlow Condensed", sans-serif;
  --body: "Manrope", sans-serif;
}

body.light { --ink: #f2f2ee; --forest: #deded9; --forest-light: #c9c9c3; --yellow: #111111; --yellow-soft: #2d2d2d; --accent: #c89500; --cream: #111111; --muted: #656561; --line: rgba(17, 17, 17, 0.17); --topo: #6c6c67; }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--cream); background: var(--ink); font-family: var(--body); }
a { color: inherit; text-decoration: none; }
.page { overflow: hidden; }
.topbar { align-items: center; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; min-height: 76px; padding: 14px max(22px, calc((100% - 1220px) / 2)); position: relative; z-index: 3; }
.brand { align-items: center; display: flex; gap: 13px; }
.brand-mark { height: 45px; object-fit: contain; width: 45px; }
.brand-copy { display: grid; gap: 1px; }
.brand-name { font-size: 17px; font-weight: 800; letter-spacing: 0.02em; }
.brand-sub { color: var(--accent); font-family: var(--mono); font-size: 9px; letter-spacing: 0.15em; text-transform: uppercase; }
.nav { align-items: center; display: flex; gap: 28px; }
.menu-toggle { background: transparent; border: 1px solid var(--line); cursor: pointer; display: none; flex-direction: column; gap: 4px; padding: 10px; }
.menu-toggle span { background: var(--cream); display: block; height: 2px; transition: transform 180ms ease; width: 22px; }
.menu-toggle[aria-expanded="true"] span:first-child { transform: translateY(6px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] span:last-child { transform: translateY(-6px) rotate(-45deg); }
.nav a { color: var(--muted); font-size: 13px; font-weight: 600; transition: color 180ms ease; }
.nav a:hover { color: var(--cream); }
.instagram-link { align-items: center; color: var(--muted); display: inline-flex; gap: 7px; transition: color 180ms ease; }
.instagram-link:hover { color: var(--accent); }
.instagram-link svg { fill: none; height: 19px; stroke: currentColor; stroke-width: 1.7; width: 19px; }
.instagram-link .instagram-dot { fill: currentColor; stroke: none; }
.theme-toggle { background: transparent; border: 1px solid var(--line); color: var(--cream); cursor: pointer; font-family: var(--mono); font-size: 10px; letter-spacing: .1em; padding: 10px 13px; text-transform: uppercase; }
.hero { isolation: isolate; min-height: min(650px, calc(100vh - 76px)); padding: clamp(58px, 8vh, 92px) clamp(22px, 8vw, 126px) 52px; position: relative; }
.hero-inner { margin: auto; max-width: 1220px; min-height: 540px; position: relative; }
.hero::before { background: radial-gradient(circle at 76% 35%, rgba(255, 255, 255, .09), transparent 31%), linear-gradient(180deg, rgba(8, 8, 8, .08), var(--ink) 93%); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: -1; }
.topography { inset: 0; opacity: .7; pointer-events: none; position: absolute; z-index: -2; }
.topography g { stroke: var(--topo); }
body.light .topography { opacity: .95; }
.topography svg { height: 100%; width: 100%; }
.mountains { bottom: 0; left: 0; position: absolute; right: 0; z-index: -1; }
.mountains svg { display: block; height: auto; width: 100%; }
.eyebrow { align-items: center; color: var(--yellow); display: flex; font-family: var(--mono); font-size: 12px; gap: 12px; letter-spacing: .16em; text-transform: uppercase; }
.eyebrow::before { background: var(--yellow); content: ""; height: 1px; width: 38px; }
h1 { font-family: var(--display); font-size: clamp(4.5rem, 11vw, 10.5rem); font-weight: 900; letter-spacing: .015em; line-height: .9; margin: 25px 0 25px; max-width: 850px; text-transform: uppercase; }
h1 em { color: var(--accent); font-style: normal; }
.hero-copy { color: var(--muted); font-size: clamp(1rem, 1.5vw, 1.2rem); line-height: 1.65; margin: 0; max-width: 510px; }
.hero-actions { align-items: center; display: flex; flex-wrap: wrap; gap: 18px; margin-top: 36px; }
.button { align-items: center; display: inline-flex; font-size: 13px; font-weight: 800; gap: 12px; justify-content: center; letter-spacing: .02em; padding: 16px 22px; transition: transform 180ms ease, background 180ms ease, filter 180ms ease; }
.button:hover { transform: translateY(-2px); }
.button-primary { background: var(--accent); color: var(--ink); }
.button-primary:hover { background: var(--accent); filter: brightness(1.1); }
.button-ghost { border: 1px solid var(--line); color: var(--cream); }
.button-ghost:hover { background: rgba(255,255,255,.05); }
.hero-note { color: var(--muted); font-family: var(--mono); font-size: 11px; letter-spacing: .05em; margin-top: 18px; }
.signal { align-items: end; bottom: 78px; display: flex; gap: 22px; position: absolute; right: clamp(22px, 8vw, 126px); }
.signal-line { background: var(--yellow); height: 1px; margin-bottom: 8px; width: 55px; }
.signal-copy { color: var(--muted); font-family: var(--mono); font-size: 10px; letter-spacing: .12em; line-height: 1.5; text-align: right; text-transform: uppercase; }
.signal-copy strong { color: var(--cream); display: block; font-size: 18px; letter-spacing: 0; }
.info { background: var(--forest); border-top: 1px solid rgba(211,235,214,.08); padding: 68px clamp(22px, 8vw, 126px) 85px; position: relative; }
.info-grid { display: grid; gap: 48px; grid-template-columns: 1.05fr 1.7fr; margin: auto; max-width: 1220px; }
.section-kicker { color: var(--yellow); font-family: var(--mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; }
h2 { font-family: var(--display); font-size: clamp(2.8rem, 5vw, 5.4rem); letter-spacing: -.04em; line-height: .88; margin: 18px 0 0; text-transform: uppercase; }
.info-lead { color: var(--muted); font-size: 16px; line-height: 1.75; margin: 20px 0 0; max-width: 390px; }
.facts { display: grid; gap: 1px; grid-template-columns: repeat(2, 1fr); }
.fact { border-bottom: 1px solid var(--line); padding: 0 0 22px; }
.fact:nth-child(n+3) { padding-top: 24px; }
.fact:nth-child(odd) { padding-right: 28px; }
.fact:nth-child(even) { border-left: 1px solid var(--line); padding-left: 28px; }
.fact-label { color: var(--muted); font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }
.fact-value { color: var(--cream); font-family: var(--display); font-size: clamp(2rem, 4vw, 3.8rem); font-weight: 700; letter-spacing: -.03em; line-height: 1; margin-top: 10px; text-transform: uppercase; }
.fact-value span { color: var(--yellow); }
.footer { align-items: center; background: var(--ink); border-top: 1px solid var(--line); color: var(--muted); display: flex; font-family: var(--mono); font-size: 10px; justify-content: space-between; letter-spacing: .08em; padding: 25px clamp(22px, 5vw, 76px); text-transform: uppercase; }
.footer strong { color: var(--yellow); font-weight: 500; }
.site-footer { background: var(--ink); border-top: 1px solid var(--line); padding: 64px clamp(22px, 8vw, 126px) 24px; }
.site-footer-inner { margin: auto; max-width: 1220px; }
.site-footer-main { align-items: end; display: flex; justify-content: space-between; }
.site-footer-brand { align-items: center; display: inline-flex; gap: 16px; }
.site-footer-brand img { height: 62px; object-fit: contain; width: 62px; }
.site-footer-brand span { display: grid; gap: 4px; }
.site-footer-brand strong { font-family: var(--display); font-size: 1.65rem; letter-spacing: .02em; text-transform: uppercase; }
.site-footer-brand small { color: var(--accent); font-family: var(--mono); font-size: 12px; letter-spacing: .15em; text-transform: uppercase; }
.site-footer-slogan { color: var(--cream); font-family: var(--display); font-size: clamp(2.8rem, 6vw, 5.5rem); font-weight: 900; letter-spacing: .01em; line-height: .78; text-align: right; text-transform: uppercase; }
.site-footer-slogan em { color: var(--accent); font-style: normal; }
.site-footer-links { border-top: 1px solid var(--line); display: flex; gap: clamp(64px, 12vw, 180px); margin-top: 58px; padding-top: 26px; }
.site-footer-column { display: grid; gap: 9px; min-width: 170px; }
.site-footer-label { color: var(--accent); font-family: var(--mono); font-size: 12px; letter-spacing: .15em; margin-bottom: 4px; text-transform: uppercase; }
.site-footer-column > a { color: var(--muted); font-size: 16px; font-weight: 600; transition: color 180ms ease; }
.site-footer-column > a:hover { color: var(--cream); }
.site-footer-column .instagram-link { gap: 7px; justify-content: flex-start; }
.site-footer-bottom { align-items: center; border-top: 1px solid var(--line); color: var(--muted); display: flex; font-family: var(--mono); font-size: 12px; justify-content: space-between; letter-spacing: .08em; margin-top: 54px; padding-top: 20px; text-transform: uppercase; }
.site-footer-bottom strong { color: var(--yellow); font-weight: 500; }
.reveal-on-scroll { opacity: 0; transform: translateY(28px); transition: opacity 650ms ease, transform 650ms ease; transition-delay: var(--reveal-delay, 0ms); }
.reveal-on-scroll.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll { opacity: 1; transform: none; transition: none; }
}
.support { background: var(--forest); border-top: 1px solid var(--line); padding: 52px clamp(22px, 8vw, 126px); }
.date-card { background: var(--ink); border-top: 1px solid var(--line); isolation: isolate; overflow: hidden; padding: 62px clamp(22px, 8vw, 126px); position: relative; text-align: center; }
.date-card::after { background-image: url('fondo_hero.jpg'); background-position: center 72%; background-size: cover; content: ""; inset: 0; opacity: .82; pointer-events: none; position: absolute; z-index: -3; }
.date-card::before { background: radial-gradient(circle at 50% 35%, rgba(255, 255, 255, .08), transparent 35%), linear-gradient(180deg, rgba(8, 8, 8, .58), rgba(8, 8, 8, .7)); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: -1; }
.date-card-inner { border: 1px solid var(--line); margin: auto; max-width: 1220px; padding: 38px 24px; position: relative; z-index: 1; }
.date-card-label { color: var(--accent); font-family: var(--mono); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; }
.date-card-date { color: var(--cream); font-family: var(--display); font-size: clamp(3.4rem, 9vw, 8rem); font-weight: 800; letter-spacing: .01em; line-height: .85; margin: 16px 0 0; text-transform: uppercase; }
.date-card-date span { color: var(--accent); }
.date-card-note { color: var(--muted); font-family: var(--mono); font-size: 16px; letter-spacing: .06em; margin: 18px 0 0; }
.date-card-link { display: inline-block; transition: color 180ms ease; }
.date-card-link:hover, .date-card-link:focus-visible { color: var(--accent); }
body.light .date-card::before { background: linear-gradient(180deg, rgba(242, 242, 238, .64), rgba(242, 242, 238, .78)); }
.support-card { align-items: center; border: 1px solid var(--line); display: flex; gap: 26px; margin: auto; max-width: 1220px; padding: 24px 30px; }
.support-card img { height: 92px; object-fit: contain; width: auto; }
.support-kicker { color: var(--accent); font-family: var(--mono); font-size: 10px; letter-spacing: .15em; text-transform: uppercase; }
.support-copy { color: var(--cream); font-family: var(--display); font-size: clamp(1.45rem, 3vw, 2.35rem); font-weight: 700; letter-spacing: .01em; line-height: .95; margin: 8px 0 0; max-width: 760px; text-transform: uppercase; }
.home-partners { background: var(--forest); border-top: 1px solid var(--line); padding: 68px clamp(22px, 8vw, 126px) 78px; }
.home-partners-inner { margin: auto; max-width: 1220px; }
.home-partners h2 { margin-top: 18px; }
.home-institutions-feature, .home-institutions-secondary, .home-collaborators-grid { display: grid; }
.home-institutions-feature { gap: 18px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 34px; }
.home-institutions-secondary { gap: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 18px; }
.home-partner-card { background: #ffffff; border: 1px solid var(--line); display: block; overflow: hidden; transition: border-color 180ms ease, transform 180ms ease; }
.home-partner-card:hover, .home-partner-card:focus-visible { border-color: var(--accent); transform: translateY(-3px); }
.home-partner-card img { aspect-ratio: 16 / 9; display: block; height: auto; object-fit: contain; width: 100%; }
.home-collaborators-heading { border-top: 1px solid var(--line); margin-top: 68px; padding-top: 48px; }
.home-collaborators-grid { gap: 10px; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 28px; }
.home-collaborators-grid .home-partner-card { border-color: rgba(255, 255, 255, .12); }
body.light .home-partner-card { background: #ffffff; }
body.light .home-collaborators-grid .home-partner-card { border-color: rgba(17, 17, 17, .17); }
.hero-logo { animation: float-logo 6s ease-in-out infinite; filter: drop-shadow(0 28px 42px rgba(0, 0, 0, .45)); max-width: min(34vw, 440px); object-fit: contain; position: absolute; right: clamp(4vw, 8vw, 110px); top: 48%; transform: translateY(-43%); width: 34vw; z-index: 0; }
body.light .hero-logo { filter: drop-shadow(0 24px 32px rgba(0, 0, 0, .18)); }
@keyframes float-logo { 0%, 100% { margin-top: 0; } 50% { margin-top: -12px; } }
.hero-inner > .eyebrow, .hero-inner > h1, .hero-inner > .hero-copy, .hero-inner > .hero-actions, .hero-inner > .hero-note { position: relative; z-index: 1; }
.rule-card { border-left: 1px solid var(--yellow); margin-top: 25px; padding-left: 16px; }
.rule-card strong { display: block; font-family: var(--display); font-size: 1.8rem; letter-spacing: .01em; text-transform: uppercase; }
.rule-card span { color: var(--muted); display: block; font-size: 16px; line-height: 1.5; margin-top: 3px; }
.rules { border-top: 1px solid var(--line); display: grid; gap: 0 28px; grid-column: 1 / -1; grid-template-columns: repeat(2, 1fr); margin-top: 38px; padding-top: 28px; }
.rule { border-bottom: 1px solid var(--line); padding: 0 0 20px; }
.rule:nth-child(n+3) { padding-top: 22px; }
.rule:nth-child(even) { border-left: 1px solid var(--line); padding-left: 28px; }
.rule-number { color: var(--accent); font-family: var(--mono); font-size: 11px; }
.rule-title { color: var(--cream); font-family: var(--display); font-size: 1.45rem; font-weight: 700; letter-spacing: .01em; margin-top: 8px; text-transform: uppercase; }
.rule-text { color: var(--muted); font-size: 16px; line-height: 1.6; margin: 7px 0 0; }
.reglamento-page { background: var(--ink); min-height: 100vh; }
.reglamento-hero { background: var(--ink); border-bottom: 1px solid var(--line); isolation: isolate; overflow: hidden; padding: clamp(64px, 10vw, 120px) clamp(22px, 8vw, 126px) 56px; position: relative; }
.reglamento-hero::before { background: radial-gradient(circle at 76% 35%, rgba(255, 255, 255, .09), transparent 31%), linear-gradient(180deg, rgba(8, 8, 8, .08), var(--ink) 93%); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: -1; }
.reglamento-hero-inner, .reglamento-shell { margin: auto; max-width: 1040px; position: relative; z-index: 1; }
.reglamento-hero h1 { font-size: clamp(4rem, 9vw, 8rem); margin: 22px 0 18px; max-width: 760px; }
.reglamento-hero p { color: #d7d7d2; font-size: 16px; line-height: 1.7; margin: 0; max-width: 660px; text-shadow: 0 1px 3px rgba(0, 0, 0, .65); }
.reglamento-meta { border-top: 1px solid var(--line); display: grid; gap: 20px; grid-template-columns: repeat(4, 1fr); margin-top: 42px; padding-top: 22px; }
.reglamento-meta span { color: #d7d7d2; display: block; font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; text-shadow: 0 1px 3px rgba(0, 0, 0, .65); }
.reglamento-meta strong { color: #ffd21a; display: block; font-family: var(--display); font-size: 1.6rem; margin-top: 6px; text-shadow: 0 1px 3px rgba(0, 0, 0, .7); text-transform: uppercase; }
body.light .reglamento-hero p { color: #5f5f5a; text-shadow: 0 1px 2px rgba(255, 255, 255, .35); }
body.light .reglamento-meta span { color: #5f5f5a; text-shadow: 0 1px 2px rgba(255, 255, 255, .35); }
body.light .reglamento-meta strong { color: #c89500; text-shadow: 0 1px 2px rgba(255, 255, 255, .35); }
.reglamento-layout { display: grid; gap: 60px; grid-template-columns: 220px minmax(0, 1fr); padding: 64px clamp(22px, 8vw, 126px) 90px; }
.reglamento-toc { align-self: start; position: sticky; top: 24px; }
.reglamento-toc-title { color: var(--accent); font-family: var(--mono); font-size: 10px; letter-spacing: .14em; margin-bottom: 16px; text-transform: uppercase; }
.reglamento-toc a { border-left: 1px solid var(--line); color: var(--muted); display: block; font-size: 12px; line-height: 1.35; padding: 5px 0 5px 14px; }
.reglamento-toc a:hover { border-color: var(--accent); color: var(--cream); }
.reglamento-content { min-width: 0; }
.reglamento-intro { border-left: 2px solid var(--accent); color: var(--muted); font-size: 16px; line-height: 1.75; margin-bottom: 50px; padding-left: 18px; }
.reglamento-article { border-top: 1px solid var(--line); padding: 28px 0 30px; scroll-margin-top: 24px; }
.reglamento-article h2 { color: var(--cream); font-family: var(--display); font-size: clamp(1.25rem, 2.1vw, 1.9rem); letter-spacing: .01em; line-height: .95; margin: 0 0 16px; }
.reglamento-article-number { display: inline-block; font-size: .5em; letter-spacing: .04em; line-height: 1; margin-bottom: .35em; }
.reglamento-article p, .reglamento-article li { color: var(--muted); font-size: 16px; line-height: 1.75; }
.reglamento-article p { margin: 0 0 12px; }
.reglamento-article ul, .reglamento-article ol { margin: 10px 0 14px; padding-left: 24px; }
.reglamento-article li { margin: 5px 0; padding-left: 4px; }
.reglamento-article strong { color: var(--cream); font-weight: 700; }
.reglamento-back { color: var(--accent); display: inline-flex; font-family: var(--mono); font-size: 11px; letter-spacing: .1em; margin-top: 30px; text-transform: uppercase; }
.reglamento-notice { background: var(--forest); border: 1px solid var(--accent); box-shadow: 0 24px 80px rgba(0, 0, 0, .55); color: var(--cream); max-width: min(92vw, 560px); padding: 38px; width: 100%; }
.reglamento-notice::backdrop { background: rgba(0, 0, 0, .72); }
.reglamento-notice-kicker { color: var(--accent); font-family: var(--mono); font-size: 11px; letter-spacing: .15em; text-transform: uppercase; }
.reglamento-notice h2 { color: var(--cream); font-family: var(--display); font-size: clamp(2.8rem, 7vw, 5rem); line-height: .88; margin: 18px 0; text-transform: uppercase; }
.reglamento-notice p { color: var(--muted); font-size: 16px; line-height: 1.65; margin: 0 0 28px; }
.reglamento-notice-close { border: 0; cursor: pointer; }
.reglamento-coming-soon { align-items: center; display: grid; min-height: 500px; padding: 72px clamp(22px, 8vw, 126px); }
.reglamento-coming-soon-card { background: var(--forest); border: 1px solid var(--accent); box-shadow: 0 24px 80px rgba(0, 0, 0, .35); margin: auto; max-width: 620px; padding: 48px; text-align: center; width: 100%; }
.reglamento-coming-soon-card h2 { color: var(--cream); font-family: var(--display); font-size: clamp(3rem, 8vw, 6rem); line-height: .85; margin: 18px 0; text-transform: uppercase; }
.reglamento-coming-soon-card p { color: var(--muted); font-size: 16px; line-height: 1.65; margin: 0 0 28px; }
.collaborators-page { background: var(--ink); min-height: 100vh; }
.collaborators-hero { background: var(--ink); border-bottom: 1px solid var(--line); isolation: isolate; overflow: hidden; padding: clamp(72px, 11vw, 132px) clamp(22px, 8vw, 126px) 76px; position: relative; }
.collaborators-hero::after { background-image: url('fondo_hero.jpg'); background-position: center 72%; background-size: cover; content: ""; inset: 0; opacity: .82; pointer-events: none; position: absolute; z-index: -3; }
.circuit-hero { isolation: isolate; min-height: 320px; overflow: hidden; padding: clamp(52px, 7vw, 84px) clamp(22px, 8vw, 126px); position: relative; }
.circuit-hero::before { background: linear-gradient(180deg, rgba(8, 8, 8, .5), rgba(8, 8, 8, .88)); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: -1; }
.circuit-hero::after { background-image: url('fondo_hero.jpg'); background-position: center 70%; background-size: cover; content: ""; inset: 0; opacity: .62; pointer-events: none; position: absolute; z-index: -2; }
.circuit-hero-inner, .circuit-content { margin: 0 auto; max-width: 1220px; }
.circuit-hero h1 { font-size: clamp(4.5rem, 10vw, 9rem); line-height: .86; margin: 22px 0; max-width: 780px; }
.circuit-hero p { color: var(--muted); font-size: 18px; line-height: 1.65; max-width: 610px; }
.circuit-content { box-sizing: border-box; isolation: isolate; max-width: 1220px; padding: 18px 0 110px; position: relative; }
.circuit-topography { height: 100%; left: 50%; opacity: .72; pointer-events: none; position: absolute; top: 0; transform: translateX(-50%); width: 100vw; z-index: -1; }
.circuit-topography svg { height: 100%; width: 100%; }
.circuit-content h2 { font-size: clamp(3rem, 7vw, 6rem); line-height: .88; margin: 18px 0 24px; max-width: 800px; }
.circuit-intro { color: var(--muted); font-size: 18px; line-height: 1.7; max-width: 700px; }
.circuit-placeholder { border: 1px solid var(--line); margin-top: 54px; min-height: 300px; padding: clamp(28px, 6vw, 64px); position: relative; }
.circuit-placeholder::before { border-left: 1px solid var(--accent); content: ""; inset: 0 auto 0 0; position: absolute; }
.circuit-placeholder strong { color: var(--accent); display: block; font-family: var(--mono); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; }
.circuit-placeholder p { color: var(--muted); font-size: 16px; line-height: 1.7; margin: 18px 0 0; max-width: 620px; }
.circuit-map-shell { background: var(--forest); border: 1px solid var(--line); border-radius: 18px 18px 0 0; overflow: hidden; }
.circuit-map { border-radius: 17px 17px 0 0; height: 660px; width: 100%; }
.circuit-map-controls { align-items: center; border-bottom: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 12px; padding: 18px; }
.circuit-map-controls .button { width: auto; }
.control-label-short { display: none; }
.circuit-map-controls .button-ghost:not(.circuit-download) { background: #171717; border-color: #55554f; color: #f2f2ee; }
.circuit-map-controls .button-ghost:not(.circuit-download):hover { background: #2b2d2a; }
.circuit-download { background: var(--accent); border-color: var(--accent); color: #171717; margin-left: auto; }
.circuit-download:hover { background: var(--yellow); border-color: var(--yellow); color: #171717; }
.circuit-map-style { align-items: center; color: var(--muted); display: inline-flex; font-family: var(--mono); font-size: 11px; gap: 8px; letter-spacing: .1em; text-transform: uppercase; }
.circuit-map-style select { background: var(--ink); border: 1px solid var(--line); color: var(--cream); cursor: pointer; font: inherit; letter-spacing: .04em; padding: 10px 12px; text-transform: uppercase; }
.circuit-stats { border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(3, 1fr); }
.circuit-stats div { border-right: 1px solid var(--line); display: grid; gap: 7px; padding: 20px; }
.circuit-stats div:last-child { border-right: 0; }
.circuit-stats span, .circuit-elevation-label { color: var(--accent); font-family: var(--mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; }
.circuit-stats strong { color: var(--cream); font-family: var(--display); font-size: 28px; line-height: .9; }
.circuit-elevation-wrap { border-top: 1px solid var(--line); padding: 20px; }
.circuit-elevation-label { margin-bottom: 12px; }
#circuit-elevation { cursor: crosshair; display: block; height: 150px; touch-action: none; width: 100%; }
.circuit-waypoint-photo { display: block; margin-top: 8px; max-width: 220px; }
.circuit-camera-marker { align-items: center; background: var(--accent); border: 2px solid #171717; border-radius: 50% 50% 50% 0; box-shadow: 0 3px 9px rgba(0, 0, 0, .38); display: flex; height: 34px; justify-content: center; transform: rotate(-45deg); width: 34px; }
.circuit-camera-marker svg { fill: none; height: 22px; stroke: #171717; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; transform: rotate(45deg); width: 22px; }
.circuit-camera-marker .camera-dot { fill: #171717; stroke: none; }
.circuit-runner-marker { align-items: center; background: var(--accent); border: 2px solid #171717; border-radius: 50%; box-shadow: 0 3px 10px rgba(0, 0, 0, .45); display: flex; height: 38px; justify-content: center; width: 38px; }
.circuit-runner-marker svg { fill: #171717; height: 25px; stroke: #171717; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 25px; }
.circuit-laps { margin-top: 58px; }
.circuit-table-wrap { margin-top: 14px; overflow-x: auto; }
.circuit-table { border-collapse: collapse; min-width: 700px; width: 100%; }
.circuit-table th, .circuit-table td { border-bottom: 1px solid var(--line); padding: 16px 18px; text-align: left; }
.circuit-table thead th { color: var(--accent); font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; }
.circuit-table tbody th { color: var(--cream); font-family: var(--display); font-size: 24px; line-height: 1; }
.circuit-table tbody td { color: var(--muted); font-size: 15px; font-weight: 600; }
.circuit-table tbody tr:hover { background: rgba(214, 154, 0, .06); }
.circuit-table .circuit-table-highlight { background: rgba(214, 154, 0, .12); }
.circuit-table .circuit-table-highlight td { color: var(--cream); }
body.light .circuit-table tbody th { color: #222523; }
body.light .circuit-table .circuit-table-highlight td { color: #222523; }
.circuit-gallery { margin-top: 58px; }
.circuit-gallery-grid { display: grid; gap: 14px; grid-template-columns: repeat(4, minmax(0, 1fr)); margin-top: 14px; }
.circuit-gallery-item { aspect-ratio: 4 / 3; background: var(--forest); border: 1px solid var(--line); display: block; overflow: hidden; }
.circuit-gallery-item img { height: 100%; object-fit: cover; transition: transform 260ms ease; width: 100%; }
.circuit-gallery-item:hover img { transform: scale(1.04); }
.circuit-bird-banner { margin: 34px 0 46px; }
.circuit-bird-banner-button { align-items: center; background: linear-gradient(90deg, rgba(8, 12, 12, .96), rgba(8, 12, 12, .58)), url('fondo_hero.jpg') center 58% / cover; border: 1px solid var(--accent); color: #f5f5f2; cursor: pointer; display: flex; gap: 24px; justify-content: space-between; min-height: 150px; padding: 28px 34px; text-align: left; transition: border-color 180ms ease, transform 180ms ease; width: 100%; }
.circuit-bird-banner-button:hover, .circuit-bird-banner-button:focus-visible { border-color: var(--yellow); transform: translateY(-2px); }
.circuit-bird-banner-kicker { color: var(--accent); font-family: var(--mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
.circuit-bird-banner-button strong { font-family: var(--display); font-size: clamp(2.2rem, 5vw, 4.8rem); line-height: .85; text-transform: uppercase; }
.circuit-bird-banner-button em { color: var(--accent); font-style: normal; }
.circuit-bird-banner-arrow { color: var(--accent); font-size: 42px; line-height: 1; }
.circuit-gallery-modal { background: var(--forest); border: 1px solid var(--accent); color: var(--cream); max-width: 1220px; padding: 18px; width: calc(100% - 44px); }
.circuit-gallery-modal::backdrop { background: rgba(0, 0, 0, .78); }
.circuit-gallery-modal-grid { display: grid; gap: 18px; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.circuit-gallery-modal-image-wrap { align-items: center; background: #101313; display: flex; justify-content: center; min-height: 420px; overflow: hidden; }
.circuit-gallery-modal-image-wrap img { max-height: 620px; max-width: 100%; object-fit: contain; }
.circuit-gallery-modal-map { min-height: 420px; }
.circuit-gallery-modal-map .mapboxgl-ctrl-top-right { top: 48px; }
.circuit-gallery-modal-close { background: var(--accent); border: 0; color: #171717; cursor: pointer; font-size: 24px; height: 36px; line-height: 1; position: absolute; right: 10px; top: 10px; width: 36px; z-index: 2; }
.circuit-bird-modal { background: #080c0c; border: 1px solid var(--accent); height: min(760px, calc(100vh - 44px)); max-width: 1400px; padding: 0; width: calc(100% - 44px); }
.circuit-bird-map { height: 100%; width: 100%; }
.circuit-bird-controls { align-items: center; display: flex; gap: 12px; left: 14px; position: absolute; top: 14px; z-index: 3; }
.circuit-bird-controls .button { padding: 10px 14px; width: auto; }
.circuit-bird-controls label { align-items: center; background: rgba(8, 12, 12, .86); color: #f5f5f2; display: inline-flex; font-family: var(--mono); font-size: 11px; gap: 8px; padding: 7px 9px; text-transform: uppercase; }
.circuit-bird-controls select { background: #171717; border: 1px solid rgba(255, 255, 255, .24); color: #f5f5f2; font: inherit; padding: 4px 6px; }
body.light .circuit-map-shell { background: #e5e5df; }
body.light .circuit-stats strong { color: #222523; }
body.light .circuit-map-style select { background: #f2f2ee; color: #222523; }
body.light .circuit-map-controls .button-ghost:not(.circuit-download) { background: #f2f2ee; border-color: #a4a49c; color: #222523; }
body.light .circuit-map-controls .button-ghost:not(.circuit-download):hover { background: #ffffff; }
body.light .circuit-hero::before { background: linear-gradient(180deg, rgba(242, 242, 238, .58), rgba(242, 242, 238, .82)); }
body.light .circuit-hero p { color: #3e403e; }
.collaborators-hero::before { background: radial-gradient(circle at 76% 35%, rgba(255, 255, 255, .08), transparent 31%), linear-gradient(180deg, rgba(8, 8, 8, .58), rgba(8, 8, 8, .7)); content: ""; inset: 0; pointer-events: none; position: absolute; z-index: -1; }
.collaborators-hero-inner { margin: auto; max-width: 1040px; position: relative; z-index: 1; }
.collaborators-hero h1 { font-size: clamp(4rem, 9vw, 8rem); margin: 22px 0 18px; max-width: 850px; }
.collaborators-hero p { color: #d7d7d2; font-size: 16px; line-height: 1.7; margin: 0; max-width: 660px; text-shadow: 0 1px 3px rgba(0, 0, 0, .65); }
.collaborators-content { margin: auto; max-width: 1040px; padding: 72px 22px 100px; }
.collaborators-content h2 { margin-top: 18px; }
.collaborators-intro { color: var(--muted); font-size: 15px; line-height: 1.75; margin: 20px 0 42px; max-width: 560px; }
.institutions-feature-grid { display: grid; gap: 22px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: 22px; }
.institutions-grid { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.collaborators-list { border-top: 1px solid var(--line); margin-top: 74px; padding-top: 50px; }
.collaborators-grid { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.collaborator-card { background: var(--cream); border: 1px solid var(--line); cursor: zoom-in; overflow: hidden; padding: 0; transition: border-color 180ms ease, transform 180ms ease; }
.collaborator-card:hover, .collaborator-card:focus-visible { border-color: var(--accent); transform: translateY(-3px); }
.collaborator-card img { aspect-ratio: 16 / 9; display: block; height: auto; object-fit: contain; width: 100%; }
.collaborator-modal { background: var(--cream); border: 1px solid var(--line); box-shadow: 0 24px 80px rgba(0, 0, 0, .55); max-height: 90vh; max-width: min(92vw, 1100px); padding: 18px; width: auto; }
.collaborator-modal::backdrop { background: rgba(0, 0, 0, .84); }
.collaborator-modal-image { display: block; max-height: calc(90vh - 36px); max-width: calc(92vw - 36px); object-fit: contain; }
.collaborator-modal-close { background: var(--ink); border: 1px solid var(--line); color: var(--cream); cursor: pointer; font-size: 26px; height: 38px; line-height: 1; position: absolute; right: 12px; top: 12px; width: 38px; }
.collaborator-modal-close:hover, .collaborator-modal-close:focus-visible { color: var(--accent); }
body.light .collaborators-hero p { color: #5f5f5a; text-shadow: 0 1px 2px rgba(255, 255, 255, .35); }
body.light .collaborators-hero::before { background: linear-gradient(180deg, rgba(242, 242, 238, .64), rgba(242, 242, 238, .78)); }
@media (max-width: 720px) {
  .reglamento-hero { padding-top: 58px; }
  .reglamento-hero h1 { font-size: clamp(3.7rem, 18vw, 6rem); }
  .reglamento-meta { grid-template-columns: repeat(2, 1fr); }
  .reglamento-layout { display: block; padding-top: 42px; }
  .reglamento-toc { background: var(--forest); border: 1px solid var(--line); margin-bottom: 44px; padding: 18px; position: static; }
  .reglamento-toc a { display: inline-block; margin-right: 14px; padding: 3px 0; }
  .collaborators-hero { padding-top: 58px; }
  .circuit-hero { min-height: 260px; padding-top: 52px; }
  .circuit-content { padding: 12px 22px 72px; }
  .circuit-map { height: 520px; }
  .circuit-map-controls { flex-wrap: nowrap; gap: 5px; padding: 10px 8px; }
  .circuit-map-controls .button { font-size: 10px; gap: 4px; padding: 9px 8px; white-space: nowrap; }
  .circuit-map-style { flex-shrink: 0; font-size: 8px; gap: 4px; }
  .circuit-map-style select { font-size: 9px; padding: 8px 4px; }
  .circuit-download { margin-left: auto; }
  .control-label-full { display: none; }
  .control-label-short { display: inline; }
  .circuit-stats { grid-template-columns: repeat(3, 1fr); }
  .circuit-stats div { border-bottom: 0; border-right: 1px solid var(--line); padding: 12px 8px; }
  .circuit-stats div:last-child { border-right: 0; }
  .circuit-stats span { font-size: 8px; letter-spacing: .06em; }
  .circuit-stats strong { font-size: 21px; }
  .circuit-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .circuit-bird-banner { margin: 26px 0 34px; }
  .circuit-bird-banner-button { align-items: flex-start; flex-direction: column; gap: 16px; min-height: 180px; padding: 24px 20px; }
  .circuit-bird-banner-arrow { align-self: flex-end; }
  .circuit-gallery-modal { padding: 10px; }
  .circuit-gallery-modal-grid { grid-template-columns: 1fr; }
  .circuit-gallery-modal-image-wrap, .circuit-gallery-modal-map { min-height: 300px; }
  .circuit-bird-modal { height: calc(100vh - 28px); width: calc(100% - 28px); }
  .circuit-bird-controls { gap: 6px; left: 8px; top: 8px; }
  .circuit-bird-controls .button { font-size: 10px; padding: 8px 10px; }
  .collaborators-hero h1 { font-size: clamp(3.7rem, 18vw, 6rem); }
  .collaborators-content { padding-top: 48px; }
  .institutions-feature-grid { gap: 8px; }
  .institutions-grid, .collaborators-grid { gap: 8px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .collaborators-list { margin-top: 54px; padding-top: 38px; }
}
@media (max-width: 720px) {
  .topbar { min-height: 68px; }
  .brand-mark { height: 38px; width: 38px; }
  .brand-sub { font-size: 8px; }
  .menu-toggle { display: flex; }
  .nav { align-items: stretch; background: var(--forest); border: 1px solid var(--line); display: none; flex-direction: column; gap: 0; left: 22px; padding: 10px; position: absolute; right: 22px; top: calc(100% + 1px); }
  .nav.is-open { display: flex; }
  .nav > a, .nav .instagram-link, .nav .theme-toggle { align-items: center; display: flex; min-height: 44px; padding: 0 12px; width: 100%; }
  .nav .instagram-link { gap: 8px; }
  .nav .theme-toggle { justify-content: flex-start; margin-top: 8px; width: auto; }
  .hero { display: flex; flex-direction: column; min-height: 650px; padding-top: 68px; }
  .hero-inner { display: flex; flex-direction: column; min-height: 0; width: 100%; }
  h1 { letter-spacing: .01em; line-height: .92; max-width: 100%; font-size: clamp(4rem, 22vw, 7rem); }
  .hero-logo { animation-duration: 7s; bottom: auto; display: block; margin: 28px auto 0; max-width: 300px; opacity: .9; order: 6; position: relative; right: auto; top: auto; transform: none; width: min(68vw, 300px); }
  .hero-inner > .eyebrow { order: 1; }
  .hero-inner > h1 { order: 2; }
  .hero-inner > .hero-copy { order: 3; }
  .hero-inner > .hero-actions { order: 4; }
  .hero-inner > .hero-note { order: 5; }
  .hero-copy { max-width: 330px; }
  .hero-actions { align-items: stretch; flex-direction: column; max-width: 240px; }
  .button { width: 100%; }
  .signal { bottom: 44px; right: 22px; }
  .info-grid { grid-template-columns: 1fr; }
  .facts { margin-top: 8px; }
  .footer { align-items: flex-start; flex-direction: column; gap: 9px; }
  .site-footer { padding: 48px 22px 22px; }
  .site-footer-main { align-items: start; flex-direction: column; gap: 42px; }
  .site-footer-slogan { font-size: clamp(3.6rem, 18vw, 6rem); text-align: left; }
  .site-footer-links { gap: 36px; margin-top: 46px; }
  .site-footer-bottom { align-items: flex-start; flex-direction: column; gap: 9px; margin-top: 42px; }
  .support-card { align-items: flex-start; flex-direction: column; padding: 22px; }
  .support-card img { height: 84px; }
  .home-partners { padding: 48px 22px 58px; }
  .home-institutions-feature, .home-institutions-secondary { gap: 8px; }
  .home-collaborators-heading { margin-top: 54px; padding-top: 38px; }
  .home-collaborators-grid { gap: 8px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .date-card { padding: 42px 22px; }
  .date-card-inner { padding: 34px 18px; }
  .date-card-date { font-size: clamp(3rem, 14vw, 5rem); }
}
@media (min-width: 721px) and (max-width: 1080px) {
  h1 { font-size: clamp(4rem, 9vw, 7rem); max-width: 62vw; }
  .hero-logo { opacity: .72; right: 4vw; width: 32vw; }
}
