// blanks.jsx — Apparel silhouettes + launch color palette for No Cap Apparel.
// Two blanks (matches what we offer in Printify):
//   - tee3001: Bella+Canvas 3001 — modern unisex retail fit
//   - cc1717:  Comfort Colors 1717 — boxy garment-dyed heavyweight

window.LAUNCH_COLORS = {
  // Bella+Canvas 3001 colors (matches Printify Choice variants we offer)
  black:        { hex: "#0e0e0e", label: "Black" },
  white:        { hex: "#f7f5ef", label: "White" },
  navy:         { hex: "#1c2230", label: "Navy" },
  heatherGray:  { hex: "#a8a8a4", label: "Athletic Heather" },
  charcoal:     { hex: "#3f4045", label: "Dark Grey Heather" },
  natural:      { hex: "#e8dfc6", label: "Natural" },
  softCream:    { hex: "#efe6cf", label: "Soft Cream" },
  militaryGreen:{ hex: "#4a4d3a", label: "Military Green" },
  // Tank (BC 3480) — overlaps with BC 3001 colors plus a few sport hues
  darkGrey:     { hex: "#3b3b3a", label: "Dark Grey" },
  trueRoyal:    { hex: "#1d4e89", label: "True Royal" },
  red:          { hex: "#b22222", label: "Red" },
  leaf:         { hex: "#3f6e3f", label: "Leaf" },
  // Performance (Sport-Tek ST350) — sport-leaning palette
  trueRed:      { hex: "#b22222", label: "True Red" },
  forest:       { hex: "#2c4030", label: "Forest Green" },
  ironGrey:     { hex: "#3b3f44", label: "Iron Grey" },
  sand:         { hex: "#d2c4a4", label: "Sand" },
  // CC 9360 garment-dyed tank
  granite:      { hex: "#6f706e", label: "Granite" },
  sandstone:    { hex: "#cfb98c", label: "Sandstone" },

  // Comfort Colors 1717 garment-dyed (slightly more washed)
  pepper:       { hex: "#3d3a36", label: "Pepper" },
  ivory:        { hex: "#ece2cc", label: "Ivory" },
  blueJean:     { hex: "#7a8fa6", label: "Blue Jean" },
  moss:         { hex: "#6a6f4a", label: "Moss" },
  yam:          { hex: "#a85a2a", label: "Yam" },
  terracotta:   { hex: "#a85842", label: "Terracotta" },
  orchid:       { hex: "#b787a8", label: "Orchid" },
  butter:       { hex: "#e8d68a", label: "Butter" },
  chambray:     { hex: "#9aabbe", label: "Chambray" },
  espresso:     { hex: "#3a2a22", label: "Espresso" },
  ccBlack:      { hex: "#1a1715", label: "Black (CC)" },
  ccWhite:      { hex: "#f1ebd9", label: "White (CC)" },

  // Gildan 18500 hoodie / 18000 crew
  sportGray:    { hex: "#bfbfb8", label: "Sport Gray" },
  darkHeather:  { hex: "#3a3d42", label: "Dark Heather" },
  ash:          { hex: "#cfc9bc", label: "Ash" },
  forest:       { hex: "#2c4030", label: "Forest Green" },
  lightPink:    { hex: "#e8bcc4", label: "Light Pink" },
};

// Per-blank color whitelists — must match the colors we offer in Printify
window.BLANK_COLORS = {
  tee3001:  ["black","white","navy","heatherGray","charcoal","natural","softCream","militaryGreen"],
  cc1717:   ["ccBlack","pepper","ivory","blueJean","moss","yam","butter","chambray"],
  tank3480: ["black","white","navy","heatherGray","darkGrey","trueRoyal","red","leaf"],
  perf350:  ["black","white","trueRoyal","trueRed","forest","navy","ironGrey","sand"],
  cc9360:   ["ccBlack","pepper","ivory","blueJean","butter","chambray","granite","sandstone"],
};

window.BLANK_DEFAULTS = {
  tee3001:  "white",
  cc1717:   "ivory",
  tank3480: "white",
  perf350:  "white",
  cc9360:   "ivory",
};

window.BLANKS_META = [
  { id: "tee3001",  label: "Classic Tee",      sub: "Bella+Canvas 3001" },
  { id: "cc1717",   label: "Vintage Tee",      sub: "Comfort Colors 1717" },
  { id: "tank3480", label: "Tank Top",         sub: "Bella+Canvas 3480" },
  { id: "cc9360",   label: "Vintage Tank",     sub: "Comfort Colors 9360 · garment-dyed" },
  { id: "perf350",  label: "Performance Tee",  sub: "Sport-Tek ST350 · moisture-wicking" },
];

// Helpers shared by all silhouettes
const _isDark = (hex) => {
  const h = hex.replace("#","");
  const r = parseInt(h.slice(0,2),16), g = parseInt(h.slice(2,4),16), b = parseInt(h.slice(4,6),16);
  return (r*0.299 + g*0.587 + b*0.114) < 130;
};
const _stitch = (hex) => _isDark(hex) ? "rgba(255,255,255,0.20)" : "rgba(0,0,0,0.18)";
const _shadow = (hex) => _isDark(hex) ? "rgba(0,0,0,0.45)" : "rgba(0,0,0,0.10)";

// ---------- Bella+Canvas 3001 — modern unisex retail fit ----------
// Slimmer through the body, tapered sleeves, ribbed crew collar.
function Tee3001({ teeColor, children, blendMode }) {
  const stitch = _stitch(teeColor);
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="t3-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.10)" />
          <stop offset="50%" stopColor="rgba(255,255,255,0)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.14)" />
        </linearGradient>
        <radialGradient id="t3-chest" cx="0.5" cy="0.45" r="0.55">
          <stop offset="0%" stopColor="rgba(255,255,255,0.06)" />
          <stop offset="100%" stopColor="rgba(255,255,255,0)" />
        </radialGradient>
      </defs>
      <ellipse cx="500" cy="945" rx="300" ry="14" fill="rgba(0,0,0,0.18)" />
      {/* Body — slimmer waist, tapered shoulders */}
      <path
        d="M 320 130 L 395 110 Q 415 102 432 122 Q 470 175 540 175 Q 590 175 608 122 Q 625 102 645 110 L 720 130 L 855 210 L 815 325 L 755 300 L 755 875 Q 755 915 715 915 L 285 915 Q 245 915 245 875 L 245 300 L 185 325 L 145 210 Z"
        fill={teeColor}
      />
      <path d="M 320 130 L 395 110 Q 415 102 432 122 Q 470 175 540 175 Q 590 175 608 122 Q 625 102 645 110 L 720 130 L 855 210 L 815 325 L 755 300 L 755 875 Q 755 915 715 915 L 285 915 Q 245 915 245 875 L 245 300 L 185 325 L 145 210 Z" fill="url(#t3-shade)" />
      <path d="M 320 130 L 395 110 Q 415 102 432 122 Q 470 175 540 175 Q 590 175 608 122 Q 625 102 645 110 L 720 130 L 855 210 L 815 325 L 755 300 L 755 875 Q 755 915 715 915 L 285 915 Q 245 915 245 875 L 245 300 L 185 325 L 145 210 Z" fill="url(#t3-chest)" />
      {/* Ribbed crew collar — narrower than CC */}
      <path d="M 432 122 Q 470 195 540 195 Q 590 195 608 122" fill="none" stroke={stitch} strokeWidth="3" />
      <path d="M 438 128 Q 470 188 540 188 Q 590 188 602 128" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      {/* Sleeve hems */}
      <path d="M 245 305 Q 230 282 200 295" fill="none" stroke={stitch} strokeWidth="1.2" strokeDasharray="3 3" />
      <path d="M 755 305 Q 770 282 800 295" fill="none" stroke={stitch} strokeWidth="1.2" strokeDasharray="3 3" />
      {/* Hem */}
      <path d="M 250 895 L 750 895" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      {children}
    </svg>
  );
}

// ---------- Comfort Colors 1717 — boxy, garment-dyed, heavier ----------
// Wider through the body, drop shoulders, slightly wider neck, soft pigment dye uneven shading.
function CC1717({ teeColor, children, blendMode }) {
  const stitch = _stitch(teeColor);
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="cc-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.07)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.16)" />
        </linearGradient>
        {/* uneven garment-dye mottle */}
        <radialGradient id="cc-mottle1" cx="0.3" cy="0.3" r="0.4">
          <stop offset="0%" stopColor="rgba(255,255,255,0.06)" />
          <stop offset="100%" stopColor="rgba(255,255,255,0)" />
        </radialGradient>
        <radialGradient id="cc-mottle2" cx="0.7" cy="0.7" r="0.4">
          <stop offset="0%" stopColor="rgba(0,0,0,0.06)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0)" />
        </radialGradient>
      </defs>
      <ellipse cx="500" cy="945" rx="330" ry="16" fill="rgba(0,0,0,0.20)" />
      {/* Body — boxier, wider shoulders, drop sleeves */}
      <path
        d="M 295 145 L 380 120 Q 405 110 425 138 Q 465 195 540 195 Q 615 195 655 138 Q 675 110 700 120 L 785 145 L 895 235 L 845 350 L 780 320 L 780 880 Q 780 905 755 905 L 245 905 Q 220 905 220 880 L 220 320 L 155 350 L 105 235 Z"
        fill={teeColor}
      />
      <path d="M 295 145 L 380 120 Q 405 110 425 138 Q 465 195 540 195 Q 615 195 655 138 Q 675 110 700 120 L 785 145 L 895 235 L 845 350 L 780 320 L 780 880 Q 780 905 755 905 L 245 905 Q 220 905 220 880 L 220 320 L 155 350 L 105 235 Z" fill="url(#cc-shade)" />
      <path d="M 295 145 L 380 120 Q 405 110 425 138 Q 465 195 540 195 Q 615 195 655 138 Q 675 110 700 120 L 785 145 L 895 235 L 845 350 L 780 320 L 780 880 Q 780 905 755 905 L 245 905 Q 220 905 220 880 L 220 320 L 155 350 L 105 235 Z" fill="url(#cc-mottle1)" />
      <path d="M 295 145 L 380 120 Q 405 110 425 138 Q 465 195 540 195 Q 615 195 655 138 Q 675 110 700 120 L 785 145 L 895 235 L 845 350 L 780 320 L 780 880 Q 780 905 755 905 L 245 905 Q 220 905 220 880 L 220 320 L 155 350 L 105 235 Z" fill="url(#cc-mottle2)" />
      {/* Wider neck opening, soft tubular collar */}
      <path d="M 425 138 Q 465 215 540 215 Q 615 215 655 138" fill="none" stroke={stitch} strokeWidth="4" />
      <path d="M 432 145 Q 465 207 540 207 Q 615 207 648 145" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="4 3" />
      {/* Drop-shoulder seams */}
      <path d="M 220 325 Q 210 305 178 318" fill="none" stroke={stitch} strokeWidth="1.5" strokeDasharray="4 3" />
      <path d="M 780 325 Q 790 305 822 318" fill="none" stroke={stitch} strokeWidth="1.5" strokeDasharray="4 3" />
      {/* Heavy hem */}
      <path d="M 225 885 L 775 885" fill="none" stroke={stitch} strokeWidth="1.2" strokeDasharray="4 3" />
      <path d="M 225 895 L 775 895" fill="none" stroke={stitch} strokeWidth="0.8" strokeDasharray="2 4" opacity="0.6" />
      {children}
    </svg>
  );
}

// ---------- Gildan 18500 — pullover hoodie ----------
// Hood, kangaroo pouch, ribbed cuffs, drawstrings.
function Hoodie18500({ teeColor, children, blendMode }) {
  const stitch = _stitch(teeColor);
  const drawstring = _isDark(teeColor) ? "#ddd6c2" : "#3a342a";
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="hd-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.08)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.16)" />
        </linearGradient>
      </defs>
      <ellipse cx="500" cy="950" rx="340" ry="14" fill="rgba(0,0,0,0.22)" />
      {/* Hood (behind body) */}
      <path
        d="M 380 165 Q 420 70 540 70 Q 660 70 700 165 L 690 230 Q 615 200 540 200 Q 465 200 390 230 Z"
        fill={teeColor}
      />
      <path d="M 380 165 Q 420 70 540 70 Q 660 70 700 165 L 690 230 Q 615 200 540 200 Q 465 200 390 230 Z" fill="rgba(0,0,0,0.10)" />
      {/* Body */}
      <path
        d="M 305 170 L 385 145 Q 410 200 480 215 L 480 290 L 600 290 L 600 215 Q 670 200 695 145 L 775 170 L 880 250 L 830 365 L 770 335 L 770 880 Q 770 910 740 910 L 260 910 Q 230 910 230 880 L 230 335 L 170 365 L 120 250 Z"
        fill={teeColor}
      />
      <path d="M 305 170 L 385 145 Q 410 200 480 215 L 480 290 L 600 290 L 600 215 Q 670 200 695 145 L 775 170 L 880 250 L 830 365 L 770 335 L 770 880 Q 770 910 740 910 L 260 910 Q 230 910 230 880 L 230 335 L 170 365 L 120 250 Z" fill="url(#hd-shade)" />
      {/* V-notch + drawstrings */}
      <path d="M 480 215 L 540 285 L 600 215" fill="none" stroke={stitch} strokeWidth="2" />
      <path d="M 510 220 L 510 360" stroke={drawstring} strokeWidth="3" fill="none" />
      <path d="M 570 220 L 570 360" stroke={drawstring} strokeWidth="3" fill="none" />
      <circle cx="510" cy="365" r="6" fill={drawstring} />
      <circle cx="570" cy="365" r="6" fill={drawstring} />
      {/* Kangaroo pouch */}
      <path
        d="M 320 540 L 380 510 L 620 510 L 680 540 L 680 720 L 320 720 Z"
        fill="none" stroke={stitch} strokeWidth="2"
      />
      <path d="M 380 510 L 380 540 L 320 540" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      <path d="M 620 510 L 620 540 L 680 540" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      {/* Ribbed cuffs */}
      <rect x="155" y="335" width="60" height="40" fill="rgba(0,0,0,0.12)" />
      <rect x="785" y="335" width="60" height="40" fill="rgba(0,0,0,0.12)" />
      <line x1="160" y1="345" x2="210" y2="345" stroke={stitch} strokeWidth="0.8" />
      <line x1="160" y1="355" x2="210" y2="355" stroke={stitch} strokeWidth="0.8" />
      <line x1="160" y1="365" x2="210" y2="365" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="345" x2="840" y2="345" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="355" x2="840" y2="355" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="365" x2="840" y2="365" stroke={stitch} strokeWidth="0.8" />
      {/* Ribbed waistband */}
      <rect x="230" y="870" width="540" height="40" fill="rgba(0,0,0,0.12)" />
      <line x1="240" y1="880" x2="760" y2="880" stroke={stitch} strokeWidth="0.8" />
      <line x1="240" y1="890" x2="760" y2="890" stroke={stitch} strokeWidth="0.8" />
      <line x1="240" y1="900" x2="760" y2="900" stroke={stitch} strokeWidth="0.8" />
      {children}
    </svg>
  );
}

// ---------- Gildan 18000 — heavy crewneck ----------
// Ribbed crew collar, ribbed cuffs and waistband, no hood, no pouch.
function Crew18000({ teeColor, children, blendMode }) {
  const stitch = _stitch(teeColor);
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="cw-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.09)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.15)" />
        </linearGradient>
      </defs>
      <ellipse cx="500" cy="945" rx="320" ry="14" fill="rgba(0,0,0,0.20)" />
      {/* Body */}
      <path
        d="M 305 145 L 390 120 Q 415 112 432 138 Q 470 195 540 195 Q 610 195 608 138 Q 625 112 650 120 L 735 145 L 870 230 L 825 345 L 765 315 L 765 880 Q 765 910 735 910 L 265 910 Q 235 910 235 880 L 235 315 L 175 345 L 130 230 Z"
        fill={teeColor}
      />
      <path d="M 305 145 L 390 120 Q 415 112 432 138 Q 470 195 540 195 Q 610 195 608 138 Q 625 112 650 120 L 735 145 L 870 230 L 825 345 L 765 315 L 765 880 Q 765 910 735 910 L 265 910 Q 235 910 235 880 L 235 315 L 175 345 L 130 230 Z" fill="url(#cw-shade)" />
      {/* Ribbed crew collar — chunkier than tee */}
      <path d="M 432 138 Q 470 205 540 205 Q 610 205 608 138" fill="none" stroke={stitch} strokeWidth="4" />
      <path d="M 438 145 Q 470 198 540 198 Q 610 198 602 145" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      <path d="M 444 152 Q 470 192 540 192 Q 610 192 596 152" fill="none" stroke={stitch} strokeWidth="0.8" strokeDasharray="2 3" opacity="0.6" />
      {/* Ribbed cuffs */}
      <rect x="160" y="315" width="55" height="40" fill="rgba(0,0,0,0.12)" />
      <rect x="785" y="315" width="55" height="40" fill="rgba(0,0,0,0.12)" />
      <line x1="165" y1="325" x2="210" y2="325" stroke={stitch} strokeWidth="0.8" />
      <line x1="165" y1="335" x2="210" y2="335" stroke={stitch} strokeWidth="0.8" />
      <line x1="165" y1="345" x2="210" y2="345" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="325" x2="835" y2="325" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="335" x2="835" y2="335" stroke={stitch} strokeWidth="0.8" />
      <line x1="790" y1="345" x2="835" y2="345" stroke={stitch} strokeWidth="0.8" />
      {/* Ribbed waistband */}
      <rect x="235" y="870" width="530" height="40" fill="rgba(0,0,0,0.12)" />
      <line x1="245" y1="880" x2="755" y2="880" stroke={stitch} strokeWidth="0.8" />
      <line x1="245" y1="890" x2="755" y2="890" stroke={stitch} strokeWidth="0.8" />
      <line x1="245" y1="900" x2="755" y2="900" stroke={stitch} strokeWidth="0.8" />
      {children}
    </svg>
  );
}

// Per-blank design placement (inside the 1000x1000 viewBox).
// Y values target high-chest placement — top of design near collar, NOT centered.
window.BLANK_DESIGN_AREA = {
  tee3001:  { x: 250, y: 220, w: 500, h: 480 },
  cc1717:   { x: 245, y: 230, w: 510, h: 470 },
  tank3480: { x: 290, y: 260, w: 420, h: 460 },
  cc9360:   { x: 290, y: 270, w: 420, h: 450 },
  perf350:  { x: 250, y: 230, w: 500, h: 470 },
};

// ───────── Bella+Canvas 3480 — Unisex Jersey Tank ─────────
// Body rectangle + two narrow shoulder straps, deep U armholes, scoop neck.
// Drawn as one closed path going clockwise from bottom-left.
function Tank3480({ teeColor, children }) {
  const stitch = _stitch(teeColor);
  // Single-path tank silhouette: body 280→720, straps 360–410 + 590–640
  const tankPath = "M 280 905 L 280 340 Q 290 280 360 230 L 360 130 Q 360 100 395 100 L 425 100 Q 445 100 445 130 L 445 215 Q 470 250 500 250 Q 530 250 555 215 L 555 130 Q 555 100 575 100 L 605 100 Q 640 100 640 130 L 640 230 Q 710 280 720 340 L 720 905 Z";
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="tk-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.10)" />
          <stop offset="50%" stopColor="rgba(255,255,255,0)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.14)" />
        </linearGradient>
      </defs>
      <ellipse cx="500" cy="945" rx="260" ry="12" fill="rgba(0,0,0,0.18)" />
      <path d={tankPath} fill={teeColor} />
      <path d={tankPath} fill="url(#tk-shade)" />
      {/* Neck scoop binding */}
      <path d="M 445 215 Q 470 255 500 255 Q 530 255 555 215" fill="none" stroke={stitch} strokeWidth="3" />
      {/* Armhole binding stitches */}
      <path d="M 290 290 Q 320 250 360 230" fill="none" stroke={stitch} strokeWidth="1.5" strokeDasharray="4 3" />
      <path d="M 710 290 Q 680 250 640 230" fill="none" stroke={stitch} strokeWidth="1.5" strokeDasharray="4 3" />
      {/* Hem */}
      <path d="M 285 895 L 715 895" fill="none" stroke={stitch} strokeWidth="1" strokeDasharray="3 3" />
      {children}
    </svg>
  );
}

// ───────── Comfort Colors 9360 — Garment-Dyed Tank ─────────
// Boxier (wider body, broader straps) with garment-dye mottle.
function CC9360Tank({ teeColor, children }) {
  const stitch = _stitch(teeColor);
  const tankPath = "M 260 905 L 260 340 Q 270 270 340 220 L 340 125 Q 340 95 380 95 L 415 95 Q 440 95 440 125 L 440 215 Q 470 255 500 255 Q 530 255 560 215 L 560 125 Q 560 95 585 95 L 620 95 Q 660 95 660 125 L 660 220 Q 730 270 740 340 L 740 905 Z";
  return (
    <svg viewBox="0 0 1000 1000" className="tee-svg" style={{ display: "block", width: "100%", height: "100%" }}>
      <defs>
        <linearGradient id="ckt-shade" x1="0" y1="0" x2="1" y2="1">
          <stop offset="0%" stopColor="rgba(255,255,255,0.08)" />
          <stop offset="100%" stopColor="rgba(0,0,0,0.16)" />
        </linearGradient>
        <radialGradient id="ckt-mottle" cx="0.3" cy="0.3" r="0.5">
          <stop offset="0%" stopColor="rgba(255,255,255,0.06)" />
          <stop offset="100%" stopColor="rgba(255,255,255,0)" />
        </radialGradient>
      </defs>
      <ellipse cx="500" cy="945" rx="280" ry="14" fill="rgba(0,0,0,0.20)" />
      <path d={tankPath} fill={teeColor} />
      <path d={tankPath} fill="url(#ckt-shade)" />
      <path d={tankPath} fill="url(#ckt-mottle)" />
      <path d="M 440 215 Q 470 260 500 260 Q 530 260 560 215" fill="none" stroke={stitch} strokeWidth="4" />
      <path d="M 270 290 Q 305 245 340 220" fill="none" stroke={stitch} strokeWidth="1.6" strokeDasharray="4 3" />
      <path d="M 730 290 Q 695 245 660 220" fill="none" stroke={stitch} strokeWidth="1.6" strokeDasharray="4 3" />
      <path d="M 265 885 L 735 885" fill="none" stroke={stitch} strokeWidth="1.2" strokeDasharray="4 3" />
      {children}
    </svg>
  );
}

window.BlankSilhouettes = {
  tee3001:  Tee3001,
  cc1717:   CC1717,
  tank3480: Tank3480,
  cc9360:   CC9360Tank,
  perf350:  Tee3001,  // performance tee uses same cut as classic tee
};

// Real Printify print-area dimensions (pixels @ 300 DPI). Use to size the
// generator's print-area preview accurately so what the user sees IS what
// gets printed.
window.PRINT_AREAS = {
  tee3001:  { w: 2767, h: 3362, label: "Bella+Canvas 3001 · front print" },
  cc1717:   { w: 3703, h: 4200, label: "Comfort Colors 1717 · front print" },
  tank3480: { w: 3210, h: 3852, label: "Bella+Canvas 3480 Tank · front print" },
  cc9360:   { w: 3213, h: 3672, label: "Comfort Colors 9360 Tank · front print" },
  perf350:  { w: 1828, h: 2087, label: "Sport-Tek ST350 · front print" },
};
