/* ==========================================================================
   Apoda — diseño «motion».
   Portado del prototipo de una sola página a las plantillas de Eleventy.

   DOS CAMBIOS SOBRE EL ORIGINAL, los dos por los crawlers de IA:

   1. `.rv` y los estados iniciales del hero ya NO arrancan en opacity:0. Se
      esconden sólo bajo `.js`, que el propio script pone en <html> como primera
      acción. GPTBot, ClaudeBot y PerplexityBot no ejecutan JavaScript: leen el
      HTML crudo. Con el original, un fallo del script dejaba la página casi en
      blanco para una persona, y Googlebot —que sí renderiza— veía 37 bloques
      declarados invisibles.

   2. Los contadores llevan su número real en el HTML (ver index.njk). El
      original escribía `<span data-count="43">0</span>`: el 43 lo ponía el JS y
      un crawler leía CERO. En un producto que vende «te decimos qué responde la
      IA sobre tu marca», su propia portada le habría dicho a la IA que todas
      sus métricas dan cero.
   ========================================================================== */

:root{
  color-scheme:light;
  --bg:#FFFFFF; --bg-2:#FAFAF9; --surface:#FFFFFF; --surface-2:#F4F5F7; --ink:#0C0F12; --ink-2:#2E3440; --muted:#667085; --faint:#98A2B3;
  --line:#E7E9EC; --line-2:#D5D9DE;
  --accent:#0F8B82; --accent-ink:#0B6D66; --accent-tint:#E4F4F2; --accent-tint-2:#BFE5E0;
  --good:#0F8B82; --good-tint:#E4F4F2; --bad:#C9432E; --bad-tint:#FBE7E4;
  --m1:#BFE9F2; --m2:#CDEFDF; --m3:#EEF2C8; --m4:#FFE3CF;
  --shadow-sm:0 1px 2px rgba(12,15,18,.06), 0 1px 1px rgba(12,15,18,.03);
  --shadow:0 1px 2px rgba(12,15,18,.05), 0 16px 48px -16px rgba(12,15,18,.18);
  --shadow-lg:0 2px 6px rgba(12,15,18,.06), 0 30px 80px -24px rgba(12,15,18,.28);
  --display:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --body:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --r:12px; --r-lg:20px; --r-xl:28px;
  --ease:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
h1,h2,h3,h4{font-family:var(--display);font-weight:500;letter-spacing:-.03em;line-height:1.05;margin:0;text-wrap:balance}
h1{font-size:clamp(40px,6vw,76px);letter-spacing:-.035em;line-height:1}
h2{font-size:clamp(30px,4vw,52px)}
h3{font-size:20px;letter-spacing:-.015em;line-height:1.25;font-weight:500}
h2 .g,h3 .g{color:var(--muted);font-weight:500}
p{margin:0}
.wrap{width:min(1240px,calc(100% - 40px));margin:0 auto}
.lead{font-size:19px;color:var(--muted);line-height:1.5;max-width:56ch}
.mono{font-family:var(--mono)}
.tag{display:inline-flex;align-items:center;height:28px;padding:0 11px;border-radius:999px;background:var(--accent-tint);color:var(--accent-ink);font-size:13px;font-weight:500;margin-bottom:22px}
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 20px;border-radius:999px;border:1px solid transparent;font-weight:500;font-size:15px;cursor:pointer;white-space:nowrap;transition:background .2s,border-color .2s,transform .2s var(--ease),box-shadow .2s;overflow:hidden}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--ink);color:var(--bg)}
.btn-primary:hover{background:var(--ink-2)}
.btn-accent{background:var(--accent);color:#fff;box-shadow:0 1px 0 rgba(255,255,255,.2) inset}
.btn-accent:hover{background:var(--accent-ink)}
.btn-ghost{background:var(--surface);border-color:var(--line-2);color:var(--ink);box-shadow:var(--shadow-sm)}
.btn-ghost:hover{border-color:var(--faint)}
.btn-sm{height:38px;padding:0 14px;font-size:14px}
.btn .arrow{width:16px;height:16px;transition:transform .25s var(--ease)}
.btn:hover .arrow{transform:translateX(3px)}
.link{display:inline-flex;align-items:center;gap:6px;font-weight:500;color:var(--ink);font-size:15px}
.link .arrow{width:14px;height:14px;transition:transform .25s var(--ease)}
.link:hover .arrow{transform:translateX(3px)}

/* NAV (floating pill) */
.nav{position:sticky;top:12px;z-index:60;margin:12px auto 0;width:min(1240px,calc(100% - 40px));transition:width .35s var(--ease)}
.nav .bar{display:flex;align-items:center;justify-content:space-between;gap:24px;height:64px;padding:0 10px 0 20px;border-radius:999px;background:color-mix(in srgb,var(--surface) 86%,transparent);backdrop-filter:saturate(1.5) blur(14px);border:1px solid transparent;transition:box-shadow .35s,border-color .35s,background .35s}
.nav.stuck .bar{box-shadow:var(--shadow);border-color:var(--line);background:color-mix(in srgb,var(--surface) 92%,transparent)}
.nav.stuck{width:min(1080px,calc(100% - 40px))}
.logo{display:flex;align-items:center;gap:9px;font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.03em}
.logo svg{width:26px;height:26px}
.nav-links{display:flex;gap:4px;font-size:14.5px;color:var(--ink-2)}
.nav-links a{padding:8px 12px;border-radius:999px;transition:background .2s,color .2s}
.nav-links a:hover{background:var(--surface-2);color:var(--ink)}
.nav-cta{display:flex;gap:8px;align-items:center}
.nav-cta .signin{font-size:14.5px;color:var(--ink-2);padding:0 12px}

/* Estados iniciales de la animación, sólo con JS vivo. Ver la nota de .rv. */
.js .hero h1 .w>span{transform:translateY(110%);opacity:0}
.js .hero .lead,.js .leadform{opacity:0;transform:translateY(10px)}
.js .formnote{opacity:0}
.js .window{opacity:0;transform:translateY(40px) scale(.98)}

/* HERO */
.hero{padding:56px 0 0}
.hero-card{position:relative;border-radius:var(--r-xl);overflow:hidden;background:var(--bg-2);border:1px solid var(--line);min-height:640px;isolation:isolate}
.hero-card canvas{position:absolute;inset:-10%;width:120%;height:120%;filter:blur(60px) saturate(1.1);opacity:.9;z-index:-1}
.hero-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,0) 40%,var(--bg-2) 100%);z-index:-1;pointer-events:none}
.hero-in{position:relative;padding:88px 40px 0;text-align:center}
.hero h1{max-width:16ch;margin:0 auto}
.hero h1 .w{display:inline-block;overflow:hidden;vertical-align:bottom}
.hero h1 .w>span{display:inline-block;transition:transform .9s var(--ease),opacity .6s}
.hero.on h1 .w>span{transform:none;opacity:1}
.hero h1 em{font-style:normal;color:var(--accent)}
.hero .lead{margin:24px auto 0;text-align:center;transition:all .8s var(--ease) .5s}
.hero.on .lead{opacity:1;transform:none}
.leadform{margin:34px auto 0;max-width:880px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:6px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.2fr) auto;gap:6px;box-shadow:var(--shadow);text-align:left;transition:all .8s var(--ease) .65s}
.hero.on .leadform{opacity:1;transform:none}
.leadform label{display:flex;flex-direction:column;gap:1px;padding:9px 14px;border-radius:12px;transition:background .2s;min-width:0;overflow:hidden}
.leadform label span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.leadform label:hover,.leadform label:focus-within{background:var(--surface-2)}
.leadform label span{font-size:11.5px;color:var(--muted);font-weight:500}
.leadform input{border:0;background:transparent;padding:0;font-size:15px;outline:none;min-width:0;color:var(--ink)}
.leadform input::placeholder{color:var(--faint)}
.leadform .btn{height:auto;align-self:stretch;border-radius:12px}
.formnote{margin-top:14px;font-size:13px;color:var(--muted);display:flex;gap:18px;justify-content:center;flex-wrap:wrap;transition:opacity .8s .9s}
.hero.on .formnote{opacity:1}
.formnote span{display:inline-flex;align-items:center;gap:6px}
.formnote svg{width:14px;height:14px;color:var(--good)}

/* PRODUCT WINDOW */
.stage{position:relative;margin:64px auto 0;max-width:1120px;padding:0 90px;max-height:500px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 60%,transparent);mask-image:linear-gradient(#000 60%,transparent)}
.window{background:var(--surface);border:1px solid var(--line);border-radius:18px 18px 0 0;border-bottom:0;box-shadow:var(--shadow-lg);text-align:left;overflow:hidden;position:relative;transition:opacity 1s var(--ease) .8s,transform 1.1s var(--ease) .8s}
.hero.on .window{opacity:1;transform:none}
.chrome{display:flex;align-items:center;gap:14px;padding:11px 16px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}
.chrome .lights{display:flex;gap:6px}
.chrome .lights i{width:10px;height:10px;border-radius:99px;background:var(--line-2);display:block}
.chrome .crumb b{color:var(--ink);font-weight:500}
.chrome .url{margin-left:auto;font-family:var(--mono);font-size:12px;background:var(--surface-2);padding:5px 10px;border-radius:6px;color:var(--faint)}
.app{display:grid;grid-template-columns:190px 1fr;min-height:420px}
.side{border-right:1px solid var(--line);padding:14px 10px;font-size:13.5px;color:var(--ink-2)}
.side a{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px}
.side a.on{background:var(--surface-2);color:var(--ink);font-weight:500}
.side .grp{font-size:11px;color:var(--faint);padding:14px 9px 6px;font-weight:500;letter-spacing:.02em}
.side svg{width:15px;height:15px;color:var(--faint)}
.main{padding:18px 20px}
.main .hd{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.main .hd h4{font-weight:500;font-size:15px;letter-spacing:-.01em}
.main .hd .sub{font-size:12.5px;color:var(--muted)}
.chips{display:flex;gap:6px}
.chip{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;color:var(--ink-2);background:var(--surface);cursor:pointer}
.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.tiles{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tile{padding:13px 15px;border-right:1px solid var(--line)}
.tile:last-child{border-right:0}
.tile .k{font-size:11.5px;color:var(--muted);font-weight:500}
.tile .v{font-family:var(--display);font-size:26px;font-weight:500;letter-spacing:-.03em;margin-top:5px;line-height:1;font-variant-numeric:tabular-nums}
.tile .v small{font-size:13px;color:var(--faint);font-weight:500;letter-spacing:0}
.tile .d{font-size:12px;color:var(--muted);margin-top:5px}
.tile .d.up{color:var(--good)} .tile .d.dn{color:var(--bad)}
.panel2{display:grid;grid-template-columns:1.5fr 1fr;gap:12px;margin-top:12px}
.panel2>*,.main,.tile{min-width:0}
.card{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:13px 15px}
.card .t{display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:500;margin-bottom:8px}
.card .t span{font-weight:400;color:var(--muted);font-size:12px}
.chart{width:100%;height:auto;display:block}
.chart .line{stroke-dasharray:1000;stroke-dashoffset:1000;transition:stroke-dashoffset 2.4s var(--ease) 1.4s}
.chart .area{opacity:0;transition:opacity 1.2s 2.6s}
.hero.on .chart .line{stroke-dashoffset:0}
.hero.on .chart .area{opacity:1}
.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.tbl th{font-weight:500;font-size:11.5px;color:var(--muted);text-align:left;padding:2px 0 8px;border-bottom:1px solid var(--line)}
.tbl td{padding:6px 0;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}
.tbl tr:last-child td{border-bottom:0}
.tbl td:last-child,.tbl th:last-child{text-align:right}
.bar{height:6px;background:var(--surface-2);border-radius:99px;overflow:hidden;width:100%}
.bar i{display:block;height:100%;background:var(--accent);border-radius:99px;width:0;transition:width 1.4s var(--ease) 1.5s}
.bar i.o{background:var(--line-2)}
.hero.on .bar i{width:var(--w)}
.me{color:var(--accent);font-weight:600}
/* floating cards */
.float{position:absolute;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-lg);padding:12px 14px;font-size:13px;max-width:280px;opacity:0;transform:translateY(24px) scale(.96);transition:opacity .9s var(--ease),transform 1s var(--ease);z-index:2}
.hero.on .float{opacity:1;transform:none}
.float.f1{left:0;top:56px;transition-delay:1.5s}
.float.f2{right:0;top:40px;transition-delay:1.85s}
.float.f3{right:10px;top:320px;transition-delay:2.2s;max-width:250px}
.float .h{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-bottom:8px}
.float .h i{width:8px;height:8px;border-radius:99px;display:inline-block}
.float .h b{color:var(--ink);font-weight:500}
.float p{color:var(--ink-2);line-height:1.45}
.float p b{font-weight:600;color:var(--ink)}
.float .hit{background:var(--good-tint);color:var(--good);padding:0 4px;border-radius:4px;font-weight:600}
.float .st{display:inline-flex;align-items:center;gap:6px;font-weight:600;margin-top:8px}
.float .st.no{color:var(--bad)} .float .st.yes{color:var(--good)}
.float .st i{width:7px;height:7px;border-radius:99px;background:currentColor}
.typing{font-family:var(--mono);font-size:12.5px;color:var(--ink);white-space:normal;min-height:36px}
.typing::after{content:"";display:inline-block;width:7px;height:14px;background:var(--accent);vertical-align:-2px;margin-left:2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.typing::after{animation:none}}

/* ENGINES (cells) */
.engines{margin:0 auto;width:min(1240px,calc(100% - 40px));border:1px solid var(--line);border-top:0;border-radius:0 0 var(--r-xl) var(--r-xl);display:grid;grid-template-columns:1.4fr repeat(6,1fr);overflow:hidden}
.engines>div{padding:22px 18px;border-right:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:10px;font-weight:500;font-size:14.5px;color:var(--ink-2);transition:background .2s}
.engines>div:hover{background:var(--surface-2)}
.engines>div:last-child{border-right:0}
.engines .lab{justify-content:flex-start;font-size:12.5px;color:var(--muted);font-weight:500;letter-spacing:.01em}
.engines i{width:8px;height:8px;border-radius:99px;background:var(--accent);display:inline-block}

/* SECTIONS */
section{padding:128px 0}
.sec-head{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end;margin-bottom:56px}
.sec-head .lead{max-width:46ch}
.sec-head.center{grid-template-columns:1fr;text-align:center;justify-items:center}
.sec-head.center .lead{text-align:center}
.rv{transition:opacity .8s var(--ease),transform .8s var(--ease)}
/* Sin JS, todo visible. La animación sólo existe si el JS la puede terminar:
   de lo contrario un fallo del script dejaba la página casi en blanco, y un
   crawler que renderiza CSS veía 37 bloques en opacity:0. */
.js .rv{opacity:0;transform:translateY(18px)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.1s}.rv.d2{transition-delay:.2s}.rv.d3{transition-delay:.3s}

/* MEDICIONES */
.prompt{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px 20px;font-family:var(--mono);font-size:15px;box-shadow:var(--shadow)}
.prompt .gt{color:var(--accent);font-weight:500}
.prompt .tg{margin-left:auto;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line);padding:4px 8px;border-radius:6px;white-space:nowrap}
.compare{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.engine{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:transform .35s var(--ease),box-shadow .35s}
.engine:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.engine .top{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--muted)}
.engine .top b{color:var(--ink);font-weight:500}
.engine .top i{width:9px;height:9px;border-radius:99px;display:inline-block}
.engine .quote{padding:18px 18px 18px 22px;border-left:3px solid var(--line-2);margin:18px;color:var(--ink-2);font-size:15.5px;line-height:1.6;flex:1}
.engine .quote b{color:var(--ink);font-weight:600}
.engine .quote b.hit{background:var(--good-tint);color:var(--good);padding:0 4px;border-radius:4px}
.engine .res{padding:16px 18px 20px;border-top:1px solid var(--line);background:var(--bg-2);display:grid;grid-template-columns:1fr 1fr;gap:16px}
.engine .res .k{font-size:11.5px;font-weight:500;color:var(--muted);margin-bottom:6px}
.status{display:inline-flex;align-items:center;gap:7px;font-weight:600;font-size:15px}
.status i{width:9px;height:9px;border-radius:99px}
.status.no{color:var(--bad)} .status.no i{background:var(--bad)}
.status.yes{color:var(--good)} .status.yes i{background:var(--good)}
.status small{font-weight:400;color:var(--muted);font-size:13px}
.pills{display:flex;flex-wrap:wrap;gap:6px}
.pills span{font-size:12.5px;padding:3px 9px;border-radius:999px;background:var(--surface);border:1px solid var(--line);color:var(--ink-2)}
.strip{margin-top:16px;display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:16px;background:var(--surface);overflow:hidden}
.strip>div{padding:18px 20px;border-right:1px solid var(--line)}
.strip>div:last-child{border-right:0}
.strip .k{font-size:12px;font-weight:500;color:var(--muted)}
.strip .v{font-family:var(--display);font-size:34px;font-weight:500;letter-spacing:-.03em;line-height:1;margin-top:8px;font-variant-numeric:tabular-nums}
.strip .v small{font-size:15px;color:var(--faint);font-weight:500}
.strip .d{font-size:13px;color:var(--muted);margin-top:6px}
.foot{font-size:12.5px;color:var(--muted);margin-top:14px;font-family:var(--mono)}

/* SHOWCASE (pinned) */
.show{position:relative;padding:0}
.show-sticky{position:sticky;top:96px;height:calc(100vh - 120px);min-height:560px;max-height:760px}
.showcard{height:100%;border-radius:var(--r-xl);border:1px solid var(--line);background:var(--bg-2);position:relative;overflow:hidden;isolation:isolate}
.showcard canvas{position:absolute;inset:-10%;width:120%;height:120%;filter:blur(70px);opacity:.85;z-index:-1}
.showcard .in{position:absolute;inset:0;display:grid;grid-template-rows:auto 1fr}
.tabs{display:flex;gap:8px;justify-content:center;padding:26px 20px 0}
.tab{display:flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;background:color-mix(in srgb,var(--surface) 70%,transparent);border:1px solid var(--line);font-size:14px;font-weight:500;color:var(--muted);cursor:pointer;transition:all .35s var(--ease);backdrop-filter:blur(8px)}
.tab i{width:8px;height:8px;border-radius:99px;background:var(--line-2);transition:background .35s}
.tab.on{background:var(--ink);color:var(--bg);border-color:var(--ink);box-shadow:var(--shadow)}
.tab.on i{background:var(--accent)}
.panes{position:relative;margin:22px 40px 40px;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);overflow:hidden}
.pane{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1.25fr;gap:40px;padding:44px;opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .7s var(--ease);pointer-events:none}
.pane.on{opacity:1;transform:none;pointer-events:auto}
.pane .txt{display:flex;flex-direction:column;justify-content:center}
.pane .k{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:18px}
.pane .k i{width:22px;height:22px;border-radius:7px;background:var(--accent-tint);color:var(--accent);display:grid;place-items:center}
.pane .k svg{width:12px;height:12px}
.pane h3{font-size:clamp(24px,2.6vw,34px);letter-spacing:-.03em;margin-bottom:14px}
.pane p{color:var(--muted);font-size:16px;max-width:42ch}
.pane .link{margin-top:22px}
.viz{border-radius:16px;background:var(--surface-2);border:1px solid var(--line);position:relative;overflow:hidden;display:grid;place-items:center;padding:28px}
.viz .inner{width:100%;max-width:440px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:18px 20px}
.viz .inner .t{font-size:13px;font-weight:500;display:flex;justify-content:space-between;margin-bottom:12px}
.viz .inner .t span{color:var(--muted);font-weight:400;font-size:12px}
/* pane 1: counters */
.cnt{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cnt>div{border:1px solid var(--line);border-radius:10px;padding:12px}
.cnt .k2{font-size:11.5px;color:var(--muted);font-weight:500}
.cnt .n{font-family:var(--display);font-size:30px;font-weight:500;letter-spacing:-.03em;margin-top:4px;font-variant-numeric:tabular-nums}
.cnt .n small{font-size:12px;color:var(--faint)}
.rng{margin-top:12px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px}
.rng .b{flex:1;height:8px;border-radius:99px;background:var(--surface-2);position:relative}
.rng .b i{position:absolute;top:0;bottom:0;left:24%;width:22%;background:var(--accent-tint-2);border-radius:99px}
.rng .b b{position:absolute;top:-3px;left:34%;width:14px;height:14px;border-radius:99px;background:var(--accent);border:2px solid var(--surface)}
/* pane 2: bars */
.sov .row{display:grid;grid-template-columns:110px 1fr 36px;gap:10px;align-items:center;font-size:12.5px;padding:5px 0}
.sov .row .bar i{transition:width 1.2s var(--ease)}
.pane.on .sov .row .bar i{width:var(--w)}
.sov .row:not(.on) .bar i{width:0}
/* pane 3: sources */
.src .row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px;opacity:0;transform:translateX(-8px);transition:all .5s var(--ease)}
.pane.on .src .row{opacity:1;transform:none}
.src .row:nth-child(2){transition-delay:.15s}.src .row:nth-child(3){transition-delay:.3s}.src .row:nth-child(4){transition-delay:.45s}.src .row:nth-child(5){transition-delay:.6s}
.src .row:last-child{border-bottom:0}
.src .ic{width:22px;height:22px;border-radius:6px;background:var(--surface-2);display:grid;place-items:center;font-size:10px;font-weight:600;color:var(--muted)}
.src .row .u{flex:1;color:var(--ink-2)}
.src .ok{font-size:11.5px;font-weight:500;color:var(--good);background:var(--good-tint);padding:2px 8px;border-radius:999px}
.src .no{font-size:11.5px;font-weight:500;color:var(--bad);background:var(--bad-tint);padding:2px 8px;border-radius:999px}
/* pane 4: chart draws */
.viz .chart .line2{stroke-dasharray:900;stroke-dashoffset:900;transition:stroke-dashoffset 2s var(--ease) .2s}
.pane.on .viz .chart .line2{stroke-dashoffset:0}
.viz .chart .mk{opacity:0;transition:opacity .5s 1.4s}
.pane.on .viz .chart .mk{opacity:1}
.show-steps{position:relative}
.show-steps .st{height:70vh}
.show-steps .st:last-child{height:40vh}

/* EL CAMBIO (cells) */
.cells{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
.cells>div{padding:36px 32px 40px;border-right:1px solid var(--line);transition:background .25s}
.cells>div:hover{background:var(--bg-2)}
.cells>div:last-child{border-right:0}
.cells .ic{width:40px;height:40px;border-radius:12px;background:var(--accent-tint);color:var(--accent);display:grid;place-items:center;margin-bottom:22px}
.cells .ic svg{width:18px;height:18px}
.cells h3{margin-bottom:12px}
.cells p{color:var(--muted);font-size:15.5px}
.cells p+p{margin-top:12px}
.stat{margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.stat>div{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px 32px 28px;display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:center}
.stat .n{font-family:var(--display);font-size:68px;font-weight:500;letter-spacing:-.045em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums;min-width:4.2ch}
.stat p{font-size:16px;color:var(--ink-2);max-width:36ch}
.stat .src2{font-size:12px;color:var(--faint);margin-top:10px;font-family:var(--mono)}

/* EJECUCIÓN */
.exec{border:1px solid var(--line);border-radius:var(--r-xl);padding:64px;position:relative;overflow:hidden;background:var(--surface);display:grid;grid-template-columns:1fr 1.1fr;gap:64px;align-items:center}
.exec::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 80% at 100% 0%,color-mix(in srgb,var(--m1) 60%,transparent),transparent 70%),radial-gradient(40% 60% at 90% 100%,color-mix(in srgb,var(--m2) 60%,transparent),transparent 70%);pointer-events:none}
.exec>*{position:relative}
.exec .lead{margin-top:16px}
.exec .cols{display:grid;gap:12px}
.exec .cols>div{background:color-mix(in srgb,var(--surface) 80%,transparent);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:14px;padding:18px 20px;display:grid;grid-template-columns:36px 1fr;gap:14px;align-items:start;transition:transform .3s var(--ease),box-shadow .3s}
.exec .cols>div:hover{transform:translateX(4px);box-shadow:var(--shadow)}
.exec .cols .ic{width:36px;height:36px;border-radius:10px;background:var(--ink);color:var(--bg);display:grid;place-items:center}
.exec .cols .ic svg{width:16px;height:16px}
.exec .cols b{display:block;font-weight:500;font-size:16px;margin-bottom:4px}
.exec .cols p{color:var(--muted);font-size:14.5px}

/* METODOLOGÍA (rail) */
.rail{display:grid;grid-template-columns:320px 1fr;gap:64px;align-items:start}
.rail-nav{position:sticky;top:110px;display:flex;flex-direction:column;gap:2px}
.rail-nav a{display:block;padding:10px 0 10px 18px;border-left:2px solid var(--line);color:var(--faint);font-size:17px;font-weight:500;letter-spacing:-.01em;transition:color .3s,border-color .3s}
.rail-nav a.on{color:var(--ink);border-color:var(--accent)}
.rail-nav .lead{margin-bottom:28px;font-size:16px}
.rail-nav .tag{align-self:flex-start}
.rail-blocks{display:flex;flex-direction:column;gap:16px}
.rblock{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);padding:36px;display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center;min-height:300px;scroll-margin-top:110px}
.rblock .k{font-size:12.5px;font-weight:500;color:var(--accent);margin-bottom:12px}
.rblock h3{font-size:24px;margin-bottom:10px}
.rblock p{color:var(--muted);font-size:15.5px}
.rblock .ill{border-radius:14px;background:var(--surface-2);border:1px solid var(--line);padding:22px;min-height:180px;display:grid;place-items:center}
.runs{display:flex;gap:6px;align-items:flex-end;height:80px}
.runs i{width:22px;border-radius:6px 6px 2px 2px;background:var(--accent-tint-2);display:block;height:var(--h);transform-origin:bottom;transform:scaleY(0);transition:transform .8s var(--ease)}
.runs i.m{background:var(--accent)}
.rblock.in .runs i{transform:none}
.runs i:nth-child(2){transition-delay:.1s}.runs i:nth-child(3){transition-delay:.2s}.runs i:nth-child(4){transition-delay:.3s}.runs i:nth-child(5){transition-delay:.4s}.runs i:nth-child(6){transition-delay:.5s}
.ratio{display:flex;align-items:center;gap:14px;font-family:var(--display);font-size:40px;letter-spacing:-.03em;font-weight:500}
.ratio small{font-size:14px;color:var(--muted);font-family:var(--body);letter-spacing:0;font-weight:400;display:block;line-height:1.3}
.donut{width:120px;height:120px}
.donut circle{fill:none;stroke-width:12}
.donut .bg{stroke:var(--surface-2)}
.donut .fg{stroke:var(--accent);stroke-linecap:round;stroke-dasharray:283;stroke-dashoffset:283;transition:stroke-dashoffset 1.4s var(--ease) .2s;transform:rotate(-90deg);transform-origin:center}
.rblock.in .donut .fg{stroke-dashoffset:calc(283 - 283 * var(--p))}
.act{display:flex;flex-direction:column;gap:8px;width:100%}
.act div{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:8px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--line)}
.act .y{color:var(--good);font-weight:500}.act .n{color:var(--faint);font-weight:500}

/* PROCESO */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface)}
.step{padding:30px 26px 34px;border-right:1px solid var(--line);position:relative;transition:background .25s}
.step:hover{background:var(--bg-2)}
.step:last-child{border-right:0}
.step .n{display:flex;align-items:center;gap:10px;font-size:12.5px;font-weight:500;color:var(--accent);margin-bottom:22px}
.step .n::after{content:"";flex:1;height:1px;background:var(--line)}
.step h3{font-size:19px;margin-bottom:10px}
.step p{color:var(--muted);font-size:15px}

/* PRECIOS */
.toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:var(--surface);font-size:14px;position:relative}
.toggle span{padding:7px 14px;border-radius:999px;cursor:pointer;color:var(--muted);position:relative;z-index:1;transition:color .3s}
.toggle span.on{color:var(--bg)}
.toggle .pill{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:var(--ink);transition:transform .35s var(--ease)}
.toggle.m .pill{transform:translateX(100%)}
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.plan{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px;display:flex;flex-direction:column;position:relative;transition:transform .35s var(--ease),box-shadow .35s,border-color .35s}
.plan:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--line-2)}
.plan.rec{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,var(--shadow)}
.plan .badge{position:absolute;top:-13px;left:28px;background:var(--accent);color:#fff;font-size:11.5px;font-weight:500;padding:5px 11px;border-radius:999px}
.plan .name{font-size:13px;font-weight:500;color:var(--muted)}
.plan .price{font-family:var(--display);font-size:46px;font-weight:500;letter-spacing:-.04em;margin-top:12px;line-height:1;font-variant-numeric:tabular-nums}
.plan .price small{font-size:16px;color:var(--faint);font-weight:500;letter-spacing:0;margin-right:2px}
.plan .per{font-size:13px;color:var(--muted);margin-top:6px}
.plan p.desc{color:var(--ink-2);font-size:15px;margin:18px 0 22px;flex:1}
.plan ul{list-style:none;padding:0;margin:0 0 26px;display:flex;flex-direction:column;gap:9px;font-size:14px;color:var(--ink-2)}
.plan li{display:flex;gap:9px;align-items:flex-start}
.plan li svg{width:15px;height:15px;color:var(--accent);flex:none;margin-top:3px}
.cmp{margin-top:56px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);overflow:hidden}
.cmp .cap{padding:16px 20px;border-bottom:1px solid var(--line);font-weight:500;font-size:15px;display:flex;justify-content:space-between;align-items:center}
.cmp .cap span{font-size:13px;color:var(--muted);font-weight:400}
.cmp .scroll{overflow-x:auto}
.cmp table{width:100%;border-collapse:collapse;font-size:14px;min-width:720px}
.cmp th{font-weight:500;font-size:12px;color:var(--muted);text-align:left;padding:12px 20px;border-bottom:1px solid var(--line);background:var(--bg-2)}
.cmp td{padding:13px 20px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top}
.cmp td:first-child{color:var(--ink);font-weight:500;width:26%}
.cmp tr:last-child td{border-bottom:0}
.cmp th.rec,.cmp td.rec{background:color-mix(in srgb,var(--accent-tint) 55%,transparent)}

/* FAQ */
.faq{display:grid;grid-template-columns:1fr 1.5fr;gap:64px}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0;font-weight:500;font-size:17.5px;letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary .pl{width:28px;height:28px;border-radius:99px;border:1px solid var(--line);display:grid;place-items:center;flex:none;transition:transform .3s var(--ease),background .3s}
.faq summary .pl svg{width:14px;height:14px;color:var(--muted)}
.faq details[open] summary .pl{transform:rotate(45deg);background:var(--surface-2)}
.faq details p{padding:0 0 22px;color:var(--muted);max-width:60ch;font-size:15.5px}

/* CTA */
.cta{position:relative;border:1px solid var(--line);border-radius:var(--r-xl);padding:80px 40px;text-align:center;overflow:hidden;isolation:isolate;background:var(--bg-2)}
.cta canvas{position:absolute;inset:-10%;width:120%;height:120%;filter:blur(60px);opacity:.9;z-index:-1}
.cta h2{max-width:18ch;margin:0 auto}
.cta .lead{margin:16px auto 28px;text-align:center}
.cta .btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* FOOTER */
footer{padding:48px 0 40px;font-size:14px;color:var(--muted)}
footer .grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
footer .col b{display:block;color:var(--ink);font-weight:500;margin-bottom:12px;font-size:13.5px}
footer .col a{display:block;padding:4px 0;color:var(--ink-2)}
footer .col a:hover{color:var(--ink)}
footer .bottom{margin-top:40px;padding-top:20px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--faint)}
footer .tg{max-width:36ch;margin-top:12px;line-height:1.5}

@media (prefers-reduced-motion:reduce){
  .rv,.hero h1 .w>span,.hero .lead,.leadform,.formnote,.window,.float,.chart .line,.chart .area,.pane,.src .row,.runs i,.donut .fg,.viz .chart .line2,.viz .chart .mk{transition:none!important;opacity:1!important;transform:none!important;stroke-dashoffset:0!important}
  .bar i{transition:none!important;width:var(--w)!important}
  html{scroll-behavior:auto}
}

/* RESPONSIVE */
@media (max-width:1040px){
  .nav-links{display:none}
  .app{grid-template-columns:1fr} .side{display:none}
  .tiles{grid-template-columns:repeat(2,1fr)} .tile:nth-child(2n){border-right:0} .tile:nth-child(n+3){border-top:1px solid var(--line)}
  .panel2{grid-template-columns:1fr}
  .float{display:none}
  .stage{padding:0 12px}
  .engines{grid-template-columns:repeat(3,1fr)} .engines>div{border-bottom:1px solid var(--line)} .engines>div:nth-child(3n){border-right:0} .engines .lab{grid-column:span 3;border-right:0}
  .sec-head{grid-template-columns:1fr;gap:16px}
  .show-sticky{position:static;height:auto;max-height:none;min-height:0}
  .show-steps{display:none}
  .showcard .in{position:static;display:block}
  .panes{position:static;margin:16px 16px 16px}
  .pane{position:static;grid-template-columns:1fr;padding:28px;opacity:1;transform:none;pointer-events:auto;border-bottom:1px solid var(--line)}
  .pane:last-child{border-bottom:0}
  .tabs{display:none}
  .pane .sov .row .bar i{width:var(--w)} .src .row{opacity:1;transform:none} .viz .chart .line2{stroke-dashoffset:0} .viz .chart .mk{opacity:1}
  .cells{grid-template-columns:1fr} .cells>div{border-right:0;border-bottom:1px solid var(--line)} .cells>div:last-child{border-bottom:0}
  .stat{grid-template-columns:1fr}
  .exec{grid-template-columns:1fr;padding:40px 28px;gap:36px}
  .rail{grid-template-columns:1fr;gap:24px} .rail-nav{position:static;flex-direction:row;flex-wrap:wrap;gap:8px} .rail-nav a{border-left:0;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-size:14px} .rail-nav a.on{border-color:var(--ink);background:var(--ink);color:var(--bg)} .rail-nav .lead{display:none}
  .rblock{grid-template-columns:1fr;min-height:0;padding:28px}
  .steps{grid-template-columns:1fr 1fr} .step:nth-child(2n){border-right:0} .step:nth-child(n+3){border-top:1px solid var(--line)}
  .plans{grid-template-columns:1fr}
  .faq{grid-template-columns:1fr;gap:28px}
  .strip{grid-template-columns:repeat(2,1fr)} .strip>div{border-bottom:1px solid var(--line)} .strip>div:nth-child(2n){border-right:0}
  footer .grid{grid-template-columns:1fr 1fr}
}
@media (max-width:680px){
  section{padding:80px 0}
  .hero{padding-top:20px} .hero-in{padding:56px 20px 0} .hero-card{min-height:0}
  .leadform{grid-template-columns:1fr}
  .stage{padding:0 12px;margin-top:40px}

  .chrome .crumb span{display:none}
  .main{padding:14px} .main .hd{flex-direction:column;align-items:flex-start;gap:10px} .chips{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .compare{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr} .step{border-right:0;border-bottom:1px solid var(--line)} .step:last-child{border-bottom:0}
  .engine .res{grid-template-columns:1fr}
  .engines{grid-template-columns:repeat(2,1fr)} .engines>div:nth-child(3n){border-right:1px solid var(--line)} .engines>div:nth-child(2n+1){border-right:0} .engines .lab{grid-column:span 2;border-right:0}
  .stat>div{grid-template-columns:1fr;gap:10px}
  .cta{padding:48px 20px}
  .nav-cta .signin{display:none}
  .prompt{flex-wrap:wrap} .prompt .tg{margin-left:0}
  .cmp .cap{flex-direction:column;align-items:flex-start;gap:4px}
}
/* ==========================================================================
   LOGO DE APODA
   El lockup del kit ya trae isotipo y logotipo juntos, así que `.logo` no lleva
   texto al lado: antes iba el mark suelto más la palabra escrita en Geist.
   La altura manda y el ancho sale de la proporción del archivo (3.285:1) para
   no deformarlo — el kit prohíbe estirarlo. 28px de alto dan 92px de ancho, por
   encima del mínimo de 90px que fija la guía para la versión horizontal.
   ========================================================================== */
.logo .marca__mark{height:28px;width:auto;flex:0 0 auto}
footer .logo .marca__mark{height:26px}
.logo{color:var(--ink);gap:0}
footer .logo{color:var(--ink)}

/* ==========================================================================
   FORMULARIO DE DIAGNÓSTICO
   --------------------------------------------------------------------------
   El prototipo traía un <form> propio, plano, sin validación ni envío. Se
   conservó el de siempre (`form-diagnostico.njk`) porque hero.js engancha por
   `.js-form-diagnostico`, valida campo por campo, envía a la función
   serverless y dispara los eventos de GA4 — tres cosas que un formulario nuevo
   habría roto en silencio.

   Lo que se porta, entonces, es el ASPECTO: la barra horizontal de una sola
   línea sobre el hero, y la caja apilada en el cierre de la página.
   ========================================================================== */
.hero .diagnostico__caja{margin:34px auto 0;max-width:880px;text-align:left}
.hero .formulario{
  background:var(--surface);border:1px solid var(--line);border-radius:18px;
  padding:6px;display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1.2fr) auto;
  gap:6px;box-shadow:var(--shadow);align-items:stretch;
}
.hero .formulario .campo{
  margin:0;display:flex;flex-direction:column;gap:1px;padding:9px 14px;
  border-radius:12px;transition:background .2s;min-width:0;overflow:hidden;
}
.hero .formulario .campo:hover,.hero .formulario .campo:focus-within{background:var(--surface-2)}
.hero .formulario .campo label{
  font-size:11.5px;color:var(--muted);font-weight:500;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;margin:0;
}
.hero .formulario .campo input{
  border:0;background:transparent;padding:0;font-size:15px;outline:none;
  min-width:0;color:var(--ink);height:auto;
}
.hero .formulario .campo input::placeholder{color:var(--faint)}
.hero .formulario .boton{
  height:auto;align-self:stretch;border-radius:12px;margin:0;
  background:var(--accent);color:#fff;border:1px solid transparent;
  font-weight:500;font-size:15px;padding:0 20px;cursor:pointer;white-space:nowrap;
}
.hero .formulario .boton:hover{background:var(--accent-ink)}
/* El pie del formulario sale de la reja y se centra debajo, como el `formnote`
   del prototipo. */
.hero .formulario__pie{
  grid-column:1/-1;margin:8px 0 0;text-align:center;font-size:13px;color:var(--muted);
}
/* El mensaje de error de cada campo no puede empujar la reja: se superpone. */
.hero .formulario .campo__error{font-size:11px;color:var(--bad);min-height:0}

/* Cierre de página: la misma caja, apilada, sobre el bloque oscuro. */
.cta .diagnostico__caja{max-width:520px;margin:26px auto 0;text-align:left}
.cta .formulario{display:grid;gap:10px}
.cta .formulario .campo{margin:0}
.cta .formulario .campo label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:4px}
.cta .formulario .campo input{
  width:100%;border:1px solid var(--line);background:var(--surface);
  border-radius:var(--r);padding:11px 13px;font-size:15px;color:var(--ink);
}
.cta .formulario .boton{
  width:100%;height:46px;border-radius:999px;border:0;background:var(--accent);
  color:#fff;font-weight:500;font-size:15px;cursor:pointer;
}
.cta .formulario__pie{margin:10px 0 0;text-align:center;font-size:13px;color:var(--muted)}
.formulario__exito{background:var(--accent-tint);border:1px solid var(--accent-tint-2);
  border-radius:var(--r-lg);padding:20px 22px;color:var(--accent-ink)}
.formulario__exito h3{margin-bottom:6px}

@media (max-width:900px){
  .hero .formulario{grid-template-columns:1fr;padding:10px}
  .hero .formulario .boton{height:46px;margin-top:4px}
}

/* ==========================================================================
   GUÍAS
   --------------------------------------------------------------------------
   El prototipo no traía páginas de artículo, así que esta parte se construyó
   con sus mismas piezas: `.wrap`, `.tag`, `.lead`, la tarjeta con borde fino y
   sombra baja, y la tipografía Geist. La única regla propia es la medida de
   lectura — 68 caracteres — que no es estética: por encima de eso el ojo pierde
   el renglón al volver a la izquierda.
   ========================================================================== */
.guia-cab{padding:64px 0 0}
.guia-cab .in{max-width:800px}
.guia-cab h1{font-size:clamp(34px,4.6vw,56px);margin-bottom:18px}
.guia-cab .lead{max-width:62ch}
.guia-meta{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin-top:22px;
  font-size:13px;color:var(--muted);font-family:var(--mono)}
.guia-meta .sep{width:3px;height:3px;border-radius:99px;background:var(--line-2)}

/* Índice de guías: la misma tarjeta que usan los planes, en reja. */
.guia-lista{list-style:none;padding:0;margin:36px 0 0;display:grid;gap:14px}
@media (min-width:820px){.guia-lista{grid-template-columns:1fr 1fr}}
.guia-tarjeta{display:flex;flex-direction:column;gap:9px;height:100%;padding:24px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm);transition:border-color .2s,box-shadow .25s var(--ease),transform .25s var(--ease)}
.guia-tarjeta:hover{border-color:var(--line-2);box-shadow:var(--shadow);transform:translateY(-2px)}
.guia-tarjeta strong{font-family:var(--display);font-weight:500;font-size:19px;
  letter-spacing:-.015em;line-height:1.25;color:var(--ink)}
.guia-tarjeta span{font-size:14.5px;color:var(--muted);line-height:1.5}
.guia-tarjeta .mas{margin-top:auto;padding-top:8px;font-size:14px;font-weight:500;
  color:var(--accent-ink);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
/* La flecha necesita su tamaño explícito. El SVG no trae `width`/`height` —los
   pone el CSS de `.btn` y `.link`— y acá no la cubría ninguna regla, así que se
   estiraba hasta llenar la tarjeta. */
.guia-tarjeta .mas .arrow{width:14px;height:14px;flex:0 0 auto;
  transition:transform .25s var(--ease)}
.guia-tarjeta:hover .mas .arrow{transform:translateX(3px)}

/* Cuerpo del artículo. */
.guia-cuerpo{padding:40px 0 0}
.prosa{max-width:68ch;font-size:17px;line-height:1.68;color:var(--ink-2)}
.prosa h2{font-size:clamp(24px,2.6vw,32px);margin:44px 0 14px;color:var(--ink)}
.prosa h3{font-size:19px;margin:32px 0 10px;color:var(--ink)}
.prosa p{margin:0 0 18px}
.prosa ul,.prosa ol{margin:0 0 18px;padding-left:22px}
.prosa li{margin-bottom:8px}
.prosa strong{color:var(--ink);font-weight:600}
.prosa a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:2px;
  text-decoration-thickness:1px;text-decoration-color:var(--accent-tint-2)}
.prosa a:hover{text-decoration-color:var(--accent)}
.prosa code{font-family:var(--mono);font-size:.9em;background:var(--surface-2);
  padding:2px 6px;border-radius:6px;color:var(--ink)}
.prosa blockquote{margin:24px 0;padding:16px 20px;border-left:2px solid var(--accent);
  background:var(--accent-tint);border-radius:0 var(--r) var(--r) 0;color:var(--ink-2)}
.prosa blockquote p:last-child{margin:0}
.prosa table{width:100%;border-collapse:collapse;font-size:14.5px;margin:0 0 22px}
.prosa th,.prosa td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}
.prosa th{font-weight:500;color:var(--muted);font-size:12.5px;text-transform:uppercase;letter-spacing:.04em}
.prosa hr{border:0;border-top:1px solid var(--line);margin:34px 0}

/* Cierre del artículo: enlaces al resto, sobre la superficie tenue. */
.relacionados{margin:52px 0 0;padding:26px 28px;background:var(--bg-2);
  border:1px solid var(--line);border-radius:var(--r-lg)}
.relacionados h2{font-size:15px;margin:0 0 14px;font-weight:500;color:var(--muted);
  text-transform:uppercase;letter-spacing:.05em;font-family:var(--body)}
.relacionados ul{list-style:none;padding:0;margin:0;display:grid;gap:9px}
.relacionados a{color:var(--ink);font-weight:500;font-size:15.5px;
  display:inline-flex;align-items:center;gap:8px}
.relacionados a::before{content:"→";color:var(--accent);font-weight:400}
.relacionados a:hover{color:var(--accent-ink)}

/* ==========================================================================
   TABLAS COMPARATIVAS Y TARJETAS DE TÉRMINO
   --------------------------------------------------------------------------
   Últimas piezas que faltaban para que todo el sitio hable el mismo idioma.
   La tabla reutiliza el tratamiento de la de precios —cabecera en versalitas,
   línea fina, columna propia resaltada— y las tarjetas del glosario son las
   mismas del índice de guías.
   ========================================================================== */

/* La tabla de una página de contenido puede ser más ancha que la columna de
   lectura: se sale de las 68ch y desborda con scroll propio en pantallas
   angostas, porque una tabla comprimida no se lee, se adivina. */
/* La tabla SE SALE de la columna de lectura hasta el ancho del contenedor.
   `.prosa` está topada en 68ch y alineada a la izquierda del `.wrap`, así que
   estirarla hasta el ancho del wrap la ensancha sin descuadrarla. Ocho columnas
   dentro de 68 caracteres no se leen: se adivinan. */
.prosa .tabla{margin:26px 0 8px;overflow-x:auto;
  width:min(1240px, calc(100vw - 40px));max-width:none;
  border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}
.prosa .tabla table{margin:0;border-collapse:collapse;width:100%;min-width:720px;font-size:14px}
.prosa .tabla caption{caption-side:top;text-align:left;padding:16px 18px 12px;
  font-size:13px;color:var(--muted);line-height:1.5;border-bottom:1px solid var(--line)}
.prosa .tabla th,.prosa .tabla td{padding:11px 14px;border-bottom:1px solid var(--line);
  text-align:left;vertical-align:top}
.prosa .tabla thead th{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--muted);font-weight:500;white-space:nowrap;background:var(--bg-2)}
.prosa .tabla tbody th{font-weight:500;color:var(--ink);width:210px}
.prosa .tabla tbody tr:last-child th,.prosa .tabla tbody tr:last-child td{border-bottom:0}
.prosa .tabla td{color:var(--ink-2)}
.prosa .tabla a{color:var(--accent-ink)}
/* La columna del cliente, marcada sin gritar: un tinte y el texto en tinta. */
.prosa .tabla .es-propia{background:var(--accent-tint);color:var(--ink)}
.prosa .tabla thead .es-propia{background:var(--accent-tint-2);color:var(--accent-ink)}
.tabla-nota{font-size:13.5px;color:var(--muted);line-height:1.55;margin:0 0 22px}

/* Fecha de actualización: dato, no prosa, así que va en monoespaciada como el
   resto de los metadatos del sitio. */
.actualizado{font-family:var(--mono);font-size:12.5px;color:var(--faint);
  margin:0 0 26px;letter-spacing:.01em}

/* Glosario: las mismas tarjetas del índice de guías. */
.lista-terminos{list-style:none;padding:0;margin:32px 0 0;display:grid;gap:14px}
@media (min-width:820px){.lista-terminos{grid-template-columns:1fr 1fr}}
.termino-tarjeta{display:flex;flex-direction:column;gap:8px;height:100%;padding:22px 24px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-sm);
  transition:border-color .2s,box-shadow .25s var(--ease),transform .25s var(--ease)}
.termino-tarjeta:hover{border-color:var(--line-2);box-shadow:var(--shadow);transform:translateY(-2px)}
.termino-tarjeta strong{font-family:var(--display);font-weight:500;font-size:18px;
  letter-spacing:-.015em;color:var(--ink)}
.termino-tarjeta span{font-size:14.5px;color:var(--muted);line-height:1.5}

.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}
.saltar{position:absolute;left:-9999px;top:0;background:var(--ink);color:var(--bg);
  padding:10px 16px;border-radius:0 0 var(--r) 0;z-index:99}
.saltar:focus{left:0}

/* Cita de fuente dentro de un artículo: de dónde salió un dato. Va en
   monoespaciada como el resto de los metadatos, y con `tnum` para que las
   cifras alineen. */
.prosa .fuente{font-family:var(--mono);font-feature-settings:"tnum" 1;
  font-size:12.5px;line-height:1.55;color:var(--muted);margin:-8px 0 22px}
.prosa .fuente a{color:inherit;text-decoration-color:var(--line-2)}

/* El selector anual/mensual, con el aspecto de píldora del diseño. Lo maneja
   hero.js, que cambia el precio leyendo los data- de cada tarjeta. */
.precios__toggle{position:relative;display:inline-flex;padding:4px;gap:2px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:999px}
.precios__toggle-btn{position:relative;z-index:1;border:0;background:transparent;
  padding:7px 15px;border-radius:999px;font-family:var(--mono);font-size:12.5px;
  color:var(--muted);cursor:pointer;transition:color .2s,background .2s;white-space:nowrap}
.precios__toggle-btn:hover{color:var(--ink)}
.precios__toggle-btn.is-active{background:var(--surface);color:var(--ink);
  box-shadow:var(--shadow-sm)}
/* La píldora deslizante del prototipo la reemplaza el fondo del botón activo:
   con dos botones reales —que es lo que necesita hero.js— una píldora aparte
   se desincroniza en cuanto cambia el ancho del texto. */
.precios__toggle .pill{display:none}
.actualizado,.tabla-nota{font-feature-settings:"tnum" 1}

/* El mark del logo toma su color de acento de aquí. Se define en :root y no
   dentro de una sección porque el logo aparece en la barra y en el pie, y el
   SVG trae un azul de reserva que fuera del sistema desentona. */
:root{--acento-mark:var(--accent)}

/* ==========================================================================
   ROTADOR DE MOTORES EN EL TITULAR
   --------------------------------------------------------------------------
   La pregunta del hero no es sólo sobre ChatGPT: el logo rota entre los cinco
   motores que mide Apoda. Lo mueve hero.js leyendo `motores.json`.

   DIFERENCIA CON LA VERSIÓN ANTERIOR: el hero de antes era oscuro y los logos
   se invertían a blanco con `brightness(0) invert(1)`. Este hero es claro, así
   que se aplanan a la tinta con `brightness(0)` a secas. Invertirlos acá los
   volvería invisibles.
   ========================================================================== */
.rot--motor{
  display:inline-block;
  /* El ancho del estado más largo. Si se agrega un motor con un logo más
     ancho, este valor sube o el titular salta al rotar. */
  min-width:2.7em;
  text-align:center;
  vertical-align:baseline;
}
.rot__logo{
  display:inline-flex;align-items:center;justify-content:center;
  height:.9em;              /* fija: si no, el titular cambia de alto al rotar */
  vertical-align:middle;    /* con baseline el titular crece unos píxeles */
  transition:opacity .2s ease;
}
.rot__logo img{
  /* .55em: son lockups completos —ícono más nombre—, así que a la altura de las
     mayúsculas ocupan casi 200 px de ancho y pesan mucho más que las palabras
     que tienen al lado. A esta altura el nombre del motor queda del tamaño del
     texto, que es lo que se quiere leer. */
  height:.55em;width:auto;display:block;
}
/* SIN `filter:brightness(0)`, y esto se decidió mirándolo.
   Aplanar a tinta funciona con cuatro de los cinco, cuyos íconos son de trazo o
   geométricos. El de Copilot es una forma RELLENA: aplanada queda un borrón
   negro sólido que se come el titular. En sus colores reales es un degradado
   suave y los cinco se leen como lo que son.
   El texto de los cinco lockups ya viene casi negro, así que el titular no se
   ensucia: el color lo pone sólo el ícono, que mide unos 30 px. */
.rot__nombre{font-size:.44em;font-weight:500;letter-spacing:-.015em;white-space:nowrap}
.rot-oculto{opacity:0}

@media (max-width:640px){
  /* En pantalla angosta el logo baja a su propia línea: intercalado en el
     texto obliga a saltos de línea feos alrededor de una caja que no parte. */
  .rot--motor{display:flex;justify-content:center;min-width:0;margin:.1em 0}
}
@media (prefers-reduced-motion:reduce){.rot__logo{transition:none}}

/* El sustantivo rota entre industria · producto · servicio, para que la
   pregunta del titular no suene sólo a una categoría. Lo mueve hero.js
   (`iniciarSustantivo`), desfasado del rotador de motores para que los dos
   cambios nunca caigan en el mismo instante. */
.rot--sustantivo{
  display:inline-block;
  /* Ancho de la opción más larga MÁS el signo de cierre, que va dentro. Así el
     sobrante cae al final de la frase, donde no se ve, en vez de abrirse entre
     la palabra y el «?». Si se agrega un sustantivo más largo que «industria»,
     este valor sube o el titular salta al rotar. */
  min-width:5.6em;
  text-align:left;
}
.rot__palabra{transition:opacity .2s ease}
@media (prefers-reduced-motion:reduce){.rot__palabra{transition:none}}

/* Los SVG en línea llevan su tamaño en el marcado (`width`/`height`), pero un
   `.btn` los quiere de 16 px y una tarjeta de 14. El CSS ajusta; el atributo es
   el piso que evita que un estilo que no llegó deje una flecha del alto de su
   contenedor. */
svg.arrow{flex:0 0 auto}
