{"id":10,"date":"2026-05-27T14:59:12","date_gmt":"2026-05-27T14:59:12","guid":{"rendered":"https:\/\/staging.heldeco.at\/?page_id=10"},"modified":"2026-07-09T16:33:20","modified_gmt":"2026-07-09T16:33:20","slug":"startseite","status":"publish","type":"page","link":"https:\/\/heldeco.at\/en\/","title":{"rendered":"Home"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"10\" class=\"elementor elementor-10\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d05013 e-con-full e-flex e-con e-parent\" data-id=\"5d05013\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-72f6c6c e-flex e-con-boxed e-con e-child\" data-id=\"72f6c6c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cff4850 elementor-widget elementor-widget-html\" data-id=\"cff4850\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<section class=\"hero\">\r\n  <video autoplay muted loop playsinline>\r\n    <source src=\"\/wp-content\/uploads\/2026\/06\/Hero.mp4\" type=\"video\/mp4\">\r\n  <\/video>\r\n\r\n  <div class=\"hero-content\">\r\n    <div class=\"eyebrow\">Precision manufacturing for highest demands<\/div>\r\n    <h1>When it gets<br><span class=\"blue\">heavy.<\/span><\/h1>\r\n    <p class=\"subline\"> Metallbearbeitung und Zerspanung f\u00fcr Bauteile, die schwer, anspruchsvoll und  komplex sind \u2013 und trotzdem hochpr\u00e4zise.<\/p>\r\n\r\n    <div class=\"cta-row\">\r\n      <a class=\"cta\" href=\"\/projekt-anfragen\">Projekt besprechen<\/a>\r\n      <a class=\"cta\" href=\"\/check\">Komponente pr\u00fcfen<\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-12dfb60 e-con-full e-flex e-con e-parent\" data-id=\"12dfb60\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7b23a16 elementor-widget elementor-widget-html\" data-id=\"7b23a16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n<style>\n\n:root{\n  --heldeco-blue:#005da9;\n}\n\n.hcv5-button-wrap{\n    display:flex;\n    justify-content:center;\n    margin-top:50px;\n}\n\n\n\n.hcv5-button{\n    position:relative;\n    display:inline-flex;\n    align-items:center;\n    justify-content:center;\n    min-width:340px;\n    padding:22px 38px;\n    overflow:hidden;\n\n    color:#ffffff;\n    text-decoration:none;\n    text-transform:uppercase;\n\n    font-size:13px;\n    font-weight:900;\n    letter-spacing:.32em;\n\n    border-radius:18px;\n    border:1px solid rgba(118,217,255,.35);\n\n    background:rgba(2,12,23,.65);\n    backdrop-filter:blur(16px);\n\n    transition:all .35s ease;\n\n    box-shadow:\n        0 0 0 1px rgba(21,101,166,.15),\n        0 0 30px rgba(21,101,166,.25),\n        inset 0 0 25px rgba(21,101,166,.08);\n}\n\n.hcv5-button::before{\n    content:\"\";\n    position:absolute;\n    inset:0;\n\n    background:\n        linear-gradient(\n            90deg,\n            transparent,\n            rgba(118,217,255,.18),\n            transparent\n        );\n\n    transform:translateX(-100%);\n    transition:transform .8s ease;\n}\n\n.hcv5-button:hover::before{\n    transform:translateX(100%);\n}\n\n.hcv5-button::after{\n    content:\"\";\n    position:absolute;\n    inset:6px;\n\n    border:1px solid rgba(118,217,255,.15);\n    border-radius:12px;\n\n    pointer-events:none;\n}\n\n.hcv5-button span{\n    position:relative;\n    z-index:2;\n}\n\n.hcv5-button:hover{\n    transform:translateY(-3px);\n\n    border-color:#1565a6;\n\n    box-shadow:\n        0 0 0 1px rgba(21,101,166,.35),\n        0 0 50px rgba(21,101,166,.45),\n        0 0 90px rgba(21,101,166,.25),\n        inset 0 0 35px rgba(21,101,166,.18);\n}\n\n.heldeco-mini-facts{\n  position:relative;\n  overflow:hidden;\n  background:\n    radial-gradient(circle at top right, rgba(0,93,169,0.14), transparent 38%),\n    linear-gradient(135deg,#0b1724 0%, #132334 100%);\n  padding:70px 50px;\n  border-radius:28px;\n  font-family:Arial, Helvetica, sans-serif;\n  border:1px solid rgba(255,255,255,0.05);\n}\n\n.heldeco-mini-header{\n  margin-bottom:45px;\n}\n\n.heldeco-mini-header span{\n  display:block;\n  color:var(--heldeco-blue);\n  font-size:12px;\n  font-weight:800;\n  letter-spacing:2px;\n  margin-bottom:14px;\n}\n\n.heldeco-mini-header h2{\n  margin:0;\n  color:#ffffff;\n  font-size:clamp(28px,3vw,46px);\n  line-height:1;\n  font-weight:900;\n  letter-spacing:-2px;\n}\n\n.heldeco-mini-grid{\n  display:grid;\n  grid-template-columns:repeat(3,1fr);\n  gap:20px;\n}\n\n.heldeco-mini-card{\n  position:relative;\n  padding:30px 28px;\n  border-radius:22px;\n  background:rgba(255,255,255,0.04);\n  backdrop-filter:blur(10px);\n  border:1px solid rgba(255,255,255,0.06);\n  transition:all .35s ease;\n  overflow:hidden;\n}\n\n.heldeco-mini-card::before{\n  content:\"\";\n  position:absolute;\n  inset:0;\n  background:linear-gradient(\n    135deg,\n    rgba(0,93,169,0.18),\n    transparent 70%\n  );\n  opacity:0;\n  transition:opacity .35s ease;\n}\n\n.heldeco-mini-card:hover{\n  transform:translateY(-4px);\n  border-color:rgba(0,93,169,0.28);\n  box-shadow:\n    0 15px 35px rgba(0,0,0,0.25);\n}\n\n.heldeco-mini-card:hover::before{\n  opacity:1;\n}\n\n.heldeco-mini-number{\n  position:relative;\n  z-index:2;\n  color:var(--heldeco-blue);\n  font-size:clamp(42px,5vw,74px);\n  line-height:0.9;\n  font-weight:900;\n  letter-spacing:-3px;\n  margin-bottom:10px;\n}\n\n.heldeco-mini-label{\n  position:relative;\n  z-index:2;\n  color:#d8e3ee;\n  font-size:18px;\n  font-weight:700;\n  line-height:1.2;\n}\n\n@media(max-width:900px){\n\n  .heldeco-mini-grid{\n    grid-template-columns:1fr;\n  }\n\n  .heldeco-mini-facts{\n    padding:50px 25px;\n  }\n\n}\n\n<\/style>\n<section class=\"heldeco-triggers\">\n\n  <a href=\"#\" class=\"trigger-card\">\n    <div class=\"trigger-inner\">\n      <span class=\"trigger-top\">When it gets<\/span>\n      <h3>heavy.<\/h3>\n    <\/div>\n  <\/a>\n\n  <a href=\"#\" class=\"trigger-card\">\n    <div class=\"trigger-inner\">\n      <span class=\"trigger-top\">When it gets<\/span>\n      <h3>critical.<\/h3>\n    <\/div>\n  <\/a>\n\n  <a href=\"#\" class=\"trigger-card\">\n    <div class=\"trigger-inner\">\n      <span class=\"trigger-top\">When it gets<\/span>\n      <h3>complex.<\/h3>\n    <\/div>\n  <\/a>\n\n  <a href=\"#\" class=\"trigger-card\">\n    <div class=\"trigger-inner\">\n      <span class=\"trigger-top\">When there is<\/span>\n      <h3>no Plan B.<\/h3>\n    <\/div>\n  <\/a>\n\n<\/section>\n\n<style>\n\n.heldeco-triggers{\n\ndisplay:grid;\n\ngrid-template-columns:\nrepeat(4,1fr);\n\nbackground:#031d33;\n\nborder-top:\n1px solid rgba(255,255,255,.08);\n\nborder-bottom:\n1px solid rgba(255,255,255,.08);\n\noverflow:hidden;\n\n}\n\n\n\/* CARD *\/\n.trigger-card{\n\nposition:relative;\n\nmin-height:220px;\n\npadding:34px 34px 30px;\n\ndisplay:flex;\n\nalign-items:flex-end;\n\ntext-decoration:none;\n\noverflow:hidden;\n\nborder-right:\n1px solid rgba(255,255,255,.08);\n\nbackground:\nlinear-gradient(\n180deg,\nrgba(255,255,255,0),\nrgba(255,255,255,0)\n);\n\ntransition:\ntransform .45s cubic-bezier(.22,1,.36,1),\nbackground .45s ease;\n\n}\n\n\n.trigger-card:last-child{\nborder-right:none;\n}\n\n\n\/* BLUE GLOW *\/\n.trigger-card::before{\n\ncontent:\"\";\n\nposition:absolute;\n\ninset:0;\n\nbackground:\nradial-gradient(\ncircle at bottom left,\nrgba(21,101,166,.45),\ntransparent 65%\n);\n\nopacity:0;\n\ntransition:\nopacity .45s ease;\n\n}\n\n\n\/* BOTTOM LINE *\/\n.trigger-card::after{\n\ncontent:\"\";\n\nposition:absolute;\n\nleft:34px;\nright:34px;\nbottom:0;\n\nheight:3px;\n\nbackground:#1565A6;\n\ntransform:scaleX(.18);\n\ntransform-origin:left;\n\ntransition:\ntransform .45s cubic-bezier(.22,1,.36,1);\n\n}\n\n\n\/* CONTENT *\/\n.trigger-inner{\n\nposition:relative;\n\nz-index:2;\n\ntransition:\ntransform .45s cubic-bezier(.22,1,.36,1);\n\n}\n\n\n.trigger-top{\n\ndisplay:block;\n\nfont-size:18px;\n\nline-height:1;\n\nfont-weight:700;\n\ncolor:#ffffff;\n\nmargin-bottom:12px;\n\nletter-spacing:-0.03em;\n\n}\n\n\n\/* BIG BLUE WORD *\/\n.trigger-card h3{\n\nmargin:0;\n\nfont-size:\nclamp(48px,4vw,74px);\n\nline-height:.88;\n\nletter-spacing:-0.08em;\n\nfont-weight:900;\n\ncolor:#1565A6;\n\n}\n\n\n\/* HOVER *\/\n.trigger-card:hover{\n\ntransform:\ntranslateY(-6px);\n\nbackground:\nlinear-gradient(\n180deg,\nrgba(255,255,255,.02),\nrgba(21,101,166,.08)\n);\n\n}\n\n\n.trigger-card:hover::before{\nopacity:1;\n}\n\n\n.trigger-card:hover::after{\ntransform:scaleX(1);\n}\n\n\n.trigger-card:hover .trigger-inner{\n\ntransform:\ntranslateY(-10px);\n\n}\n\n\n\/* MOBILE *\/\n\n.hh-turn-number{\n    font-size:.92em;\n}\n\n.hh-cap-grid{\n    position:relative;\n    overflow:hidden;\n}\n\n.hh-cap-grid::after{\n    content:\"\";\n    position:absolute;\n    inset:-30%;\n    background:linear-gradient(\n        115deg,\n        transparent 46%,\n        rgba(120,220,255,.02) 48%,\n        rgba(120,220,255,.95) 50%,\n        rgba(120,220,255,.02) 52%,\n        transparent 54%\n    );\n    mix-blend-mode:screen;\n    filter:\n        blur(1px)\n        drop-shadow(0 0 8px #7fdcff)\n        drop-shadow(0 0 22px #39a8ff);\n    animation:heldecoLaser 5.5s ease-in-out infinite;\n    pointer-events:none;\n}\n\n@keyframes heldecoLaser{\n    0%{transform:translateX(-130%);opacity:0;}\n    8%{opacity:1;}\n    45%{transform:translateX(130%);opacity:1;}\n    55%{opacity:0;}\n    100%{transform:translateX(130%);opacity:0;}\n}\n\n\n@media(max-width:980px){\n\n.heldeco-triggers{\n\ngrid-template-columns:1fr;\n\n}\n\n.trigger-card{\n\nmin-height:180px;\n\n}\n\n.trigger-card h3{\n\nfont-size:58px;\n\n}\n\n}\n\n<\/style>\n\n<section class=\"heldeco-heavy-page\">\n  <style>\n    .heldeco-heavy-page{\n      --hb:#1565a6;\n      --hb2:#2d8fd3;\n      --dark:#03101f;\n      --dark2:#061a33;\n      --white:#ffffff;\n      --muted:rgba(255,255,255,.72);\n      --line:rgba(21,101,166,.42);\n      font-family:Inter,Arial,sans-serif;\n      background:#020913;\n      color:#fff;\n      overflow:hidden;\n    }\n    .heldeco-heavy-page *{box-sizing:border-box}\n    .hh-wrap{max-width:1320px;margin:0 auto;padding:0 28px}\n    .hh-section{position:relative;padding:110px 0}\n    .hh-kicker{font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:#7bb7e6;font-weight:800;margin-bottom:14px}\n    .hh-title{font-size:clamp(42px,7vw,104px);line-height:.88;letter-spacing:-.07em;text-transform:uppercase;margin:0 0 28px;font-weight:950}\n    .hh-blueprint .hh-title{letter-spacing:.025em}\n    .hh-title span{color:var(--hb2)}\n    .hh-sub{font-size:clamp(18px,2.2vw,27px);line-height:1.35;color:var(--muted);max-width:850px;margin:0}\n    .hh-blueprint{background:radial-gradient(circle at 20% 10%,rgba(21,101,166,.35),transparent 32%),linear-gradient(180deg,#03101f 0%,#061a33 100%)}\n    .hh-blueprint:before{content:\"\";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,#000,transparent 86%)}\n    .hh-cap-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:60px}\n    .hh-cap-card{position:relative;min-height:470px;padding:38px;border:1px solid rgba(255,255,255,.13);background:linear-gradient(145deg,rgba(21,101,166,.20),rgba(255,255,255,.035));overflow:hidden;border-radius:28px;box-shadow:0 35px 90px rgba(0,0,0,.28)}\n    .hh-cap-card:before{content:\"\";position:absolute;inset:28px;border:1px dashed rgba(89,170,255,.35);border-radius:18px;pointer-events:none}\n    .hh-cap-card h3{position:relative;margin:0 0 20px;font-size:28px;text-transform:uppercase;letter-spacing:-.03em}\n    .hh-big-number{position:relative;font-size:clamp(86px,13vw,180px);line-height:.78;font-weight:950;letter-spacing:-.09em;color:#fff;text-shadow:0 0 45px rgba(21,101,166,.35)}\n    .hh-big-prefix{display:block;font-size:14px;line-height:1;font-weight:800;letter-spacing:.28em;text-transform:uppercase;color:rgba(255,255,255,.75);margin-bottom:16px}\n    .hh-unit{font-size:1em;color:var(--hb2);font-weight:950;letter-spacing:-.08em}\n    .hh-metrics{position:absolute;left:38px;right:38px;bottom:38px;display:grid;grid-template-columns:repeat(2,1fr);gap:18px}\n    .hh-metric{border-top:1px solid rgba(255,255,255,.18);padding-top:16px;color:var(--muted);font-size:15px;line-height:1.35}\n    .hh-metric strong{display:block;color:#fff;font-size:34px;line-height:1;font-weight:950;letter-spacing:-.05em;margin-bottom:6px}\n    .hh-cad-lines{position:absolute;right:-140px;top:30px;width:420px;height:420px;border:1px solid rgba(89,170,255,.18);border-radius:50%;animation:hhRotate 18s linear infinite}\n    .hh-cad-lines:before,.hh-cad-lines:after{content:\"\";position:absolute;inset:60px;border:1px solid rgba(89,170,255,.25);border-radius:50%}.hh-cad-lines:after{inset:125px}\n    @keyframes hhRotate{to{transform:rotate(360deg)}}\n\n    .hh-flow{background:#020913}\n    .hh-flow:before{content:\"HELDECO FLOW\";position:absolute;top:40px;left:50%;transform:translateX(-50%);font-size:14vw;font-weight:950;letter-spacing:-.08em;color:rgba(255,255,255,.025);white-space:nowrap}\n    .hh-flow .hh-title{font-size:clamp(34px,4.2vw,58px);line-height:.95;letter-spacing:-.045em;margin-bottom:16px;max-width:620px}\n    .hh-flow .hh-sub{font-size:clamp(15px,1.35vw,19px);max-width:720px}\n    .hh-flow-line{position:relative;margin-top:40px;padding:30px;border:1px solid rgba(255,255,255,.10);border-radius:32px;background:linear-gradient(135deg,rgba(21,101,166,.18),rgba(255,255,255,.025));overflow:hidden}\n    .hh-flow-track{display:grid;\ngrid-template-columns:repeat(3, 1fr);\ngap:28px;}\n    .hh-flow-item{position:relative;min-height:132px;padding:20px 18px 18px;border-top:0;border-left:3px solid var(--hb2);border-radius:20px;background:rgba(255,255,255,.055);box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}\n    .hh-flow-item:before{content:\"\";position:absolute;top:20px;left:-10px;width:17px;height:17px;border-radius:50%;background:#fff;box-shadow:0 0 0 7px rgba(21,101,166,.22),0 0 28px rgba(21,101,166,.85)}\n    .hh-flow-num{margin-top:0;font-size:11px;color:#7bb7e6;font-weight:900;letter-spacing:.18em}\n    .hh-flow-name{margin-top:12px;font-size:14px;line-height:1.12;font-weight:900;letter-spacing:.035em;text-transform:uppercase}\n.hh-flow-copy{\n  font-size:15px;\n  line-height:1.35;\n  color:rgba(255,255,255,.72);\n}\n.hh-flow-track{\ndisplay:grid;\ngrid-template-columns:repeat(3, 1fr);\ngap:34px 54px;\nposition:relative;\n}\n.hh-flow-track{\n  display:grid;\n  grid-template-columns:repeat(3, 1fr);\n  gap:34px 54px;\n  position:relative;\n}\n\n.hh-flow-item{\n  position:relative;\n  overflow:hidden;\n  z-index:2;\n}\n\n\/* horizontale Linien *\/\n.hh-flow-item:not(:nth-child(3n))::before{\n  content:\"\";\n  position:absolute;\n  top:50%;\n  right:-54px;\n  width:54px;\n  height:2px;\n  background:linear-gradient(90deg, rgba(21,101,166,.25), rgba(125,204,255,.9));\n  box-shadow:0 0 16px rgba(125,204,255,.45);\n  animation:hh-line-pulse 2.8s linear infinite;\n}\n\n\/* Pfeilspitze *\/\n.hh-flow-item:not(:nth-child(3n)) .hh-flow-name::after{\n  content:\"\";\n  position:absolute;\n  top:50%;\n  right:-61px;\n  width:8px;\n  height:8px;\n  border-top:2px solid rgba(125,204,255,.9);\n  border-right:2px solid rgba(125,204,255,.9);\n  transform:translateY(-50%) rotate(45deg);\n  opacity:.9;\n}\n\n\n\/* letzte Karte keine Linie *\/\n.hh-flow-item:nth-child(15)::before{\n  display:none;\n}\n\n\/* kleine Knotenpunkte *\/\n.hh-flow-item::after{\n  content:\"\";\n  position:absolute;\n  top:50%;\n  right:-7px;\n  width:10px;\n  height:10px;\n  border-radius:50%;\n  background:#7dccff;\n  box-shadow:0 0 18px rgba(125,204,255,.8);\n  transform:translateY(-50%);\n  opacity:.75;\n}\n\n\/* letzte Karte ohne Knoten *\/\n.hh-flow-item:nth-child(15)::after{\n  display:none;\n}\n\n@keyframes hh-line-pulse{\n  0%{\n    opacity:.25;\n    filter:brightness(.8);\n  }\n  50%{\n    opacity:1;\n    filter:brightness(1.7);\n  }\n  100%{\n    opacity:.25;\n    filter:brightness(.8);\n  }\n}\n  box-shadow:0 0 22px rgba(80,180,255,.35);\n  animation:hh-flow-pulse 4.8s ease-in-out infinite;\n  pointer-events:none;\n}\n\n.hh-flow-item{\n  position:relative;\n  overflow:hidden;\n  transition:\n    transform .35s ease,\n    border-color .35s ease,\n    box-shadow .35s ease;\n}\n\n.hh-flow-item::before{\n  content:\"\";\n  position:absolute;\n  inset:-1px;\n  background:linear-gradient(\n    120deg,\n    transparent 0%,\n    rgba(80,180,255,.18) 35%,\n    rgba(255,255,255,.10) 50%,\n    rgba(80,180,255,.18) 65%,\n    transparent 100%\n  );\n  transform:translateX(-120%);\n  animation:hh-card-scan 8s ease-in-out infinite;\n  pointer-events:none;\n}\n\n.hh-flow-item::after{\n  content:\"\";\n  position:absolute;\n  left:0;\n  top:18px;\n  bottom:18px;\n  width:2px;\n  background:linear-gradient(\n    180deg,\n    transparent,\n    #39a8ff,\n    transparent\n  );\n  box-shadow:0 0 18px rgba(57,168,255,.8);\n  opacity:.75;\n}\n\n.hh-flow-item:hover{\n  transform:translateY(-6px);\n  border-color:rgba(80,180,255,.55);\n  box-shadow:\n    0 24px 70px rgba(0,0,0,.32),\n    0 0 34px rgba(57,168,255,.22);\n}\n\n.hh-flow-num{\n  color:#7dccff;\n  letter-spacing:.16em;\n  text-shadow:0 0 14px rgba(80,180,255,.65);\n}\n\n.hh-flow-name{\n  font-size:18px;\n  line-height:1.12;\n  hyphens:auto;\n  overflow-wrap:break-word;\n}\n\n@keyframes hh-flow-pulse{\n  0%,100%{\n    opacity:.25;\n    transform:scaleX(.92);\n  }\n  50%{\n    opacity:1;\n    transform:scaleX(1);\n  }\n}\n.hh-flow-item{\n    position:relative;\n    overflow:hidden;\n}\n\n.hh-flow-item .hh-brand{\n    position:absolute;\n    top:18px;\n    right:18px;\n\n    font-size:11px;\n    font-weight:700;\n    letter-spacing:.25em;\n\n    color:rgba(125,204,255,.85);\n\n    opacity:0;\n    transform:translateY(-10px);\n\n    transition:.35s ease;\n\n    pointer-events:none;\n}\n\n.hh-flow-item:hover .hh-brand{\n    opacity:1;\n    transform:translateY(0);\n}\n@keyframes hh-card-scan{\n  0%{transform:translateX(-130%);}\n  35%{transform:translateX(130%);}\n  100%{transform:translateX(130%);}\n}\n    .hh-scale{background:linear-gradient(180deg,#061a33,#020913)}\n    .hh-scale-box{margin-top:54px;border-radius:30px;background:#fff;color:#061a33;padding:48px;position:relative;overflow:hidden;box-shadow:0 32px 110px rgba(0,0,0,.22)}\n    .hh-scale-box:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at 80% 30%,rgba(21,101,166,.18),transparent 34%),linear-gradient(120deg,rgba(21,101,166,.08),transparent 48%)}\n    .hh-scale-box:after{content:\"SERIES CAPABILITY\";position:absolute;right:-20px;bottom:8px;font-size:clamp(42px,8vw,120px);font-weight:950;letter-spacing:-.08em;color:rgba(21,101,166,.055);white-space:nowrap}\n    .hh-scale-row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:34px}\n    .hh-scale-point{font-size:clamp(34px,7vw,92px);font-weight:950;letter-spacing:-.08em;color:#061a33;position:relative;animation:hhPulse 4.2s ease-in-out infinite}\n    .hh-scale-point:after{content:\"\";position:absolute;left:50%;bottom:-18px;width:12px;height:12px;border-radius:50%;background:#1565a6;transform:translateX(-50%);box-shadow:0 0 0 8px rgba(21,101,166,.13),0 0 28px rgba(21,101,166,.45)}\n    .hh-scale-line{height:4px;flex:1;background:linear-gradient(90deg,var(--hb),rgba(21,101,166,.15));min-width:36px;position:relative;overflow:hidden;border-radius:99px}\n    .hh-scale-line:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.86),transparent);transform:translateX(-100%);animation:hhScan 3.2s ease-in-out infinite}\n    @keyframes hhScan{0%{transform:translateX(-100%)}55%,100%{transform:translateX(100%)}}\n    @keyframes hhPulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}\n    .hh-scale-text{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:30px;color:#0d2540;font-size:20px;line-height:1.35}.hh-scale-text strong{font-size:34px;letter-spacing:-.05em;display:block;color:var(--hb)}\n\n    .hh-industries{background:#020913}\n    .hh-ind-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:58px;height:560px}\n    .hh-ind-card{position:relative;overflow:hidden;border-radius:26px;background:#0a203b;border:1px solid rgba(255,255,255,.10);min-width:0;transition:all .45s ease;isolation:isolate}\n    .hh-ind-card:hover{grid-column:span 2}.hh-ind-grid:hover .hh-ind-card:not(:hover){opacity:.55;filter:saturate(.65)}\n    .hh-ind-card:before{content:\"\";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.78)),radial-gradient(circle at 35% 25%,rgba(21,101,166,.65),transparent 42%);z-index:-1;transition:transform .7s ease}.hh-ind-card:hover:before{transform:scale(1.08)}\n    .hh-ind-inner{position:absolute;inset:auto 22px 24px 22px}.hh-ind-kicker{font-size:12px;color:#7bb7e6;letter-spacing:.18em;font-weight:900;text-transform:uppercase;margin-bottom:12px}.hh-ind-card h3{font-size:clamp(24px,2.6vw,42px);line-height:.95;letter-spacing:-.06em;text-transform:uppercase;margin:0 0 16px}.hh-ind-card p{font-size:15px;line-height:1.35;color:var(--muted);margin:0;max-width:310px}\n\n    .hh-career{min-height:82vh;background-image:linear-gradient(90deg,rgba(2,9,19,.95) 0%,rgba(2,9,19,.72) 42%,rgba(21,101,166,.16) 100%),url('\/wp-content\/uploads\/2026\/06\/HELDECO-Image24.jpeg');background-size:cover;background-position:center;display:flex;align-items:center}\n    .hh-career .hh-title{max-width:900px}.hh-btn{display:inline-flex;align-items:center;gap:12px;margin-top:36px;padding:18px 24px;border-radius:999px;background:#fff;color:#061a33;text-decoration:none;font-weight:950;letter-spacing:.04em;text-transform:uppercase;box-shadow:0 20px 60px rgba(21,101,166,.35)}.hh-btn:after{content:\"\u2192\";font-size:22px;color:var(--hb)}\n\n    .hh-index{background:radial-gradient(circle at 50% 0%,rgba(21,101,166,.36),transparent 35%),#020913}.hh-index-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:56px}.hh-index-tile{min-height:210px;border:1px solid rgba(89,170,255,.22);background:linear-gradient(180deg,rgba(21,101,166,.18),rgba(255,255,255,.03));border-radius:24px;padding:24px;position:relative;overflow:hidden}.hh-index-tile:before{content:\"\";position:absolute;left:0;right:0;top:0;height:4px;background:var(--hb2);box-shadow:0 0 30px var(--hb2)}.hh-index-number{font-size:clamp(44px,5vw,82px);font-weight:950;letter-spacing:-.08em;line-height:.85}.hh-index-label{margin-top:20px;color:var(--muted);font-weight:750;text-transform:uppercase;letter-spacing:.07em;font-size:13px}\n\n\n\n    .hh-cap-card:nth-child(1){background-image:linear-gradient(145deg,rgba(3,16,31,.88),rgba(21,101,166,.32)),url('\/wp-content\/uploads\/2026\/07\/CNC-Fraesen.jpg');background-size:cover;background-position:center}\n    .hh-cap-card:nth-child(2){background-image:linear-gradient(145deg,rgba(3,16,31,.88),rgba(21,101,166,.30)),url('\/wp-content\/uploads\/2026\/06\/HELDECO-Image34.jpeg');background-size:cover;background-position:center}\n    .hh-flow{background-image:linear-gradient(180deg,rgba(2,9,19,.96),rgba(2,9,19,.91)),url('\/wp-content\/uploads\/2026\/06\/HELDECO-Image30.jpeg');background-size:cover;background-position:center;background-attachment:fixed}\n    .hh-scale{background-image:linear-gradient(180deg,rgba(6,26,51,.94),rgba(2,9,19,.94)),url('\/wp-content\/uploads\/2026\/06\/HELDECO-Image10.jpeg');background-size:cover;background-position:center}\n\n    .hh-industries{background:linear-gradient(180deg,#020913,#061a33)}\n    .hh-ind-board{margin-top:58px;display:grid;grid-template-columns:1.05fr .95fr;gap:22px;align-items:stretch}\n    .hh-ind-hero{position:relative;min-height:640px;border-radius:34px;overflow:hidden;border:1px solid rgba(255,255,255,.12);background-image:linear-gradient(180deg,rgba(2,9,19,.08),rgba(2,9,19,.82)),url('\/wp-content\/uploads\/2026\/06\/HELDECO-Image34.jpeg');background-size:cover;background-position:center;box-shadow:0 36px 110px rgba(0,0,0,.38)}\n    .hh-ind-hero:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at 18% 20%,rgba(21,101,166,.55),transparent 36%),linear-gradient(135deg,rgba(21,101,166,.23),transparent 55%)}\n    .hh-ind-hero-text{position:absolute;left:36px;right:36px;bottom:34px}\n    .hh-ind-hero-text h3{font-size:clamp(42px,6vw,86px);line-height:.88;letter-spacing:-.07em;text-transform:uppercase;margin:0 0 18px;font-weight:950}\n    .hh-ind-hero-text p{font-size:20px;line-height:1.35;color:rgba(255,255,255,.78);max-width:560px;margin:0}\n    .hh-ind-list{display:grid;gap:12px}\n    .hh-ind-row{display:grid;grid-template-columns:58px 1fr;gap:18px;align-items:start;padding:22px;border-radius:24px;background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(21,101,166,.13));border:1px solid rgba(255,255,255,.10);transition:transform .25s ease,background .25s ease,border-color .25s ease}\n    .hh-ind-row:hover{transform:translateX(8px);background:linear-gradient(135deg,rgba(21,101,166,.34),rgba(255,255,255,.08));border-color:rgba(123,183,230,.42)}\n    .hh-ind-no{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#1565a6;color:#fff;font-weight:950;box-shadow:0 0 35px rgba(21,101,166,.5)}\n    .hh-ind-row h3{font-size:clamp(21px,2vw,30px);line-height:1;letter-spacing:-.04em;text-transform:uppercase;margin:2px 0 8px}\n    .hh-ind-row p{font-size:15px;line-height:1.35;color:rgba(255,255,255,.72);margin:0}\n\n    .hh-index{background:#f4f8fc;color:#061a33;overflow:hidden}\n    .hh-index:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at 78% 18%,rgba(21,101,166,.18),transparent 34%),linear-gradient(180deg,#ffffff,#eef5fb);z-index:0}\n    .hh-index .hh-wrap{position:relative;z-index:1}\n    .hh-index .hh-kicker{color:#1565a6}\n    .hh-index .hh-title{color:#061a33}\n    .hh-index .hh-title span{color:#1565a6}\n    .hh-index .hh-sub{color:rgba(6,26,51,.72)}\n    .hh-heavy-index-grid{margin-top:52px;display:grid;grid-template-columns:1fr 1fr 1.45fr 1fr 1fr;gap:14px}\n    .hh-heavy-index-item{min-height:150px;border-radius:26px;background:#fff;border:1px solid rgba(21,101,166,.16);box-shadow:0 24px 70px rgba(6,26,51,.08);padding:22px;display:grid;grid-template-rows:auto 1fr;position:relative;overflow:hidden}\n    .hh-heavy-index-item:before{content:\"\";position:absolute;left:0;top:0;bottom:0;width:5px;background:#1565a6;box-shadow:0 0 34px rgba(21,101,166,.35)}\n    .hh-heavy-index-item.is-feature{background:linear-gradient(135deg,#061a33,#1565a6);color:#fff;border-color:rgba(21,101,166,.28);min-height:190px}\n    .hh-hi-label{font-size:10px;line-height:1.2;letter-spacing:.24em;text-transform:uppercase;font-weight:950;color:rgba(6,26,51,.52);position:relative}\n    .hh-heavy-index-item.is-feature .hh-hi-label{color:rgba(255,255,255,.70)}\n    .hh-hi-value{font-size:clamp(42px,4.6vw,72px);line-height:.82;font-weight:950;letter-spacing:-.075em;color:#1565a6;position:relative;white-space:nowrap;margin-top:22px}\n    .hh-heavy-index-item.is-feature .hh-hi-value{font-size:clamp(72px,7.6vw,128px);color:#fff;letter-spacing:-.09em;margin-top:12px}\n    .hh-hi-copy{font-size:12px;line-height:1.32;color:rgba(6,26,51,.58);margin:10px 0 0;position:relative;max-width:210px}\n    .hh-heavy-index-item.is-feature .hh-hi-copy{font-size:12.5px;color:rgba(255,255,255,.78);max-width:300px}\n    .hh-final-claim{margin-top:46px;border-radius:32px;padding:34px 40px;background:#1565a6;color:#fff;display:flex;justify-content:space-between;gap:28px;align-items:center;overflow:hidden;position:relative;box-shadow:0 26px 70px rgba(21,101,166,.22)}\n    .hh-final-claim:before{content:\"\";position:absolute;right:-110px;top:-130px;width:330px;height:330px;border-radius:50%;border:1px solid rgba(255,255,255,.22);box-shadow:0 0 0 54px rgba(255,255,255,.055)}\n    .hh-final-claim h3{position:relative;margin:0;font-size:clamp(32px,5vw,72px);line-height:.9;letter-spacing:-.07em;text-transform:uppercase;font-weight:950;color:#fff}\n    .hh-final-claim p{position:relative;margin:0;color:rgba(255,255,255,.86);font-size:clamp(17px,1.6vw,22px);line-height:1.25;letter-spacing:.08em;text-transform:uppercase;font-weight:850;max-width:560px}\n\n\n\n    \/* Flow-Modul: responsive stabilisiert, ohne Layout-\u00dcberl\u00e4ufe *\/\n    .hh-flow-line{\n      padding:clamp(16px,2.4vw,30px);\n    }\n\n    .hh-flow-track{\n      grid-template-columns:repeat(3,minmax(0,1fr));\n      gap:clamp(18px,2.4vw,34px) clamp(22px,3.7vw,54px);\n      min-width:0;\n    }\n\n    .hh-flow-item{\n      min-width:0;\n      min-height:clamp(124px,12vw,152px);\n      padding:clamp(18px,1.8vw,22px) clamp(16px,1.7vw,20px) clamp(16px,1.6vw,18px);\n    }\n\n    .hh-flow-num{\n      font-size:clamp(10px,.78vw,11px);\n      line-height:1.1;\n    }\n\n    .hh-flow-name{\n      max-width:100%;\n      font-size:clamp(13px,1.22vw,18px);\n      line-height:1.08;\n      letter-spacing:clamp(.005em,.12vw,.035em);\n      overflow-wrap:anywhere;\n      word-break:normal;\n      hyphens:auto;\n    }\n\n    .hh-flow-copy{\n      max-width:100%;\n      font-size:clamp(12.5px,1.02vw,15px);\n      line-height:1.34;\n      overflow-wrap:break-word;\n      hyphens:auto;\n    }\n\n    @media(max-width:1180px){\n      .hh-flow-track{\n        gap:24px 30px;\n      }\n      .hh-flow-item:not(:nth-child(3n)) .hh-flow-name::after{\n        right:-37px;\n      }\n    }\n\n    @media(max-width:980px){\n      .hh-flow-line{\n        border-radius:26px;\n      }\n      .hh-flow-track{\n        grid-template-columns:repeat(2,minmax(0,1fr));\n        gap:18px;\n      }\n      .hh-flow-item{\n        min-height:0;\n      }\n      .hh-flow-item::before,\n      .hh-flow-item::after,\n      .hh-flow-item:not(:nth-child(3n))::before,\n      .hh-flow-item:not(:nth-child(3n)) .hh-flow-name::after{\n        display:none;\n      }\n      .hh-flow-name{\n        font-size:clamp(14px,2.5vw,17px);\n        letter-spacing:.02em;\n      }\n      .hh-flow-copy{\n        font-size:clamp(13px,2vw,14.5px);\n      }\n    }\n\n    @media(max-width:640px){\n      .hh-flow-line{\n        margin-top:28px;\n        padding:14px;\n        border-radius:22px;\n      }\n      .hh-flow-track{\n        grid-template-columns:1fr;\n        gap:12px;\n      }\n      .hh-flow-item{\n        padding:17px 16px 16px;\n        border-radius:18px;\n      }\n      .hh-flow-name{\n        margin-top:9px;\n        font-size:clamp(13.5px,4.2vw,16px);\n        line-height:1.12;\n      }\n      .hh-flow-copy{\n        font-size:clamp(12.5px,3.8vw,14px);\n        line-height:1.35;\n      }\n    }\n\n    @media(max-width:380px){\n      .hh-flow-line{\n        padding:10px;\n      }\n      .hh-flow-item{\n        padding:15px 13px;\n      }\n      .hh-flow-name{\n        font-size:13px;\n        letter-spacing:.01em;\n      }\n      .hh-flow-copy{\n        font-size:12.5px;\n      }\n    }\n\n    @media(max-width:980px){.hh-cap-grid,.hh-scale-text,.hh-ind-board{grid-template-columns:1fr}.hh-flow-track{grid-template-columns:repeat(2,1fr)}.hh-ind-grid{grid-template-columns:1fr 1fr;height:auto}.hh-ind-card{min-height:310px}.hh-ind-card:hover{grid-column:span 1}.hh-index-grid{grid-template-columns:1fr 1fr}.hh-heavy-index-grid{grid-template-columns:repeat(2,1fr)}.hh-heavy-index-item.is-feature{grid-column:span 2}.hh-section{padding:80px 0}.hh-ind-hero{min-height:420px}.hh-final-claim{display:block}.hh-final-claim p{margin-top:18px}}\n    @media(max-width:640px){.hh-flow{background-attachment:scroll}.hh-wrap{padding:0 18px}.hh-cap-card{min-height:430px;padding:26px}.hh-metrics{left:26px;right:26px;bottom:26px}.hh-flow-track,.hh-ind-grid,.hh-index-grid,.hh-heavy-index-grid{grid-template-columns:1fr}.hh-heavy-index-item.is-feature{grid-column:span 1}.hh-scale-row{overflow-x:auto;justify-content:flex-start;padding-bottom:18px}.hh-scale-point{min-width:max-content}.hh-career{min-height:70vh}}\n  <\/style>\n\n  <section class=\"hh-section hh-blueprint\">\n    <div class=\"hh-wrap\">\n      <div class=\"hh-kicker\">When dimensions get heavy.<\/div>\n      <h2 class=\"hh-title\">Gro\u00df denken.<br><span>Pr\u00e4zise fertigen.<\/span><\/h2>\n      <p class=\"hh-sub\">CNC-Fr\u00e4sen und CNC-Drehen f\u00fcr Bauteile, die au\u00dferhalb des Standards liegen \u2013 mit bis zu 20 Metern L\u00e4nge und 30 Tonnen St\u00fcckgewicht.<\/p>\n      <div class=\"hh-cap-grid\">\n        <article class=\"hh-cap-card\">\n          <div class=\"hh-cad-lines\"><\/div>\n          <h3>CNC-Fr\u00e4sen<\/h3>\n          <div class=\"hh-big-number\"><span class=\"hh-big-prefix\">bis zu<\/span>20<span class=\"hh-unit\">m<\/span><\/div>\n          <div class=\"hh-metrics\">\n<div class=\"hh-metric\"><strong>20<span class=\"hh-unit\">m<\/span><\/strong>Bauteill\u00e4nge<\/div>\n            <div class=\"hh-metric\"><strong>30<span class=\"hh-unit\">t<\/span><\/strong>St\u00fcckgewicht<\/div>\n          <\/div>\n        <\/article>\n        <article class=\"hh-cap-card\">\n          <div class=\"hh-cad-lines\"><\/div>\n          <h3>CNC-Drehen<\/h3>\n          <div class=\"hh-big-number\"><span class=\"hh-big-prefix\">bis zu<\/span><span class=\"hh-turn-number\">3.8<\/span><span class=\"hh-unit\">m \u00d8<\/span><\/div>\n          <div class=\"hh-metrics\">\n            <div class=\"hh-metric\"><strong>7<span class=\"hh-unit\">m<\/span><\/strong>Drehl\u00e4nge<\/div>\n            <div class=\"hh-metric\"><strong>30<span class=\"hh-unit\">t<\/span><\/strong>St\u00fcckgewicht<\/div>\n          <\/div>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n<section class=\"heldeco-mini-facts\"> <div class=\"heldeco-mini-grid\"> <div class=\"heldeco-mini-card\"> <div class=\"heldeco-mini-number\">70<\/div> <div class=\"heldeco-mini-label\">Spezialisten<\/div> <\/div> <div class=\"heldeco-mini-card\"> <div class=\"heldeco-mini-number\">1991<\/div> <div class=\"heldeco-mini-label\">seit<\/div> <\/div> <div class=\"heldeco-mini-card\"> <div class=\"heldeco-mini-number\">16.000<\/div> <div class=\"heldeco-mini-label\">erfolgreiche Projekte<\/div> <\/div> <\/div> <\/section>\n  \n  <section>\n<section class=\"heldeco-cad-cockpit-v5\" id=\"heldeco-cad-cockpit-v5\">\n  <style>\n    .heldeco-cad-cockpit-v5{--hblue:#1565a6;--cyan:#76d9ff;--deep:#03101c;position:relative;overflow:hidden;min-height:900px;background:radial-gradient(circle at 50% 48%,rgba(21,101,166,.34),transparent 30%),radial-gradient(circle at 20% 18%,rgba(118,217,255,.13),transparent 28%),linear-gradient(135deg,#020811 0%,#061727 54%,#0a2236 100%);color:#e9f7ff;font-family:Inter,Arial,sans-serif;isolation:isolate}.heldeco-cad-cockpit-v5 *{box-sizing:border-box}.heldeco-cad-cockpit-v5:before{content:\"\";position:absolute;inset:-20%;opacity:.22;background-image:linear-gradient(rgba(118,217,255,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(118,217,255,.13) 1px,transparent 1px);background-size:46px 46px;transform:perspective(900px) rotateX(62deg) translateY(-150px) scale(1.35);animation:hcv5Grid 18s linear infinite}@keyframes hcv5Grid{to{background-position:0 46px,46px 0}}.heldeco-cad-cockpit-v5:after{content:\"\";position:absolute;inset:0;pointer-events:none;z-index:6;background:linear-gradient(transparent,rgba(255,255,255,.035),transparent);background-size:100% 7px;mix-blend-mode:screen;opacity:.22}.hcv5-wrap{position:relative;z-index:2;max-width:1540px;margin:0 auto;padding:84px 34px 70px}.hcv5-head{display:grid;grid-template-columns:1.15fr .85fr;gap:42px;align-items:end;margin-bottom:30px}.hcv5-kicker{font-size:12px;letter-spacing:.43em;text-transform:uppercase;color:var(--cyan);font-weight:900;margin-bottom:18px}.hcv5-title{margin:0;font-size:clamp(52px,7.4vw,118px);line-height:.88;letter-spacing:-.075em;font-weight:950}.hcv5-title span{color:var(--hblue);text-shadow:0 0 30px rgba(21,101,166,.6)}.hcv5-copy{margin:0 0 6px auto;max-width:610px;font-size:clamp(18px,1.55vw,24px);line-height:1.28;color:#bfd4e3}.hcv5-copy strong{color:#fff}.hcv5-stage{position:relative;min-height:640px;border:1px solid rgba(118,217,255,.26);border-radius:34px;overflow:hidden;background:linear-gradient(140deg,rgba(255,255,255,.05),rgba(255,255,255,.012));box-shadow:0 42px 120px rgba(0,0,0,.42),inset 0 0 90px rgba(21,101,166,.14)}.hcv5-canvas{position:absolute;inset:0;z-index:3}.hcv5-canvas canvas{width:100%;height:100%;display:block}.hcv5-ring{position:absolute;left:50%;top:50%;width:min(860px,70vw);height:min(860px,70vw);transform:translate(-50%,-50%);border:1px solid rgba(118,217,255,.34);border-radius:50%;z-index:1;box-shadow:0 0 70px rgba(21,101,166,.24),inset 0 0 70px rgba(21,101,166,.15);animation:hcv5Ring 28s linear infinite}.hcv5-ring:before,.hcv5-ring:after{content:\"\";position:absolute;inset:12%;border:1px dashed rgba(118,217,255,.28);border-radius:50%}.hcv5-ring:after{inset:30%;border-style:solid;opacity:.5;animation:hcv5Ring2 16s linear infinite}@keyframes hcv5Ring{to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes hcv5Ring2{to{transform:rotate(-360deg)}}.hcv5-axis-x,.hcv5-axis-y{position:absolute;z-index:1;background:rgba(118,217,255,.22)}.hcv5-axis-x{height:1px;left:3%;right:3%;top:50%}.hcv5-axis-y{width:1px;top:5%;bottom:5%;left:50%}.hcv5-measure{position:absolute;z-index:4;color:#e8fbff;font-weight:900;text-transform:uppercase;letter-spacing:.13em;font-size:12px;text-shadow:0 0 12px rgba(118,217,255,.85);pointer-events:none}.hcv5-measure:before{content:\"\";display:inline-block;width:40px;height:1px;background:var(--cyan);vertical-align:middle;margin-right:10px;box-shadow:0 0 16px var(--cyan)}.hcv5-m1{left:6%;top:30%}.hcv5-m2{right:6%;top:21%}.hcv5-m3{left:7%;bottom:23%}.hcv5-m4{right:8%;bottom:22%}.hcv5-panel{position:absolute;z-index:5;border:1px solid rgba(118,217,255,.28);border-radius:22px;background:rgba(2,12,23,.66);backdrop-filter:blur(16px);box-shadow:inset 0 0 22px rgba(21,101,166,.12)}.hcv5-right{right:24px;top:24px;width:295px;padding:18px}.hcv5-right h4{margin:0 0 14px;font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--cyan)}.hcv5-read{display:grid;grid-template-columns:1fr auto;gap:10px 14px;font-size:11px;color:#a8bdcc;text-transform:uppercase;letter-spacing:.13em}.hcv5-read b{color:#fff;font-size:18px;letter-spacing:-.03em;text-transform:none}.hcv5-bar{grid-column:1\/-1;height:4px;background:rgba(255,255,255,.1);border-radius:99px;overflow:hidden}.hcv5-bar i{display:block;height:100%;width:74%;background:linear-gradient(90deg,var(--hblue),var(--cyan));box-shadow:0 0 20px var(--hblue);animation:hcv5Bar 2.8s ease-in-out infinite}@keyframes hcv5Bar{50%{width:100%;opacity:.82}}.hcv5-status{position:absolute;left:24px;top:24px;z-index:5;max-width:330px;padding:18px 20px;border:1px solid rgba(118,217,255,.22);border-radius:22px;background:rgba(2,12,23,.48);backdrop-filter:blur(14px)}.hcv5-status .a{font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--cyan);font-weight:900;margin-bottom:10px}.hcv5-status .b{font-size:22px;line-height:1.05;font-weight:950;letter-spacing:-.035em}.hcv5-status .b span{color:var(--hblue)}.hcv5-bottom{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:22px}.hcv5-card{position:relative;overflow:hidden;border:1px solid rgba(21,101,166,.27);border-radius:26px;background:linear-gradient(135deg,rgba(255,255,255,.08),rgba(255,255,255,.025));padding:28px 30px;min-height:160px}.hcv5-card h3{margin:0 0 18px;font-size:14px;letter-spacing:.25em;text-transform:uppercase;color:var(--cyan)}.hcv5-specs{display:flex;gap:26px;flex-wrap:wrap;align-items:baseline}.hcv5-specs strong{font-size:clamp(46px,5.7vw,86px);line-height:.9;color:white;letter-spacing:-.07em}.hcv5-specs em{font-style:normal;color:var(--hblue)}.hcv5-specs small{display:block;margin-top:8px;color:#a8bdcc;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.12em}@media(max-width:980px){.hcv5-head,.hcv5-bottom{grid-template-columns:1fr}.hcv5-copy{margin:0}.hcv5-status,.hcv5-right{display:none}.hcv5-stage{min-height:560px}.hcv5-measure{display:none}}\n  <\/style>\n\n<section class=\"hc-visualizer\" id=\"hc-visualizer\">\n<style>\n.hc-visualizer{\n  --blue:#1565a6;\n  --cyan:#76d9ff;\n  --amber:#ffb454;\n  --humanScale:1;\n  position:relative;\n  min-height:100vh;\n  overflow:hidden;\n  background:\n    radial-gradient(circle at 50% 42%,rgba(21,101,166,.36),transparent 34%),\n    linear-gradient(135deg,#020913 0%,#061a2f 55%,#08243b 100%);\n  color:#eef8ff;\n  font-family:Inter,Arial,sans-serif;\n}\n.hc-visualizer *{box-sizing:border-box}\n.hc-visualizer:before{\n  content:\"\";\n  position:absolute;\n  inset:-30%;\n  background-image:\n    linear-gradient(rgba(118,217,255,.10) 1px,transparent 1px),\n    linear-gradient(90deg,rgba(118,217,255,.10) 1px,transparent 1px);\n  background-size:48px 48px;\n  transform:perspective(900px) rotateX(62deg) translateY(-160px) scale(1.4);\n  opacity:.24;\n  animation:hcGrid 26s linear infinite;\n}\n@keyframes hcGrid{to{background-position:0 48px,48px 0}}\n\n.hc-wrap{position:relative;z-index:2;max-width:1480px;margin:0 auto;padding:80px 32px 60px}\n.hc-kicker{font-size:12px;letter-spacing:.44em;color:var(--cyan);font-weight:950;text-transform:uppercase;margin-bottom:18px;display:flex;align-items:center;gap:12px}\n.hc-kicker .hc-live{display:inline-flex;align-items:center;gap:7px;color:#8fffb0;font-size:10px;letter-spacing:.24em}\n.hc-kicker .hc-live i{width:6px;height:6px;border-radius:50%;background:#43ff8c;box-shadow:0 0 10px #43ff8c;animation:hcPulseDot 1.6s ease-in-out infinite}\n@keyframes hcPulseDot{0%,100%{opacity:1}50%{opacity:.25}}\n.hc-title{margin:0 0 34px;max-width:900px;font-size:clamp(54px,8vw,128px);line-height:.84;letter-spacing:-.08em;font-weight:950}\n.hc-title span{color:var(--blue);text-shadow:0 0 36px rgba(21,101,166,.8)}\n\n.hc-stage{\n  position:relative;\n  min-height:670px;\n  border-radius:34px;\n  border:1px solid rgba(118,217,255,.26);\n  background:linear-gradient(140deg,rgba(255,255,255,.06),rgba(255,255,255,.015));\n  box-shadow:0 44px 130px rgba(0,0,0,.45), inset 0 0 100px rgba(21,101,166,.16);\n  overflow:hidden;\n}\n.hc-ring{\n  position:absolute;left:50%;top:50%;\n  width:min(820px,68vw);height:min(820px,68vw);\n  transform:translate(-50%,-50%);\n  border-radius:50%;\n  border:1px solid rgba(118,217,255,.28);\n  box-shadow:0 0 80px rgba(21,101,166,.25), inset 0 0 80px rgba(21,101,166,.15);\n  animation:hcRing 38s linear infinite;\n}\n.hc-ring:before,.hc-ring:after{content:\"\";position:absolute;border-radius:50%;border:1px dashed rgba(118,217,255,.24)}\n.hc-ring:before{inset:14%}\n.hc-ring:after{inset:33%;border-style:solid;opacity:.5}\n@keyframes hcRing{to{transform:translate(-50%,-50%) rotate(360deg)}}\n\n.hc-axis-x,.hc-axis-y{position:absolute;background:rgba(118,217,255,.20)}\n.hc-axis-x{height:1px;left:4%;right:4%;top:50%}\n.hc-axis-y{width:1px;top:6%;bottom:6%;left:50%}\n.hc-canvas{position:absolute;inset:0;z-index:3;cursor:grab}\n.hc-canvas:active{cursor:grabbing}\n\n.hc-chip{\n  position:absolute;\n  z-index:5;\n  border-radius:22px;\n  border:1px solid rgba(118,217,255,.28);\n  background:rgba(2,12,23,.68);\n  backdrop-filter:blur(16px);\n  box-shadow:inset 0 0 25px rgba(21,101,166,.13),0 20px 55px rgba(0,0,0,.28);\n}\n.hc-status{left:24px;top:24px;max-width:360px;padding:18px 20px}\n.hc-status small{display:block;color:var(--cyan);font-size:10px;letter-spacing:.32em;text-transform:uppercase;font-weight:950;margin-bottom:10px}\n.hc-status strong{display:block;font-size:23px;line-height:1.04;letter-spacing:-.04em;font-weight:950}\n.hc-status span{color:var(--blue)}\n.hc-badge{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:5px 11px;border-radius:999px;font-size:9px;font-weight:950;letter-spacing:.2em;text-transform:uppercase}\n.hc-badge.is-scan{background:rgba(67,255,140,.14);color:#8fffb0;border:1px solid rgba(67,255,140,.4)}\n.hc-badge.is-concept{background:rgba(255,180,84,.12);color:var(--amber);border:1px solid rgba(255,180,84,.36)}\n.hc-badge i{width:5px;height:5px;border-radius:50%;background:currentColor}\n\n.hc-cockpit{\n  right:24px;top:24px;width:330px;padding:20px 20px 22px;\n  display:flex;flex-direction:column;gap:18px;\n  max-height:calc(100% - 210px);\n  overflow-y:auto;\n  scrollbar-width:thin;\n  scrollbar-color:rgba(118,217,255,.4) transparent;\n  mask-image:linear-gradient(to bottom,transparent 0,#000 14px,#000 calc(100% - 14px),transparent 100%);\n}\n.hc-cockpit::-webkit-scrollbar{width:4px}\n.hc-cockpit::-webkit-scrollbar-thumb{background:rgba(118,217,255,.35);border-radius:4px}\n.hc-selector{left:24px;bottom:24px;width:300px;padding:18px}\n.hc-selector h4,.hc-cockpit h4{margin:0 0 15px;color:var(--cyan);font-size:11px;letter-spacing:.28em;text-transform:uppercase;font-weight:950}\n.hc-read{display:grid;grid-template-columns:1fr auto;gap:12px 14px;font-size:11px;color:rgba(238,248,255,.62);text-transform:uppercase;letter-spacing:.14em;font-weight:850}\n.hc-read b{color:#fff;font-size:18px;letter-spacing:-.03em;text-transform:none}\n\n.hc-option{\n  width:100%;\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  border:0;\n  border-radius:14px;\n  padding:13px 14px;\n  margin-top:8px;\n  background:rgba(255,255,255,.045);\n  color:#fff;\n  font-size:12px;\n  font-weight:950;\n  letter-spacing:.12em;\n  text-transform:uppercase;\n  cursor:pointer;\n  transition:.25s ease;\n}\n.hc-option span{color:rgba(118,217,255,.75);font-size:10px}\n.hc-option:hover,.hc-option.is-active{background:rgba(21,101,166,.48);box-shadow:0 0 30px rgba(21,101,166,.28)}\n.hc-option .hc-dot{width:6px;height:6px;border-radius:50%;background:#43ff8c;box-shadow:0 0 8px #43ff8c;margin-right:8px;display:inline-block}\n.hc-option .hc-dot.is-off{background:rgba(255,255,255,.22);box-shadow:none}\n\n.hc-scan{\n  position:absolute;z-index:4;top:0;bottom:0;width:2px;left:50%;\n  background:linear-gradient(to bottom,transparent,var(--cyan),transparent);\n  box-shadow:0 0 30px var(--cyan),0 0 80px rgba(118,217,255,.45);\n  opacity:0;\n}\n.hc-stage.is-scanning .hc-scan{animation:hcScan 1.1s ease-in-out}\n@keyframes hcScan{0%{left:12%;opacity:0}12%{opacity:1}88%{opacity:1}100%{left:88%;opacity:0}}\n\n.hc-scroll-arrow{display:none}\n\n.hc-help{\n  position:absolute;\n  z-index:6;\n  left:50%;\n  bottom:24px;\n  transform:translateX(-50%);\n  padding:14px 18px;\n  border-radius:999px;\n  border:1px solid rgba(118,217,255,.24);\n  background:rgba(2,12,23,.55);\n  color:rgba(238,248,255,.72);\n  font-size:11px;\n  font-weight:900;\n  letter-spacing:.18em;\n  text-transform:uppercase;\n}\n\n.hc-dock{\n  position:absolute;\n  z-index:7;\n  right:24px;\n  bottom:24px;\n  display:flex;\n  flex-direction:column;\n  align-items:flex-end;\n  gap:12px;\n}\n\n.hc-mini-row{display:flex;gap:10px}\n.hc-mini-toggle{\n  position:relative;\n  width:46px;height:46px;\n  border-radius:15px;\n  border:1px solid rgba(118,217,255,.28);\n  background:rgba(2,12,23,.72);\n  display:flex;align-items:center;justify-content:center;\n  cursor:pointer;\n  backdrop-filter:blur(16px);\n  box-shadow:inset 0 0 18px rgba(21,101,166,.12),0 16px 38px rgba(0,0,0,.25);\n  transition:.22s ease;\n}\n.hc-mini-toggle.is-disabled{opacity:.35;pointer-events:none}\n.hc-mini-toggle input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}\n.hc-mini-toggle svg{width:19px;height:19px;stroke:rgba(238,248,255,.68);transition:.2s ease;pointer-events:none}\n.hc-mini-toggle.is-checked{background:rgba(21,101,166,.55);box-shadow:0 0 26px rgba(118,217,255,.42),inset 0 0 18px rgba(21,101,166,.2)}\n.hc-mini-toggle.is-checked svg{stroke:#fff}\n\n.hc-clip-slider{\n  display:none;\n  align-items:center;\n  gap:10px;\n  padding:11px 16px;\n  border-radius:999px;\n  border:1px solid rgba(118,217,255,.22);\n  background:rgba(2,12,23,.65);\n  backdrop-filter:blur(14px);\n}\n.hc-clip-slider.is-visible{display:flex}\n.hc-clip-slider input[type=range]{-webkit-appearance:none;width:130px;height:3px;background:rgba(118,217,255,.3);border-radius:3px;outline:none}\n.hc-clip-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan);cursor:pointer}\n.hc-clip-slider span{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:rgba(238,248,255,.6);font-weight:850}\n\n.hc-scale-dock{\n  position:relative;\n  display:flex;align-items:center;gap:13px;\n  padding:11px 20px 11px 12px;\n  border-radius:20px;\n  border:1px solid rgba(118,217,255,.3);\n  background:linear-gradient(135deg,rgba(21,101,166,.24),rgba(2,12,23,.8));\n  backdrop-filter:blur(18px);\n  box-shadow:inset 0 0 26px rgba(21,101,166,.16),0 20px 50px rgba(0,0,0,.3);\n  cursor:pointer;\n  user-select:none;\n  transition:.25s ease;\n}\n.hc-scale-dock:hover{box-shadow:inset 0 0 30px rgba(21,101,166,.24),0 20px 55px rgba(0,0,0,.36)}\n.hc-scale-dock input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}\n.hc-scale-icon{\n  width:38px;height:38px;flex-shrink:0;border-radius:50%;\n  background:rgba(118,217,255,.12);\n  border:1px solid rgba(118,217,255,.42);\n  display:flex;align-items:center;justify-content:center;\n}\n.hc-scale-icon svg{width:18px;height:18px;stroke:var(--cyan)}\n.hc-scale-text{display:flex;flex-direction:column;gap:3px}\n.hc-scale-text b{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:950;color:#fff;white-space:nowrap}\n.hc-scale-text small{font-size:10px;letter-spacing:.03em;color:rgba(238,248,255,.55);font-weight:700;white-space:nowrap}\n.hc-scale-text small b{font-size:10px;color:var(--cyan);text-transform:none;letter-spacing:0}\n.hc-scale-switch{\n  width:40px;height:22px;border-radius:999px;flex-shrink:0;\n  background:rgba(255,255,255,.08);\n  border:1px solid rgba(118,217,255,.3);\n  position:relative;\n  transition:.25s ease;\n}\n.hc-scale-knob{\n  position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;\n  background:linear-gradient(180deg,#fff,#cfeeff);\n  box-shadow:0 2px 6px rgba(0,0,0,.35);\n  transition:.25s cubic-bezier(.2,.8,.2,1);\n}\n.hc-scale-dock.is-checked .hc-scale-switch{background:rgba(21,101,166,.65);box-shadow:0 0 16px rgba(118,217,255,.5)}\n.hc-scale-dock.is-checked .hc-scale-knob{transform:translateX(18px);background:linear-gradient(180deg,#fff,#9fe6ff)}\n\n.hc-zoom-dock{\n  position:absolute;\n  z-index:7;\n  right:14px;\n  top:50%;\n  transform:translateY(-50%);\n  display:flex;\n  flex-direction:column;\n  align-items:center;\n  gap:10px;\n  padding:14px 9px;\n  border-radius:20px;\n  border:1px solid rgba(118,217,255,.24);\n  background:rgba(2,12,23,.6);\n  backdrop-filter:blur(14px);\n  box-shadow:inset 0 0 18px rgba(21,101,166,.1),0 16px 38px rgba(0,0,0,.22);\n}\n.hc-zoom-icon{width:14px;height:14px;stroke:rgba(238,248,255,.55);flex-shrink:0}\n.hc-zoom-track-wrap{width:26px;height:150px;display:flex;align-items:center;justify-content:center;overflow:hidden}\n.hc-zoom-slider{\n  width:150px;height:26px;\n  transform:rotate(-90deg);\n  -webkit-appearance:none;appearance:none;background:transparent;cursor:pointer;\n  --zoomFill:50%;\n}\n.hc-zoom-slider::-webkit-slider-runnable-track{\n  height:3px;border-radius:3px;\n  background:linear-gradient(to right,var(--cyan) 0%,var(--cyan) var(--zoomFill),rgba(255,255,255,.14) var(--zoomFill),rgba(255,255,255,.14) 100%);\n}\n.hc-zoom-slider::-webkit-slider-thumb{\n  -webkit-appearance:none;width:14px;height:14px;border-radius:50%;\n  background:linear-gradient(180deg,#fff,#cfeeff);box-shadow:0 0 10px var(--cyan);margin-top:-5.5px;cursor:pointer;\n}\n.hc-zoom-slider::-moz-range-track{height:3px;border-radius:3px;background:rgba(255,255,255,.14)}\n.hc-zoom-slider::-moz-range-progress{height:3px;border-radius:3px;background:var(--cyan)}\n.hc-zoom-slider::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:linear-gradient(180deg,#fff,#cfeeff);box-shadow:0 0 10px var(--cyan);cursor:pointer}\n\n.hc-human-ref{\n  position:absolute;\n  z-index:6;\n  right:24px;\n  bottom:172px;\n  width:120px;\n  height:255px;\n  opacity:0;\n  pointer-events:none;\n  transform:translateY(10px) scale(var(--humanScale));\n  transform-origin:right bottom;\n  transition:opacity .3s ease, transform .22s ease;\n}\n.hc-human-ref.is-visible{opacity:1}\n\n.hc-human-inner{\n  position:absolute;\n  left:0;\n  bottom:0;\n  width:80px;\n  height:218px;\n  filter:drop-shadow(0 0 20px rgba(118,217,255,.45));\n}\n.hc-human-figure{position:absolute;left:17px;bottom:18px;width:42px;height:178px}\n.hc-human-figure:before{\n  content:\"\";\n  position:absolute;\n  left:50%;\n  top:0;\n  width:30px;\n  height:30px;\n  transform:translateX(-50%);\n  border-radius:50%;\n  background:linear-gradient(180deg,rgba(118,217,255,.95),rgba(21,101,166,.42));\n  border:1px solid rgba(190,242,255,.85);\n  box-shadow:0 0 28px rgba(118,217,255,.42);\n}\n.hc-human-body{\n  position:absolute;\n  left:50%;\n  top:34px;\n  width:34px;\n  height:74px;\n  transform:translateX(-50%);\n  border-radius:18px 18px 12px 12px;\n  background:linear-gradient(180deg,rgba(118,217,255,.82),rgba(21,101,166,.32));\n  border:1px solid rgba(190,242,255,.66);\n}\n.hc-human-arm,.hc-human-leg{\n  position:absolute;\n  border-radius:999px;\n  background:linear-gradient(180deg,rgba(118,217,255,.74),rgba(21,101,166,.28));\n  border:1px solid rgba(190,242,255,.48);\n}\n.hc-human-arm{top:43px;width:10px;height:72px}\n.hc-human-arm.left{left:-2px;transform:rotate(8deg)}\n.hc-human-arm.right{right:-2px;transform:rotate(-8deg)}\n.hc-human-leg{top:105px;width:12px;height:72px}\n.hc-human-leg.left{left:8px;transform:rotate(3deg)}\n.hc-human-leg.right{right:8px;transform:rotate(-3deg)}\n.hc-human-base{position:absolute;left:0;bottom:0;width:82px;height:1px;background:rgba(118,217,255,.8);box-shadow:0 0 20px rgba(118,217,255,.7)}\n.hc-human-ruler{position:absolute;right:8px;bottom:18px;width:1px;height:178px;background:linear-gradient(to bottom,rgba(118,217,255,.95),rgba(118,217,255,.22));box-shadow:0 0 18px rgba(118,217,255,.55)}\n.hc-human-ruler:before,.hc-human-ruler:after{content:\"\";position:absolute;right:0;width:18px;height:1px;background:rgba(118,217,255,.9)}\n.hc-human-ruler:before{top:0}\n.hc-human-ruler:after{bottom:0}\n.hc-human-text{\n  position:absolute;\n  right:0;\n  top:14px;\n  transform:translateX(42%) rotate(90deg);\n  transform-origin:right top;\n  color:rgba(238,248,255,.82);\n  font-size:10px;\n  font-weight:950;\n  letter-spacing:.18em;\n  text-transform:uppercase;\n  white-space:nowrap;\n  text-shadow:0 0 12px rgba(118,217,255,.5);\n}\n\n.hc-loadbar{\n  position:absolute;\n  z-index:8;\n  left:50%;\n  top:50%;\n  transform:translate(-50%,-50%);\n  width:220px;\n  text-align:center;\n  opacity:0;\n  pointer-events:none;\n  transition:opacity .35s ease;\n}\n.hc-loadbar.is-visible{opacity:1}\n.hc-loadbar small{display:block;font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--cyan);margin-bottom:10px;font-weight:950}\n.hc-loadbar-track{height:3px;border-radius:3px;background:rgba(255,255,255,.08);overflow:hidden}\n.hc-loadbar-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--blue),var(--cyan));box-shadow:0 0 14px rgba(118,217,255,.7);transition:width .18s linear}\n.hc-loadbar b{display:block;margin-top:8px;font-size:20px;font-weight:950;color:#fff}\n\n.hc-button-wrap{display:flex;justify-content:center;margin-top:38px}\n.hc-button{\n  display:inline-flex;align-items:center;justify-content:center;\n  min-width:360px;padding:22px 38px;border-radius:18px;\n  border:1px solid rgba(118,217,255,.36);\n  color:#fff;text-decoration:none;text-transform:uppercase;\n  font-size:13px;font-weight:950;letter-spacing:.30em;\n  background:rgba(2,12,23,.68);\n  box-shadow:0 0 40px rgba(21,101,166,.25),inset 0 0 28px rgba(21,101,166,.12);\n}\n@media(max-width:900px){\n  .hc-wrap{padding:32px 14px 24px}\n  .hc-kicker{font-size:10px;letter-spacing:.3em;gap:8px;flex-wrap:wrap}\n  .hc-title{font-size:clamp(32px,11vw,50px);margin-bottom:20px}\n\n  .hc-stage{min-height:80vh;border-radius:22px}\n\n  \/* Selector: clean pill tab-bar, pinned to the very top. No index\n     numbers or scan-dots on mobile -- just the name, snap-scrolling,\n     with a soft edge fade to hint there's more to scroll. *\/\n  .hc-selector{\n    top:12px;left:12px;right:12px;bottom:auto;width:auto;\n    display:flex;gap:8px;overflow-x:auto;padding:8px;border-radius:999px;\n    -webkit-overflow-scrolling:touch;\n    scroll-snap-type:x proximity;\n    mask-image:linear-gradient(to right,transparent 0,#000 18px,#000 calc(100% - 18px),transparent 100%);\n  }\n  .hc-selector h4{display:none}\n  .hc-selector .hc-option{\n    scroll-snap-align:center;\n    width:auto;flex:0 0 auto;margin-top:0;white-space:nowrap;\n    padding:12px 20px;font-size:12px;border-radius:999px;\n  }\n  .hc-selector .hc-option span{display:none}\n\n  \/* Scroll arrows: small circular buttons overlapping the selector's\n     edge fade, hinting (and enabling) horizontal scroll on mobile. *\/\n  .hc-scroll-arrow{\n    display:flex;align-items:center;justify-content:center;\n    position:absolute;z-index:9;top:40px;transform:translateY(-50%);\n    width:28px;height:28px;border-radius:50%;\n    border:1px solid rgba(118,217,255,.32);\n    background:rgba(2,12,23,.78);\n    backdrop-filter:blur(10px);\n    box-shadow:0 8px 20px rgba(0,0,0,.35);\n    opacity:1;transition:opacity .2s ease;\n    padding:0;cursor:pointer;\n  }\n  .hc-scroll-arrow svg{width:15px;height:15px;stroke:var(--cyan)}\n  .hc-scroll-arrow.is-hidden{opacity:0;pointer-events:none}\n  .hc-scroll-arrow-left{left:18px}\n  .hc-scroll-arrow-right{right:18px}\n\n  \/* Status chip: shrink and shift down below the selector strip *\/\n  .hc-status{top:88px;max-width:calc(100% - 96px);padding:12px 14px;border-radius:16px}\n  .hc-status small{font-size:8px;margin-bottom:6px}\n  .hc-status strong{font-size:16px}\n  .hc-badge{margin-top:8px;padding:4px 9px;font-size:8px}\n\n  \/* Tool icons: small row, shifted down to align with the status chip *\/\n  .hc-dock{\n    top:88px;right:14px;bottom:auto;left:auto;\n    flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:8px;\n    max-width:calc(100% - 28px);\n  }\n  .hc-mini-toggle{width:38px;height:38px;border-radius:12px}\n  .hc-mini-toggle svg{width:16px;height:16px}\n  .hc-scale-dock{display:none}\n  .hc-clip-slider{padding:9px 12px}\n  .hc-clip-slider input[type=range]{width:90px}\n\n  \/* Cockpit: collapses into a horizontal stat strip, now owns the bottom *\/\n  .hc-cockpit{\n    top:auto;right:12px;left:12px;bottom:12px;width:auto;\n    max-height:none;padding:10px 16px;border-radius:16px;\n    mask-image:none;overflow:visible;\n  }\n  .hc-cockpit h4{display:none}\n  .hc-cockpit .hc-read{\n    grid-template-columns:none;\n    grid-auto-flow:column;\n    grid-template-rows:auto auto;\n    gap:3px 18px;\n    overflow-x:auto;\n    font-size:8px;\n  }\n  .hc-cockpit .hc-read span{grid-row:1;white-space:nowrap}\n  .hc-cockpit .hc-read b{grid-row:2;font-size:13px;white-space:nowrap}\n\n  \/* Zoom bar and human-scale figure need more room than a phone has;\n     touch users pinch-to-zoom and drag-to-rotate directly instead. *\/\n  .hc-zoom-dock,.hc-human-ref,.hc-help{display:none}\n}\n@media(max-width:420px){\n  .hc-title{font-size:clamp(28px,12vw,40px)}\n  .hc-status{max-width:calc(100% - 84px);padding:10px 12px}\n  .hc-cockpit .hc-read{gap:2px 14px;font-size:7px}\n  .hc-cockpit .hc-read b{font-size:12px}\n  .hc-selector .hc-option{padding:10px 12px;font-size:9px}\n  .hc-mini-toggle{width:34px;height:34px}\n}\n<\/style>\n\n<div class=\"hc-wrap\">\n  <div class=\"hc-kicker\">FROM EASY TO HEAVY <span class=\"hc-live\"><i><\/i>Live Component Feed<\/span><\/div>\n  <h2 class=\"hc-title\">Built for <span>heavy.<\/span><br>Ready for everything.<\/h2>\n\n  <div class=\"hc-stage\" id=\"hcStage\">\n    <div class=\"hc-ring\"><\/div>\n    <div class=\"hc-axis-x\"><\/div>\n    <div class=\"hc-axis-y\"><\/div>\n    <div class=\"hc-scan\"><\/div>\n\n    <div class=\"hc-chip hc-status\">\n      <small>HELDECO COMPONENT VISUALIZER<\/small>\n      <strong><span id=\"hcName\">Heavy Shaft<\/span><br>component loaded.<\/strong>\n      <div class=\"hc-badge\" id=\"hcBadge\"><i><\/i><span id=\"hcBadgeText\">Konzept-Vorschau<\/span><\/div>\n    <\/div>\n\n    <div class=\"hc-chip hc-cockpit\">\n      <div>\n        <h4>Live Parameters<\/h4>\n        <div class=\"hc-read\">\n          <span>Length<\/span><b id=\"hcLength\">5.830 mm<\/b>\n          <span>Diameter<\/span><b id=\"hcDiameter\">\u00d8 1.244 mm<\/b>\n          <span>Mass<\/span><b id=\"hcMass\">21,06 t<\/b>\n          <span>Process<\/span><b id=\"hcProcess\">Multitasking<\/b>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <button class=\"hc-scroll-arrow hc-scroll-arrow-left\" id=\"hcScrollLeft\" aria-label=\"Vorherige Bauteile\" type=\"button\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M15 5l-7 7 7 7\"\/><\/svg>\n    <\/button>\n    <div class=\"hc-chip hc-selector\" id=\"hcSelector\">\n      <h4>Components<\/h4>\n      <button class=\"hc-option is-active\" data-type=\"shaft\"><span><i class=\"hc-dot\"><\/i>01<\/span>Heavy Shaft<\/button>\n      <button class=\"hc-option\" data-type=\"impeller\"><span><i class=\"hc-dot\"><\/i>02<\/span>Impeller<\/button>\n      <button class=\"hc-option\" data-type=\"ring\"><span><i class=\"hc-dot\"><\/i>03<\/span>Ring Body<\/button>\n      <button class=\"hc-option\" data-type=\"housing\"><span><i class=\"hc-dot\"><\/i>04<\/span>Heavy Housing<\/button>\n      <button class=\"hc-option\" data-type=\"flow\"><span><i class=\"hc-dot\"><\/i>05<\/span>Flow Control<\/button>\n    <\/div>\n    <button class=\"hc-scroll-arrow hc-scroll-arrow-right\" id=\"hcScrollRight\" aria-label=\"Weitere Bauteile\" type=\"button\">\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 5l7 7-7 7\"\/><\/svg>\n    <\/button>\n\n    <div class=\"hc-dock\">\n      <div class=\"hc-clip-slider\" id=\"hcClipSliderWrap\">\n        <span>Ebene<\/span>\n        <input type=\"range\" id=\"hcClipSlider\" min=\"-100\" max=\"100\" value=\"0\">\n      <\/div>\n\n      <div class=\"hc-mini-row\">\n        <label class=\"hc-mini-toggle\" id=\"hcZoneToggleWrap\" title=\"Fertigungszonen\">\n          <input type=\"checkbox\" id=\"hcZoneToggle\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M12 3 3 8l9 5 9-5-9-5Z\"\/><path d=\"M3 13l9 5 9-5\"\/>\n          <\/svg>\n        <\/label>\n        <label class=\"hc-mini-toggle\" title=\"Querschnitt\">\n          <input type=\"checkbox\" id=\"hcClipToggle\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M3 12h18\"\/><path d=\"M7 5v14\"\/><path d=\"M17 5v14\"\/>\n          <\/svg>\n        <\/label>\n      <\/div>\n\n      <label class=\"hc-scale-dock\" id=\"hcScaleDock\">\n        <input type=\"checkbox\" id=\"hcScaleToggle\">\n        <span class=\"hc-scale-icon\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <circle cx=\"12\" cy=\"6\" r=\"2.6\"\/><path d=\"M7 21v-6.5L5 12l2-5h10l2 5-2 2.5V21\"\/>\n          <\/svg>\n        <\/span>\n        <span class=\"hc-scale-text\">\n          <b>Menschlicher Ma\u00dfstab<\/b>\n          <small>1,80 m Referenz \u00b7 <b id=\"hcScaleRatio\">\u2014<\/b><\/small>\n        <\/span>\n        <span class=\"hc-scale-switch\"><span class=\"hc-scale-knob\"><\/span><\/span>\n      <\/label>\n    <\/div>\n\n    <div class=\"hc-human-ref\" id=\"hcHumanRef\">\n      <div class=\"hc-human-inner\">\n        <div class=\"hc-human-figure\">\n          <div class=\"hc-human-body\"><\/div>\n          <div class=\"hc-human-arm left\"><\/div>\n          <div class=\"hc-human-arm right\"><\/div>\n          <div class=\"hc-human-leg left\"><\/div>\n          <div class=\"hc-human-leg right\"><\/div>\n        <\/div>\n        <div class=\"hc-human-base\"><\/div>\n      <\/div>\n      <div class=\"hc-human-ruler\"><\/div>\n      <div class=\"hc-human-text\">scale reference 1.80 m<\/div>\n    <\/div>\n\n    <div class=\"hc-loadbar\" id=\"hcLoadbar\">\n      <small>Scandaten werden geladen<\/small>\n      <div class=\"hc-loadbar-track\"><div class=\"hc-loadbar-fill\" id=\"hcLoadbarFill\"><\/div><\/div>\n      <b id=\"hcLoadbarPct\">0%<\/b>\n    <\/div>\n\n    <div class=\"hc-zoom-dock\">\n      <svg class=\"hc-zoom-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"10\" cy=\"10\" r=\"6\"\/><path d=\"M20 20l-4.5-4.5\"\/><path d=\"M10 7v6M7 10h6\"\/><\/svg>\n      <div class=\"hc-zoom-track-wrap\">\n        <input type=\"range\" class=\"hc-zoom-slider\" id=\"hcZoomSlider\" min=\"8\" max=\"22\" step=\"0.1\" value=\"15\">\n      <\/div>\n      <svg class=\"hc-zoom-icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"10\" cy=\"10\" r=\"6\"\/><path d=\"M20 20l-4.5-4.5\"\/><path d=\"M7 10h6\"\/><\/svg>\n    <\/div>\n\n    <div class=\"hc-help\">Drag to rotate \u00b7 Scroll to zoom<\/div>\n    <div class=\"hc-canvas\" id=\"hcCanvas\"><\/div>\n  <\/div>\n\n<\/div>\n\n<script src=\"https:\/\/unpkg.com\/three@0.160.0\/build\/three.min.js\"><\/script>\n<script>\n(function(){\n  const mount=document.getElementById('hcCanvas');\n  const stage=document.getElementById('hcStage');\n  const scaleToggle=document.getElementById('hcScaleToggle');\n  const humanRef=document.getElementById('hcHumanRef');\n  const zoneToggle=document.getElementById('hcZoneToggle');\n  const zoneToggleWrap=document.getElementById('hcZoneToggleWrap');\n  const clipToggle=document.getElementById('hcClipToggle');\n  const clipSliderWrap=document.getElementById('hcClipSliderWrap');\n  const clipSlider=document.getElementById('hcClipSlider');\n  const loadbar=document.getElementById('hcLoadbar');\n  const loadbarFill=document.getElementById('hcLoadbarFill');\n  const loadbarPct=document.getElementById('hcLoadbarPct');\n  const visualizer=document.getElementById('hc-visualizer');\n  if(!mount || !window.THREE) return;\n\n  const THREE=window.THREE;\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Scanned geometry, hosted in the WordPress media library. Relative\n  \/\/ paths are used on purpose so this keeps working across staging,\n  \/\/ production, or any domain\/migration.\n  \/\/ ---------------------------------------------------------------\n  const SCAN_URLS={\n    shaft:'\/wp-content\/uploads\/2026\/07\/heavy_shaft.glb',\n    impeller:'\/wp-content\/uploads\/2026\/07\/impeller.glb',\n    ring:'\/wp-content\/uploads\/2026\/07\/ring_body.glb',\n    housing:'\/wp-content\/uploads\/2026\/07\/heavy_housing_01.glb',\n    flow:'\/wp-content\/uploads\/2026\/07\/valve_body.glb'\n  };\n\n  const scene=new THREE.Scene();\n  const camera=new THREE.PerspectiveCamera(35,mount.clientWidth\/mount.clientHeight,.1,1200);\n  camera.position.set(0,3.5,15);\n\n  const renderer=new THREE.WebGLRenderer({antialias:true,alpha:true});\n  renderer.setPixelRatio(Math.min(devicePixelRatio,2));\n  renderer.setSize(mount.clientWidth,mount.clientHeight);\n  renderer.localClippingEnabled=true;\n  mount.appendChild(renderer.domElement);\n\n  const blue=new THREE.Color('#1565a6');\n  const cyan=new THREE.Color('#76d9ff');\n\n  scene.add(new THREE.AmbientLight(0xc9efff,.95));\n  const l1=new THREE.PointLight(0x76d9ff,4.4,120); l1.position.set(6,8,10); scene.add(l1);\n  const l2=new THREE.PointLight(0x1565a6,3.4,110); l2.position.set(-8,-4,8); scene.add(l2);\n  const l3=new THREE.DirectionalLight(0xffffff,1.4); l3.position.set(0,9,6); scene.add(l3);\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Upgrade 1: procedural studio environment map (no external HDRI\n  \/\/ needed) so metal surfaces show real reflections\/highlights\n  \/\/ instead of flat emissive color.\n  \/\/ ---------------------------------------------------------------\n  function buildStudioEnvironment(){\n    const envScene=new THREE.Scene();\n    const sky=new THREE.Mesh(\n      new THREE.SphereGeometry(60,32,32),\n      new THREE.ShaderMaterial({\n        side:THREE.BackSide,\n        uniforms:{\n          topColor:{value:new THREE.Color('#eaf7ff')},\n          midColor:{value:new THREE.Color('#1565a6')},\n          botColor:{value:new THREE.Color('#020913')}\n        },\n        vertexShader:'varying vec3 vPos; void main(){ vPos=position; gl_Position=projectionMatrix*modelViewMatrix*vec4(position,1.0); }',\n        fragmentShader:'varying vec3 vPos; uniform vec3 topColor, midColor, botColor; void main(){ float h=normalize(vPos).y; vec3 col = h>0.0 ? mix(midColor, topColor, smoothstep(0.0,1.0,h)) : mix(midColor, botColor, smoothstep(0.0,-1.0,h)); gl_FragColor=vec4(col,1.0); }'\n      })\n    );\n    envScene.add(sky);\n    const panel1=new THREE.Mesh(new THREE.PlaneGeometry(16,9),new THREE.MeshBasicMaterial({color:0xffffff}));\n    panel1.position.set(11,13,7); panel1.lookAt(0,0,0); envScene.add(panel1);\n    const panel2=new THREE.Mesh(new THREE.PlaneGeometry(11,7),new THREE.MeshBasicMaterial({color:0x76d9ff}));\n    panel2.position.set(-13,4,-9); panel2.lookAt(0,0,0); envScene.add(panel2);\n    const pmrem=new THREE.PMREMGenerator(renderer);\n    const rt=pmrem.fromScene(envScene,0.035);\n    pmrem.dispose();\n    return rt.texture;\n  }\n  scene.environment=buildStudioEnvironment();\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Upgrade 2: soft contact shadow so the component looks grounded\n  \/\/ instead of floating.\n  \/\/ ---------------------------------------------------------------\n  function buildContactShadowTexture(){\n    const c=document.createElement('canvas'); c.width=256;c.height=256;\n    const ctx=c.getContext('2d');\n    const g=ctx.createRadialGradient(128,128,0,128,128,128);\n    g.addColorStop(0,'rgba(0,0,0,0.55)');\n    g.addColorStop(.6,'rgba(0,0,0,0.25)');\n    g.addColorStop(1,'rgba(0,0,0,0)');\n    ctx.fillStyle=g; ctx.fillRect(0,0,256,256);\n    return new THREE.CanvasTexture(c);\n  }\n  const shadowMesh=new THREE.Mesh(\n    new THREE.PlaneGeometry(1,1),\n    new THREE.MeshBasicMaterial({map:buildContactShadowTexture(),transparent:true,depthWrite:false,opacity:.85})\n  );\n  shadowMesh.rotation.x=-Math.PI\/2;\n  scene.add(shadowMesh);\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Upgrade 5: drifting atmosphere particles for depth.\n  \/\/ ---------------------------------------------------------------\n  function buildAtmosphereParticles(count){\n    const positions=new Float32Array(count*3);\n    const speeds=new Float32Array(count);\n    for(let i=0;i<count;i++){\n      const r=6+Math.random()*7;\n      const theta=Math.random()*Math.PI*2;\n      positions[i*3]=Math.cos(theta)*r;\n      positions[i*3+1]=(Math.random()-0.5)*8;\n      positions[i*3+2]=Math.sin(theta)*r;\n      speeds[i]=0.05+Math.random()*0.12;\n    }\n    const geo=new THREE.BufferGeometry();\n    geo.setAttribute('position',new THREE.BufferAttribute(positions,3));\n    const m=new THREE.PointsMaterial({color:0x76d9ff,size:.045,transparent:true,opacity:.5,blending:THREE.AdditiveBlending,depthWrite:false,sizeAttenuation:true});\n    const pts=new THREE.Points(geo,m);\n    pts.userData.speeds=speeds;\n    scene.add(pts);\n    return pts;\n  }\n  const atmosphereParticles=buildAtmosphereParticles(140);\n\n  const root=new THREE.Group();\n  scene.add(root);\n\n  let model=null,currentType='shaft';\n  const ZOOM_MIN=8,ZOOM_MAX=22;\n  let targetZoom=15,currentZoom=15;\n  let userActive=false,lastInteraction=0;\n  let dragging=false,lastX=0,lastY=0,rotX=0,rotY=0;\n\n  \/\/ cross-section clip plane, shared by every material we create\n  const clipPlane=new THREE.Plane(new THREE.Vector3(0,-1,0),1000); \/\/ 1000 = effectively disabled\n  let clipEnabled=false;\n  let activeMaterials=[];\n\n  \/\/ real scanned geometry cache, keyed by component type\n  const scanGeometryCache={};\n\n  const data={\n    shaft:{name:'Heavy Shaft',length:'5.830 mm',diameter:'\u00d8 1.244 mm',mass:'21,06 t',process:'Multitasking',scan:true,scaleRatio:'3,2\u00d7'},\n    beam:{name:'20 m Rack',length:'20.000 mm',diameter:'Freeform',mass:'30 t',process:'Milling',scan:false,scaleRatio:'11,1\u00d7'},\n    impeller:{name:'Impeller',length:'1.060 mm',diameter:'\u00d8 2.120 mm',mass:'4,32 t',process:'Multitasking',scan:true,scaleRatio:'1,2\u00d7'},\n    ring:{name:'Ring Body',length:'650 mm',diameter:'\u00d8 2.360 mm',mass:'3,8 t',process:'Multitasking',scan:true,scaleRatio:'1,3\u00d7'},\n    housing:{name:'Heavy Housing',length:'1.530 mm',diameter:'\u00d8 2.180 mm',mass:'4,6 t',process:'Multitasking',scan:true,scaleRatio:'1,2\u00d7'},\n    flow:{name:'Flow Control',length:'1.765 mm',diameter:'\u00d8 1.750 mm',mass:'4 t',process:'Milling',scan:true,scaleRatio:'1,0\u00d7'}\n  };\n\nconst starts={\n  shaft:{rx:.05,ry:-.18,zoom:15.0,scale:1.5,shadowY:-4.37,shadowScale:2.4},\n  beam:{rx:.35,ry:-.78,zoom:13.5,scale:.88,shadowY:-.95,shadowScale:5.6},\n  impeller:{rx:.08,ry:.08,zoom:14.5,scale:1.8,shadowY:-1.9,shadowScale:4.9},\n  ring:{rx:.72,ry:-.35,zoom:14.8,scale:1.7,shadowY:-2.0,shadowScale:5.0},\n  housing:{rx:.05,ry:.08,zoom:14.0,scale:3.4,shadowY:-2.65,shadowScale:3.0},\n  flow:{rx:.12,ry:-.22,zoom:14.8,scale:1.9,shadowY:-1.66,shadowScale:4.2}\n};\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Upgrade 3: fresnel rim glow injected into the standard PBR shader\n  \/\/ via onBeforeCompile -- no extra meshes\/draw calls needed.\n  \/\/ ---------------------------------------------------------------\n  function addFresnel(material,color,power,strength){\n    material.onBeforeCompile=(shader)=>{\n      shader.uniforms.fresnelColor={value:color};\n      shader.uniforms.fresnelPower={value:power};\n      shader.uniforms.fresnelStrength={value:strength};\n      shader.fragmentShader=shader.fragmentShader.replace(\n        '#include <common>',\n        '#include <common>\\nuniform vec3 fresnelColor;\\nuniform float fresnelPower;\\nuniform float fresnelStrength;'\n      );\n      shader.fragmentShader=shader.fragmentShader.replace(\n        '#include <dithering_fragment>',\n        'float fresnelTerm = pow(1.0 - saturate(dot(normalize(vNormal), normalize(vViewPosition))), fresnelPower);\\ngl_FragColor.rgb += fresnelColor * fresnelTerm * fresnelStrength;\\n#include <dithering_fragment>'\n      );\n    };\n    material.customProgramCacheKey=()=>'fresnel'+power+strength;\n  }\n\n  function mat(op=.82){\n    const m=new THREE.MeshPhysicalMaterial({color:blue,metalness:.92,roughness:.13,transparent:true,opacity:op,emissive:blue,emissiveIntensity:.22,clearcoat:.95,clearcoatRoughness:.10,envMapIntensity:1.15,clippingPlanes:[clipPlane],clipShadows:true});\n    addFresnel(m,cyan,2.4,.55);\n    activeMaterials.push(m);\n    return m;\n  }\n  function wire(op=.72){\n    const m=new THREE.MeshBasicMaterial({color:cyan,wireframe:true,transparent:true,opacity:op,clippingPlanes:[clipPlane]});\n    activeMaterials.push(m);\n    return m;\n  }\n  function cyl(r,l,seg=96){return new THREE.CylinderGeometry(r,r,l,seg,18,false)}\n  function box(x,y,z,sx=8,sy=4,sz=6){return new THREE.BoxGeometry(x,y,z,sx,sy,sz)}\n  function torus(r,t){return new THREE.TorusGeometry(r,t,18,128)}\n\n  function add(g,geo,pos=[0,0,0],rot=[0,0,0],scale=[1,1,1],op=.82){\n    const m=new THREE.Mesh(geo,mat(op));\n    const w=new THREE.Mesh(geo,wire(.70));\n    m.position.set(...pos); w.position.copy(m.position);\n    m.rotation.set(...rot); w.rotation.copy(m.rotation);\n    m.scale.set(...scale); w.scale.copy(m.scale);\n    g.add(m); g.add(w);\n  }\n\n\n  function makeRoundedBoxGeometry(w,h,d,r=.08){\n    const shape=new THREE.Shape();\n    const x=w\/2-r,y=h\/2-r;\n    shape.moveTo(-x-r,-y);\n    shape.lineTo(x,-y);\n    shape.quadraticCurveTo(x+r,-y,x+r,-y+r);\n    shape.lineTo(x+r,y);\n    shape.quadraticCurveTo(x+r,y+r,x,y+r);\n    shape.lineTo(-x,y+r);\n    shape.quadraticCurveTo(-x-r,y+r,-x-r,y);\n    shape.lineTo(-x-r,-y+r);\n    shape.quadraticCurveTo(-x-r,-y,-x,-y);\n    return new THREE.ExtrudeGeometry(shape,{depth:d,bevelEnabled:true,bevelThickness:r*.42,bevelSize:r*.42,bevelSegments:3});\n  }\n\n  function makeToothGeometry(w=.24,h=.86,d=1.28){\n    const s=new THREE.Shape();\n    s.moveTo(-w*.72,-h*.48);\n    s.lineTo(-w*.47,-h*.48);\n    s.lineTo(-w*.30,h*.46);\n    s.lineTo(w*.30,h*.46);\n    s.lineTo(w*.47,-h*.48);\n    s.lineTo(w*.72,-h*.48);\n    s.lineTo(w*.72,-h*.62);\n    s.lineTo(-w*.72,-h*.62);\n    s.lineTo(-w*.72,-h*.48);\n    return new THREE.ExtrudeGeometry(s,{depth:d,bevelEnabled:true,bevelThickness:.022,bevelSize:.018,bevelSegments:2});\n  }\n\n  function makeImpellerBladeGeometry(){\n    const s=new THREE.Shape();\n    s.moveTo(-.18,-.78);\n    s.bezierCurveTo(.52,-.48,.62,.22,.28,.98);\n    s.bezierCurveTo(.02,.86,-.18,.56,-.28,.12);\n    s.bezierCurveTo(-.38,-.28,-.34,-.62,-.18,-.78);\n    return new THREE.ExtrudeGeometry(s,{depth:.15,bevelEnabled:true,bevelThickness:.035,bevelSize:.028,bevelSegments:4,steps:2});\n  }\n\n  function makeRibGeometry(w=.28,h=.95,d=.22){\n    const s=new THREE.Shape();\n    s.moveTo(-w*.5,-h*.5);\n    s.lineTo(w*.5,-h*.5);\n    s.lineTo(w*.25,h*.5);\n    s.lineTo(-w*.25,h*.5);\n    s.lineTo(-w*.5,-h*.5);\n    return new THREE.ExtrudeGeometry(s,{depth:d,bevelEnabled:true,bevelThickness:.018,bevelSize:.018,bevelSegments:1});\n  }\n\n  function darkMat(op=.52){\n    const m=new THREE.MeshBasicMaterial({color:0x020913,transparent:true,opacity:op,clippingPlanes:[clipPlane]});\n    activeMaterials.push(m);\n    return m;\n  }\n\n  function addDark(g,geo,pos=[0,0,0],rot=[0,0,0],scale=[1,1,1],op=.5){\n    const m=new THREE.Mesh(geo,darkMat(op));\n    m.position.set(...pos);\n    m.rotation.set(...rot);\n    m.scale.set(...scale);\n    g.add(m);\n  }\n\n  function addBoltCircle(g,count,r,z=.54,bolt=.055,op=.94){\n    for(let i=0;i<count;i++){\n      const a=i*Math.PI*2\/count;\n      add(g,cyl(bolt,.18,32),[Math.cos(a)*r,Math.sin(a)*r,z],[Math.PI\/2,0,0],[1,1,1],op);\n      addDark(g,cyl(bolt*.52,.19,24),[Math.cos(a)*r,Math.sin(a)*r,z+.01],[Math.PI\/2,0,0],[1,1,1],.62);\n    }\n  }\n\n  function buildShaft(){\n    const g=new THREE.Group();\n    add(g,cyl(.34,1.05,112),[0,-3.25,0],[0,0,0],[1,1,1],.80);\n    add(g,cyl(.52,.62,112),[0,-2.45,0],[0,0,0],[1,1,1],.84);\n    add(g,cyl(.43,1.35,112),[0,-1.68,0],[0,0,0],[1,1,1],.82);\n    add(g,cyl(.62,.42,112),[0,-.78,0],[0,0,0],[1,1,1],.88);\n    add(g,cyl(.40,1.85,112),[0,.22,0],[0,0,0],[1,1,1],.80);\n    add(g,cyl(.72,.50,112),[0,1.42,0],[0,0,0],[1,1,1],.88);\n    add(g,cyl(.55,.96,112),[0,2.13,0],[0,0,0],[1,1,1],.84);\n    add(g,cyl(.78,.38,112),[0,2.90,0],[0,0,0],[1,1,1],.90);\n    for(let y of [-2.80,-.98,.98,1.72,2.70]){\n      add(g,torus(.56,.026),[0,y,0],[Math.PI\/2,0,0],[1,1,1],.86);\n      addDark(g,torus(.47,.018),[0,y+.03,0],[Math.PI\/2,0,0],[1,1,1],.45);\n    }\n    for(let i=0;i<16;i++){\n      const a=i*Math.PI*2\/16;\n      add(g,box(.055,.82,.20,1,1,1),[Math.cos(a)*.79,1.44,Math.sin(a)*.79],[0,a,0],[1,1,1],.88);\n    }\n    for(let i=0;i<24;i++){\n      const a=i*Math.PI*2\/24;\n      add(g,box(.040,.95,.13,1,1,1),[Math.cos(a)*.63,-2.42,Math.sin(a)*.63],[0,a,0],[1,1,1],.82);\n    }\n    for(let side of [-1,1]){\n      for(let i=0;i<6;i++){\n        const a=i*Math.PI*2\/6;\n        add(g,cyl(.045,.14,24),[Math.cos(a)*.64,side*2.90,Math.sin(a)*.64],[Math.PI\/2,0,0],[1,1,1],.95);\n      }\n    }\n    return g;\n  }\n\n  function buildBeam(){\n    const g=new THREE.Group();\n    add(g,box(10.9,.34,1.10,56,2,4),[0,-.28,0],[0,0,0],[1,1,1],.76);\n    add(g,box(10.7,.18,1.24,56,1,4),[0,.02,0],[0,0,0],[1,1,1],.72);\n    add(g,box(10.45,.12,.82,56,1,3),[0,-.52,0],[0,0,0],[1,1,1],.68);\n    const tooth=makeToothGeometry(.22,.82,1.26);\n    for(let i=0;i<84;i++){\n      const x=-5.18+i*(10.36\/83);\n      add(g,tooth,[x,.64,-.63],[Math.PI\/2,0,0],[1,1,1],.90);\n    }\n    for(let y of [.12,-.14]){\n      addDark(g,box(10.2,.035,.16,40,1,1),[0,y,.36],[0,0,0],[1,1,1],.55);\n      addDark(g,box(10.2,.035,.16,40,1,1),[0,y,-.36],[0,0,0],[1,1,1],.55);\n    }\n    for(let i=0;i<8;i++){\n      const x=-4.6+i*1.32;\n      addDark(g,box(.48,.16,.42,2,1,2),[x,-.08,0],[0,0,0],[1,1,1],.6);\n    }\n    for(let s of[-1,1]){\n      add(g,box(.72,1.22,1.44,2,2,2),[s*5.78,.02,0],[0,0,s*.04],[1,1,1],.86);\n      add(g,cyl(.23,1.02,48),[s*5.78,.92,0],[Math.PI\/2,0,0],[1,1,1],.88);\n      for(let i=0;i<4;i++){\n        const yy=(i<2?.34:-.34);\n        const zz=(i%2? .42:-.42);\n        add(g,cyl(.055,.18,24),[s*5.78,yy,zz],[Math.PI\/2,0,0],[1,1,1],.94);\n      }\n    }\n    for(let i=0;i<14;i++){\n      const x=-4.9+i*.75;\n      add(g,box(.08,.22,1.18,1,1,1),[x,-.74,0],[0,0,0],[1,1,1],.62);\n    }\n    return g;\n  }\n\n  function buildImpeller(){\n    const g=new THREE.Group();\n    add(g,cyl(1.46,1.22,144),[0,0,0],[Math.PI\/2,0,0],[1,1,1],.72);\n    add(g,cyl(.74,1.38,144),[0,0,.02],[Math.PI\/2,0,0],[1,1,1],.46);\n    add(g,torus(1.52,.18),[0,0,.66],[0,0,0],[1,1,1],.88);\n    add(g,torus(1.08,.08),[0,0,.74],[0,0,0],[1,1,1],.78);\n    add(g,torus(.40,.11),[0,0,.82],[0,0,0],[1,1,1],.90);\n    add(g,cyl(.34,.92,96),[0,0,.72],[Math.PI\/2,0,0],[1,1,1],.86);\n    const bladeGeo=makeImpellerBladeGeometry();\n    for(let i=0;i<13;i++){\n      const a=i*Math.PI*2\/13;\n      const r=.86;\n      add(g,bladeGeo,[Math.cos(a)*r,Math.sin(a)*r,.84],[0.18,0.08,a+Math.PI\/2+.22],[1.14,1.00,1.15],.90);\n      add(g,box(.05,.54,.14,1,1,1),[Math.cos(a)*.50,Math.sin(a)*.50,.70],[0,0,a+.55],[1,1,1],.78);\n    }\n    for(let i=0;i<13;i++){\n      const a=i*Math.PI*2\/13;\n      add(g,cyl(.035,.15,20),[Math.cos(a)*1.28,Math.sin(a)*1.28,.92],[Math.PI\/2,0,0],[1,1,1],.94);\n    }\n    return g;\n  }\n\n  function buildRing(){\n    const g=new THREE.Group();\n    add(g,cyl(1.78,.70,160),[0,0,0],[Math.PI\/2,0,0],[1,1,1],.72);\n    add(g,cyl(1.18,.82,160),[0,0,.02],[Math.PI\/2,0,0],[1,1,1],.38);\n    add(g,torus(1.77,.12),[0,0,.39],[0,0,0],[1,1,1],.86);\n    add(g,torus(1.77,.10),[0,0,-.39],[0,0,0],[1,1,1],.80);\n    add(g,torus(1.18,.08),[0,0,.44],[0,0,0],[1,1,1],.82);\n    add(g,torus(1.18,.075),[0,0,-.44],[0,0,0],[1,1,1],.78);\n    addBoltCircle(g,32,1.48,.52,.047,.95);\n    addBoltCircle(g,20,1.02,-.52,.040,.88);\n    for(let i=0;i<16;i++){\n      const a=i*Math.PI*2\/16;\n      add(g,box(.17,.46,.30,1,1,1),[Math.cos(a)*1.86,Math.sin(a)*1.86,-.10],[0,0,a],[1,1,1],.72);\n    }\n    for(let i=0;i<8;i++){\n      const a=i*Math.PI*2\/8;\n      add(g,box(.10,.72,.20,1,1,1),[Math.cos(a)*1.36,Math.sin(a)*1.36,.08],[0,0,a+.15],[1,1,1],.66);\n    }\n    return g;\n  }\n\n  \/\/ procedural fallback (used only while the real scan is loading, or if it fails)\n  function buildHousingProcedural(){\n    const g=new THREE.Group();\n    add(g,cyl(1.44,1.72,144),[0,0,0],[Math.PI\/2,0,0],[1,1,1],.70);\n    add(g,cyl(1.02,1.86,144),[0,0,.02],[Math.PI\/2,0,0],[1,1,1],.42);\n    add(g,torus(1.48,.13),[0,0,.96],[0,0,0],[1,1,1],.86);\n    add(g,torus(1.48,.12),[0,0,-.96],[0,0,0],[1,1,1],.84);\n    addBoltCircle(g,28,1.44,.98,.052,.94);\n    addBoltCircle(g,28,1.44,-.98,.052,.90);\n    for(let i=0;i<12;i++){\n      const a=i*Math.PI*2\/12;\n      const rib=makeRibGeometry(.24,1.12,.22);\n      add(g,rib,[Math.cos(a)*1.36,Math.sin(a)*1.36,-.15],[0,0,a-Math.PI\/2],[1,1,1],.74);\n    }\n    for(let i=0;i<4;i++){\n      const a=i*Math.PI\/2;\n      add(g,box(.74,.42,.50,2,1,1),[Math.cos(a)*1.84,Math.sin(a)*1.84,-.58],[0,0,a],[1,1,1],.80);\n      add(g,cyl(.16,.55,48),[Math.cos(a)*1.84,Math.sin(a)*1.84,-.56],[Math.PI\/2,0,0],[1,1,1],.92);\n    }\n    add(g,box(1.15,.42,1.55,3,1,3),[0,1.63,.02],[0,0,0],[1,1,1],.78);\n    add(g,cyl(.36,.72,80),[0,1.93,.02],[Math.PI\/2,0,0],[1,1,1],.84);\n    addDark(g,cyl(.20,.76,60),[0,1.93,.03],[Math.PI\/2,0,0],[1,1,1],.50);\n    for(let sx of [-1,1]){\n      for(let sy of [-1,1]){\n        add(g,cyl(.07,.20,28),[sx*.43,1.67,sy*.55],[Math.PI\/2,0,0],[1,1,1],.95);\n      }\n    }\n    return g;\n  }\n\n  function buildFlow(){\n    const g=new THREE.Group();\n    add(g,cyl(.72,2.45,128),[0,0,0],[0,0,Math.PI\/2],[1,1,1],.76);\n    add(g,cyl(.43,2.62,128),[0,0,.02],[0,0,Math.PI\/2],[1,1,1],.44);\n    add(g,box(1.42,1.05,1.40,4,3,4),[0,0,0],[0,0,0],[1,1,1],.82);\n    add(g,cyl(.88,.74,128),[0,.06,0],[Math.PI\/2,0,0],[1,1,1],.78);\n    addDark(g,cyl(.45,.78,96),[0,.06,.01],[Math.PI\/2,0,0],[1,1,1],.42);\n    add(g,torus(.83,.095),[-1.28,0,0],[0,Math.PI\/2,0],[1,1,1],.88);\n    add(g,torus(.83,.095),[1.28,0,0],[0,Math.PI\/2,0],[1,1,1],.88);\n    for(let side of [-1,1]){\n      for(let i=0;i<12;i++){\n        const a=i*Math.PI*2\/12;\n        add(g,cyl(.048,.16,24),[side*1.28,Math.cos(a)*.68,Math.sin(a)*.68],[Math.PI\/2,0,0],[1,1,1],.95);\n      }\n    }\n    add(g,cyl(.36,1.05,96),[0,1.04,0],[0,0,0],[1,1,1],.84);\n    add(g,cyl(.48,.36,96),[0,1.58,0],[0,0,0],[1,1,1],.88);\n    add(g,cyl(.24,.72,80),[0,2.02,0],[0,0,0],[1,1,1],.90);\n    add(g,box(1.34,.22,.36,2,1,1),[0,2.46,0],[0,0,0],[1,1,1],.92);\n    add(g,cyl(.16,.42,64),[0,2.46,0],[Math.PI\/2,0,Math.PI\/2],[1,1,1],.92);\n    for(let i=0;i<8;i++){\n      const a=i*Math.PI*2\/8;\n      add(g,box(.18,.40,.22,1,1,1),[Math.cos(a)*.82,.08,Math.sin(a)*.82],[0,a,0],[1,1,1],.72);\n    }\n    return g;\n  }\n\n  \/\/ -----------------------------------------------------------------\n  \/\/ Minimal, dependency-free GLB reader. Handles exactly the layout we\n  \/\/ export: POSITION \/ NORMAL \/ COLOR_0 attributes + a single index\n  \/\/ buffer, no textures, no scene graph. Avoids pulling in the full\n  \/\/ three.js GLTFLoader (which needs ES module imports).\n  \/\/ -----------------------------------------------------------------\n  function parseGLB(buffer){\n    const dv=new DataView(buffer);\n    if(dv.getUint32(0,true)!==0x46546C67) throw new Error('not a glb file');\n    const totalLength=dv.getUint32(8,true);\n    let offset=12,json=null,bin=null;\n    while(offset<totalLength){\n      const chunkLen=dv.getUint32(offset,true);\n      const chunkType=dv.getUint32(offset+4,true);\n      const chunkData=buffer.slice(offset+8,offset+8+chunkLen);\n      if(chunkType===0x4E4F534A) json=JSON.parse(new TextDecoder().decode(chunkData));\n      else if(chunkType===0x004E4942) bin=chunkData;\n      offset+=8+chunkLen;\n    }\n    const prim=json.meshes[0].primitives[0];\n    const acc=json.accessors, bv=json.bufferViews;\n    function readAttr(accessorIndex,Ctor,itemsPerElement){\n      const a=acc[accessorIndex];\n      const view=bv[a.bufferView];\n      return new Ctor(bin,view.byteOffset||0,a.count*itemsPerElement);\n    }\n    const positions=readAttr(prim.attributes.POSITION,Float32Array,3);\n    const normals=readAttr(prim.attributes.NORMAL,Float32Array,3);\n    const colors=readAttr(prim.attributes.COLOR_0,Float32Array,3);\n    const idxAcc=acc[prim.indices];\n    const IndexCtor=idxAcc.componentType===5125?Uint32Array:(idxAcc.componentType===5123?Uint16Array:Uint8Array);\n    const indices=readAttr(prim.indices,IndexCtor,1);\n    return {positions,normals,colors,indices};\n  }\n\n  function fetchWithProgress(url,onProgress){\n    return fetch(url).then(res=>{\n      if(!res.ok) throw new Error('HTTP '+res.status);\n      const total=parseInt(res.headers.get('Content-Length')||'0',10);\n      const reader=res.body.getReader();\n      let received=0,chunks=[];\n      function pump(){\n        return reader.read().then(({done,value})=>{\n          if(done){\n            const out=new Uint8Array(received);\n            let o=0; for(const c of chunks){out.set(c,o);o+=c.length;}\n            return out.buffer;\n          }\n          chunks.push(value); received+=value.length;\n          if(onProgress) onProgress(total?received\/total:null,received);\n          return pump();\n        });\n      }\n      return pump();\n    });\n  }\n\n  function buildScanMesh(parsed){\n    const geo=new THREE.BufferGeometry();\n    geo.setAttribute('position',new THREE.BufferAttribute(parsed.positions,3));\n    geo.setAttribute('normal',new THREE.BufferAttribute(parsed.normals,3));\n    geo.setAttribute('color',new THREE.BufferAttribute(parsed.colors,3));\n    geo.setIndex(new THREE.BufferAttribute(parsed.indices,1));\n\n    const solidMat=new THREE.MeshPhysicalMaterial({color:blue,metalness:.9,roughness:.16,transparent:true,opacity:.86,emissive:blue,emissiveIntensity:.20,clearcoat:.9,clearcoatRoughness:.12,envMapIntensity:1.2,clippingPlanes:[clipPlane],clipShadows:true,side:THREE.DoubleSide});\n    const zoneMat=new THREE.MeshPhysicalMaterial({vertexColors:true,metalness:.55,roughness:.34,transparent:true,opacity:.94,envMapIntensity:1.0,clippingPlanes:[clipPlane],clipShadows:true,side:THREE.DoubleSide});\n    addFresnel(solidMat,cyan,2.4,.5);\n    addFresnel(zoneMat,cyan,2.6,.35);\n    const wireMat=new THREE.MeshBasicMaterial({color:cyan,wireframe:true,transparent:true,opacity:.35,clippingPlanes:[clipPlane]});\n    activeMaterials.push(solidMat,zoneMat,wireMat);\n\n    const g=new THREE.Group();\n    const solidMesh=new THREE.Mesh(geo,solidMat);\n    const wireMesh=new THREE.Mesh(geo,wireMat);\n    g.add(solidMesh); g.add(wireMesh);\n    g.userData.solidMesh=solidMesh;\n    g.userData.zoneMat=zoneMat;\n    g.userData.solidMat=solidMat;\n    g.userData.isScan=true;\n    return g;\n  }\n\n  const proceduralFallback={\n    shaft:buildShaft,\n    impeller:buildImpeller,\n    ring:buildRing,\n    housing:buildHousingProcedural,\n    flow:buildFlow\n  };\n\n  function loadScanPart(type,onReady){\n    if(scanGeometryCache[type]){ onReady(buildScanMesh(scanGeometryCache[type])); return; }\n    const url=SCAN_URLS[type];\n    if(!url || url.indexOf('REPLACE_ME')===0){\n      onReady(proceduralFallback[type]());\n      return;\n    }\n    loadbar.classList.add('is-visible');\n    loadbarFill.style.width='0%';\n    loadbarPct.textContent='0%';\n    fetchWithProgress(url,(pct)=>{\n      if(pct!=null){\n        loadbarFill.style.width=(pct*100).toFixed(0)+'%';\n        loadbarPct.textContent=(pct*100).toFixed(0)+'%';\n      }\n    }).then(buf=>{\n      const parsed=parseGLB(buf);\n      scanGeometryCache[type]=parsed;\n      loadbar.classList.remove('is-visible');\n      onReady(buildScanMesh(parsed));\n    }).catch(err=>{\n      console.warn('Heldeco: Scandaten f\u00fcr '+type+' konnten nicht geladen werden, zeige Konzeptmodell.',err);\n      loadbar.classList.remove('is-visible');\n      onReady(proceduralFallback[type]());\n    });\n  }\n\n  function build(type,onReady){\n    if(proceduralFallback[type]) return loadScanPart(type,onReady);\n    if(type==='beam') return onReady(buildBeam());\n    return onReady(buildShaft());\n  }\n\n  function updateText(type){\n    const d=data[type];\n    document.getElementById('hcName').textContent=d.name;\n    document.getElementById('hcLength').textContent=d.length;\n    document.getElementById('hcDiameter').textContent=d.diameter;\n    document.getElementById('hcMass').textContent=d.mass;\n    document.getElementById('hcProcess').textContent=d.process;\n    document.getElementById('hcScaleRatio').textContent=d.scaleRatio;\n\n    const badge=document.getElementById('hcBadge');\n    const badgeText=document.getElementById('hcBadgeText');\n    if(d.scan){\n      badge.className='hc-badge is-scan';\n      badgeText.textContent='Live-Scandaten';\n    }else{\n      badge.className='hc-badge is-concept';\n      badgeText.textContent='Konzept-Vorschau';\n    }\n\n    if(d.scan){\n      zoneToggleWrap.classList.remove('is-disabled');\n    }else{\n      zoneToggleWrap.classList.add('is-disabled');\n      zoneToggleWrap.classList.remove('is-checked');\n      zoneToggle.checked=false;\n    }\n  }\n\n  function load(type){\n    currentType=type;\n    stage.classList.remove('is-scanning');\n    void stage.offsetWidth;\n    stage.classList.add('is-scanning');\n    activeMaterials=[];\n    setTimeout(()=>{\n      if(model) root.remove(model);\n      build(type,(built)=>{\n        model=built;\n        const s=starts[type];\n        model.scale.set(s.scale,s.scale,s.scale);\n        root.add(model);\n        \/\/ cinematic entry: start slightly behind the resting pose and\n        \/\/ pull the camera back briefly, then settle -- a soft dolly\n        \/\/ instead of a hard snap.\n        rotX=s.rx-.12; rotY=s.ry-.55;\n        targetZoom=s.zoom+3.2;\n        setTimeout(()=>{ if(currentType===type) targetZoom=s.zoom; },480);\n        shadowMesh.position.y=s.shadowY;\n        shadowMesh.scale.set(s.shadowScale,s.shadowScale,1);\n        updateText(type);\n        applyClipState();\n        applyZoneState();\n      });\n    },320);\n  }\n\n  function applyClipState(){\n    clipPlane.constant = clipEnabled ? (parseFloat(clipSlider.value)\/100)*1.4 : 1000;\n  }\n\n  function applyZoneState(){\n    if(!model || !model.userData || !model.userData.isScan) return;\n    model.userData.solidMesh.material = zoneToggle.checked ? model.userData.zoneMat : model.userData.solidMat;\n  }\n\n  \/\/ the dot only ever reflects \"has real scan data\" (set once below from\n  \/\/ data[type].scan); selection itself is shown by the is-active background.\n  document.querySelectorAll('.hc-option').forEach(btn=>{\n    const d=data[btn.dataset.type];\n    const dot=btn.querySelector('.hc-dot');\n    if(dot) dot.classList.toggle('is-off', !(d && d.scan));\n    btn.addEventListener('click',()=>{\n      document.querySelectorAll('.hc-option').forEach(b=>b.classList.remove('is-active'));\n      btn.classList.add('is-active');\n      load(btn.dataset.type);\n    });\n  });\n\n  const scaleDock=document.getElementById('hcScaleDock');\n  if(scaleToggle && humanRef){\n    scaleToggle.addEventListener('change',()=>{\n      humanRef.classList.toggle('is-visible', scaleToggle.checked);\n      if(scaleDock) scaleDock.classList.toggle('is-checked', scaleToggle.checked);\n    });\n  }\n\n  zoneToggle.addEventListener('change',()=>{\n    applyZoneState();\n    zoneToggleWrap.classList.toggle('is-checked', zoneToggle.checked);\n  });\n\n  clipToggle.addEventListener('change',()=>{\n    clipEnabled=clipToggle.checked;\n    clipSliderWrap.classList.toggle('is-visible',clipEnabled);\n    clipToggle.closest('.hc-mini-toggle').classList.toggle('is-checked',clipEnabled);\n    applyClipState();\n  });\n  clipSlider.addEventListener('input',applyClipState);\n\n  const hcSelector=document.getElementById('hcSelector');\n  const scrollLeftBtn=document.getElementById('hcScrollLeft');\n  const scrollRightBtn=document.getElementById('hcScrollRight');\n  function updateScrollArrows(){\n    if(!hcSelector || !scrollLeftBtn || !scrollRightBtn) return;\n    const maxScroll=hcSelector.scrollWidth-hcSelector.clientWidth;\n    scrollLeftBtn.classList.toggle('is-hidden',hcSelector.scrollLeft<=4);\n    scrollRightBtn.classList.toggle('is-hidden',maxScroll<=4 || hcSelector.scrollLeft>=maxScroll-4);\n  }\n  if(hcSelector && scrollLeftBtn && scrollRightBtn){\n    hcSelector.addEventListener('scroll',updateScrollArrows,{passive:true});\n    window.addEventListener('resize',updateScrollArrows);\n    scrollLeftBtn.addEventListener('click',()=>hcSelector.scrollBy({left:-140,behavior:'smooth'}));\n    scrollRightBtn.addEventListener('click',()=>hcSelector.scrollBy({left:140,behavior:'smooth'}));\n    updateScrollArrows();\n  }\n\n  const zoomSlider=document.getElementById('hcZoomSlider');\n  zoomSlider.addEventListener('input',()=>{\n    userActive=true;lastInteraction=Date.now();\n    targetZoom=parseFloat(zoomSlider.value);\n  });\n\n  mount.addEventListener('mousedown',e=>{dragging=true;userActive=true;lastInteraction=Date.now();lastX=e.clientX;lastY=e.clientY});\n  window.addEventListener('mouseup',()=>dragging=false);\n  window.addEventListener('mousemove',e=>{\n    if(!dragging) return;\n    const dx=e.clientX-lastX,dy=e.clientY-lastY;\n    lastX=e.clientX;lastY=e.clientY;\n    rotY+=dx*.006;rotX+=dy*.003;\n    rotX=Math.max(-.8,Math.min(.9,rotX));\n    lastInteraction=Date.now();\n  });\n  mount.addEventListener('wheel',e=>{\n    e.preventDefault();\n    userActive=true;lastInteraction=Date.now();\n    targetZoom+=e.deltaY*.01;\n    targetZoom=Math.max(ZOOM_MIN,Math.min(ZOOM_MAX,targetZoom));\n  },{passive:false});\n\n  \/\/ ---------------------------------------------------------------\n  \/\/ Touch controls: one finger drags to rotate, two fingers pinch to\n  \/\/ zoom -- mirrors the mouse-drag \/ wheel-zoom behavior above.\n  \/\/ ---------------------------------------------------------------\n  let pinchStartDist=0,pinchStartZoom=13;\n  function touchDist(t0,t1){\n    const dx=t0.clientX-t1.clientX,dy=t0.clientY-t1.clientY;\n    return Math.sqrt(dx*dx+dy*dy);\n  }\n  mount.addEventListener('touchstart',e=>{\n    userActive=true;lastInteraction=Date.now();\n    if(e.touches.length===1){\n      dragging=true;\n      lastX=e.touches[0].clientX;lastY=e.touches[0].clientY;\n    }else if(e.touches.length===2){\n      dragging=false;\n      pinchStartDist=touchDist(e.touches[0],e.touches[1]);\n      pinchStartZoom=targetZoom;\n    }\n  },{passive:true});\n  mount.addEventListener('touchmove',e=>{\n    userActive=true;lastInteraction=Date.now();\n    if(e.touches.length===1 && dragging){\n      const dx=e.touches[0].clientX-lastX,dy=e.touches[0].clientY-lastY;\n      lastX=e.touches[0].clientX;lastY=e.touches[0].clientY;\n      rotY+=dx*.008;rotX+=dy*.004;\n      rotX=Math.max(-.8,Math.min(.9,rotX));\n      e.preventDefault();\n    }else if(e.touches.length===2){\n      const dist=touchDist(e.touches[0],e.touches[1]);\n      const ratio=pinchStartDist\/Math.max(dist,1);\n      targetZoom=Math.max(ZOOM_MIN,Math.min(ZOOM_MAX,pinchStartZoom*ratio));\n      e.preventDefault();\n    }\n  },{passive:false});\n  mount.addEventListener('touchend',e=>{\n    if(e.touches.length===0) dragging=false;\n    else if(e.touches.length===1){\n      dragging=true;\n      lastX=e.touches[0].clientX;lastY=e.touches[0].clientY;\n    }\n  },{passive:true});\n\n  load('shaft');\n\n  let t=0;\n  function animate(){\n    requestAnimationFrame(animate);\n    t+=.016;\n\n    const r=mount.getBoundingClientRect();\n    if(r.width && r.height){\n      camera.aspect=r.width\/r.height;\n      camera.updateProjectionMatrix();\n      renderer.setSize(r.width,r.height,false);\n    }\n\n    if(Date.now()-lastInteraction>5000) userActive=false;\n\n    if(!userActive){\n      if(currentType==='beam') rotY+=.0022;\n      else if(currentType==='shaft' || currentType==='housing') rotY+=.0035;\n      else rotY+=.0048;\n      rotX+=(starts[currentType].rx-rotX)*.012;\n    }\n\n    currentZoom+=(targetZoom-currentZoom)*.08;\n\n    if(document.activeElement!==zoomSlider){\n      zoomSlider.value=targetZoom.toFixed(1);\n    }\n    const zoomPct=((parseFloat(zoomSlider.value)-ZOOM_MIN)\/(ZOOM_MAX-ZOOM_MIN))*100;\n    zoomSlider.style.setProperty('--zoomFill',zoomPct+'%');\n\n    const cssScale=Math.max(.76,Math.min(1.26,13\/currentZoom));\n    if(visualizer) visualizer.style.setProperty('--humanScale',cssScale.toFixed(3));\n\n    camera.position.z=currentZoom;\n    camera.position.x=Math.sin(t*.18)*.28;\n    camera.position.y=3.45+Math.sin(t*.22)*.14;\n    camera.lookAt(0,0,0);\n\n    root.rotation.y=rotY;\n    root.rotation.x=rotX+Math.sin(t*.25)*.035;\n\n    const posAttr=atmosphereParticles.geometry.attributes.position;\n    const speeds=atmosphereParticles.userData.speeds;\n    for(let i=0;i<posAttr.count;i++){\n      let y=posAttr.getY(i)+speeds[i]*.016;\n      if(y>4.2) y=-4.2;\n      posAttr.setY(i,y);\n    }\n    posAttr.needsUpdate=true;\n    atmosphereParticles.rotation.y+=.0006;\n\n    renderer.render(scene,camera);\n  }\n\n  animate();\n})();\n<\/script>\n<\/section>\n\n\n    \n <div class=\"hcv5-button-wrap\">\n    <a href=\"\/check\" class=\"hcv5-button\">\n        <span>Beherrschen wir Ihr Bauteil? Zum Check<\/span> \n    <\/a>\n    \n<\/div>\n\n  <script src=\"https:\/\/unpkg.com\/three@0.160.0\/build\/three.min.js\"><\/script>\n  <script>\n  (function(){\n    const mount=document.getElementById('hcv5Canvas');\n    const root=document.getElementById('heldeco-cad-cockpit-v5');\n    if(!mount||!window.THREE) return;\n    const THREE=window.THREE;\n    const scene=new THREE.Scene();\n    const camera=new THREE.PerspectiveCamera(35, mount.clientWidth\/mount.clientHeight, .1, 1200);\n    camera.position.set(0,4.2,15.5);\n    const renderer=new THREE.WebGLRenderer({antialias:true,alpha:true});\n    renderer.setPixelRatio(Math.min(devicePixelRatio,2));\n    renderer.setSize(mount.clientWidth,mount.clientHeight);\n    mount.appendChild(renderer.domElement);\n    const hblue=new THREE.Color('#1565a6'), cyan=new THREE.Color('#76d9ff');\n    scene.add(new THREE.AmbientLight(0xbdefff,.9));\n    const l1=new THREE.PointLight(0x76d9ff,3.8,120); l1.position.set(6,8,10); scene.add(l1);\n    const l2=new THREE.PointLight(0x1565a6,2.8,110); l2.position.set(-8,-4,8); scene.add(l2);\n    const l3=new THREE.DirectionalLight(0xffffff,1.4); l3.position.set(0,10,6); scene.add(l3);\n    const mainRoot=new THREE.Group(); scene.add(mainRoot);\n    const scanGroup=new THREE.Group(); scene.add(scanGroup);\n    let active=null, previous=null, state=0, transition=1, last=0;\n    const specs=[\n      {mass:'0,1 kg',scale:'x0.2',process:'PRECISION',length:'0.280 mm',dia:'\u00d8 40 mm'},\n      {mass:'820 kg',scale:'x2.4',process:'MILLING',length:'4.800 mm',dia:'\u00d8 620 mm'},\n      {mass:'3,2 t',scale:'x4.8',process:'TURNING',length:'7.000 mm',dia:'\u00d8 1.200 mm'},\n      {mass:'11,6 t',scale:'x8.6',process:'SYSTEM',length:'12.000 mm',dia:'GEOMETRY FREEFORM'},\n      {mass:'30 t',scale:'x12.0',process:'HEAVY',length:'20.000 mm',dia:'\u00d8 3.000 mm'}\n    ];\n    function cyl(r,l,seg=96){return new THREE.CylinderGeometry(r,r,l,seg,12,false)}\n    function box(x,y,z, sx=8, sy=4, sz=6){return new THREE.BoxGeometry(x,y,z,sx,sy,sz)}\n    function torus(R,t,rs=18,ts=128){return new THREE.TorusGeometry(R,t,rs,ts)}\n    function cone(r1,r2,l,seg=64){return new THREE.CylinderGeometry(r1,r2,l,seg,8,false)}\n    function solid(op=.72){return new THREE.MeshPhysicalMaterial({color:hblue,metalness:.88,roughness:.16,transparent:true,opacity:op,emissive:hblue,emissiveIntensity:.24,side:THREE.DoubleSide,clearcoat:.9,clearcoatRoughness:.12})}\n    function wire(op=.72){return new THREE.MeshBasicMaterial({color:cyan,wireframe:true,transparent:true,opacity:op})}\n    function addPart(container, geo,pos=[0,0,0],rot=[0,0,0],s=[1,1,1],op=.72){\n      const m=new THREE.Mesh(geo,solid(op)); const w=new THREE.Mesh(geo,wire(.76));\n      m.position.set(...pos); w.position.copy(m.position); m.rotation.set(...rot); w.rotation.copy(m.rotation); m.scale.set(...s); w.scale.copy(m.scale);\n      container.add(m); container.add(w); container.userData.parts.push({m,w,base:m.position.clone(),idx:container.userData.parts.length,scale:m.scale.clone()}); return m;\n    }\n    function toothRack(container,count=24,len=8){\n      addPart(container,box(len,.52,1.16,24,3,4),[0,0,0],[0,0,0],[1,1,1],.66);\n      for(let i=0;i<count;i++){ const x=-len\/2+i*(len\/(count-1)); addPart(container,box(.18,1.16,1.22,1,1,1),[x,.58,0],[0,0,.55],[1,1,1],.74); }\n    }\n    function makeState(i){\n      const g=new THREE.Group(); g.userData.parts=[]; g.userData.alpha=0; mainRoot.add(g);\n      i=i%5; state=i;\n      if(i===0){ \/\/ small precision part \/ compact shaft + gear teeth\n        addPart(g,cyl(.26,4.2,96),[0,0,0],[0,0,Math.PI\/2],[1,1,1],.74);\n        addPart(g,cyl(.72,.54,96),[-.7,0,0],[0,0,Math.PI\/2],[1,1,1],.78);\n        for(let t=0;t<28;t++){let a=t*Math.PI*2\/28; addPart(g,box(.10,.42,.26,1,1,1),[-.7+Math.cos(a)*.76,Math.sin(a)*.76,0],[0,0,a],[1,1,1],.82);}\n        addPart(g,cyl(.18,.9,64),[2.4,0,0],[0,0,Math.PI\/2],[1,1,1],.72);\n      }\n      if(i===1){ \/\/ long rack\n        toothRack(g,42,10.3);\n        for(let x=-4.4;x<=4.4;x+=1.1){ addPart(g,cyl(.18,.85,64),[x,.96,0],[0,0,0],[1,1,1],.74); addPart(g,torus(.24,.03),[x,.96,0],[Math.PI\/2,0,0],[1,1,1],.78); }\n        addPart(g,box(10.8,.06,1.55),[0,-.66,0],[0,0,0],[1,1,1],.35);\n      }\n      if(i===2){ \/\/ turbine\/blade abstraction\n        addPart(g,cyl(.30,5.2,96),[0,0,0],[0,0,Math.PI\/2],[1,1,1],.72);\n        for(let k=0;k<9;k++){ const x=-3.2+k*.8; const blade=addPart(g,box(.32,2.05,.18,3,8,1),[x,0,0],[.34,0,.52],[1,1.1+Math.sin(k)*.18,1],.77); }\n        addPart(g,torus(1.55,.07),[0,0,0],[Math.PI\/2,0,0],[1,.42,1],.62);\n        addPart(g,cone(.42,.22,1.4,64),[-3.8,0,0],[0,0,Math.PI\/2],[1,1,1],.68);\n        addPart(g,cone(.22,.42,1.4,64),[3.8,0,0],[0,0,Math.PI\/2],[1,1,1],.68);\n      }\n      if(i===3){ \/\/ housing\/block with bores\n        addPart(g,box(6.7,2.28,2.1,18,6,8),[0,0,0],[0,.13,0], [1,1,1],.68);\n        addPart(g,cyl(1.05,2.45,96),[0,0,0],[Math.PI\/2,.13,0],[1,1,1],.44);\n        addPart(g,torus(1.22,.06),[0,0,1.12],[0,0,0],[1,1,1],.8);\n        for(const x of [-2.45,2.45]) for(const y of [-.78,.78]) addPart(g,cyl(.22,.52,48),[x,y,1.18],[Math.PI\/2,0,0],[1,1,1],.82);\n        addPart(g,box(.8,3.2,2.15),[-3.25,0,0],[0,.13,0],[1,1,1],.72); addPart(g,box(.8,3.2,2.15),[3.25,0,0],[0,.13,0],[1,1,1],.72);\n      }\n      if(i===4){ \/\/ wedge\/special heavy geometry\n        addPart(g,box(5.4,1.0,1.5,12,4,6),[0,0,0],[0,.36,.05],[1,1,1],.68);\n        addPart(g,cone(.72,.42,2.3,4),[-2.35,.35,0],[0,.36,Math.PI\/4],[1,1,1.1],.72);\n        addPart(g,torus(.78,.09),[1.65,-.28,.12],[Math.PI\/2,.36,0],[1,1,1],.82);\n        addPart(g,cyl(.26,3.65,64),[.2,0,-.82],[0,0,Math.PI\/2],[1,1,1],.72);\n        for(let k=0;k<9;k++) addPart(g,box(.18,1.8,.34,1,1,1),[-2.55+k*.62,.16,.92],[0,.36,.05],[1,1,1],.78);\n      }\n      updateReadout();\n      return g;\n    }\n    function nextState(){ previous=active; active=makeState((state+1)%5); transition=0; if(previous) previous.userData.alpha=1; }\n    function updateReadout(){\n      const sp=specs[state];\n      const mass=document.getElementById('hcv5Mass'), scale=document.getElementById('hcv5Scale'), modeEl=document.getElementById('hcv5Mode');\n      if(mass) mass.textContent=sp.mass; if(scale) scale.textContent=sp.scale; if(modeEl) modeEl.textContent=sp.process;\n      const m1=root.querySelector('.hcv5-m1'),m2=root.querySelector('.hcv5-m2'),m3=root.querySelector('.hcv5-m3'),m4=root.querySelector('.hcv5-m4');\n      if(m1) m1.textContent='LENGTH '+sp.length; if(m2) m2.textContent=sp.dia; if(m3) m3.textContent='MASS '+sp.mass; if(m4) m4.textContent='CAPABILITY 0,1 KG \u2013 30 T';\n    }\n    active=makeState(0); active.userData.alpha=1;\n    const dotMat=new THREE.MeshBasicMaterial({color:cyan,transparent:true,opacity:.55});\n    for(let i=0;i<160;i++){let d=new THREE.Mesh(new THREE.SphereGeometry(.012,8,8),dotMat);let a=i*.64,r=4.8+(i%21)*.075;d.position.set(Math.cos(a)*r,Math.sin(i*.57)*2.05,Math.sin(a)*r*.52);scanGroup.add(d);} scene.add(scanGroup);\n    let t=0;\n    function setGroupAlpha(g,a){ if(!g) return; g.userData.alpha=a; g.userData.parts.forEach(p=>{p.m.material.opacity=.68*a; p.w.material.opacity=.76*a; p.m.material.emissiveIntensity=(.18+Math.abs(Math.sin(t*2.2+p.idx))* .22)*a;}); }\n    function animate(){\n      requestAnimationFrame(animate); t+=0.016;\n      const r=mount.getBoundingClientRect(); if(r.width&&r.height){camera.aspect=r.width\/r.height;camera.updateProjectionMatrix();renderer.setSize(r.width,r.height,false);}      \n      if(t-last>4.6){last=t;nextState();}\n      transition=Math.min(1,transition+.018);\n      const e=transition<.5 ? 2*transition*transition : 1-Math.pow(-2*transition+2,2)\/2;\n      const squeeze=Math.sin(transition*Math.PI);\n      if(active){setGroupAlpha(active,e); active.scale.set(.80+e*.34+squeeze*.30,.78+e*.28-squeeze*.20,.80+e*.34+squeeze*.26);}\n      if(previous){setGroupAlpha(previous,1-e); previous.scale.set(1.12-squeeze*.22,1.02+squeeze*.16,1.12-squeeze*.18); if(transition>=1){mainRoot.remove(previous); previous=null;}}\n      mainRoot.rotation.y+=.0058; mainRoot.rotation.x=Math.sin(t*.35)*.12; mainRoot.rotation.z=Math.sin(t*.21)*.035;\n      [active,previous].forEach(g=>{ if(!g) return; g.userData.parts.forEach(p=>{p.w.scale.copy(p.scale).multiplyScalar(1.012+Math.sin(t*3.5+p.idx)*.006);}); });\n      scanGroup.rotation.y-=.0028; scanGroup.rotation.x=Math.sin(t*.17)*.18;\n      camera.position.x=Math.sin(t*.16)*.85; camera.position.y=4.1+Math.sin(t*.25)*.22; camera.lookAt(0,0,0);\n      renderer.render(scene,camera);\n    }\n    animate();\n  })();\n  <\/script>\n  <br\/>\n<\/section>\n<section class=\"hh-section hh-flow\">\n  <div class=\"hh-wrap\">\n    <div class=\"hh-kicker\">When responsibility gets heavy.<\/div>\n    <h2 class=\"hh-title\">Ein Prozess.<br><span>Ein Partner.<\/span><\/h2>\n    <p class=\"hh-sub\">Von der Machbarkeitsanalyse bis zum verladenen Bauteil: HELDECO b\u00fcndelt die wesentlichen Fertigungsschritte unter einem Dach.<\/p>\n\n    <div class=\"hh-flow-line\">\n      <div class=\"hh-flow-track\">\n\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">01<\/div><div class=\"hh-flow-name\">Machbarkeitsanalyse<\/div><div class=\"hh-flow-copy\">Technisch sauber gekl\u00e4rt, bevor es in die Umsetzung geht.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">02<\/div><div class=\"hh-flow-name\">Materialbeschaffung<\/div><div class=\"hh-flow-copy\">Das passende Material f\u00fcr anspruchsvolle Bauteile.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">03<\/div><div class=\"hh-flow-name\">Programmierung<\/div><div class=\"hh-flow-copy\">Die Basis f\u00fcr pr\u00e4zise Fertigung.<\/div><\/div>\n\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">04<\/div><div class=\"hh-flow-name\">CNC Fr\u00e4sen<\/div><div class=\"hh-flow-copy\">Gro\u00dfe (und kleine) Teile mit hoher Ma\u00dfgenauigkeit.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">05<\/div><div class=\"hh-flow-name\">CNC Drehen<\/div><div class=\"hh-flow-copy\">Runde Bauteile in schweren und unterschiedlichen Dimensionen.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">06<\/div><div class=\"hh-flow-name\">Bohren<\/div><div class=\"hh-flow-copy\">Vorbereitung und Bearbeitung komplexer Komponenten.<\/div><\/div>\n\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">07<\/div><div class=\"hh-flow-name\">Schleifen<\/div><div class=\"hh-flow-copy\">Finish f\u00fcr Pr\u00e4zision und Oberfl\u00e4che.<\/div><\/div>\n\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">08<\/div><div class=\"hh-flow-name\">Honen<\/div><div class=\"hh-flow-copy\">Feinbearbeitung f\u00fcr anspruchsvolle Oberfl\u00e4chen.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">09<\/div><div class=\"hh-flow-name\">Sto\u00dfen<\/div><div class=\"hh-flow-copy\">Formgebung f\u00fcr spezielle Geometrien.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">10<\/div><div class=\"hh-flow-name\">Schwei\u00dfen<\/div><div class=\"hh-flow-copy\">Verbindungen f\u00fcr belastbare Baugruppen.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">11<\/div><div class=\"hh-flow-name\">Beschichten<\/div><div class=\"hh-flow-copy\">Oberfl\u00e4chen gezielt sch\u00fctzen, veredeln und funktional erweitern.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">12<\/div><div class=\"hh-flow-name\">NDT-Pr\u00fcfungen<\/div><div class=\"hh-flow-copy\">Kontrolle, bevor es kritisch wird.<\/div><\/div>\n\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">13<\/div><div class=\"hh-flow-name\">Messen<\/div><div class=\"hh-flow-copy\">Nachweisbare Qualit\u00e4t statt Bauchgef\u00fchl.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">14<\/div><div class=\"hh-flow-name\">Verpacken<\/div><div class=\"hh-flow-copy\">Sicher vorbereitet f\u00fcr den Transport.<\/div><\/div>\n        <div class=\"hh-flow-item\"><div class=\"hh-flow-num\">15<\/div><div class=\"hh-flow-name\">Versand & Logistik<\/div><div class=\"hh-flow-copy\">Termingerecht raus. Sauber \u00fcbergeben.<\/div><\/div>\n\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n  <\/section>\n\n  <section class=\"hh-section hh-scale\">\n    <div class=\"hh-wrap\">\n      <div class=\"hh-kicker\">When planning gets heavy.<\/div>\n      <h2 class=\"hh-title\">Von 1 bis <span>1.500.<\/span><\/h2>\n      <p class=\"hh-sub\">Bedarfsgerechte Planung und termingerechte Auslieferung f\u00fcr Prototypen, kleine und mittlere Serien.<\/p>\n      <div class=\"hh-scale-box\">\n        <div class=\"hh-scale-row\"><div class=\"hh-scale-point\">1<\/div><div class=\"hh-scale-line\"><\/div><div class=\"hh-scale-point\">10<\/div><div class=\"hh-scale-line\"><\/div><div class=\"hh-scale-point\">100<\/div><div class=\"hh-scale-line\"><\/div><div class=\"hh-scale-point\">500<\/div><div class=\"hh-scale-line\"><\/div><div class=\"hh-scale-point\">1.500<\/div><\/div>\n        <div class=\"hh-scale-text\">\n          <p><strong>Prototypen.<\/strong> F\u00fcr neue Komponenten, Sonderl\u00f6sungen und anspruchsvolle Einzelteile.<\/p>\n          <p><strong>Serien.<\/strong> F\u00fcr kleine und mittlere Serien bis 1.500 St\u00fcck \u2013 planbar, pr\u00e4zise und lieferf\u00e4hig.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<section id=\"heldeco-industries\" class=\"hh-section hh-industries\">\n<div class=\"hh-wrap\">\n<div class=\"hh-kicker\">Where heavy industries move.<\/div>\n<h2 class=\"hh-title\">Wo unsere Komponenten <span>arbeiten.<\/span><\/h2>\n<p class=\"hh-sub\">Die von HELDECO gefertigten Komponenten kommen \u00fcberall dort zum Einsatz, wo kompromisslose Pr\u00e4zision gefragt ist.<\/p>\n\n<div class=\"hh-ind-board\">\n\n<div class=\"hh-ind-hero\">\n<img decoding=\"async\" id=\"hhIndImage\" src=\"\/wp-content\/uploads\/2026\/07\/Schwerindustrie.jpeg\" alt=\"\" fetchpriority=\"high\">\n\n<div class=\"hh-ind-hero-text\">\n<div class=\"hh-ind-label\">INDUSTRY<\/div>\n<div class=\"hh-ind-accent\"><\/div>\n<h3 id=\"hhIndTitle\" lang=\"de\">Schwerindustrie.<\/h3>\n<p id=\"hhIndText\" lang=\"de\">Walzwerkkomponenten, Antriebe, Maschinenkomponenten und Ersatzteile in verschiedenen Dimensionen.<\/p>\n<div class=\"hh-ind-arrow\">\n<svg viewBox=\"0 0 80 10\" fill=\"none\"><path d=\"M0 5H72\" stroke=\"white\" stroke-width=\"1.5\"\/><path d=\"M68 1L72 5L68 9\" stroke=\"white\" stroke-width=\"1.5\"\/><\/svg>\n<\/div>\n<\/div>\n<\/div>\n\n<div class=\"hh-ind-list\">\n\n<article class=\"hh-ind-row is-active\" data-title=\"Schwerindustrie\" data-text=\"Walzwerkkomponenten, Antriebe, Maschinenkomponenten und Ersatzteile in verschiedenen Dimensionen.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Schwerindustrie.jpeg\">\n<div class=\"hh-ind-no\">01<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Schwerindustrie.jpeg\" alt=\"Schwerindustrie\" loading=\"lazy\"><\/div>\n<h3>Schwerindustrie<\/h3>\n<p>Walzwerkkomponenten, Antriebe, Maschinenkomponenten und Ersatzteile in verschiedenen Dimensionen.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Energie\" data-text=\"Kaplan-, Pelton- und Francis-Anwendungen f\u00fcr die Wasserkraftindustrie, Hebeelemente sowie Fixier- und Verstellsysteme f\u00fcr Wind- sowie Gasenergie.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Energie.jpeg\">\n<div class=\"hh-ind-no\">02<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Energie.jpeg\" alt=\"Energie\" loading=\"lazy\"><\/div>\n<h3>Energie<\/h3>\n<p>Kaplan-, Pelton- und Francis-Anwendungen f\u00fcr die Wasserkraftindustrie, Hebeelemente sowie Fixier- und Verstellsysteme f\u00fcr Wind- sowie Gasenergie.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Mobilit\u00e4t\" data-text=\"Komponenten f\u00fcr Mining, Rail, Automotive und Yellow Goods.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Mobilitaet.jpeg\">\n<div class=\"hh-ind-no\">03<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Mobilitaet.jpeg\" alt=\"Mobilit\u00e4t\" loading=\"lazy\"><\/div>\n<h3>Mobilit\u00e4t<\/h3>\n<p>Komponenten f\u00fcr Mining, Rail, Automotive und Yellow Goods.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Nukleartechnik\" data-text=\"Pr\u00e4zisionskomponenten f\u00fcr anspruchsvolle nukleartechnische Anwendungen \u2013 gefertigt mit h\u00f6chster Ma\u00dfhaltigkeit, Dokumentation und Prozesssicherheit.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Nukleartechnik.jpeg\">\n<div class=\"hh-ind-no\">04<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Nukleartechnik.jpeg\" alt=\"Nukleartechnik\" loading=\"lazy\"><\/div>\n<h3>Nukleartechnik<\/h3>\n<p>Pr\u00e4zisionskomponenten f\u00fcr anspruchsvolle nukleartechnische Anwendungen \u2013 gefertigt mit h\u00f6chster Ma\u00dfhaltigkeit, Dokumentation und Prozesssicherheit.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Luft- und Raumfahrt\" data-text=\"Pr\u00e4zisionsbauteile f\u00fcr die Luft- und Raumfahrt \u2013 gefertigt nach EN 9100.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Luftfahrt.jpeg\">\n<div class=\"hh-ind-no\">05<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Luftfahrt.jpeg\" alt=\"Luft- und Raumfahrt\" loading=\"lazy\"><\/div>\n<h3>Luft- und Raumfahrt<\/h3>\n<p>Pr\u00e4zisionsbauteile f\u00fcr die Luft- und Raumfahrt \u2013 gefertigt nach EN 9100.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Anlagen- &amp; Maschinenbau\" data-text=\"Einbaufertige Komponenten, Baugruppen und komplexe Systeml\u00f6sungen f\u00fcr industrielle Auftraggeber.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Anlagenbau.jpeg\">\n<div class=\"hh-ind-no\">06<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Anlagenbau.jpeg\" alt=\"Anlagen- &amp; Maschinenbau\" loading=\"lazy\"><\/div>\n<h3>Anlagen- & Maschinenbau<\/h3>\n<p>Einbaufertige Komponenten, Baugruppen und komplexe Systeml\u00f6sungen f\u00fcr industrielle Auftraggeber.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Lebensmittel &amp; Pharma\" data-text=\"Systemkomponenten, Beh\u00e4lter, R\u00fchrwerke und Spezialteile, wenn Qualit\u00e4t und Sauberkeit z\u00e4hlen.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Lebensmittel.jpeg\">\n<div class=\"hh-ind-no\">07<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Lebensmittel.jpeg\" alt=\"Lebensmittel &amp; Pharma\" loading=\"lazy\"><\/div>\n<h3>Lebensmittel & Pharma<\/h3>\n<p>Systemkomponenten, Beh\u00e4lter, R\u00fchrwerke und Spezialteile, wenn Qualit\u00e4t und Sauberkeit z\u00e4hlen.<\/p>\n<\/div>\n<\/article><article class=\"hh-ind-row\" data-title=\"Retrofit &amp; Instandhaltung\" data-text=\"Aufarbeitung, Nachfertigung und komplexe Ersatzteile in Erstausr\u00fcsterqualit\u00e4t.\" data-image=\"\/wp-content\/uploads\/2026\/07\/Retrofit.jpeg\">\n<div class=\"hh-ind-no\">08<\/div>\n<div class=\"hh-ind-content\">\n<div class=\"hh-ind-mobile-image\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/Retrofit.jpeg\" alt=\"Retrofit &amp; Instandhaltung\" loading=\"lazy\"><\/div>\n<h3>Retrofit & Instandhaltung<\/h3>\n<p>Aufarbeitung, Nachfertigung und komplexe Ersatzteile in Erstausr\u00fcsterqualit\u00e4t.<\/p>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n\n<div class=\"hcv5-button-wrap\">\n<a class=\"hcv5-button\" href=\"\/ueber-uns\"><span>Mehr erfahren<\/span><\/a>\n<\/div>\n\n<\/div>\n<\/section>\n\n<style>\n#heldeco-industries .hh-ind-mobile-image{display:none}\n\n#heldeco-industries .hh-ind-hero{position:relative;min-height:660px;display:flex;align-items:flex-end;overflow:hidden;border-radius:20px;background:#07131d}\n#heldeco-industries .hh-ind-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.2,1),opacity .45s;transform:scale(1.04)}\n#heldeco-industries .hh-ind-hero:hover img{transform:scale(1.08)}\n#heldeco-industries .hh-ind-hero:before{content:\"\";position:absolute;inset:0;background:\nradial-gradient(circle at 15% 45%,rgba(21,101,166,.22),transparent 35%),\nlinear-gradient(90deg,rgba(4,10,18,.97) 0%,rgba(4,10,18,.92) 18%,rgba(4,10,18,.78) 42%,rgba(4,10,18,.42) 68%,transparent 100%)}\n#heldeco-industries .hh-ind-hero-text{\nposition:relative;\nz-index:3;\nmax-width:420px;\nmargin:0 0 78px 72px;\npadding:34px 34px 30px;\nbackground:linear-gradient(145deg,rgba(7,18,30,.92),rgba(7,18,30,.72));\nborder:1px solid rgba(255,255,255,.08);\nborder-left:5px solid #1565a6;\nborder-radius:22px;\nbackdrop-filter:blur(18px);\nbox-shadow:\n0 30px 60px rgba(0,0,0,.35),\n0 0 0 1px rgba(255,255,255,.03) inset;\noverflow:hidden;\ntransition:opacity .25s,transform .25s;\n}\n#heldeco-industries .hh-ind-label{display:inline-block;color:#8fb6d8;font-size:12px;font-weight:700;letter-spacing:.22em;margin-bottom:18px}\n#heldeco-industries .hh-ind-accent{width:64px;height:4px;background:#1565a6;border-radius:99px;margin-bottom:22px;transition:width .35s}\n#heldeco-industries .hh-ind-hero.switch .hh-ind-accent{width:110px}\n#heldeco-industries .hh-ind-hero-text h3{margin:0 0 18px;color:#fff;font-size:clamp(26px,2.1vw,34px);line-height:.95;max-width:260px;\nhyphens:auto;-webkit-hyphens:auto;-ms-hyphens:auto;overflow-wrap:normal;word-break:normal;text-wrap:pretty}\n#heldeco-industries .hh-ind-hero-text p{margin:0;color:rgba(255,255,255,.97);font-size:15px;line-height:1.85;max-width:350px;text-shadow:0 2px 12px rgba(0,0,0,.45);\nhyphens:auto;-webkit-hyphens:auto;text-wrap:pretty}\n#heldeco-industries .hh-ind-arrow{margin-top:28px;width:82px;opacity:.75;transform:translateX(0);transition:transform .3s,opacity .3s}\n#heldeco-industries .hh-ind-hero:hover .hh-ind-arrow{transform:translateX(8px);opacity:1}\n#heldeco-industries .hh-ind-row{cursor:pointer;transition:all .25s;border-left:3px solid transparent;padding-left:14px;position:relative}\n#heldeco-industries .hh-ind-row:hover{transform:translateX(8px);box-shadow:0 12px 30px rgba(0,0,0,.08)}\n#heldeco-industries .hh-ind-row.is-active{border-left-color:#1565a6;background:linear-gradient(90deg,rgba(21,101,166,.10),transparent)}\n#heldeco-industries .hh-ind-hero.switch img{opacity:.32;transform:scale(1.09)}\n#heldeco-industries .hh-ind-hero.switch .hh-ind-hero-text{opacity:0;transform:translateY(12px)}\n\n#heldeco-industries .hh-ind-hero img{\nbackface-visibility:hidden;\nwill-change:transform,opacity;\n}\n#heldeco-industries .hh-ind-hero{\ncontain:paint;\n}\n\n#heldeco-industries .hh-ind-label{\ncolor:#1565a6;\nbackground:rgba(21,101,166,.12);\nborder:1px solid rgba(21,101,166,.35);\npadding:7px 12px;\nborder-radius:999px;\nbackdrop-filter:blur(8px);\n}\n#heldeco-industries .hh-ind-accent{\nheight:5px;\nbackground:linear-gradient(90deg,#1565a6,#4fa3e3);\nbox-shadow:0 0 24px rgba(21,101,166,.45);\n}\n#heldeco-industries .hh-ind-hero-text h3{\ntext-shadow:0 3px 22px rgba(0,0,0,.55);\nhyphens:auto;\n-webkit-hyphens:auto;\n}\n\n#heldeco-industries .hh-ind-hero-text::after{\ncontent:\"\";\nposition:absolute;\nleft:-35%;\ntop:0;\nwidth:26%;\nheight:100%;\nbackground:linear-gradient(90deg,\ntransparent,\nrgba(79,163,227,.18),\nrgba(21,101,166,.45),\nrgba(79,163,227,.18),\ntransparent);\nfilter:blur(10px);\ntransform:skewX(-22deg);\nanimation:heldecoScanner 6s ease-in-out infinite;\npointer-events:none;\n}\n\n@keyframes heldecoScanner{\n0%,18%{left:-35%;opacity:0;}\n24%{opacity:1;}\n52%{left:118%;opacity:.95;}\n60%,100%{left:118%;opacity:0;}\n}\n\n#heldeco-industries .hh-ind-hero-text::before{\ncontent:\"\";\nposition:absolute;\ninset:0;\nbackground:\nradial-gradient(circle at top right,rgba(21,101,166,.18),transparent 40%);\npointer-events:none;\n}\n\n#heldeco-industries .hh-ind-label{\nposition:relative;\nz-index:2;\n}\n\n#heldeco-industries .hh-ind-accent{\nwidth:90px;\n}\n\n\/* =========================================================\n   MOBILE ONLY \u2013 \u00fcberarbeitet: elegante Bildkarten statt Liste\n   ========================================================= *\/\n@media (max-width:780px){\n\n#heldeco-industries .hh-ind-board{\ndisplay:block;\n}\n\n#heldeco-industries .hh-ind-hero{\ndisplay:none;\n}\n\n#heldeco-industries .hh-ind-list{\ndisplay:flex;\nflex-direction:column;\ngap:20px;\n}\n\n\/* Karte statt Liste: volles Bild, dunkler Verlauf, Glas-Badge *\/\n#heldeco-industries .hh-ind-row{\nposition:relative;\ndisplay:block;\ngrid-template-columns:none;\nborder:0;\nmargin:0;\npadding:0;\nborder-radius:24px;\noverflow:hidden;\nmin-height:300px;\nbackground:#07131d;\nbox-shadow:0 22px 46px rgba(7,19,31,.28);\nopacity:0;\ntransform:translateY(28px) scale(.98);\ntransition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);\n}\n\n#heldeco-industries .hh-ind-row.hh-in-view{\nopacity:1;\ntransform:translateY(0) scale(1);\n}\n\n#heldeco-industries .hh-ind-row:active{\ntransform:scale(.985);\n}\n\n#heldeco-industries .hh-ind-row:last-child{\nmargin-bottom:0;\n}\n\n#heldeco-industries .hh-ind-content{\nposition:relative;\nmin-height:300px;\ndisplay:flex;\nflex-direction:column;\njustify-content:flex-end;\n}\n\n#heldeco-industries .hh-ind-mobile-image{\ndisplay:block;\nposition:absolute;\ninset:0;\nwidth:100%;\nheight:100%;\nmargin:0;\nborder-radius:0;\nbackground:#07131d;\n}\n\n#heldeco-industries .hh-ind-mobile-image img{\ndisplay:block;\nwidth:100%;\nheight:100%;\nobject-fit:cover;\ntransform:scale(1.03);\n}\n\n\/* filmischer Verlauf f\u00fcr Lesbarkeit, wie beim Desktop-Hero *\/\n#heldeco-industries .hh-ind-content:before{\ncontent:\"\";\nposition:absolute;\ninset:0;\nz-index:1;\nbackground:\nradial-gradient(circle at 85% 8%,rgba(21,101,166,.28),transparent 42%),\nlinear-gradient(180deg,rgba(7,19,31,0) 28%,rgba(7,19,31,.62) 64%,rgba(7,19,31,.96) 100%);\n}\n\n\/* Nummer als Glas-Pill oben, wie das INDUSTRY-Label am Desktop *\/\n#heldeco-industries .hh-ind-no{\nposition:absolute;\ntop:18px;\nleft:18px;\nz-index:3;\npadding:6px 13px;\ncolor:#cfe3f5;\nfont-size:11px;\nfont-weight:800;\nletter-spacing:.2em;\nborder-radius:999px;\nbackground:rgba(21,101,166,.22);\nborder:1px solid rgba(255,255,255,.22);\nbackdrop-filter:blur(10px);\n}\n\n#heldeco-industries .hh-ind-row h3{\nposition:relative;\nz-index:2;\nmargin:0 22px 6px;\ncolor:#fff;\nfont-size:23px;\nline-height:1.08;\nletter-spacing:-.02em;\ntext-shadow:0 3px 18px rgba(0,0,0,.45);\n}\n\n\/* kleiner Akzentstrich \u00fcber dem Titel, passend zum Desktop-Akzent *\/\n#heldeco-industries .hh-ind-row h3:before{\ncontent:\"\";\ndisplay:block;\nwidth:34px;\nheight:3px;\nmargin-bottom:14px;\nborder-radius:99px;\nbackground:linear-gradient(90deg,#1565a6,#4fa3e3);\nbox-shadow:0 0 16px rgba(21,101,166,.5);\n}\n\n#heldeco-industries .hh-ind-row p{\nposition:relative;\nz-index:2;\nmargin:0 22px 22px;\ncolor:rgba(255,255,255,.9);\nfont-size:14.5px;\nline-height:1.65;\ntext-shadow:0 2px 10px rgba(0,0,0,.4);\n}\n\n#heldeco-industries .hh-ind-row.is-active .hh-ind-no{\nbackground:rgba(21,101,166,.34);\n}\n\n}\n<\/style>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\",()=>{\nconst root=document.getElementById(\"heldeco-industries\"); if(!root)return;\nconst hero=root.querySelector(\".hh-ind-hero\"),img=root.querySelector(\"#hhIndImage\"),h=root.querySelector(\"#hhIndTitle\"),t=root.querySelector(\"#hhIndText\");\nrequestAnimationFrame(()=>hero.classList.add('ken'));\nroot.querySelectorAll(\".hh-ind-row\").forEach(r=>{\nnew Image().src=r.dataset.image;\nr.onclick=()=>{\nif(window.matchMedia(\"(max-width:780px)\").matches)return;\nif(r.classList.contains(\"is-active\"))return;\nroot.querySelectorAll(\".hh-ind-row\").forEach(x=>x.classList.remove(\"is-active\"));\nr.classList.add(\"is-active\");\nhero.classList.add(\"switch\");\n\nconst next=new Image();\nnext.decoding=\"async\";\nnext.fetchPriority=\"high\";\nnext.src=r.dataset.image;\n\nconst swap=()=>{\n    h.textContent=r.dataset.title;\n    t.textContent=r.dataset.text;\n\n    requestAnimationFrame(()=>{\n        img.src=next.src;\n        img.decode?.().catch(()=>{}).finally(()=>{\n            requestAnimationFrame(()=>{\n                hero.classList.remove(\"switch\");\n            });\n        });\n    });\n};\n\nif(next.complete){\n    swap();\n}else{\n    next.onload=swap;\n}\n};\n});\n\n\/* Scroll-Reveal f\u00fcr die mobilen Karten (nur Optik, keine Funktion) *\/\nif('IntersectionObserver' in window){\nconst hhIo=new IntersectionObserver((entries)=>{\nentries.forEach(entry=>{\nif(entry.isIntersecting){\nentry.target.classList.add('hh-in-view');\nhhIo.unobserve(entry.target);\n}\n});\n},{threshold:0.18,rootMargin:'0px 0px -40px 0px'});\nroot.querySelectorAll('.hh-ind-row').forEach(r=>hhIo.observe(r));\n}\n});\n<\/script>\n\n  <section class=\"hh-section hh-career\">\n    <div class=\"hh-wrap\">\n      <div class=\"hh-kicker\">When careers get heavy.<\/div>\n      <h2 class=\"hh-title\">70 Spezialisten.<br><span>Ein Team.<\/span><\/h2>\n      <p class=\"hh-sub\">Wir sind stets auf der Suche nach Mitarbeiter:innen, die sich in unser eigent\u00fcmergef\u00fchrtes Familienunternehmen einbringen m\u00f6chten.<\/p>\n      <a class=\"hh-btn\" href=\"\/karriere\/\">Offene Stellen ansehen<\/a>  <\/br>\n            <a class=\"hh-btn\" href=\"\/ueber-uns-2\/firmengeschichte\/\">Zur Firmengeschichte<\/a>\n    <\/div>\n  <\/section>\n\n  <section class=\"hh-section hh-index\">\n    <div class=\"hh-wrap\">\n      <div class=\"hh-kicker\">When proof gets heavy.<\/div>\n      <h2 class=\"hh-title\">Zahlen, die <span>tragen.<\/span><\/h2>\n      <p class=\"hh-sub\">Gro\u00df denken. Pr\u00e4zise fertigen. Verl\u00e4sslich liefern.<\/p>\n      <div class=\"hh-heavy-index-grid\">\n        <article class=\"hh-heavy-index-item\"><div class=\"hh-hi-label\">Projekte<\/div><div><div class=\"hh-hi-value\">16k<\/div><p class=\"hh-hi-copy\">Projekte in schweren Dimensionen.<\/p><\/div><\/article>\n        <article class=\"hh-heavy-index-item\"><div class=\"hh-hi-label\">Spezialisten<\/div><div><div class=\"hh-hi-value\">70<\/div><p class=\"hh-hi-copy\">Fertigung, Technik, Planung und Qualit\u00e4t.<\/p><\/div><\/article>\n        <article class=\"hh-heavy-index-item is-feature\"><div class=\"hh-hi-label\">Seit<\/div><div><div class=\"hh-hi-value\">1991<\/div><p class=\"hh-hi-copy\">Eigent\u00fcmergef\u00fchrte Fertigungskompetenz aus der Obersteiermark.<\/p><\/div><\/article>\n        <article class=\"hh-heavy-index-item\"><div class=\"hh-hi-label\">Fr\u00e4sl\u00e4nge<\/div><div><div class=\"hh-hi-value\">20m<\/div><p class=\"hh-hi-copy\">F\u00fcr Bauteile au\u00dferhalb des Standards.<\/p><\/div><\/article>\n        <article class=\"hh-heavy-index-item\"><div class=\"hh-hi-label\">St\u00fcckgewicht<\/div><div><div class=\"hh-hi-value\">30t<\/div><p class=\"hh-hi-copy\">Kapazit\u00e4t f\u00fcr schwere Komponenten.<\/p><\/div><\/article>\n      <\/div>\n      <div class=\"hh-final-claim\">\n        <h3>When it gets<br>heavy.<\/h3>\n        <p>Think big. Pr\u00e4zise fertigen. Verl\u00e4sslich liefern.<\/p>\n      <\/div>\n      \n    <\/div>\n\n  <\/section>\n\n<\/section>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-410be13 e-flex e-con-boxed e-con e-parent\" data-id=\"410be13\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60a269c elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"60a269c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n    <section class=\"newsletter-fine\">\n        <div class=\"newsletter-fine__inner\">\n            <div class=\"newsletter-fine__text\">\n                <span>HELDECO NEWSLETTER<\/span>\n                <strong>Vier Mal pro Jahr. Echte Projekte. Kein Standard.<\/strong>\n            <\/div>\n\n            <button type=\"button\" class=\"newsletter-fine__button\" data-newsletter-fine-open>\n                Jetzt Newsletter abonnieren\n            <\/button>\n        <\/div>\n    <\/section>\n\n    <div class=\"newsletter-fine-popup\" id=\"newsletterFinePopup\" aria-hidden=\"true\">\n        <div class=\"newsletter-fine-popup__backdrop\" data-newsletter-fine-close><\/div>\n\n        <div class=\"newsletter-fine-popup__box\" role=\"dialog\" aria-modal=\"true\">\n            <button type=\"button\" class=\"newsletter-fine-popup__close\" data-newsletter-fine-close>\u00d7<\/button>\n\n            <div class=\"newsletter-fine-popup__content\" data-newsletter-fine-formwrap>\n                <span class=\"newsletter-fine-popup__kicker\">HELDECO NEWSLETTER<\/span>\n\n                <h3>Bleiben Sie informiert.<\/h3>\n\n                <p>\n                    Der HELDECO-Newsletter erreicht Sie vier Mal pro Jahr.\n                    Mit echten Inhalten. Im HELDECO-Stil.\n                <\/p>\n\n                <form class=\"newsletter-fine-form\" id=\"newsletterFineForm\">\n                    <label>\n                        Name\n                        <input type=\"text\" name=\"FNAME\" placeholder=\"Ihr Name\">\n                    <\/label>\n\n                    <label>\n                        E-Mail *\n                        <input type=\"email\" name=\"EMAIL\" placeholder=\"ihre.mail@beispiel.at\" required>\n                    <\/label>\n\n                    <input type=\"text\" name=\"b_580e2abc155a5b4c077591c67_e598ede2d6\" tabindex=\"-1\" autocomplete=\"off\" style=\"position:absolute;left:-5000px;\" aria-hidden=\"true\">\n\n                    <button type=\"submit\">\n                        Anmelden\n                    <\/button>\n\n                    <div class=\"newsletter-fine-message\" data-newsletter-fine-message><\/div>\n                <\/form>\n            <\/div>\n\n            <div class=\"newsletter-fine-success\" data-newsletter-fine-success hidden>\n                <span>\u2713<\/span>\n                <h3>Danke.<\/h3>\n                <p>Ihre Anmeldung wurde erfolgreich \u00fcbermittelt.<\/p>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <style>\n        .newsletter-fine {\n            width: 100%;\n            background: #f7f8fa;\n            border-top: 1px solid rgba(5, 12, 20, .08);\n            border-bottom: 1px solid rgba(5, 12, 20, .08);\n            padding: 28px 22px;\n            box-sizing: border-box;\n        }\n\n        .newsletter-fine__inner {\n            width: min(1180px, 100%);\n            margin: 0 auto;\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            gap: 28px;\n        }\n\n        .newsletter-fine__text {\n            display: flex;\n            flex-direction: column;\n            gap: 7px;\n        }\n\n        .newsletter-fine__text span {\n            color: #1565a6;\n            font-size: 11px;\n            font-weight: 900;\n            letter-spacing: .18em;\n            text-transform: uppercase;\n        }\n\n        .newsletter-fine__text strong {\n            color: #07111d;\n            font-size: clamp(20px, 2.2vw, 32px);\n            line-height: 1.1;\n            letter-spacing: -.035em;\n            font-weight: 900;\n        }\n\n        .newsletter-fine__button {\n            flex: 0 0 auto;\n            border: 0;\n            border-radius: 999px;\n            background: #1565a6;\n            color: #fff;\n            padding: 15px 26px;\n            font-size: 12px;\n            font-weight: 900;\n            letter-spacing: .11em;\n            text-transform: uppercase;\n            cursor: pointer;\n            transition: .18s ease;\n        }\n\n        .newsletter-fine__button:hover {\n            background: #1c78c2;\n            transform: translateY(-1px);\n        }\n\n        .newsletter-fine-popup {\n            position: fixed;\n            inset: 0;\n            z-index: 999999;\n            display: none;\n            align-items: center;\n            justify-content: center;\n            padding: 22px;\n            box-sizing: border-box;\n        }\n\n        .newsletter-fine-popup.is-open {\n            display: flex;\n        }\n\n        .newsletter-fine-popup__backdrop {\n            position: absolute;\n            inset: 0;\n            background: rgba(5, 12, 20, .76);\n            backdrop-filter: blur(10px);\n        }\n\n        .newsletter-fine-popup__box {\n            position: relative;\n            width: min(500px, 100%);\n            background: linear-gradient(145deg, #07111d, #0d2236);\n            color: #fff;\n            border-radius: 24px;\n            border: 1px solid rgba(255,255,255,.14);\n            padding: clamp(28px, 5vw, 42px);\n            box-shadow: 0 30px 90px rgba(0,0,0,.45);\n            box-sizing: border-box;\n        }\n\n        .newsletter-fine-popup__close {\n            position: absolute;\n            top: 16px;\n            right: 18px;\n            width: 34px;\n            height: 34px;\n            border: 1px solid rgba(255,255,255,.18);\n            border-radius: 50%;\n            background: rgba(255,255,255,.06);\n            color: #fff;\n            font-size: 25px;\n            line-height: 1;\n            cursor: pointer;\n        }\n\n        .newsletter-fine-popup__kicker {\n            display: block;\n            margin-bottom: 14px;\n            color: #7db7e7;\n            font-size: 11px;\n            font-weight: 900;\n            letter-spacing: .18em;\n            text-transform: uppercase;\n        }\n\n        .newsletter-fine-popup h3 {\n            margin: 0 0 14px;\n            color: #fff;\n            font-size: clamp(34px, 6vw, 52px);\n            line-height: .95;\n            letter-spacing: -.05em;\n        }\n\n        .newsletter-fine-popup p {\n            margin: 0 0 26px;\n            color: rgba(255,255,255,.72);\n            font-size: 16px;\n            line-height: 1.55;\n        }\n\n        .newsletter-fine-form label {\n            display: block;\n            margin-bottom: 17px;\n            color: rgba(255,255,255,.78);\n            font-size: 12px;\n            font-weight: 800;\n            letter-spacing: .12em;\n            text-transform: uppercase;\n        }\n\n        .newsletter-fine-form input {\n            width: 100%;\n            margin-top: 8px;\n            padding: 15px 16px;\n            border-radius: 14px;\n            border: 1px solid rgba(255,255,255,.16);\n            background: rgba(255,255,255,.08);\n            color: #fff;\n            font-size: 16px;\n            outline: none;\n            box-sizing: border-box;\n        }\n\n        .newsletter-fine-form input::placeholder {\n            color: rgba(255,255,255,.38);\n        }\n\n        .newsletter-fine-form input:focus {\n            border-color: #1565a6;\n            box-shadow: 0 0 0 3px rgba(21,101,166,.28);\n        }\n\n        .newsletter-fine-form button {\n            width: 100%;\n            margin-top: 6px;\n            padding: 16px 20px;\n            border: 0;\n            border-radius: 999px;\n            background: #1565a6;\n            color: #fff;\n            font-size: 13px;\n            font-weight: 900;\n            letter-spacing: .12em;\n            text-transform: uppercase;\n            cursor: pointer;\n        }\n\n        .newsletter-fine-form button:hover {\n            background: #1c78c2;\n        }\n\n        .newsletter-fine-message {\n            margin-top: 14px;\n            color: #ffb4b4;\n            font-size: 14px;\n            line-height: 1.4;\n            display: none;\n        }\n\n        .newsletter-fine-success {\n            text-align: center;\n            padding: 18px 0 8px;\n        }\n\n        .newsletter-fine-success span {\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n            width: 54px;\n            height: 54px;\n            margin-bottom: 18px;\n            border-radius: 50%;\n            background: #1565a6;\n            color: #fff;\n            font-size: 30px;\n            font-weight: 900;\n        }\n\n        body.newsletter-fine-open {\n            overflow: hidden;\n        }\n\n        @media (max-width: 720px) {\n            .newsletter-fine__inner {\n                flex-direction: column;\n                align-items: flex-start;\n            }\n\n            .newsletter-fine__button {\n                width: 100%;\n            }\n        }\n    <\/style>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', function () {\n            const popup = document.getElementById('newsletterFinePopup');\n            const form = document.getElementById('newsletterFineForm');\n\n            if (!popup || !form) return;\n\n            const openers = document.querySelectorAll('[data-newsletter-fine-open]');\n            const closers = document.querySelectorAll('[data-newsletter-fine-close]');\n            const formWrap = popup.querySelector('[data-newsletter-fine-formwrap]');\n            const success = popup.querySelector('[data-newsletter-fine-success]');\n            const message = popup.querySelector('[data-newsletter-fine-message]');\n\n            function openPopup(e) {\n                if (e) e.preventDefault();\n                popup.classList.add('is-open');\n                popup.setAttribute('aria-hidden', 'false');\n                document.body.classList.add('newsletter-fine-open');\n\n                if (formWrap) formWrap.hidden = false;\n                if (success) success.hidden = true;\n                if (message) {\n                    message.style.display = 'none';\n                    message.textContent = '';\n                }\n\n                setTimeout(function () {\n                    const email = popup.querySelector('input[name=\"EMAIL\"]');\n                    if (email) email.focus();\n                }, 80);\n            }\n\n            function closePopup(e) {\n                if (e) e.preventDefault();\n                popup.classList.remove('is-open');\n                popup.setAttribute('aria-hidden', 'true');\n                document.body.classList.remove('newsletter-fine-open');\n            }\n\n            openers.forEach(function (el) {\n                el.addEventListener('click', openPopup);\n            });\n\n            closers.forEach(function (el) {\n                el.addEventListener('click', closePopup);\n            });\n\n            document.addEventListener('keydown', function (e) {\n                if (e.key === 'Escape' && popup.classList.contains('is-open')) {\n                    closePopup(e);\n                }\n            });\n\n            form.addEventListener('submit', function (e) {\n                e.preventDefault();\n\n                const submitButton = form.querySelector('button[type=\"submit\"]');\n                const email = form.querySelector('input[name=\"EMAIL\"]').value.trim();\n                const fname = form.querySelector('input[name=\"FNAME\"]').value.trim();\n                const honeypot = form.querySelector('input[name=\"b_580e2abc155a5b4c077591c67_e598ede2d6\"]').value;\n\n                if (!email) return;\n\n                submitButton.disabled = true;\n                submitButton.textContent = 'Wird angemeldet ...';\n\n                if (message) {\n                    message.style.display = 'none';\n                    message.textContent = '';\n                }\n\n                const callbackName = 'mcCallback_' + Math.random().toString(36).substring(2);\n                const script = document.createElement('script');\n\n                const params = new URLSearchParams({\n                    u: '580e2abc155a5b4c077591c67',\n                    id: 'e598ede2d6',\n                    f_id: '0026fbe3f0',\n                    EMAIL: email,\n                    FNAME: fname,\n                    'b_580e2abc155a5b4c077591c67_e598ede2d6': honeypot,\n                    c: callbackName\n                });\n\n                window[callbackName] = function (response) {\n                    submitButton.disabled = false;\n                    submitButton.textContent = 'Anmelden';\n\n                    if (response && response.result === 'success') {\n                        form.reset();\n\n                        if (formWrap) formWrap.hidden = true;\n                        if (success) success.hidden = false;\n\n                        setTimeout(function () {\n                            closePopup();\n                        }, 2200);\n                    } else {\n                        if (message) {\n                            message.textContent = 'Die Anmeldung konnte nicht abgeschlossen werden. Bitte pr\u00fcfen Sie die E-Mail-Adresse.';\n                            message.style.display = 'block';\n                        }\n                    }\n\n                    delete window[callbackName];\n                    script.remove();\n                };\n\n                script.onerror = function () {\n                    submitButton.disabled = false;\n                    submitButton.textContent = 'Anmelden';\n\n                    if (message) {\n                        message.textContent = 'Die Anmeldung konnte nicht abgeschlossen werden. Bitte sp\u00e4ter erneut versuchen.';\n                        message.style.display = 'block';\n                    }\n\n                    delete window[callbackName];\n                    script.remove();\n                };\n\n                script.src = 'https:\/\/one.us2.list-manage.com\/subscribe\/post-json?' + params.toString();\n                document.body.appendChild(script);\n            });\n        });\n    <\/script>\n\n    \t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Precision manufacturing for highest demands When it getsheavy. Metallbearbeitung und Zerspanung f\u00fcr Bauteile, die schwer, anspruchsvoll und komplex sind \u2013 und trotzdem hochpr\u00e4zise. Projekt besprechen Komponente pr\u00fcfen When it gets heavy. When it gets critical. When it gets complex. When there is no Plan B. When dimensions get heavy. Gro\u00df denken.Pr\u00e4zise fertigen. CNC-Fr\u00e4sen und CNC-Drehen [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-10","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/pages\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":208,"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/pages\/10\/revisions"}],"predecessor-version":[{"id":6724,"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/pages\/10\/revisions\/6724"}],"wp:attachment":[{"href":"https:\/\/heldeco.at\/en\/wp-json\/wp\/v2\/media?parent=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}