/* ==========================================================================
   INSINET — sistema visual
   Blanco, silencio y precisión. El logo de vidrio se presenta como producto.
   ========================================================================== */

:root {
  --bg: #ffffff;
  --bg-2: #f5f5f7;
  --bg-3: #e8e8ed;
  --ink: #1d1d1f;
  --ink-2: #424245;
  --gray: #6e6e73;
  --gray-2: #86868b;
  --hair: #d2d2d7;
  --blue: #0071e3;
  --blue-h: #0077ed;
  --link: #0066cc;
  --star: #f5a623;

  --f: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Inter", "Helvetica Neue", Helvetica, Arial, sans-serif;

  --max: 1024px;
  --gut: 22px;
  --r: 28px;
  --ease: cubic-bezier(.25, .1, .25, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-padding-top: 110px; }
body {
  margin: 0; background: var(--bg); color: var(--ink);
  font-family: var(--f); font-size: 17px; line-height: 1.47059; letter-spacing: -.022em;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden;
}
img, svg { display: block; max-width: 100%; }
a { color: var(--link); text-decoration: none; }
a:hover { text-decoration: underline; }
button, input, select, textarea { font: inherit; color: inherit; letter-spacing: inherit; }
:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; border-radius: 4px; }
::selection { background: rgba(0, 113, 227, .18); }

.wrap { max-width: calc(var(--max) + var(--gut) * 2); margin: 0 auto; padding: 0 var(--gut); }
.center { text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 200; background: var(--ink); color: #fff; padding: 8px 14px; border-radius: 8px; }
.skip:focus { top: 8px; }

/* ---------- tipografía ---------- */
.kicker { display: block; font-size: 21px; line-height: 1.2; font-weight: 600; letter-spacing: .011em; color: var(--gray); margin: 0 0 8px; }
.kicker.blue { color: var(--blue); }
.hero-title { font-size: clamp(44px, 7.4vw, 96px); line-height: 1.04; font-weight: 600; letter-spacing: -.015em; margin: 0; }
.t1 { font-size: clamp(40px, 5.6vw, 80px); line-height: 1.05; font-weight: 600; letter-spacing: -.015em; margin: 0; }
.t2 { font-size: clamp(32px, 4.2vw, 56px); line-height: 1.07; font-weight: 600; letter-spacing: -.005em; margin: 0; }
.sub { font-size: clamp(19px, 2vw, 28px); line-height: 1.2; font-weight: 400; letter-spacing: .007em; color: var(--ink); margin: 0; }
.body-l { font-size: clamp(17px, 1.6vw, 21px); line-height: 1.38; letter-spacing: .011em; color: var(--gray); margin: 0; }
.body-l strong { color: var(--ink); font-weight: 600; }
.grad { background: linear-gradient(90deg, #0a5cff 0%, #3b82f6 45%, #6e59f6 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* ---------- enlaces y botones ---------- */
.ctas { display: flex; flex-wrap: wrap; gap: 14px 28px; align-items: center; }
.center .ctas { justify-content: center; }
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 22px; border-radius: 980px; border: 0; cursor: pointer;
  background: var(--blue); color: #fff; font-size: 17px; line-height: 1.17; font-weight: 400; letter-spacing: -.022em;
  transition: background .25s var(--ease), transform .25s var(--ease);
}
.btn:hover { background: var(--blue-h); text-decoration: none; }
.btn:active { transform: scale(.98); }
.btn-dark { background: var(--ink); }
.btn-dark:hover { background: #000; }
.btn-light { background: #fff; color: var(--ink); }
.btn-light:hover { background: #fff; }
.btn-sm { padding: 6px 14px; font-size: 12px; line-height: 1.33; letter-spacing: -.01em; }
.more { font-size: 17px; color: var(--link); display: inline-flex; align-items: center; white-space: nowrap; }
.more::after { content: ""; width: 7px; height: 7px; margin-left: 6px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg); }
.more.big { font-size: clamp(17px, 1.6vw, 21px); }
.dark-ctx .more, .tile.dark .more { color: #2997ff; }

/* ---------- cinta de promoción ---------- */
.ribbon { background: var(--bg-2); text-align: center; font-size: 14px; line-height: 1.43; padding: 13px var(--gut); letter-spacing: -.016em; }
.ribbon a { white-space: nowrap; }

/* ---------- navegación global ---------- */
.gnav { position: sticky; top: 0; z-index: 90; height: 48px; background: rgba(251, 251, 253, .8); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); }
.gnav-in { max-width: calc(var(--max) + var(--gut) * 2); height: 100%; margin: 0 auto; padding: 0 var(--gut); display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.gnav a { color: rgba(0, 0, 0, .8); font-size: 12px; letter-spacing: -.01em; transition: color .3s; }
.gnav a:hover { color: #000; text-decoration: none; }
.gnav .brand { display: inline-flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 600; letter-spacing: .03em; color: var(--ink); }
.gnav .brand img { width: 20px; height: 20px; object-fit: contain; }
.gnav .links { display: flex; align-items: center; justify-content: space-between; flex: 1; max-width: 660px; margin: 0 auto; padding: 0 30px; }
.gnav .links a[aria-current="page"] { color: #000; font-weight: 600; }
.gnav .rating { display: inline-flex; align-items: center; gap: 5px; }
.gnav .rating b { font-weight: 600; }
.gnav .rating i { font-style: normal; color: var(--star); letter-spacing: .5px; font-size: 10px; }
.burger { display: none; width: 44px; height: 48px; margin-right: -12px; border: 0; background: none; cursor: pointer; position: relative; }
.burger span { position: absolute; left: 14px; width: 17px; height: 1.2px; background: var(--ink); border-radius: 1px; transition: transform .35s var(--ease), top .35s var(--ease); }
.burger span:nth-child(1) { top: 20px; } .burger span:nth-child(2) { top: 27px; }
.menu-open .burger span:nth-child(1) { top: 23.5px; transform: rotate(45deg); }
.menu-open .burger span:nth-child(2) { top: 23.5px; transform: rotate(-45deg); }
.mnav { position: fixed; inset: 48px 0 0 0; z-index: 89; background: rgba(251, 251, 253, .98); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); padding: 20px 48px 40px; overflow-y: auto; opacity: 0; visibility: hidden; transition: opacity .3s var(--ease), visibility .3s; }
.menu-open .mnav { opacity: 1; visibility: visible; }
.menu-open { overflow: hidden; }
.mnav a { display: block; font-size: 28px; line-height: 1.5; font-weight: 600; color: var(--ink); opacity: 0; transform: translateY(-8px); transition: opacity .4s var(--ease), transform .4s var(--ease); }
.mnav a:hover { text-decoration: none; }
.mnav a.s { font-size: 17px; font-weight: 400; color: var(--gray); line-height: 2; }
.menu-open .mnav a { opacity: 1; transform: none; }
.mnav p { font-size: 12px; color: var(--gray); margin: 24px 0 6px; }

/* ---------- navegación local (subpáginas) ---------- */
.lnav { position: sticky; top: 0; z-index: 80; height: 52px; background: rgba(255, 255, 255, .72); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border-bottom: 1px solid rgba(0, 0, 0, .12); }
.lnav-in { max-width: calc(var(--max) + var(--gut) * 2); height: 100%; margin: 0 auto; padding: 0 var(--gut); display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.lnav b { font-size: 21px; font-weight: 600; letter-spacing: .011em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lnav nav { display: flex; align-items: center; gap: 22px; }
.lnav nav a:not(.btn) { font-size: 12px; color: var(--ink); }
.has-lnav .gnav { position: relative; }

/* ---------- aparición al hacer scroll ---------- */
.rv { opacity: 0; transform: translateY(40px); transition: opacity 1.2s var(--ease-out), transform 1.2s var(--ease-out); transition-delay: var(--d, 0s); }
.rv.in { opacity: 1; transform: none; }
.no-js .rv { opacity: 1; transform: none; }
.intro { opacity: 0; transform: translateY(24px); animation: intro 1.4s var(--ease-out) forwards; animation-delay: var(--d, .1s); }
@keyframes intro { to { opacity: 1; transform: none; } }

/* ---------- secciones ---------- */
.sec { padding: clamp(80px, 11vw, 140px) 0; }
.sec-gray { background: var(--bg-2); }
.sec-black { background: #000; color: #f5f5f7; }
.sec-black .body-l { color: var(--gray-2); }
.sec-black .body-l strong { color: #f5f5f7; }
.head { max-width: 820px; margin: 0 auto clamp(48px, 6vw, 72px); text-align: center; }
.head .body-l { margin-top: 20px; }

/* ---------- hero de inicio ---------- */
.hero { padding: clamp(56px, 8vw, 96px) 0 0; text-align: center; }
.hero .kicker { margin-bottom: 14px; }
.hero .sub { max-width: 700px; margin: 22px auto 0; color: var(--ink-2); }
.hero .ctas { margin-top: 34px; }
.stage { position: relative; height: 180vh; }
.stage-sticky { position: sticky; top: 48px; height: calc(100vh - 48px); min-height: 520px; display: grid; place-items: start center; padding-top: clamp(16px, 4vh, 48px); overflow: hidden; }
.stage img.product {
  width: auto; height: min(62vh, 640px); max-width: 80vw; object-fit: contain;
  transform: translate3d(0, var(--ty, 0px), 0) scale(var(--s, .8)) rotate(var(--rot, -10deg));
  will-change: transform; filter: drop-shadow(0 50px 50px rgba(0, 60, 180, .2)) drop-shadow(0 10px 14px rgba(0, 0, 0, .08));
}
.stage .cap { position: absolute; left: 0; right: 0; bottom: 7%; padding: 0 var(--gut); text-align: center; opacity: var(--co, 0); transform: translateY(calc((1 - var(--co, 0)) * 24px)); }
.stage .cap p { font-size: clamp(21px, 2.4vw, 28px); line-height: 1.2; font-weight: 600; margin: 0 0 14px; }

/* sello de Google */
.grating { display: inline-flex; align-items: center; gap: 12px; color: var(--ink); padding: 8px 18px 8px 8px; border-radius: 980px; background: var(--bg-2); transition: background .3s; }
.grating:hover { background: var(--bg-3); text-decoration: none; }
.grating .g { width: 34px; height: 34px; border-radius: 50%; background: #fff; display: grid; place-items: center; box-shadow: 0 1px 3px rgba(0,0,0,.1); }
.grating .g svg { width: 18px; height: 18px; }
.grating b { font-size: 17px; font-weight: 600; }
.grating .st { color: var(--star); font-size: 14px; letter-spacing: 1.5px; }
.grating small { font-size: 14px; color: var(--gray); }
.sec-gray .grating, .tile .grating { background: #fff; }

/* ---------- declaración (palabras que se encienden) ---------- */
.statement { font-size: clamp(32px, 4.6vw, 64px); line-height: 1.1; font-weight: 600; letter-spacing: -.01em; margin: 0 auto; max-width: 980px; text-align: center; }
.statement .w { color: var(--hair); transition: color .45s var(--ease); }
.statement .w.on { color: var(--ink); }
.statement .hl .w.on { color: var(--blue); }

/* ---------- mosaico de servicios ---------- */
.tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.tile {
  position: relative; display: flex; flex-direction: column; align-items: center; text-align: center;
  background: var(--bg-2); border-radius: var(--r); padding: clamp(40px, 5vw, 60px) 30px 0; min-height: 580px; overflow: hidden; color: var(--ink);
}
.tile.wide { grid-column: 1 / -1; min-height: 640px; }
.tile.dark { background: #000; color: #f5f5f7; }
.tile.dark .body-l { color: var(--gray-2); }
.sec-gray .tile:not(.dark) { background: #fff; }
.tile h3 { font-size: clamp(32px, 3.6vw, 48px); line-height: 1.08; font-weight: 600; letter-spacing: -.003em; margin: 0; }
.tile .body-l { margin: 10px auto 0; max-width: 440px; }
.tile .ctas { margin-top: 18px; gap: 10px 26px; justify-content: center; }
.tile .art { margin-top: auto; padding-top: 40px; width: 100%; display: flex; justify-content: center; align-items: flex-end; flex: 1; }
.glyph { width: clamp(150px, 16vw, 200px); aspect-ratio: 1; border-radius: 30%; display: grid; place-items: center; margin-bottom: 64px;
  background: linear-gradient(160deg, #ffffff, #eceef2); color: var(--ink);
  box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .28), inset 0 1px 0 rgba(255,255,255,.9), 0 0 0 1px rgba(0,0,0,.04);
  transition: transform 1.2s var(--ease-out); }
.glyph svg { width: 46%; height: 46%; }
.tile:hover .glyph { transform: translateY(-8px) scale(1.03); }
.glyph.blue { background: linear-gradient(160deg, #3b8bff, #0a5cff); color: #fff; box-shadow: 0 30px 60px -24px rgba(0, 92, 255, .5), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.ink { background: linear-gradient(160deg, #3a3a3d, #1d1d1f); color: #fff; box-shadow: 0 30px 60px -24px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255,255,255,.15); }

/* maqueta de navegador para diseño web */
.mock { width: min(94%, 780px); aspect-ratio: 16 / 9.2; border-radius: 14px 14px 0 0; background: #fff; overflow: hidden; text-align: left;
  box-shadow: 0 -20px 80px -20px rgba(0, 113, 227, .45), 0 0 0 1px rgba(255,255,255,.12);
  transform: translateY(60px); transition: transform 1.8s var(--ease-out); }
.tile.in .mock { transform: none; }
.mock .bar { height: 30px; background: #f1f1f4; display: flex; align-items: center; gap: 6px; padding: 0 12px; border-bottom: 1px solid #e3e3e8; }
.mock .bar i { width: 10px; height: 10px; border-radius: 50%; }
.mock .bar i:nth-child(1) { background: #ff5f57; } .mock .bar i:nth-child(2) { background: #febc2e; } .mock .bar i:nth-child(3) { background: #28c840; }
.mock .bar span { margin: 0 auto; font-size: 11px; color: var(--gray); background: #fff; padding: 3px 44px; border-radius: 6px; letter-spacing: 0; }
.mock .pg { padding: 6% 7%; display: grid; grid-template-columns: 1.2fr 1fr; gap: 6%; align-items: center; height: calc(100% - 30px); }
.mock .pg b { display: block; font-size: clamp(16px, 2.6vw, 32px); line-height: 1.05; color: var(--ink); letter-spacing: -.02em; }
.mock .pg b span { color: var(--blue); }
.mock .ln { height: 7px; border-radius: 4px; background: #ececf0; margin-top: 10px; }
.mock .ln.s { width: 64%; }
.mock .bt { display: inline-block; margin-top: 16px; width: 34%; height: 20px; border-radius: 99px; background: var(--blue); }
.mock .r { aspect-ratio: 1; border-radius: 16px; background: linear-gradient(145deg, #eef4ff, #f6f3ff); display: grid; place-items: center; }
.mock .r img { width: 68%; }

/* ---------- cifras ---------- */
.numbers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 48px 24px; text-align: center; }
.numbers .n { font-size: clamp(56px, 7vw, 96px); line-height: 1; font-weight: 600; letter-spacing: -.02em; background: linear-gradient(180deg, #fff 20%, #9ea3ad); -webkit-background-clip: text; background-clip: text; color: transparent; }
.numbers .n.b { background: linear-gradient(90deg, #4c8dff, #a07cff); -webkit-background-clip: text; background-clip: text; }
.numbers .n small { font-size: .45em; margin-left: 2px; }
.numbers p { margin: 12px auto 0; color: var(--gray-2); font-size: 17px; max-width: 18ch; }

/* ---------- ventajas ---------- */
.feats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.feats.three { grid-template-columns: repeat(3, 1fr); }
.feats.five { grid-template-columns: repeat(6, 1fr); }
.feats.five .feat { grid-column: span 2; }
.feats.five .feat:nth-child(4), .feats.five .feat:nth-child(5) { grid-column: span 3; }
.feat { background: var(--bg-2); border-radius: 22px; padding: 30px 28px 34px; }
.sec-gray .feat { background: #fff; }
.feat .fi { width: 40px; height: 40px; color: var(--blue); margin-bottom: 26px; }
.feat h3 { font-size: 21px; line-height: 1.2; font-weight: 600; margin: 0 0 8px; letter-spacing: .011em; }
.feat p { margin: 0; font-size: 17px; line-height: 1.47; color: var(--gray); }

/* ---------- galería horizontal (proceso) ---------- */
.gallery { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 10px 0 20px; }
.gallery::-webkit-scrollbar { display: none; }
.gallery-track { display: flex; gap: 20px; width: max-content; padding-inline: max(var(--gut), calc((100vw - var(--max)) / 2)); }
.gallery .card { scroll-snap-align: center; }
.card {
  flex: none; width: min(80vw, 372px); height: 500px; border-radius: 22px; background: #fff;
  padding: 32px 30px; display: flex; flex-direction: column; position: relative; overflow: hidden;
  box-shadow: 2px 4px 12px rgba(0, 0, 0, .08); transition: transform .5s var(--ease), box-shadow .5s var(--ease);
}
.card:hover { transform: scale(1.012); box-shadow: 2px 4px 16px rgba(0, 0, 0, .14); }
.card .step { font-size: 12px; font-weight: 600; color: var(--gray); letter-spacing: .04em; text-transform: uppercase; }
.card h3 { font-size: 28px; line-height: 1.14; font-weight: 600; margin: 8px 0 12px; letter-spacing: .007em; }
.card p { margin: 0; color: var(--gray); font-size: 17px; }
.card .big { margin-top: auto; font-size: 220px; line-height: .72; font-weight: 600; letter-spacing: -.05em; color: var(--bg-2); align-self: flex-end; margin-right: -6px; margin-bottom: -14px; }
.card.hl { background: #000; color: #f5f5f7; }
.card.hl p { color: var(--gray-2); }
.card.hl .big { background: linear-gradient(180deg, #2f6bff, #6e59f6); -webkit-background-clip: text; background-clip: text; color: transparent; }
.gallery-nav { display: flex; justify-content: flex-end; gap: 16px; margin-top: 18px; }
.gallery-nav button { width: 36px; height: 36px; border-radius: 50%; border: 0; background: var(--bg-3); color: var(--ink-2); cursor: pointer; display: grid; place-items: center; transition: background .3s, opacity .3s; }
.gallery-nav button:hover { background: #dcdce1; }
.gallery-nav button:disabled { opacity: .42; cursor: default; }
.gallery-nav svg { width: 16px; height: 16px; }

/* ---------- reseñas ---------- */
.score { font-size: clamp(120px, 20vw, 240px); line-height: .9; font-weight: 600; letter-spacing: -.03em; margin: 0; }
.stars-row { display: inline-flex; gap: 6px; color: var(--star); margin: 22px 0 14px; }
.stars-row svg { width: clamp(24px, 2.6vw, 32px); height: auto; opacity: 0; transform: scale(.4); transition: opacity .6s var(--ease-out), transform .9s var(--ease-out); }
.rv.in .stars-row svg { opacity: 1; transform: none; }
.stars-row svg:nth-child(2) { transition-delay: .08s; } .stars-row svg:nth-child(3) { transition-delay: .16s; }
.stars-row svg:nth-child(4) { transition-delay: .24s; } .stars-row svg:nth-child(5) { transition-delay: .32s; }
.revs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 64px; text-align: left; }
.revs:empty { display: none; }
.rev { background: #fff; border-radius: 22px; padding: 28px; display: flex; flex-direction: column; gap: 16px; }
.rev .st { color: var(--star); letter-spacing: 2px; font-size: 14px; }
.rev p { margin: 0; font-size: 17px; line-height: 1.5; display: -webkit-box; -webkit-line-clamp: 7; -webkit-box-orient: vertical; overflow: hidden; }
.rev .who { display: flex; align-items: center; gap: 10px; margin-top: auto; font-size: 14px; font-weight: 600; }
.rev .who img { width: 32px; height: 32px; border-radius: 50%; }
.rev .who small { display: block; font-weight: 400; color: var(--gray); font-size: 12px; }

/* ---------- promoción ---------- */
.promo { border-radius: var(--r); background: linear-gradient(135deg, #0a5cff, #3b82f6 55%, #6e59f6); color: #fff; padding: clamp(56px, 7vw, 96px) 30px; text-align: center; }
.promo .kicker { color: rgba(255,255,255,.75); }
.promo p { margin: 16px auto 0; max-width: 520px; font-size: clamp(17px, 1.6vw, 21px); color: rgba(255,255,255,.88); }
.promo .ctas { margin-top: 32px; justify-content: center; }
.coupon { display: inline-flex; align-items: center; gap: 12px; padding: 6px 6px 6px 22px; border-radius: 980px; background: rgba(255,255,255,.16); border: 1px dashed rgba(255,255,255,.75); color: #fff; font-size: 19px; font-weight: 600; letter-spacing: .12em; cursor: pointer; transition: background .3s; }
.coupon:hover { background: rgba(255,255,255,.26); }
.coupon span { font-size: 14px; letter-spacing: -.01em; font-weight: 400; background: #fff; color: var(--blue); padding: 9px 16px; border-radius: 980px; }
.coupon.done span { background: #34c759; color: #fff; }
.coupon.light { background: var(--bg-2); border-color: var(--hair); color: var(--ink); }
.coupon.light span { background: var(--ink); color: #fff; }

/* ---------- contacto ---------- */
.contact { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(40px, 6vw, 80px); align-items: start; }
.clist { border-top: 1px solid var(--hair); margin-top: 34px; }
.clist a { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--hair); color: var(--ink); font-size: 19px; transition: color .3s; }
.clist a:hover { text-decoration: none; color: var(--blue); }
.clist small { font-size: 12px; color: var(--gray); }
.form { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; background: var(--bg-2); border-radius: var(--r); padding: clamp(24px, 3vw, 40px); }
.form .full { grid-column: 1 / -1; }
.field { position: relative; }
.field input, .field select, .field textarea {
  width: 100%; height: 56px; padding: 24px 16px 6px; border-radius: 12px; border: 1px solid var(--hair); background: #fff;
  font-size: 17px; color: var(--ink); outline: none; appearance: none; -webkit-appearance: none; transition: border-color .2s, box-shadow .2s;
}
.field textarea { height: 150px; resize: vertical; padding-top: 28px; }
.field select { cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%236e6e73' stroke-width='1.5'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 16px center; background-size: 12px; }
.field label { position: absolute; left: 17px; top: 17px; font-size: 17px; color: var(--gray-2); pointer-events: none; transition: top .2s var(--ease), font-size .2s var(--ease); }
.field :is(input, textarea):focus + label, .field :is(input, textarea):not(:placeholder-shown) + label, .field select + label { top: 7px; font-size: 12px; }
.field :is(input, select, textarea):focus { border-color: var(--blue); box-shadow: 0 0 0 4px rgba(0, 113, 227, .15); }
.form-foot { display: flex; justify-content: space-between; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 6px; }
.form-foot small { color: var(--gray); font-size: 14px; }
.form-msg { margin: 0; font-size: 14px; }
.form-msg.ok { color: #1f8a3b; } .form-msg.err { color: #d70015; }
.hp { position: absolute; left: -9999px; }

/* ---------- subpáginas ---------- */
.phero { padding: clamp(60px, 9vw, 110px) 0 clamp(60px, 8vw, 100px); text-align: center; }
.phero .body-l { max-width: 700px; margin: 22px auto 0; }
.phero .ctas { margin-top: 32px; justify-content: center; }
.phero .glyph { margin: clamp(56px, 7vw, 84px) auto 0; width: clamp(180px, 22vw, 250px); }
.crumbs { font-size: 12px; color: var(--gray); display: flex; gap: 8px; justify-content: center; margin-bottom: 26px; flex-wrap: wrap; }
.crumbs a { color: var(--gray); }
.crumbs span[aria-current] { color: var(--ink); }

.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.pair .box { background: var(--bg-2); border-radius: 22px; padding: clamp(30px, 4vw, 44px); }
.sec-gray .pair .box { background: #fff; }
.pair .box span { display: block; font-size: 14px; font-weight: 600; color: var(--gray); margin-bottom: 12px; }
.pair .box p { margin: 0; font-size: clamp(21px, 2.2vw, 28px); line-height: 1.2; font-weight: 600; letter-spacing: .004em; }
.checks { list-style: none; margin: 36px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; border-top: 1px solid var(--hair); }
.checks li { display: flex; align-items: center; gap: 14px; padding: 18px 0; border-bottom: 1px solid var(--hair); font-size: 19px; }
.checks li::before { content: ""; flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--ink) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6.5 12.5 3.5 3.5 7.5-8'/%3E%3C/svg%3E") center / 12px no-repeat; }

.svc-row { display: grid; grid-template-columns: 280px 1fr; gap: clamp(30px, 6vw, 80px); padding: clamp(60px, 8vw, 100px) 0; border-top: 1px solid var(--hair); }
.svc-row:first-child { border-top: 0; padding-top: 0; }
.svc-row .side { position: sticky; top: 90px; align-self: start; }
.svc-row .side .glyph { width: 96px; margin: 0 0 22px; border-radius: 24px; }
.svc-row .side .glyph svg { width: 50%; height: 50%; }
.svc-row .side h2 { font-size: clamp(32px, 3.4vw, 44px); line-height: 1.08; font-weight: 600; margin: 4px 0 0; }
.svc-row .lead { font-size: clamp(21px, 2.2vw, 28px); line-height: 1.25; margin: 0 0 34px; letter-spacing: .007em; }
.svc-row .ctas { margin-top: 34px; }

.faq { max-width: 820px; margin: 0 auto; border-top: 1px solid var(--hair); }
.faq details { border-bottom: 1px solid var(--hair); }
.faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 24px 0; font-size: clamp(19px, 1.8vw, 24px); font-weight: 600; letter-spacing: .009em; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary i { position: relative; flex: none; width: 18px; height: 18px; }
.faq summary i::before, .faq summary i::after { content: ""; position: absolute; left: 0; top: 8px; width: 18px; height: 1.6px; background: var(--ink); border-radius: 1px; transition: transform .4s var(--ease); }
.faq summary i::after { transform: rotate(90deg); }
.faq details[open] summary i::after { transform: rotate(0); }
.faq details p { margin: -6px 0 26px; color: var(--gray); font-size: 17px; max-width: 70ch; }

.related { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.related a { display: flex; flex-direction: column; justify-content: space-between; gap: 50px; min-height: 230px; background: var(--bg-2); border-radius: 22px; padding: 30px; color: var(--ink); transition: transform .5s var(--ease); }
.related a:hover { text-decoration: none; transform: scale(1.015); }
.related .fi { width: 40px; height: 40px; color: var(--blue); }
.related b { display: block; font-size: 21px; line-height: 1.2; font-weight: 600; margin-bottom: 8px; }
.related .more { font-size: 14px; }

.about { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 90px); align-items: center; }
.photo { border-radius: var(--r); overflow: hidden; aspect-ratio: 4 / 5; background: #eceef1; }
.photo img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.08); transition: transform 2s var(--ease-out); }
.photo.in img { transform: none; }
.pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; }
.pill { font-size: 14px; padding: 8px 16px; border-radius: 980px; background: var(--bg-2); }
.sign { width: 200px; margin-top: 34px; }

.mv { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.mv > div { border-radius: var(--r); padding: clamp(36px, 5vw, 56px); min-height: 360px; display: flex; flex-direction: column; justify-content: space-between; gap: 40px; }
.mv .a { background: #000; color: #f5f5f7; }
.mv .b { background: #fff; }
.mv span { font-size: 14px; font-weight: 600; color: var(--gray-2); }
.mv h3 { font-size: clamp(26px, 2.8vw, 36px); line-height: 1.12; font-weight: 600; margin: 0 0 14px; }
.mv p { margin: 0; color: var(--gray); font-size: 17px; }
.mv .a p { color: var(--gray-2); }

.ticket { display: grid; grid-template-columns: 1.3fr 1fr; border-radius: var(--r); overflow: hidden; background: linear-gradient(135deg, #0a5cff, #3b82f6 60%, #6e59f6); color: #fff; max-width: 920px; margin: 0 auto; }
.ticket .l { padding: clamp(36px, 5vw, 60px); }
.ticket .l p { margin: 12px 0 0; color: rgba(255,255,255,.85); }
.ticket .r { padding: clamp(36px, 5vw, 60px); background: #fff; color: var(--ink); display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 14px; text-align: center; border-left: 2px dashed var(--hair); position: relative; }
.ticket .r::before, .ticket .r::after { content: ""; position: absolute; left: -17px; width: 32px; height: 32px; border-radius: 50%; background: var(--bg); }
.ticket .r::before { top: -16px; } .ticket .r::after { bottom: -16px; }
.ticket .pct { font-size: clamp(100px, 14vw, 170px); line-height: .85; font-weight: 600; letter-spacing: -.04em; }
.ticket .pct small { font-size: .35em; }
.ticket .code { font-size: 40px; font-weight: 600; letter-spacing: .12em; }

/* ---------- pie ---------- */
.ftr { background: var(--bg-2); color: var(--gray); font-size: 12px; line-height: 1.33; letter-spacing: -.01em; padding: 30px 0 22px; }
.ftr a { color: var(--ink-2); }
.ftr .note { padding-bottom: 16px; border-bottom: 1px solid var(--hair); margin: 0; }
.ftr .cols { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; padding: 26px 0 30px; }
.ftr h4 { margin: 0 0 10px; font-size: 12px; font-weight: 600; color: var(--ink); }
.ftr ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; }
.ftr .bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding-top: 16px; border-top: 1px solid var(--hair); }

/* WhatsApp discreto */
.wa { position: fixed; right: 20px; bottom: 20px; z-index: 70; width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,.92); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); color: #25d366; display: grid; place-items: center; box-shadow: 0 8px 30px rgba(0,0,0,.14), 0 0 0 1px rgba(0,0,0,.04); transition: transform .4s var(--ease-out); }
.wa:hover { transform: scale(1.06); }
.wa svg { width: 28px; height: 28px; }

/* ---------- responsive ---------- */
@media (max-width: 1068px) {
  .feats { grid-template-columns: repeat(2, 1fr); }
  .feats.five .feat, .feats.five .feat:nth-child(4), .feats.five .feat:nth-child(5) { grid-column: span 3; }
  .numbers { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 833px) {
  .gnav .links, .gnav .rating { display: none; }
  .burger { display: block; }
  .lnav nav a:not(.btn) { display: none; }
  .lnav b { font-size: 19px; }
  .tiles, .pair, .mv, .about, .contact, .related, .revs, .feats.three { grid-template-columns: 1fr; }
  .tile, .tile.wide { min-height: 540px; }
  .svc-row { grid-template-columns: 1fr; }
  .svc-row .side { position: static; }
  .checks { grid-template-columns: 1fr; }
  .ftr .cols { grid-template-columns: 1fr 1fr; }
  .ticket { grid-template-columns: 1fr; }
  .ticket .r { border-left: 0; border-top: 2px dashed var(--hair); }
  .ticket .r::before { left: -16px; top: -17px; } .ticket .r::after { left: auto; right: -16px; top: -17px; bottom: auto; }
  .mock .pg { grid-template-columns: 1fr; } .mock .r { display: none; }
}
@media (max-width: 734px) {
  .kicker { font-size: 19px; }
  .feats, .feats.five { grid-template-columns: 1fr; }
  .feats.five .feat, .feats.five .feat:nth-child(4), .feats.five .feat:nth-child(5) { grid-column: auto; }
  .form { grid-template-columns: 1fr; }
  .stage { height: 140vh; }
  .stage img.product { width: 84vw; }
  .card { height: 440px; }
  .card .big { font-size: 170px; }
  .wa { width: 50px; height: 50px; right: 14px; bottom: 14px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
  .rv, .intro { opacity: 1; transform: none; }
  .statement .w { color: var(--ink); }
}

/* ==========================================================================
   Iteración 2
   ========================================================================== */

/* hero: bienvenida */
.hero h1 { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.hero h1 .hero-title { font-size: clamp(48px, 8.4vw, 112px); line-height: 1.02; letter-spacing: -.025em; }
.hero h1 .sub { font-weight: 500; color: var(--ink-2); font-size: clamp(21px, 2.3vw, 32px); }

/* escenario del logo: giro 3D, halo y textos que aparecen alrededor */
.stage { height: 260vh; }
.stage-sticky { place-items: center; padding-top: 0; perspective: 1400px; }
.stage .halo { position: absolute; left: 50%; top: 50%; width: min(90vw, 900px); aspect-ratio: 1; translate: -50% -50%; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(10, 92, 255, .16), rgba(110, 89, 246, .07) 55%, transparent 72%);
  opacity: var(--ho, .3); scale: var(--hs, .7); }
.stage .orbit { position: relative; transform-style: preserve-3d; transform: translateY(var(--ty, 0px)) rotateY(var(--ry, -38deg)) rotateX(var(--rx, 14deg)) scale(var(--s, .74)); will-change: transform; }
.stage img.product { width: auto; height: min(58vh, 600px); max-width: 76vw; transform: none; filter: drop-shadow(0 40px 40px rgba(0, 50, 160, .22)); }
.stage .shadow { position: absolute; left: 50%; bottom: 9%; width: min(46vw, 420px); height: 36px; translate: -50% 0; border-radius: 50%; background: radial-gradient(closest-side, rgba(0, 30, 90, .22), transparent); filter: blur(4px); opacity: var(--so, .4); scale: var(--ss, .7) 1; }
.callouts { list-style: none; margin: 0; padding: 0; position: absolute; inset: 0; pointer-events: none; max-width: 1180px; margin-inline: auto; }
.callouts li { position: absolute; display: flex; flex-direction: column; gap: 2px; max-width: 230px; opacity: var(--o, 0); transform: translateY(calc((1 - var(--o, 0)) * 18px)); }
.callouts b { font-size: clamp(19px, 1.8vw, 24px); font-weight: 600; letter-spacing: .004em; }
.callouts span { font-size: 15px; color: var(--gray); }
.callouts li::before { content: ""; width: 28px; height: 1.5px; background: var(--blue); margin-bottom: 12px; border-radius: 1px; transform-origin: left; transform: scaleX(var(--o, 0)); }
.callouts .c1 { left: 6%; top: 22%; } .callouts .c2 { right: 6%; top: 26%; text-align: right; align-items: flex-end; }
.callouts .c3 { left: 8%; bottom: 22%; } .callouts .c4 { right: 8%; bottom: 18%; text-align: right; align-items: flex-end; }
.callouts .c2::before, .callouts .c4::before { transform-origin: right; }

/* declaración en dos filas finales */
.statement .hl { display: inline; }

/* mosaicos: glifos más finos */
.tile { min-height: 470px; }
.tile.wide { min-height: 620px; }
.glyph { width: 104px; border-radius: 26px; margin-bottom: 56px; box-shadow: 0 18px 40px -22px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.9), 0 0 0 1px rgba(0,0,0,.04); }
.glyph svg { width: 48%; height: 48%; }
.glyph.blue { box-shadow: 0 18px 40px -18px rgba(0, 92, 255, .55), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.ink { box-shadow: 0 18px 40px -18px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.15); }
.phero .glyph { width: 128px; border-radius: 32px; }

/* maqueta: escritorio + teléfono */
.mock { position: relative; width: min(94%, 820px); aspect-ratio: auto; background: none; box-shadow: none; border-radius: 0; overflow: visible; padding-right: 7%; transform: translateY(70px); }
.tile.in .mock { transform: none; }
.mock .desk { border-radius: 14px 14px 0 0; overflow: hidden; background: #fff; box-shadow: 0 -10px 60px -10px rgba(41, 151, 255, .35), 0 0 0 1px rgba(255,255,255,.14); }
.mock .bar { height: 28px; }
.mock .bar span { padding: 2px 60px; font-size: 10.5px; }
.mock .site { display: grid; grid-template-columns: 1.15fr 1fr; grid-template-areas: "nav nav" "h pic" "row row"; gap: 18px 6%; padding: 3.5% 5% 4%; }
.mock .nav { grid-area: nav; display: flex; align-items: center; gap: 12px; }
.mock .nav em { width: 18px; height: 18px; border-radius: 5px; background: linear-gradient(135deg, #3b8bff, #6e59f6); margin-right: auto; }
.mock .nav u { width: 38px; height: 6px; border-radius: 3px; background: #e6e6eb; text-decoration: none; }
.mock .nav s { width: 58px; height: 18px; border-radius: 99px; background: var(--ink); }
.mock .hero-m { grid-area: h; align-self: center; }
.mock b { display: block; font-size: clamp(15px, 2.6vw, 34px); line-height: 1.02; letter-spacing: -.03em; color: var(--ink); }
.mock b span { background: linear-gradient(90deg, #0a5cff, #6e59f6); -webkit-background-clip: text; background-clip: text; color: transparent; }
.mock p { height: 6px; border-radius: 3px; background: #ececf0; margin: 12px 0 0; }
.mock p.s { width: 70%; margin-top: 7px; }
.mock .b { display: flex; gap: 8px; margin-top: 16px; }
.mock .b s { width: 88px; height: 22px; border-radius: 99px; background: var(--blue); }
.mock .b u { width: 70px; height: 22px; border-radius: 99px; box-shadow: inset 0 0 0 1.5px #d2d2d7; }
.mock .pic { grid-area: pic; aspect-ratio: 1.15; border-radius: 14px; background: linear-gradient(145deg, #eaf2ff, #f3efff 60%, #fff); display: grid; place-items: center; }
.mock .pic img { width: 46%; filter: drop-shadow(0 12px 16px rgba(0,60,180,.25)); }
.mock .row { grid-area: row; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.mock .row i { height: 46px; border-radius: 10px; background: #f5f5f7; }
.mock .phone { position: absolute; right: 0; bottom: -2px; width: 23%; aspect-ratio: 9 / 18.5; border-radius: 26px 26px 0 0; background: #fff; border: 5px solid #1d1d1f; border-bottom: 0; overflow: hidden; box-shadow: -20px 10px 50px -10px rgba(0,0,0,.6); transform: translateY(40px); transition: transform 2s .15s var(--ease-out); }
.tile.in .mock .phone { transform: none; }
.mock .phone .notch { width: 36%; height: 12px; margin: 5px auto 0; border-radius: 99px; background: #1d1d1f; }
.mock .phone .site { display: block; padding: 12px 10px; }
.mock .phone .nav { margin-bottom: 14px; } .mock .phone .nav em { width: 12px; height: 12px; } .mock .phone .nav s { width: 30px; height: 12px; }
.mock .phone b { font-size: clamp(9px, 1.25vw, 15px); }
.mock .phone p { height: 4px; margin-top: 8px; }
.mock .phone .b { margin-top: 10px; } .mock .phone .b s { width: 60%; height: 14px; }
.mock .phone .pic { margin-top: 12px; aspect-ratio: 1; border-radius: 10px; }

/* ventajas compactas: icono pequeño, sin tarjetas pesadas */
.feats { gap: 0 32px; }
.feat { background: none !important; border-radius: 0; padding: 26px 0 8px; border-top: 1px solid var(--hair); }
.feat .fi { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: rgba(0, 113, 227, .08); color: var(--blue); margin-bottom: 18px; }
.feat .fi svg { width: 20px; height: 20px; }
.feat h3 { font-size: 19px; }
.feat p { font-size: 15px; line-height: 1.5; }
.feats.five { gap: 0 32px; }
.feats.five .feat, .feats.five .feat:nth-child(4), .feats.five .feat:nth-child(5) { grid-column: auto; }
.feats.five { grid-template-columns: repeat(5, 1fr); }

/* 4 pasos: línea de tiempo fija */
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 28px; position: relative; counter-reset: s; }
.steps::before { content: ""; position: absolute; left: 18px; right: 18px; top: 18px; height: 1.5px; background: var(--hair); }
.steps::after { content: ""; position: absolute; left: 18px; right: 18px; top: 18px; height: 1.5px; background: linear-gradient(90deg, #0a5cff, #6e59f6); transform-origin: left; transform: scaleX(0); transition: transform 1.8s .2s var(--ease-out); }
.steps.in::after { transform: scaleX(1); }
.steps li { position: relative; }
.steps .dot { position: relative; z-index: 1; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; box-shadow: inset 0 0 0 1.5px var(--hair); font-size: 15px; font-weight: 600; color: var(--gray); margin-bottom: 24px; transition: background .5s, color .5s, box-shadow .5s; }
.sec-gray .steps .dot { background: var(--bg-2); }
.steps.in li .dot { background: var(--ink); color: #fff; box-shadow: none; }
.steps.in li:nth-child(1) .dot { transition-delay: .3s; } .steps.in li:nth-child(2) .dot { transition-delay: .75s; }
.steps.in li:nth-child(3) .dot { transition-delay: 1.2s; } .steps.in li:nth-child(4) .dot { transition-delay: 1.65s; background: var(--blue); }
.steps h3 { font-size: 21px; line-height: 1.2; font-weight: 600; margin: 0 0 8px; }
.steps p { margin: 0; color: var(--gray); font-size: 15px; line-height: 1.5; }

/* contacto con logos oficiales */
.clist a { justify-content: flex-start; gap: 16px; padding: 14px 0; font-size: 17px; }
.clist a span { flex: 1; }
.clist .bl { width: 40px; height: 40px; flex: none; border-radius: 10px; box-shadow: 0 2px 6px rgba(0,0,0,.08); }
.clist a > svg:last-child { width: 14px; height: 14px; color: var(--gray-2); transition: transform .3s var(--ease); }
.clist a:hover > svg:last-child { transform: translateX(3px); color: var(--blue); }

/* relacionados: íconos pequeños */
.related .fi { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 10px; background: #fff; color: var(--blue); box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.related .fi svg { width: 20px; height: 20px; }
.related a { min-height: 190px; }
.svc-row .side .glyph { width: 64px; border-radius: 16px; margin-bottom: 20px; }

/* conociéndonos */
.story { display: grid; grid-template-columns: 5fr 6fr; gap: clamp(40px, 7vw, 100px); align-items: center; }
.story .photo { position: relative; margin: 0; border-radius: 32px; box-shadow: 0 40px 80px -40px rgba(0,0,0,.35); }
.story figcaption { position: absolute; left: 16px; right: 16px; bottom: 16px; display: flex; flex-direction: column; padding: 14px 18px; border-radius: 18px; background: rgba(255,255,255,.72); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); }
.story figcaption b { font-size: 17px; font-weight: 600; }
.story figcaption span { font-size: 14px; color: var(--gray); }
.story-txt .t2 { margin-bottom: 22px; }
.story blockquote { margin: 28px 0 0; padding: 4px 0 4px 22px; border-left: 2px solid var(--blue); font-size: clamp(19px, 1.8vw, 23px); line-height: 1.4; color: var(--ink-2); }
.story blockquote strong { color: var(--ink); }
.promise { list-style: none; margin: 32px 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--hair); border-bottom: 1px solid var(--hair); }
.promise li { display: flex; flex-direction: column; gap: 10px; padding: 18px 12px 18px 0; font-size: 15px; font-weight: 600; }
.promise li + li { padding-left: 16px; border-left: 1px solid var(--hair); }
.promise svg { width: 22px; height: 22px; color: var(--blue); }
.signed { display: flex; align-items: center; gap: 18px; margin-top: 30px; color: var(--gray); font-size: 14px; }
.signed img { width: 150px; }

@media (max-width: 1068px) {
  .feats.five { grid-template-columns: repeat(3, 1fr); }
  .callouts .c1, .callouts .c3 { left: 3%; } .callouts .c2, .callouts .c4 { right: 3%; }
}
@media (max-width: 833px) {
  .story { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr 1fr; row-gap: 40px; }
  .steps::before, .steps::after { display: none; }
  .callouts li { max-width: 44%; }
  .callouts .c1 { top: 6%; } .callouts .c2 { top: 6%; } .callouts .c3 { bottom: 5%; } .callouts .c4 { bottom: 5%; }
  .stage .shadow { bottom: 18%; }
}
@media (max-width: 734px) {
  .feats.five { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .promise { grid-template-columns: 1fr; }
  .promise li { flex-direction: row; align-items: center; }
  .promise li + li { padding-left: 0; border-left: 0; border-top: 1px solid var(--hair); }
  .stage { height: 220vh; }
  .stage img.product { height: 42vh; }
  .callouts span { display: none; }
  .callouts b { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .callouts li { --o: 1; }
  .steps::after { transform: scaleX(1); }
}

/* ==========================================================================
   Iteración 3
   ========================================================================== */

/* hero: fluido líquido sutil */
.hero { position: relative; overflow: hidden; isolation: isolate; padding-bottom: 20px; }
.liquid { position: absolute; inset: -20% -10% 0; z-index: -1; filter: blur(60px) saturate(1.2); opacity: .55; pointer-events: none;
  -webkit-mask-image: linear-gradient(#000 45%, transparent 95%); mask-image: linear-gradient(#000 45%, transparent 95%); }
.liquid i { position: absolute; display: block; border-radius: 42% 58% 63% 37% / 45% 40% 60% 55%; mix-blend-mode: multiply; will-change: transform, border-radius; }
.liquid i:nth-child(1) { width: 46vw; height: 36vw; left: 4%; top: 6%; background: radial-gradient(circle at 35% 35%, #cfe0ff, #9fc2ff 60%, transparent 72%); animation: goo1 14s ease-in-out infinite alternate; }
.liquid i:nth-child(2) { width: 40vw; height: 34vw; right: 2%; top: 0; background: radial-gradient(circle at 60% 40%, #e3dcff, #c2b4ff 60%, transparent 72%); animation: goo2 17s ease-in-out infinite alternate; }
.liquid i:nth-child(3) { width: 34vw; height: 26vw; left: 34%; top: 32%; background: radial-gradient(circle at 50% 50%, #d4f1ff, #a8def7 60%, transparent 72%); animation: goo3 20s ease-in-out infinite alternate; }
@keyframes goo1 { 0% { transform: translate(0, 0) rotate(0); } 50% { border-radius: 60% 40% 35% 65% / 55% 60% 40% 45%; } 100% { transform: translate(8vw, 4vw) rotate(40deg); border-radius: 38% 62% 55% 45% / 40% 55% 45% 60%; } }
@keyframes goo2 { 0% { transform: translate(0, 0) rotate(0); } 50% { border-radius: 35% 65% 50% 50% / 60% 35% 65% 40%; } 100% { transform: translate(-9vw, 6vw) rotate(-35deg); border-radius: 55% 45% 40% 60% / 45% 60% 40% 55%; } }
@keyframes goo3 { 0% { transform: translate(0, 0) scale(1); } 50% { border-radius: 50% 50% 38% 62% / 40% 62% 38% 60%; } 100% { transform: translate(-5vw, -4vw) scale(1.15); border-radius: 62% 38% 60% 40% / 55% 45% 55% 45%; } }
.hero .grating { background: rgba(255,255,255,.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }

/* sigue deslizando */
.keep { position: absolute; left: 50%; bottom: 3.5%; translate: -50% 0; display: flex; flex-direction: column; align-items: center; gap: 8px; font-size: 12px; font-weight: 500; letter-spacing: .04em; color: var(--gray); opacity: var(--ko, 0); transition: opacity .4s; }
.keep i { position: relative; width: 22px; height: 34px; border-radius: 12px; box-shadow: inset 0 0 0 1.5px var(--hair); }
.keep i::after { content: ""; position: absolute; left: 50%; top: 7px; width: 3px; height: 7px; margin-left: -1.5px; border-radius: 2px; background: var(--blue); animation: wheel 1.8s var(--ease-out) infinite; }
@keyframes wheel { 0% { transform: translateY(0); opacity: 1; } 70% { transform: translateY(12px); opacity: 0; } 100% { opacity: 0; } }

/* glifos: paleta coordinada (colores de sistema) */
.glyph[class*="t-"] { color: #fff; }
.glyph.t-blue { background: linear-gradient(160deg, #4aa3ff, #0a64e6); box-shadow: 0 18px 40px -18px rgba(10,100,230,.55), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.t-indigo { background: linear-gradient(160deg, #8a88ff, #4b48d6); box-shadow: 0 18px 40px -18px rgba(75,72,214,.55), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.t-teal { background: linear-gradient(160deg, #5ad3e6, #1590b4); box-shadow: 0 18px 40px -18px rgba(21,144,180,.5), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.t-purple { background: linear-gradient(160deg, #d08cff, #8c46cf); box-shadow: 0 18px 40px -18px rgba(140,70,207,.5), inset 0 1px 0 rgba(255,255,255,.35); }
.glyph.t-graphite { background: linear-gradient(160deg, #4a4a4f, #1d1d1f); box-shadow: 0 18px 40px -18px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.18); }

/* maqueta: navegador completo + iPhone 16 Pro Max */
.tile.wide { padding-bottom: clamp(40px, 5vw, 64px); }
.tile.wide .art { padding-top: 48px; }
.mock { padding-right: 0; transform: translateY(50px); width: min(100%, 860px); display: flex; align-items: flex-end; }
.mock .desk { width: 84%; border-radius: 14px; box-shadow: 0 30px 80px -20px rgba(41,151,255,.35), 0 0 0 1px rgba(255,255,255,.14); }
.mock .site { padding-bottom: 5%; }
.iphone { position: relative; flex: none; width: 27%; margin-left: -11%; margin-bottom: -4%; aspect-ratio: 77.6 / 163; border-radius: 17% / 8.2%; padding: 1.6%;
  background: linear-gradient(135deg, #9c9894, #cfcbc6 18%, #6f6b67 45%, #b9b4ae 70%, #5b5854);
  box-shadow: 0 40px 70px -20px rgba(0,0,0,.8), inset 0 0 0 1px rgba(255,255,255,.35), inset 0 0 3px rgba(0,0,0,.6);
  transform: translateY(40px) rotate(3deg); transition: transform 2s .15s var(--ease-out); }
.tile.in .iphone { transform: none; }
.iphone > span { position: absolute; width: 1.4%; border-radius: 2px; background: linear-gradient(90deg, #6f6b67, #b9b4ae); }
.iphone .btn-a { left: -1.2%; top: 17%; height: 4%; } .iphone .btn-b { left: -1.2%; top: 25%; height: 8%; } .iphone .btn-c { left: -1.2%; top: 35%; height: 8%; }
.iphone .btn-d { right: -1.2%; top: 28%; height: 13%; }
.iphone .scr { position: relative; height: 100%; border-radius: 15.5% / 7.4%; overflow: hidden; background: #000; box-shadow: inset 0 0 0 3px #000;
  background: radial-gradient(120% 60% at 20% 10%, #3b6dff 0%, transparent 60%), radial-gradient(120% 70% at 90% 60%, #8f5cff 0%, transparent 60%), radial-gradient(90% 60% at 30% 100%, #19c2d6 0%, transparent 60%), #0b1440;
  color: #fff; text-align: left; font-family: var(--f); }
.iphone .sb { display: flex; justify-content: space-between; align-items: center; padding: 7% 9% 0; font-size: clamp(6px, .9vw, 11px); font-weight: 600; }
.iphone .island { position: absolute; left: 50%; top: 2.6%; width: 32%; height: 4.4%; translate: -50% 0; border-radius: 99px; background: #000; }
.iphone .sb .ic { display: flex; gap: 3px; align-items: center; }
.iphone .sb svg { width: clamp(8px, 1.2vw, 15px); height: auto; fill: #fff; color: #fff; }
.iphone .lock { text-align: center; margin-top: 12%; }
.iphone .lock small { display: block; font-size: clamp(6px, .9vw, 11px); opacity: .85; font-weight: 500; }
.iphone .lock b { display: block; font-size: clamp(30px, 5.2vw, 66px); line-height: 1; font-weight: 700; letter-spacing: -.02em; color: #fff; background: none; -webkit-text-fill-color: #fff; }
.iphone .notes { position: absolute; left: 5%; right: 5%; bottom: 9%; display: flex; flex-direction: column; gap: 5px; }
.iphone .note { display: flex; gap: 6px; align-items: flex-start; padding: 7px 8px; border-radius: 12px; background: rgba(245,245,250,.72); backdrop-filter: blur(16px) saturate(180%); -webkit-backdrop-filter: blur(16px) saturate(180%); color: #1d1d1f;
  opacity: 0; transform: translateY(10px) scale(.96); transition: opacity .7s var(--ease-out), transform .9s var(--ease-out); }
.tile.in .note { opacity: 1; transform: none; }
.tile.in .n1 { transition-delay: .9s; } .tile.in .n2 { transition-delay: 1.25s; } .tile.in .n3 { transition-delay: 1.6s; }
.iphone .app { flex: none; width: clamp(12px, 1.9vw, 22px); height: clamp(12px, 1.9vw, 22px); border-radius: 26%; overflow: hidden; display: grid; place-items: center; }
.iphone .app svg { width: 100%; height: 100%; }
.iphone .app.gg { background: #fff; padding: 2px; }
.iphone .note div { min-width: 0; display: flex; flex-direction: column; }
.iphone .note strong { display: flex; justify-content: space-between; gap: 4px; font-size: clamp(6px, .82vw, 10.5px); font-weight: 600; line-height: 1.25; }
.iphone .note strong i { font-style: normal; font-weight: 400; color: #6e6e73; }
.iphone .note span { font-size: clamp(6px, .8vw, 10px); line-height: 1.3; color: #1d1d1f; }
.iphone .home-ind { position: absolute; left: 50%; bottom: 2%; width: 34%; height: 4px; translate: -50% 0; border-radius: 99px; background: rgba(255,255,255,.85); }

@media (max-width: 833px) {
  .mock .desk { width: 100%; }
  .iphone { width: 38%; margin-left: -30%; margin-bottom: -8%; }
  .iphone .note span { display: none; }
}
@media (prefers-reduced-motion: reduce) { .liquid i { animation: none; } }

/* iteración 4 */
.mock .desk .site { grid-template-areas: "nav nav" "h h" "row row"; grid-template-columns: 1fr; }
.mock .desk .hero-m { padding: 4% 0 2%; }
.mock .desk .hero-m p { max-width: 55%; }
.liquid i { transition: translate 1.6s var(--ease-out); }
.liquid i:nth-child(1) { translate: calc(var(--mx, 0) * 50px) calc(var(--my, 0) * 36px); }
.liquid i:nth-child(2) { translate: calc(var(--mx, 0) * -40px) calc(var(--my, 0) * 30px); }
.liquid i:nth-child(3) { translate: calc(var(--mx, 0) * 28px) calc(var(--my, 0) * -24px); }
.story figcaption .fsign { width: 150px; height: auto; margin: -4px 0 -2px -4px; }
.story figcaption .fsign { mix-blend-mode: multiply; width: 170px; margin: -14px 0 -10px -10px; }
/* iteración 5: fluido movido por JS (siempre activo, respeta el mouse) */
.liquid { opacity: .7; filter: blur(48px) saturate(1.25); }
.liquid i { animation: morph 9s ease-in-out infinite alternate !important; transition: none; translate: none !important; }
.liquid i:nth-child(2) { animation-duration: 11s !important; animation-delay: -3s !important; }
.liquid i:nth-child(3) { animation-duration: 13s !important; animation-delay: -6s !important; }
@keyframes morph {
  0% { border-radius: 42% 58% 63% 37% / 45% 40% 60% 55%; }
  50% { border-radius: 60% 40% 35% 65% / 55% 60% 40% 45%; }
  100% { border-radius: 38% 62% 55% 45% / 40% 55% 45% 60%; }
}

/* ==========================================================================
   Modo oscuro
   ========================================================================== */
.theme { display: grid; place-items: center; width: 32px; height: 32px; margin-left: 14px; border: 0; border-radius: 50%; background: transparent; color: var(--ink); cursor: pointer; transition: background .3s; }
.theme:hover { background: rgba(0,0,0,.06); }
.theme svg { width: 17px; height: 17px; transition: transform .6s var(--ease-out), opacity .3s; }
.theme .moon { display: block; } .theme .sun { display: none; }
[data-theme="dark"] .theme .moon { display: none; } [data-theme="dark"] .theme .sun { display: block; }
.theme:active svg { transform: rotate(40deg) scale(.9); }
html.theming, html.theming * { transition: background-color .5s var(--ease), color .5s var(--ease), border-color .5s var(--ease) !important; }

[data-theme="dark"] {
  color-scheme: dark;
  --bg: #000; --bg-2: #101012; --bg-3: #2c2c2e; --surf: #1c1c1e;
  --ink: #f5f5f7; --ink-2: #d2d2d7; --gray: #a1a1a6; --gray-2: #86868b; --hair: #3a3a3c;
  --blue: #0a84ff; --blue-h: #409cff; --link: #2997ff;
}
[data-theme="dark"] ::selection { background: rgba(41, 151, 255, .35); }
[data-theme="dark"] .theme:hover { background: rgba(255,255,255,.1); }
[data-theme="dark"] .gnav { background: rgba(22, 22, 23, .8); }
[data-theme="dark"] .gnav a { color: rgba(255,255,255,.8); }
[data-theme="dark"] .gnav a:hover, [data-theme="dark"] .gnav .links a[aria-current="page"] { color: #fff; }
[data-theme="dark"] .mnav { background: rgba(0, 0, 0, .96); }
[data-theme="dark"] .lnav { background: rgba(0, 0, 0, .72); border-bottom-color: rgba(255,255,255,.12); }
[data-theme="dark"] .btn-dark { background: #f5f5f7; color: #000; }
[data-theme="dark"] .btn-dark:hover { background: #fff; }

/* superficies */
[data-theme="dark"] .sec-gray .tile:not(.dark), [data-theme="dark"] .rev, [data-theme="dark"] .sec-gray .pair .box,
[data-theme="dark"] .mv .b, [data-theme="dark"] .field :is(input, select, textarea), [data-theme="dark"] .related .fi,
[data-theme="dark"] .sec-gray .grating, [data-theme="dark"] .tile .grating { background: var(--surf); }
[data-theme="dark"] .form { background: var(--bg-2); }
[data-theme="dark"] .sec-gray .form { background: var(--surf); }
[data-theme="dark"] .field select option { background: var(--surf); }
[data-theme="dark"] .tile.dark { background: linear-gradient(180deg, #0c0c0e, #000); box-shadow: inset 0 0 0 1px rgba(255,255,255,.08); }
[data-theme="dark"] .sec-black { background: radial-gradient(70% 60% at 50% 0%, rgba(10, 132, 255, .14), transparent 70%), #000; }
[data-theme="dark"] .mv .a { background: linear-gradient(160deg, #0a3d91, #07183d); }
[data-theme="dark"] .glyph:not([class*="t-"]) { background: linear-gradient(160deg, #2c2c2e, #1c1c1e); color: #f5f5f7; box-shadow: 0 18px 40px -22px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.1); }
[data-theme="dark"] .glyph[class*="t-"] { box-shadow: 0 18px 50px -16px var(--gl, rgba(10,132,255,.45)), inset 0 1px 0 rgba(255,255,255,.3); }
[data-theme="dark"] .glyph.t-graphite { background: linear-gradient(160deg, #5a5a60, #2c2c2e); }

/* hero y detalles */
[data-theme="dark"] .liquid { opacity: .55; filter: blur(56px) saturate(1.4); }
[data-theme="dark"] .liquid i { mix-blend-mode: screen; }
[data-theme="dark"] .liquid i:nth-child(1) { background: radial-gradient(circle at 35% 35%, #2f6bff, #1a3fb0 60%, transparent 72%); }
[data-theme="dark"] .liquid i:nth-child(2) { background: radial-gradient(circle at 60% 40%, #7b5cff, #4a2fb8 60%, transparent 72%); }
[data-theme="dark"] .liquid i:nth-child(3) { background: radial-gradient(circle at 50% 50%, #1fb4e0, #0c6f99 60%, transparent 72%); }
[data-theme="dark"] .hero .grating { background: rgba(28, 28, 30, .7); }
[data-theme="dark"] .grating .g { box-shadow: none; }
[data-theme="dark"] .wa { background: rgba(28, 28, 30, .9); box-shadow: 0 8px 30px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.08); }
[data-theme="dark"] .story figcaption { background: rgba(28, 28, 30, .72); }
[data-theme="dark"] .story figcaption .fsign { filter: invert(1); mix-blend-mode: screen; }
[data-theme="dark"] .story .photo { box-shadow: 0 40px 80px -40px rgba(0,0,0,.9); }
[data-theme="dark"] .steps .dot { background: var(--surf); }
[data-theme="dark"] .sec-gray .steps .dot { background: var(--bg-2); }
[data-theme="dark"] .steps.in li .dot { background: #f5f5f7; color: #000; }
[data-theme="dark"] .steps.in li:nth-child(4) .dot { background: var(--blue); color: #fff; }
[data-theme="dark"] .checks li::before { background-color: var(--blue); }
[data-theme="dark"] .feat .fi, [data-theme="dark"] .promise svg { color: #409cff; }
[data-theme="dark"] .feat .fi { background: rgba(10, 132, 255, .16); }
[data-theme="dark"] .clist .bl { box-shadow: 0 0 0 1px rgba(255,255,255,.06); }
[data-theme="dark"] .mock .desk { box-shadow: 0 30px 90px -20px rgba(41,151,255,.3), 0 0 0 1px rgba(255,255,255,.12); }
[data-theme="dark"] .photo { background: #1c1c1e; }
/* iPhone de la maqueta en pantallas chicas: más grande y con texto legible */
@media (max-width: 833px) {
  .tile.wide .art { padding-top: 36px; }
  .mock { padding-bottom: 8%; }
  .iphone { width: 54%; margin-left: -40%; margin-bottom: -14%; border-radius: 16% / 7.8%; }
  .iphone .scr { border-radius: 14.5% / 7%; }
  .iphone .sb { font-size: 8.5px; padding-top: 6.5%; }
  .iphone .sb svg { width: 11px; }
  .iphone .lock { margin-top: 9%; }
  .iphone .lock small { font-size: 8px; }
  .iphone .lock b { font-size: 36px; }
  .iphone .notes { left: 4.5%; right: 4.5%; bottom: 7%; gap: 4px; }
  .iphone .note { padding: 6px 7px; border-radius: 10px; gap: 6px; }
  .iphone .app { width: 16px; height: 16px; }
  .iphone .note strong { font-size: 8.5px; }
  .iphone .note span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; font-size: 8px; line-height: 1.25; }
}
@media (max-width: 400px) {
  .iphone { width: 58%; margin-left: -44%; }
  .iphone .lock b { font-size: 32px; }
}
@media (max-width: 833px) {
  .tile.wide { min-height: 0; padding-bottom: 28px; }
  .mock { padding-bottom: 0; transform: none; }
  .iphone { margin-bottom: 0; transform: none; }
  .mock .desk { margin-bottom: 18%; }
  .gnav .theme { margin-left: auto; margin-right: 4px; }
}
.mock .desk b { color: #1d1d1f; }
.glyph.t-orange { background: linear-gradient(160deg, #ffb865, #f2700c); box-shadow: 0 18px 40px -18px rgba(242,112,12,.5), inset 0 1px 0 rgba(255,255,255,.35); }
.tile.wide.slim { min-height: 470px; }
