src/ApplicationBundle/Modules/HoneybeeWeb/Resources/views/pages/service.html.twig line 1

Open in your IDE?
  1. {% include '@Application/inc/central_header.html.twig' %}
  2. <style>
  3. /* ── Design Tokens ─────────────────────────────────────────────────────────── */
  4. :root {
  5.     --n-cream:     #F7F5F0;
  6.     --n-cream-2:   #F0EDE5;
  7.     --n-white:     #FFFFFF;
  8.     --n-dark:      #1A1D2E;
  9.     --n-dark-2:    #252840;
  10.     --n-amber:     #C07D2A;
  11.     --n-amber-lt:  #D4954A;
  12.     --n-amber-dim: rgba(192,125,42,.10);
  13.     --n-sage:      #3D6B52;
  14.     --n-muted:     #6B6E7F;
  15.     --n-muted-2:   #9395A5;
  16.     --n-border:    rgba(26,29,46,.07);
  17.     --n-border-md: rgba(26,29,46,.12);
  18.     --n-shadow-sm: 0 2px 12px rgba(26,29,46,.07);
  19.     --n-shadow-md: 0 8px 32px rgba(26,29,46,.09);
  20.     --n-shadow-lg: 0 20px 64px rgba(26,29,46,.10);
  21.     --n-radius:    12px;
  22.     --n-radius-sm: 8px;
  23.     --n-font:      'DM Sans', 'Poppins', system-ui, sans-serif;
  24. }
  25. *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
  26. body { background: var(--n-cream); font-family: var(--n-font); color: var(--n-dark); text-align: left; }
  27. a { text-decoration: none; }
  28. /* ── Navbar ─────────────────────────────────────────────────────────────────── */
  29. .navbar {
  30.     background: rgba(247,245,240,.96) !important;
  31.     backdrop-filter: blur(16px) saturate(180%);
  32.     border-bottom: 1px solid var(--n-border) !important;
  33.     box-shadow: none !important;
  34. }
  35. .navbar .nav-link       { color: var(--n-dark) !important; font-size: 13.5px; font-weight: 500; opacity: .8; }
  36. .navbar .nav-link:hover { opacity: 1; color: var(--n-dark) !important; }
  37. .navbar .login-btn      { background: var(--n-dark) !important; color: #fff !important; border: none !important; border-radius: 8px !important; padding: 8px 20px !important; font-size: 13px !important; font-weight: 600 !important; }
  38. /* ── Utilities ──────────────────────────────────────────────────────────────── */
  39. .n-wrap    { max-width: 1160px; margin: 0 auto; padding: 0 28px; }
  40. .n-label   {
  41.     display: inline-flex; align-items: center; gap: 8px;
  42.     font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  43.     color: var(--n-amber); margin-bottom: 16px;
  44. }
  45. .n-label::before { content:''; width: 18px; height: 1.5px; background: currentColor; border-radius: 2px; }
  46. .n-h1 { font-family:'Montserrat',sans-serif; font-size: clamp(32px,4vw,54px); font-weight: 900; line-height: 1.06; letter-spacing: -.025em; color: var(--n-dark); }
  47. .n-h1 em { font-style: normal; color: var(--n-amber); }
  48. .n-h2 { font-family:'Montserrat',sans-serif; font-size: clamp(24px,2.8vw,38px); font-weight: 800; line-height: 1.12; letter-spacing: -.02em; }
  49. .n-h2 em { font-style: normal; color: var(--n-amber); }
  50. .n-body { font-size: 16px; line-height: 1.75; color: var(--n-muted); }
  51. .n-btn {
  52.     display: inline-flex; align-items: center; gap: 8px;
  53.     padding: 12px 24px; border-radius: var(--n-radius-sm);
  54.     font-size: 14px; font-weight: 600; border: 1.5px solid transparent;
  55.     cursor: pointer; text-decoration: none; transition: all .18s; font-family: var(--n-font);
  56. }
  57. .n-btn-primary { background: var(--n-dark); color: #fff; border-color: var(--n-dark); }
  58. .n-btn-primary:hover { background: var(--n-dark-2); color: #fff; transform: translateY(-1px); }
  59. .n-btn-outline { background: transparent; border-color: var(--n-border-md); color: var(--n-dark); }
  60. .n-btn-outline:hover { border-color: var(--n-dark); transform: translateY(-1px); }
  61. .n-btn-amber { background: var(--n-amber); color: #fff; border-color: var(--n-amber); }
  62. .n-btn-amber:hover { background: var(--n-amber-lt); color: #fff; transform: translateY(-1px); }
  63. /* ── Hero ────────────────────────────────────────────────────────────────────── */
  64. .n-svc-hero {
  65.     background: var(--n-cream);
  66.     padding: 116px 0 68px;
  67.     position: relative; overflow: hidden;
  68.     border-bottom: 1px solid var(--n-border);
  69. }
  70. .n-svc-hero::before {
  71.     content:''; position:absolute; top:0; right:0; width:55%; height:100%;
  72.     background: radial-gradient(ellipse 75% 70% at 80% 50%, rgba(192,125,42,.06) 0%, transparent 65%);
  73.     pointer-events: none;
  74. }
  75. .n-svc-nav {
  76.     display: flex; gap: 8px; flex-wrap: wrap; margin-top: 38px;
  77. }
  78. .n-svc-nav a {
  79.     display: inline-flex; align-items: center; gap: 6px;
  80.     padding: 6px 14px; border-radius: 100px;
  81.     font-size: 11.5px; font-weight: 600; font-family: monospace; letter-spacing: .04em;
  82.     background: var(--n-white); border: 1px solid var(--n-border-md); color: var(--n-muted);
  83.     text-decoration: none; transition: all .15s;
  84. }
  85. .n-svc-nav a:hover { border-color: var(--n-amber); color: var(--n-amber); }
  86. .n-svc-nav a span { font-size: 10px; color: var(--n-amber); }
  87. /* ── Stats bar ───────────────────────────────────────────────────────────────── */
  88. .n-stats-bar {
  89.     background: var(--n-dark); padding: 22px 0;
  90. }
  91. .n-stats-inner {
  92.     display: grid; grid-template-columns: repeat(4, 1fr);
  93.     gap: 0; max-width: 1160px; margin: 0 auto; padding: 0 28px;
  94. }
  95. .n-stat-item { text-align: center; padding: 0 12px; border-right: 1px solid rgba(255,255,255,.08); }
  96. .n-stat-item:last-child { border-right: none; }
  97. .n-stat-num  { font-family:'Montserrat',sans-serif; font-size: clamp(22px,2vw,30px); font-weight: 900; color: var(--n-amber); line-height: 1.1; }
  98. .n-stat-lbl  { font-size: 11.5px; color: rgba(255,255,255,.5); margin-top: 3px; letter-spacing: .04em; }
  99. /* ── Service deep sections ───────────────────────────────────────────────────── */
  100. .n-svc-section { padding: 88px 0; border-top: 1px solid var(--n-border); }
  101. .n-svc-section.n-bg-white  { background: var(--n-white); }
  102. .n-svc-section.n-bg-cream2 { background: var(--n-cream-2); }
  103. .n-svc-row {
  104.     display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center;
  105. }
  106. .n-svc-row.n-reverse { direction: rtl; }
  107. .n-svc-row.n-reverse > * { direction: ltr; }
  108. .n-svc-num {
  109.     font-family: monospace; font-size: 11px; font-weight: 700;
  110.     color: var(--n-amber); letter-spacing: .12em; text-transform: uppercase;
  111.     margin-bottom: 14px; display: block;
  112. }
  113. .n-svc-section h2 { color: var(--n-dark); margin-bottom: 18px; }
  114. .n-svc-section p  { font-size: 15px; color: var(--n-muted); line-height: 1.7; margin-bottom: 16px; }
  115. .n-feat-list {
  116.     list-style: none; margin-top: 22px;
  117.     display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px;
  118. }
  119. .n-feat-list li {
  120.     font-size: 13.5px; color: var(--n-dark);
  121.     display: flex; align-items: flex-start; gap: 8px;
  122. }
  123. .n-feat-list li::before {
  124.     content: '→'; color: var(--n-amber); font-family: monospace;
  125.     font-size: 12px; flex-shrink: 0; margin-top: 2px;
  126. }
  127. .n-price-badge {
  128.     display: inline-flex; align-items: center; gap: 8px;
  129.     background: rgba(192,125,42,.12); border: 1px solid rgba(192,125,42,.25);
  130.     border-radius: 8px; padding: 8px 16px; margin-top: 24px;
  131.     font-size: 13px; color: var(--n-amber); font-weight: 700;
  132. }
  133. .n-price-badge strong { font-family:'Montserrat',sans-serif; font-size: 18px; }
  134. /* ── Mock frame ──────────────────────────────────────────────────────────────── */
  135. .n-mock {
  136.     background: var(--n-white); border: 1px solid var(--n-border-md);
  137.     border-radius: var(--n-radius); padding: 18px; box-shadow: var(--n-shadow-lg);
  138. }
  139. .n-mock-label {
  140.     font-family: monospace; font-size: 10px; color: var(--n-muted-2);
  141.     letter-spacing: .08em; text-transform: uppercase;
  142.     padding-bottom: 10px; border-bottom: 1px solid var(--n-border);
  143.     margin-bottom: 14px; display: flex; justify-content: space-between; align-items: center;
  144. }
  145. .n-mock-dots { display: flex; gap: 4px; }
  146. .n-mock-dots span { width: 7px; height: 7px; border-radius: 50%; background: var(--n-border-md); }
  147. /* ── Timeline mock (ERP Rollout) ─────────────────────────────────────────────── */
  148. .n-timeline { display: flex; flex-direction: column; gap: 0; }
  149. .n-phase {
  150.     display: flex; align-items: flex-start; gap: 12px;
  151.     padding: 10px 0; position: relative;
  152. }
  153. .n-phase:not(:last-child)::after {
  154.     content:''; position:absolute; left: 11px; top: 28px; bottom: -10px;
  155.     width: 1.5px; background: var(--n-border-md);
  156. }
  157. .n-phase-dot {
  158.     width: 23px; height: 23px; border-radius: 50%; flex-shrink: 0;
  159.     border: 2px solid var(--n-border-md); background: var(--n-cream);
  160.     display: flex; align-items: center; justify-content: center; margin-top: 1px;
  161. }
  162. .n-phase.done .n-phase-dot  { background: var(--n-sage); border-color: var(--n-sage); }
  163. .n-phase.active .n-phase-dot { background: var(--n-amber); border-color: var(--n-amber); animation: pulse-ring 2s infinite; }
  164. .n-phase-dot svg { width: 11px; height: 11px; }
  165. @keyframes pulse-ring {
  166.     0%   { box-shadow: 0 0 0 0 rgba(192,125,42,.35); }
  167.     70%  { box-shadow: 0 0 0 8px rgba(192,125,42,0); }
  168.     100% { box-shadow: 0 0 0 0 rgba(192,125,42,0); }
  169. }
  170. .n-phase-body { flex: 1; }
  171. .n-phase-title {
  172.     font-size: 12.5px; font-weight: 700; color: var(--n-dark);
  173.     display: flex; justify-content: space-between; align-items: center;
  174. }
  175. .n-phase-week {
  176.     font-family: monospace; font-size: 10px; color: var(--n-muted-2);
  177.     background: var(--n-cream); border: 0.5px solid var(--n-border-md);
  178.     padding: 2px 7px; border-radius: 3px;
  179. }
  180. .n-phase-desc { font-size: 11px; color: var(--n-muted); margin-top: 3px; line-height: 1.4; }
  181. .n-phase-bar  { height: 4px; background: var(--n-cream-2); border-radius: 2px; margin-top: 6px; overflow: hidden; }
  182. .n-phase-bar-fill { height: 100%; border-radius: 2px; background: var(--n-amber); }
  183. .n-phase.done .n-phase-bar-fill  { background: var(--n-sage); }
  184. .n-phase.active .n-phase-bar-fill { background: var(--n-amber); }
  185. .n-phase.todo .n-phase-bar-fill  { width: 0%; }
  186. .n-rollout-summary {
  187.     margin-top: 14px; padding: 10px 14px;
  188.     background: var(--n-cream); border: 0.5px solid var(--n-border-md); border-radius: 6px;
  189.     display: flex; gap: 20px; align-items: center;
  190. }
  191. .n-rollup-item { text-align: center; }
  192. .n-rollup-item .lbl { font-family: monospace; font-size: 9px; color: var(--n-muted-2); text-transform: uppercase; letter-spacing: .08em; }
  193. .n-rollup-item .val { font-family:'Montserrat',sans-serif; font-size: 16px; font-weight: 900; color: var(--n-dark); margin-top: 2px; }
  194. .n-rollup-item .val.green { color: var(--n-sage); }
  195. .n-rollup-divider { width: 1px; height: 32px; background: var(--n-border-md); }
  196. /* ── EMS Dashboard mock ──────────────────────────────────────────────────────── */
  197. .n-ems-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-bottom: 10px; }
  198. .n-ems-metric {
  199.     padding: 10px 10px; background: var(--n-cream); border: 0.5px solid var(--n-border); border-radius: 6px;
  200. }
  201. .n-ems-metric-lbl { font-family: monospace; font-size: 9px; color: var(--n-muted-2); text-transform: uppercase; letter-spacing: .08em; }
  202. .n-ems-metric-val { font-family:'Montserrat',sans-serif; font-size: 18px; font-weight: 800; margin-top: 4px; color: var(--n-dark); }
  203. .n-ems-metric-val span { font-size: 10px; font-weight: 400; color: var(--n-muted-2); font-family: var(--n-font); }
  204. .n-ems-devices { background: var(--n-cream); border: 0.5px solid var(--n-border); border-radius: 6px; padding: 10px; margin-bottom: 8px; }
  205. .n-ems-dev-head { font-family: monospace; font-size: 9px; color: var(--n-muted-2); text-transform: uppercase; letter-spacing: .08em; padding-bottom: 7px; border-bottom: 0.5px solid var(--n-border); margin-bottom: 7px; }
  206. .n-ems-dev-row { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 11.5px; }
  207. .n-ems-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
  208. .n-ems-dot.on { background: #4CAF50; }
  209. .n-ems-dot.off { background: #E57373; }
  210. .n-ems-dev-name { flex: 1; color: var(--n-dark); font-weight: 500; }
  211. .n-ems-dev-kw { font-family: monospace; font-size: 10px; color: var(--n-muted); }
  212. .n-ems-bar-row { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
  213. .n-ems-bar-lbl { width: 62px; font-size: 10px; font-family: monospace; color: var(--n-muted); white-space: nowrap; }
  214. .n-ems-bar-track { flex: 1; height: 6px; background: var(--n-cream-2); border-radius: 3px; overflow: hidden; }
  215. .n-ems-bar-fill { height: 100%; border-radius: 3px; background: linear-gradient(90deg, var(--n-sage), #6db48a); }
  216. .n-ems-bar-val { font-family: monospace; font-size: 10px; color: var(--n-muted-2); width: 34px; text-align: right; }
  217. /* ── IoT Network mock ────────────────────────────────────────────────────────── */
  218. .n-iot-hub { text-align: center; margin-bottom: 10px; }
  219. .n-iot-hub-node {
  220.     display: inline-flex; flex-direction: column; align-items: center; gap: 4px;
  221.     background: var(--n-dark); padding: 12px 20px; border-radius: 8px;
  222. }
  223. .n-iot-hub-node .hub-icon { font-size: 18px; }
  224. .n-iot-hub-node .hub-label { font-family: monospace; font-size: 9px; color: var(--n-amber); text-transform: uppercase; letter-spacing: .08em; }
  225. .n-iot-hub-node .hub-status { font-family: monospace; font-size: 9px; color: rgba(255,255,255,.5); }
  226. .n-iot-connector { display: flex; justify-content: center; gap: 0; margin: -2px 0; }
  227. .n-iot-connector-line { width: 1.5px; height: 16px; background: var(--n-border-md); margin: 0 auto; }
  228. .n-iot-nodes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
  229. .n-iot-node {
  230.     background: var(--n-cream); border: 0.5px solid var(--n-border-md); border-radius: 6px;
  231.     padding: 9px 8px; text-align: center;
  232. }
  233. .n-iot-node .icon { font-size: 16px; }
  234. .n-iot-node .type { font-family: monospace; font-size: 9px; color: var(--n-muted-2); text-transform: uppercase; letter-spacing: .06em; margin-top: 3px; }
  235. .n-iot-node .name { font-size: 11px; color: var(--n-dark); font-weight: 600; margin-top: 2px; }
  236. .n-iot-node-status {
  237.     display: flex; align-items: center; justify-content: center; gap: 4px;
  238.     margin-top: 5px; font-family: monospace; font-size: 9px;
  239. }
  240. .n-iot-node-status span { width: 5px; height: 5px; border-radius: 50%; }
  241. .n-iot-node-status span.online { background: #4CAF50; }
  242. .n-iot-node-status span.warn   { background: var(--n-amber); }
  243. .n-iot-proto {
  244.     margin-top: 10px; display: flex; gap: 6px; flex-wrap: wrap;
  245. }
  246. .n-iot-proto-chip {
  247.     padding: 3px 9px; border-radius: 3px; font-family: monospace; font-size: 9.5px; font-weight: 700; letter-spacing: .04em;
  248. }
  249. .n-proto-mqtt   { background: rgba(61,107,82,.1); color: var(--n-sage); }
  250. .n-proto-modbus { background: var(--n-amber-dim); color: var(--n-amber); }
  251. .n-proto-opc    { background: rgba(61,79,114,.1); color: #3D4F72; }
  252. .n-proto-rest   { background: rgba(26,29,46,.07); color: var(--n-muted); }
  253. /* ── GPU Server mock (dark) ───────────────────────────────────────────────────── */
  254. .n-gpu-mock {
  255.     background: #0D0F1A; border: 1px solid rgba(255,255,255,.08);
  256.     border-radius: var(--n-radius); padding: 18px; box-shadow: 0 20px 60px rgba(0,0,0,.4);
  257.     color: #e0e0e0;
  258. }
  259. .n-gpu-header {
  260.     display: flex; justify-content: space-between; align-items: center;
  261.     padding-bottom: 10px; border-bottom: 1px solid rgba(255,255,255,.07); margin-bottom: 14px;
  262. }
  263. .n-gpu-title { font-family: monospace; font-size: 10px; color: rgba(255,255,255,.4); letter-spacing: .08em; text-transform: uppercase; }
  264. .n-gpu-live  {
  265.     display: flex; align-items: center; gap: 5px;
  266.     font-family: monospace; font-size: 9.5px; color: #4CAF50;
  267. }
  268. .n-gpu-live::before { content:''; width: 6px; height: 6px; border-radius: 50%; background: #4CAF50; animation: blink 1.4s infinite; }
  269. @keyframes blink { 0%,100%{opacity:1;} 50%{opacity:.3;} }
  270. .n-gpu-model-row {
  271.     padding: 10px 12px; background: rgba(255,255,255,.04); border: 0.5px solid rgba(255,255,255,.07);
  272.     border-radius: 6px; margin-bottom: 8px;
  273.     display: flex; align-items: center; gap: 10px;
  274. }
  275. .n-gpu-model-icon { font-size: 16px; }
  276. .n-gpu-model-name { font-size: 12px; font-weight: 700; color: #e0e0e0; }
  277. .n-gpu-model-sub  { font-family: monospace; font-size: 9px; color: rgba(255,255,255,.35); margin-top: 2px; }
  278. .n-gpu-chip       { font-family: monospace; font-size: 9px; padding: 2px 8px; border-radius: 3px; font-weight: 700; margin-left: auto; }
  279. .n-gpu-chip.rtx   { background: rgba(118,185,0,.15); border: 1px solid rgba(118,185,0,.3); color: #76b900; }
  280. .n-gpu-chip.thor  { background: rgba(0,115,207,.15); border: 1px solid rgba(0,115,207,.3); color: #60a8e8; }
  281. .n-gpu-metrics { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; margin-bottom: 8px; }
  282. .n-gpu-metric { background: rgba(255,255,255,.04); border: 0.5px solid rgba(255,255,255,.07); border-radius: 6px; padding: 9px 10px; }
  283. .n-gpu-metric-lbl { font-family: monospace; font-size: 9px; color: rgba(255,255,255,.35); text-transform: uppercase; letter-spacing: .08em; }
  284. .n-gpu-metric-val { font-family:'Montserrat',sans-serif; font-size: 16px; font-weight: 900; margin-top: 4px; color: #e0e0e0; }
  285. .n-gpu-metric-val.ok  { color: #76b900; }
  286. .n-gpu-metric-val.hot { color: #FF9800; }
  287. .n-gpu-mem-bar { background: rgba(255,255,255,.05); border-radius: 4px; height: 6px; margin-top: 4px; overflow: hidden; }
  288. .n-gpu-mem-fill { height: 100%; background: linear-gradient(90deg, #76b900, #a0d84c); border-radius: 4px; width: 68%; }
  289. .n-gpu-prompt {
  290.     background: rgba(255,255,255,.04); border: 0.5px solid rgba(255,255,255,.07);
  291.     border-radius: 6px; padding: 10px 12px;
  292. }
  293. .n-gpu-prompt-label { font-family: monospace; font-size: 9px; color: rgba(255,255,255,.3); text-transform: uppercase; letter-spacing: .08em; margin-bottom: 5px; }
  294. .n-gpu-prompt-text  { font-family: monospace; font-size: 11px; color: rgba(255,255,255,.65); line-height: 1.5; }
  295. .n-gpu-cursor       { display: inline-block; width: 7px; height: 13px; background: var(--n-amber); border-radius: 1px; animation: blink 1.1s infinite; vertical-align: bottom; margin-left: 2px; }
  296. /* ── Native LLM service section (dark) ──────────────────────────────────────── */
  297. .n-svc-dark {
  298.     padding: 88px 0; background: var(--n-dark);
  299.     border-top: 1px solid rgba(255,255,255,.06);
  300. }
  301. .n-svc-dark .n-label     { color: var(--n-amber); }
  302. .n-svc-dark h2           { color: #fff; }
  303. .n-svc-dark p            { color: rgba(255,255,255,.6); }
  304. .n-svc-dark .n-feat-list li { color: rgba(255,255,255,.85); }
  305. .n-svc-dark .n-feat-list li::before { color: var(--n-amber); }
  306. /* ── Delivery process ────────────────────────────────────────────────────────── */
  307. .n-process { padding: 80px 0; background: var(--n-white); border-top: 1px solid var(--n-border); }
  308. .n-process-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-top: 48px; }
  309. .n-process-step { position: relative; }
  310. .n-process-step:not(:last-child)::after {
  311.     content: ''; position: absolute; top: 26px; left: calc(50% + 28px);
  312.     width: calc(100% - 56px); height: 1.5px;
  313.     background: linear-gradient(90deg, var(--n-amber), transparent);
  314. }
  315. .n-step-num {
  316.     width: 52px; height: 52px; border-radius: 50%;
  317.     background: var(--n-amber-dim); border: 1.5px solid rgba(192,125,42,.2);
  318.     display: flex; align-items: center; justify-content: center;
  319.     font-family:'Montserrat',sans-serif; font-size: 16px; font-weight: 900; color: var(--n-amber);
  320.     margin: 0 auto 18px;
  321. }
  322. .n-process-step h4 { font-family:'Montserrat',sans-serif; font-size: 15px; font-weight: 700; color: var(--n-dark); text-align: center; margin-bottom: 8px; }
  323. .n-process-step p  { font-size: 13px; color: var(--n-muted); text-align: center; line-height: 1.6; }
  324. /* ── CTA section ─────────────────────────────────────────────────────────────── */
  325. .n-cta-section { background: var(--n-dark); padding: 80px 0; text-align: center; }
  326. .n-cta-section h2 { color: #fff; margin-bottom: 16px; }
  327. .n-cta-section p  { color: rgba(255,255,255,.6); font-size: 15px; max-width: 520px; margin: 0 auto 36px; line-height: 1.7; }
  328. /* ── Scroll reveal ───────────────────────────────────────────────────────────── */
  329. .reveal { opacity: 0; transform: translateY(28px); transition: opacity .55s ease, transform .55s ease; }
  330. .reveal.visible { opacity: 1; transform: none; }
  331. /* ── Responsive ──────────────────────────────────────────────────────────────── */
  332. @media (max-width: 820px) {
  333.     .n-svc-row, .n-svc-row.n-reverse { grid-template-columns: 1fr; direction: ltr; gap: 36px; }
  334.     .n-stats-inner  { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  335.     .n-process-grid { grid-template-columns: 1fr 1fr; }
  336.     .n-process-step::after { display: none; }
  337.     .n-feat-list { grid-template-columns: 1fr; }
  338. }
  339. </style>
  340. <!-- ── HERO ─────────────────────────────────────────────────────────────────── -->
  341. <section class="n-svc-hero">
  342.     <div class="n-wrap">
  343.         <span class="n-label trn" data-trn-key="_SVC_LABEL_">Professional Services</span>
  344.         <h1 class="n-h1"><span class="trn" data-trn-key="_SVC_H1_">Implementation, deployment, and integration services.</span></h1>
  345.         <p class="n-body trn" style="max-width:540px; margin-top:18px;" data-trn-key="_SVC_DESC_">
  346.             HoneyBee professional services cover ERP configuration, data migration, IoT integration, Edge+ deployment, private cloud setup, and custom development.
  347.         </p>
  348.         <nav class="n-svc-nav">
  349.             <a href="#erp-rollout"><span>01</span> ERP Rollout</a>
  350.             <a href="#honeycore-edge"><span>02</span> HoneyCore Edge &amp; EMS</a>
  351.             <a href="#hardware-iot"><span>03</span> Hardware &amp; IoT</a>
  352.             <a href="#native-llm"><span>04</span> Native LLM Server</a>
  353.         </nav>
  354.     </div>
  355. </section>
  356. <!-- ── STATS ─────────────────────────────────────────────────────────────────── -->
  357. <div class="n-stats-bar">
  358.     <div class="n-stats-inner">
  359.         <div class="n-stat-item">
  360.             <div class="n-stat-num">50+</div>
  361.             <div class="n-stat-lbl trn" data-trn-key="_SVC_STAT1_LBL_">Deployments Completed</div>
  362.         </div>
  363.         <div class="n-stat-item">
  364.             <div class="n-stat-num">12</div>
  365.             <div class="n-stat-lbl trn" data-trn-key="_SVC_STAT2_LBL_">Countries Served</div>
  366.         </div>
  367.         <div class="n-stat-item">
  368.             <div class="n-stat-num">98%</div>
  369.             <div class="n-stat-lbl trn" data-trn-key="_SVC_STAT3_LBL_">On-Time Delivery</div>
  370.         </div>
  371.         <div class="n-stat-item">
  372.             <div class="n-stat-num">8 Weeks</div>
  373.             <div class="n-stat-lbl trn" data-trn-key="_SVC_STAT4_LBL_">Average ERP Go-Live</div>
  374.         </div>
  375.     </div>
  376. </div>
  377. <!-- ── SECTION 1: ERP ROLLOUT ────────────────────────────────────────────────── -->
  378. <section id="erp-rollout" class="n-svc-section">
  379.     <div class="n-wrap">
  380.         <div class="n-svc-row reveal">
  381.             <!-- Copy -->
  382.             <div>
  383.                 <span class="n-svc-num trn" data-trn-key="_SVC_ERP_NUM_">01 — ERP Rollout</span>
  384.                 <h2 class="n-h2"><span class="trn" data-trn-key="_SVC_ERP_H2_">Implementation Services</span></h2>
  385.                 <p class="n-body" style="margin-top:16px;">
  386.                     Full ERP rollout including configuration, workflow setup, user onboarding, and go-live support.
  387.                 </p>
  388.                 <ul class="n-feat-list">
  389.                     <li>Needs analysis &amp; gap assessment</li>
  390.                     <li>Data migration &amp; cleansing</li>
  391.                     <li>Module configuration &amp; customisation</li>
  392.                     <li>Role-based team training sessions</li>
  393.                     <li>30-day hypercare &amp; bug buffer</li>
  394.                     <li>Success KPI tracking dashboard</li>
  395.                 </ul>
  396.                 <a href="{{ url('honeybee_contact') }}" class="n-btn n-btn-primary trn" style="margin-top:28px;" data-trn-key="_SVC_ERP_BTN_">Book Demo</a>
  397.             </div>
  398.             <!-- Mock: ERP rollout timeline -->
  399.             <div>
  400.                 <div class="n-mock">
  401.                     <div class="n-mock-label">
  402.                         <span>HoneybeeERP — Rollout Plan</span>
  403.                         <div class="n-mock-dots"><span></span><span style="background:var(--n-amber);opacity:.5;"></span><span></span></div>
  404.                     </div>
  405.                     <div class="n-timeline">
  406.                         <div class="n-phase done">
  407.                             <div class="n-phase-dot">
  408.                                 <svg viewBox="0 0 12 12" fill="none"><polyline points="2,6 5,9 10,3" stroke="#fff" stroke-width="2" stroke-linecap="round"/></svg>
  409.                             </div>
  410.                             <div class="n-phase-body">
  411.                                 <div class="n-phase-title">Discovery &amp; Gap Analysis <span class="n-phase-week">Week 1–2</span></div>
  412.                                 <div class="n-phase-desc">Stakeholder interviews, process mapping, data audit</div>
  413.                                 <div class="n-phase-bar"><div class="n-phase-bar-fill" style="width:100%;"></div></div>
  414.                             </div>
  415.                         </div>
  416.                         <div class="n-phase done">
  417.                             <div class="n-phase-dot">
  418.                                 <svg viewBox="0 0 12 12" fill="none"><polyline points="2,6 5,9 10,3" stroke="#fff" stroke-width="2" stroke-linecap="round"/></svg>
  419.                             </div>
  420.                             <div class="n-phase-body">
  421.                                 <div class="n-phase-title">Data Migration &amp; Setup <span class="n-phase-week">Week 3–4</span></div>
  422.                                 <div class="n-phase-desc">Legacy data cleansed, imported &amp; verified in staging</div>
  423.                                 <div class="n-phase-bar"><div class="n-phase-bar-fill" style="width:100%;"></div></div>
  424.                             </div>
  425.                         </div>
  426.                         <div class="n-phase active">
  427.                             <div class="n-phase-dot"></div>
  428.                             <div class="n-phase-body">
  429.                                 <div class="n-phase-title">Role-Based Training <span class="n-phase-week">Week 5–6</span></div>
  430.                                 <div class="n-phase-desc">Sales, Finance, HR, Operations — concurrent sessions</div>
  431.                                 <div class="n-phase-bar"><div class="n-phase-bar-fill" style="width:62%;"></div></div>
  432.                             </div>
  433.                         </div>
  434.                         <div class="n-phase todo">
  435.                             <div class="n-phase-dot"></div>
  436.                             <div class="n-phase-body">
  437.                                 <div class="n-phase-title">Go-Live &amp; Hypercare <span class="n-phase-week">Week 7–8</span></div>
  438.                                 <div class="n-phase-desc">Production cutover + 30-day dedicated support buffer</div>
  439.                                 <div class="n-phase-bar"><div class="n-phase-bar-fill" style="width:0%;"></div></div>
  440.                             </div>
  441.                         </div>
  442.                     </div>
  443.                     <div class="n-rollout-summary">
  444.                         <div class="n-rollup-item">
  445.                             <div class="lbl">Status</div>
  446.                             <div class="val" style="font-size:13px;font-family:monospace;color:var(--n-amber);">In Progress</div>
  447.                         </div>
  448.                         <div class="n-rollup-divider"></div>
  449.                         <div class="n-rollup-item">
  450.                             <div class="lbl">Completion</div>
  451.                             <div class="val">62%</div>
  452.                         </div>
  453.                         <div class="n-rollup-divider"></div>
  454.                         <div class="n-rollup-item">
  455.                             <div class="lbl">Modules Live</div>
  456.                             <div class="val green">4 / 6</div>
  457.                         </div>
  458.                         <div class="n-rollup-divider"></div>
  459.                         <div class="n-rollup-item">
  460.                             <div class="lbl">Go-Live</div>
  461.                             <div class="val" style="font-size:13px;font-family:monospace;">8 days</div>
  462.                         </div>
  463.                     </div>
  464.                 </div>
  465.             </div>
  466.         </div>
  467.     </div>
  468. </section>
  469. <!-- ── SECTION 2: HONEYCORE EDGE & EMS ──────────────────────────────────────── -->
  470. <section id="honeycore-edge" class="n-svc-section n-bg-white">
  471.     <div class="n-wrap">
  472.         <div class="n-svc-row n-reverse reveal">
  473.             <!-- Copy -->
  474.             <div>
  475.                 <span class="n-svc-num trn" data-trn-key="_SVC_EMS_NUM_">02 — HoneyCore Edge &amp; EMS</span>
  476.                 <h2 class="n-h2"><span class="trn" data-trn-key="_SVC_EMS_H2_">HoneyBee Edge+ Deployment</span></h2>
  477.                 <p class="n-body" style="margin-top:16px;">
  478.                     Deploy and configure HoneyBee Edge+ devices at site level for local data capture, monitoring, and ERP integration.
  479.                 </p>
  480.                 <ul class="n-feat-list">
  481.                     <li>Energy monitoring dashboards</li>
  482.                     <li>Automated threshold alerting</li>
  483.                     <li>Load scheduling &amp; optimisation</li>
  484.                     <li>Remote device management portal</li>
  485.                     <li>Compliance &amp; audit reporting</li>
  486.                     <li>Carbon footprint &amp; ESG tracking</li>
  487.                 </ul>
  488.                 <a href="{{ url('honeybee_contact') }}" class="n-btn n-btn-primary trn" style="margin-top:28px;" data-trn-key="_SVC_EMS_BTN_">Book Demo</a>
  489.             </div>
  490.             <!-- Mock: EMS Dashboard -->
  491.             <div>
  492.                 <div class="n-mock">
  493.                     <div class="n-mock-label">
  494.                         <span>HoneyCore EMS — Live Dashboard</span>
  495.                         <div class="n-mock-dots"><span></span><span></span><span></span></div>
  496.                     </div>
  497.                     <div class="n-ems-metrics">
  498.                         <div class="n-ems-metric">
  499.                             <div class="n-ems-metric-lbl">Power Draw</div>
  500.                             <div class="n-ems-metric-val">48.3 <span>kW</span></div>
  501.                         </div>
  502.                         <div class="n-ems-metric">
  503.                             <div class="n-ems-metric-lbl">Today Saved</div>
  504.                             <div class="n-ems-metric-val" style="color:var(--n-sage);">12.1 <span>kWh</span></div>
  505.                         </div>
  506.                         <div class="n-ems-metric">
  507.                             <div class="n-ems-metric-lbl">Temperature</div>
  508.                             <div class="n-ems-metric-val">22.4 <span>°C</span></div>
  509.                         </div>
  510.                     </div>
  511.                     <div style="margin-bottom:8px;">
  512.                         <div style="font-family:monospace;font-size:9px;color:var(--n-muted-2);text-transform:uppercase;letter-spacing:.08em;margin-bottom:7px;">Load by Zone</div>
  513.                         <div class="n-ems-bar-row"><span class="n-ems-bar-lbl">Production</span><div class="n-ems-bar-track"><div class="n-ems-bar-fill" style="width:78%;"></div></div><span class="n-ems-bar-val">78%</span></div>
  514.                         <div class="n-ems-bar-row"><span class="n-ems-bar-lbl">HVAC</span><div class="n-ems-bar-track"><div class="n-ems-bar-fill" style="width:54%;"></div></div><span class="n-ems-bar-val">54%</span></div>
  515.                         <div class="n-ems-bar-row"><span class="n-ems-bar-lbl">Lighting</span><div class="n-ems-bar-track"><div class="n-ems-bar-fill" style="width:32%;"></div></div><span class="n-ems-bar-val">32%</span></div>
  516.                         <div class="n-ems-bar-row"><span class="n-ems-bar-lbl">Cold Chain</span><div class="n-ems-bar-track"><div class="n-ems-bar-fill" style="width:90%;background:linear-gradient(90deg,var(--n-amber),#d4954a);"></div></div><span class="n-ems-bar-val" style="color:var(--n-amber);">90%</span></div>
  517.                     </div>
  518.                     <div class="n-ems-devices">
  519.                         <div class="n-ems-dev-head">Connected Devices (12 / 14)</div>
  520.                         <div class="n-ems-dev-row"><span class="n-ems-dot on"></span><span class="n-ems-dev-name">Smart Meter — Line A</span><span class="n-ems-dev-kw">18.4 kW</span></div>
  521.                         <div class="n-ems-dev-row"><span class="n-ems-dot on"></span><span class="n-ems-dev-name">Edge Gateway — Warehouse</span><span class="n-ems-dev-kw">3.2 kW</span></div>
  522.                         <div class="n-ems-dev-row"><span class="n-ems-dot off"></span><span class="n-ems-dev-name">Compressor Sensor — Bay 3</span><span class="n-ems-dev-kw" style="color:#E57373;">Offline</span></div>
  523.                     </div>
  524.                 </div>
  525.             </div>
  526.         </div>
  527.     </div>
  528. </section>
  529. <!-- ── SECTION 3: HARDWARE & IoT INTEGRATION ────────────────────────────────── -->
  530. <section id="hardware-iot" class="n-svc-section n-bg-cream2">
  531.     <div class="n-wrap">
  532.         <div class="n-svc-row reveal">
  533.             <!-- Copy -->
  534.             <div>
  535.                 <span class="n-svc-num trn" data-trn-key="_SVC_IOT_NUM_">03 — Hardware &amp; IoT Integration</span>
  536.                 <h2 class="n-h2"><span class="trn" data-trn-key="_SVC_IOT_H2_">Industrial IoT Integration</span></h2>
  537.                 <p class="n-body" style="margin-top:16px;">
  538.                     Integrate meters, sensors, PLCs, Raspberry Pi, energy systems, and third-party devices with HoneyBee.
  539.                 </p>
  540.                 <ul class="n-feat-list">
  541.                     <li>PLC &amp; SCADA connectivity</li>
  542.                     <li>Sensor deployment &amp; calibration</li>
  543.                     <li>MQTT / Modbus / OPC-UA setup</li>
  544.                     <li>Edge gateway configuration</li>
  545.                     <li>ERP data bridging &amp; mapping</li>
  546.                     <li>Remote diagnostic &amp; OTA access</li>
  547.                 </ul>
  548.                 <a href="{{ url('honeybee_contact') }}" class="n-btn n-btn-primary trn" style="margin-top:28px;" data-trn-key="_SVC_IOT_BTN_">Book Demo</a>
  549.             </div>
  550.             <!-- Mock: IoT network diagram -->
  551.             <div>
  552.                 <div class="n-mock">
  553.                     <div class="n-mock-label">
  554.                         <span>IoT Device Mesh — Production Floor</span>
  555.                         <div class="n-mock-dots"><span></span><span></span><span></span></div>
  556.                     </div>
  557.                     <div class="n-iot-hub">
  558.                         <div class="n-iot-hub-node">
  559.                             <div class="hub-icon">🖥</div>
  560.                             <div class="hub-label">Edge Gateway</div>
  561.                             <div class="hub-status">HoneyCore Node v2.1</div>
  562.                         </div>
  563.                     </div>
  564.                     <div style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:4px 0 2px;padding:0 8px;">
  565.                         <div style="text-align:center;"><div style="width:1.5px;height:14px;background:var(--n-border-md);margin:0 auto;"></div></div>
  566.                         <div style="text-align:center;"><div style="width:1.5px;height:14px;background:var(--n-border-md);margin:0 auto;"></div></div>
  567.                         <div style="text-align:center;"><div style="width:1.5px;height:14px;background:var(--n-border-md);margin:0 auto;"></div></div>
  568.                         <div style="text-align:center;"><div style="width:1.5px;height:14px;background:var(--n-border-md);margin:0 auto;"></div></div>
  569.                     </div>
  570.                     <div class="n-iot-nodes">
  571.                         <div class="n-iot-node">
  572.                             <div class="icon">⚙️</div>
  573.                             <div class="type">PLC</div>
  574.                             <div class="name">Siemens S7</div>
  575.                             <div class="n-iot-node-status"><span class="online"></span> Online</div>
  576.                         </div>
  577.                         <div class="n-iot-node">
  578.                             <div class="icon">🌡</div>
  579.                             <div class="type">Sensor</div>
  580.                             <div class="name">Temp Array</div>
  581.                             <div class="n-iot-node-status"><span class="online"></span> Online</div>
  582.                         </div>
  583.                         <div class="n-iot-node">
  584.                             <div class="icon">📷</div>
  585.                             <div class="type">Vision</div>
  586.                             <div class="name">QC Camera</div>
  587.                             <div class="n-iot-node-status"><span class="warn"></span> Warn</div>
  588.                         </div>
  589.                         <div class="n-iot-node">
  590.                             <div class="icon">🔌</div>
  591.                             <div class="type">Smart PDU</div>
  592.                             <div class="name">Rack Power</div>
  593.                             <div class="n-iot-node-status"><span class="online"></span> Online</div>
  594.                         </div>
  595.                     </div>
  596.                     <div class="n-iot-proto">
  597.                         <span class="n-iot-proto-chip n-proto-mqtt">MQTT</span>
  598.                         <span class="n-iot-proto-chip n-proto-modbus">Modbus RTU</span>
  599.                         <span class="n-iot-proto-chip n-proto-opc">OPC-UA</span>
  600.                         <span class="n-iot-proto-chip n-proto-rest">REST → ERP</span>
  601.                     </div>
  602.                 </div>
  603.             </div>
  604.         </div>
  605.     </div>
  606. </section>
  607. <!-- ── SECTION 4: NATIVE LLM SERVER DEPLOYMENT ──────────────────────────────── -->
  608. <section id="native-llm" class="n-svc-dark">
  609.     <div class="n-wrap">
  610.         <div class="n-svc-row n-reverse reveal" style="align-items:center;">
  611.             <!-- Copy -->
  612.             <div>
  613.                 <span class="n-label trn" data-trn-key="_SVC_LLM_LABEL_">04 — Native LLM Deployment</span>
  614.                 <h2 class="n-h2" style="color:#fff;"><span class="trn" data-trn-key="_SVC_LLM_H2_">ML / AI Deployment</span></h2>
  615.                 <p style="font-size:15px;color:rgba(255,255,255,.6);line-height:1.7;margin-top:16px;margin-bottom:0;">
  616.                     Deploy local ML models on dedicated hardware for offline or air-gapped industrial environments.
  617.                 </p>
  618.                 <ul class="n-feat-list" style="margin-top:22px;">
  619.                     <li>GPU server procurement &amp; configuration</li>
  620.                     <li>LLM model installation &amp; fine-tuning</li>
  621.                     <li>ERP data connector &amp; RAG setup</li>
  622.                     <li>Prompt engineering for your workflows</li>
  623.                     <li>Performance benchmarking &amp; tuning</li>
  624.                     <li>Staff enablement &amp; API access</li>
  625.                 </ul>
  626.                 <div class="n-price-badge" style="background:rgba(192,125,42,.15);border-color:rgba(192,125,42,.3);">
  627.                     <svg width="14" height="14" fill="none" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" stroke="#C07D2A" stroke-width="2"/><path d="M12 6v6l4 2" stroke="#C07D2A" stroke-width="2" stroke-linecap="round"/></svg>
  628.                     One-time deployment — from <strong>€10,000</strong> &nbsp;· Unlimited AI users
  629.                 </div>
  630.                 <div style="margin-top:24px;display:flex;gap:12px;flex-wrap:wrap;">
  631.                     <a href="{{ url('honeybee_contact') }}" class="n-btn n-btn-amber trn" data-trn-key="_SVC_LLM_BTN_">Book Demo</a>
  632.                     <a href="{{ url('honeybee_contact') }}" class="n-btn" style="border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.75);">Learn About Native AI →</a>
  633.                 </div>
  634.             </div>
  635.             <!-- Mock: GPU inference server (dark) -->
  636.             <div>
  637.                 <div class="n-gpu-mock">
  638.                     <div class="n-gpu-header">
  639.                         <span class="n-gpu-title">HoneybeeAI — Inference Server</span>
  640.                         <span class="n-gpu-live">LIVE</span>
  641.                     </div>
  642.                     <div class="n-gpu-model-row">
  643.                         <span class="n-gpu-model-icon">🧠</span>
  644.                         <div>
  645.                             <div class="n-gpu-model-name">Mistral-7B-Instruct-v0.3</div>
  646.                             <div class="n-gpu-model-sub">Loaded · Context: 8192 tokens</div>
  647.                         </div>
  648.                         <span class="n-gpu-chip rtx">RTX 3090</span>
  649.                     </div>
  650.                     <div class="n-gpu-metrics">
  651.                         <div class="n-gpu-metric">
  652.                             <div class="n-gpu-metric-lbl">VRAM Used</div>
  653.                             <div class="n-gpu-metric-val ok">16.3 GB</div>
  654.                             <div class="n-gpu-mem-bar"><div class="n-gpu-mem-fill"></div></div>
  655.                         </div>
  656.                         <div class="n-gpu-metric">
  657.                             <div class="n-gpu-metric-lbl">Throughput</div>
  658.                             <div class="n-gpu-metric-val">42 t/s</div>
  659.                         </div>
  660.                         <div class="n-gpu-metric">
  661.                             <div class="n-gpu-metric-lbl">GPU Temp</div>
  662.                             <div class="n-gpu-metric-val hot">71 °C</div>
  663.                         </div>
  664.                     </div>
  665.                     <div class="n-gpu-prompt">
  666.                         <div class="n-gpu-prompt-label">Active Request</div>
  667.                         <div class="n-gpu-prompt-text">
  668.                             "Generate the Q1 2026 sales performance report for the Singapore region, include trend analysis, top 5 SKUs by margin, and recommended actions based on current pipeline data..."<span class="n-gpu-cursor"></span>
  669.                         </div>
  670.                     </div>
  671.                     <div style="display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;">
  672.                         <span style="font-family:monospace;font-size:9px;padding:2px 8px;border-radius:3px;background:rgba(118,185,0,.12);border:1px solid rgba(118,185,0,.25);color:#76b900;">NVIDIA CUDA 12.4</span>
  673.                         <span style="font-family:monospace;font-size:9px;padding:2px 8px;border-radius:3px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);">llama.cpp backend</span>
  674.                         <span style="font-family:monospace;font-size:9px;padding:2px 8px;border-radius:3px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);">Private · Air-Gapped</span>
  675.                     </div>
  676.                 </div>
  677.                 <!-- Jetson Thor option -->
  678.                 <div style="margin-top:12px;background:rgba(0,115,207,.08);border:1px solid rgba(0,115,207,.2);border-radius:10px;padding:12px 16px;display:flex;align-items:center;gap:12px;">
  679.                     <span style="font-size:20px;">⚡</span>
  680.                     <div>
  681.                         <div style="font-size:12.5px;font-weight:700;color:#60a8e8;">Also Available: NVIDIA Jetson Thor</div>
  682.                         <div style="font-family:monospace;font-size:10px;color:rgba(255,255,255,.4);margin-top:3px;">Ultra-compact edge AI · 60 TOPS · Ideal for on-device inference &amp; robotics</div>
  683.                     </div>
  684.                     <span style="margin-left:auto;font-family:monospace;font-size:10px;padding:3px 9px;border-radius:3px;background:rgba(0,115,207,.15);border:1px solid rgba(0,115,207,.3);color:#60a8e8;">THOR</span>
  685.                 </div>
  686.             </div>
  687.         </div>
  688.     </div>
  689. </section>
  690. <!-- ── DELIVERY PROCESS ──────────────────────────────────────────────────────── -->
  691. <section class="n-process">
  692.     <div class="n-wrap">
  693.         <div class="n-center reveal">
  694.             <span class="n-label trn" style="justify-content:center;" data-trn-key="_SVC_PROCESS_LABEL_">How We Work</span>
  695.             <h2 class="n-h2"><span class="trn" data-trn-key="_SVC_PROCESS_H2_">Our Engagement</span> <em class="trn" data-trn-key="_SVC_PROCESS_H2_EM_">Process</em></h2>
  696.             <p class="n-body trn" style="max-width:500px;margin:12px auto 0;" data-trn-key="_SVC_PROCESS_DESC_">A structured four-phase approach that keeps every deployment on time, in budget, and fully adopted by your team.</p>
  697.         </div>
  698.         <div class="n-process-grid reveal">
  699.             <div class="n-process-step">
  700.                 <div class="n-step-num">1</div>
  701.                 <h4 class="trn" data-trn-key="_SVC_STEP1_">Scoping &amp; Discovery</h4>
  702.                 <p>We map your current processes, identify gaps, define success metrics, and produce a signed project scope — before any contract is signed.</p>
  703.             </div>
  704.             <div class="n-process-step">
  705.                 <div class="n-step-num">2</div>
  706.                 <h4 class="trn" data-trn-key="_SVC_STEP2_">Build &amp; Configure</h4>
  707.                 <p>Our engineers configure your environment, migrate data, set up hardware, and integrate all third-party connections in a staging environment.</p>
  708.             </div>
  709.             <div class="n-process-step">
  710.                 <div class="n-step-num">3</div>
  711.                 <h4 class="trn" data-trn-key="_SVC_STEP3_">Train &amp; Validate</h4>
  712.                 <p>Role-based training sessions with real company data. UAT sign-off from every department before we touch production.</p>
  713.             </div>
  714.             <div class="n-process-step">
  715.                 <div class="n-step-num">4</div>
  716.                 <h4 class="trn" data-trn-key="_SVC_STEP4_">Go-Live &amp; Support</h4>
  717.                 <p>Managed cutover to production with a dedicated hypercare team on-call for 30 days. Then ongoing SLA support as needed.</p>
  718.             </div>
  719.         </div>
  720.     </div>
  721. </section>
  722. <!-- ── COMMERCIAL NOTE ───────────────────────────────────────────────────────── -->
  723. <section style="padding:40px 0 0;background:var(--n-white);">
  724.     <div class="n-wrap">
  725.         <div style="background:rgba(192,125,42,.08);border:1px solid rgba(192,125,42,.2);border-radius:10px;padding:20px 24px;margin:32px 0">
  726.             <p style="margin:0;font-size:14px;color:var(--n-muted);line-height:1.7;">Hardware, servers, gateways, sensors, Edge+ devices, local ML infrastructure, and private deployment services are quoted separately based on project scope. These are not purchased through instant checkout. Payment is made by bank transfer against formal invoice.</p>
  727.         </div>
  728.     </div>
  729. </section>
  730. <!-- ── FINAL CTA ─────────────────────────────────────────────────────────────── -->
  731. <section class="n-cta-section reveal">
  732.     <div class="n-wrap">
  733.         <span class="n-label trn" style="justify-content:center;" data-trn-key="_SVC_CTA_LABEL_">Ready to Start?</span>
  734.         <h2 class="n-h2"><span class="trn" data-trn-key="_SVC_CTA_H2_">Let's Plan Your</span> <em class="trn" data-trn-key="_SVC_CTA_H2_EM_">Deployment</em></h2>
  735.         <p class="trn" data-trn-key="_SVC_CTA_DESC_">Tell us about your project and we'll come back with a detailed scoping proposal — no obligation, no sales pressure.</p>
  736.         <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;">
  737.             <a href="{{ url('honeybee_contact') }}" class="n-btn n-btn-amber trn" data-trn-key="_SVC_CTA_BTN_">Book Demo</a>
  738.             <a href="{{ url('honeybee_pricing') }}" class="n-btn" style="border-color:rgba(255,255,255,.2);color:rgba(255,255,255,.75);">View Pricing →</a>
  739.         </div>
  740.     </div>
  741. </section>
  742. {% include '@HoneybeeWeb/footer/central_footer.html.twig' %}
  743. <script>
  744. (function(){
  745.     const observer = new IntersectionObserver(function(entries){
  746.         entries.forEach(function(e){
  747.             if(e.isIntersecting){ e.target.classList.add('visible'); observer.unobserve(e.target); }
  748.         });
  749.     },{ threshold: 0.12 });
  750.     document.querySelectorAll('.reveal').forEach(function(el){ observer.observe(el); });
  751. })();
  752. </script>