/*
  NODAL LAB — diseño editorial / espacial
  Sitio sin framework. Variables editables y responsive.
*/
:root {
  --paper: #f4f5f0;
  --paper-2: #e8ebe2;
  --ink: #131a16;
  --muted: #6d756f;
  --line: #d7dcd2;
  --dark: #15221d;
  --dark-2: #0c1511;
  --lime: #c9fd4b;
  --accent: #b5e83c;
  --font-head: 'Space Grotesk', Arial, sans-serif;
  --font-body: 'DM Sans', Arial, sans-serif;
  --page-max: 1440px;
  --gutter: clamp(22px, 4.3vw, 74px);
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 96px; }
body { margin: 0; color: var(--ink); background: var(--paper); font: 400 15px/1.55 var(--font-body); -webkit-font-smoothing: antialiased; }
body.menu-open { overflow: hidden; }
::selection { background: var(--lime); color: var(--ink); }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
button { cursor: pointer; }
button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible, summary:focus-visible { outline: 3px solid #78a829; outline-offset: 3px; }
img, svg { display: block; max-width: 100%; }
[hidden] { display: none !important; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--font-head); font-weight: 500; letter-spacing: -.062em; line-height: 1.07; }
p { line-height: 1.65; }
.site-shell { overflow: clip; }
.container { max-width: var(--page-max); margin-inline: auto; padding-inline: var(--gutter); }
.section-pad { padding-block: clamp(82px, 9vw, 142px); }
.skip-link { position: absolute; top: -70px; left: 20px; padding: 12px 16px; background: var(--lime); color: var(--ink); z-index: 9999; }
.skip-link:focus { top: 10px; }

/* HEADER */
.site-header { height: 86px; position: relative; z-index: 50; background: var(--paper); border-bottom: 1px solid var(--line); }
.header-inner { height: 100%; display: flex; align-items: center; gap: 30px; }
.brand { display: inline-flex; align-items: center; gap: 11px; color: var(--ink); font: 700 22px/1 var(--font-head); letter-spacing: -.075em; white-space: nowrap; }
.brand-mark { width: 36px; height: 36px; flex: none; }
.brand-light { font-weight: 400; }
.desktop-nav { margin-left: auto; display: flex; align-items: center; gap: clamp(16px, 2.7vw, 37px); }
.desktop-nav a { position: relative; font: 500 13px var(--font-body); transition: color .25s ease; }
.desktop-nav a:hover, .footer-links a:hover { color: #609419; }
.header-cta { margin-left: clamp(6px, 2vw, 30px); border: 1px solid var(--ink); padding: 10px 17px; font-size: 13px; font-weight: 700; transition: background .2s, color .2s; }
.header-cta span { padding-left: 20px; }
.header-cta:hover { background: var(--ink); color: var(--paper); }
.menu-toggle { display: none; width: 42px; height: 42px; align-items: center; justify-content: center; flex-direction: column; gap: 6px; background: transparent; border: 1px solid var(--line); }
.menu-toggle span { width: 18px; height: 1px; background: var(--ink); }
.mobile-nav { position: absolute; top: 100%; left: 0; right: 0; z-index: 10; padding: 22px var(--gutter) 30px; background: var(--paper); border-bottom: 1px solid var(--line); box-shadow: 0 30px 40px #1112; }
.mobile-nav a { display: block; padding: 13px 0; font: 500 22px var(--font-head); border-bottom: 1px solid var(--line); }

/* SHARED */
.kicker { font-size: 11px; letter-spacing: .14em; font-weight: 700; text-transform: uppercase; margin-bottom: 22px; }
.section-head { display: flex; align-items: end; justify-content: space-between; gap: 40px; margin-bottom: clamp(35px, 5vw, 72px); }
.section-head h2, .faq h2 { font-size: clamp(44px, 5.5vw, 86px); margin-bottom: 0; }
.section-head .muted, .faq .muted { color: #8c958b; }
.section-intro { width: min(315px, 33%); margin-bottom: 8px; color: #555f58; font-size: 15px; }
.btn { display: inline-flex; justify-content: space-between; align-items: center; gap: 40px; padding: 17px 22px; font-weight: 700; font-size: 13px; border: 1px solid transparent; transition: transform .2s, background .2s, color .2s; }
.btn:hover { transform: translateY(-2px); }
.btn-dark { background: var(--ink); color: white; }
.btn-dark:hover { background: #314339; }
.btn-lime { background: var(--lime); color: var(--ink); }
.btn-lime:hover { background: #aee13e; }
.text-link { font-size: 13px; font-weight: 700; border-bottom: 1px solid var(--ink); padding-bottom: 7px; }
.text-link span { margin-left: 15px; }
.inline-arrow { display: inline-flex; align-items: center; gap: 26px; width: fit-content; font-size: 13px; font-weight: 700; border-bottom: 1px solid currentColor; padding-bottom: 8px; }
.inline-arrow span { font-size: 18px; font-weight: 400; transition: transform .2s; }
.inline-arrow:hover span { transform: translate(4px,-3px); }
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(23px); transition: opacity .65s ease, transform .65s cubic-bezier(.2,.65,.2,1); }
.js .reveal.is-visible { opacity: 1; transform: none; }

/* HERO */
.hero { padding-top: clamp(38px, 4vw, 65px); padding-bottom: 28px; }
.hero-grid { display: grid; grid-template-columns: .99fr 1.01fr; gap: clamp(26px, 4.1vw, 72px); min-height: min(660px, 60vw); }
.hero-copy { display: flex; flex-direction: column; align-items: start; padding-top: clamp(22px, 5vw, 70px); }
.eyebrow { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 10px; font-size: 10px; font-weight: 700; letter-spacing: .11em; }
.status-dot { width: 7px; height: 7px; display: inline-block; background: var(--lime); border: 1px solid #91c132; border-radius: 50%; box-shadow: 0 0 0 3px #c9fd4b23; }
.eyebrow-index { margin-left: 22px; color: #969d94; }
.hero h1 { font-size: clamp(60px, 6vw, 100px); margin: clamp(35px, 4.4vw, 65px) 0 24px; letter-spacing: -.082em; line-height: 1.01; white-space: nowrap; }
.headline-accent { color: #738174; }
.period { color: #98d520; }
.hero-description { font-size: clamp(15px, 1.25vw, 18px); line-height: 1.65; max-width: 430px; color: #5d685f; margin-bottom: 30px; }
.hero-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 28px; }
.hero-meta { display: flex; align-items: center; width: 100%; gap: 12px; margin-top: auto; padding-bottom: 35px; color: #777f77; font-size: 9px; letter-spacing: .13em; font-weight: 700; }
.hero-meta-line { height: 1px; background: var(--line); flex: 1; }
.hero-visual { min-width: 0; }
.visual-surface { background: #9fa99a; min-height: 450px; height: clamp(510px, 49vw, 690px); position: relative; overflow: hidden; isolation: isolate; }
.hero-art { width: 100%; height: 100%; object-fit: cover; }
.visual-tint { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg,rgba(10,24,14,.35) 0%,transparent 35%,transparent 55%,rgba(10,24,14,.5) 100%); }
.visual-topline, .visual-bottomline { position: absolute; left: 27px; right: 27px; display: flex; justify-content: space-between; align-items: center; color: #f4faed; font-size: 10px; letter-spacing: .1em; font-weight: 700; }
.visual-topline { top: 28px; }
.visual-bottomline { bottom: 22px; }
.visual-tag { display: flex; align-items: center; gap: 10px; }
.visual-counter { color: #eaf1db; }
.visual-orbit { position: absolute; top: 50%; left: 50%; width: clamp(180px, 21vw, 290px); aspect-ratio: 1; border: 1.5px solid #ffffffb0; border-radius: 50%; display: grid; place-items: center; transform: translate(-50%, -50%); color: white; font: 500 clamp(54px, 5vw, 82px)/1 var(--font-head); letter-spacing: -.09em; text-shadow: 0 2px 19px #253d3850; }
.visual-orbit::before, .visual-orbit::after { content: ''; position: absolute; border: 1px solid #ffffff66; border-radius: 50%; }
.visual-orbit::before { width: 45%; height: 100%; }
.visual-orbit::after { width: 100%; height: 38%; }
.visual-orbit span { z-index: 1; }
.demo-play { position: absolute; bottom: 68px; left: 50%; transform: translateX(-50%); border: 0; display: flex; justify-content: center; align-items: center; gap: 13px; padding: 11px 15px 11px 11px; white-space: nowrap; font: 700 10px var(--font-body); letter-spacing: .08em; background: var(--lime); color: var(--ink); transition: background .2s; }
.demo-play:hover { background: white; }
.play-icon { display: grid; place-items: center; width: 28px; height: 28px; background: var(--ink); color: var(--lime); font-size: 15px; }
.demo-disclaimer { font-size: 10px; color: #788177; margin: 10px 0 0; line-height: 1.5; }
.demo-active { position: absolute; inset: 0; background: var(--ink); z-index: 6; }
.demo-active iframe { border: 0; width: 100%; height: 100%; }
.demo-toolbar { position: absolute; bottom: 0; left: 0; right: 0; display: flex; justify-content: space-between; align-items: center; gap: 10px; color: white; background: #111e18e8; padding: 13px 17px; font-size: 10px; letter-spacing: .07em; }
.demo-toolbar button { color: var(--ink); background: var(--lime); border: none; font-size: 12px; padding: 6px 12px; }
.hero-bottom { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding-top: 26px; font-size: 9px; font-weight: 700; letter-spacing: .12em; color: #737d73; }
.hero-bottom span:last-child { font-size: 23px; line-height: 1; color: var(--ink); }

/* INTRO */
.intro-band { background: var(--lime); }
.intro-inner { padding-block: clamp(44px, 5.3vw, 80px); display: flex; justify-content: space-between; align-items: center; gap: 36px; }
.symbol-asterisk { font: 500 clamp(62px, 9vw, 130px)/1 var(--font-head); }
.intro-inner p { flex: 1; font: 400 clamp(26px, 3.2vw, 45px)/1.2 var(--font-head); letter-spacing: -.055em; margin: 0; }
.intro-inner strong { font-weight: 700; }
.intro-side { font-size: 10px; font-weight: 700; letter-spacing: .13em; white-space: nowrap; }

/* SERVICES | fotos editoriales de stock, tarjetas completas clickeables */
.services-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; }
.service-card {
  background: #26322a; color: #fff; min-height: clamp(300px, 30vw, 410px);
  padding: 19px; display: flex; flex-direction: column; overflow: hidden;
  position: relative; isolation: isolate;
}
.service-art { position: absolute; inset: 0; overflow: hidden; z-index: -2; background: #39443a; }
.service-photo { display: block; height: 100%; width: 100%; max-width: none; object-fit: cover; object-position: center; transform: scale(1.015); transition: transform .75s cubic-bezier(.18,.68,.27,1), filter .5s ease; }
.service-card::after { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg, rgba(5,16,11,.48) 0%, rgba(5,16,11,0) 31%, rgba(5,16,11,.19) 56%, rgba(5,16,11,.87) 100%); }
.service-card:hover .service-photo, .service-card:focus-visible .service-photo { transform: scale(1.095); }
.service-card:focus-visible { outline-offset: -4px; }
.service-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 10px; font-weight: 700; letter-spacing: .08em; }
.service-arrow { font-size: 22px; font-weight: 400; width: 33px; height: 33px; display: grid; place-items: center; border: 1px solid #ffffff80; border-radius: 50%; transition: color .25s ease, background-color .25s ease; }
.service-card:hover .service-arrow, .service-card:focus-visible .service-arrow { color: var(--ink); background: var(--lime); border-color: var(--lime); }
.service-bottom { margin-top: auto; display: flex; flex-direction: column; gap: 9px; }
.service-bottom strong { font: 500 clamp(20px, 2vw, 29px)/1.08 var(--font-head); letter-spacing: -.045em; }
.service-bottom small { font-size: 10px; color: #eef3eacc; }
.service-image-note { margin-top: 10px; font-size: 8px; font-weight: 700; letter-spacing: .15em; color: #f1f4e6aa; }
@media (prefers-reduced-motion: reduce) { .service-photo { transition: none; } }

/* APPLICATIONS */
.applications { padding-top: 6px; }
.section-divider { display: flex; justify-content: space-between; margin-bottom: 26px; padding-bottom: 13px; border-bottom: 1px solid var(--line); font-size: 10px; font-weight: 700; letter-spacing: .14em; }
.application { display: grid; grid-template-columns: 1fr 1fr; min-height: 475px; overflow: hidden; margin-bottom: 16px; }
.application-light { background: #e7eae3; }
.application-dark { background: var(--dark); color: #eff5eb; }
.application-text { padding: clamp(34px, 4.2vw, 68px); display: flex; align-items: start; flex-direction: column; }
.application-text h3 { font-size: clamp(35px, 3.4vw, 54px); margin: 12px 0 22px; }
.application-text h3 em, .contact-intro h2 em, .about-text h2 em { font-weight: 400; color: #778b79; font-style: normal; }
.application-dark h3 em { color: #a5b5a9; }
.application-text > p:not(.kicker) { max-width: 490px; color: #5d695e; font-size: 14px; margin-bottom: 18px; }
.application-dark .application-text > p:not(.kicker) { color: #b4c4b7; }
.application .kicker { font-size: 10px; margin-bottom: 5px; }
.tag-list { display: flex; flex-wrap: wrap; gap: 7px; list-style: none; margin: 0 0 30px; padding: 0; }
.tag-list li { border: 1px solid #c6cec2; border-radius: 30px; padding: 6px 11px; font-size: 10px; font-weight: 600; }
.application-dark .tag-list li { border-color: #526358; color: #e0e9dd; }
.application-text .inline-arrow { margin-top: auto; }
.application-visual { position: relative; min-height: 420px; overflow: hidden; display: grid; place-items: center; isolation: isolate; }
.application-count, .visual-caption { position: absolute; left: 26px; z-index: 2; color: #f5f9f0; font-size: 10px; font-weight: 700; letter-spacing: .13em; }
.application-count { top: 24px; }
.visual-caption { bottom: 22px; }
.visual-architecture { background: radial-gradient(circle at 50% 60%,#d7dfd0,#6e8276 75%,#445b50); }
.architecture-scene { position: absolute; inset: 15% 7% 0; perspective: 550px; }
.architecture-hall { position: absolute; inset: 0 7% 8%; clip-path: polygon(0 2%,100% 2%,72% 65%,28% 65%); background: linear-gradient(90deg,#586a60 0%,#a0b1a0 30%,#d9e3d1 50%,#8a9d8f 70%,#4b6256 100%); }
.architecture-door { position: absolute; width: 26%; height: 47%; bottom: 25%; left: 37%; background: #e8f0d9; border: 12px solid #6d8071; box-shadow: inset 0 0 0 2px #b1bcb2; }
.architecture-window { position: absolute; width: 22%; height: 40%; top: 12%; right: 4%; border: 7px solid #495c4e; background: linear-gradient(140deg,#d3f0d8,#839c8f); }
.architecture-floor { position: absolute; left: -8%; right: -8%; bottom: 0; height: 47%; background: repeating-linear-gradient(100deg, transparent 0 80px,#ffffff19 81px 83px), linear-gradient(#a8b5a8,#506456); clip-path: polygon(36% 0,64% 0,100% 100%,0 100%); }
.visual-business { background: radial-gradient(circle at 47% 48%,#698074,#192f24 57%,#091610); }
.business-scene { width: min(65%,310px); aspect-ratio: 1; display: grid; place-items: center; position: relative; }
.business-scene:before, .business-scene:after { content: ''; position: absolute; inset: 0; border: 1px solid #d7f9c0; border-radius: 50%; }
.business-scene:after { inset: 0 33%; }
.business-globe { font: 500 clamp(65px, 7vw, 105px)/1 var(--font-head); color: var(--lime); letter-spacing: -.1em; z-index: 2; }
.business-dash { position: absolute; inset: 33% 0; border: 1px solid #def2d1aa; border-radius: 50%; }
.visual-museum { background: linear-gradient(140deg,#73867e,#c2c9b9 46%,#6f8177); }
.museum-scene { display: flex; align-items: center; justify-content: space-around; gap: 25px; width: 85%; height: 80%; perspective: 700px; background: linear-gradient(#9aa89b,#667a6b); padding: 16% 9%; clip-path: polygon(5% 4%,95% 4%,100% 90%,0 90%); box-shadow: 0 15px 60px #18251b44; }
.museum-frame { width: 27%; aspect-ratio: .7; flex: none; background: radial-gradient(circle at 60% 45%,#9fba8b 15%,#536b5b 18%,#364d40 60%,#263d31); border: 11px solid #d8dccf; outline: 3px solid #536c59; box-shadow: 8px 13px 23px #28382b66; }
.museum-frame.f2 { transform: scale(1.2); background: linear-gradient(135deg,#c4d4ae 35%,#506a5e 36% 60%,#e1e9d6 61%); }
.visual-event { background: radial-gradient(ellipse at center,#354c42,#0c1813 72%); }
.event-scene { position: relative; width: min(68%,330px); aspect-ratio: 1; display: grid; place-items: center; }
.event-circle { position: absolute; border: 1px solid #d8f6c190; border-radius: 50%; inset: 0; }
.event-circle.a { transform: rotateX(58deg); }
.event-circle.b { transform: rotateY(62deg); }
.event-circle.c { inset: 19%; border-color: #c9fd4baa; }
.event-center { color: var(--lime); font: 700 clamp(60px, 9vw, 115px)/1 var(--font-head); }

/* WORKS */
.works { background: var(--paper); }
.portfolio-tools { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 28px; }
.filter-btn { border: 1px solid #c9d0c6; background: transparent; color: #5f6861; padding: 10px 17px; font-size: 12px; font-weight: 700; transition: .2s; }
.filter-btn.is-active, .filter-btn:hover { border-color: var(--ink); background: var(--ink); color: white; }
.filter-btn span { padding-left: 7px; font-size: 10px; opacity: .7; }
.portfolio-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 35px 17px; }
.project-visual { height: clamp(240px, 29vw, 380px); position: relative; overflow: hidden; display: grid; place-items: center; isolation: isolate; }
.project-visual:after { content:''; pointer-events: none; position: absolute; inset: 15px; border: 1px solid #ffffff48; }
.project-one { background: radial-gradient(ellipse at 63% 45%,#c5d6be,#7b9081 60%,#3c5847); }
.project-two { background: radial-gradient(ellipse at 47% 50%,#a0b5a2,#3d584a 67%,#182920); }
.project-three { background: radial-gradient(ellipse at 60% 65%,#d3ddcb,#829788 60%,#415d4f); }
.project-four { background: radial-gradient(ellipse at 50% 50%,#526f59,#203c2e 70%,#0e241a); }
.project-one:before, .project-two:before, .project-three:before, .project-four:before { content:''; position: absolute; width: 240px; height: 240px; border: 1px solid #eff8eaaa; border-radius: 50%; box-shadow: 0 0 0 28px #eaf3e816, 0 0 0 75px #eaf3e80b; }
.project-two:before { border-radius: 8px; transform: rotate(45deg); }
.project-three:before { width: 180px; height: 280px; border-radius: 50% 50% 0 0; }
.project-four:before { transform: rotateY(64deg); }
.project-placeholder { position: relative; z-index: 1; font: 400 clamp(78px, 10vw, 140px)/1 var(--font-head); color: #e8f0dfb8; letter-spacing: -.11em; }
.project-note { position: absolute; bottom: 25px; left: 25px; z-index: 1; color: #e8f3e8; font-size: 10px; font-weight: 700; letter-spacing: .12em; }
.project-info { display: flex; justify-content: space-between; align-items: start; gap: 15px; padding-top: 17px; }
.project-type { font-size: 10px; letter-spacing: .11em; color: #6f7c6f; font-weight: 700; }
.project-info h3 { font: 500 clamp(22px, 2.2vw, 32px)/1.3 var(--font-head); letter-spacing: -.045em; margin: 6px 0 0; }
.project-lock { width: 35px; height: 35px; border: 1px solid #cad1c9; display: grid; place-items: center; color: #879184; }
.portfolio-footnote { color: #78837a; font-size: 11px; margin: 38px 0 0; }

/* PORTFOLIO V2: identificadores reales sin simular miniaturas */
.project-1 { background: radial-gradient(ellipse at 60% 42%,#c5d6be,#7b9081 60%,#3c5847); }
.project-2 { background: radial-gradient(ellipse at 48% 52%,#a0b5a2,#3d584a 67%,#182920); }
.project-3 { background: radial-gradient(ellipse at 60% 65%,#d3ddcb,#829788 60%,#415d4f); }
.project-4 { background: radial-gradient(ellipse at 50% 50%,#526f59,#203c2e 70%,#0e241a); }
.project-1:before,.project-2:before,.project-3:before,.project-4:before { content:''; position:absolute; width:240px; height:240px; border: 1px solid #eff8eaaa; border-radius: 50%; box-shadow: 0 0 0 28px #eaf3e816, 0 0 0 75px #eaf3e80b; }
.project-2:before { border-radius: 8px; transform: rotate(45deg); }
.project-3:before { width:180px; height:280px; border-radius: 50% 50% 0 0; }
.project-4:before { transform: rotateY(64deg); }
.project-format { position:absolute; z-index:2; top:24px; left:25px; display:inline-flex; padding:9px 12px; color:#f5fee8; background:#10241bbf; backdrop-filter:blur(8px); font-size:10px; font-weight:700; letter-spacing:.09em; }
.project-cover { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; }
.project-cover + .project-format { background:#111c; }
.project-description { margin:10px 0 0; max-width:440px; font-size:13px; color:#6a756d; }
.project-copy { min-width:0; }
.project-open { width:40px; height:40px; flex:none; display:grid; place-items:center; border:1px solid var(--ink); color:var(--ink); transition:background .2s,color .2s; }
.project-open:hover { background:var(--ink); color:#fff; }
.project-overlay-link { position:absolute; inset:0; z-index:3; }
.project-overlay-link:focus-visible { outline:3px solid var(--lime); outline-offset:-6px; }
.application-reference { display:grid; gap:5px; margin:26px 0 12px; padding-top:16px; border-top:1px solid currentColor; font-size:10px !important; line-height:1.4; letter-spacing:.10em; opacity:.9; }
.application-reference a { display:block; width:fit-content; font-size:13px; font-weight:700; letter-spacing:normal; text-decoration:underline; text-underline-offset:4px; }
.application-reference a:hover { color:#7b9e25; }
.application-reference a span { margin-left:7px; }
/* FAQ */
.faq { background: #e8ece4; }
.faq-grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(45px, 8vw, 140px); }
.faq-head p:not(.kicker) { max-width: 300px; margin-top: 30px; color: #5f6b60; }
.faq-head .inline-arrow { margin-top: 12px; }
.faq-list { border-top: 1px solid #b8c2b7; }
.faq-list details { border-bottom: 1px solid #b8c2b7; }
.faq-list summary { padding: 22px 4px 22px 0; display: flex; align-items: center; justify-content: space-between; gap: 15px; list-style: none; cursor: pointer; font: 500 clamp(16px, 1.5vw, 20px)/1.35 var(--font-head); letter-spacing: -.035em; }
.faq-list summary::-webkit-details-marker { display: none; }
.details-icon { font: 400 24px/1 var(--font-head); color: #6c796f; transition: transform .2s; }
.faq-list details[open] .details-icon { transform: rotate(45deg); }
.faq-list details p { max-width: 565px; color: #5c685f; margin-bottom: 23px; font-size: 13px; }

/* ABOUT */
.about { background: var(--paper); }
.about-grid { display: grid; grid-template-columns: .88fr 1.12fr; gap: clamp(42px, 8vw, 130px); align-items: center; }
.about-art { min-height: 540px; background: linear-gradient(150deg,#d2ded0,#7c9a83 65%,#3d6050); position: relative; display: grid; place-items: center; overflow: hidden; }
.about-art:before, .about-art:after { content: ''; position: absolute; height: 130%; width: 1px; left: 50%; top: -15%; background: #eff7e064; transform: rotate(45deg); }
.about-art:after { transform: rotate(-45deg); }
.about-circle { width: min(73%,360px); aspect-ratio: 1; border: 1.5px solid #f2ffe0c7; border-radius: 50%; position: relative; display: grid; place-items: center; box-shadow: 0 0 0 34px #ecf6df18, 0 0 0 70px #ecf6df12; }
.about-circle:before { content: ''; position: absolute; inset: 0 31%; border: 1px solid #f2ffe0b5; border-radius: 50%; }
.about-circle:after { content: ''; position: absolute; inset: 31% 0; border: 1px solid #f2ffe0b5; border-radius: 50%; }
.about-globe { position: relative; z-index: 2; color: #f7faec; font: 500 150px/1 var(--font-head); letter-spacing: -.13em; }
.about-globe span { vertical-align: top; font-size: 35px; letter-spacing: 0; }
.about-art-caption { position: absolute; left: 26px; bottom: 23px; color: white; font-size: 10px; font-weight: 700; letter-spacing: .12em; }
.about-text h2 { font-size: clamp(48px, 5.6vw, 85px); margin: 24px 0 31px; }
.about-text > p:not(.kicker) { max-width: 490px; font-size: 15px; color: #536055; }
.about-text .about-note { margin-top: 25px; font-size: 11px !important; color: #929b90 !important; }
.about-text .inline-arrow { margin-top: 20px; }

/* CONTACT */
.contact { background: var(--dark); color: white; }
.contact-grid { display: grid; grid-template-columns: 1fr .95fr; gap: clamp(40px, 7vw, 110px); }
.contact-intro h2 { font-size: clamp(52px, 6.5vw, 98px); margin: 40px 0 28px; }
.contact-intro h2 em { color: var(--lime); }
.contact-intro > p:not(.kicker) { font-size: 15px; color: #b0c1b4; max-width: 360px; }
.contact-deco { display: block; margin-top: clamp(60px, 10vw, 170px); color: var(--lime); font: 400 90px/1 var(--font-head); }
.contact-panel { padding-top: 10px; }
.contact-panel form { display: grid; gap: 25px; }
.field-pair { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
.contact-panel label { display: flex; flex-direction: column; gap: 10px; color: #dbe8db; font-size: 12px; font-weight: 600; }
.contact-panel input, .contact-panel select, .contact-panel textarea { display: block; width: 100%; border: 1px solid #496052; border-radius: 0; outline: 0; color: white; background: #21352a; padding: 14px 16px; font: 400 14px var(--font-body); }
.contact-panel input::placeholder, .contact-panel textarea::placeholder { color: #91a79a; }
.contact-panel input:focus, .contact-panel select:focus, .contact-panel textarea:focus { border-color: var(--lime); }
.contact-panel select { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Cpath d='m4 7 6 6 6-6' stroke='%23c9fd4b' stroke-width='1.5' fill='none'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 13px center; }
.contact-panel select option { color: #111; }
.contact-panel textarea { min-height: 132px; resize: vertical; }
.contact-submit { width: 100%; text-align: left; margin-top: 2px; }
.form-feedback { margin: 0; color: var(--lime); font-size: 12px; }
.form-feedback:empty { display: none; }
.form-note { margin: -12px 0 0; color: #8da394; font-size: 11px; line-height: 1.55; }

/* FOOTER */
.site-footer { background: #0d1711; color: #ecf7e6; }
.footer-main { display: flex; align-items: center; gap: 30px; padding-block: 42px; border-bottom: 1px solid #314234; }
.footer-brand { color: #f2faee; font-size: 27px; }
.footer-brand .brand-mark { width: 44px; height: 44px; }
.footer-links { display: flex; gap: 24px; margin-left: auto; font-size: 12px; }
.back-top { border: 1px solid #57705e; width: 38px; height: 38px; display: grid; place-items: center; font-size: 24px; }
.back-top:hover { color: var(--ink); background: var(--lime); }
.footer-bottom { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding-block: 22px; color: #8ca292; font-size: 9px; font-weight: 700; letter-spacing: .09em; }

@media (max-width: 1200px) {
  .hero h1 { font-size: clamp(54px, 6vw, 78px); }
  .application-text h3 { font-size: clamp(33px, 3.6vw, 48px); }
  .application-text { padding: 35px; }
  .application { min-height: 440px; }
  .visual-surface { height: 560px; }
}
@media (max-width: 900px) {
  .site-header { height: 74px; }
  .desktop-nav, .header-cta { display: none; }
  .menu-toggle { margin-left: auto; display: flex; }
  .hero-grid { grid-template-columns: 1fr 1fr; gap: 24px; }
  .hero h1 { font-size: clamp(51px, 6.8vw, 68px); }
  .visual-surface { height: 565px; }
  .services-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .service-card { min-height: 350px; }
  .service-bottom strong { font-size: 28px; }
  .application { grid-template-columns: 1fr 1fr; min-height: 430px; }
  .application-text { padding: 25px; }
  .application-text h3 { font-size: 36px; }
  .application-visual { min-height: 390px; }
  .faq-grid { gap: 45px; }
  .about-art { min-height: 450px; }
}
@media (max-width: 700px) {
  html { scroll-padding-top: 75px; }
  .section-pad { padding-block: 73px; }
  .hero { padding-top: 32px; padding-bottom: 22px; }
  .hero-grid { grid-template-columns: 1fr; }
  .hero-copy { padding-top: 12px; }
  .hero h1 { font-size: clamp(55px, 10.8vw, 80px); margin: 30px 0 22px; }
  .hero-description { font-size: 15px; }
  .hero-actions { margin-bottom: 37px; }
  .hero-meta { padding-bottom: 0; margin-top: 0; }
  .visual-surface { height: 490px; min-height: 440px; }
  .visual-orbit { width: 230px; }
  .hero-bottom { padding-top: 22px; }
  .intro-inner { align-items: flex-start; gap: 22px; }
  .symbol-asterisk { font-size: 65px; }
  .intro-inner p { font-size: 27px; }
  .intro-side { display: none; }
  .section-head { flex-direction: column; align-items: start; gap: 20px; }
  .section-head h2, .faq h2 { font-size: clamp(46px, 9vw, 66px); }
  .section-intro { width: 100%; max-width: 430px; }
  .services-grid { gap: 10px; }
  .service-card { min-height: 305px; padding: 16px; }
  .service-bottom strong { font-size: 24px; }
  .service-bottom small { font-size: 10px; }
  .application { grid-template-columns: 1fr; }
  .application-dark .application-visual { order: 0; }
  .application-dark .application-text { order: 1; }
  .application-visual { min-height: 340px; }
  .application-text { min-height: 345px; padding: 31px; }
  .application-text h3 { font-size: 42px; }
  .faq-grid, .about-grid, .contact-grid { grid-template-columns: 1fr; }
  .faq-grid { gap: 35px; }
  .faq-head p:not(.kicker) { margin-top: 22px; }
  .about-art { min-height: 430px; }
  .about-text h2 { font-size: 58px; }
  .contact-grid { gap: 30px; }
  .contact-intro h2 { font-size: 60px; margin: 23px 0 20px; }
  .contact-deco { display: none; }
  .footer-main { flex-wrap: wrap; gap: 25px; }
  .footer-links { order: 3; width: 100%; margin: 0; }
  .back-top { margin-left: auto; }
}
@media (max-width: 460px) {
  .brand { font-size: 21px; }
  .brand-mark { width: 32px; height: 32px; }
  .hero h1 { font-size: clamp(49px, 12vw, 62px); }
  .hero-actions { gap: 20px; }
  .btn { gap: 15px; padding: 16px; }
  .visual-surface { height: 425px; min-height: 425px; }
  .visual-topline, .visual-bottomline { left: 15px; right: 15px; font-size: 8px; }
  .visual-bottomline span:last-child { display: none; }
  .visual-orbit { width: 205px; font-size: 70px; }
  .service-card { padding: 13px; min-height: 260px; }
  .service-art { min-height: 125px; }
  .service-bottom strong { font-size: 20px; }
  .service-bottom small { font-size: 9px; }
  .service-top { font-size: 8px; }
  .application-visual { min-height: 305px; }
  .application-text { padding: 28px 21px; }
  .application-text h3 { font-size: 36px; }
  .portfolio-grid { grid-template-columns: 1fr; gap: 24px; }
  .project-visual { height: 265px; }
  .filter-btn { padding: 9px 11px; font-size: 11px; }
  .about-art { min-height: 355px; }
  .about-globe { font-size: 100px; }
  .contact-intro h2 { font-size: 51px; }
  .field-pair { grid-template-columns: 1fr; }
  .footer-links { gap: 18px; flex-wrap: wrap; }
  .footer-bottom span:last-child { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
  .js .reveal { opacity: 1; transform: none; }
}

/* V3 | IMÁGENES Y VISUALIZADORES CON MATERIAL REAL DE NODAL LAB */
.hero-art { object-position: 50% 51%; }
.hero-visual .visual-tint { background: linear-gradient(180deg, rgba(5, 18, 13, .36), transparent 34%, transparent 62%, rgba(5, 18, 13, .54)); }
.visual-orbit { pointer-events: none; background: #12271c19; }
.demo-play { z-index: 2; }
.visual-topline, .visual-bottomline { pointer-events: none; }
.application-photo { position:absolute; width:100%; height:100%; inset:0; object-fit:cover; }
.visual-architecture .application-photo { filter: saturate(.93); }
.application-visual:has(.application-photo)::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,.12),transparent 33%,transparent 55%,rgba(0,0,0,.32)); pointer-events:none; }
.application-visual:has(.application-photo) .application-count,
.application-visual:has(.application-photo) .visual-caption { z-index:2; }
.panorama-canvas-host, .panorama-modal-viewer { position: absolute; inset:0; overflow:hidden; background:#14241d; }
.panorama-canvas { width:100%; height:100%; display:block; cursor:grab; touch-action:none; outline-offset:-4px; }
.panorama-canvas.is-dragging { cursor:grabbing; }
.panorama-canvas-host:not(.panorama-ready)::before,
.panorama-modal-viewer:not(.panorama-ready)::before { content:"CARGANDO FOTOGRAFÍA 360°…"; position:absolute; inset:0; display:grid; place-items:center; pointer-events:none; color:white; letter-spacing:.15em; font-size:11px; }
.panorama-ready::before { display:none !important; }
.demo-active { background:#10211a; }
.demo-toolbar { z-index:5; pointer-events:auto; }
.demo-toolbar-actions { display:flex; gap:8px; align-items:center; }
.demo-toolbar-actions button { white-space:nowrap; }
.demo-toolbar-actions button:first-child { background:#dfe9db; }
.demo-active:fullscreen { width:100vw; height:100dvh; }
.demo-active:fullscreen .panorama-canvas-host { inset:0; }
.panorama-error { position: absolute; inset:0; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:15px; background:var(--dark); color:white; font:500 14px var(--font-body); padding:30px; text-align:center; z-index:3; }
.panorama-error a { color:var(--lime); text-decoration:underline; }
.project-overlay-link { appearance:none; border:0; background:transparent; width:100%; cursor:pointer; }
.project-overlay-link:hover { box-shadow:inset 0 0 0 4px #c9fd4b9c; }
.project-open { background:transparent; cursor:pointer; font-size:20px; }
.project-visual .project-cover { object-position:center center; }
.panorama-modal, .video-modal { border:0; padding:0; color:white; background:var(--dark); width:min(1340px,94vw); max-width:94vw; max-height:94dvh; overflow:hidden; }
.panorama-modal::backdrop, .video-modal::backdrop { background:#06100ae8; backdrop-filter:blur(7px); }
.panorama-modal[open] { display:flex; flex-direction:column; height:min(830px,90dvh); }
.panorama-modal:fullscreen { width:100vw; max-width:none; height:100dvh; max-height:none; }
.panorama-modal-header { display:flex; flex-shrink:0; justify-content:space-between; align-items:center; gap:20px; padding:17px 25px; background:#192b20; border-bottom:1px solid #374d3d; }
.panorama-modal-header .kicker { color:var(--lime); margin:0 0 3px; font-size:9px; }
.panorama-modal-header h2 { font:500 clamp(20px,2.3vw,29px) var(--font-head); margin:0; letter-spacing:-.03em; }
.panorama-modal-header button, .panorama-modal-footer button { border:1px solid #647b68; background:transparent; padding:10px 14px; color:white; white-space:nowrap; font-size:12px; }
.panorama-modal-header button:hover, .panorama-modal-footer button:hover { background:var(--lime); color:var(--ink); border-color:var(--lime); }
.panorama-modal-viewer { position:relative; flex:1; min-height:0; }
.panorama-modal-footer { display:flex; justify-content:space-between; gap:15px; align-items:center; padding:12px 25px; background:#192b20; font:700 10px var(--font-body); letter-spacing:.09em; }
.video-modal[open] { display:flex; flex-direction:column; }
.video-modal-content { width:100%; aspect-ratio:16 / 9; background:#080e0a; max-height:70dvh; }
.video-modal-content iframe { display:block; width:100%; height:100%; border:0; }
.video-modal-note { font-size:11px; margin:0; padding:13px 25px; color:#b6c7b5; background:#192b20; }
@media(max-width:700px) {
  .demo-toolbar { font-size:8px; padding:12px 10px; }
  .demo-toolbar-actions { gap:4px; }
  .demo-toolbar-actions button { padding:7px; font-size:10px; }
  .demo-toolbar-actions button:first-child { display:none; }
  .panorama-modal { width:100vw; max-width:100vw; max-height:100dvh; }
  .panorama-modal[open] { height:100dvh; }
  .panorama-modal-header, .panorama-modal-footer { padding:12px 14px; }
  .panorama-modal-footer { font-size:9px; }
  .panorama-modal-footer button { padding:8px; }
  .panorama-modal-footer span { max-width:200px; }
  .video-modal { width:96vw; max-width:96vw; }
}

/* V4 | INICIO: CARRUSEL ESFÉRICO AUTOMÁTICO + RECORRIDO MANUAL */
.hero-surface { cursor:grab; background:#28342d; }
.hero-surface.is-interactive { cursor:auto; }
.hero-surface:fullscreen { width:100vw; height:100dvh; max-height:none; }
.hero-panorama-host { position:absolute; inset:0; z-index:1; background:transparent; transition:opacity .38s ease; opacity:0; }
.hero-panorama-host.panorama-ready { opacity:1; }
.hero-panorama-host .panorama-canvas { cursor:grab; }
.hero-panorama-host .panorama-canvas.is-dragging { cursor:grabbing; }
.hero-panorama-host:not(.panorama-ready)::before { content:none; }
.hero-panorama-host .panorama-error { background:#15291dbe; font-size:11px; }
.hero-surface .visual-tint { z-index:2; background:linear-gradient(180deg,rgba(7,19,13,.52) 0%, transparent 29%, transparent 54%,rgba(7,19,13,.75) 100%); }
.hero-surface .visual-topline, .hero-surface .visual-bottomline { z-index:3; pointer-events:none; }
.hero-surface .visual-topline { top:26px; }
.hero-surface .hero-slide-bottom { bottom:27px; align-items:flex-end; gap:18px; }
.hero-slide-label { display:flex; flex-direction:column; min-width:0; align-items:start; gap:8px; text-transform:none; }
.hero-slide-label > span { color:var(--lime); font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; }
.hero-slide-label > strong { color:white; font:500 clamp(19px,2vw,27px)/1.13 var(--font-head); letter-spacing:-.035em; max-width:380px; }
#hero-slide-count { align-self:flex-end; white-space:nowrap; color:#f6ffed; font:600 11px var(--font-body); letter-spacing:.1em; }
.hero-slide-progress { position:absolute; left:27px; bottom:112px; z-index:5; display:flex; gap:7px; align-items:center; }
.hero-slide-dot { width:40px; height:20px; padding:7px 0; border:0; background:none; cursor:pointer; }
.hero-slide-dot > span { display:block; width:100%; height:3px; border-radius:8px; background:rgba(255,255,255,.5); transition:background .2s; }
.hero-slide-dot.is-active > span, .hero-slide-dot:hover > span, .hero-slide-dot:focus-visible > span { background:var(--lime); }
.hero-interaction-tip { position:absolute; z-index:4; top:50%; left:50%; transform:translate(-50%,-50%); display:flex; flex-direction:column; align-items:center; gap:13px; color:white; text-align:center; pointer-events:none; font:700 10px var(--font-body); letter-spacing:.13em; text-shadow:0 1px 9px #071c15; transition:opacity .35s; max-width:220px; }
.hero-interaction-tip .tip-symbol { display:grid; place-items:center; width:80px; height:80px; background:#111f19a8; border:1px solid #ffffff80; border-radius:50%; font-size:34px; font-weight:400; }
.hero-surface.is-interactive .hero-interaction-tip { opacity:0; }
.hero-view-actions { position:absolute; z-index:7; right:26px; top:67px; display:flex; gap:8px; flex-direction:column; align-items:flex-end; }
.hero-view-actions button { color:white; border:1px solid #ffffff88; border-radius:2px; background:#12251dcc; backdrop-filter:blur(8px); padding:9px 11px; font:600 10px var(--font-body); cursor:pointer; }
.hero-view-actions button:hover, .hero-view-actions button:focus-visible { background:var(--lime); border-color:var(--lime); color:var(--ink); }
.hero-view-actions button[hidden] { display:none; }
.hero-surface:fullscreen .hero-slide-progress { bottom:112px; }
.hero-surface:fullscreen .hero-slide-bottom { bottom:30px; }
.hero-surface .hero-art { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
@media(max-width:700px) {
  .hero-surface .visual-topline { top:20px; }
  .hero-surface .visual-topline .visual-counter { display:none; }
  .hero-surface .hero-slide-bottom { bottom:23px; left:19px; right:19px; }
  .hero-slide-progress { left:19px; bottom:111px; }
  .hero-slide-dot { width:30px; }
  .hero-view-actions { top:55px; right:17px; }
  .hero-slide-label > strong { font-size:22px; }
  .hero-interaction-tip .tip-symbol { width:60px; height:60px; font-size:25px; }
  .hero-interaction-tip { font-size:8px; }
}
@media(max-width:460px) {
  .hero-slide-progress { bottom:113px; }
  .hero-slide-label > strong { font-size:21px; }
  .hero-surface .hero-slide-bottom { font-size:10px; }
  .hero-view-actions .hero-fullscreen span { display:none; }
}
@media(prefers-reduced-motion:reduce) {
  .hero-interaction-tip { transition:none; }
  .hero-panorama-host { transition:none; }
}
/* La imagen de respaldo sigue visible si WebGL no está disponible. */
@keyframes heroPosterPan { from { transform:scale(1.035) translateX(-.65%); } to { transform:scale(1.055) translateX(.65%); } }
.hero-surface .hero-art { animation:heroPosterPan 14s ease-in-out infinite alternate; }
.hero-surface .hero-panorama-host:not(.panorama-ready) { opacity:0; pointer-events:none; }
@media(prefers-reduced-motion:reduce) { .hero-surface .hero-art { animation:none; } }

/* V6 | Real estate: presentación comercial y video del proyecto */
.application-realestate { display: block; background: #e9eee4; padding: clamp(24px,4.5vw,66px); margin-bottom: 16px; overflow: visible; }
.re-heading { display: grid; grid-template-columns: 1.45fr .75fr; align-items: end; gap: clamp(26px,4vw,72px); margin-bottom: clamp(28px,3.2vw,44px); }
.re-heading .kicker { margin-bottom: 22px; }
.re-heading h3 { font: 500 clamp(38px,4.2vw,69px)/1.08 var(--font-head); letter-spacing: -.065em; margin: 0; }
.re-heading h3 em { font-style: normal; color: #718572; }
.re-lead { font-size: clamp(14px,1.15vw,16px); color: #546255; margin: 0 0 5px; max-width: 410px; }
.re-showcase { background: #f6f7f3; border: 1px solid #cbd4c7; }
.re-video-frame { position: relative; aspect-ratio: 16/8.2; overflow: hidden; background: #15221d; }
.re-video { display: block; width: 100%; height: 100%; object-fit: cover; background:#15221d; }
.re-video-label { position:absolute; top: 20px; left: 22px; padding: 8px 12px; background: #0b1711be; color: white; font-size: 10px; font-weight: 700; letter-spacing: .09em; pointer-events:none; backdrop-filter: blur(8px); display:flex; gap: 9px; align-items:center; }
.re-status-dot { flex:none; width: 6px; height: 6px; border-radius: 50%; background: var(--lime); }
.re-project-bar { display: flex; gap: 24px; align-items: center; justify-content: space-between; padding: clamp(18px,2vw,28px); }
.re-project-heading { display:flex; flex-direction:column; gap:2px; }
.re-project-overline { color:#738071; font-size:10px; letter-spacing: .12em; font-weight: 700; }
.re-project-heading strong { font: 600 clamp(22px,2.3vw,32px)/1.2 var(--font-head); letter-spacing: -.05em; }
.re-project-info { color:#657365; font-size:12px; }
.re-project-action { display:flex; align-items:flex-end; flex-direction:column; gap: 8px; }
.re-soon { color:#657365; font-size:9px; font-weight:700; letter-spacing:.08em; text-align:right; }
.re-tour-btn { min-width: 232px; }
.re-services-head { display:flex; gap:24px; justify-content:space-between; align-items:end; padding: clamp(42px,5vw,74px) 0 19px; }
.re-services-head h4 { font: 500 clamp(24px,2.6vw,37px)/1.13 var(--font-head); letter-spacing:-.055em; margin:0; }
.re-services-head span { color:#7d8a7a; font-size:10px; font-weight:700; letter-spacing:.09em; text-align:right; }
.re-services-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:#cbd4c9; border:1px solid #cbd4c9; }
.re-service { display:flex; flex-direction:column; align-items:start; min-height:246px; padding:clamp(20px,2.1vw,30px); background:#f8f9f5; }
.re-service-number { font: 600 11px var(--font-body); color:#6c836b; margin-bottom: 27px; }
.re-service h5 { font:500 clamp(19px,1.7vw,24px)/1.22 var(--font-head); letter-spacing:-.045em; margin:0 0 13px; }
.re-service p { color:#657268; font-size:12px; line-height:1.55; margin: 0; }
.re-bottom-cta { display:flex; align-items:center; justify-content:space-between; gap: 28px; padding-top: 28px; }
.re-bottom-cta > div { display:flex; flex-direction:column; gap: 5px; }
.re-bottom-cta > div > span { color:#758475; font-size:10px; font-weight:700; letter-spacing:.11em; }
.re-bottom-cta strong { font:500 clamp(20px,2vw,27px)/1.2 var(--font-head); letter-spacing:-.045em; }
@media(max-width:1050px){ .re-heading { grid-template-columns:1fr; gap:17px; } .re-lead { max-width:700px; } .re-services-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .re-service { min-height:196px; } }
@media(max-width:700px){ .application-realestate { padding: 22px 15px 28px; } .re-heading h3 { font-size:clamp(34px,7.8vw,52px); } .re-video-frame { aspect-ratio:16/10; } .re-video-label { top:12px;left:12px;font-size:8px; } .re-project-bar { flex-direction:column; align-items:stretch; gap:22px; } .re-project-action { align-items:stretch; } .re-soon { text-align:left; } .re-tour-btn { width:100%; min-width:0; } .re-services-head { flex-direction:column; align-items:start; gap:8px; padding-top:38px; } .re-services-head span { text-align:left; } .re-bottom-cta { align-items:start; flex-direction:column; } }
@media(max-width:440px){ .re-heading h3 {font-size:35px;} .re-services-grid { grid-template-columns:1fr; } .re-service { min-height:0; padding:20px; } .re-service-number { margin-bottom:12px; } .re-video-frame { aspect-ratio:16/11; } }
@media(prefers-reduced-motion: reduce){ .re-video { scroll-behavior: auto; } }

/* Página exclusiva del recorrido Torre Mulieres, aún pendiente de cargar */
.tour-page { min-height:100vh; }
.tour-page .site-header { position:relative; }
.tour-page-main { padding-top: clamp(40px,6vw,90px); padding-bottom: 96px; }
.tour-back { display:inline-flex; gap:12px; align-items:center; border-bottom:1px solid #869384; font-size:12px; font-weight:700; margin-bottom:clamp(40px,5vw,70px); padding-bottom:6px; }
.tour-hero { display:grid; grid-template-columns:1.3fr .7fr; gap:clamp(30px,5vw,75px); align-items:end; margin-bottom:32px; }
.tour-hero h1 { font-size: clamp(55px,7vw,110px); line-height:.97; margin:10px 0 0; }
.tour-hero h1 em { font-weight:400; font-style:normal; color:#768c7b; }
.tour-summary { display:flex; flex-direction:column; align-items:start; gap:14px; }
.tour-summary p { margin:0; max-width:400px; color:#637065; font-size:15px; }
.tour-state { display:inline-flex; align-items:center; gap:9px; font-weight:700; font-size:10px; letter-spacing:.1em; color:#476138; border:1px solid #a8c692; padding:9px 12px; }
.tour-scene { position:relative; height:clamp(350px,47vw,630px); background:#30423a; overflow:hidden; }
.tour-scene img { width:100%; height:100%; object-fit:cover; }
.tour-scene:after { content:''; position:absolute; inset:0; background: linear-gradient(to top,#0e211bc9,transparent 68%); pointer-events:none; }
.tour-scene-card { z-index:2; position:absolute; left:clamp(18px,3vw,46px); right:clamp(18px,3vw,46px); bottom:clamp(20px,3vw,46px); color:#fff; max-width:560px; }
.tour-scene-card .kicker { color:#d1f389; margin-bottom:9px; }
.tour-scene-card h2 {font-size:clamp(31px,3.1vw,48px); line-height:1.1; margin:0 0 12px; }
.tour-scene-card p { margin:0; color:#dae2d8; font-size:14px; }
.tour-tail { display:flex; align-items:center; justify-content:space-between; padding:25px 0; gap:20px; color:#68796b; font-size:12px; }
@media(max-width:700px){ .tour-hero { grid-template-columns:1fr; } .tour-hero h1 { font-size:clamp(53px,12vw,80px); } .tour-scene { height:470px; } .tour-tail { flex-direction:column; align-items:start; } }


/* V7 | Negocios y Google Maps / caso real Librería Glaxara */
.application-business { display:block; background:#0f2119; color:#f3f8ed; padding:clamp(24px,4.5vw,66px); margin-bottom:16px; overflow:visible; }
.business-heading { display:grid; grid-template-columns:1.3fr .7fr; gap:clamp(24px,4vw,70px); align-items:end; margin-bottom:clamp(24px,3vw,42px); }
.business-heading .kicker { color:#bad5bb; margin-bottom:22px; }
.business-heading h3 { font:500 clamp(37px,4.1vw,67px)/1.09 var(--font-head); letter-spacing:-.064em; margin:0; }
.business-heading h3 em { font-style:normal; color:var(--lime); }
.business-lead { margin:0 0 4px; max-width:410px; color:#b7c8bb; font-size:clamp(14px,1.13vw,16px); line-height:1.65; }
.business-showcase { background:#1a3025; border:1px solid #385044; }
.business-stage { position:relative; height:auto; aspect-ratio:16/8.2; min-height:360px; isolation:isolate; background:#20332b; overflow:hidden; }
.business-preview,.business-panorama { position:absolute; inset:0; width:100%; height:100%; }
.business-preview { object-fit:cover; }
.business-panorama { z-index:2; opacity:0; transition:opacity .38s ease; }
.business-panorama.panorama-ready { opacity:1; }
.business-stage-gradient { position:absolute; inset:0; z-index:3; pointer-events:none; background:linear-gradient(180deg,rgba(4,12,8,.54),transparent 24%,transparent 70%,rgba(4,12,8,.55)); }
.business-stage-eyebrow { position:absolute; top:20px; left:22px; z-index:4; display:flex; gap:9px; align-items:center; padding:9px 12px; background:#0b1711c7; font-size:10px; font-weight:700; letter-spacing:.09em; color:#fff; pointer-events:none; }
.business-hotspots { position:absolute; inset:0; z-index:5; pointer-events:none; }
.business-hotspot { pointer-events:auto; position:absolute; width:42px; height:42px; margin:-21px; border:1px solid #f6fff4; border-radius:50%; background:#c5fa7e; color:#18251a; font:600 25px/1 var(--font-head); display:grid; place-items:center; box-shadow:0 3px 22px #09190caa,0 0 0 8px #c5fa7e44; cursor:pointer; transition:transform .2s,box-shadow .2s; }
.business-hotspot:where(:hover,:focus-visible) { transform:scale(1.1); box-shadow:0 5px 25px #09190cbb,0 0 0 11px #c5fa7e44; }
.business-hotspot[hidden] { display:none!important; }
.business-hotspot-nav { background:#f5f8f1; }
.business-spot-panel { position:absolute; right:18px; top:68px; width:min(315px,calc(100% - 36px)); z-index:8; background:#f4f7ef; color:#182a1c; padding:24px 25px 23px; box-shadow:0 14px 50px #06120a99; }
.business-spot-panel[hidden] { display:none; }
.business-panel-eyebrow { display:block; font-size:9px; color:#718473; letter-spacing:.13em; font-weight:700; margin-bottom:13px; }
.business-spot-panel strong { display:block; font:600 22px/1.13 var(--font-head); letter-spacing:-.04em; max-width:240px; }
.business-spot-panel p { font-size:12px; line-height:1.6; margin:12px 0 0; color:#5a6e60; }
.business-spot-close { position:absolute; right:12px; top:11px; border:0; background:transparent; color:#3b5743; font-size:22px; cursor:pointer; padding:0 5px; }
.business-stage-actions { position:absolute; bottom:18px; left:22px; right:22px; z-index:6; display:flex; justify-content:space-between; align-items:center; gap:12px; pointer-events:none; color:#fff; font-size:10px; letter-spacing:.09em; font-weight:700; text-shadow:0 2px 5px #0008; }
.business-stage-actions button { pointer-events:auto; border:1px solid #f0fff4a6; background:#102016a6; color:#fff; padding:12px 14px; display:flex; gap:10px; align-items:center; font:700 10px var(--font-body); letter-spacing:.08em; cursor:pointer; }
.business-project-bar { display:flex; align-items:center; justify-content:space-between; gap:20px; padding:clamp(17px,2.1vw,27px); }
.business-project-copy { display:flex; flex-direction:column; gap:3px; min-width:0; }
.business-project-copy>span { color:#a1b9a4; letter-spacing:.12em; font-size:9px; font-weight:700; }
.business-project-copy strong { font:600 clamp(23px,2.35vw,33px)/1.2 var(--font-head); letter-spacing:-.045em; }
.business-project-copy small { font-size:12px; color:#a7bcab; }
.business-scene-switch { display:flex; flex:none; gap:0; border:1px solid #526e59; padding:4px; }
.business-scene-tab { padding:12px 14px; color:#cfdfcf; border:0; background:transparent; font:600 12px var(--font-body); cursor:pointer; }
.business-scene-tab.is-active { color:#13251a; background:var(--lime); }
.business-maps-link { display:inline-flex; align-items:center; justify-content:center; flex:none; gap:14px; padding:15px 19px; text-decoration:none; font-weight:700; font-size:12px; color:#182719; background:#f7faf4; transition:background .2s; }
.business-maps-link:hover { background:var(--lime); }
.business-showcase-note { padding:12px clamp(17px,2.1vw,27px) 16px; border-top:1px solid #385044; color:#9eb5a4; font-size:10px; line-height:1.5; display:flex; align-items:baseline; gap:9px; }
.mini-status-dot { width:6px; height:6px; border-radius:50%; flex:none; background:var(--lime); }
.business-services-title { display:flex; align-items:end; justify-content:space-between; gap:20px; padding:clamp(40px,4vw,68px) 0 20px; }
.business-services-title h4 { margin:0; font:500 clamp(25px,2.65vw,37px)/1.1 var(--font-head); letter-spacing:-.05em; }
.business-services-title span { color:#a4bda9; font-size:10px; letter-spacing:.11em; font-weight:700; text-align:right; }
.business-services { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; background:#3d5747; border:1px solid #3d5747; }
.business-service { background:#172f21; display:flex; flex-direction:column; padding:clamp(22px,2.3vw,33px); min-height:255px; }
.business-service-index { color:var(--lime); font-size:11px; font-weight:700; margin-bottom:32px; }
.business-service h5 { margin:0 0 14px; font:500 clamp(21px,2vw,28px)/1.14 var(--font-head); letter-spacing:-.045em; }
.business-service p { margin:0; font-size:13px; color:#a5bdaa; line-height:1.6; }
.business-bottom-cta { display:flex; align-items:center; justify-content:space-between; gap:25px; padding-top:30px; }
.business-bottom-cta>div { display:flex; flex-direction:column; gap:6px; }
.business-bottom-cta>div>span { font-size:10px; color:#a0b8a6; letter-spacing:.11em; font-weight:700; }
.business-bottom-cta strong { font:500 clamp(20px,2vw,28px)/1.25 var(--font-head); letter-spacing:-.05em; }
.business-bottom-cta .inline-arrow { color:#eef8ef; }
.business-stage:fullscreen { width:100vw; height:100vh; aspect-ratio:auto; min-height:0; background:#0c2112; }
.business-stage:fullscreen .business-hotspot { width:50px;height:50px; margin:-25px; }
@media(max-width:1080px){ .business-heading { grid-template-columns:1fr; gap:18px; } .business-lead { max-width:760px; } .business-project-bar { flex-wrap:wrap; } .business-maps-link { margin-left:auto; } }
@media(max-width:760px){
 .application-business { padding:25px 15px 28px; }
 .business-heading h3 { font-size:clamp(36px,7.2vw,52px); }
 .business-stage { aspect-ratio:4/4.1; min-height:340px; }
 .business-stage-eyebrow { top:12px;left:12px;font-size:8px; }
 .business-stage-actions { left:12px;right:12px;bottom:12px;font-size:8px; }
 .business-stage-actions>span { max-width:190px; }
 .business-spot-panel { top:54px;right:9px;width:min(285px,calc(100% - 18px));padding:20px; }
 .business-hotspot { width:36px;height:36px;margin:-18px; font-size:22px; }
 .business-project-bar { flex-direction:column; align-items:stretch; }
 .business-scene-switch { width:100%; }
 .business-scene-tab { flex:1; }
 .business-maps-link { margin:0; }
 .business-services { grid-template-columns:1fr; }
 .business-service { min-height:0; padding:23px; }
 .business-service-index { margin-bottom:16px; }
 .business-services-title { flex-direction:column; align-items:start; gap:7px; }
 .business-services-title span { text-align:left; }
 .business-bottom-cta { flex-direction:column; align-items:start; }
}
@media(prefers-reduced-motion:reduce){ .business-hotspot,.business-panorama { transition:none!important; } }

/* V8: mostrar perspectiva de respaldo al bloquearse WebGL. */
.business-panorama.panorama-failed { opacity:0; pointer-events:none; }

/* ======================================================
   NODAL LAB V9 | INSTITUCIONES Y CULTURA
   ====================================================== */
.culture-block { background:#e7ebe4; color:#15251b; padding:clamp(25px,4.5vw,65px); margin-bottom:16px; overflow:hidden; }
.culture-heading { display:grid; grid-template-columns:1.2fr .72fr; align-items:end; column-gap:clamp(25px,5vw,75px); padding-bottom:clamp(34px,4vw,56px); }
.culture-heading .kicker { color:#53674f; font-weight:700; }
.culture-heading h3 { margin:15px 0 0; max-width:950px; font:500 clamp(37px,4.5vw,68px)/1.07 var(--font-head); letter-spacing:-.065em; }
.culture-heading h3 em { font-style:normal; color:#728474; }
.culture-heading>p { margin:0; max-width:500px; color:#5c6a60; line-height:1.65; font-size:clamp(13px,1.15vw,16px); }
.culture-section-label { display:flex; justify-content:space-between; gap:15px; align-items:center; padding:15px 0 14px; border-top:1px solid #afbaac; color:#5d715e; font-size:10px; font-weight:700; letter-spacing:.1em; }
.culture-theatre { background:#10251a; color:#f2f7ee; }
.culture-view-stage { width:100%; height:clamp(350px,45vw,650px); overflow:hidden; position:relative; isolation:isolate; background:#152c20; }
.culture-view-poster { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.culture-view-host { z-index:1; background:transparent; opacity:0; transition:opacity .28s ease; }
.culture-view-host.panorama-ready { opacity:1; }
.culture-view-host:not(.panorama-ready)::before { content:none; }
.culture-view-shading { position:absolute; inset:0; z-index:2; pointer-events:none; background:linear-gradient(180deg,#0610095e 0%,transparent 21%,transparent 68%,#06100983 100%); }
.culture-stage-overline { position:absolute; z-index:3; top:23px; left:24px; color:#fff; display:inline-flex; align-items:center; gap:9px; font-size:10px; letter-spacing:.1em; font-weight:700; text-shadow:0 2px 8px #0008; pointer-events:none; }
.culture-live-dot { background:#c1f44b; border-radius:100%; width:7px; height:7px; }
.culture-world-spot { position:absolute; z-index:5; display:flex; align-items:center; gap:10px; border:0; background:transparent; color:#fff; cursor:pointer; transform:translate(-50%,-50%); padding:0; text-shadow:0 1px 7px #000; }
.culture-world-spot[hidden] {display:none !important;}
.culture-spot-circle { width:39px; height:39px; display:grid; place-items:center; border:1px solid #f2f7ed; border-radius:50%; background:#c3f34e; color:#132017; font-size:19px; box-shadow:0 0 0 6px #c3f34e40,0 4px 20px #1016107f; transition:transform .22s ease; }
.culture-world-spot:hover .culture-spot-circle { transform:scale(1.13); }
.culture-spot-text { background:#0c2019df; border:1px solid #ffffff45; padding:9px 12px; font-size:11px; white-space:nowrap; font-weight:700; }
.culture-stage-bottom { position:absolute; z-index:4; bottom:17px; left:22px; right:22px; display:flex; justify-content:space-between; align-items:center; gap:16px; pointer-events:none; color:#fff; font-size:10px; font-weight:700; letter-spacing:.065em; text-shadow:0 1px 8px #000; }
.culture-stage-bottom button { pointer-events:auto; background:#13251bd9; color:#fff; border:1px solid #ffffff70; padding:9px 13px; font-size:10px; font-weight:700; letter-spacing:.08em; cursor:pointer; }
.culture-stage-bottom button:hover { background:#c1f44b; color:#0d1d14; }
.culture-theatre-info { padding:clamp(22px,3vw,40px); display:grid; grid-template-columns:.8fr 1.2fr; column-gap:clamp(20px,3vw,48px); align-items:center; }
.culture-theatre-title>span { color:#b9ed68; font-size:10px; letter-spacing:.12em; font-weight:700; }
.culture-theatre-title h4 { font:500 clamp(26px,2.7vw,39px)/1.1 var(--font-head); letter-spacing:-.05em; margin:10px 0; }
.culture-theatre-title p { color:#abc3b2; font-size:12px; line-height:1.6; max-width:430px; margin:0; }
.culture-scene-buttons,.culture-modal-scenes { display:flex; align-items:center; flex-wrap:wrap; justify-content:flex-end; gap:8px; }
.culture-scene-tab { display:inline-flex; align-items:center; gap:6px; padding:10px 14px; border:1px solid #688071; background:transparent; color:#d4e0d5; font:700 11px var(--font-body); cursor:pointer; transition:background .2s,color .2s,border .2s; }
.culture-scene-tab:hover { border-color:#d9efb5; }
.culture-scene-tab.is-active { background:#c5f44e; color:#14241a; border-color:#c5f44e; }
.culture-projects-label { margin-top:clamp(37px,4.7vw,68px); }
.culture-museum { display:grid; grid-template-columns:1.05fr 1fr; background:#d0d9cb; color:#15261c; text-decoration:none; min-height:300px; overflow:hidden; }
.culture-museum-image { min-height:300px; position:relative; overflow:hidden; }
.culture-museum-image img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .65s ease; }
.culture-museum:hover .culture-museum-image img { transform:scale(1.05); }
.culture-museum-image>span { position:absolute; top:21px; left:22px; background:#c5f44e; padding:8px 10px; font-weight:700; font-size:9px; letter-spacing:.1em; }
.culture-museum-content { padding:clamp(28px,3.3vw,55px); display:flex; flex-direction:column; align-items:flex-start; }
.culture-card-kicker { font-size:10px; font-weight:700; color:#55694d; letter-spacing:.12em; }
.culture-museum-content h4 { font:500 clamp(30px,3.2vw,47px)/1.12 var(--font-head); letter-spacing:-.06em; margin:15px 0 14px; }
.culture-museum-content p { margin:0 0 28px; color:#5b6d5d; font-size:13px; line-height:1.7; }
.culture-museum-content strong { display:flex; align-items:center; gap:22px; font-size:13px; border-bottom:1px solid currentColor; padding-bottom:9px; margin-top:auto; }
.culture-museum-content strong span {font-size:18px;}
.culture-case-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:12px; }
.culture-case-card { border:0; padding:0; background:#f6f8f3; color:#15251b; display:flex; flex-direction:column; align-items:stretch; text-align:left; cursor:pointer; font-family:inherit; overflow:hidden; }
.culture-case-image { display:block; position:relative; aspect-ratio:1.68; overflow:hidden; }
.culture-case-image>img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .55s ease; }
.culture-case-card:hover .culture-case-image>img { transform:scale(1.045); }
.culture-case-view { position:absolute; right:15px; bottom:16px; padding:10px 13px; background:#c5f44e; font-weight:700; font-size:10px; letter-spacing:.04em; display:flex; gap:16px; align-items:center; }
.culture-case-view span { font-size:17px; }
.culture-case-content { display:flex; flex-direction:column; align-items:flex-start; flex:1; padding:clamp(20px,2.5vw,30px); }
.culture-case-content small {font-size:9px; letter-spacing:.12em; color:#748070; font-weight:700;}
.culture-case-content strong { margin:12px 0; font:500 clamp(27px,2.7vw,38px)/1.13 var(--font-head); letter-spacing:-.045em; }
.culture-case-content>span:not(.culture-case-count) {color:#5e6f60; line-height:1.55; font-size:13px; max-width:420px;}
.culture-case-count {font-size:10px; color:#52674e; letter-spacing:.1em; font-weight:700; margin-top:25px; }
.culture-services-heading { padding:clamp(42px,5vw,65px) 0 20px; display:flex; justify-content:space-between; align-items:end; gap:20px; }
.culture-services-heading h4 {font:500 clamp(26px,3vw,39px)/1.1 var(--font-head); letter-spacing:-.05em; margin:0;}
.culture-services-heading span {font-size:10px; letter-spacing:.11em; color:#6c806d; font-weight:700;}
.culture-services {display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:1px; background:#bdc9b8; border:1px solid #bdc9b8; }
.culture-services>div { background:#f8faf5; padding:clamp(20px,2.1vw,29px); min-height:235px; display:flex; flex-direction:column; align-items:flex-start; }
.culture-services>div>span {font-size:11px; color:#6d896c; font-weight:700; margin-bottom:22px;}
.culture-services h5 {font:500 clamp(18px,1.7vw,23px)/1.2 var(--font-head); letter-spacing:-.04em; margin:0 0 12px;}
.culture-services p {margin:0; font-size:12px; color:#647467; line-height:1.6;}
.culture-cta {padding-top:clamp(30px,3.4vw,47px); display:flex; justify-content:space-between; align-items:end; gap:24px; }
.culture-cta>div {display:flex; flex-direction:column; gap:12px; }
.culture-cta small {font-size:10px; color:#68836a; letter-spacing:.12em; font-weight:700; }
.culture-cta strong {font:500 clamp(23px,2.7vw,36px)/1.15 var(--font-head); letter-spacing:-.045em;}
.culture-tour-modal { border:0; padding:0; width:min(1280px,96vw); max-width:none; max-height:94vh; overflow:auto; background:#10251a; color:#f3f7f0; box-shadow:0 20px 100px #0008; }
.culture-tour-modal::backdrop { background:rgba(8,21,14,.87); backdrop-filter:blur(8px); }
.culture-modal-header {display:flex; justify-content:space-between; align-items:center; gap:18px; padding:19px 24px; }
.culture-modal-header h2 { font:500 clamp(22px,3vw,38px)/1.1 var(--font-head); margin:5px 0 0; letter-spacing:-.045em; }
.culture-modal-header .culture-card-kicker {color:#c1f44b;}
.culture-modal-close {background:transparent; color:#fff; border:1px solid #738576; padding:12px 15px; font-weight:700; cursor:pointer; }
.culture-modal-close:hover { background:#c1f44b; color:#102018; }
.culture-modal-stage {position:relative; height:min(62vh,670px); min-height:310px; overflow:hidden; background:#172b20; }
.culture-modal-scenes {justify-content:center; padding:18px; background:#132d20; }
.culture-modal-stage:fullscreen, .culture-view-stage:fullscreen { height:100vh; width:100vw; }
@media(max-width:1100px){ .culture-heading {grid-template-columns:1fr; gap:23px;} .culture-heading>p {max-width:730px;} .culture-services {grid-template-columns:repeat(2,minmax(0,1fr));} .culture-theatre-info {grid-template-columns:1fr;gap:26px;} .culture-scene-buttons {justify-content:flex-start;} }
@media(max-width:700px){ .culture-block{padding:23px 15px 29px;} .culture-heading h3 {font-size:clamp(35px,8.2vw,51px);} .culture-section-label {font-size:8px;} .culture-section-label span:last-child{text-align:right;} .culture-view-stage{height:390px;} .culture-stage-bottom{left:12px;right:12px;bottom:13px;font-size:8px;} .culture-stage-overline {top:13px;left:14px;font-size:9px;} .culture-theatre-info {padding:23px 18px;} .culture-scene-tab{font-size:10px;padding:9px 10px;} .culture-museum {grid-template-columns:1fr;} .culture-museum-image {min-height:240px;} .culture-museum-content{padding:27px 22px;} .culture-case-grid {grid-template-columns:1fr;} .culture-case-image{aspect-ratio:1.6;} .culture-services-heading {flex-direction:column;align-items:flex-start;} .culture-cta {flex-direction:column;align-items:flex-start;} .culture-spot-circle{width:33px;height:33px;} .culture-spot-text{padding:7px 9px;font-size:10px;} .culture-modal-header{padding:16px;} .culture-modal-stage{height:60vh;min-height:340px;} .culture-stage-bottom>span{font-size:8px;max-width:55%;} .culture-modal-scenes{justify-content:flex-start;} }
@media(max-width:440px){.culture-services{grid-template-columns:1fr;} .culture-services>div{min-height:0;padding:20px;} .culture-services>div>span{margin-bottom:12px;} .culture-heading h3{font-size:35px;} .culture-view-stage{height:350px;} }
@media(prefers-reduced-motion: reduce){.culture-case-image img,.culture-museum-image img,.culture-view-host{transition:none!important;} }


/* V10 | EVENTOS EN 360° */
.events-block { padding:clamp(26px,4.7vw,68px); background:#121f18; color:#f5f7f1; margin-bottom:16px; overflow:hidden; }
.events-heading { display:grid; grid-template-columns:1.2fr .76fr; gap:clamp(24px,5vw,80px); align-items:end; padding-bottom:clamp(37px,4.3vw,58px); }
.events-heading .kicker { color:#bdf151; font-size:10px; font-weight:700; }
.events-heading h3 { font:500 clamp(37px,4.8vw,70px)/1.04 var(--font-head); letter-spacing:-.063em; margin:15px 0 0; }
.events-heading h3 em { font-style:normal; color:#9eb2a0; }
.events-heading>p { color:#b8c9bd; font-size:clamp(13px,1.1vw,16px); line-height:1.7; max-width:540px; margin:0; }
.events-showcase-label { display:flex; justify-content:space-between; gap:15px; border-top:1px solid #6b7e70; padding:15px 0 14px; color:#bfceb9; font-size:10px; letter-spacing:.12em; font-weight:700; }
.events-player { position:relative; overflow:hidden; aspect-ratio:16/9; background:radial-gradient(ellipse at 40% 40%,#344b3f,#102016 74%); isolation:isolate; }
.events-player>img { width:100%; height:100%; object-fit:cover; display:block; position:absolute; inset:0; filter:saturate(.87) brightness(.8); transition:transform .6s ease; }
.events-player:not(.is-playing):hover>img {transform:scale(1.025);}
.events-image-shade {position:absolute;inset:0;background:linear-gradient(180deg,#07150f78,transparent 38%,#07150fa8);pointer-events:none;}
.events-video-overline {position:absolute;top:21px;left:23px;font-size:10px;font-weight:700;letter-spacing:.12em;display:flex;align-items:center;gap:10px;z-index:2;text-shadow:0 1px 8px #000;}
.events-live-dot {width:7px;height:7px;background:#c6f44f;border-radius:50%;box-shadow:0 0 0 4px #c6f44f40;}
.events-play { position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;border:0;background:transparent;color:white;cursor:pointer;white-space:nowrap;font:700 10px var(--font-body);letter-spacing:.11em;z-index:4; text-shadow:0 1px 10px #000; }
.events-play-icon { background:#c7f44d;color:#122217;border-radius:50%;display:grid;place-items:center;width:76px;height:76px;font-size:24px;box-shadow:0 0 0 10px #c4f44d32;transition:transform .2s ease,box-shadow .2s; padding-left:4px; }
.events-play:hover .events-play-icon,.events-play:focus-visible .events-play-icon {transform:scale(1.08);box-shadow:0 0 0 14px #c4f44d42;}
.events-video-hint {position:absolute;bottom:18px;left:23px;font-size:10px;letter-spacing:.08em;font-weight:700;z-index:2;text-shadow:0 1px 8px #000;}
.events-iframe {position:absolute;inset:0;width:100%;height:100%;border:0;z-index:5;background:#000;}
.events-player.is-playing>.events-image-shade,.events-player.is-playing>.events-video-overline,.events-player.is-playing>.events-video-hint {display:none;}
.events-stop {position:absolute;z-index:6;top:12px;right:12px;border:1px solid #ffffff80;background:#0b1914e8;color:white;font-size:11px;font-weight:700;cursor:pointer;padding:11px 13px;}
.events-stop:hover {background:#c7f44d;color:#102317;}
.events-feature-info {display:flex;justify-content:space-between;align-items:center;gap:30px;padding:clamp(22px,3vw,40px) 0 clamp(32px,4vw,51px);}
.events-project-kicker {font-size:10px;font-weight:700;letter-spacing:.11em;color:#c6f44d;}
.events-feature-info h4,.events-secondary-copy h4 {font:500 clamp(30px,3vw,43px)/1.1 var(--font-head);letter-spacing:-.055em;margin:9px 0 12px;}
.events-feature-info p,.events-secondary-copy p {color:#b5c9bb;font-size:13px;max-width:540px;line-height:1.65;margin:0;}
.events-youtube-link { color:#f0f6e7;text-decoration:none;font-size:12px;font-weight:700;border-bottom:1px solid #b3c5b7;padding-bottom:9px;white-space:nowrap;display:flex;align-items:center;gap:22px; }
.events-youtube-link:hover {color:#c7f44d;}
.events-youtube-link span {font-size:18px;}
.events-secondary {display:grid;grid-template-columns:.73fr 1.27fr;background:#1d3024;min-height:300px;align-items:stretch;}
.events-secondary-copy {padding:clamp(25px,3.4vw,51px);display:flex;flex-direction:column;align-items:flex-start;}
.events-secondary-copy .events-youtube-link {margin-top:auto;padding-top:25px;}
.events-secondary .events-player {height:100%;min-height:300px;aspect-ratio:auto;}
.events-sulky-player>img {object-fit:cover;}
.events-services-head {display:flex;justify-content:space-between;align-items:end;gap:20px;margin:clamp(46px,5vw,70px) 0 19px;}
.events-services-head h4 {font:500 clamp(27px,3vw,41px)/1.12 var(--font-head);letter-spacing:-.05em;margin:0;}
.events-services-head span {font-size:10px;color:#afc2b0;letter-spacing:.1em;font-weight:700;}
.events-services {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:#516357;border:1px solid #516357;}
.events-services>div {background:#1c3023;padding:clamp(21px,2.6vw,37px);min-height:220px;}
.events-services>div>span {font-size:11px;color:#c7f44d;font-weight:700;}
.events-services h5 {font:500 clamp(21px,1.9vw,27px)/1.19 var(--font-head);letter-spacing:-.04em;margin:27px 0 13px;}
.events-services p {font-size:12px;line-height:1.65;margin:0;color:#b5c6b8;}
.events-bottom-cta {display:flex;align-items:end;justify-content:space-between;gap:25px;padding-top:clamp(35px,4vw,53px);}
.events-bottom-cta>div {display:flex;flex-direction:column;gap:12px;}
.events-bottom-cta>div span {font-size:10px;letter-spacing:.12em;font-weight:700;color:#c7f44d;}
.events-bottom-cta>div strong {font:500 clamp(25px,3vw,40px)/1.13 var(--font-head);letter-spacing:-.05em;}
.events-bottom-cta .inline-arrow {white-space:nowrap;color:#e6f5de;}
.events-network-note {font-size:10px;color:#829788;line-height:1.55;margin:30px 0 0;}
@media(max-width:1100px){.events-heading{grid-template-columns:1fr;gap:22px;}.events-heading>p{max-width:750px;}.events-secondary{grid-template-columns:.9fr 1.1fr;}}
@media(max-width:700px){.events-block{padding:26px 15px 31px;}.events-heading h3{font-size:clamp(35px,8.3vw,53px);}.events-showcase-label{font-size:8px;}.events-player{aspect-ratio:16/11;}.events-video-overline{top:13px;left:13px;font-size:8px;}.events-video-hint{bottom:13px;left:13px;font-size:8px;}.events-play-icon{width:58px;height:58px;font-size:20px;}.events-play{font-size:9px;}.events-feature-info{flex-direction:column;align-items:flex-start;}.events-secondary{grid-template-columns:1fr;}.events-secondary-copy{order:2;padding:25px 20px;}.events-secondary .events-player{order:1;min-height:230px;height:auto;aspect-ratio:16/10;}.events-secondary-copy .events-youtube-link{margin-top:20px;}.events-services-head{flex-direction:column;align-items:flex-start;}.events-services{grid-template-columns:1fr;}.events-services>div{min-height:0;}.events-services h5{margin-top:16px;}.events-bottom-cta{align-items:flex-start;flex-direction:column;}.events-feature-info p{font-size:12px;}}
@media(prefers-reduced-motion: reduce){.events-player>img,.events-play-icon{transition:none;}}
.events-play[hidden], .events-stop[hidden], .events-player>img[hidden] { display:none !important; }

/* V11: control esférico propio para embeds YouTube 360°. */
.events-api-video {position:absolute;inset:0;z-index:5;background:#020503;}
.events-api-video iframe {width:100%;height:100%;}
.events-orbit-surface {position:absolute;inset:0 0 19% 0;z-index:6;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;}
.events-orbit-surface.is-dragging {cursor:grabbing;}
.events-orbit-bar {position:absolute;left:15px;top:14px;z-index:8;display:flex;align-items:center;gap:4px;flex-wrap:wrap;max-width:calc(100% - 180px);border-radius:7px;padding:6px;background:#11231ce8;border:1px solid #d2fdb031;backdrop-filter:blur(9px);box-shadow:0 5px 22px #0005;}
.events-orbit-caption {font-size:9px;font-weight:700;letter-spacing:.09em;color:#c8ef98;padding:0 8px 0 5px;white-space:nowrap;}
.events-orbit-bar button {border:1px solid #b6d1bc55;background:#254031;color:#fff;border-radius:3px;width:31px;height:30px;font-size:17px;line-height:1;cursor:pointer;display:grid;place-items:center;}
.events-orbit-bar button:hover,.events-orbit-bar button:focus-visible {background:#c7f44d;color:#102317;outline-offset:1px;}
.events-orbit-status {position:absolute;z-index:8;left:16px;bottom:54px;max-width:calc(100% - 140px);font-size:9px;letter-spacing:.06em;color:white;text-shadow:0 1px 8px #000;background:#0a1e13ae;border-radius:4px;padding:7px 9px;margin:0;pointer-events:none;}
.events-video-fallback {position:absolute;z-index:8;right:14px;bottom:54px;color:#c7f44d;background:#12271be8;border:1px solid #b6d1bc66;padding:9px 12px;border-radius:3px;text-decoration:none;font-size:10px;font-weight:700;white-space:nowrap;}
.events-video-fallback:hover {background:#c7f44d;color:#142418;}
.events-player.is-playing .events-stop {z-index:10;top:65px;right:15px;}
.events-player.events-spherical-ready .events-orbit-surface {cursor:grab;}
.events-player:not(.events-spherical-ready) .events-orbit-surface {cursor:default;}
.events-applications {margin-top:clamp(42px,5vw,72px);padding-top:clamp(30px,4vw,56px);border-top:1px solid #657769;}
.events-applications-top {display:flex;flex-direction:column;gap:8px;align-items:flex-start;margin-bottom:18px;}
.events-applications-top>.events-project-kicker {display:block;}
.events-applications-top h4 {margin:0;font:500 clamp(22px,2.5vw,31px)/1.15 var(--font-head);letter-spacing:-.04em;}
.events-applications-top p {font-size:13px;line-height:1.7;color:#b5c9bb;max-width:410px;margin:0;}
.events-application-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.events-application {min-height:92px;background:#1d3126;border:1px solid #425747;padding:16px 20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:9px;}
.events-application>span {color:#c7f44d;font-weight:700;font-size:10px;letter-spacing:.10em;}
.events-application h5 {font:500 clamp(20px,2vw,27px)/1.1 var(--font-head);letter-spacing:-.045em;margin:0;}
.events-player-modal {width:100%;height:100%;aspect-ratio:16/9;}
.events-player-modal .events-stop {display:none;}
@media(max-width:900px){.events-application-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.events-applications-top{grid-template-columns:1fr;}.events-orbit-bar{max-width:calc(100% - 160px);}}
@media(max-width:650px){.events-application-grid{gap:8px;}.events-application{min-height:76px;padding:12px 13px;}.events-application h5{margin-top:0;font-size:20px;}.events-orbit-bar{top:8px;left:8px;max-width:calc(100% - 16px);padding:4px;gap:3px;}.events-orbit-caption{display:none;}.events-orbit-bar button{width:28px;height:28px;font-size:14px;}.events-player.is-playing .events-stop{top:50px;right:8px;font-size:10px;padding:6px;}.events-orbit-status{left:7px;bottom:42px;font-size:8px;max-width:55%;padding:6px;}.events-video-fallback{right:7px;bottom:42px;font-size:9px;padding:6px;}.events-orbit-surface{bottom:20%;}}


/* V16 | CONTACTO REAL: email, WhatsApp e Instagram */
.contact-channels {margin-top:clamp(36px,5vw,70px);border-top:1px solid #47604e;max-width:470px;}
.contact-channel {position:relative;display:grid;grid-template-columns:104px minmax(0,1fr) 22px;align-items:center;gap:12px;padding:20px 0;border-bottom:1px solid #47604e;color:#f3f9ef;text-decoration:none;transition:color .2s ease;}
.contact-channel:hover,.contact-channel:focus-visible {color:var(--lime);}
.contact-channel-type {font-size:10px;letter-spacing:.11em;font-weight:700;color:#91aa99;}
.contact-channel strong {font-size:clamp(12px,1.1vw,15px);font-weight:500;line-height:1.3;overflow-wrap:anywhere;}
.contact-channel-arrow {font-size:20px;text-align:right;color:var(--lime);}
.contact-panel-caption {margin:0 0 23px;font-size:11px;font-weight:700;letter-spacing:.13em;color:var(--lime);}
.contact-actions {display:grid;grid-template-columns:1fr 1fr;gap:11px;}
.contact-actions button {min-height:56px;margin:0;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;cursor:pointer;}
.contact-whatsapp-submit {background:transparent;border:1px solid #c9fd4b;color:#c9fd4b;padding:14px 17px;font:600 12px var(--font-body);transition:background .2s,color .2s;}
.contact-whatsapp-submit:hover,.contact-whatsapp-submit:focus-visible {background:#c9fd4b;color:#183323;}
.form-note {margin:-9px 0 0;}
.footer-social {display:flex;gap:22px;padding-top:23px;flex-wrap:wrap;}
.footer-social a {font-size:12px;font-weight:600;color:#d0e0d3;text-decoration:none;}
.footer-social a:hover,.footer-social a:focus-visible {color:var(--lime);}
@media(max-width:1100px){.contact-actions{grid-template-columns:1fr;}}
@media(max-width:900px){.contact-channels{margin-top:26px;max-width:none;}.contact-actions{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.contact-channel{grid-template-columns:81px minmax(0,1fr) 18px;gap:8px;padding:16px 0;}.contact-channel-type{font-size:9px;}.contact-channel strong{font-size:12px;}.contact-actions{grid-template-columns:1fr;}.footer-social{gap:16px;}}


/* V18 | Identidad de NODAL LAB · Ondas vectoriales y O interactiva */
/* TRANSPARENCIA: controlá la presencia de las ondas acá.
   El MOVIMIENTO se modifica en brand-motion.js, objeto NODAL_MOTION. */
:root {
  --nodal-wave-opacity: .24;   /* 0 = invisible, 1 = más visible */
  --nodal-studio-wave-opacity: .17;
}
.site-shell { position: relative; isolation: isolate; overflow: clip; }
.site-header { position: sticky; top: 0; background: color-mix(in srgb, var(--paper) 90%, white 10%); backdrop-filter: blur(10px) saturate(120%); }
.brand { gap: 0; line-height: 0; }
.brand-logo { width: clamp(154px, 14.2vw, 214px); height: auto; }
.footer-brand .brand-logo { width: clamp(150px, 13vw, 205px); }
.header-cta { white-space: nowrap; }

/* Las ondas se generan en JS como curvas SVG, NO son imágenes que se deslizan. */
.hero, .services { position: relative; isolation: isolate; }
.hero > .container, .services > .container { position: relative; z-index: 1; }
.brand-wave { position: absolute; pointer-events: none; z-index: 0; overflow: hidden; opacity: var(--nodal-wave-opacity); contain: paint; }
.brand-wave svg { display: block; width: 100%; height: 100%; overflow: visible; }
.brand-wave-hero { width: min(83vw, 1000px); height: 490px; top: 120px; left: -240px; transform: rotate(-9deg); }
.brand-wave-solutions { width: min(78vw, 980px); height: 430px; top: 10px; right: -235px; transform: rotate(8deg); }

/* El estudio: tarjeta de marca en escala blanca y gris cálido. */
.about-art {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: 540px;
  display: grid;
  place-items: center;
  background: radial-gradient(ellipse at 54% 50%,#fdfdfa 0%,#eeeae0 75%,#e8e4da 100%);
  border: 1px solid #e2e0d8;
}
.about-art::before, .about-art::after { display: none; }
.about-art-meta { position: absolute; top: 24px; left: 26px; z-index: 3; font: 700 10px var(--font-body); letter-spacing: .13em; color: #777871; }
.about-art-caption { z-index: 3; color: #71746c; font-size: 9px; }
.brand-wave-studio { width: 145%; height: 86%; left: -22%; bottom: -20%; opacity: var(--nodal-studio-wave-opacity); transform: rotate(-14deg); }
.about-isotipo-button {
  position: relative; z-index: 2; border: 0; border-radius: 50%;
  width: min(74%, 370px); aspect-ratio: 1;
  padding: 20px; background: transparent; cursor: pointer;
  display: grid; place-items: center;
  -webkit-tap-highlight-color: transparent;
}
.about-isotipo-button:focus-visible { outline: 2px solid #63862c; outline-offset: 3px; }
.about-isotipo-button::before { content: ''; position: absolute; inset: 1%; border: 1px solid #b4b8ad66; border-radius: 50%; transform: scale(.95); transition: border-color .45s ease, transform .7s cubic-bezier(.2,.8,.2,1); }
.about-isotipo-button::after { content: ''; position: absolute; inset: 5%; background: radial-gradient(circle,#c9fd4b48 0%,#c9fd4b11 42%,transparent 70%); border-radius: 50%; opacity: .25; transform: scale(.75); transition: opacity .65s ease, transform .8s cubic-bezier(.2,.8,.2,1); }
.about-isotipo-button:hover::before,.about-isotipo-button:focus-visible::before,.about-isotipo-button.is-engaged::before { border-color: #94b86a9c; transform: scale(1.045); }
.about-isotipo-button:hover::after,.about-isotipo-button:focus-visible::after,.about-isotipo-button.is-engaged::after { opacity: .8; transform: scale(1.1); }
.studio-isotipo-stage { display: block; position: relative; width: 100%; aspect-ratio: 1; z-index: 1; transform-origin: center; will-change: transform; animation: nodal-isotipo-float 8s ease-in-out infinite alternate; }
.studio-isotipo-stage > svg,.studio-isotipo-stage > img { display: block; width: 100%; height: 100%; overflow: visible; }
.about-isotipo-button:hover .studio-isotipo-stage,.about-isotipo-button:focus-visible .studio-isotipo-stage,.about-isotipo-button.is-engaged .studio-isotipo-stage { animation-duration: 3.4s; }
@keyframes nodal-isotipo-float {
  0% { transform: translateY(5px) rotate(-3deg) scale(.98,1.01); }
  50% { transform: translateY(-5px) rotate(0deg) scale(1.012,.989); }
  100% { transform: translateY(3px) rotate(3deg) scale(1,1.012); }
}
@media (max-width: 900px) {
  .brand-logo { width: 158px; }
  .brand-wave-hero { width: 110vw; left: -200px; top: 140px; }
  .brand-wave-solutions { width: 125vw; right: -300px; }
  .about-art { min-height: 450px; }
}
@media (max-width: 640px) {
  :root { --nodal-wave-opacity: .16; --nodal-studio-wave-opacity: .13; }
  .brand-logo { width: 142px; }
  .brand-wave-hero { left: -190px; top: 105px; width: 148vw; height: 380px; }
  .brand-wave-solutions { right: -210px; top: -10px; width: 145vw; height: 370px; }
  .about-art { min-height: 355px; }
  .about-isotipo-button { width: min(72%, 280px); }
  .about-art-caption { font-size: 8px; }
}
@media (prefers-reduced-motion: reduce) {
  .studio-isotipo-stage { animation: none !important; will-change: auto; }
  .about-isotipo-button::after,.about-isotipo-button::before { transition: none !important; }
}

/* =========================================================
   V19 | AJUSTES FINALES
   Logotipo: Space Grotesk del documento + O vectorial.
   Ondas: de borde a borde, con deformación y respuesta al scroll.
   Estudio: presentación exclusivamente tipográfica.
   ========================================================= */

/* Evita que el SVG del logotipo intente buscar una fuente aislada del HTML:
   solo la O es un SVG externo; todas las demás letras son Space Grotesk real. */
.site-header .brand,
.site-footer .brand {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  gap: 0;
  color: #171717;
  font-family: 'Space Grotesk', Arial, sans-serif;
  font-size: clamp(25px, 2vw, 30px);
  font-weight: 500;
  line-height: 1;
  letter-spacing: 0;
  white-space: nowrap;
}
.site-header .brand-letter,
.site-footer .brand-letter {
  font-weight: 600;
  letter-spacing: -.068em;
}
.site-header .brand-n,
.site-footer .brand-n { margin-right: -.052em; }
.site-header .brand-o,
.site-footer .brand-o {
  display: block;
  flex: 0 0 auto;
  width: .86em;
  height: .86em;
  margin-left: .004em;
  margin-right: -.052em;
  object-fit: contain;
}
.site-header .brand-lab,
.site-footer .brand-lab {
  margin-left: .58em;
  font-weight: 400;
  letter-spacing: -.015em;
}
.site-footer .brand { color: #171717; }
.site-footer .brand-letter,
.site-footer .brand-lab { color: #171717; }

/* Las ondas mantienen el movimiento programado en brand-motion.js.
   El ancho lo define el contenedor de sección, sin márgenes recortados. */
.brand-wave-hero,
.brand-wave-solutions {
  left: 0;
  right: 0;
  width: 100%;
  max-width: none;
  height: clamp(350px, 32vw, 520px);
  transform: none;
}
.brand-wave-hero { top: 110px; }
.brand-wave-solutions { top: 18px; }

/* El estudio: solo texto, sin tarjeta, símbolo ni columna vacía. */
.about-grid {
  display: block;
  grid-template-columns: none;
}
.about-text {
  width: 100%;
  max-width: 900px;
}
.about-text h2 {
  max-width: 850px;
  font-size: clamp(52px, 6.4vw, 96px);
  margin-top: 18px;
}
.about-text > p:not(.kicker) {
  max-width: 740px;
  font-size: clamp(15px, 1.15vw, 17px);
}

@media(max-width: 900px) {
  .site-header .brand,
  .site-footer .brand { font-size: 25px; }
  .brand-wave-hero,
  .brand-wave-solutions { width: 100%; left: 0; right: 0; transform: none; }
}
@media(max-width: 640px) {
  .site-header .brand,
  .site-footer .brand { font-size: 23px; }
  .brand-wave-hero,
  .brand-wave-solutions { width: 100%; left: 0; right: 0; height: 320px; transform: none; }
  .brand-wave-hero { top: 92px; }
  .brand-wave-solutions { top: 30px; }
  .about-text h2 { font-size: clamp(50px, 10.2vw, 66px); }
}

/* El pie sobre fondo oscuro usa letras blancas y la O vectorial invertida. */
.site-footer .brand-letter,
.site-footer .brand-lab { color: #f5f5f0; }


/* V20 | Beneficios comerciales, ubicación y entrega */
.re-benefit {
  display: block;
  margin-top: 17px;
  padding-left: 16px;
  border-left: 3px solid var(--lime);
  color: var(--ink);
  font-weight: 600;
  line-height: 1.5;
}
.about-text > .about-location {
  margin-top: 19px;
  color: var(--ink);
  font-weight: 600;
}
.footer-location {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 17px;
  color: #b5c6b9;
  font-size: 12px;
  letter-spacing: .012em;
}
.footer-location span {
  color: var(--lime);
  font-size: 19px;
  line-height: 1;
}
@media (max-width: 640px) {
  .re-benefit { margin-top: 15px; padding-left: 13px; }
  .footer-location { font-size: 11px; }
}
