/* Kit de componentes — igual para todas las plantillas; se viste con las variables de theme.css.
   Prefijo k-. Modificadores: is-brand, is-dark, is-alt, is-tint, is-media, is-row, is-featured.
   Contraste (WCAG AA, lo garantiza contrast_check.py al generar la plantilla):
   - Texto en color de marca sobre superficies claras → --color-text-accent (nunca --color-action ni --color-link a pelo).
   - Texto sobre un color → su on-color: --on-action, --on-brand, --on-dark, --on-hero, --on-chart-N.
   - Los colores de gráficos (--chart-N) son para gráficos, iconos y decoración: nunca fondo de texto salvo con --ci:var(--on-chart-N).
   - Etiquetas (.k-tag): estilo único --tag-bg/--tag-color. */
.k-grid{display:grid;gap:24px}.k-2{grid-template-columns:repeat(2,1fr)}.k-3{grid-template-columns:repeat(3,1fr)}.k-4{grid-template-columns:repeat(4,1fr)}
.k-h{font-family:var(--font-display);font-weight:var(--heading-weight);letter-spacing:var(--heading-tracking);color:var(--color-text-heading,var(--color-text));line-height:1.15;margin:0}
.k-eyebrow{font:700 12px/1 var(--font-body);letter-spacing:1.2px;text-transform:uppercase;color:var(--color-text-accent,var(--color-action));margin-bottom:12px}
.k-muted{color:var(--color-text-muted)}
.k-link{color:var(--color-text-accent,var(--color-link));font-weight:600;text-decoration:none;display:inline-block;margin-top:16px}

/* Tarjetas */
.k-card{background:var(--color-bg);color:var(--color-text);border-radius:var(--card-radius);border:var(--card-border);box-shadow:var(--card-shadow);padding:28px;position:relative;min-width:0}
.k-card h3,.k-card h4{font-family:var(--font-display);font-weight:var(--heading-weight);letter-spacing:var(--heading-tracking);font-size:22px;line-height:1.2;margin:0 0 8px;color:var(--color-text-heading,var(--color-text))}
.k-card p{margin:0;font-size:15px;line-height:1.5;color:var(--color-text-muted)}
.k-card.is-alt{background:var(--color-bg-alt);box-shadow:none}
.k-card.is-tint{background:color-mix(in srgb,var(--c) 13%,var(--color-bg));border:0;box-shadow:none}
.k-card.is-brand{background:var(--brand-bg);color:var(--brand-color);border:0}
.k-card.is-dark{background:var(--dark-bg);color:var(--dark-color);border:0}
.k-card.is-brand :is(h3,h4,p,.k-num,.k-quote),.k-card.is-dark :is(h3,h4,p,.k-num,.k-quote){color:inherit}
.k-card.is-dark .k-accent{color:var(--dark-accent)}.k-card.is-brand .k-accent{color:var(--brand-accent)}
.k-card.is-featured{border:2px solid var(--color-action)}
.k-card.is-media{padding:12px 12px 26px}.k-card.is-media>.k-body{padding:0 16px}
.k-card.is-row{display:grid;grid-template-columns:42% 1fr;gap:24px;align-items:center;padding:12px}.k-card.is-row .k-media{margin:0}
.k-ico{width:48px;height:48px;border-radius:min(14px,calc(var(--card-radius)*.6 + 2px));background:color-mix(in srgb,var(--c,var(--color-action)) 14%,transparent);display:grid;place-items:center;margin-bottom:18px}
.k-ico::after{content:"";width:20px;height:20px;border:2.5px solid var(--c,var(--color-action));border-radius:6px}
.k-ico.is-round{border-radius:50%}.k-ico.is-round::after{border-radius:50%}
.k-media{aspect-ratio:16/10;border-radius:max(4px,calc(var(--card-radius) - 6px));margin-bottom:20px;position:relative;overflow:hidden;
  background:var(--m,linear-gradient(135deg,color-mix(in srgb,var(--c,var(--color-action)) 26%,var(--color-bg-alt)),var(--color-bg-alt)))}
.k-media::before{content:"";position:absolute;width:46%;aspect-ratio:1;border-radius:50%;right:-8%;top:-18%;background:color-mix(in srgb,var(--c,var(--color-action)) 30%,transparent)}
.k-media::after{content:"";position:absolute;left:10%;bottom:14%;width:38%;height:12px;border-radius:99px;background:color-mix(in srgb,var(--color-bg) 80%,transparent);box-shadow:0 22px 0 color-mix(in srgb,var(--color-bg) 55%,transparent)}
.k-media.is-tall{aspect-ratio:4/5}.k-media.is-wide{aspect-ratio:21/9}
.k-tag{display:inline-block;padding:5px 12px;border-radius:999px;font:700 12px/1.2 var(--font-body);background:var(--c,var(--tag-bg,var(--color-bg-alt)));color:var(--ci,var(--tag-color,var(--color-text)))}
.k-meta{font-size:13px;color:var(--color-text-muted);margin-bottom:10px;display:flex;gap:10px;align-items:center}
.k-badge{position:absolute;top:-12px;right:20px;background:var(--color-action);color:var(--on-action,var(--color-action-text));font:700 11px/1 var(--font-body);letter-spacing:.6px;text-transform:uppercase;padding:6px 10px;border-radius:999px}

/* Precios */
.k-price{font-family:var(--font-display);font-weight:var(--heading-weight);font-size:46px;line-height:1;margin:14px 0 6px;color:var(--color-text-heading,var(--color-text))}
.k-price small{font:500 15px var(--font-body);opacity:.7;display:inline}
.k-list{list-style:none;padding:0;margin:20px 0 24px;display:grid;gap:10px;font-size:15px}
.k-list li{padding-left:28px;position:relative}.k-list li::before{content:"";position:absolute;left:2px;top:5px;width:12px;height:7px;border-left:2.5px solid var(--color-action);border-bottom:2.5px solid var(--color-action);transform:rotate(-45deg)}
.k-card.is-brand .k-list li::before,.k-card.is-dark .k-list li::before{border-color:currentColor}
.k-card .btn{display:block;text-align:center}.k-card .btn.is-inline{display:inline-block}

/* Testimonios y personas */
.k-quote{font-family:var(--font-display);font-size:20px;line-height:1.4;font-weight:var(--heading-weight);margin:0;color:var(--color-text-heading,var(--color-text))}
.k-quote.is-big{font-size:30px;line-height:1.25}
.k-person{display:flex;gap:12px;align-items:center;margin-top:22px;font-size:14px}.k-person b{display:block}
.k-avatar{width:44px;height:44px;border-radius:50%;background:var(--c,var(--color-bg-alt));flex:none;border:2px solid var(--color-bg)}
.k-avatar.is-lg{width:88px;height:88px}.k-stack{display:flex}.k-stack .k-avatar{margin-left:-12px}.k-stack .k-avatar:first-child{margin-left:0}
.k-stars{letter-spacing:3px;color:var(--star-color,#F5B400);font-size:15px;margin-bottom:14px}

/* Cifras y gráficos */
.k-num{font-family:var(--font-display);font-weight:var(--heading-weight);font-size:44px;line-height:1;color:var(--color-text-heading,var(--color-text))}
.k-trend{font:700 13px var(--font-body);color:var(--color-success,#1f7a45);margin-left:8px}.k-trend.is-down{color:var(--color-error,#b3261e)}
.k-bars{display:flex;align-items:flex-end;gap:10px;height:150px;margin-top:20px}.k-bars i{flex:1;border-radius:6px 6px 0 0;background:var(--chart-1);min-width:0}
.k-bars i:nth-child(even){background:var(--chart-2)}.k-bars.is-mono i{background:var(--chart-1)}.k-bars.is-mono i:last-child{background:var(--chart-2)}
.k-hbars{display:grid;gap:14px;margin-top:18px;font-size:13px}.k-hbars div{display:grid;grid-template-columns:90px 1fr 40px;gap:12px;align-items:center}
.k-progress{height:10px;border-radius:99px;background:var(--color-bg-alt);overflow:hidden}.k-progress i{display:block;height:100%;border-radius:inherit;background:var(--c,var(--chart-1))}
.k-donut{width:150px;aspect-ratio:1;border-radius:50%;flex:none;background:conic-gradient(var(--chart-1) 0 42%,var(--chart-2) 0 68%,var(--chart-3) 0 86%,var(--chart-4) 0);
  -webkit-mask:radial-gradient(circle,transparent 48px,#000 49px);mask:radial-gradient(circle,transparent 48px,#000 49px)}
.k-legend{display:grid;gap:8px;font-size:13px}.k-legend span{display:flex;gap:8px;align-items:center}.k-legend i{width:10px;height:10px;border-radius:3px;background:var(--c)}
.k-chartrow{display:flex;gap:28px;align-items:center;margin-top:18px}
.k-line{width:100%;height:150px;margin-top:16px;display:block}.k-line .area{fill:color-mix(in srgb,var(--chart-1) 16%,transparent)}.k-line .l1{fill:none;stroke:var(--chart-1);stroke-width:3}
.k-line .l2{fill:none;stroke:var(--chart-2);stroke-width:3;stroke-dasharray:6 6}.k-line .grid{stroke:var(--color-border);stroke-width:1}
.k-spark{height:44px;width:100%;margin-top:12px}.k-spark path{fill:none;stroke:var(--chart-1);stroke-width:2.5}

/* Composiciones */
.k-bento{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:170px;gap:16px}.k-bento .w2{grid-column:span 2}.k-bento .h2{grid-row:span 2}
.k-bento .k-card{display:flex;flex-direction:column;justify-content:flex-end}
.k-split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}.k-split .k-media{margin:0;aspect-ratio:5/4}
.k-float{position:absolute;right:-18px;bottom:22px;width:210px;padding:18px;z-index:1}
.k-logos{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}.k-logos span{height:56px;border-radius:max(6px,calc(var(--card-radius)*.5));background:var(--color-bg-alt);display:grid;place-items:center;
  font:700 13px var(--font-display);letter-spacing:2px;color:var(--color-text-muted);opacity:.8}
.k-steps{counter-reset:s}.k-steps .k-card::before{counter-increment:s;content:counter(s,decimal-leading-zero);font:var(--heading-weight) 40px/1 var(--font-display);color:var(--color-action);display:block;margin-bottom:16px}
.k-time{border-left:2px solid var(--color-border);padding-left:28px;display:grid;gap:26px}.k-time>div{position:relative}
.k-time>div::before{content:"";position:absolute;left:-36px;top:4px;width:14px;height:14px;border-radius:50%;background:var(--color-action);box-shadow:0 0 0 4px var(--color-bg)}
.k-faq{border-bottom:1px solid var(--color-border);padding:20px 0}.k-faq summary{font-family:var(--font-display);font-weight:var(--heading-weight);font-size:20px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px;color:var(--color-text-heading,var(--color-text))}
.k-faq summary::after{content:"+";color:var(--color-action);font-size:24px;line-height:1}.k-faq[open] summary::after{content:"–"}.k-faq p{margin:12px 0 0;color:var(--color-text-muted)}
.k-table{width:100%;border-collapse:collapse;font-size:15px}.k-table th,.k-table td{padding:14px 16px;border-bottom:1px solid var(--color-border);text-align:left}
.k-table th{font:700 12px var(--font-body);letter-spacing:.8px;text-transform:uppercase;color:var(--color-text-muted)}.k-table td.on{color:var(--color-text-accent,var(--color-action));font-weight:700}
.k-table .is-hl{background:color-mix(in srgb,var(--color-action) 7%,transparent)}
.k-tabs{display:inline-flex;gap:6px;padding:6px;border-radius:var(--button-radius);background:var(--color-bg-alt)}
.k-tabs span{padding:10px 18px;border-radius:var(--button-radius);font:600 14px var(--font-body)}.k-tabs .on{background:var(--color-bg);box-shadow:0 1px 3px rgba(0,0,0,.12);color:var(--color-text-accent,var(--color-action))}
.k-form{display:flex;gap:10px;flex-wrap:wrap}.k-input{flex:1;min-width:200px;font:inherit;padding:14px 16px;border:1px solid var(--color-border);border-radius:var(--input-radius);background:var(--color-bg);color:var(--color-text)}
.k-field{display:grid;gap:6px;font:600 13px var(--font-body);margin-bottom:14px}
.k-alert{padding:14px 18px;border-radius:max(4px,calc(var(--card-radius)*.6));border-left:4px solid var(--c);background:color-mix(in srgb,var(--c) 11%,var(--color-bg));font-size:14px}
.k-bar{background:var(--brand-bg);color:var(--brand-color);text-align:center;padding:11px 16px;font:600 14px var(--font-body);border-radius:max(4px,calc(var(--card-radius)*.5))}
.k-band{background:var(--dark-bg);color:var(--dark-color);border-radius:var(--card-radius);padding:48px;display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}
.k-band .k-h{color:inherit;font-size:34px}
.k-footer{background:var(--dark-bg);color:var(--dark-color);border-radius:var(--card-radius);padding:48px;display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:32px;font-size:14px}
.k-footer b{display:block;margin-bottom:14px;font-family:var(--font-display)}.k-footer span{display:block;opacity:.75;margin-bottom:8px}
.k-footer .k-mark{font:800 24px var(--font-display);margin-bottom:12px;color:var(--dark-accent)}
@media(max-width:900px){.k-2,.k-3,.k-4,.k-split,.k-footer{grid-template-columns:1fr}.k-bento{grid-template-columns:repeat(2,1fr)}.k-logos{grid-template-columns:repeat(3,1fr)}.k-card.is-row{grid-template-columns:1fr}.k-float{position:static;width:auto;margin-top:12px}}
