/* @ds-bundle: {"format":4,"namespace":"RoyalsRoguesDesignSystem_85b3d0","components":[{"name":"Button","sourcePath":"components/actions/Button.jsx"},{"name":"Badge","sourcePath":"components/display/Badge.jsx"},{"name":"StatBlock","sourcePath":"components/display/StatBlock.jsx"},{"name":"Tag","sourcePath":"components/display/Tag.jsx"},{"name":"Checkbox","sourcePath":"components/forms/Checkbox.jsx"},{"name":"Input","sourcePath":"components/forms/Input.jsx"},{"name":"Select","sourcePath":"components/forms/Select.jsx"},{"name":"Switch","sourcePath":"components/forms/Switch.jsx"},{"name":"AssetTile","sourcePath":"components/game/AssetTile.jsx"},{"name":"EnamelMedallion","sourcePath":"components/game/EnamelMedallion.jsx"},{"name":"PokerCard","sourcePath":"components/game/PokerCard.jsx"},{"name":"TimingBadge","sourcePath":"components/game/TimingBadge.jsx"},{"name":"Dialog","sourcePath":"components/surfaces/Dialog.jsx"},{"name":"Panel","sourcePath":"components/surfaces/Panel.jsx"},{"name":"Tabs","sourcePath":"components/surfaces/Tabs.jsx"}],"sourceHashes":{"components/actions/Button.jsx":"ff341e0eff61","components/display/Badge.jsx":"15603a107b96","components/display/StatBlock.jsx":"fb3e3bedaf53","components/display/Tag.jsx":"2020966e10e7","components/forms/Checkbox.jsx":"322c653dedb4","components/forms/Input.jsx":"3888a6bf9454","components/forms/Select.jsx":"e2103802aace","components/forms/Switch.jsx":"618890279d5c","components/game/AssetTile.jsx":"153fe75f942b","components/game/EnamelMedallion.jsx":"044cc7bac449","components/game/PokerCard.jsx":"390a9b781170","components/game/TimingBadge.jsx":"17de0b9c6721","components/surfaces/Dialog.jsx":"7c8f618a56b8","components/surfaces/Panel.jsx":"ceab64a7760c","components/surfaces/Tabs.jsx":"010cc5f7ccae","ui_kits/site/App.jsx":"9bcbfe317a2e","ui_kits/site/Classes.jsx":"baea0687dceb","ui_kits/site/Craft.jsx":"2294d7ff601b","ui_kits/site/Hero.jsx":"e97bb2c75cf2","ui_kits/site/data.jsx":"6a10b243bb12"},"inlinedExternals":[],"unexposedExports":[]} */

(() => {

const __ds_ns = (window.RoyalsRoguesDesignSystem_85b3d0 = window.RoyalsRoguesDesignSystem_85b3d0 || {});

const __ds_scope = {};

(__ds_ns.__errors = __ds_ns.__errors || []);

// components/actions/Button.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function Button({
  variant = "primary",
  size = "md",
  disabled = false,
  children,
  style,
  ...rest
}) {
  const [hover, setHover] = React.useState(false);
  const [down, setDown] = React.useState(false);
  const sizes = {
    sm: {
      padding: "7px 14px",
      fontSize: "11px"
    },
    md: {
      padding: "10px 20px",
      fontSize: "12px"
    },
    lg: {
      padding: "13px 28px",
      fontSize: "13px"
    }
  };
  const variants = {
    primary: {
      background: "var(--accent)",
      color: "var(--rr-ink)",
      border: "1px solid transparent"
    },
    metal: {
      background: "var(--accent-metal)",
      color: "var(--rr-ink)",
      border: "1px solid transparent"
    },
    ghost: {
      background: hover ? "var(--surface-muted)" : "transparent",
      color: "var(--fg)",
      border: "1px solid " + (hover ? "var(--hairline)" : "var(--border-strong)")
    },
    danger: {
      background: "var(--rr-garnet)",
      color: "var(--rr-cream)",
      border: "1px solid transparent"
    }
  };
  return /*#__PURE__*/React.createElement("button", _extends({
    disabled: disabled,
    onMouseEnter: () => setHover(true),
    onMouseLeave: () => {
      setHover(false);
      setDown(false);
    },
    onMouseDown: () => setDown(true),
    onMouseUp: () => setDown(false),
    style: {
      display: "inline-flex",
      alignItems: "center",
      justifyContent: "center",
      gap: "8px",
      fontFamily: "var(--font-sans)",
      fontWeight: 900,
      letterSpacing: "0.14em",
      textTransform: "uppercase",
      borderRadius: "var(--radius-xs)",
      cursor: disabled ? "not-allowed" : "pointer",
      opacity: disabled ? 0.45 : 1,
      filter: hover && !disabled && variant !== "ghost" ? "brightness(1.12)" : "none",
      transform: down && !disabled ? "translateY(1px)" : "none",
      transition: "filter 160ms, transform 80ms, border-color 160ms, background 160ms",
      ...sizes[size],
      ...variants[variant],
      ...style
    }
  }, rest), children);
}
Object.assign(__ds_scope, { Button });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/actions/Button.jsx", error: String((e && e.message) || e) }); }

// components/display/Badge.jsx
try { (() => {
function Badge({
  tone = "neutral",
  children,
  style
}) {
  const tones = {
    neutral: {
      color: "var(--fg-soft)",
      border: "1px solid var(--border-strong)",
      background: "var(--surface-muted)"
    },
    gold: {
      color: "var(--rr-gold)",
      border: "1px solid rgba(232,178,74,0.45)",
      background: "var(--rr-gold-soft)"
    },
    emerald: {
      color: "var(--rr-jade)",
      border: "1px solid rgba(21,146,113,0.5)",
      background: "var(--rr-emerald-soft)"
    },
    garnet: {
      color: "var(--rr-garnet-bright)",
      border: "1px solid rgba(168,58,63,0.55)",
      background: "rgba(168,58,63,0.16)"
    }
  };
  return /*#__PURE__*/React.createElement("span", {
    style: {
      display: "inline-flex",
      alignItems: "center",
      gap: "6px",
      padding: "4px 12px",
      borderRadius: "9999px",
      fontFamily: "var(--font-sans)",
      fontSize: "10px",
      fontWeight: 900,
      letterSpacing: "0.16em",
      textTransform: "uppercase",
      ...tones[tone],
      ...style
    }
  }, children);
}
Object.assign(__ds_scope, { Badge });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/display/Badge.jsx", error: String((e && e.message) || e) }); }

// components/display/StatBlock.jsx
try { (() => {
function StatBlock({
  ordinal,
  value,
  label,
  style
}) {
  return /*#__PURE__*/React.createElement("div", {
    style: {
      fontFamily: "var(--font-sans)",
      ...style
    }
  }, ordinal && /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "10px",
      fontWeight: 700,
      letterSpacing: "0.18em",
      color: "var(--rr-muted)",
      marginBottom: "4px"
    }
  }, ordinal), /*#__PURE__*/React.createElement("div", {
    style: {
      fontFamily: "var(--font-display)",
      fontSize: "42px",
      lineHeight: 1,
      color: "var(--rr-bright)"
    }
  }, value), /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "12px",
      color: "var(--fg-soft)",
      marginTop: "6px"
    }
  }, label));
}
Object.assign(__ds_scope, { StatBlock });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/display/StatBlock.jsx", error: String((e && e.message) || e) }); }

// components/display/Tag.jsx
try { (() => {
function Tag({
  provisional = false,
  children,
  style
}) {
  return /*#__PURE__*/React.createElement("span", {
    style: {
      display: "inline-flex",
      alignItems: "center",
      padding: "3px 8px",
      borderRadius: "4px",
      fontFamily: "var(--font-mono)",
      fontSize: "10px",
      letterSpacing: "0.06em",
      textTransform: "uppercase",
      color: provisional ? "var(--rr-warning)" : "var(--fg-soft)",
      border: "1px " + (provisional ? "dashed rgba(245,197,66,0.6)" : "solid var(--border)"),
      background: provisional ? "rgba(245,197,66,0.08)" : "transparent",
      ...style
    }
  }, children);
}
Object.assign(__ds_scope, { Tag });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/display/Tag.jsx", error: String((e && e.message) || e) }); }

// components/forms/Checkbox.jsx
try { (() => {
function Checkbox({
  label,
  checked,
  defaultChecked = false,
  onChange,
  style
}) {
  const [inner, setInner] = React.useState(defaultChecked);
  const isOn = checked !== undefined ? checked : inner;
  const toggle = () => {
    if (checked === undefined) setInner(!isOn);
    if (onChange) onChange(!isOn);
  };
  return /*#__PURE__*/React.createElement("label", {
    onClick: toggle,
    style: {
      display: "inline-flex",
      alignItems: "center",
      gap: "10px",
      cursor: "pointer",
      fontFamily: "var(--font-sans)",
      fontSize: "14px",
      color: "var(--fg)",
      userSelect: "none",
      ...style
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      width: "18px",
      height: "18px",
      borderRadius: "4px",
      display: "grid",
      placeItems: "center",
      background: isOn ? "var(--accent)" : "var(--bg-deep)",
      border: "1px solid " + (isOn ? "var(--rr-gold)" : "var(--border-strong)"),
      boxShadow: isOn ? "0 0 0 1px var(--rr-gold-soft)" : "inset 0 1px 4px rgba(1,6,5,0.6)",
      color: "var(--rr-ink)",
      fontSize: "12px",
      fontWeight: 900,
      transition: "background 160ms, border-color 160ms"
    }
  }, isOn ? "✓" : ""), label);
}
Object.assign(__ds_scope, { Checkbox });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Checkbox.jsx", error: String((e && e.message) || e) }); }

// components/forms/Input.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function Input({
  label,
  hint,
  style,
  ...rest
}) {
  const [focus, setFocus] = React.useState(false);
  return /*#__PURE__*/React.createElement("label", {
    style: {
      display: "block",
      fontFamily: "var(--font-sans)"
    }
  }, label && /*#__PURE__*/React.createElement("span", {
    style: {
      display: "block",
      fontSize: "11px",
      fontWeight: 700,
      letterSpacing: "0.18em",
      textTransform: "uppercase",
      color: focus ? "var(--rr-gold)" : "var(--rr-muted)",
      marginBottom: "6px",
      transition: "color 160ms"
    }
  }, label), /*#__PURE__*/React.createElement("input", _extends({
    onFocus: () => setFocus(true),
    onBlur: () => setFocus(false),
    style: {
      width: "100%",
      boxSizing: "border-box",
      padding: "10px 12px",
      background: "var(--bg-deep)",
      color: "var(--fg)",
      border: "1px solid " + (focus ? "var(--rr-gold)" : "var(--border)"),
      borderRadius: "var(--radius-md)",
      fontFamily: "var(--font-sans)",
      fontSize: "14px",
      outline: "none",
      boxShadow: focus ? "0 0 0 1px var(--rr-gold-soft), inset 0 2px 8px rgba(1,6,5,0.6)" : "inset 0 2px 8px rgba(1,6,5,0.6)",
      transition: "border-color 160ms, box-shadow 160ms",
      ...style
    }
  }, rest)), hint && /*#__PURE__*/React.createElement("span", {
    style: {
      display: "block",
      fontSize: "12px",
      color: "var(--fg-soft)",
      marginTop: "5px"
    }
  }, hint));
}
Object.assign(__ds_scope, { Input });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Input.jsx", error: String((e && e.message) || e) }); }

// components/forms/Select.jsx
try { (() => {
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
function Select({
  label,
  options = [],
  style,
  ...rest
}) {
  const [focus, setFocus] = React.useState(false);
  return /*#__PURE__*/React.createElement("label", {
    style: {
      display: "block",
      fontFamily: "var(--font-sans)"
    }
  }, label && /*#__PURE__*/React.createElement("span", {
    style: {
      display: "block",
      fontSize: "11px",
      fontWeight: 700,
      letterSpacing: "0.18em",
      textTransform: "uppercase",
      color: focus ? "var(--rr-gold)" : "var(--rr-muted)",
      marginBottom: "6px"
    }
  }, label), /*#__PURE__*/React.createElement("div", {
    style: {
      position: "relative"
    }
  }, /*#__PURE__*/React.createElement("select", _extends({
    onFocus: () => setFocus(true),
    onBlur: () => setFocus(false),
    style: {
      width: "100%",
      boxSizing: "border-box",
      padding: "10px 34px 10px 12px",
      appearance: "none",
      WebkitAppearance: "none",
      background: "var(--bg-deep)",
      color: "var(--fg)",
      border: "1px solid " + (focus ? "var(--rr-gold)" : "var(--border)"),
      borderRadius: "var(--radius-md)",
      fontFamily: "var(--font-sans)",
      fontSize: "14px",
      outline: "none",
      boxShadow: "inset 0 2px 8px rgba(1,6,5,0.6)",
      cursor: "pointer",
      ...style
    }
  }, rest), options.map(o => /*#__PURE__*/React.createElement("option", {
    key: o,
    value: o
  }, o))), /*#__PURE__*/React.createElement("span", {
    style: {
      position: "absolute",
      right: "12px",
      top: "50%",
      transform: "translateY(-52%)",
      color: "var(--rr-gold)",
      pointerEvents: "none",
      fontSize: "11px"
    }
  }, "\u25BE")));
}
Object.assign(__ds_scope, { Select });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Select.jsx", error: String((e && e.message) || e) }); }

// components/forms/Switch.jsx
try { (() => {
function Switch({
  label,
  checked,
  defaultChecked = false,
  onChange,
  style
}) {
  const [inner, setInner] = React.useState(defaultChecked);
  const isOn = checked !== undefined ? checked : inner;
  const toggle = () => {
    if (checked === undefined) setInner(!isOn);
    if (onChange) onChange(!isOn);
  };
  return /*#__PURE__*/React.createElement("label", {
    onClick: toggle,
    style: {
      display: "inline-flex",
      alignItems: "center",
      gap: "10px",
      cursor: "pointer",
      fontFamily: "var(--font-sans)",
      fontSize: "14px",
      color: "var(--fg)",
      userSelect: "none",
      ...style
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      width: "38px",
      height: "22px",
      borderRadius: "9999px",
      position: "relative",
      flexShrink: 0,
      background: isOn ? "var(--accent)" : "var(--bg-deep)",
      border: "1px solid " + (isOn ? "var(--rr-gold)" : "var(--border-strong)"),
      transition: "background 160ms, border-color 160ms"
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      position: "absolute",
      top: "2px",
      left: isOn ? "18px" : "2px",
      width: "16px",
      height: "16px",
      borderRadius: "50%",
      background: isOn ? "var(--rr-cream)" : "var(--rr-muted)",
      transition: "left 160ms, background 160ms",
      boxShadow: "0 1px 2px rgba(1,6,5,0.5)"
    }
  })), label);
}
Object.assign(__ds_scope, { Switch });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/forms/Switch.jsx", error: String((e && e.message) || e) }); }

// components/game/AssetTile.jsx
try { (() => {
function AssetTile({
  kind = "Powers",
  name,
  note,
  imgSrc,
  monogram,
  hue = "var(--rr-emerald)",
  width = 150,
  onClick,
  style
}) {
  const [hover, setHover] = React.useState(false);
  const w = typeof width === "number" ? width + "px" : width;
  return /*#__PURE__*/React.createElement("div", {
    onClick: onClick,
    onMouseEnter: () => setHover(true),
    onMouseLeave: () => setHover(false),
    style: {
      width: w,
      background: "var(--surface)",
      borderRadius: "var(--radius-md)",
      overflow: "hidden",
      cursor: onClick ? "pointer" : "default",
      border: "1px solid " + (hover ? "var(--hairline)" : "var(--border)"),
      boxShadow: hover ? "var(--shadow-glow-gold)" : "var(--shadow-sm)",
      transition: "border-color 160ms, box-shadow 160ms",
      fontFamily: "var(--font-sans)",
      ...style
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      aspectRatio: "1 / 1",
      background: "var(--bg-deep)",
      display: "grid",
      placeItems: "center",
      borderBottom: "1px solid var(--border)",
      boxShadow: "inset 0 2px 10px rgba(1,6,5,0.75)"
    }
  }, imgSrc ? /*#__PURE__*/React.createElement("img", {
    src: imgSrc,
    alt: name,
    style: {
      width: "100%",
      height: "100%",
      objectFit: "cover"
    }
  }) : /*#__PURE__*/React.createElement("span", {
    style: {
      fontFamily: "var(--font-display)",
      fontSize: "34px",
      color: "color-mix(in srgb, " + hue + " 60%, var(--rr-cream))"
    }
  }, monogram || "✦")), /*#__PURE__*/React.createElement("div", {
    style: {
      padding: "10px 12px 12px"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "9px",
      fontWeight: 700,
      letterSpacing: "0.16em",
      textTransform: "uppercase",
      color: "var(--rr-muted)"
    }
  }, kind), /*#__PURE__*/React.createElement("div", {
    style: {
      fontFamily: "var(--font-display)",
      fontSize: "15px",
      color: "var(--fg)",
      margin: "3px 0 2px"
    }
  }, name), note && /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "11px",
      fontStyle: "italic",
      color: "var(--fg-soft)"
    }
  }, note)));
}
Object.assign(__ds_scope, { AssetTile });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/game/AssetTile.jsx", error: String((e && e.message) || e) }); }

// components/game/EnamelMedallion.jsx
try { (() => {
function EnamelMedallion({
  monogram = "M",
  hue = "var(--rr-emerald)",
  size = 56,
  nascent = false,
  style
}) {
  const s = typeof size === "number" ? size + "px" : size;
  return /*#__PURE__*/React.createElement("div", {
    style: {
      width: s,
      height: s,
      borderRadius: "50%",
      display: "grid",
      placeItems: "center",
      flexShrink: 0,
      fontFamily: "var(--font-display)",
      fontSize: "calc(" + s + " * 0.42)",
      color: "color-mix(in srgb, " + hue + " 55%, var(--rr-cream))",
      background: "color-mix(in srgb, " + hue + " 24%, #081310)",
      border: (nascent ? "1.5px dashed " : "1.5px solid ") + "color-mix(in srgb, " + hue + " 58%, var(--rr-void))",
      boxShadow: nascent ? "0 0 0 2px var(--rr-void), 0 0 14px color-mix(in srgb, " + hue + " 18%, transparent)" : "0 0 0 2px var(--rr-void), 0 0 0 3.5px rgba(232,178,74,0.8), 0 0 0 5px var(--rr-void), 0 0 18px color-mix(in srgb, " + hue + " 24%, transparent)",
      ...style
    }
  }, monogram);
}
Object.assign(__ds_scope, { EnamelMedallion });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/game/EnamelMedallion.jsx", error: String((e && e.message) || e) }); }

// components/game/PokerCard.jsx
try { (() => {
const SUITS = {
  clubs: "♣",
  spades: "♠",
  hearts: "♥",
  diamonds: "♦"
};
function PokerCard({
  rank = "A",
  suit = "spades",
  faceDown = false,
  width = 110,
  style
}) {
  const glyph = SUITS[suit] || suit;
  const red = suit === "hearts" || suit === "diamonds";
  const pip = red ? "var(--rr-garnet)" : "#12211d";
  const w = typeof width === "number" ? width + "px" : width;
  const base = {
    width: w,
    aspectRatio: "5 / 7",
    borderRadius: "12%",
    position: "relative",
    fontFamily: "var(--font-display)",
    boxShadow: "var(--shadow-md)",
    flexShrink: 0,
    ...style
  };
  if (faceDown) {
    return /*#__PURE__*/React.createElement("div", {
      style: {
        ...base,
        background: "radial-gradient(ellipse at 50% 38%, #12594a 0%, #0a2f26 62%, #07110f 100%)",
        border: "1px solid rgba(232,178,74,0.5)",
        display: "grid",
        placeItems: "center"
      }
    }, /*#__PURE__*/React.createElement("div", {
      style: {
        position: "absolute",
        inset: "7%",
        border: "1px solid rgba(232,178,74,0.4)",
        borderRadius: "8%"
      }
    }), /*#__PURE__*/React.createElement("img", {
      src: new URL("../../assets/sigil.png", document.currentScript?.src || window.RR_SIGIL_BASE || location.href).href,
      alt: "",
      style: {
        width: "52%"
      },
      onError: e => {
        e.currentTarget.style.display = "none";
      }
    }));
  }
  const corner = flip => /*#__PURE__*/React.createElement("div", {
    style: {
      position: "absolute",
      top: "5%",
      left: "6%",
      textAlign: "center",
      lineHeight: 1.05,
      color: pip,
      transform: flip ? "rotate(180deg)" : "none",
      ...(flip ? {
        top: "auto",
        left: "auto",
        bottom: "5%",
        right: "6%"
      } : {})
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "0.19em"
    }
  }, rank), /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "0.16em"
    }
  }, glyph));
  return /*#__PURE__*/React.createElement("div", {
    style: {
      ...base,
      background: "linear-gradient(170deg, #fdf6dd 0%, var(--rr-cream) 60%, #ead9ab 100%)",
      border: "1px solid rgba(138,100,32,0.55)",
      fontSize: w
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      position: "absolute",
      inset: "4.5%",
      border: "1px solid rgba(138,100,32,0.28)",
      borderRadius: "9%"
    }
  }), corner(false), corner(true), /*#__PURE__*/React.createElement("div", {
    style: {
      position: "absolute",
      inset: 0,
      display: "grid",
      placeItems: "center",
      color: pip,
      fontSize: "0.42em"
    }
  }, glyph));
}
Object.assign(__ds_scope, { PokerCard });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/game/PokerCard.jsx", error: String((e && e.message) || e) }); }

// components/game/TimingBadge.jsx
try { (() => {
const WINDOWS = {
  setup: {
    color: "var(--window-setup)",
    label: "Setup"
  },
  round: {
    color: "var(--window-round)",
    label: "Round"
  },
  showdown: {
    color: "var(--window-showdown)",
    label: "Showdown"
  },
  counter: {
    color: "var(--window-counter)",
    label: "Counter"
  }
};
function TimingBadge({
  window = "round",
  style
}) {
  const w = WINDOWS[window] || WINDOWS.round;
  return /*#__PURE__*/React.createElement("span", {
    style: {
      display: "inline-flex",
      alignItems: "center",
      gap: "7px",
      padding: "4px 12px 4px 9px",
      borderRadius: "9999px",
      border: "1px solid color-mix(in srgb, " + w.color + " 45%, transparent)",
      background: "color-mix(in srgb, " + w.color + " 12%, transparent)",
      fontFamily: "var(--font-sans)",
      fontSize: "10px",
      fontWeight: 900,
      letterSpacing: "0.16em",
      textTransform: "uppercase",
      color: w.color,
      ...style
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      width: "6px",
      height: "6px",
      borderRadius: "50%",
      background: w.color,
      boxShadow: "0 0 6px " + w.color
    }
  }), w.label);
}
Object.assign(__ds_scope, { TimingBadge });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/game/TimingBadge.jsx", error: String((e && e.message) || e) }); }

// components/surfaces/Dialog.jsx
try { (() => {
function Dialog({
  open = false,
  eyebrow,
  title,
  children,
  actions,
  onClose
}) {
  if (!open) return null;
  return /*#__PURE__*/React.createElement("div", {
    onClick: onClose,
    style: {
      position: "fixed",
      inset: 0,
      background: "rgba(3,6,5,0.78)",
      display: "grid",
      placeItems: "center",
      zIndex: 100
    }
  }, /*#__PURE__*/React.createElement("div", {
    onClick: e => e.stopPropagation(),
    style: {
      width: "min(480px, calc(100vw - 48px))",
      background: "var(--surface)",
      borderRadius: "var(--radius-lg)",
      border: "1px solid rgba(232,178,74,0.28)",
      boxShadow: "0 0 0 1.5px var(--rr-void), 0 0 0 2.5px rgba(232,178,74,0.30), 0 18px 48px rgba(0,0,0,0.75)",
      padding: "24px",
      fontFamily: "var(--font-sans)"
    }
  }, eyebrow && /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "11px",
      fontWeight: 700,
      letterSpacing: "0.18em",
      textTransform: "uppercase",
      color: "var(--rr-gold)",
      marginBottom: "6px"
    }
  }, eyebrow), title && /*#__PURE__*/React.createElement("h3", {
    style: {
      fontFamily: "var(--font-display)",
      fontWeight: 400,
      fontSize: "24px",
      margin: "0 0 12px",
      color: "var(--fg)"
    }
  }, title), /*#__PURE__*/React.createElement("div", {
    style: {
      color: "var(--fg-muted)",
      fontSize: "14px",
      lineHeight: 1.6
    }
  }, children), actions && /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "10px",
      justifyContent: "flex-end",
      marginTop: "20px"
    }
  }, actions)));
}
Object.assign(__ds_scope, { Dialog });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/surfaces/Dialog.jsx", error: String((e && e.message) || e) }); }

// components/surfaces/Panel.jsx
try { (() => {
function Panel({
  eyebrow,
  title,
  children,
  padding = "20px",
  style
}) {
  return /*#__PURE__*/React.createElement("section", {
    style: {
      background: "var(--surface)",
      borderRadius: "var(--radius-lg)",
      border: "1px solid rgba(232,178,74,0.28)",
      boxShadow: "0 0 0 1.5px var(--rr-void), 0 0 0 2.5px rgba(232,178,74,0.30), 0 18px 48px rgba(0,0,0,0.55)",
      padding: padding,
      fontFamily: "var(--font-sans)",
      ...style
    }
  }, eyebrow && /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "11px",
      fontWeight: 700,
      letterSpacing: "0.18em",
      textTransform: "uppercase",
      color: "var(--rr-gold)",
      marginBottom: "6px"
    }
  }, eyebrow), title && /*#__PURE__*/React.createElement("h3", {
    style: {
      fontFamily: "var(--font-display)",
      fontWeight: 400,
      fontSize: "22px",
      lineHeight: 1.15,
      margin: "0 0 10px",
      color: "var(--fg)"
    }
  }, title), children);
}
Object.assign(__ds_scope, { Panel });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/surfaces/Panel.jsx", error: String((e && e.message) || e) }); }

// components/surfaces/Tabs.jsx
try { (() => {
function Tabs({
  tabs = [],
  active,
  defaultActive,
  onChange,
  style
}) {
  const [inner, setInner] = React.useState(defaultActive !== undefined ? defaultActive : tabs[0] || "");
  const current = active !== undefined ? active : inner;
  return /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "22px",
      borderBottom: "1px solid var(--border)",
      fontFamily: "var(--font-sans)",
      ...style
    }
  }, tabs.map(t => {
    const on = t === current;
    return /*#__PURE__*/React.createElement("button", {
      key: t,
      onClick: () => {
        if (active === undefined) setInner(t);
        if (onChange) onChange(t);
      },
      style: {
        background: "none",
        border: "none",
        cursor: "pointer",
        padding: "8px 2px 10px",
        fontFamily: "var(--font-sans)",
        fontSize: "12px",
        fontWeight: 900,
        letterSpacing: "0.14em",
        textTransform: "uppercase",
        color: on ? "var(--fg)" : "var(--fg-soft)",
        borderBottom: "2px solid " + (on ? "var(--rr-gold)" : "transparent"),
        marginBottom: "-1px",
        transition: "color 160ms, border-color 160ms"
      }
    }, t);
  }));
}
Object.assign(__ds_scope, { Tabs });
})(); } catch (e) { __ds_ns.__errors.push({ path: "components/surfaces/Tabs.jsx", error: String((e && e.message) || e) }); }

// ui_kits/site/App.jsx
try { (() => {
function RRSite() {
  const [cls, setCls] = React.useState("merchant");
  const [court, setCourt] = React.useState("king");
  return /*#__PURE__*/React.createElement("div", {
    style: {
      minWidth: "1200px"
    }
  }, /*#__PURE__*/React.createElement(window.TopStrip, null), /*#__PURE__*/React.createElement(window.SiteNav, null), /*#__PURE__*/React.createElement(window.Hero, null), /*#__PURE__*/React.createElement(window.StatStrip, null), /*#__PURE__*/React.createElement(window.ClassesSection, {
    selected: cls,
    onSelect: setCls
  }), /*#__PURE__*/React.createElement(window.CourtsSection, {
    court: court,
    onCourt: setCourt,
    cls: cls
  }), /*#__PURE__*/React.createElement(window.WindowsSection, null), /*#__PURE__*/React.createElement(window.CraftSection, null), /*#__PURE__*/React.createElement(window.SiteFooter, null));
}
ReactDOM.createRoot(document.getElementById("root")).render(/*#__PURE__*/React.createElement(RRSite, null));
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/site/App.jsx", error: String((e && e.message) || e) }); }

// ui_kits/site/Classes.jsx
try { (() => {
const {
  Badge,
  Tag,
  TimingBadge,
  EnamelMedallion,
  Button
} = window.RoyalsRoguesDesignSystem_85b3d0 || {};
function ClassesSection({
  selected,
  onSelect
}) {
  const cls = window.RR_CLASSES.find(c => c.id === selected);
  return /*#__PURE__*/React.createElement("section", {
    id: "classes",
    style: {
      padding: "64px"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "8px"
    }
  }, "Choose how you play"), /*#__PURE__*/React.createElement("h2", {
    style: {
      fontSize: "38px",
      margin: "0 0 32px"
    }
  }, "Four classes. ", /*#__PURE__*/React.createElement("em", {
    className: "rr-emph"
  }, "Four kinds of pressure.")), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "repeat(4, 1fr)",
      gap: "18px",
      marginBottom: "36px"
    }
  }, window.RR_CLASSES.map(c => {
    const on = c.id === selected;
    return /*#__PURE__*/React.createElement("div", {
      key: c.id,
      onClick: () => onSelect(c.id),
      style: {
        cursor: "pointer",
        background: "var(--surface)",
        borderRadius: "var(--radius-lg)",
        overflow: "hidden",
        border: "1px solid " + (on ? "var(--rr-gold)" : "var(--border)"),
        boxShadow: on ? "var(--shadow-glow-gold)" : "var(--shadow-sm)",
        transition: "border-color 160ms, box-shadow 160ms"
      }
    }, /*#__PURE__*/React.createElement("img", {
      src: c.art,
      alt: c.name + " quiet enamel class master",
      style: {
        width: "100%",
        aspectRatio: "1/1",
        objectFit: "cover",
        display: "block",
        borderBottom: "1px solid var(--border)"
      }
    }), /*#__PURE__*/React.createElement("div", {
      style: {
        padding: "14px 16px 16px"
      }
    }, /*#__PURE__*/React.createElement("div", {
      className: "rr-eyebrow",
      style: {
        fontSize: "10px"
      }
    }, c.ord, " \xB7 ", c.arch), /*#__PURE__*/React.createElement("h3", {
      style: {
        margin: "4px 0 6px",
        fontSize: "24px"
      }
    }, c.name), /*#__PURE__*/React.createElement("p", {
      style: {
        margin: "0 0 12px",
        fontSize: "13px",
        minHeight: "58px"
      }
    }, c.desc), /*#__PURE__*/React.createElement("span", {
      style: {
        fontSize: "11px",
        fontWeight: 900,
        letterSpacing: "0.16em",
        color: on ? "var(--rr-bright)" : "var(--fg-soft)"
      }
    }, on ? "SELECTED →" : "EXPLORE →")));
  })), /*#__PURE__*/React.createElement("div", {
    className: "rr-enamel-surface",
    style: {
      borderRadius: "var(--radius-lg)",
      padding: "28px 32px",
      display: "grid",
      gridTemplateColumns: "1fr 1.3fr",
      gap: "36px"
    }
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow",
    style: {
      marginBottom: "6px"
    }
  }, "Selected class \xB7 ", cls.arch), /*#__PURE__*/React.createElement("h3", {
    style: {
      fontSize: "32px",
      margin: "0 0 10px"
    }
  }, cls.name), /*#__PURE__*/React.createElement("p", {
    style: {
      fontSize: "14px",
      margin: "0 0 18px"
    }
  }, cls.desc), /*#__PURE__*/React.createElement("ol", {
    style: {
      listStyle: "none",
      padding: 0,
      margin: 0,
      display: "flex",
      gap: "22px"
    }
  }, cls.plan.map((s, i) => /*#__PURE__*/React.createElement("li", {
    key: s,
    style: {
      display: "flex",
      alignItems: "center",
      gap: "9px"
    }
  }, /*#__PURE__*/React.createElement("span", {
    className: "rr-numeral",
    style: {
      fontSize: "20px",
      fontStyle: "italic",
      color: "var(--rr-gold)"
    }
  }, "0", i + 1), /*#__PURE__*/React.createElement("span", {
    style: {
      fontSize: "14px",
      color: "var(--fg)"
    }
  }, s))))), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "12px"
    }
  }, cls.powers ? "12 class powers" : "Class powers"), cls.powers ? /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "1fr 1fr",
      gap: "7px 24px"
    }
  }, cls.powers.map(([name, win], i) => /*#__PURE__*/React.createElement("div", {
    key: name,
    style: {
      display: "flex",
      alignItems: "baseline",
      gap: "10px",
      borderBottom: "1px solid var(--border)",
      padding: "4px 0"
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      fontFamily: "var(--font-mono)",
      fontSize: "10px",
      color: "var(--fg-dim)"
    }
  }, String(i + 1).padStart(2, "0")), /*#__PURE__*/React.createElement("span", {
    style: {
      fontSize: "13px",
      fontWeight: 700,
      color: "var(--fg)",
      flex: 1
    }
  }, name), /*#__PURE__*/React.createElement("span", {
    style: {
      fontSize: "10px",
      letterSpacing: "0.12em",
      textTransform: "uppercase",
      color: "var(--window-" + win + ")"
    }
  }, win)))) : /*#__PURE__*/React.createElement("div", {
    className: "rr-champleve",
    style: {
      padding: "18px",
      fontSize: "13px",
      color: "var(--fg-soft)"
    }
  }, "Power list intentionally blank \u2014 awaiting the Kit v2.0.0 asset drop. ", /*#__PURE__*/React.createElement(Tag, {
    provisional: true,
    style: {
      marginLeft: "8px"
    }
  }, "Human review required")))));
}
function CourtsSection({
  court,
  onCourt,
  cls
}) {
  return /*#__PURE__*/React.createElement("section", {
    id: "courts",
    className: "rr-table-ground",
    style: {
      padding: "64px",
      borderTop: "1px solid var(--hairline)"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "8px"
    }
  }, "Choose what guides you"), /*#__PURE__*/React.createElement("h2", {
    style: {
      fontSize: "38px",
      margin: "0 0 10px"
    }
  }, "The ", /*#__PURE__*/React.createElement("em", {
    className: "rr-emph"
  }, "Royal Court.")), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: "0 0 32px",
      maxWidth: "52ch"
    }
  }, "Every Class combines with every Court to form sixteen playable deck identities."), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "repeat(4, 1fr)",
      gap: "18px",
      marginBottom: "36px"
    }
  }, window.RR_COURTS.map(c => {
    const on = c.id === court;
    return /*#__PURE__*/React.createElement("div", {
      key: c.id,
      onClick: () => onCourt(c.id),
      style: {
        cursor: "pointer",
        textAlign: "center",
        background: "var(--surface)",
        borderRadius: "var(--radius-lg)",
        padding: "16px 16px 18px",
        border: "1px solid " + (on ? "var(--rr-gold)" : "var(--border)"),
        boxShadow: on ? "var(--shadow-glow-gold)" : "none",
        transition: "border-color 160ms, box-shadow 160ms"
      }
    }, /*#__PURE__*/React.createElement("img", {
      src: c.art,
      alt: c.name + ", the Court of " + c.domain,
      style: {
        width: "100%",
        aspectRatio: "1/1",
        objectFit: "cover",
        borderRadius: "var(--radius-md)",
        display: "block",
        marginBottom: "12px"
      }
    }), /*#__PURE__*/React.createElement("div", {
      className: "rr-eyebrow",
      style: {
        fontSize: "10px",
        color: c.hue
      }
    }, c.domain), /*#__PURE__*/React.createElement("h3", {
      style: {
        margin: "2px 0 0",
        fontSize: "26px"
      }
    }, c.name));
  })), /*#__PURE__*/React.createElement(DeckDetail, {
    cls: cls,
    court: court
  }));
}
function DeckDetail({
  cls,
  court
}) {
  const C = window.RR_CLASSES.find(c => c.id === cls);
  const K = window.RR_COURTS.find(c => c.id === court);
  const isMK = cls === "merchant" && court === "king";
  return /*#__PURE__*/React.createElement("div", {
    className: "rr-enamel-surface",
    style: {
      borderRadius: "var(--radius-lg)",
      padding: "26px 30px",
      display: "flex",
      gap: "28px",
      alignItems: "center"
    }
  }, /*#__PURE__*/React.createElement(EnamelMedallion, {
    monogram: C.name[0] + K.name[0],
    hue: K.hue,
    size: 72
  }), /*#__PURE__*/React.createElement("div", {
    style: {
      flex: 1
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow",
    style: {
      marginBottom: "4px"
    }
  }, C.arch, " \xB7 40 power cards"), /*#__PURE__*/React.createElement("h3", {
    style: {
      margin: "0 0 8px",
      fontSize: "26px"
    }
  }, C.name, " \xD7 ", K.name), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: 0,
      fontSize: "14px",
      maxWidth: "70ch"
    }
  }, K.domain, " supports a deck built to ", C.desc.charAt(0).toLowerCase() + C.desc.slice(1, -1), ". ", isMK ? window.RR_MK_BLURB : "")), /*#__PURE__*/React.createElement("div", {
    style: {
      textAlign: "right",
      flexShrink: 0
    }
  }, /*#__PURE__*/React.createElement(Tag, {
    provisional: true
  }, isMK ? "Provisional source" : "Deck list awaits Kit drop"), /*#__PURE__*/React.createElement("div", {
    style: {
      marginTop: "12px"
    }
  }, /*#__PURE__*/React.createElement(Button, {
    size: "sm",
    variant: "ghost"
  }, "Open the direction \u2192"))));
}
Object.assign(window, {
  ClassesSection,
  CourtsSection
});
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/site/Classes.jsx", error: String((e && e.message) || e) }); }

// ui_kits/site/Craft.jsx
try { (() => {
const {
  TimingBadge,
  Tabs,
  Panel
} = window.RoyalsRoguesDesignSystem_85b3d0 || {};
function WindowsSection() {
  return /*#__PURE__*/React.createElement("section", {
    id: "rules",
    style: {
      padding: "64px",
      borderTop: "1px solid var(--hairline)"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "8px"
    }
  }, "Play a hand in four windows"), /*#__PURE__*/React.createElement("h2", {
    style: {
      fontSize: "38px",
      margin: "0 0 32px"
    }
  }, "Plot. Strike. ", /*#__PURE__*/React.createElement("em", {
    className: "rr-emph"
  }, "Answer. Reveal.")), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "repeat(4, 1fr)",
      gap: "18px"
    }
  }, window.RR_WINDOWS.map(w => /*#__PURE__*/React.createElement("div", {
    key: w.name,
    style: {
      background: "var(--surface)",
      border: "1px solid var(--border)",
      borderTop: "3px solid var(--window-" + w.key + ")",
      borderRadius: "var(--radius-md)",
      padding: "18px 20px"
    }
  }, /*#__PURE__*/React.createElement("span", {
    className: "rr-numeral",
    style: {
      fontSize: "22px",
      color: "var(--fg-dim)"
    }
  }, w.ord), /*#__PURE__*/React.createElement("h3", {
    style: {
      margin: "6px 0 10px",
      fontSize: "24px"
    }
  }, w.name), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: "0 0 8px",
      fontSize: "13px",
      fontWeight: 700,
      color: "var(--fg)"
    }
  }, w.when), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: "0 0 14px",
      fontSize: "13px"
    }
  }, w.how), /*#__PURE__*/React.createElement(TimingBadge, {
    window: w.key
  })))));
}
function CraftSection() {
  const principles = [["01", "Cloisonné structure", "Gold cloisons organize the scene and preserve legibility at small sizes."], ["02", "Champlevé depth", "Recessed dark metal gives objects weight without veiling the image in facets."], ["03", "Quiet light", "One meaningful glow, restrained edges, and smooth faces keep the action readable."], ["04", "Software separation", "Art never carries type. Copy, strategy, guidance, and provenance arrive on demand."]];
  const sw = [["VOID", "#030605"], ["INK", "#07110f"], ["MALACHITE", "#0e634f"], ["EMERALD", "#159271"], ["GOLD", "#e8b24a"], ["BRIGHT", "#ffd981"], ["CREAM", "#f7eccb"], ["MUTED", "#a99e88"]];
  return /*#__PURE__*/React.createElement("section", {
    id: "craft",
    style: {
      padding: "64px",
      background: "var(--bg-deep)",
      borderTop: "1px solid var(--hairline)"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "8px"
    }
  }, "The quiet-enamel language"), /*#__PURE__*/React.createElement("h2", {
    style: {
      fontSize: "38px",
      margin: "0 0 32px"
    }
  }, "Enamel without ", /*#__PURE__*/React.createElement("em", {
    className: "rr-emph"
  }, "the crystal haze.")), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "repeat(4, 1fr)",
      gap: "18px",
      marginBottom: "36px"
    }
  }, principles.map(([n, t, d]) => /*#__PURE__*/React.createElement("div", {
    key: n
  }, /*#__PURE__*/React.createElement("span", {
    className: "rr-numeral",
    style: {
      fontSize: "20px",
      color: "var(--rr-gold)"
    }
  }, n), /*#__PURE__*/React.createElement("h3", {
    style: {
      margin: "8px 0 6px",
      fontSize: "21px"
    }
  }, t), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: 0,
      fontSize: "13px"
    }
  }, d)))), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      borderRadius: "var(--radius-md)",
      overflow: "hidden",
      border: "1px solid var(--hairline)",
      marginBottom: "28px"
    }
  }, sw.map(([n, h]) => /*#__PURE__*/React.createElement("div", {
    key: n,
    style: {
      flex: 1,
      background: h,
      padding: "22px 10px 10px",
      color: n === "VOID" || n === "INK" || n === "MALACHITE" ? "var(--rr-muted)" : "#07110f"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      fontSize: "9px",
      fontWeight: 900,
      letterSpacing: "0.14em"
    }
  }, n), /*#__PURE__*/React.createElement("div", {
    style: {
      fontFamily: "var(--font-mono)",
      fontSize: "9px",
      opacity: 0.8
    }
  }, h)))), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "grid",
      gridTemplateColumns: "1fr 1fr",
      gap: "18px"
    }
  }, /*#__PURE__*/React.createElement(Panel, {
    eyebrow: "Display \xB7 EB Garamond",
    padding: "20px 24px"
  }, /*#__PURE__*/React.createElement("img", {
    src: "../../assets/wordmark.svg",
    alt: "Royals & Rogues",
    style: {
      width: "190px",
      display: "block",
      margin: "-14px 0 -22px"
    }
  })), /*#__PURE__*/React.createElement(Panel, {
    eyebrow: "Interface \xB7 Avenir",
    padding: "20px 24px"
  }, /*#__PURE__*/React.createElement("p", {
    style: {
      margin: 0,
      fontSize: "14px"
    }
  }, "Exact card text, optional strategy, and beginner guidance remain calm, clear, and separate from the artifact."))));
}
function SiteFooter() {
  return /*#__PURE__*/React.createElement("footer", {
    style: {
      padding: "44px 64px",
      borderTop: "1px solid var(--hairline)",
      display: "flex",
      justifyContent: "space-between",
      alignItems: "center"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      alignItems: "center",
      gap: "16px"
    }
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("img", {
    src: "../../assets/logo-complete.png",
    alt: "Royals & Rogues",
    style: {
      width: "210px",
      display: "block"
    }
  }), /*#__PURE__*/React.createElement("p", {
    style: {
      margin: "6px 0 0",
      fontSize: "13px"
    }
  }, "A game of The Fellowship of Play, shaped with Kiduna material intelligence."))), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "24px"
    }
  }, /*#__PURE__*/React.createElement("a", {
    href: "#craft",
    style: {
      fontSize: "11px",
      fontWeight: 900,
      letterSpacing: "0.16em"
    }
  }, "ENAMEL CRAFT \u2191"), /*#__PURE__*/React.createElement("a", {
    href: "#",
    style: {
      fontSize: "11px",
      fontWeight: 900,
      letterSpacing: "0.16em"
    }
  }, "KIDUNA DESIGN \u2191")));
}
Object.assign(window, {
  WindowsSection,
  CraftSection,
  SiteFooter
});
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/site/Craft.jsx", error: String((e && e.message) || e) }); }

// ui_kits/site/Hero.jsx
try { (() => {
const {
  Button,
  StatBlock
} = window.RoyalsRoguesDesignSystem_85b3d0 || {};
const heroStyles = {
  eyebrow: {
    fontSize: "11px",
    fontWeight: 700,
    letterSpacing: "0.26em",
    textTransform: "uppercase",
    color: "var(--rr-muted)"
  }
};
function TopStrip() {
  return /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      alignItems: "center",
      justifyContent: "space-between",
      padding: "10px 40px",
      borderBottom: "1px solid var(--border)",
      background: "var(--bg-deep)"
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: heroStyles.eyebrow
  }, "The Fellowship of Play"), /*#__PURE__*/React.createElement("span", {
    style: {
      ...heroStyles.eyebrow,
      color: "var(--rr-gold)"
    }
  }, "Study 02 \xB7 quiet enamel software edition"), /*#__PURE__*/React.createElement("a", {
    href: "#library",
    style: {
      fontSize: "11px",
      fontWeight: 900,
      letterSpacing: "0.18em"
    }
  }, "OPEN ASSET LIBRARY \u2193"));
}
function SiteNav() {
  const items = ["GAME", "CLASSES", "COURTS", "DECKS", "LIBRARY", "KIT", "RULES", "CRAFT"];
  return /*#__PURE__*/React.createElement("nav", {
    style: {
      display: "flex",
      alignItems: "center",
      justifyContent: "space-between",
      padding: "16px 40px",
      borderBottom: "1px solid var(--hairline)",
      position: "sticky",
      top: 0,
      background: "rgba(7,17,15,0.94)",
      zIndex: 20
    }
  }, /*#__PURE__*/React.createElement("span", {
    style: {
      display: "inline-flex",
      alignItems: "center",
      gap: "10px"
    }
  }, /*#__PURE__*/React.createElement("img", {
    src: "../../assets/sigil.png",
    alt: "",
    style: {
      width: "26px",
      display: "block"
    }
  }), /*#__PURE__*/React.createElement("span", {
    style: {
      fontFamily: "var(--font-display)",
      fontSize: "17px",
      color: "var(--rr-gold)"
    }
  }, "Kiduna Design")), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "26px"
    }
  }, items.map(i => /*#__PURE__*/React.createElement("a", {
    key: i,
    href: "#" + i.toLowerCase(),
    style: {
      fontSize: "11px",
      fontWeight: 900,
      letterSpacing: "0.16em",
      color: i === "GAME" ? "var(--rr-bright)" : "var(--fg-soft)"
    }
  }, i))));
}
function Hero() {
  return /*#__PURE__*/React.createElement("header", {
    id: "game",
    className: "rr-table-ground",
    style: {
      display: "grid",
      gridTemplateColumns: "1.05fr 1fr",
      gap: "48px",
      alignItems: "center",
      padding: "72px 64px 64px"
    }
  }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
    style: {
      ...heroStyles.eyebrow,
      marginBottom: "18px"
    }
  }, "The Fellowship of Play presents"), /*#__PURE__*/React.createElement("h1", {
    style: {
      margin: "0 0 20px",
      maxWidth: "540px"
    }
  }, /*#__PURE__*/React.createElement("img", {
    className: "rr-wordmark-mark",
    src: "../../assets/logo-complete.png",
    alt: "Royals & Rogues"
  })), /*#__PURE__*/React.createElement("h2", {
    className: "rr-lede",
    style: {
      fontSize: "30px",
      margin: "0 0 18px"
    }
  }, "Deal the hand.", /*#__PURE__*/React.createElement("br", null), "Change the world around it."), /*#__PURE__*/React.createElement("p", {
    style: {
      maxWidth: "48ch",
      margin: "0 0 28px",
      fontSize: "16px"
    }
  }, "No-Limit Hold'em collides with Powers, Courts, dangerous Items, and table states \u2014 rebuilt as software in quiet medieval enamel."), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "14px"
    }
  }, /*#__PURE__*/React.createElement(Button, {
    size: "lg"
  }, "Enter the game \u2193"), /*#__PURE__*/React.createElement(Button, {
    size: "lg",
    variant: "ghost"
  }, "Review all 180 assets"))), /*#__PURE__*/React.createElement("figure", {
    className: "rr-glow",
    style: {
      margin: 0
    }
  }, /*#__PURE__*/React.createElement("img", {
    src: window.RR_ART + "system/key-art.png",
    alt: "Four medieval competitors collide around an enamel gaming table",
    style: {
      width: "100%",
      borderRadius: "var(--radius-xl)",
      border: "1px solid var(--hairline)",
      boxShadow: "var(--shadow-lg)",
      display: "block"
    }
  }), /*#__PURE__*/React.createElement("figcaption", {
    style: {
      ...heroStyles.eyebrow,
      fontSize: "10px",
      textAlign: "center",
      marginTop: "12px"
    }
  }, "Quiet enamel \xB7 software edition")));
}
function StatStrip() {
  return /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      justifyContent: "space-between",
      gap: "40px",
      padding: "36px 64px",
      borderTop: "1px solid var(--hairline)",
      borderBottom: "1px solid var(--hairline)",
      background: "var(--bg-deep)"
    }
  }, /*#__PURE__*/React.createElement("div", {
    style: {
      maxWidth: "34ch"
    }
  }, /*#__PURE__*/React.createElement("div", {
    className: "rr-eyebrow rr-eyebrow--gold",
    style: {
      marginBottom: "8px"
    }
  }, "The complete game"), /*#__PURE__*/React.createElement("h2", {
    style: {
      margin: 0,
      fontSize: "30px"
    }
  }, "Poker becomes ", /*#__PURE__*/React.createElement("em", {
    className: "rr-emph"
  }, "possibility.")), /*#__PURE__*/React.createElement("p", {
    style: {
      fontSize: "12px",
      letterSpacing: "0.14em",
      textTransform: "uppercase",
      color: "var(--fg-soft)",
      marginTop: "10px"
    }
  }, "2\u20134 players \xB7 13+ \xB7 20\u201345 minutes")), /*#__PURE__*/React.createElement("div", {
    style: {
      display: "flex",
      gap: "48px"
    }
  }, /*#__PURE__*/React.createElement(StatBlock, {
    ordinal: "01",
    value: "180",
    label: "Cataloged assets"
  }), /*#__PURE__*/React.createElement(StatBlock, {
    ordinal: "02",
    value: "106",
    label: "Power artifacts"
  }), /*#__PURE__*/React.createElement(StatBlock, {
    ordinal: "03",
    value: "54",
    label: "Poker deck assets"
  }), /*#__PURE__*/React.createElement(StatBlock, {
    ordinal: "04",
    value: "16",
    label: "Class \xD7 Court decks"
  })));
}
Object.assign(window, {
  TopStrip,
  SiteNav,
  Hero,
  StatStrip
});
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/site/Hero.jsx", error: String((e && e.message) || e) }); }

// ui_kits/site/data.jsx
try { (() => {
const RR_ART = "https://www.kiduna.design/royals-and-rogues/v2/art/";
const RR_CLASSES = [{
  id: "merchant",
  ord: "01",
  name: "Merchant",
  arch: "Adaptive / Midrange",
  art: RR_ART + "power/class-merchant.png",
  desc: "Build resources, trade items, and convert patient advantage into explosive turns.",
  plan: ["Accumulate", "Exchange", "Explode"],
  powers: [["Bargain Bin", "round"], ["Deal of a Lifetime!", "round"], ["Expansion Plans", "setup"], ["Fire Sale", "round"], ["Hidden Gems", "showdown"], ["Hired Muscle", "round"], ["Hot Tip!", "setup"], ["Irresistible Offer", "round"], ["Mystical Wares", "setup"], ["Rotate Merchandise", "showdown"], ["Special Delivery!", "round"], ["Wheel and Deal", "round"]]
}, {
  id: "noble",
  ord: "02",
  name: "Noble",
  arch: "Tight / Control",
  art: RR_ART + "power/class-noble.png",
  desc: "Protect the stack, shape the table, and turn social leverage into control.",
  plan: ["Protect", "Shape", "Command"],
  powers: null
}, {
  id: "rogue",
  ord: "03",
  name: "Rogue",
  arch: "Tight / Aggressive",
  art: RR_ART + "power/class-rogue.png",
  desc: "Steal tempo, manipulate the deck, and spring sharp reversals.",
  plan: ["Steal", "Manipulate", "Reverse"],
  powers: null
}, {
  id: "warrior",
  ord: "04",
  name: "Warrior",
  arch: "Loose / Aggressive",
  art: RR_ART + "power/class-warrior.png",
  desc: "Force the pace, break board certainty, and attack the stack directly.",
  plan: ["Force", "Break", "Attack"],
  powers: null
}];
const RR_COURTS = [{
  id: "king",
  name: "King",
  domain: "Wealth",
  art: RR_ART + "power/court-king.png",
  hue: "var(--court-king)"
}, {
  id: "jack",
  name: "Jack",
  domain: "Skill",
  art: RR_ART + "power/court-jack.png",
  hue: "var(--court-jack)"
}, {
  id: "joker",
  name: "Joker",
  domain: "Craftiness",
  art: RR_ART + "power/court-joker.png",
  hue: "var(--court-joker)"
}, {
  id: "queen",
  name: "Queen",
  domain: "Intellect",
  art: RR_ART + "power/court-queen.png",
  hue: "var(--court-queen)"
}];
const RR_WINDOWS = [{
  ord: "01",
  name: "Setup",
  when: "After hole cards are dealt and before betting begins",
  how: "Reveal and resolve clockwise from the dealer.",
  key: "setup"
}, {
  ord: "02",
  name: "Round",
  when: "On your turn before checking, betting, or folding",
  how: "Play any compatible sequence before taking the poker action.",
  key: "round"
}, {
  ord: "03",
  name: "Showdown",
  when: "After the final betting round and before hole cards are revealed",
  how: "Set face down, then resolve in betting order.",
  key: "showdown"
}, {
  ord: "04",
  name: "Counter",
  when: "When its stated trigger occurs, including outside your turn",
  how: "Resolve the newest response first when a counter chain forms.",
  key: "counter"
}];
const RR_MK_BLURB = "Stack as many Item Cards as possible to exchange for extra hole cards or sell back to the bank with Fire Sale. Fold out of trouble, and take down key hands with your wombo-combos!";
Object.assign(window, {
  RR_ART,
  RR_CLASSES,
  RR_COURTS,
  RR_WINDOWS,
  RR_MK_BLURB
});
})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/site/data.jsx", error: String((e && e.message) || e) }); }

__ds_ns.Button = __ds_scope.Button;

__ds_ns.Badge = __ds_scope.Badge;

__ds_ns.StatBlock = __ds_scope.StatBlock;

__ds_ns.Tag = __ds_scope.Tag;

__ds_ns.Checkbox = __ds_scope.Checkbox;

__ds_ns.Input = __ds_scope.Input;

__ds_ns.Select = __ds_scope.Select;

__ds_ns.Switch = __ds_scope.Switch;

__ds_ns.AssetTile = __ds_scope.AssetTile;

__ds_ns.EnamelMedallion = __ds_scope.EnamelMedallion;

__ds_ns.PokerCard = __ds_scope.PokerCard;

__ds_ns.TimingBadge = __ds_scope.TimingBadge;

__ds_ns.Dialog = __ds_scope.Dialog;

__ds_ns.Panel = __ds_scope.Panel;

__ds_ns.Tabs = __ds_scope.Tabs;

})();
