@eduardoalvarez/arrecife 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- export { tokens } from './chunk-22OXRTAL.js';
2
- import { cn, CaraDeMascota, Mascota } from './chunk-ZL5X6XO7.js';
3
- export { CaraDeMascota, Isotipo, Logo, Mascota, cn } from './chunk-ZL5X6XO7.js';
1
+ export { tokens } from './chunk-VSMW2CT4.js';
2
+ import { cn, CaraDeMascota, Mascota } from './chunk-ND45OQOC.js';
3
+ export { CaraDeMascota, Isotipo, Logo, Mascota, cn } from './chunk-ND45OQOC.js';
4
4
  export { RUTA_ASSETS, aletas, caras, listaCaras, listaPoses, poses, usoDeCara } from './chunk-E3OMP2DL.js';
5
- import { __export, naming } from './chunk-DHF63QNM.js';
6
- export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, shadow, sintaxis, size, spacing, tagline, typeScale } from './chunk-DHF63QNM.js';
5
+ import { __export, naming } from './chunk-I7GYZD2A.js';
6
+ export { brand, colors, control, dark, fonts, gradient, light, limits, motion, naming, radius, shadow, sintaxis, size, spacing, tagline, typeScale } from './chunk-I7GYZD2A.js';
7
7
  import { cva } from 'class-variance-authority';
8
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
@@ -25,7 +25,7 @@ import * as ToastPrimitive from '@radix-ui/react-toast';
25
25
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
26
26
  import { useRef, useState, useEffect, useCallback, useId } from 'react';
27
27
 
28
- var alert = cva("w-full rounded-card border p-md font-sans text-ui", {
28
+ var alert = cva("w-full rounded-card border p-step-md font-sans text-ui", {
29
29
  variants: {
30
30
  variant: {
31
31
  accent: "text-text-secondary",
@@ -78,7 +78,7 @@ function Alert({
78
78
  role: tono === "error" ? "alert" : "status",
79
79
  className: cn(alert({ variant, enfasis }), className),
80
80
  ...props,
81
- children: /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-start", children: [
81
+ children: /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-start", children: [
82
82
  /* @__PURE__ */ jsx(
83
83
  "span",
84
84
  {
@@ -88,7 +88,7 @@ function Alert({
88
88
  }
89
89
  ),
90
90
  /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
91
- title ? /* @__PURE__ */ jsx("p", { className: "mb-xs text-text-primary font-medium", children: title }) : null,
91
+ title ? /* @__PURE__ */ jsx("p", { className: "mb-step-xs text-text-primary font-medium", children: title }) : null,
92
92
  children ? /* @__PURE__ */ jsx("div", { className: "max-w-measure", children }) : null
93
93
  ] })
94
94
  ] })
@@ -134,7 +134,7 @@ function AvatarFallback({
134
134
  );
135
135
  }
136
136
  var badge = cva(
137
- ["inline-flex items-center gap-xs", "rounded-chip px-xs py-0.5", "font-sans text-tag", "transition-standard"],
137
+ ["inline-flex items-center gap-step-xs", "rounded-chip px-step-xs py-0.5", "font-sans text-tag", "transition-standard"],
138
138
  {
139
139
  variants: {
140
140
  variant: {
@@ -154,8 +154,8 @@ function Badge({ className, variant, ...props }) {
154
154
  }
155
155
  var categoria = cva(
156
156
  [
157
- "inline-flex items-center gap-xs",
158
- "rounded-pill px-sm py-0.5",
157
+ "inline-flex items-center gap-step-xs",
158
+ "rounded-pill px-step-sm py-0.5",
159
159
  "font-mono text-chip",
160
160
  "border transition-standard"
161
161
  ],
@@ -179,12 +179,12 @@ function CategoryBadge({ className, active = false, ...props }) {
179
179
  }
180
180
  );
181
181
  }
182
- var metrica = ["inline-flex items-center gap-xs", "rounded-pill", "font-mono text-chip text-text-muted"];
182
+ var metrica = ["inline-flex items-center gap-step-xs", "rounded-pill", "font-mono text-chip text-text-muted"];
183
183
  function MetricBadge({ className, boxed = false, ...props }) {
184
184
  return /* @__PURE__ */ jsx(
185
185
  "span",
186
186
  {
187
- className: cn(metrica, boxed && "border-hairline px-sm py-0.5 border", className),
187
+ className: cn(metrica, boxed && "border-hairline px-step-sm py-0.5 border", className),
188
188
  ...props
189
189
  }
190
190
  );
@@ -294,7 +294,7 @@ var VolumeOn = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor"
294
294
  var VolumeMuted = (props) => /* @__PURE__ */ jsx(GlifoMedia, { fill: "currentColor", ...props, children: /* @__PURE__ */ jsx("path", { d: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.38-.31 2.63-.95 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" }) });
295
295
  var button = cva(
296
296
  [
297
- "inline-flex cursor-pointer items-center justify-center gap-xs whitespace-nowrap select-none",
297
+ "inline-flex cursor-pointer items-center justify-center gap-step-xs whitespace-nowrap select-none",
298
298
  "rounded-control font-sans font-medium",
299
299
  "transition-standard",
300
300
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
@@ -403,8 +403,8 @@ function Calendar({
403
403
  // la raíz, y sin esto se ancla al primer ancestro posicionado —o al
404
404
  // viewport— y las flechas acaban en los bordes de la página.
405
405
  root: cn("relative", fullWidth ? "w-full" : "w-fit"),
406
- months: cn("gap-md flex flex-col sm:flex-row", fullWidth && "w-full"),
407
- month: cn("gap-sm flex flex-col", fullWidth && "min-w-0 flex-1"),
406
+ months: cn("gap-step-md flex flex-col sm:flex-row", fullWidth && "w-full"),
407
+ month: cn("gap-step-sm flex flex-col", fullWidth && "min-w-0 flex-1"),
408
408
  month_caption: "h-8 flex items-center justify-center",
409
409
  caption_label: "text-ui font-sans font-medium text-text-primary capitalize",
410
410
  nav: "absolute inset-x-0 top-0 flex items-center justify-between",
@@ -432,7 +432,7 @@ function Calendar({
432
432
  range_start: "[&_button]:bg-accent [&_button]:text-accent-on [&_button]:rounded-r-none",
433
433
  range_middle: "[&_button]:bg-surface-raised [&_button]:text-text-primary [&_button]:rounded-none",
434
434
  range_end: "[&_button]:bg-accent [&_button]:text-accent-on [&_button]:rounded-l-none",
435
- footer: "text-label font-sans text-text-secondary pt-sm",
435
+ footer: "text-label font-sans text-text-secondary pt-step-sm",
436
436
  ...classNames
437
437
  },
438
438
  components: {
@@ -522,7 +522,7 @@ function Card({ className, ...props }) {
522
522
  return /* @__PURE__ */ jsx("div", { className: cn(SUPERFICIE_TARJETA, className), ...props });
523
523
  }
524
524
  function CardHeader({ className, ...props }) {
525
- return /* @__PURE__ */ jsx("div", { className: cn("gap-xs p-lg flex flex-col", className), ...props });
525
+ return /* @__PURE__ */ jsx("div", { className: cn("gap-step-xs p-step-lg flex flex-col", className), ...props });
526
526
  }
527
527
  function CardTitle({ className, ...props }) {
528
528
  return /* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className, ...props });
@@ -531,13 +531,13 @@ function CardDescription({ className, ...props }) {
531
531
  return /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className, ...props });
532
532
  }
533
533
  function CardContent({ className, ...props }) {
534
- return /* @__PURE__ */ jsx("div", { className: cn("px-lg pb-lg", className), ...props });
534
+ return /* @__PURE__ */ jsx("div", { className: cn("px-step-lg pb-step-lg", className), ...props });
535
535
  }
536
536
  function CardFooter({ className, ...props }) {
537
537
  return /* @__PURE__ */ jsx(
538
538
  "div",
539
539
  {
540
- className: cn("border-hairline px-lg py-md gap-sm flex items-center border-t", className),
540
+ className: cn("border-hairline px-step-lg py-step-md gap-step-sm flex items-center border-t", className),
541
541
  ...props
542
542
  }
543
543
  );
@@ -588,7 +588,7 @@ function DateField({
588
588
  "data-invalid": invalid || void 0,
589
589
  "aria-invalid": invalid || void 0,
590
590
  className: cn(
591
- "px-sm h-10 w-full",
591
+ "px-step-sm h-10 w-full",
592
592
  "rounded-control border-border bg-surface border",
593
593
  "font-mono text-ui text-text-primary",
594
594
  "transition-standard",
@@ -631,7 +631,7 @@ function DialogContent({
631
631
  {
632
632
  className: cn(
633
633
  "fixed top-1/2 left-1/2 z-50 w-full max-w-content -translate-x-1/2 -translate-y-1/2",
634
- "gap-md p-lg flex flex-col",
634
+ "gap-step-md p-step-lg flex flex-col",
635
635
  "rounded-panel border-border bg-surface shadow-standard border",
636
636
  "text-text-primary font-sans",
637
637
  className
@@ -658,10 +658,10 @@ function DialogContent({
658
658
  ] });
659
659
  }
660
660
  function DialogHeader({ className, ...props }) {
661
- return /* @__PURE__ */ jsx("div", { className: cn("gap-xs flex flex-col pr-8", className), ...props });
661
+ return /* @__PURE__ */ jsx("div", { className: cn("gap-step-xs flex flex-col pr-8", className), ...props });
662
662
  }
663
663
  function DialogFooter({ className, ...props }) {
664
- return /* @__PURE__ */ jsx("div", { className: cn("gap-sm flex flex-col-reverse sm:flex-row sm:justify-end", className), ...props });
664
+ return /* @__PURE__ */ jsx("div", { className: cn("gap-step-sm flex flex-col-reverse sm:flex-row sm:justify-end", className), ...props });
665
665
  }
666
666
  function DialogTitle({
667
667
  className,
@@ -698,7 +698,7 @@ var panel = [
698
698
  "text-text-primary font-sans"
699
699
  ];
700
700
  var item = [
701
- "rounded-chip px-sm relative flex h-9 cursor-default items-center gap-2 select-none",
701
+ "rounded-chip px-step-sm relative flex h-9 cursor-default items-center gap-2 select-none",
702
702
  "text-ui text-text-secondary transition-standard",
703
703
  "data-[highlighted]:bg-surface data-[highlighted]:text-text-primary",
704
704
  "data-[disabled]:pointer-events-none data-[disabled]:opacity-50"
@@ -750,7 +750,7 @@ function DropdownMenuLabel({
750
750
  return /* @__PURE__ */ jsx(
751
751
  DropdownMenuPrimitive.Label,
752
752
  {
753
- className: cn("px-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
753
+ className: cn("px-step-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
754
754
  ...props
755
755
  }
756
756
  );
@@ -791,7 +791,7 @@ function Input({ className, invalid = false, ...props }) {
791
791
  "data-invalid": invalid || void 0,
792
792
  "aria-invalid": invalid || void 0,
793
793
  className: cn(
794
- "h-10 w-full px-sm",
794
+ "h-10 w-full px-step-sm",
795
795
  "rounded-control border border-border bg-surface",
796
796
  "font-sans text-ui text-text-primary placeholder:text-text-muted",
797
797
  "transition-standard",
@@ -799,7 +799,7 @@ function Input({ className, invalid = false, ...props }) {
799
799
  "focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
800
800
  "disabled:pointer-events-none disabled:opacity-50",
801
801
  "data-[invalid]:border-error data-[invalid]:focus-visible:outline-error",
802
- "file:mr-sm file:border-0 file:bg-transparent file:font-sans file:text-label file:text-text-secondary",
802
+ "file:mr-step-sm file:border-0 file:bg-transparent file:font-sans file:text-label file:text-text-secondary",
803
803
  className
804
804
  ),
805
805
  ...props
@@ -831,7 +831,7 @@ function Pagination({ className, ...props }) {
831
831
  );
832
832
  }
833
833
  function PaginationContent({ className, ...props }) {
834
- return /* @__PURE__ */ jsx("ul", { className: cn("gap-xs flex flex-row items-center", className), ...props });
834
+ return /* @__PURE__ */ jsx("ul", { className: cn("gap-step-xs flex flex-row items-center", className), ...props });
835
835
  }
836
836
  function PaginationItem(props) {
837
837
  return /* @__PURE__ */ jsx("li", { ...props });
@@ -842,7 +842,7 @@ function PaginationLink({ className, isActive = false, ...props }) {
842
842
  {
843
843
  "aria-current": isActive ? "page" : void 0,
844
844
  className: cn(
845
- "rounded-chip px-sm inline-flex h-9 min-w-9 cursor-pointer items-center justify-center",
845
+ "rounded-chip px-step-sm inline-flex h-9 min-w-9 cursor-pointer items-center justify-center",
846
846
  "font-sans text-ui text-text-secondary",
847
847
  "transition-standard",
848
848
  "hover:bg-surface hover:text-text-primary",
@@ -855,13 +855,13 @@ function PaginationLink({ className, isActive = false, ...props }) {
855
855
  );
856
856
  }
857
857
  function PaginationPrevious({ className, ...props }) {
858
- return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina anterior", className: cn("gap-xs", className), ...props, children: [
858
+ return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina anterior", className: cn("gap-step-xs", className), ...props, children: [
859
859
  /* @__PURE__ */ jsx(ChevronLeft, {}),
860
860
  "Anterior"
861
861
  ] });
862
862
  }
863
863
  function PaginationNext({ className, ...props }) {
864
- return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina siguiente", className: cn("gap-xs", className), ...props, children: [
864
+ return /* @__PURE__ */ jsxs(PaginationLink, { "aria-label": "P\xE1gina siguiente", className: cn("gap-step-xs", className), ...props, children: [
865
865
  "Siguiente",
866
866
  /* @__PURE__ */ jsx(ChevronRight, {})
867
867
  ] });
@@ -892,7 +892,7 @@ function PopoverContent({
892
892
  align,
893
893
  sideOffset,
894
894
  className: cn(
895
- "z-50 w-72 p-md",
895
+ "z-50 w-72 p-step-md",
896
896
  "rounded-panel border-border bg-surface-raised shadow-standard border",
897
897
  "text-text-primary font-sans text-ui",
898
898
  "outline-none",
@@ -921,7 +921,7 @@ function Progress({ className, value, label, tone = "accent", ...props }) {
921
921
  );
922
922
  }
923
923
  function RadioGroup2({ className, ...props }) {
924
- return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("gap-sm grid", className), ...props });
924
+ return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, { className: cn("gap-step-sm grid", className), ...props });
925
925
  }
926
926
  function RadioGroupItem({ className, ...props }) {
927
927
  return /* @__PURE__ */ jsx(
@@ -953,7 +953,7 @@ function SelectTrigger({
953
953
  SelectPrimitive.Trigger,
954
954
  {
955
955
  className: cn(
956
- "gap-sm px-sm flex h-10 w-full cursor-pointer items-center justify-between",
956
+ "gap-step-sm px-step-sm flex h-10 w-full cursor-pointer items-center justify-between",
957
957
  "rounded-control border-border bg-surface border",
958
958
  "font-sans text-ui text-text-primary",
959
959
  "transition-standard",
@@ -1004,7 +1004,7 @@ function SelectLabel({
1004
1004
  return /* @__PURE__ */ jsx(
1005
1005
  SelectPrimitive.Label,
1006
1006
  {
1007
- className: cn("px-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
1007
+ className: cn("px-step-sm text-eyebrow font-mono text-text-secondary py-1.5 uppercase", className),
1008
1008
  ...props
1009
1009
  }
1010
1010
  );
@@ -1018,7 +1018,7 @@ function SelectItem({
1018
1018
  SelectPrimitive.Item,
1019
1019
  {
1020
1020
  className: cn(
1021
- "rounded-chip px-sm relative flex h-9 w-full cursor-default items-center pr-8 select-none",
1021
+ "rounded-chip px-step-sm relative flex h-9 w-full cursor-default items-center pr-8 select-none",
1022
1022
  "text-ui text-text-secondary transition-standard",
1023
1023
  "data-[highlighted]:bg-surface data-[highlighted]:text-text-primary",
1024
1024
  "data-[state=checked]:text-text-primary",
@@ -1120,19 +1120,19 @@ function SheetHeader({ className, ...props }) {
1120
1120
  return /* @__PURE__ */ jsx(
1121
1121
  "div",
1122
1122
  {
1123
- className: cn("border-hairline gap-xs p-lg flex flex-col border-b pr-12", className),
1123
+ className: cn("border-hairline gap-step-xs p-step-lg flex flex-col border-b pr-12", className),
1124
1124
  ...props
1125
1125
  }
1126
1126
  );
1127
1127
  }
1128
1128
  function SheetBody({ className, ...props }) {
1129
- return /* @__PURE__ */ jsx("div", { className: cn("p-lg flex-1 overflow-y-auto", className), ...props });
1129
+ return /* @__PURE__ */ jsx("div", { className: cn("p-step-lg flex-1 overflow-y-auto", className), ...props });
1130
1130
  }
1131
1131
  function SheetFooter({ className, ...props }) {
1132
1132
  return /* @__PURE__ */ jsx(
1133
1133
  "div",
1134
1134
  {
1135
- className: cn("border-hairline gap-sm p-lg flex flex-wrap justify-end border-t", className),
1135
+ className: cn("border-hairline gap-step-sm p-step-lg flex flex-wrap justify-end border-t", className),
1136
1136
  ...props
1137
1137
  }
1138
1138
  );
@@ -1243,7 +1243,7 @@ function TableHead({ className, ...props }) {
1243
1243
  "th",
1244
1244
  {
1245
1245
  className: cn(
1246
- "px-sm h-10 text-left align-middle",
1246
+ "px-step-sm h-10 text-left align-middle",
1247
1247
  "text-eyebrow font-mono text-text-muted uppercase",
1248
1248
  className
1249
1249
  ),
@@ -1252,13 +1252,13 @@ function TableHead({ className, ...props }) {
1252
1252
  );
1253
1253
  }
1254
1254
  function TableCell({ className, ...props }) {
1255
- return /* @__PURE__ */ jsx("td", { className: cn("px-sm py-sm text-text-secondary align-middle", className), ...props });
1255
+ return /* @__PURE__ */ jsx("td", { className: cn("px-step-sm py-step-sm text-text-secondary align-middle", className), ...props });
1256
1256
  }
1257
1257
  function TableCaption({ className, ...props }) {
1258
- return /* @__PURE__ */ jsx("caption", { className: cn("mt-sm text-label text-text-muted", className), ...props });
1258
+ return /* @__PURE__ */ jsx("caption", { className: cn("mt-step-sm text-label text-text-muted", className), ...props });
1259
1259
  }
1260
1260
  function Tabs({ className, ...props }) {
1261
- return /* @__PURE__ */ jsx(TabsPrimitive.Root, { className: cn("gap-md flex flex-col", className), ...props });
1261
+ return /* @__PURE__ */ jsx(TabsPrimitive.Root, { className: cn("gap-step-md flex flex-col", className), ...props });
1262
1262
  }
1263
1263
  function TabsList({
1264
1264
  className,
@@ -1267,7 +1267,7 @@ function TabsList({
1267
1267
  return /* @__PURE__ */ jsx(
1268
1268
  TabsPrimitive.List,
1269
1269
  {
1270
- className: cn("rounded-control bg-surface gap-xs inline-flex items-center p-1", className),
1270
+ className: cn("rounded-control bg-surface gap-step-xs inline-flex items-center p-1", className),
1271
1271
  ...props
1272
1272
  }
1273
1273
  );
@@ -1280,7 +1280,7 @@ function TabsTrigger({
1280
1280
  TabsPrimitive.Trigger,
1281
1281
  {
1282
1282
  className: cn(
1283
- "rounded-chip px-sm inline-flex h-8 cursor-pointer items-center justify-center whitespace-nowrap",
1283
+ "rounded-chip px-step-sm inline-flex h-8 cursor-pointer items-center justify-center whitespace-nowrap",
1284
1284
  "font-sans text-label text-text-secondary",
1285
1285
  "transition-standard",
1286
1286
  "hover:text-text-primary",
@@ -1315,7 +1315,7 @@ function Textarea({ className, invalid = false, ...props }) {
1315
1315
  "data-invalid": invalid || void 0,
1316
1316
  "aria-invalid": invalid || void 0,
1317
1317
  className: cn(
1318
- "min-h-24 w-full px-sm py-xs",
1318
+ "min-h-24 w-full px-step-sm py-step-xs",
1319
1319
  "rounded-control border border-border bg-surface",
1320
1320
  "font-sans text-ui text-text-primary placeholder:text-text-muted",
1321
1321
  "transition-standard",
@@ -1339,7 +1339,7 @@ function ToastViewport({
1339
1339
  ToastPrimitive.Viewport,
1340
1340
  {
1341
1341
  className: cn(
1342
- "gap-sm p-lg fixed right-0 bottom-0 z-50 flex max-h-screen w-full flex-col-reverse",
1342
+ "gap-step-sm p-step-lg fixed right-0 bottom-0 z-50 flex max-h-screen w-full flex-col-reverse",
1343
1343
  "sm:max-w-[420px] sm:flex-col",
1344
1344
  className
1345
1345
  ),
@@ -1349,7 +1349,7 @@ function ToastViewport({
1349
1349
  }
1350
1350
  var toast = cva(
1351
1351
  [
1352
- "gap-md p-md pr-10 relative flex w-full items-start justify-between",
1352
+ "gap-step-md p-step-md pr-10 relative flex w-full items-start justify-between",
1353
1353
  "rounded-card border bg-surface shadow-standard",
1354
1354
  "font-sans text-ui text-text-secondary"
1355
1355
  ],
@@ -1413,7 +1413,7 @@ function TooltipContent({
1413
1413
  {
1414
1414
  sideOffset,
1415
1415
  className: cn(
1416
- "z-50 px-sm py-1.5",
1416
+ "z-50 px-step-sm py-1.5",
1417
1417
  "rounded-chip border-border bg-surface-raised shadow-standard border",
1418
1418
  "font-sans text-label text-text-primary",
1419
1419
  className
@@ -1449,14 +1449,14 @@ function ArticleCard({
1449
1449
  " min de lectura"
1450
1450
  ] }, "lectura") : null
1451
1451
  ].filter(Boolean);
1452
- return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
1453
- meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "gap-xs flex items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-xs flex items-center", children: [
1452
+ return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
1453
+ meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "gap-step-xs flex items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
1454
1454
  i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
1455
1455
  m
1456
1456
  ] }, i)) }) : null,
1457
1457
  /* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className: "group-hover:text-accent transition-standard", children: title }),
1458
1458
  excerpt ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-2", children: excerpt }) : null,
1459
- tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-xs mt-auto flex flex-wrap pt-sm", children: tags.map((t) => /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)) }) : null
1459
+ tags && tags.length > 0 ? /* @__PURE__ */ jsx("div", { className: "gap-step-xs mt-auto flex flex-wrap pt-step-sm", children: tags.map((t) => /* @__PURE__ */ jsx(CategoryBadge, { children: t }, t)) }) : null
1460
1460
  ] }) });
1461
1461
  }
1462
1462
  var AVATAR = "size-[52px]";
@@ -1464,16 +1464,16 @@ function iniciales(nombre) {
1464
1464
  return nombre.split(/\s+/).slice(0, 2).map((p) => p[0] ?? "").join("").toUpperCase();
1465
1465
  }
1466
1466
  function AuthorCard({ name, role, src, bio, action, className, ...props }) {
1467
- return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-lg gap-md flex items-start", className), ...props, children: [
1467
+ return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-md flex items-start", className), ...props, children: [
1468
1468
  /* @__PURE__ */ jsxs(Avatar, { className: cn(AVATAR, "shrink-0"), children: [
1469
1469
  src ? /* @__PURE__ */ jsx(AvatarImage, { src, alt: "" }) : null,
1470
1470
  /* @__PURE__ */ jsx(AvatarFallback, { children: iniciales(name) })
1471
1471
  ] }),
1472
- /* @__PURE__ */ jsxs("div", { className: "gap-xs flex min-w-0 flex-1 flex-col", children: [
1472
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex min-w-0 flex-1 flex-col", children: [
1473
1473
  /* @__PURE__ */ jsx(Text, { variant: "ui", as: "p", className: "font-medium", children: name }),
1474
1474
  role ? /* @__PURE__ */ jsx(Text, { variant: "chip", tone: "muted", as: "p", children: role }) : null,
1475
- bio ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "mt-xs", children: bio }) : null,
1476
- action ? /* @__PURE__ */ jsx("div", { className: "mt-xs gap-sm flex flex-wrap items-center", children: action }) : null
1475
+ bio ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "mt-step-xs", children: bio }) : null,
1476
+ action ? /* @__PURE__ */ jsx("div", { className: "mt-step-xs gap-step-sm flex flex-wrap items-center", children: action }) : null
1477
1477
  ] })
1478
1478
  ] });
1479
1479
  }
@@ -1592,7 +1592,7 @@ function Volumen({
1592
1592
  onSilenciar,
1593
1593
  onCambiarVolumen
1594
1594
  }) {
1595
- return /* @__PURE__ */ jsxs("div", { className: "gap-xs hidden items-center sm:flex", children: [
1595
+ return /* @__PURE__ */ jsxs("div", { className: "gap-step-xs hidden items-center sm:flex", children: [
1596
1596
  /* @__PURE__ */ jsx(
1597
1597
  "button",
1598
1598
  {
@@ -1839,8 +1839,8 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1839
1839
  ...puntero
1840
1840
  }
1841
1841
  ),
1842
- /* @__PURE__ */ jsx("div", { className: "bg-surface/95 border-accent/25 border-t backdrop-blur-md", children: /* @__PURE__ */ jsxs("div", { className: "gap-sm px-md flex items-center py-5", children: [
1843
- /* @__PURE__ */ jsxs("div", { className: "gap-xs flex shrink-0 items-center", children: [
1842
+ /* @__PURE__ */ jsx("div", { className: "bg-surface/95 border-accent/25 border-t backdrop-blur-md", children: /* @__PURE__ */ jsxs("div", { className: "gap-step-sm px-step-md flex items-center py-5", children: [
1843
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex shrink-0 items-center", children: [
1844
1844
  /* @__PURE__ */ jsx(Onda, { grosor: "w-[2px]", alto: "h-4", sonando: isPlaying }),
1845
1845
  /* @__PURE__ */ jsx("span", { className: "text-eyebrow font-mono text-accent hidden uppercase sm:block", children: "Narraci\xF3n" })
1846
1846
  ] }),
@@ -1857,7 +1857,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1857
1857
  /* @__PURE__ */ jsx(
1858
1858
  BotonPlay,
1859
1859
  {
1860
- className: "rounded-pill px-sm gap-xs flex items-center py-1.5",
1860
+ className: "rounded-pill px-step-sm gap-step-xs flex items-center py-1.5",
1861
1861
  tamano: "w-4 h-4",
1862
1862
  etiqueta: etiquetaPlay,
1863
1863
  onAlternar: togglePlay,
@@ -1882,7 +1882,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1882
1882
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1883
1883
  /* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
1884
1884
  /* @__PURE__ */ jsxs("div", { ref: staticRef, children: [
1885
- /* @__PURE__ */ jsxs("div", { className: "gap-sm mb-md flex items-center", children: [
1885
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-sm mb-step-md flex items-center", children: [
1886
1886
  /* @__PURE__ */ jsx(Onda, { grosor: "w-[3px]", alto: "h-5", sonando: isPlaying }),
1887
1887
  /* @__PURE__ */ jsx("span", { className: "text-eyebrow font-mono text-accent uppercase", children: "Narraci\xF3n de audio" }),
1888
1888
  /* @__PURE__ */ jsxs("span", { className: "text-chip font-mono text-text-muted ml-auto tabular-nums", children: [
@@ -1891,13 +1891,13 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1891
1891
  formatTime(duration)
1892
1892
  ] })
1893
1893
  ] }),
1894
- /* @__PURE__ */ jsx("div", { className: "mb-md", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 14, progreso: progress, ...puntero }) }),
1895
- /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
1894
+ /* @__PURE__ */ jsx("div", { className: "mb-step-md", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 14, progreso: progress, ...puntero }) }),
1895
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
1896
1896
  /* @__PURE__ */ jsx(BotonSalto, { segundos: -15, className: "p-2", tamano: "w-6 h-6", onSaltar: skip }),
1897
1897
  /* @__PURE__ */ jsx(
1898
1898
  BotonPlay,
1899
1899
  {
1900
- className: "rounded-pill px-lg gap-xs text-ui flex items-center py-2 font-medium",
1900
+ className: "rounded-pill px-step-lg gap-step-xs text-ui flex items-center py-2 font-medium",
1901
1901
  tamano: "w-4 h-4",
1902
1902
  etiqueta: etiquetaPlay,
1903
1903
  texto: etiquetaPlay,
@@ -1906,7 +1906,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1906
1906
  }
1907
1907
  ),
1908
1908
  /* @__PURE__ */ jsx(BotonSalto, { segundos: 15, className: "p-2", tamano: "w-6 h-6", onSaltar: skip }),
1909
- /* @__PURE__ */ jsxs("div", { className: "gap-sm ml-auto flex items-center", children: [
1909
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-sm ml-auto flex items-center", children: [
1910
1910
  /* @__PURE__ */ jsx(
1911
1911
  BotonVelocidad,
1912
1912
  {
@@ -1936,8 +1936,8 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1936
1936
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1937
1937
  /* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
1938
1938
  /* @__PURE__ */ jsxs("div", { ref: staticRef, className: "w-full", children: [
1939
- /* @__PURE__ */ jsx("div", { className: "mb-xs", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 12, progreso: progress, ...puntero }) }),
1940
- /* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-sm flex justify-between", children: [
1939
+ /* @__PURE__ */ jsx("div", { className: "mb-step-xs", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-1.5", perilla: 12, progreso: progress, ...puntero }) }),
1940
+ /* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-step-sm flex justify-between", children: [
1941
1941
  /* @__PURE__ */ jsx("span", { children: formatTime(currentTime) }),
1942
1942
  /* @__PURE__ */ jsx("span", { children: formatTime(duration) })
1943
1943
  ] }),
@@ -1969,16 +1969,16 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1969
1969
  flotanteJsx
1970
1970
  ] });
1971
1971
  }
1972
- return /* @__PURE__ */ jsxs("div", { className: "bg-surface rounded-control border-border p-md w-full border", children: [
1972
+ return /* @__PURE__ */ jsxs("div", { className: "bg-surface rounded-control border-border p-step-md w-full border", children: [
1973
1973
  /* @__PURE__ */ jsx("audio", { ref: audioRef, src, preload: "metadata" }),
1974
- title ? /* @__PURE__ */ jsx("p", { className: "text-ui font-sans text-text-secondary mb-sm truncate", children: title }) : null,
1975
- /* @__PURE__ */ jsx("div", { className: "mb-sm", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-2", perilla: 16, progreso: progress, ...puntero }) }),
1976
- /* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-sm flex justify-between", children: [
1974
+ title ? /* @__PURE__ */ jsx("p", { className: "text-ui font-sans text-text-secondary mb-step-sm truncate", children: title }) : null,
1975
+ /* @__PURE__ */ jsx("div", { className: "mb-step-sm", children: /* @__PURE__ */ jsx(BarraProgreso, { alto: "h-2", perilla: 16, progreso: progress, ...puntero }) }),
1976
+ /* @__PURE__ */ jsxs("div", { className: "text-chip font-mono text-text-muted mb-step-sm flex justify-between", children: [
1977
1977
  /* @__PURE__ */ jsx("span", { children: formatTime(currentTime) }),
1978
1978
  /* @__PURE__ */ jsx("span", { children: formatTime(duration) })
1979
1979
  ] }),
1980
1980
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
1981
- /* @__PURE__ */ jsxs("div", { className: "gap-xs flex items-center", children: [
1981
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex items-center", children: [
1982
1982
  /* @__PURE__ */ jsx(BotonSalto, { segundos: -15, className: "p-2", tamano: "w-5 h-5", onSaltar: skip }),
1983
1983
  /* @__PURE__ */ jsx(
1984
1984
  BotonPlay,
@@ -1992,7 +1992,7 @@ function AudioPlayer({ src, title, mode = "full", onFirstPlay }) {
1992
1992
  ),
1993
1993
  /* @__PURE__ */ jsx(BotonSalto, { segundos: 15, className: "p-2", tamano: "w-5 h-5", onSaltar: skip })
1994
1994
  ] }),
1995
- /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
1995
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
1996
1996
  /* @__PURE__ */ jsx(
1997
1997
  BotonVelocidad,
1998
1998
  {
@@ -2020,11 +2020,11 @@ function Blockquote({ children, author, source, className, ...props }) {
2020
2020
  return /* @__PURE__ */ jsxs(
2021
2021
  "blockquote",
2022
2022
  {
2023
- className: cn("border-accent pl-md my-lg border-l-2", className),
2023
+ className: cn("border-accent pl-step-md my-step-lg border-l-2", className),
2024
2024
  ...props,
2025
2025
  children: [
2026
2026
  /* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children }),
2027
- author || source ? /* @__PURE__ */ jsx("footer", { className: "mt-sm", children: /* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "span", children: [
2027
+ author || source ? /* @__PURE__ */ jsx("footer", { className: "mt-step-sm", children: /* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "span", children: [
2028
2028
  author ? /* @__PURE__ */ jsx("cite", { className: "not-italic", children: author }) : null,
2029
2029
  author && source ? " \xB7 " : null,
2030
2030
  source
@@ -2043,11 +2043,11 @@ function Breadcrumb({
2043
2043
  ...props
2044
2044
  }) {
2045
2045
  const enlace = (href, contenido) => linkAsChild ? /* @__PURE__ */ jsx(Slot, { className: ENLACE, children: linkAsChild({ href, children: contenido }) }) : /* @__PURE__ */ jsx("a", { href, className: ENLACE, children: contenido });
2046
- return /* @__PURE__ */ jsx("nav", { "aria-label": "Ruta", className: cn("font-mono text-meta text-text-muted", className), ...props, children: /* @__PURE__ */ jsxs("ol", { className: "gap-xs flex flex-wrap items-center", children: [
2046
+ return /* @__PURE__ */ jsx("nav", { "aria-label": "Ruta", className: cn("font-mono text-meta text-text-muted", className), ...props, children: /* @__PURE__ */ jsxs("ol", { className: "gap-step-xs flex flex-wrap items-center", children: [
2047
2047
  /* @__PURE__ */ jsx("li", { children: enlace(homeHref, /* @__PURE__ */ jsx("span", { "aria-label": homeLabel, children: "~" })) }),
2048
2048
  items.map((item2, i) => {
2049
2049
  const ultimo = i === items.length - 1;
2050
- return /* @__PURE__ */ jsxs("li", { className: "gap-xs flex items-center", children: [
2050
+ return /* @__PURE__ */ jsxs("li", { className: "gap-step-xs flex items-center", children: [
2051
2051
  /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-border", children: "/" }),
2052
2052
  item2.href && !ultimo ? enlace(item2.href, item2.label) : /* @__PURE__ */ jsx("span", { "aria-current": ultimo ? "page" : void 0, className: "text-text-secondary", children: item2.label })
2053
2053
  ] }, i);
@@ -2077,7 +2077,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
2077
2077
  ),
2078
2078
  ...props,
2079
2079
  children: [
2080
- /* @__PURE__ */ jsxs("div", { className: "border-hairline px-sm flex items-center justify-between border-b py-1.5", children: [
2080
+ /* @__PURE__ */ jsxs("div", { className: "border-hairline px-step-sm flex items-center justify-between border-b py-1.5", children: [
2081
2081
  /* @__PURE__ */ jsxs("span", { className: "text-eyebrow font-mono text-text-muted uppercase", children: [
2082
2082
  /* @__PURE__ */ jsx("span", { className: "text-accent", children: "\u276F" }),
2083
2083
  " ",
@@ -2091,7 +2091,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
2091
2091
  "aria-label": copiado ? "C\xF3digo copiado" : "Copiar c\xF3digo",
2092
2092
  "aria-live": "polite",
2093
2093
  className: cn(
2094
- "gap-xs rounded-chip flex items-center px-2 py-1",
2094
+ "gap-step-xs rounded-chip flex items-center px-2 py-1",
2095
2095
  "text-label font-mono text-text-muted cursor-pointer",
2096
2096
  "transition-standard hover:bg-surface hover:text-text-primary",
2097
2097
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent"
@@ -2103,7 +2103,7 @@ function CodeBlock({ children, language, copyText, className, ...props }) {
2103
2103
  }
2104
2104
  ) : null
2105
2105
  ] }),
2106
- /* @__PURE__ */ jsx("pre", { className: "p-md font-mono text-meta text-text-primary overflow-x-auto leading-relaxed", children })
2106
+ /* @__PURE__ */ jsx("pre", { className: "p-step-md font-mono text-meta text-text-primary overflow-x-auto leading-relaxed", children })
2107
2107
  ]
2108
2108
  }
2109
2109
  );
@@ -2117,15 +2117,15 @@ function CourseCard({
2117
2117
  className,
2118
2118
  ...props
2119
2119
  }) {
2120
- return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
2120
+ return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
2121
2121
  status ? /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Badge, { variant: "warm", children: status }) }) : null,
2122
2122
  /* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className: "group-hover:text-accent transition-standard", children: title }),
2123
2123
  summary ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", className: "line-clamp-3", children: summary }) : null,
2124
- meta && meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-xs flex flex-wrap items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-xs flex items-center", children: [
2124
+ meta && meta.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-step-xs flex flex-wrap items-center", children: meta.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
2125
2125
  i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
2126
2126
  m
2127
2127
  ] }, i)) }) : null,
2128
- typeof progress === "number" ? /* @__PURE__ */ jsxs("div", { className: "gap-xs mt-auto flex flex-col pt-sm", children: [
2128
+ typeof progress === "number" ? /* @__PURE__ */ jsxs("div", { className: "gap-step-xs mt-auto flex flex-col pt-step-sm", children: [
2129
2129
  /* @__PURE__ */ jsx(Progress, { value: progress, tone: "warm", label: `Progreso del curso: ${progress}%` }),
2130
2130
  /* @__PURE__ */ jsxs(Text, { variant: "label", tone: "muted", as: "p", children: [
2131
2131
  progress,
@@ -2147,13 +2147,13 @@ function EmptyState({
2147
2147
  return /* @__PURE__ */ jsxs(
2148
2148
  "div",
2149
2149
  {
2150
- className: cn(SUPERFICIE_TARJETA, "p-lg gap-sm flex flex-col items-center text-center", className),
2150
+ className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-sm flex flex-col items-center text-center", className),
2151
2151
  ...props,
2152
2152
  children: [
2153
2153
  /* @__PURE__ */ jsx(CaraDeMascota, { expresion, className: CARA, basePath }),
2154
2154
  /* @__PURE__ */ jsx(Text, { variant: "ui", as: "p", className: "font-medium", children: title }),
2155
2155
  description ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "max-w-measure font-normal", children: description }) : null,
2156
- action ? /* @__PURE__ */ jsx("div", { className: "mt-xs", children: action }) : null
2156
+ action ? /* @__PURE__ */ jsx("div", { className: "mt-step-xs", children: action }) : null
2157
2157
  ]
2158
2158
  }
2159
2159
  );
@@ -2165,8 +2165,8 @@ function Footer({
2165
2165
  className,
2166
2166
  ...props
2167
2167
  }) {
2168
- return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-md py-xl gap-lg mx-auto flex flex-col", children: [
2169
- children ? /* @__PURE__ */ jsx("div", { className: "gap-md flex flex-wrap items-center", children }) : null,
2168
+ return /* @__PURE__ */ jsx("footer", { className: cn("border-hairline w-full border-t", className), ...props, children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md py-step-xl gap-step-lg mx-auto flex flex-col", children: [
2169
+ children ? /* @__PURE__ */ jsx("div", { className: "gap-step-md flex flex-wrap items-center", children }) : null,
2170
2170
  social && social.length > 0 ? (
2171
2171
  // 18px de separación, del documento. No es un escalón de `spacing`:
2172
2172
  // es el ritmo de una fila de iconos, no el de una página.
@@ -2225,16 +2225,16 @@ function Hero({
2225
2225
  className: cn(
2226
2226
  "degradado-hero rounded-panel border-hairline relative overflow-hidden border",
2227
2227
  // 44 arriba, 40 a los lados y abajo. Del documento.
2228
- "px-xl pt-[44px] pb-xl",
2228
+ "px-step-xl pt-[44px] pb-step-xl",
2229
2229
  className
2230
2230
  ),
2231
2231
  ...props,
2232
2232
  children: [
2233
- /* @__PURE__ */ jsxs("div", { className: "gap-md flex flex-col md:max-w-[62%]", children: [
2233
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-md flex flex-col md:max-w-[62%]", children: [
2234
2234
  eyebrow ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: eyebrow }) : null,
2235
2235
  /* @__PURE__ */ jsx(Text, { as: "h1", variant: "display", children: title }),
2236
2236
  description ? /* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children: description }) : null,
2237
- action ? /* @__PURE__ */ jsx("div", { className: "gap-sm mt-xs flex flex-wrap items-center", children: action }) : null
2237
+ action ? /* @__PURE__ */ jsx("div", { className: "gap-step-sm mt-step-xs flex flex-wrap items-center", children: action }) : null
2238
2238
  ] }),
2239
2239
  pose ? /* @__PURE__ */ jsx(
2240
2240
  Mascota,
@@ -2244,7 +2244,7 @@ function Hero({
2244
2244
  className: cn(
2245
2245
  // En móvil, en el flujo y bajo los botones. Desde md, sangrando por
2246
2246
  // la esquina inferior derecha.
2247
- "mt-lg mx-auto w-40",
2247
+ "mt-step-lg mx-auto w-40",
2248
2248
  "md:mt-0 md:absolute md:right-0 md:-bottom-4 md:mx-0 md:w-64"
2249
2249
  )
2250
2250
  }
@@ -2266,11 +2266,11 @@ function LinkRow({
2266
2266
  return /* @__PURE__ */ jsx(
2267
2267
  Tarjeta,
2268
2268
  {
2269
- className: cn("px-md py-sm", className),
2269
+ className: cn("px-step-md py-step-sm", className),
2270
2270
  ...props,
2271
2271
  rel,
2272
2272
  ...target ? { target } : {},
2273
- children: /* @__PURE__ */ jsxs("span", { className: "gap-sm flex items-center", children: [
2273
+ children: /* @__PURE__ */ jsxs("span", { className: "gap-step-sm flex items-center", children: [
2274
2274
  icon ? /* @__PURE__ */ jsx("span", { className: "text-text-muted group-hover:text-accent transition-standard shrink-0 text-2xl", children: icon }) : null,
2275
2275
  /* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
2276
2276
  /* @__PURE__ */ jsx(Text, { as: "span", variant: "ui", className: "group-hover:text-accent transition-standard block font-medium", children: name }),
@@ -2300,10 +2300,10 @@ function Nav({ brand: brand2, children, actions, className, ...props }) {
2300
2300
  className
2301
2301
  ),
2302
2302
  ...props,
2303
- children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-md h-nav gap-lg mx-auto flex items-center", children: [
2303
+ children: /* @__PURE__ */ jsxs("div", { className: "max-w-wide px-step-md h-nav gap-step-lg mx-auto flex items-center", children: [
2304
2304
  brand2 ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: brand2 }) : null,
2305
- children ? /* @__PURE__ */ jsx("nav", { "aria-label": "Principal", className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx("ul", { className: "gap-md flex items-center", children }) }) : /* @__PURE__ */ jsx("div", { className: "flex-1" }),
2306
- actions ? /* @__PURE__ */ jsx("div", { className: "gap-sm flex shrink-0 items-center", children: actions }) : null
2305
+ children ? /* @__PURE__ */ jsx("nav", { "aria-label": "Principal", className: "min-w-0 flex-1", children: /* @__PURE__ */ jsx("ul", { className: "gap-step-md flex items-center", children }) }) : /* @__PURE__ */ jsx("div", { className: "flex-1" }),
2306
+ actions ? /* @__PURE__ */ jsx("div", { className: "gap-step-sm flex shrink-0 items-center", children: actions }) : null
2307
2307
  ] })
2308
2308
  }
2309
2309
  );
@@ -2357,17 +2357,17 @@ function NewsletterForm({
2357
2357
  "section",
2358
2358
  {
2359
2359
  className: cn(
2360
- "degradado-seccion rounded-panel border-hairline p-lg gap-md flex flex-col border",
2360
+ "degradado-seccion rounded-panel border-hairline p-step-lg gap-step-md flex flex-col border",
2361
2361
  className
2362
2362
  ),
2363
2363
  ...props,
2364
2364
  children: [
2365
- /* @__PURE__ */ jsxs("div", { className: "gap-xs flex flex-col", children: [
2365
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex flex-col", children: [
2366
2366
  /* @__PURE__ */ jsx(Text, { as: "h2", variant: "h3", children: title }),
2367
2367
  description ? /* @__PURE__ */ jsx(Text, { variant: "ui", tone: "secondary", children: description }) : null
2368
2368
  ] }),
2369
- /* @__PURE__ */ jsxs("form", { onSubmit: enviar, className: "gap-sm flex flex-col sm:flex-row sm:items-end", noValidate: true, children: [
2370
- /* @__PURE__ */ jsxs("div", { className: "gap-xs flex flex-1 flex-col", children: [
2369
+ /* @__PURE__ */ jsxs("form", { onSubmit: enviar, className: "gap-step-sm flex flex-col sm:flex-row sm:items-end", noValidate: true, children: [
2370
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-xs flex flex-1 flex-col", children: [
2371
2371
  /* @__PURE__ */ jsx(Label2, { htmlFor: id, children: fieldLabel }),
2372
2372
  /* @__PURE__ */ jsx(
2373
2373
  Input,
@@ -2397,7 +2397,7 @@ function NewsletterForm({
2397
2397
  ] }),
2398
2398
  state === "exito" ? /* @__PURE__ */ jsx(Alert, { id: `${id}-aviso`, variant: "success", enfasis: "fuerte", children: successMessage }) : null,
2399
2399
  error ? /* @__PURE__ */ jsx(Alert, { id: `${id}-aviso`, variant: "error", enfasis: "fuerte", children: errorMessage }) : null,
2400
- disclaimer ? /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-center", children: [
2400
+ disclaimer ? /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-center", children: [
2401
2401
  expresion ? /* @__PURE__ */ jsx(CaraDeMascota, { expresion, basePath, className: "w-10 max-w-none" }) : null,
2402
2402
  /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "font-normal", children: disclaimer })
2403
2403
  ] }) : null
@@ -2405,11 +2405,11 @@ function NewsletterForm({
2405
2405
  }
2406
2406
  );
2407
2407
  }
2408
- var cabecera = cva("gap-sm flex flex-col", {
2408
+ var cabecera = cva("gap-step-sm flex flex-col", {
2409
2409
  variants: {
2410
2410
  size: {
2411
2411
  display: "py-section",
2412
- page: "py-xl"
2412
+ page: "py-step-xl"
2413
2413
  }
2414
2414
  },
2415
2415
  defaultVariants: { size: "page" }
@@ -2428,7 +2428,7 @@ function PageHeader({
2428
2428
  eyebrow ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: eyebrow }) : null,
2429
2429
  /* @__PURE__ */ jsx(Text, { as, variant: size2 === "display" ? "display" : "h1", className: "max-w-measure", children: title }),
2430
2430
  description ? /* @__PURE__ */ jsx(Text, { variant: "body", tone: "secondary", children: description }) : null,
2431
- action ? /* @__PURE__ */ jsx("div", { className: "gap-sm mt-sm flex flex-wrap items-center", children: action }) : null
2431
+ action ? /* @__PURE__ */ jsx("div", { className: "gap-step-sm mt-step-sm flex flex-wrap items-center", children: action }) : null
2432
2432
  ] });
2433
2433
  }
2434
2434
  function SidebarItem({
@@ -2445,7 +2445,7 @@ function SidebarItem({
2445
2445
  {
2446
2446
  "aria-current": active ? "page" : void 0,
2447
2447
  className: cn(
2448
- "rounded-chip px-sm gap-xs flex cursor-pointer items-center py-1.5",
2448
+ "rounded-chip px-step-sm gap-step-xs flex cursor-pointer items-center py-1.5",
2449
2449
  "font-mono text-meta transition-standard",
2450
2450
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
2451
2451
  // El activo es fondo `surfaceRaised` y tinta primaria, igual que
@@ -2479,14 +2479,14 @@ function SidebarNav({
2479
2479
  {
2480
2480
  "aria-label": typeof title === "string" ? title : "Administraci\xF3n",
2481
2481
  className: cn(
2482
- "border-hairline bg-surface p-sm gap-sm flex h-full flex-col border-r",
2482
+ "border-hairline bg-surface p-step-sm gap-step-sm flex h-full flex-col border-r",
2483
2483
  className
2484
2484
  ),
2485
2485
  ...props,
2486
2486
  children: [
2487
- title ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", className: "px-sm", children: title }) : null,
2487
+ title ? /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", className: "px-step-sm", children: title }) : null,
2488
2488
  /* @__PURE__ */ jsx("ul", { className: "gap-0.5 flex flex-1 flex-col", children }),
2489
- pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "border-hairline px-sm pt-sm border-t", children: pie.map((p, i) => /* @__PURE__ */ jsxs("span", { children: [
2489
+ pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "meta", tone: "muted", as: "p", className: "border-hairline px-step-sm pt-step-sm border-t", children: pie.map((p, i) => /* @__PURE__ */ jsxs("span", { children: [
2490
2490
  i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: " \xB7 " }) : null,
2491
2491
  p
2492
2492
  ] }, i)) }) : null
@@ -2495,7 +2495,7 @@ function SidebarNav({
2495
2495
  );
2496
2496
  }
2497
2497
  function Stat({ value, label, tone = "neutral", progress, className, ...props }) {
2498
- return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-lg gap-xs flex flex-col", className), ...props, children: [
2498
+ return /* @__PURE__ */ jsxs("div", { className: cn(SUPERFICIE_TARJETA, "p-step-lg gap-step-xs flex flex-col", className), ...props, children: [
2499
2499
  /* @__PURE__ */ jsx(Text, { variant: "stat", as: "p", tone: tone === "alerta" ? "warm" : "accent", children: value }),
2500
2500
  /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", children: label }),
2501
2501
  typeof progress === "number" ? /* @__PURE__ */ jsx(
@@ -2504,7 +2504,7 @@ function Stat({ value, label, tone = "neutral", progress, className, ...props })
2504
2504
  value: progress,
2505
2505
  tone: tone === "alerta" ? "warm" : "accent",
2506
2506
  label: `${label}: ${progress}%`,
2507
- className: "mt-sm"
2507
+ className: "mt-step-sm"
2508
2508
  }
2509
2509
  ) : null
2510
2510
  ] });
@@ -2523,13 +2523,13 @@ function TalkCard({
2523
2523
  date ? /* @__PURE__ */ jsx("time", { dateTime, children: date }, "fecha") : null,
2524
2524
  location ? /* @__PURE__ */ jsx("span", { children: location }, "lugar") : null
2525
2525
  ].filter(Boolean);
2526
- return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-sm flex h-full flex-col", children: [
2527
- /* @__PURE__ */ jsxs("div", { className: "gap-sm flex items-start justify-between", children: [
2526
+ return /* @__PURE__ */ jsx(Tarjeta, { className: cn("p-step-lg", className), ...props, children: /* @__PURE__ */ jsxs("article", { className: "gap-step-sm flex h-full flex-col", children: [
2527
+ /* @__PURE__ */ jsxs("div", { className: "gap-step-sm flex items-start justify-between", children: [
2528
2528
  /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "accent", as: "p", children: event }),
2529
2529
  status ? /* @__PURE__ */ jsx(Badge, { variant: "neutral", children: status }) : null
2530
2530
  ] }),
2531
2531
  /* @__PURE__ */ jsx(Text, { as: "h3", variant: "h3", className: "group-hover:text-accent transition-standard", children: title }),
2532
- pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-xs mt-auto flex items-center pt-sm", children: pie.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-xs flex items-center", children: [
2532
+ pie.length > 0 ? /* @__PURE__ */ jsx(Text, { variant: "label", tone: "muted", as: "p", className: "gap-step-xs mt-auto flex items-center pt-step-sm", children: pie.map((m, i) => /* @__PURE__ */ jsxs("span", { className: "gap-step-xs flex items-center", children: [
2533
2533
  i > 0 ? /* @__PURE__ */ jsx("span", { "aria-hidden": "true", children: "\xB7" }) : null,
2534
2534
  m
2535
2535
  ] }, i)) }) : null
@@ -2543,16 +2543,16 @@ function TableOfContents({
2543
2543
  className,
2544
2544
  ...props
2545
2545
  }) {
2546
- return /* @__PURE__ */ jsxs("nav", { "aria-label": typeof title === "string" ? title : "En esta p\xE1gina", className: cn("gap-sm flex flex-col", className), ...props, children: [
2546
+ return /* @__PURE__ */ jsxs("nav", { "aria-label": typeof title === "string" ? title : "En esta p\xE1gina", className: cn("gap-step-sm flex flex-col", className), ...props, children: [
2547
2547
  /* @__PURE__ */ jsx(Text, { variant: "eyebrow", tone: "muted", as: "p", children: title }),
2548
- /* @__PURE__ */ jsx("ul", { className: "border-hairline gap-xs flex flex-col border-l", children: items.map((item2) => {
2548
+ /* @__PURE__ */ jsx("ul", { className: "border-hairline gap-step-xs flex flex-col border-l", children: items.map((item2) => {
2549
2549
  const activo = item2.href === activeHref;
2550
2550
  const clases = cn(
2551
- "px-sm -ml-px block border-l",
2551
+ "px-step-sm -ml-px block border-l",
2552
2552
  "font-sans text-label transition-standard",
2553
2553
  "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-accent",
2554
2554
  "cursor-pointer",
2555
- item2.nested && "pl-lg",
2555
+ item2.nested && "pl-step-lg",
2556
2556
  activo ? "border-accent text-accent" : "border-transparent text-text-secondary hover:text-text-primary"
2557
2557
  );
2558
2558
  return /* @__PURE__ */ jsx("li", { children: linkAsChild ? /* @__PURE__ */ jsx(Slot, { className: clases, "aria-current": activo ? "location" : void 0, children: linkAsChild({ href: item2.href, children: item2.label }) }) : /* @__PURE__ */ jsx("a", { href: item2.href, className: clases, "aria-current": activo ? "location" : void 0, children: item2.label }) }, item2.href);