{"id":85664,"date":"2026-06-05T02:55:21","date_gmt":"2026-06-05T02:55:21","guid":{"rendered":"https:\/\/www.harsle.com\/?page_id=85664"},"modified":"2026-06-05T08:04:55","modified_gmt":"2026-06-05T08:04:55","slug":"battery-energy-storage-cabinet-production-line","status":"publish","type":"page","link":"https:\/\/www.harsle.com\/fr\/battery-energy-storage-cabinet-production-line\/","title":{"rendered":"Battery Energy Storage Cabinet Production Line"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Battery Energy Storage Cabinet Production Line | HARSLE Sheet Metal Manufacturing Solutions<\/title>\n  <meta name=\"description\" content=\"HARSLE turnkey battery energy storage cabinet production line \u2014 shearing, fiber laser cutting, automatic panel bending, CNC punching, press brake, laser welding, powder coating and assembly for outdoor BESS containers, commercial ESS cabinets, PCS enclosures and battery rack housings.\" \/>\n  <meta name=\"keywords\" content=\"Battery Energy Storage Cabinet Production Line, BESS Cabinet Manufacturing, Energy Storage Enclosure Factory, Outdoor ESS Container Production, PCS Enclosure Line, Commercial Battery Cabinet Line, How To Manufacture Battery Storage Cabinets\" \/>\n  <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\" \/>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&#038;display=swap\" rel=\"stylesheet\" \/>\n  <style>\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n    \/* \u2500\u2500 WordPress embedding reset \u2500\u2500\n       Prevents theme & Gutenberg default margins from creating white gaps\n       between sections. All rules use !important to override theme styles. *\/\n    html body section,\n    html body section + section,\n    html body .wp-block-html section,\n    html body .entry-content section,\n    html body .page-content section,\n    html body article section {\n      margin-top: 0 !important;\n      margin-bottom: 0 !important;\n    }\n    \/* Stop WordPress p\/figure\/div wrappers adding space around our sections *\/\n    html body .wp-block-html,\n    html body .wp-block-html > *:first-child,\n    html body .wp-block-html > *:last-child,\n    html body .entry-content > p:empty,\n    html body .page-content > p:empty {\n      margin: 0 !important;\n      padding: 0 !important;\n    }\n    \/* Gutenberg block gap override *\/\n    html body .wp-block-group,\n    html body .wp-block-group__inner-container {\n      gap: 0 !important;\n      margin: 0 !important;\n      padding: 0 !important;\n    }\n\n    :root {\n      --blue:    #0e6cf6;\n      --blue-dk: #0a52c4;\n      --cyan:    #00d4ff;\n      --dark:    #080e1a;\n      --dark2:   #0d1526;\n      --dark3:   #111c34;\n      --card-bg: #0f1e3a;\n      --border:  rgba(0,212,255,.18);\n      --text:    #c8d8f0;\n      --white:   #ffffff;\n      --gold:    #f5a623;\n    }\n\n    html, body {\n      width: 100%;\n      scroll-behavior: smooth;\n    }\n\n    body {\n      font-family: 'Inter', sans-serif;\n      background: var(--dark);\n      color: var(--text);\n      line-height: 1.65;\n      overflow-x: hidden;\n    }\n\n    \/* \u2500\u2500 HEADER \u2500\u2500 *\/\n    \/* \u2500\u2500 HERO \u2500\u2500 *\/\n    #hero {\n      position: relative;\n      min-height: 100vh;\n      display: flex;\n      align-items: center;\n      overflow: hidden;\n    }\n    .hero-bg {\n      position: absolute;\n      inset: 0;\n      background:\n        linear-gradient(120deg, rgba(8,14,26,.92) 0%, rgba(8,14,26,.65) 60%, rgba(8,14,26,.40) 100%),\n        url('https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Battery-Energy-Storage-Cabinet-1.jpg') center\/cover no-repeat;\n    }\n    .hero-glow {\n      position: absolute;\n      width: 700px; height: 700px;\n      top: -150px; left: -150px;\n      background: radial-gradient(circle, rgba(0,212,255,.12) 0%, transparent 70%);\n      pointer-events: none;\n    }\n    .hero-content {\n      position: relative;\n      z-index: 2;\n      width: 100%;\n      max-width: 960px;\n      min-width: 0;\n      padding: 140px 48px 80px 96px;\n      box-sizing: border-box;\n    }\n    .hero-badge {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      background: rgba(0,212,255,.1);\n      border: 1px solid var(--border);\n      border-radius: 50px;\n      padding: 6px 18px;\n      font-size: .78rem;\n      font-weight: 600;\n      color: var(--cyan);\n      letter-spacing: 1px;\n      text-transform: uppercase;\n      margin-bottom: 28px;\n    }\n    .hero-badge::before {\n      content: '';\n      width: 8px; height: 8px;\n      background: var(--cyan);\n      border-radius: 50%;\n      animation: pulse 2s infinite;\n    }\n    @keyframes pulse {\n      0%,100% { opacity:1; transform:scale(1); }\n      50%      { opacity:.4; transform:scale(1.5); }\n    }\n    .hero-h1 {\n      font-size: clamp(2.2rem, 5vw, 3.6rem);\n      font-weight: 900;\n      color: var(--white);\n      line-height: 1.15;\n      margin-bottom: 28px;\n    }\n    .hero-h1 .hero-line {\n      display: block;\n    }\n    .hero-h1 .accent { color: var(--cyan); }\n    .hero-sub {\n      font-size: 1.05rem;\n      color: var(--text);\n      margin-bottom: 22px;\n      font-weight: 500;\n      letter-spacing: .5px;\n    }\n    .hero-tags {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 14px;\n      margin-bottom: 44px;\n    }\n    .hero-tag {\n      background: rgba(14,108,246,.15);\n      border: 1px solid rgba(14,108,246,.35);\n      border-radius: 4px;\n      padding: 4px 12px;\n      font-size: .8rem;\n      color: #8ab4ff;\n      font-weight: 500;\n    }\n    .hero-desc {\n      font-size: .97rem;\n      color: #94aec8;\n      max-width: 780px;\n      margin-bottom: 52px;\n    }\n    .btn-group { display: flex; gap: 14px; flex-wrap: wrap; }\n    .btn-primary {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      background: linear-gradient(135deg, var(--blue), #3b82f6);\n      color: #fff !important;\n      padding: 14px 32px;\n      border-radius: 8px;\n      font-weight: 700;\n      font-size: .95rem;\n      text-decoration: none;\n      border: none;\n      cursor: pointer;\n      transition: transform .2s, box-shadow .2s;\n      box-shadow: 0 4px 24px rgba(14,108,246,.35);\n    }\n    .btn-primary:hover,\n    .btn-primary:focus,\n    .btn-primary:focus-visible,\n    .btn-primary:active {\n      color: #fff !important;\n      transform: translateY(-2px);\n      box-shadow: 0 8px 32px rgba(14,108,246,.5);\n    }\n    .btn-secondary {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      background: transparent;\n      color: var(--white);\n      padding: 13px 30px;\n      border-radius: 8px;\n      font-weight: 600;\n      font-size: .95rem;\n      text-decoration: none;\n      border: 1px solid rgba(255,255,255,.25);\n      cursor: pointer;\n      transition: border-color .2s, background .2s;\n    }\n    .btn-secondary:hover {\n      border-color: var(--cyan);\n      background: rgba(0,212,255,.06);\n    }\n    .hero-stats {\n      display: grid;\n      grid-template-columns: repeat(4, minmax(0, 1fr));\n      gap: 32px;\n      margin-top: 72px;\n      padding-top: 42px;\n      border-top: 1px solid var(--border);\n    }\n    .stat-item { min-width: 0; text-align: center; }\n    .stat-num {\n      font-size: 2rem;\n      font-weight: 800;\n      color: var(--cyan);\n      display: block;\n    }\n    .stat-label {\n      display: block;\n      font-size: .78rem;\n      color: #6a8aaa;\n      text-transform: uppercase;\n      letter-spacing: 1px;\n    }\n\n    @media (min-width: 901px) {\n      .hero-h1 .hero-line:first-child { white-space: nowrap; }\n      .stat-num,\n      .stat-label { white-space: nowrap; }\n    }\n\n    \/* \u2500\u2500 SECTION BASE \u2500\u2500 *\/\n    section { padding: 96px 0; width: 100%; margin: 0; display: block; }\n    .container { max-width: 1200px; margin: 0 auto; padding: 0 48px; }\n    .section-label {\n      display: inline-block;\n      font-size: .72rem;\n      font-weight: 700;\n      color: var(--cyan);\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      margin-bottom: 14px;\n    }\n    .section-title {\n      font-size: clamp(1.7rem, 3.5vw, 2.6rem);\n      font-weight: 800;\n      color: var(--white);\n      margin-bottom: 16px;\n      line-height: 1.2;\n    }\n    .section-sub {\n      font-size: .97rem;\n      color: #6a8aaa;\n      max-width: 600px;\n    }\n    .title-block { margin-bottom: 56px; }\n    .title-block.center { text-align: center; }\n    .title-block.center .section-sub { margin: 0 auto; }\n\n    \/* \u2500\u2500 SECTION 2 \u2014 WHY GROWING \u2500\u2500 *\/\n    #why { background: var(--dark2); }\n    .why-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 24px;\n    }\n    .why-card {\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 14px;\n      transition: transform .25s, box-shadow .25s, border-color .25s;\n      position: relative;\n      overflow: hidden;\n    }\n    .why-card::before {\n      content: '';\n      position: absolute;\n      top: 0; left: 0; right: 0;\n      height: 3px;\n      background: linear-gradient(90deg, var(--blue), var(--cyan));\n      opacity: 0;\n      transition: opacity .25s;\n    }\n    .why-card:hover { transform: translateY(-6px); box-shadow: 0 12px 40px rgba(0,212,255,.12); border-color: rgba(0,212,255,.35); }\n    .why-card:hover::before { opacity: 1; }\n    .why-img {\n      width: 100%;\n      aspect-ratio: 4 \/ 3;\n      object-fit: cover;\n      display: block;\n      background: #0a1628;\n      transition: transform .35s;\n    }\n    .why-card:hover .why-img { transform: scale(1.04); }\n    .why-body { padding: 24px 24px 28px; }\n    .why-card h3 { font-size: 1.05rem; font-weight: 700; color: var(--white); margin-bottom: 10px; }\n    .why-card p { font-size: .88rem; color: #6a8aaa; }\n\n    \/* \u2500\u2500 SECTION 3 \u2014 PROCESS \u2500\u2500 *\/\n    #process { background: var(--dark); }\n    .process-tabs {\n      display: flex;\n      gap: 6px;\n      flex-wrap: wrap;\n      justify-content: center;\n      margin-bottom: 36px;\n    }\n    .process-tab-btn {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 8px;\n      padding: 9px 16px;\n      cursor: pointer;\n      transition: border-color .2s, background .2s;\n      color: #6a8aaa;\n      font-size: .8rem;\n      font-weight: 600;\n    }\n    .process-tab-btn:hover {\n      border-color: rgba(0,212,255,.35);\n      color: var(--text);\n    }\n    .process-tab-btn.active {\n      border-color: var(--blue);\n      background: rgba(14,108,246,.14);\n      color: var(--white);\n    }\n    .process-tab-num {\n      width: 22px; height: 22px;\n      border-radius: 50%;\n      background: rgba(14,108,246,.25);\n      display: flex; align-items: center; justify-content: center;\n      font-size: .68rem;\n      font-weight: 800;\n      color: var(--cyan);\n      flex-shrink: 0;\n    }\n    .process-tab-btn.active .process-tab-num {\n      background: var(--blue);\n      color: #fff;\n    }\n    \/* progress bar *\/\n    .process-progress-wrap {\n      height: 3px;\n      background: rgba(255,255,255,.06);\n      border-radius: 3px;\n      margin-bottom: 40px;\n      overflow: hidden;\n    }\n    .process-progress-bar {\n      height: 100%;\n      background: linear-gradient(90deg, var(--blue), var(--cyan));\n      border-radius: 3px;\n      transition: width .4s ease;\n    }\n    \/* panel *\/\n    .process-panel {\n      display: grid;\n      grid-template-columns: 58% 1fr;\n      gap: 0;\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 20px;\n      overflow: hidden;\n      min-height: 440px;\n    }\n    .process-panel-img-wrap {\n      position: relative;\n      overflow: hidden;\n    }\n    .process-panel-img {\n      width: 100%;\n      height: 100%;\n      min-height: 440px;\n      object-fit: cover;\n      display: block;\n      transition: transform .5s ease, opacity .35s ease;\n    }\n    .process-panel-img.fade { opacity: 0; transform: scale(1.03); }\n    .process-panel-step-badge {\n      position: absolute;\n      top: 20px; left: 20px;\n      background: rgba(8,14,26,.75);\n      backdrop-filter: blur(8px);\n      border: 1px solid var(--border);\n      border-radius: 8px;\n      padding: 6px 14px;\n      font-size: .72rem;\n      font-weight: 800;\n      color: var(--cyan);\n      letter-spacing: 2px;\n      text-transform: uppercase;\n    }\n    .process-panel-nav {\n      position: absolute;\n      bottom: 20px;\n      left: 50%;\n      transform: translateX(-50%);\n      display: flex;\n      gap: 8px;\n    }\n    .process-panel-nav button {\n      width: 36px; height: 36px;\n      border-radius: 50%;\n      border: 1px solid rgba(255,255,255,.25);\n      background: rgba(8,14,26,.7);\n      backdrop-filter: blur(8px);\n      color: #fff;\n      font-size: .9rem;\n      cursor: pointer;\n      transition: border-color .2s, background .2s;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .process-panel-nav button:hover {\n      border-color: var(--cyan);\n      background: rgba(0,212,255,.12);\n    }\n    .process-panel-info {\n      padding: 40px 36px;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n      position: relative;\n    }\n    .process-panel-info::before {\n      content: '';\n      position: absolute;\n      top: 0; left: 0;\n      width: 3px; height: 100%;\n      background: linear-gradient(to bottom, var(--blue), var(--cyan));\n      border-radius: 0 3px 3px 0;\n    }\n    .process-panel-label {\n      font-size: .7rem;\n      font-weight: 700;\n      color: var(--cyan);\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      margin-bottom: 12px;\n    }\n    .process-panel-title {\n      font-size: 1.55rem;\n      font-weight: 800;\n      color: var(--white);\n      line-height: 1.25;\n      margin-bottom: 16px;\n      transition: opacity .3s;\n    }\n    .process-panel-desc {\n      font-size: .9rem;\n      color: #6a8aaa;\n      line-height: 1.7;\n      margin-bottom: 24px;\n      transition: opacity .3s;\n    }\n    .process-panel-bullets {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      margin-bottom: 28px;\n    }\n    .process-panel-bullet {\n      display: flex;\n      align-items: flex-start;\n      gap: 10px;\n      font-size: .85rem;\n      color: var(--text);\n    }\n    .process-panel-bullet::before {\n      content: '';\n      width: 6px; height: 6px;\n      min-width: 6px;\n      border-radius: 50%;\n      background: var(--cyan);\n      margin-top: 6px;\n    }\n    .process-panel-counter {\n      font-size: .78rem;\n      color: #3a5570;\n      margin-top: auto;\n      padding-top: 20px;\n      border-top: 1px solid var(--border);\n    }\n    .process-panel-counter strong { color: var(--text); }\n    @media (max-width: 860px) {\n      .process-panel { grid-template-columns: 1fr; }\n      .process-panel-img { min-height: 260px; height: 260px; }\n      .process-panel-info { padding: 28px 24px; }\n    }\n\n    \/* \u2500\u2500 SECTION 4 \u2014 MACHINES \u2500\u2500 *\/\n    #machines { background: var(--dark2); }\n    .machines-list {\n      display: flex;\n      flex-direction: column;\n      gap: 0;\n    }\n    .machine-row + .machine-row {\n      border-top: 1px solid var(--border);\n    }\n    .machine-row {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      min-height: 520px;\n      background: none;\n      border: none;\n      border-radius: 0;\n      overflow: hidden;\n    }\n    \/* even rows: flip image to right *\/\n    \/* image pane *\/\n    .machine-img-pane {\n      position: relative;\n      background: none;\n      display: flex;\n      align-items: stretch;\n      justify-content: stretch;\n      overflow: hidden;\n      padding: 0;\n    }\n    .machine-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      display: block;\n      position: relative;\n      z-index: 1;\n      transition: transform .4s ease;\n    }\n    .machine-row:hover .machine-img { transform: scale(1.04); }\n    \/* content pane *\/\n    .machine-body {\n      padding: 52px 52px 52px 48px;\n      display: flex;\n      flex-direction: column;\n      justify-content: center;\n    }\n    .machine-badge {\n      display: inline-flex;\n      align-items: center;\n      align-self: flex-start;\n      background: transparent;\n      border: 1px solid rgba(0,212,255,.4);\n      color: var(--cyan);\n      font-size: .68rem;\n      font-weight: 700;\n      letter-spacing: 2px;\n      text-transform: uppercase;\n      padding: 4px 12px;\n      border-radius: 4px;\n      margin-bottom: 20px;\n    }\n    .machine-body h3 {\n      font-size: clamp(1.5rem, 2.5vw, 2rem);\n      font-weight: 800;\n      color: var(--white);\n      line-height: 1.2;\n      margin-bottom: 8px;\n    }\n    .machine-series {\n      font-size: .95rem;\n      color: #8ab4ff;\n      font-weight: 600;\n      margin-bottom: 18px;\n    }\n    .machine-desc {\n      font-size: .9rem;\n      color: #6a8aaa;\n      line-height: 1.7;\n      margin-bottom: 22px;\n    }\n    .machine-features {\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n      margin-bottom: 36px;\n    }\n    .machine-feature {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      font-size: .88rem;\n      color: var(--text);\n    }\n    .machine-feature::before {\n      content: '';\n      width: 8px; height: 8px;\n      min-width: 8px;\n      border-radius: 50%;\n      background: var(--blue);\n      box-shadow: 0 0 6px rgba(14,108,246,.6);\n    }\n    .machine-btns {\n      display: flex;\n      gap: 12px;\n      flex-wrap: wrap;\n    }\n    @media (max-width: 860px) {\n      .machine-row {\n        grid-template-columns: 1fr;\n        min-height: unset;\n        background: var(--card-bg);\n        border: 1px solid var(--border);\n        border-radius: 16px;\n        overflow: hidden;\n      }\n      .machines-list { gap: 20px; }\n      .machine-row + .machine-row { border-top: 1px solid var(--border); }\n      .machine-img-pane {\n        background: linear-gradient(135deg, #080f20 0%, #0d1e3c 100%);\n        min-height: 280px;\n        padding: 0;\n      }\n      .machine-img { width: 100%; height: 280px; object-fit: cover; }\n      .machine-body { padding: 28px 24px; }\n      .machine-body h3 { font-size: 1.3rem; }\n    }\n    @media (max-width: 480px) {\n      .machine-body { padding: 24px 20px; }\n      .machine-btns .btn-primary,\n      .machine-btns .btn-secondary { width: 100%; justify-content: center; }\n    }\n\n    \/* \u2500\u2500 SECTION 5 \u2014 PRODUCTS \u2500\u2500 *\/\n    #products { background: var(--dark); }\n    .products-bento {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 14px;\n    }\n    .product-bento-card {\n      position: relative;\n      aspect-ratio: 4 \/ 3;\n      border-radius: 16px;\n      overflow: hidden;\n      cursor: default;\n      background: #0a1628;\n    }\n    .product-bento-img {\n      width: 100%;\n      height: 100%;\n      object-fit: contain;\n      display: block;\n      transition: transform .5s ease;\n    }\n    .product-bento-card:hover .product-bento-img {\n      transform: scale(1.07);\n    }\n    \/* dark gradient overlay *\/\n    .product-bento-card::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      background: linear-gradient(\n        to top,\n        rgba(8,14,26,.85) 0%,\n        rgba(8,14,26,.25) 50%,\n        transparent 80%\n      );\n      transition: background .3s;\n    }\n    .product-bento-card:hover::after {\n      background: linear-gradient(\n        to top,\n        rgba(8,14,26,.92) 0%,\n        rgba(8,14,26,.4) 55%,\n        rgba(14,108,246,.08) 100%\n      );\n    }\n    \/* top accent bar on hover *\/\n    .product-bento-card::before {\n      content: '';\n      position: absolute;\n      top: 0; left: 0; right: 0;\n      height: 3px;\n      background: linear-gradient(90deg, var(--blue), var(--cyan));\n      z-index: 3;\n      transform: scaleX(0);\n      transform-origin: left;\n      transition: transform .32s ease;\n    }\n    .product-bento-card:hover::before { transform: scaleX(1); }\n    .product-bento-label {\n      position: absolute;\n      bottom: 0; left: 0; right: 0;\n      z-index: 2;\n      padding: 16px 18px 18px;\n    }\n    .product-bento-card h3 {\n      font-size: .92rem;\n      font-weight: 700;\n      color: var(--white);\n      line-height: 1.3;\n      margin: 0;\n      transition: color .2s;\n    }\n    .product-bento-card:hover h3 { color: #a8d4ff; }\n    .product-bento-num { display: none; }\n    @media (max-width: 900px) {\n      .products-bento { grid-template-columns: repeat(2, 1fr); }\n    }\n    @media (max-width: 480px) {\n      .products-bento { grid-template-columns: 1fr; }\n    }\n\n    \/* \u2500\u2500 SECTION 6 \u2014 WHY HARSLE \u2500\u2500 *\/\n    #why-harsle { background: var(--dark2); }\n    .why-harsle-grid {\n      display: grid;\n      grid-template-columns: repeat(3, 1fr);\n      gap: 24px;\n    }\n    .harsle-card {\n      display: flex;\n      gap: 18px;\n      align-items: flex-start;\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 14px;\n      padding: 28px;\n      transition: border-color .2s, transform .2s;\n    }\n    .harsle-card:hover {\n      border-color: rgba(0,212,255,.35);\n      transform: translateY(-4px);\n    }\n    .harsle-icon {\n      width: 44px; height: 44px;\n      min-width: 44px;\n      background: linear-gradient(135deg, var(--blue), #3b82f6);\n      border-radius: 10px;\n      display: flex; align-items: center; justify-content: center;\n      font-size: 1.25rem;\n    }\n    .harsle-text h3 {\n      font-size: .97rem;\n      font-weight: 700;\n      color: var(--white);\n      margin-bottom: 4px;\n    }\n    .harsle-text .harsle-value {\n      font-size: .82rem;\n      color: var(--cyan);\n      font-weight: 600;\n      margin-bottom: 4px;\n    }\n    .harsle-text p {\n      font-size: .82rem;\n      color: #6a8aaa;\n    }\n\n    \/* \u2500\u2500 SECTION 7 \u2014 LAYOUT \u2500\u2500 *\/\n    #layout { background: var(--dark); }\n\n    \/* \u2500\u2500 Desktop snake flow \u2500\u2500 *\/\n    .snake-flow-desktop { display: block; }\n    .snake-flow-label {\n      font-size: .72rem;\n      font-weight: 700;\n      color: #5f7f9f;\n      letter-spacing: 1px;\n      margin-bottom: 28px;\n    }\n    .snake-grid {\n      display: grid;\n      grid-template-columns: 1fr 56px 1fr 56px 1fr;\n      grid-template-rows: auto 44px auto 44px auto;\n      align-items: center;\n      row-gap: 0;\n      column-gap: 0;\n    }\n    \/* boxes *\/\n    .sf-box {\n      background: #102345;\n      border: 1.5px solid rgba(0,212,255,.38);\n      border-radius: 10px;\n      padding: 16px 20px;\n      transition: border-color .2s, background .2s;\n    }\n    .sf-box:hover { border-color: var(--cyan); background: #122a50; }\n    .sf-box.sf-output {\n      background: #152e1a;\n      border-color: rgba(245,166,35,.5);\n    }\n    .sf-box-header {\n      display: flex;\n      align-items: baseline;\n      gap: 8px;\n      margin-bottom: 4px;\n    }\n    .sf-num {\n      font-size: .68rem;\n      font-weight: 800;\n      color: var(--cyan);\n      letter-spacing: 1.5px;\n      flex-shrink: 0;\n    }\n    .sf-output .sf-num { color: var(--gold); }\n    .sf-title {\n      font-size: .9rem;\n      font-weight: 800;\n      color: #fff;\n      line-height: 1.25;\n    }\n    .sf-sub {\n      font-size: .75rem;\n      color: #6a8aaa;\n    }\n    \/* horizontal arrows \u2014 block arrow style *\/\n    .sf-ha {\n      display: flex; align-items: center; justify-content: center;\n      font-size: 0;\n    }\n    .sf-ha::after {\n      content: '';\n      display: block;\n      width: 46px; height: 22px;\n      background: var(--cyan);\n      clip-path: polygon(0% 28%, 64% 28%, 64% 0%, 100% 50%, 64% 100%, 64% 72%, 0% 72%);\n    }\n    \/* left-pointing variant *\/\n    .sf-ha.sf-left::after {\n      clip-path: polygon(100% 28%, 36% 28%, 36% 0%, 0% 50%, 36% 100%, 36% 72%, 100% 72%);\n    }\n    \/* vertical arrows \u2014 block arrow style *\/\n    .sf-va {\n      display: flex; align-items: center; justify-content: center;\n      font-size: 0;\n    }\n    .sf-va::after {\n      content: '';\n      display: block;\n      width: 22px; height: 46px;\n      background: var(--cyan);\n      clip-path: polygon(28% 0%, 72% 0%, 72% 64%, 100% 64%, 50% 100%, 0% 64%, 28% 64%);\n    }\n    \/* grid positions *\/\n    .sf-r1c1 { grid-column:1; grid-row:1; }\n    .sf-r1c2 { grid-column:2; grid-row:1; }\n    .sf-r1c3 { grid-column:3; grid-row:1; }\n    .sf-r1c4 { grid-column:4; grid-row:1; }\n    .sf-r1c5 { grid-column:5; grid-row:1; }\n    .sf-r2c5 { grid-column:5; grid-row:2; }\n    .sf-r3c5 { grid-column:5; grid-row:3; }\n    .sf-r3c4 { grid-column:4; grid-row:3; }\n    .sf-r3c3 { grid-column:3; grid-row:3; }\n    .sf-r3c2 { grid-column:2; grid-row:3; }\n    .sf-r3c1 { grid-column:1; grid-row:3; }\n    .sf-r4c1 { grid-column:1; grid-row:4; }\n    .sf-r5c1 { grid-column:1; grid-row:5; }\n    .sf-r5c2 { grid-column:2; grid-row:5; }\n    .sf-r5c3 { grid-column:3; grid-row:5; }\n    .sf-r5c4 { grid-column:4; grid-row:5; }\n    .sf-r5c5 { grid-column:5; grid-row:5; }\n\n    \/* Mobile: arrow flow *\/\n    .factory-layout-mobile { display: none; }\n    @media (max-width: 860px) {\n      .snake-flow-desktop { display: none; }\n      .factory-layout-mobile { display: block; }\n    }\n    .layout-flow-mobile {\n      display: flex;\n      flex-direction: column;\n      align-items: stretch;\n      gap: 0;\n    }\n    \/* one row = two cards + horizontal arrow *\/\n    .layout-flow-row {\n      display: grid;\n      grid-template-columns: 1fr 28px 1fr;\n      align-items: center;\n      gap: 0;\n    }\n    .layout-flow-card {\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 10px;\n      padding: 12px 14px;\n    }\n    .layout-flow-card.is-output {\n      border-color: rgba(245,166,35,.5);\n      background: rgba(245,166,35,.06);\n    }\n    .layout-flow-card-header {\n      display: flex;\n      align-items: baseline;\n      gap: 6px;\n      margin-bottom: 3px;\n    }\n    .layout-flow-num {\n      font-size: .62rem;\n      font-weight: 800;\n      color: var(--cyan);\n      letter-spacing: 1px;\n      flex-shrink: 0;\n    }\n    .layout-flow-card.is-output .layout-flow-num { color: var(--gold); }\n    .layout-flow-name {\n      font-size: .8rem;\n      font-weight: 700;\n      color: var(--white);\n      line-height: 1.25;\n    }\n    .layout-flow-sub {\n      font-size: .7rem;\n      color: #5a7a9a;\n      margin-top: 2px;\n    }\n    \/* horizontal arrow between two cards \u2014 block arrow *\/\n    .layout-flow-h-arrow {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 0;\n    }\n    .layout-flow-h-arrow::after {\n      content: '';\n      display: block;\n      width: 28px; height: 14px;\n      background: var(--cyan);\n      clip-path: polygon(0% 28%, 64% 28%, 64% 0%, 100% 50%, 64% 100%, 64% 72%, 0% 72%);\n    }\n    \/* vertical arrow between rows \u2014 block arrow *\/\n    .layout-flow-v-arrow {\n      display: flex;\n      justify-content: center;\n      align-items: center;\n      height: 28px;\n      font-size: 0;\n    }\n    .layout-flow-v-arrow::after {\n      content: '';\n      display: block;\n      width: 14px; height: 28px;\n      background: var(--cyan);\n      clip-path: polygon(28% 0%, 72% 0%, 72% 64%, 100% 64%, 50% 100%, 0% 64%, 28% 64%);\n    }\n    \/* last row: single card full width *\/\n    .layout-flow-row-single {\n      display: flex;\n      justify-content: center;\n    }\n    .layout-flow-row-single .layout-flow-card {\n      width: 60%;\n      text-align: center;\n    }\n    \/* \u2500\u2500 SECTION 8 \u2014 VIDEOS \u2500\u2500 *\/\n    #videos { background: var(--dark2); }\n    .videos-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n      gap: 24px;\n    }\n    .video-card {\n      background: var(--card-bg);\n      border: 1px solid var(--border);\n      border-radius: 16px;\n      overflow: hidden;\n    }\n    .video-embed {\n      position: relative;\n      padding-bottom: 56.25%;\n      height: 0;\n      background: #000;\n    }\n    .video-placeholder {\n      position: absolute;\n      inset: 0;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      gap: 12px;\n      width: 100%;\n      border: none;\n      background: #0a1628;\n      cursor: pointer;\n      overflow: hidden;\n    }\n    .video-thumb {\n      position: absolute;\n      inset: 0;\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n      opacity: .72;\n      transition: transform .35s, opacity .35s;\n    }\n    .play-btn {\n      position: relative;\n      z-index: 2;\n      width: 64px; height: 64px;\n      background: rgba(255,255,255,.15);\n      border: 2px solid rgba(255,255,255,.7);\n      border-radius: 50%;\n      backdrop-filter: blur(6px);\n      display: flex; align-items: center; justify-content: center;\n      font-size: 1.5rem;\n      transition: background .2s, transform .2s;\n    }\n    .play-btn::before {\n      content: '';\n      width: 0;\n      height: 0;\n      border-top: 12px solid transparent;\n      border-bottom: 12px solid transparent;\n      border-left: 18px solid #fff;\n      margin-left: 4px;\n    }\n    .video-placeholder::after {\n      content: '';\n      position: absolute;\n      inset: 0;\n      background: linear-gradient(180deg, rgba(8,14,26,.1), rgba(8,14,26,.72));\n      z-index: 1;\n    }\n    .video-placeholder:hover .play-btn {\n      background: rgba(255,255,255,.28);\n      transform: scale(1.1);\n    }\n    .video-placeholder:hover .video-thumb {\n      opacity: .9;\n      transform: scale(1.04);\n    }\n    .video-placeholder span { display: none; }\n    .video-body { padding: 20px; }\n    .video-body h3 {\n      font-size: .95rem;\n      font-weight: 700;\n      color: var(--white);\n      margin-bottom: 4px;\n    }\n    .video-body p { font-size: .8rem; color: #6a8aaa; }\n\n    \/* \u2500\u2500 SECTION 9 \u2014 FAQ \u2500\u2500 *\/\n    #faq { background: var(--dark); }\n    .faq-list {\n      max-width: 1120px;\n      margin: 0 auto;\n      display: grid;\n      grid-template-columns: repeat(2, minmax(0, 1fr));\n      gap: 24px;\n      align-items: start;\n    }\n    .faq-column {\n      display: flex;\n      flex-direction: column;\n      gap: 14px;\n      align-items: stretch;\n    }\n    .faq-item {\n      border: 1px solid var(--border);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .faq-q {\n      width: 100%;\n      background: var(--card-bg);\n      color: var(--white);\n      font-size: .97rem;\n      font-weight: 600;\n      padding: 22px 28px;\n      text-align: left;\n      border: none;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 16px;\n      transition: background .2s;\n    }\n    .faq-q:hover { background: #0f2248; }\n    .faq-q .faq-chevron {\n      font-size: .85rem;\n      color: var(--cyan);\n      transition: transform .25s;\n      flex-shrink: 0;\n    }\n    .faq-q.open .faq-chevron { transform: rotate(180deg); }\n    .faq-a {\n      display: none;\n      padding: 0 28px 22px;\n      background: var(--card-bg);\n      font-size: .9rem;\n      color: #6a8aaa;\n      border-top: 1px solid var(--border);\n      padding-top: 18px;\n    }\n    .faq-a.open { display: block; }\n\n    \/* \u2500\u2500 SECTION 10 \u2014 FINAL CTA \u2500\u2500 *\/\n    #final-cta {\n      position: relative;\n      padding: 120px 0;\n      width: 100%;\n      background: var(--dark2);\n      overflow: hidden;\n      text-align: center;\n    }\n    .final-cta-bg {\n      position: absolute;\n      inset: 0;\n      background:\n        radial-gradient(ellipse 80% 60% at 50% 50%, rgba(14,108,246,.18) 0%, transparent 70%),\n        radial-gradient(ellipse 40% 40% at 80% 20%, rgba(0,212,255,.08) 0%, transparent 60%);\n      pointer-events: none;\n    }\n    .final-cta-content { position: relative; z-index: 2; max-width: 960px; margin: 0 auto; }\n    #final-cta h2 {\n      font-size: clamp(1.8rem, 4vw, 3rem);\n      font-weight: 900;\n      color: var(--white);\n      line-height: 1.18;\n      margin-bottom: 20px;\n    }\n    #final-cta p {\n      font-size: 1rem;\n      color: #6a8aaa;\n      margin-bottom: 40px;\n    }\n    #final-cta .btn-group { justify-content: center; }\n    .cta-highlights {\n      display: grid;\n      grid-template-columns: repeat(4, 1fr);\n      gap: 40px;\n      margin-top: 48px;\n    }\n    .cta-highlight { text-align: center; }\n    .cta-highlight-icon {\n      font-size: 1.5rem;\n      margin-bottom: 6px;\n    }\n    .cta-highlight-text {\n      font-size: .8rem;\n      color: #6a8aaa;\n      line-height: 1.45;\n    }\n    .quote-modal {\n      position: fixed;\n      inset: 0;\n      z-index: 1000;\n      display: none;\n      align-items: center;\n      justify-content: center;\n      padding: 24px;\n      background: rgba(8,14,26,.72);\n      backdrop-filter: blur(10px);\n    }\n    .quote-modal.open { display: flex; }\n    .quote-modal-panel {\n      position: relative;\n      width: min(720px, 100%);\n      max-height: 88vh;\n      overflow: auto;\n      background: #ffffff;\n      border: none;\n      border-radius: 10px;\n      padding: 40px 44px 36px;\n      box-shadow: 0 20px 60px rgba(0,0,0,.28);\n    }\n    .quote-modal-close {\n      position: absolute;\n      top: 14px;\n      right: 14px;\n      width: 36px;\n      height: 36px;\n      border: 1px solid #e2e8f0;\n      border-radius: 50%;\n      background: #fff;\n      color: #64748b;\n      font-size: 1.2rem;\n      line-height: 1;\n      cursor: pointer;\n      z-index: 2;\n    }\n    .quote-modal-close:hover { border-color: #94a3b8; color: #334155; }\n    .quote-shortcode {\n      color: #3d4f6f;\n      text-align: left;\n    }\n    .quote-modal-panel .elementor-form-fields-wrapper {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 18px 24px;\n    }\n    .quote-modal-panel .elementor-field-group {\n      margin: 0;\n      padding: 0;\n      width: 100%;\n    }\n    .quote-modal-panel .elementor-field-group.elementor-col-50 {\n      width: calc(50% - 12px);\n    }\n    .quote-modal-panel .elementor-field-label {\n      display: block;\n      margin-bottom: 8px;\n      font-size: .95rem;\n      font-weight: 500;\n      color: #3d4f6f;\n      line-height: 1.3;\n    }\n    .quote-modal-panel .elementor-mark-required .elementor-field-label::after {\n      content: ' *';\n      color: #e53935;\n      font-weight: 600;\n    }\n    .quote-modal-panel .elementor-field-textual {\n      width: 100%;\n      padding: 11px 14px;\n      border: 1px solid #e2e8f0;\n      border-radius: 6px;\n      background: #fff;\n      color: #1e293b;\n      font-family: inherit;\n      font-size: .95rem;\n      line-height: 1.4;\n      transition: border-color .2s;\n    }\n    .quote-modal-panel .elementor-field-textual:focus {\n      outline: none;\n      border-color: #94a3b8;\n    }\n    .quote-modal-panel textarea.elementor-field-textual {\n      min-height: 140px;\n      resize: vertical;\n    }\n    .quote-modal-panel .e-form__buttons {\n      display: flex;\n      justify-content: center;\n      margin-top: 8px;\n      padding-top: 4px;\n    }\n    .quote-modal-panel .elementor-button {\n      min-width: 160px;\n      padding: 14px 40px;\n      border: none;\n      border-radius: 8px;\n      background: #ff7a59 !important;\n      color: #fff !important;\n      font-family: inherit;\n      font-size: .9rem;\n      font-weight: 700;\n      letter-spacing: .04em;\n      text-transform: uppercase;\n      cursor: pointer;\n      transition: background .2s, transform .2s;\n    }\n    .quote-modal-panel .elementor-button:hover {\n      background: #ff6347 !important;\n      transform: translateY(-1px);\n    }\n    @media (max-width: 600px) {\n      .quote-modal-panel { padding: 36px 20px 28px; }\n      .quote-modal-panel .elementor-field-group.elementor-col-50 { width: 100%; }\n    }\n    .video-modal {\n      position: fixed;\n      inset: 0;\n      z-index: 1001;\n      display: none;\n      align-items: center;\n      justify-content: center;\n      padding: 24px;\n      background: rgba(8,14,26,.82);\n      backdrop-filter: blur(10px);\n    }\n    .video-modal.open { display: flex; }\n    .video-modal-panel {\n      position: relative;\n      width: min(980px, 100%);\n      background: #000;\n      border: 1px solid var(--border);\n      border-radius: 14px;\n      box-shadow: 0 24px 80px rgba(0,0,0,.5);\n    }\n    .video-modal-frame {\n      position: relative;\n      padding-bottom: 56.25%;\n      height: 0;\n    }\n    .video-modal-frame iframe {\n      position: absolute;\n      inset: 0;\n      width: 100%;\n      height: 100%;\n      border: none;\n      border-radius: 14px;\n    }\n    .video-modal-close {\n      position: absolute;\n      top: -46px;\n      right: 0;\n      width: 38px;\n      height: 38px;\n      border: 1px solid rgba(255,255,255,.24);\n      border-radius: 50%;\n      background: rgba(255,255,255,.08);\n      color: var(--white);\n      font-size: 1.25rem;\n      cursor: pointer;\n    }\n    .video-modal-close:hover { border-color: var(--cyan); color: var(--cyan); }\n    .video-modal-footer {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      padding: 14px 20px;\n      background: rgba(8,14,26,.9);\n      border-top: 1px solid rgba(0,212,255,.15);\n      border-radius: 0 0 14px 14px;\n      gap: 10px;\n    }\n    .yt-watch-btn {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      background: #ff0000;\n      color: #fff;\n      font-size: .88rem;\n      font-weight: 700;\n      padding: 9px 22px;\n      border-radius: 6px;\n      text-decoration: none;\n      transition: background .2s, transform .2s;\n    }\n    .yt-watch-btn:hover { background: #cc0000; transform: scale(1.03); }\n    .yt-watch-hint {\n      font-size: .78rem;\n      color: #6a8aaa;\n    }\n\n    \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n    @media (max-width: 900px) {\n      section { padding: 72px 0; }\n      .container { padding: 0 24px; }\n      .hero-content { padding: 120px 20px 60px; }\n      .hero-h1 .hero-line { overflow-wrap: break-word; }\n      .hero-sub,\n      .hero-desc { overflow-wrap: break-word; }\n      .hero-stats {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 20px 16px;\n        margin-top: 48px;\n        padding-top: 32px;\n      }\n      .stat-num,\n      .stat-label { white-space: normal; }\n      .products-grid { grid-template-columns: repeat(4, 1fr); }\n      .machines-grid { grid-template-columns: 1fr; }\n      .machine-card { grid-template-columns: 1fr; }\n      .machine-img,\n      .machine-img-placeholder {\n        height: auto;\n        min-height: 0;\n        aspect-ratio: 4 \/ 3;\n      }\n      .why-harsle-grid { grid-template-columns: repeat(2, 1fr); }\n      .process-flow { grid-template-columns: repeat(2, 1fr); }\n      .faq-list { grid-template-columns: 1fr; }\n      .cta-highlights { gap: 24px; }\n      #final-cta { padding: 80px 0; }\n      #final-cta .final-cta-content { padding: 0 24px; }\n    }\n    @media (max-width: 560px) {\n      .hero-content { padding: 86px 20px 48px; }\n      .hero-badge { margin-bottom: 18px; }\n      .hero-h1 { font-size: clamp(1.72rem, 8vw, 2.2rem); margin-bottom: 18px; }\n      .hero-sub { margin-bottom: 14px; }\n      .hero-tags {\n        gap: 8px;\n        margin-bottom: 24px;\n      }\n      .hero-desc { margin-bottom: 28px; }\n      .products-grid { grid-template-columns: repeat(2, 1fr); }\n      .product-img { aspect-ratio: 4 \/ 3; }\n      .why-harsle-grid { grid-template-columns: 1fr; }\n      .process-flow { grid-template-columns: 1fr; }\n      .cta-highlights { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }\n      .cta-highlight-text { font-size: .68rem; }\n      .hero-stats {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n        gap: 16px;\n        margin-top: 36px;\n        padding-top: 24px;\n      }\n      .stat-num { font-size: clamp(1.1rem, 5vw, 1.6rem); white-space: normal; }\n      .stat-label { font-size: .72rem; line-height: 1.25; letter-spacing: 0; }\n    }\n\n    \/* \u2550\u2550 WordPress Full-Width Breakout \u2550\u2550\n       Forces the embedded block to span 100vw regardless of theme container width.\n       Works with Gutenberg Custom HTML block and Classic Editor. *\/\n    #harsle-lp {\n      width: 100vw;\n      margin-left: calc(50% - 50vw);\n      overflow-x: hidden;\n    }\n    \/* Override common WordPress theme containers *\/\n    html body .entry-content:has(#harsle-lp),\n    html body .post-content:has(#harsle-lp),\n    html body .page-content:has(#harsle-lp),\n    html body .wp-block-html:has(#harsle-lp) {\n      max-width: none !important;\n      width: 100% !important;\n      padding-left: 0 !important;\n      padding-right: 0 !important;\n      margin-left: 0 !important;\n      margin-right: 0 !important;\n    }\n    \/* Keep primary CTA text white when embedded in WordPress themes *\/\n    html body #harsle-lp .btn-primary,\n    html body #harsle-lp a.btn-primary,\n    html body #harsle-lp button.btn-primary,\n    html body #harsle-lp a.btn-primary:visited,\n    html body #harsle-lp .btn-primary *,\n    html body .entry-content #harsle-lp .btn-primary,\n    html body .entry-content #harsle-lp .btn-primary *,\n    html body .wp-block-html #harsle-lp .btn-primary,\n    html body .wp-block-html #harsle-lp .btn-primary * {\n      color: #fff !important;\n      -webkit-text-fill-color: #fff !important;\n    }\n    html body #harsle-lp .btn-primary:hover,\n    html body #harsle-lp .btn-primary:hover *,\n    html body #harsle-lp .btn-primary:focus,\n    html body #harsle-lp .btn-primary:focus *,\n    html body #harsle-lp .btn-primary:focus-visible,\n    html body #harsle-lp .btn-primary:active,\n    html body #harsle-lp .btn-primary:active *,\n    html body #harsle-lp a.btn-primary:hover,\n    html body #harsle-lp a.btn-primary:hover *,\n    html body #harsle-lp a.btn-primary:focus,\n    html body #harsle-lp a.btn-primary:focus-visible,\n    html body #harsle-lp a.btn-primary:active,\n    html body #harsle-lp button.btn-primary:hover,\n    html body #harsle-lp button.btn-primary:hover *,\n    html body #harsle-lp button.btn-primary:focus,\n    html body #harsle-lp button.btn-primary:focus-visible,\n    html body #harsle-lp button.btn-primary:active,\n    html body .entry-content #harsle-lp .btn-primary:hover,\n    html body .entry-content #harsle-lp .btn-primary:hover *,\n    html body .entry-content #harsle-lp a.btn-primary:hover,\n    html body .wp-block-html #harsle-lp .btn-primary:hover,\n    html body .wp-block-html #harsle-lp .btn-primary:hover *,\n    html body .wp-block-html #harsle-lp a.btn-primary:hover {\n      color: #fff !important;\n      -webkit-text-fill-color: #fff !important;\n    }\n    \/* Process step tabs \u2014 keep dark card style on hover (WP themes often force white button:hover) *\/\n    html body #harsle-lp .process-tab-btn,\n    html body #harsle-lp button.process-tab-btn,\n    html body .entry-content #harsle-lp .process-tab-btn,\n    html body .entry-content #harsle-lp button.process-tab-btn,\n    html body .wp-block-html #harsle-lp .process-tab-btn,\n    html body .wp-block-html #harsle-lp button.process-tab-btn {\n      background: var(--card-bg) !important;\n      border: 1px solid var(--border) !important;\n      color: #6a8aaa !important;\n      box-shadow: none !important;\n    }\n    html body #harsle-lp .process-tab-btn:hover,\n    html body #harsle-lp .process-tab-btn:focus,\n    html body #harsle-lp .process-tab-btn:focus-visible,\n    html body #harsle-lp button.process-tab-btn:hover,\n    html body #harsle-lp button.process-tab-btn:focus,\n    html body #harsle-lp button.process-tab-btn:focus-visible,\n    html body .entry-content #harsle-lp .process-tab-btn:hover,\n    html body .entry-content #harsle-lp button.process-tab-btn:hover,\n    html body .wp-block-html #harsle-lp .process-tab-btn:hover,\n    html body .wp-block-html #harsle-lp button.process-tab-btn:hover {\n      background: var(--card-bg) !important;\n      border-color: rgba(0,212,255,.35) !important;\n      color: var(--text) !important;\n    }\n    html body #harsle-lp .process-tab-btn.active,\n    html body #harsle-lp button.process-tab-btn.active,\n    html body .entry-content #harsle-lp .process-tab-btn.active,\n    html body .wp-block-html #harsle-lp .process-tab-btn.active {\n      background: rgba(14,108,246,.14) !important;\n      border-color: var(--blue) !important;\n      color: var(--white) !important;\n    }\n    html body #harsle-lp .process-tab-btn.active:hover,\n    html body #harsle-lp button.process-tab-btn.active:hover,\n    html body .entry-content #harsle-lp .process-tab-btn.active:hover,\n    html body .wp-block-html #harsle-lp .process-tab-btn.active:hover {\n      background: rgba(14,108,246,.14) !important;\n      border-color: var(--blue) !important;\n      color: var(--white) !important;\n    }\n  <\/style>\n<\/head>\n<body>\n<div id=\"harsle-lp\">\n\n<!-- \u2550\u2550 HERO \u2550\u2550 -->\n<section id=\"hero\">\n  <div class=\"hero-bg\"><\/div>\n  <div class=\"hero-glow\"><\/div>\n  <div class=\"hero-content\">\n    <div class=\"hero-badge\">HARSLE Manufacturing Solutions<\/div>\n    <h1 class=\"hero-h1\">\n      <span class=\"hero-line\">Complete <span class=\"accent\">Battery Energy Storage<\/span><\/span>\n      <span class=\"hero-line\">Cabinet Production Line<\/span>\n    <\/h1>\n    <p class=\"hero-sub\">Turnkey Sheet Metal Line for Outdoor BESS Containers, Commercial ESS Cabinets, PCS Enclosures &amp; Battery Rack Housings<\/p>\n    <div class=\"hero-tags\">\n      <span class=\"hero-tag\">Shearing<\/span>\n      <span class=\"hero-tag\">Panel Bending<\/span>\n      <span class=\"hero-tag\">Vent Louvers<\/span>\n      <span class=\"hero-tag\">IP65 Ready<\/span>\n      <span class=\"hero-tag\">Grid-Scale ESS<\/span>\n    <\/div>\n    <p class=\"hero-desc\">\n      Global renewable energy expansion and grid-scale storage projects are driving demand for precision-manufactured battery energy storage cabinets. HARSLE designs complete production lines for BESS OEMs \u2014 from heavy-gauge shearing and large-panel laser blanking through automatic panel bending, ventilation punching, structural welding, outdoor-rated coating, and assembly \u2014 scaled to your container size, IP rating, and daily output target.\n    <\/p>\n    <div class=\"btn-group\">\n      <button type=\"button\" class=\"btn-primary\" onclick=\"openQuoteModal()\">Get A Quote<\/button>\n      <a href=\"https:\/\/www.harsle.com\/products\/\" class=\"btn-secondary\" style=\"border: 2px solid rgba(255,255,255,.7); color:#fff;\">Vell Products<\/a>\n    <\/div>\n    <div class=\"hero-stats\">\n      <div class=\"stat-item\">\n        <span class=\"stat-num\">1\u20133mm<\/span>\n        <span class=\"stat-label\">Typical Sheet Gauge<\/span>\n      <\/div>\n      <div class=\"stat-item\">\n        <span class=\"stat-num\">IP65<\/span>\n        <span class=\"stat-label\">Outdoor Enclosure Class<\/span>\n      <\/div>\n      <div class=\"stat-item\">\n        <span class=\"stat-num\">BESS \/ PCS<\/span>\n        <span class=\"stat-label\">Cabinet Types<\/span>\n      <\/div>\n      <div class=\"stat-item\">\n        <span class=\"stat-num\">Turnkey<\/span>\n        <span class=\"stat-label\">Line Engineering<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 2 \u2014 WHY GROWING \u2550\u2550 -->\n<section id=\"why\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Market Trend<\/span>\n      <h2 class=\"section-title\">Why Battery Energy Storage Cabinet Manufacturing Is Growing<\/h2>\n      <p class=\"section-sub\">Solar, wind, and grid modernization are accelerating BESS deployment worldwide. These market drivers shape modern energy storage enclosure production lines.<\/p>\n    <\/div>\n    <div class=\"why-grid\">\n      <div class=\"why-card\">\n        <img decoding=\"async\" class=\"why-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Grid-Scale-ESS-Deployment.jpg\" alt=\"Grid-Scale ESS Deployment\" loading=\"lazy\" \/>\n        <div class=\"why-body\">\n          <h3>Grid-Scale ESS Deployment<\/h3>\n          <p>Utility-scale battery storage projects require thousands of outdoor-rated cabinets and container enclosures \u2014 driving investment in automated sheet metal lines that can produce large panels with repeatable dimensional accuracy.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"why-card\">\n        <img decoding=\"async\" class=\"why-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Solar-Wind-Storage-Integration.jpg\" alt=\"Solar and Wind Storage Integration\" loading=\"lazy\" \/>\n        <div class=\"why-body\">\n          <h3>Solar &amp; Wind Storage Integration<\/h3>\n          <p>Renewable power plants pair battery storage with generation assets to stabilize output. PCS enclosures, BMS panel housings, and battery rack cabinets share the same forming and coating processes on integrated BESS lines.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"why-card\">\n        <img decoding=\"async\" class=\"why-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Commercial-Industrial-ESS-Growth.jpg\" alt=\"Commercial and Industrial ESS Growth\" loading=\"lazy\" \/>\n        <div class=\"why-body\">\n          <h3>Commercial &amp; Industrial ESS Growth<\/h3>\n          <p>Factories, data centers, and commercial buildings deploy on-site battery cabinets for peak shaving and backup power \u2014 requiring IP-rated enclosures with ventilation louvers, cable glands, and fire-safe structural design.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"why-card\">\n        <img decoding=\"async\" class=\"why-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Fire-Safety-Enclosure-Standards.jpg\" alt=\"Fire Safety and Enclosure Standards\" loading=\"lazy\" \/>\n        <div class=\"why-body\">\n          <h3>Fire Safety &amp; Enclosure Standards<\/h3>\n          <p>BESS cabinets must meet strict IP, NEMA, and thermal management requirements. Precision punching for vent patterns, gasket-ready door flanges, and weld-quality frames are now standard production capabilities.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 3 \u2014 PROCESS \u2550\u2550 -->\n<section id=\"process\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Manufacturing Flow<\/span>\n      <h2 class=\"section-title\">Battery Energy Storage Cabinet Manufacturing Process<\/h2>\n      <p class=\"section-sub\">From raw sheet metal to a finished BESS cabinet \u2014 large-panel blanking, box forming, ventilation punching, structural welding, outdoor coating, and assembly in one integrated flow.<\/p>\n    <\/div>\n\n    <!-- Step Tabs -->\n    <div class=\"process-tabs\" id=\"process-tabs\"><\/div>\n\n    <!-- Progress Bar -->\n    <div class=\"process-progress-wrap\">\n      <div class=\"process-progress-bar\" id=\"process-progress\"><\/div>\n    <\/div>\n\n    <!-- Feature Panel -->\n    <div class=\"process-panel\">\n      <div class=\"process-panel-img-wrap\">\n        <img decoding=\"async\" class=\"process-panel-img\" id=\"process-img\" src=\"\" alt=\"\">\n        <div class=\"process-panel-step-badge\" id=\"process-badge\">Step 01 \/ 09<\/div>\n        <div class=\"process-panel-nav\">\n          <button onclick=\"stepProcess(-1)\" aria-label=\"Previous step\">&#8592;<\/button>\n          <button onclick=\"stepProcess(1)\" aria-label=\"Next step\">&#8594;<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"process-panel-info\">\n        <div class=\"process-panel-label\" id=\"process-label\">Manufacturing Flow<\/div>\n        <div class=\"process-panel-title\" id=\"process-title\"><\/div>\n        <div class=\"process-panel-desc\" id=\"process-desc\"><\/div>\n        <ul class=\"process-panel-bullets\" id=\"process-bullets\"><\/ul>\n        <div class=\"process-panel-counter\" id=\"process-counter\"><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<script>\n  const processSteps = [\n    {\n      name: 'Raw Sheet Metal',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Raw-Sheet-Metal.jpg',\n      desc: 'BESS cabinet production starts with cold-rolled galvanized steel, stainless steel, or aluminum sheet. Material is sheared to line-ready blanks and inspected for flatness before large-panel cutting and forming.',\n      bullets: ['Galvanized steel most common for outdoor BESS cabinets', 'Typical thickness: 1.5mm \u2013 3.0mm for container bodies', 'Flatness check before laser cutting and panel bending']\n    },\n    {\n      name: 'Fiber Laser Cutting',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Fiber-Laser-Cutting-1.jpg',\n      desc: 'Fiber laser cutting blanks large cabinet side panels, hinged doors, base trays, cable gland plates, and mounting brackets with \u00b10.1mm accuracy \u2014 the precision step for every battery storage enclosure line.',\n      bullets: ['Door, side panel, and base tray blanking', 'Cable gland, window, and hinge cutouts', 'Galvanized, stainless, and mild steel processing']\n    },\n    {\n      name: 'Automatic Panel Bending',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Automatic-Panel-Bending.jpg',\n      desc: 'The core forming step on BESS lines \u2014 automatic panel benders form four-side cabinet bodies, access doors, and PCS covers in one pass with consistent flange width for gasket-ready outdoor sealing.',\n      bullets: ['One-pass U-box and cabinet body forming', 'Door and cover production with \u00b10.1\u00b0 accuracy', 'Standardized ESS cabinet models at high volume']\n    },\n    {\n      name: 'CNC Press Brake',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Bending-1.jpg',\n      desc: 'Press brakes complement the panel bender \u2014 forming battery rack channels, base frame stiffeners, mounting brackets, and deep structural sections that exceed single-cycle panel bender capacity.',\n      bullets: ['Battery rack channel and stiffener bending', 'Base frame and support bracket forming', 'Automatic crowning for long container panels']\n    },\n    {\n      name: 'CNC Turret Punching',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/punching-2.jpg',\n      desc: 'CNC turret punching produces ventilation louvers, cable entry patterns, and repeated mounting holes on BESS doors and side panels \u2014 critical for thermal management and high-volume ESS production.',\n      bullets: ['Vent louver and airflow hole patterns', 'Cable gland and connector mounting holes', 'Batch punching for standardized cabinet models']\n    },\n    {\n      name: 'Welding',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Welding-1.jpg',\n      desc: 'MIG, TIG, and laser welding join cabinet frames, battery rack brackets, and structural reinforcements \u2014 delivering the load-bearing strength required for outdoor container and commercial ESS deployments.',\n      bullets: ['Frame corner and rack bracket welding', 'Low-distortion laser weld on visible seams', 'Post-weld dimension check before coating']\n    },\n    {\n      name: 'Grinding & Deburring',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Grinding-Deburring-1.jpg',\n      desc: 'All laser-cut edges and weld seams are deburred and ground smooth \u2014 essential for gasket sealing surfaces, safe cable routing, and uniform powder coating on outdoor-rated BESS enclosures.',\n      bullets: ['Burr-free edges on door flange sealing surfaces', 'Flush weld grinding on structural joints', 'Surface prep before phosphating or coating']\n    },\n    {\n      name: 'Powder Coating',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Powder-Coating-3.jpg',\n      desc: 'Electrostatic powder coating with curing oven delivers corrosion protection for outdoor BESS containers and commercial ESS cabinets \u2014 typically RAL7035 or custom colors with 500+ hour salt-spray rated finishes.',\n      bullets: ['Outdoor-rated corrosion protection finishes', 'Pre-treatment: degreasing and phosphating', 'Even film build on deep cabinet sections']\n    },\n    {\n      name: 'Finished BESS Cabinet',\n      img: 'https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Finished-BESS-Cabinet.jpg',\n      desc: 'Completed battery energy storage cabinets, outdoor container enclosures, and PCS housings pass final inspection \u2014 door alignment, vent pattern verification, and dimensional QC before export packing.',\n      bullets: ['Door gap and gasket flange verification', 'Vent pattern and cable entry position check', 'Export crate packing for overseas BESS projects']\n    }\n  ];\n\n  let currentStep = 0;\n\n  function renderProcessTabs() {\n    const tabsEl = document.getElementById('process-tabs');\n    tabsEl.innerHTML = processSteps.map((s, i) => `\n      <button class=\"process-tab-btn ${i === 0 ? 'active' : ''}\" onclick=\"goToStep(${i})\">\n        <span class=\"process-tab-num\">${String(i + 1).padStart(2, '0')}<\/span>\n        <span>${s.name}<\/span>\n      <\/button>\n    `).join('');\n  }\n\n  function updateProcessPanel(idx, animate) {\n    const step = processSteps[idx];\n    const img = document.getElementById('process-img');\n\n    if (animate) {\n      img.classList.add('fade');\n      setTimeout(() => {\n        img.src = step.img;\n        img.alt = step.name;\n        img.classList.remove('fade');\n      }, 300);\n    } else {\n      img.src = step.img;\n      img.alt = step.name;\n    }\n\n    document.getElementById('process-badge').textContent  = `Step ${String(idx + 1).padStart(2, '0')} \/ ${String(processSteps.length).padStart(2, '0')}`;\n    document.getElementById('process-label').textContent  = 'Manufacturing Flow';\n    document.getElementById('process-title').textContent  = step.name;\n    document.getElementById('process-desc').textContent   = step.desc;\n    document.getElementById('process-bullets').innerHTML  = step.bullets.map(b => `<li class=\"process-panel-bullet\">${b}<\/li>`).join('');\n    document.getElementById('process-counter').innerHTML  =\n      `<strong>${idx + 1}<\/strong> of <strong>${processSteps.length}<\/strong> production steps &nbsp;\u00b7&nbsp; ${processSteps.slice(idx + 1).map(s => s.name).slice(0, 2).join(' \u2192 ')}${idx < processSteps.length - 2 ? ' \u2192\u2026' : ''}`;\n\n    \/\/ Progress bar\n    document.getElementById('process-progress').style.width = `${((idx + 1) \/ processSteps.length) * 100}%`;\n\n    \/\/ Tabs active state\n    document.querySelectorAll('.process-tab-btn').forEach((btn, i) => {\n      btn.classList.toggle('active', i === idx);\n    });\n\n    currentStep = idx;\n  }\n\n  function goToStep(idx) { updateProcessPanel(idx, true); }\n  function stepProcess(dir) {\n    const next = (currentStep + dir + processSteps.length) % processSteps.length;\n    updateProcessPanel(next, true);\n  }\n\n  renderProcessTabs();\n  updateProcessPanel(0, false);\n<\/script>\n\n<!-- \u2550\u2550 SECTION 4 \u2014 MACHINES \u2550\u2550 -->\n<section id=\"machines\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Equipment Solutions<\/span>\n      <h2 class=\"section-title\">Machines for Battery Energy Storage Cabinet Lines<\/h2>\n      <p class=\"section-sub\">Six machines arranged for BESS cabinet lines \u2014 shearing and laser blanking first, automatic panel bender as the core forming station, then press brake, turret punch for ventilation, and laser weld for structural frames.<\/p>\n    <\/div>\n    <div class=\"machines-list\">\n\n      <!-- Machine 1 \u2014 Guillotine Shearing -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Guillotine-Shearing-Machine.png\" alt=\"Guillotine Shearing Machine\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Shearing<\/div>\n          <h3>Guillotine Shearing Machine<\/h3>\n          <div class=\"machine-series\">HARSLE PrimeShear \/ QC12Y Series<\/div>\n          <p class=\"machine-desc\">Front-end of the BESS line \u2014 shears galvanized steel, stainless, and aluminum coils into flat blanks sized for large-panel laser cutting and automatic panel bending stations downstream.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">Heavy-Gauge Sheet to Line-Ready Blanks<\/div>\n            <div class=\"machine-feature\">Clean Edge \u00b7 Minimal Sheet Distortion<\/div>\n            <div class=\"machine-feature\">Steady Feed for 1.5\u20133.0mm BESS Cabinet Sheet<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/shearing-machine\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Machine 2 \u2014 Fiber Laser Cutting -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/ecocut-3.png\" alt=\"Fiber Laser Cutting Machine\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Laser Cutting<\/div>\n          <h3>Fiber Laser Cutting Machine<\/h3>\n          <div class=\"machine-series\">HARSLE EcoCut \/ ProCut Series<\/div>\n          <p class=\"machine-desc\">Blanks large BESS side panels, access doors, base trays, cable gland plates, and mounting brackets before forming \u2014 the precision step for outdoor container and commercial ESS cabinet lines.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">Large Panel &amp; Door Contour Blanking<\/div>\n            <div class=\"machine-feature\">Cable Gland &amp; Window Cutouts<\/div>\n            <div class=\"machine-feature\">\u00b10.1mm Accuracy \u00b7 Low Material Waste<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/laser-cutting-machine\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Machine 3 \u2014 Automatic Panel Bender -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/panel-Bender-3.png\" alt=\"Panel Bender for BESS Cabinets\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Core Equipment<\/div>\n          <h3>Panel Bender for BESS Cabinets<\/h3>\n          <div class=\"machine-series\">HARSLE AutoBend Series<\/div>\n          <p class=\"machine-desc\">The highest-throughput forming station on a BESS line \u2014 automatically forms four-side cabinet bodies, access doors, and PCS covers in one pass, cutting labor and cycle time on standardized energy storage models.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">One-Pass U-Box &amp; Cabinet Body Forming<\/div>\n            <div class=\"machine-feature\">Door &amp; PCS Cover Production<\/div>\n            <div class=\"machine-feature\">Consistent Flange Width for IP65 Gasket Seams<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/panel-bender\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Machine 4 \u2014 CNC Press Brake -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/MasterBend-3.png\" alt=\"CNC Press Brake\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Press Brake<\/div>\n          <h3>CNC Press Brake<\/h3>\n          <div class=\"machine-series\">MasterBend Series \u2014 DA69T \/ DA66T<\/div>\n          <p class=\"machine-desc\">Complements the panel bender \u2014 forms battery rack channels, base frame stiffeners, mounting brackets, and deep structural sections for outdoor container enclosures beyond single-cycle panel bender capacity.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">Battery Rack Channel &amp; Stiffener Bending<\/div>\n            <div class=\"machine-feature\">Base Frame &amp; Support Bracket Forming<\/div>\n            <div class=\"machine-feature\">Automatic Crowning for Long Container Panels<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/press-brake\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Machine 5 \u2014 CNC Turret Punch Press -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/CNC-Turret-Punch-Press.png\" alt=\"CNC Turret Punch Press\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Punching<\/div>\n          <h3>CNC Turret Punch Press<\/h3>\n          <div class=\"machine-series\">HARSLE D-ES300 Servo Turret Series<\/div>\n          <p class=\"machine-desc\">High-speed ventilation and mounting station on BESS lines \u2014 punches louver patterns, cable entry holes, and connector cutouts across thousands of identical cabinet doors and side panels per shift.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">Vent Louver &amp; Airflow Hole Patterns<\/div>\n            <div class=\"machine-feature\">Cable Gland &amp; Connector Cutouts<\/div>\n            <div class=\"machine-feature\">Auto-Index Turret \u00b7 \u00b10.05mm Accuracy<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/punching-machine\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Machine 6 \u2014 Laser Welding -->\n      <div class=\"machine-row\">\n        <div class=\"machine-img-pane\">\n          <img decoding=\"async\" class=\"machine-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/01\/SmartWeld-1.png\" alt=\"Laser Welding Machine\" loading=\"lazy\" \/>\n        <\/div>\n        <div class=\"machine-body\">\n          <div class=\"machine-badge\">Laser Welding<\/div>\n          <h3>Laser Welding Machine<\/h3>\n          <div class=\"machine-series\">HARSLE SmartWeld Series<\/div>\n          <p class=\"machine-desc\">Joins BESS cabinet frames, battery rack brackets, and structural reinforcements with clean, low-distortion seams \u2014 reducing grinding before outdoor coating and supporting load-bearing ESS assemblies.<\/p>\n          <div class=\"machine-features\">\n            <div class=\"machine-feature\">Cabinet Frame &amp; Rack Bracket Welding<\/div>\n            <div class=\"machine-feature\">Flush Seams \u00b7 Less Post-Grind Work<\/div>\n            <div class=\"machine-feature\">Galvanized &amp; Stainless BESS Structures<\/div>\n          <\/div>\n          <div class=\"machine-btns\">\n            <a href=\"https:\/\/www.harsle.com\/smartweld\/\" target=\"_blank\" class=\"btn-primary\">View Details<\/a>\n          <\/div>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 5 \u2014 PRODUCTS \u2550\u2550 -->\n<section id=\"products\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Product Range<\/span>\n      <h2 class=\"section-title\">Products We Help Manufacture<\/h2>\n      <p class=\"section-sub\">Battery energy storage enclosures and related sheet metal products produced on HARSLE manufacturing lines \u2014 built for grid-scale ESS projects, commercial storage, and renewable energy integrators.<\/p>\n    <\/div>\n    <div class=\"products-bento\">\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Battery-Energy-Storage-Cabinet.jpg\" alt=\"Battery Energy Storage Cabinet\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">01<\/div>\n        <div class=\"product-bento-label\"><h3>Battery Energy Storage Cabinet<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Outdoor-BESS-Container.jpg\" alt=\"Outdoor BESS Container\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">02<\/div>\n        <div class=\"product-bento-label\"><h3>Outdoor BESS Container<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/PCS-Power-Conversion-Enclosure.jpg\" alt=\"PCS Power Conversion Enclosure\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">03<\/div>\n        <div class=\"product-bento-label\"><h3>PCS Power Conversion Enclosure<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Commercial-ESS-Cabinet.jpg\" alt=\"Commercial ESS Cabinet\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">04<\/div>\n        <div class=\"product-bento-label\"><h3>Commercial ESS Cabinet<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Battery-Module-Rack-Frame.jpg\" alt=\"Battery Module Rack Frame\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">05<\/div>\n        <div class=\"product-bento-label\"><h3>Battery Module Rack Frame<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/BMS-Control-Panel-Housing.jpg\" alt=\"BMS Control Panel Housing\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">06<\/div>\n        <div class=\"product-bento-label\"><h3>BMS Control Panel Housing<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Grid-Scale-Storage-Container.jpg\" alt=\"Grid-Scale Storage Container\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">07<\/div>\n        <div class=\"product-bento-label\"><h3>Grid-Scale Storage Container<\/h3><\/div>\n      <\/div>\n\n      <div class=\"product-bento-card\">\n        <img decoding=\"async\" class=\"product-bento-img\" src=\"https:\/\/www.harsle.com\/wp-content\/uploads\/2026\/06\/Outdoor-Weatherproof-Cabinet.jpg\" alt=\"Outdoor Weatherproof Cabinet\" loading=\"lazy\" \/>\n        <div class=\"product-bento-num\">08<\/div>\n        <div class=\"product-bento-label\"><h3>Outdoor Weatherproof Cabinet<\/h3><\/div>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 6 \u2014 WHY HARSLE \u2550\u2550 -->\n<section id=\"why-harsle\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Our Advantages<\/span>\n      <h2 class=\"section-title\">Why Choose HARSLE<\/h2>\n      <p class=\"section-sub\">Engineered for BESS and new energy programs \u2014 large-panel forming, ventilation punching, outdoor-rated coating, and structural weld quality.<\/p>\n    <\/div>\n    <div class=\"why-harsle-grid\">\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\ud83c\udfaf<\/div>\n        <div class=\"harsle-text\">\n          <h3>Precision Enclosure Manufacturing<\/h3>\n          <div class=\"harsle-value\">\u00b10.1mm Cut \u00b7 \u00b10.1\u00b0 Bend<\/div>\n          <p>Laser and panel bender forming tuned for gasket-ready door flanges, cable gland positions, and vent pattern alignment on outdoor BESS cabinets.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\ud83d\udd0b<\/div>\n        <div class=\"harsle-text\">\n          <h3>Energy Storage Enclosure Know-How<\/h3>\n          <div class=\"harsle-value\">BESS \u00b7 PCS \u00b7 BMS Housing<\/div>\n          <p>Process parameters cover outdoor container enclosures, commercial ESS cabinets, PCS housings, and battery rack frames on one integrated sheet metal line.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\ud83c\udfed<\/div>\n        <div class=\"harsle-text\">\n          <h3>Turnkey Line Engineering<\/h3>\n          <div class=\"harsle-value\">Layout \u00b7 Equipment \u00b7 Install<\/div>\n          <p>From shearing and laser cutting through coating and assembly \u2014 one supplier plans, delivers, and commissions the full battery storage cabinet factory.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\ud83c\udf0d<\/div>\n        <div class=\"harsle-text\">\n          <h3>Global Service Network<\/h3>\n          <div class=\"harsle-value\">100+ Countries<\/div>\n          <p>Worldwide installation, operator training, and spare parts support keep BESS OEM and renewable energy integrator lines running without interruption.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\ud83c\udf21\ufe0f<\/div>\n        <div class=\"harsle-text\">\n          <h3>Thermal Ventilation Capability<\/h3>\n          <div class=\"harsle-value\">Louvers \u00b7 Vents \u00b7 Airflow<\/div>\n          <p>CNC turret punching delivers repeatable vent louver and airflow hole patterns \u2014 essential for battery thermal management in enclosed ESS cabinets.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"harsle-card\">\n        <div class=\"harsle-icon\">\u2699\ufe0f<\/div>\n        <div class=\"harsle-text\">\n          <h3>Multi-Material Capability<\/h3>\n          <div class=\"harsle-value\">Galvanized \u00b7 Stainless \u00b7 Aluminum<\/div>\n          <p>Process galvanized steel, stainless steel, and aluminum across cutting, punching, bending, welding, and coating on a single integrated BESS line.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 7 \u2014 LAYOUT \u2550\u2550 -->\n<section id=\"layout\">\n  <div class=\"container\">\n    <div class=\"title-block\">\n      <span class=\"section-label\">Factory Planning<\/span>\n      <h2 class=\"section-title\">Sample Production Line Layout<\/h2>\n      <p class=\"section-sub\">A reference layout for battery energy storage cabinet production \u2014 sheet preparation, laser cutting, panel bending, press brake, ventilation punching, welding, coating, and final packing in one flow.<\/p>\n    <\/div>\n\n    <!-- Desktop snake flow (HTML\/CSS, no SVG) -->\n    <div class=\"snake-flow-desktop\">\n      <div class=\"snake-flow-label\">Battery Energy Storage Cabinet Production Flow<\/div>\n      <div class=\"snake-grid\">\n\n        <!-- Row 1: 01 \u2192 02 \u2192 03 -->\n        <div class=\"sf-box sf-r1c1\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">01<\/div><div class=\"sf-title\">Sheet Storage &amp; Shearing<\/div><\/div>\n          <div class=\"sf-sub\">Line-ready BESS panel blanks<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-r1c2\">&#8594;<\/div>\n        <div class=\"sf-box sf-r1c3\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">02<\/div><div class=\"sf-title\">Fiber Laser Cutting<\/div><\/div>\n          <div class=\"sf-sub\">Panels, doors, gland cutouts<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-r1c4\">&#8594;<\/div>\n        <div class=\"sf-box sf-r1c5\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">03<\/div><div class=\"sf-title\">Automatic Panel Bending<\/div><\/div>\n          <div class=\"sf-sub\">Cabinet bodies, doors, PCS covers<\/div>\n        <\/div>\n\n        <!-- Turn: \u2193 at column 5 -->\n        <div class=\"sf-va sf-r2c5\">&#8595;<\/div>\n\n        <!-- Row 2: 06 \u2190 05 \u2190 04 -->\n        <div class=\"sf-box sf-r3c1\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">06<\/div><div class=\"sf-title\">Laser Welding Area<\/div><\/div>\n          <div class=\"sf-sub\">Frame and rack bracket joining<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-left sf-r3c2\">&#8592;<\/div>\n        <div class=\"sf-box sf-r3c3\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">05<\/div><div class=\"sf-title\">CNC Turret Punching<\/div><\/div>\n          <div class=\"sf-sub\">Vent louvers, cable entry holes<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-left sf-r3c4\">&#8592;<\/div>\n        <div class=\"sf-box sf-r3c5\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">04<\/div><div class=\"sf-title\">Press Brake Forming<\/div><\/div>\n          <div class=\"sf-sub\">Rack channels, base stiffeners<\/div>\n        <\/div>\n\n        <!-- Turn: \u2193 at column 1 -->\n        <div class=\"sf-va sf-r4c1\">&#8595;<\/div>\n\n        <!-- Row 3: 07 \u2192 08 \u2192 09 -->\n        <div class=\"sf-box sf-r5c1\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">07<\/div><div class=\"sf-title\">Grinding &amp; Coating<\/div><\/div>\n          <div class=\"sf-sub\">Deburring and outdoor powder finish<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-r5c2\">&#8594;<\/div>\n        <div class=\"sf-box sf-r5c3\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">08<\/div><div class=\"sf-title\">Cabinet Assembly &amp; QC<\/div><\/div>\n          <div class=\"sf-sub\">Doors, vents, cable glands<\/div>\n        <\/div>\n        <div class=\"sf-ha sf-r5c4\">&#8594;<\/div>\n        <div class=\"sf-box sf-output sf-r5c5\">\n          <div class=\"sf-box-header\"><div class=\"sf-num\">09<\/div><div class=\"sf-title\">Finished BESS Cabinet Packing<\/div><\/div>\n          <div class=\"sf-sub\">Export-ready energy storage cabinets<\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n\n    <!-- Mobile-only arrow flow: 2 per row -->\n    <div class=\"factory-layout-mobile\">\n      <div class=\"layout-flow-mobile\">\n\n        <!-- Row 1: 01 \u2192 02 -->\n        <div class=\"layout-flow-row\">\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">01<\/div><div class=\"layout-flow-name\">Sheet Storage &amp; Shearing<\/div><\/div>\n            <div class=\"layout-flow-sub\">Line-ready BESS panel blanks<\/div>\n          <\/div>\n          <div class=\"layout-flow-h-arrow\">\u2192<\/div>\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">02<\/div><div class=\"layout-flow-name\">Fiber Laser Cutting<\/div><\/div>\n            <div class=\"layout-flow-sub\">Panels, doors, gland cutouts<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"layout-flow-v-arrow\">\u2193<\/div>\n\n        <!-- Row 2: 03 \u2192 04 -->\n        <div class=\"layout-flow-row\">\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">03<\/div><div class=\"layout-flow-name\">Automatic Panel Bending<\/div><\/div>\n            <div class=\"layout-flow-sub\">Cabinet bodies, doors, PCS covers<\/div>\n          <\/div>\n          <div class=\"layout-flow-h-arrow\">\u2192<\/div>\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">04<\/div><div class=\"layout-flow-name\">Press Brake Forming<\/div><\/div>\n            <div class=\"layout-flow-sub\">Rack channels, base stiffeners<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"layout-flow-v-arrow\">\u2193<\/div>\n\n        <!-- Row 3: 05 \u2192 06 -->\n        <div class=\"layout-flow-row\">\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">05<\/div><div class=\"layout-flow-name\">CNC Turret Punching<\/div><\/div>\n            <div class=\"layout-flow-sub\">Vent louvers, cable entry holes<\/div>\n          <\/div>\n          <div class=\"layout-flow-h-arrow\">\u2192<\/div>\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">06<\/div><div class=\"layout-flow-name\">Laser Welding Area<\/div><\/div>\n            <div class=\"layout-flow-sub\">Frame and rack bracket joining<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"layout-flow-v-arrow\">\u2193<\/div>\n\n        <!-- Row 4: 07 \u2192 08 -->\n        <div class=\"layout-flow-row\">\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">07<\/div><div class=\"layout-flow-name\">Grinding &amp; Coating<\/div><\/div>\n            <div class=\"layout-flow-sub\">Deburring and outdoor powder finish<\/div>\n          <\/div>\n          <div class=\"layout-flow-h-arrow\">\u2192<\/div>\n          <div class=\"layout-flow-card\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">08<\/div><div class=\"layout-flow-name\">Cabinet Assembly &amp; QC<\/div><\/div>\n            <div class=\"layout-flow-sub\">Doors, vents, cable glands<\/div>\n          <\/div>\n        <\/div>\n        <div class=\"layout-flow-v-arrow\">\u2193<\/div>\n\n        <!-- Row 5: 09 (single, centered) -->\n        <div class=\"layout-flow-row-single\">\n          <div class=\"layout-flow-card is-output\">\n            <div class=\"layout-flow-card-header\"><div class=\"layout-flow-num\">09<\/div><div class=\"layout-flow-name\">Finished BESS Cabinet Packing<\/div><\/div>\n            <div class=\"layout-flow-sub\">Export-ready energy storage cabinets<\/div>\n          <\/div>\n        <\/div>\n\n      <\/div>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 8 \u2014 VIDEOS \u2550\u2550 -->\n<section id=\"videos\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">See It In Action<\/span>\n      <h2 class=\"section-title\">Video Center<\/h2>\n      <p class=\"section-sub\">See HARSLE equipment processing BESS cabinet panels, ventilation patterns, and structural frames in live factory conditions.<\/p>\n    <\/div>\n    <div class=\"videos-grid\">\n      <div class=\"video-card\">\n        <div class=\"video-embed\">\n          <button type=\"button\" class=\"video-placeholder\" onclick=\"openVideoModal('https:\/\/www.youtube.com\/embed\/GDke2xdyYNE')\">\n            <img decoding=\"async\" class=\"video-thumb\" src=\"https:\/\/img.youtube.com\/vi\/GDke2xdyYNE\/hqdefault.jpg\" alt=\"Automated Sheet Metal Production Line video thumbnail\" loading=\"lazy\" \/>\n            <div class=\"play-btn\"><\/div>\n            <span>Automated Production Line<\/span>\n          <\/button>\n        <\/div>\n        <div class=\"video-body\">\n          <h3>Automated Sheet Metal Production Line<\/h3>\n          <p>Integrated laser cutting, panel bending, and press brake workflow \u2014 the same automated flow architecture used in battery energy storage cabinet factories.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"video-card\">\n        <div class=\"video-embed\">\n          <button type=\"button\" class=\"video-placeholder\" onclick=\"openVideoModal('https:\/\/www.youtube.com\/embed\/oe-hojJ_Hjs')\">\n            <img decoding=\"async\" class=\"video-thumb\" src=\"https:\/\/img.youtube.com\/vi\/oe-hojJ_Hjs\/hqdefault.jpg\" alt=\"HARSLE Shearing Machine video thumbnail\" loading=\"lazy\" \/>\n            <div class=\"play-btn\"><\/div>\n            <span>Guillotine Shearing<\/span>\n          <\/button>\n        <\/div>\n        <div class=\"video-body\">\n          <h3>PrimeShear \u2014 Heavy-Gauge Sheet Blanking<\/h3>\n          <p>Hydraulic shearing machine cutting galvanized and stainless sheet into line-ready blanks for large BESS cabinet panels and container sidewalls.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"video-card\">\n        <div class=\"video-embed\">\n          <button type=\"button\" class=\"video-placeholder\" onclick=\"openVideoModal('https:\/\/www.youtube.com\/embed\/c9G0NSwjhPI')\">\n            <img decoding=\"async\" class=\"video-thumb\" src=\"https:\/\/img.youtube.com\/vi\/c9G0NSwjhPI\/hqdefault.jpg\" alt=\"HARSLE SmartWeld Laser Welding video thumbnail\" loading=\"lazy\" \/>\n            <div class=\"play-btn\"><\/div>\n            <span>SmartWeld Laser Welding<\/span>\n          <\/button>\n        <\/div>\n        <div class=\"video-body\">\n          <h3>SmartWeld \u2014 BESS Frame &amp; Bracket Welding<\/h3>\n          <p>2000W fiber laser welding joining cabinet frames and battery rack brackets with clean, low-distortion seams for outdoor ESS assemblies.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 9 \u2014 FAQ \u2550\u2550 -->\n<section id=\"faq\">\n  <div class=\"container\">\n    <div class=\"title-block center\">\n      <span class=\"section-label\">Common Questions<\/span>\n      <h2 class=\"section-title\">Frequently Asked Questions<\/h2>\n    <\/div>\n    <div class=\"faq-list\">\n      <div class=\"faq-column\">\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            What materials can be processed?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            HARSLE lines process cold-rolled galvanized steel (most common for outdoor BESS cabinets), 304\/316 stainless steel (corrosive environments), and aluminum (lightweight enclosures). Thickness typically ranges from 1.5mm to 3.0mm for energy storage cabinet bodies.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            What BESS cabinet types and sizes are supported?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            HARSLE lines support outdoor container-style BESS enclosures, commercial ESS cabinets, PCS power conversion housings, BMS panel boxes, and battery module rack frames. Cabinet dimensions and IP ratings are customized to your project specifications and regional compliance requirements.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Can ventilation louver and cable gland patterns be produced?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. CNC turret punching produces vent louver patterns, round airflow holes, and repeated mounting holes on BESS doors and side panels. Fiber laser cutting handles cable gland cutouts, window openings, and complex outer contours in the same line.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Is a panel bender required for BESS cabinet production?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            For high-volume battery energy storage programs, an automatic panel bender is strongly recommended. It forms four-side cabinet bodies and access doors in one cycle \u2014 3\u20135\u00d7 faster than multi-step press brake forming on standardized ESS models.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Do you provide installation and training?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. HARSLE provides full on-site installation, commissioning, and operator training services. Our global service network in 100+ countries ensures ongoing technical support throughout the machine&#8217;s lifecycle.\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"faq-column\">\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Can the production line be customized?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. Machine configuration, automation level, factory layout, and production capacity can be customized based on your product range, floor space, and investment plan.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            What equipment is required for BESS cabinet production?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            A typical battery energy storage cabinet line includes: (1) guillotine shearing, (2) fiber laser cutting, (3) automatic panel bender, (4) CNC press brake, (5) CNC turret punch, (6) laser welding, (7) deburring and powder coating, (8) hardware assembly and QC, (9) packing. Configuration varies by cabinet size and daily output target.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Can HARSLE design a BESS cabinet factory layout?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. Our engineers provide layout drawings optimized for battery storage enclosure material flow \u2014 from shearing and laser cutting through panel bending, ventilation punching, welding, outdoor coating, and assembly \u2014 with capacity planning based on your target daily output.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Do you provide machine recommendations?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. Our team recommends suitable machine models and specifications according to your material thickness, BESS cabinet dimensions, ventilation pattern complexity, IP rating requirements, target output, and automation level.\n          <\/div>\n        <\/div>\n\n        <div class=\"faq-item\">\n          <button class=\"faq-q\" onclick=\"toggleFaq(this)\">\n            Do you support overseas customers?\n            <span class=\"faq-chevron\">\u25bc<\/span>\n          <\/button>\n          <div class=\"faq-a\">\n            Yes. HARSLE supports customers worldwide with technical consultation, machine delivery, installation guidance, training, spare parts, and after-sales service.\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- \u2550\u2550 SECTION 10 \u2014 FINAL CTA \u2550\u2550 -->\n<section id=\"final-cta\">\n  <div class=\"final-cta-bg\"><\/div>\n  <div class=\"final-cta-content\">\n    <span class=\"section-label\">Ready to Start?<\/span>\n    <h2>Start Your Battery Energy Storage<br\/>Cabinet Production Line Today<\/h2>\n    <p>Get a custom factory layout, machine configuration, and turnkey BESS cabinet line proposal from HARSLE engineers.<\/p>\n    <div class=\"btn-group\">\n      <button type=\"button\" class=\"btn-primary\" onclick=\"openQuoteModal()\" style=\"font-size:1rem; padding:16px 36px;\">\n        Get A Quote\n      <\/button>\n      <a href=\"https:\/\/www.harsle.com\/products\/\" class=\"btn-secondary\" style=\"font-size:1rem; padding:15px 34px;\">\n        Vell Products\n      <\/a>\n    <\/div>\n    <div class=\"cta-highlights\">\n      <div class=\"cta-highlight\">\n        <div class=\"cta-highlight-icon\">\ud83d\ude80<\/div>\n        <div class=\"cta-highlight-text\">Fast Response<br\/>Within 24 Hours<\/div>\n      <\/div>\n      <div class=\"cta-highlight\">\n        <div class=\"cta-highlight-icon\">\ud83c\udd93<\/div>\n        <div class=\"cta-highlight-text\">Free Consultation<br\/>No Obligation<\/div>\n      <\/div>\n      <div class=\"cta-highlight\">\n        <div class=\"cta-highlight-icon\">\ud83c\udf0d<\/div>\n        <div class=\"cta-highlight-text\">100+ Countries<br\/>Served Globally<\/div>\n      <\/div>\n      <div class=\"cta-highlight\">\n        <div class=\"cta-highlight-icon\">\ud83c\udfed<\/div>\n        <div class=\"cta-highlight-text\">Turnkey Factory<br\/>Planning Included<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"quote-modal\" id=\"quote-modal\" aria-hidden=\"true\" onclick=\"closeQuoteModal(event)\">\n  <div class=\"quote-modal-panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Get A Quote\">\n    <button type=\"button\" class=\"quote-modal-close\" onclick=\"closeQuoteModal()\" aria-label=\"Close quote form\">\u00d7<\/button>\n    <div class=\"quote-shortcode\">\n      <!-- WordPress \u4e0a\u7ebf\u65f6\u66ff\u6362\u4e3a: [html_block id=\"34465\"] -->\n      <form class=\"elementor-form\" method=\"post\" name=\"Get A Quote\" aria-label=\"Get A Quote\" onsubmit=\"return false;\">\n        <div class=\"elementor-form-fields-wrapper elementor-labels-above\">\n          <div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-name elementor-col-50 elementor-field-required elementor-mark-required\">\n            <label for=\"quote-field-name\" class=\"elementor-field-label\">Name<\/label>\n            <input type=\"text\" name=\"form_fields[name]\" id=\"quote-field-name\" class=\"elementor-field elementor-size-md elementor-field-textual\" required>\n          <\/div>\n          <div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-50 elementor-field-required elementor-mark-required\">\n            <label for=\"quote-field-email\" class=\"elementor-field-label\">Email<\/label>\n            <input type=\"email\" name=\"form_fields[email]\" id=\"quote-field-email\" class=\"elementor-field elementor-size-md elementor-field-textual\" required>\n          <\/div>\n          <div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-company elementor-col-50\">\n            <label for=\"quote-field-company\" class=\"elementor-field-label\">Company<\/label>\n            <input type=\"text\" name=\"form_fields[company]\" id=\"quote-field-company\" class=\"elementor-field elementor-size-md elementor-field-textual\">\n          <\/div>\n          <div class=\"elementor-field-type-tel elementor-field-group elementor-column elementor-field-group-WhatsApp elementor-col-50\">\n            <label for=\"quote-field-whatsapp\" class=\"elementor-field-label\">WhatsApp<\/label>\n            <input type=\"tel\" name=\"form_fields[WhatsApp]\" id=\"quote-field-whatsapp\" class=\"elementor-field elementor-size-md elementor-field-textual\">\n          <\/div>\n          <div class=\"elementor-field-type-textarea elementor-field-group elementor-column elementor-field-group-message elementor-col-100 elementor-field-required elementor-mark-required\">\n            <label for=\"quote-field-message\" class=\"elementor-field-label\">Message<\/label>\n            <textarea class=\"elementor-field-textual elementor-field elementor-size-md\" name=\"form_fields[message]\" id=\"quote-field-message\" rows=\"6\" required><\/textarea>\n          <\/div>\n          <div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n            <button class=\"elementor-button elementor-size-md\" type=\"submit\">\n              <span class=\"elementor-button-content-wrapper\">\n                <span class=\"elementor-button-text\">SUBMIT<\/span>\n              <\/span>\n            <\/button>\n          <\/div>\n        <\/div>\n      <\/form>\n    <\/div>\n  <\/div>\n<\/div>\n\n<div class=\"video-modal\" id=\"video-modal\" aria-hidden=\"true\" onclick=\"closeVideoModal(event)\">\n  <div class=\"video-modal-panel\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Video player\">\n    <button type=\"button\" class=\"video-modal-close\" onclick=\"closeVideoModal()\" aria-label=\"Close video\">\u00d7<\/button>\n    <div class=\"video-modal-frame\" id=\"video-modal-frame\"><\/div>\n    <div class=\"video-modal-footer\">\n      <a id=\"yt-watch-btn\" class=\"yt-watch-btn\" href=\"#\" target=\"_blank\" rel=\"noopener noreferrer\">\n        <svg width=\"18\" height=\"13\" viewBox=\"0 0 18 13\" fill=\"white\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M17.6 2.03A2.26 2.26 0 0 0 16.01.42C14.6 0 9 0 9 0S3.4 0 1.99.42A2.26 2.26 0 0 0 .4 2.03 23.7 23.7 0 0 0 0 6.5a23.7 23.7 0 0 0 .4 4.47 2.26 2.26 0 0 0 1.59 1.6C3.4 13 9 13 9 13s5.6 0 7.01-.43a2.26 2.26 0 0 0 1.59-1.6A23.7 23.7 0 0 0 18 6.5a23.7 23.7 0 0 0-.4-4.47Z\"\/><path d=\"M7.2 9.29 11.88 6.5 7.2 3.71v5.58Z\" fill=\"#ff0000\"\/><\/svg>\n        Watch on YouTube\n      <\/a>\n      <span class=\"yt-watch-hint\">Video not playing? Open directly in YouTube \u2197<\/span>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  function toggleFaq(btn) {\n    const answer = btn.nextElementSibling;\n    const isOpen = answer.classList.contains('open');\n    answer.classList.toggle('open', !isOpen);\n    btn.classList.toggle('open', !isOpen);\n  }\n\n  function openQuoteModal() {\n    const modal = document.getElementById('quote-modal');\n    modal.classList.add('open');\n    modal.setAttribute('aria-hidden', 'false');\n  }\n\n  function closeQuoteModal(event) {\n    if (event && event.target !== event.currentTarget) return;\n    const modal = document.getElementById('quote-modal');\n    modal.classList.remove('open');\n    modal.setAttribute('aria-hidden', 'true');\n  }\n\n  function openVideoModal(src) {\n    const modal = document.getElementById('video-modal');\n    const frame = document.getElementById('video-modal-frame');\n    const watchBtn = document.getElementById('yt-watch-btn');\n\n    \/\/ Extract video ID for the \"Watch on YouTube\" link\n    const videoId = src.split('\/embed\/')[1].split('?')[0];\n    watchBtn.href = `https:\/\/www.youtube.com\/watch?v=${videoId}`;\n\n    \/\/ Use the exact embed URL provided (with si parameter), append autoplay flags\n    const separator = src.includes('?') ? '&' : '?';\n    const embedSrc = src + separator + 'autoplay=1&mute=1&rel=0&modestbranding=1&playsinline=1';\n\n    frame.innerHTML = `<iframe\n      src=\"${embedSrc}\"\n      title=\"YouTube video player\"\n      frameborder=\"0\"\n      allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n      referrerpolicy=\"strict-origin-when-cross-origin\"\n      allowfullscreen\n    ><\/iframe>`;\n    modal.classList.add('open');\n    modal.setAttribute('aria-hidden', 'false');\n  }\n\n  function closeVideoModal(event) {\n    if (event && event.target !== event.currentTarget) return;\n    const modal = document.getElementById('video-modal');\n    const frame = document.getElementById('video-modal-frame');\n    modal.classList.remove('open');\n    modal.setAttribute('aria-hidden', 'true');\n    frame.innerHTML = '';\n  }\n\n  document.addEventListener('keydown', (event) => {\n    if (event.key === 'Escape') {\n      closeQuoteModal();\n      closeVideoModal();\n    }\n  });\n\n<\/script>\n\n<\/div><!-- \/#harsle-lp -->\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Battery Energy Storage Cabinet Production Line | HARSLE Sheet Metal Manufacturing Solutions HARSLE Manufacturing Solutions Complete Battery Energy Storage Cabinet<\/p>","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-85664","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/pages\/85664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/comments?post=85664"}],"version-history":[{"count":0,"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/pages\/85664\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.harsle.com\/fr\/wp-json\/wp\/v2\/media?parent=85664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}