{"id":3838,"date":"2025-06-09T16:00:33","date_gmt":"2025-06-09T16:00:33","guid":{"rendered":"https:\/\/ordervize.com\/legal-notice\/"},"modified":"2026-06-11T12:37:55","modified_gmt":"2026-06-11T12:37:55","slug":"legal-notice","status":"publish","type":"page","link":"https:\/\/ordervize.com\/en\/legal-notice\/","title":{"rendered":"Legal Notice"},"content":{"rendered":"\n<style>\n\/* ============================================================================\n   OrderVize site design system  (.ovz)\n   ----------------------------------------------------------------------------\n   Theming model \u2014 the site loads LIGHT by default (body.color-switch-light)\n   and the Kadence color toggle swaps it to body.color-switch-dark.\n   So: LIGHT tokens are the default on .ovz; DARK tokens are an explicit\n   override under `body.color-switch-dark .ovz`. Every component reads the\n   CSS variables, so both themes are correct by construction.\n\n   Integration: paste this whole file ONCE into\n   WP Admin \u2192 Appearance \u2192 Customize \u2192 Additional CSS.\n   Then every page block (which uses .ovz-* classes) themes automatically.\n   (Each page block can also inline this if you prefer fully standalone blocks.)\n   ============================================================================ *\/\n\n.ovz {\n  \/* brand *\/\n  --ovz-brand-1: #16094b;\n  --ovz-brand-2: #14246d;\n  --ovz-accent:  #0d6efd;\n  --ovz-accent-2:#00a8ff;\n  --ovz-gold:    #f4b740;\n  --ovz-gold-deep:#b9821a;\n\n  \/* LIGHT theme (default \u2014 site loads light) *\/\n  --ovz-page:\n    radial-gradient(circle at 12% 0%, rgba(0,168,255,0.14), transparent 38%),\n    radial-gradient(circle at 90% 8%, rgba(13,110,253,0.10), transparent 42%),\n    linear-gradient(135deg, #f7faff 0%, #eef4ff 55%, #ffffff 100%);\n  --ovz-hero:\n    radial-gradient(circle at 80% 20%, rgba(0,168,255,0.16), transparent 45%),\n    linear-gradient(135deg, #eaf1ff 0%, #f4f8ff 60%, #ffffff 100%);\n  --ovz-band:\n    radial-gradient(circle at 85% 15%, rgba(0,168,255,0.16), transparent 50%),\n    linear-gradient(135deg, #0d2a6b, #103e9e);            \/* dark feature band stays dark in both *\/\n  --ovz-heading: #0f172a;\n  --ovz-text:    #3b4763;\n  --ovz-muted:   #6b7790;\n  --ovz-surface: #ffffff;\n  --ovz-surface-2:#f3f7ff;\n  --ovz-border:  #dbe2f0;\n  --ovz-grid:    rgba(13,28,80,0.05);\n  --ovz-shadow:  0 18px 45px rgba(15,23,42,0.10);\n  --ovz-shadow-lg:0 34px 70px rgba(15,23,42,0.16);\n  --ovz-shot-chrome:#eef2fc;\n  --ovz-shot-bar:#e4ebfa;\n  --ovz-shot-url:#5a6a8c;\n  --ovz-on-accent:#ffffff;\n\n  \/* layout *\/\n  width: 100vw !important;\n  margin-left: calc(50% - 50vw) !important;\n  margin-right: calc(50% - 50vw) !important;\n  overflow-x: hidden !important;\n  font-family: Arial, Helvetica, sans-serif !important;\n  font-size: 16px;\n  line-height: 1.6;\n  background: var(--ovz-page) !important;\n  color: var(--ovz-text) !important;\n}\n\n\/* DARK theme overrides *\/\nbody.color-switch-dark .ovz,\nbody.kadence-light-mode .ovz.is-dark-preview \/* preview helper, harmless live *\/ {\n  --ovz-page:\n    radial-gradient(circle at 12% 0%, rgba(0,168,255,0.22), transparent 35%),\n    linear-gradient(135deg, #16094b 0%, #14246d 52%, #070b18 100%);\n  --ovz-hero:\n    radial-gradient(circle at 80% 18%, rgba(0,168,255,0.22), transparent 45%),\n    linear-gradient(135deg, #16094b 0%, #14246d 55%, #0a1230 100%);\n  --ovz-band:\n    radial-gradient(circle at 85% 15%, rgba(0,168,255,0.20), transparent 50%),\n    linear-gradient(135deg, #0b1330, #131a3f);\n  --ovz-heading: #ffffff;\n  --ovz-text:    #e7edff;\n  --ovz-muted:   #b3c1e4;\n  --ovz-surface: rgba(255,255,255,0.075);\n  --ovz-surface-2: rgba(255,255,255,0.05);\n  --ovz-border:  rgba(255,255,255,0.18);\n  --ovz-grid:    rgba(255,255,255,0.04);\n  --ovz-shadow:  0 24px 60px rgba(0,0,0,0.28);\n  --ovz-shadow-lg:0 40px 80px rgba(0,0,0,0.45);\n  --ovz-shot-chrome:#11162b;\n  --ovz-shot-bar:#171d36;\n  --ovz-shot-url:#aab6d6;\n}\n\n.ovz * { box-sizing: border-box; }\n.ovz h1,.ovz h2,.ovz h3,.ovz h4,.ovz p,.ovz li,.ovz a,.ovz span,.ovz div,.ovz summary,.ovz label,.ovz input,.ovz select,.ovz textarea,.ovz button {\n  font-family: Arial, Helvetica, sans-serif !important;\n}\n\n\/* ---------- layout helpers ---------- *\/\n.ovz-container { width: min(1180px, 92%) !important; margin: 0 auto !important; }\n.ovz-section { padding: 64px 0 !important; position: relative; }\n.ovz-section.tight { padding: 44px 0 !important; }\n\n\/* a section that is always dark (feature band \/ moat) regardless of theme *\/\n.ovz-darkband { background: var(--ovz-band) !important; --ovz-heading:#fff; --ovz-text:#e7edff; --ovz-muted:#b3c1e4; --ovz-surface:rgba(255,255,255,0.09); --ovz-border:rgba(255,255,255,0.2); }\n\/* a section that uses the soft surface tint *\/\n.ovz-tint { background: var(--ovz-surface-2) !important; }\n\n\/* ---------- titles ---------- *\/\n.ovz-title { max-width: 900px; margin: 0 0 42px 0 !important; }\n.ovz-title.center { text-align: center; margin-left:auto !important; margin-right:auto !important; }\n.ovz-eyebrow { display:block; color: var(--ovz-accent-2) !important; text-transform:uppercase; letter-spacing:1.5px; font-weight:900; font-size:14px; margin-bottom:12px; }\n.ovz-darkband .ovz-eyebrow { color:#7fd4ff !important; }\n.ovz-title h2 { color: var(--ovz-heading) !important; font-size: clamp(30px,3.4vw,48px); line-height:1.1 !important; font-weight:900; margin:0 0 16px 0 !important; }\n.ovz-title p { color: var(--ovz-text) !important; font-size:18px; line-height:1.72; margin:0 !important; }\n\n\/* ---------- buttons ---------- *\/\n.ovz-btns { display:flex; flex-wrap:wrap; gap:14px; align-items:center; }\n.ovz-btn {\n  display:inline-flex !important; align-items:center; justify-content:center;\n  min-height:52px; padding:15px 26px; border-radius:12px; text-decoration:none !important;\n  font-size:15px; font-weight:900; line-height:1.2; text-align:center; transition:.25s ease; cursor:pointer; border:0;\n}\n.ovz-btn-primary { background: linear-gradient(135deg, var(--ovz-accent), var(--ovz-accent-2)) !important; color:#fff !important; box-shadow:0 15px 35px rgba(0,168,255,0.28); }\n.ovz-btn-secondary { background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; color: var(--ovz-heading) !important; }\n.ovz-btn-gold { background: linear-gradient(135deg, var(--ovz-gold), var(--ovz-gold-deep)) !important; color:#2a1c00 !important; box-shadow:0 15px 35px rgba(244,183,64,0.25); }\n.ovz-btn:hover { transform: translateY(-3px); }\n\n\/* ---------- hero ---------- *\/\n.ovz-hero { background: var(--ovz-hero) !important; padding: 80px 0 66px !important; overflow:hidden; }\n.ovz-hero::before { content:\"\"; position:absolute; inset:0; pointer-events:none;\n  background-image: linear-gradient(var(--ovz-grid) 1px,transparent 1px), linear-gradient(90deg,var(--ovz-grid) 1px,transparent 1px);\n  background-size:92px 92px; }\n.ovz-hero-grid { position:relative; z-index:2; display:grid; grid-template-columns:1.05fr .95fr; gap:46px; align-items:center; }\n.ovz-badge { display:inline-flex !important; align-items:center; gap:8px; padding:9px 18px; border-radius:999px;\n  background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; color: var(--ovz-heading) !important;\n  font-size:14px; font-weight:800; margin:0 0 24px 0 !important; box-shadow: var(--ovz-shadow); }\n.ovz-hero h1 { color: var(--ovz-heading) !important; font-size: clamp(38px,5vw,62px); line-height:1.05 !important; letter-spacing:-1.4px;\n  font-weight:900; text-transform:uppercase; margin:0 0 22px 0 !important; }\n.ovz-hero h1 .hl { color: var(--ovz-accent-2) !important; }\n.ovz-hero p.lead { color: var(--ovz-text) !important; font-size:18.5px; line-height:1.62; max-width:600px; margin:0 0 26px 0 !important; }\n\n\/* trust strip *\/\n.ovz-trust { display:flex; flex-wrap:wrap; gap:10px 22px; margin-top:26px; }\n.ovz-trust span { display:inline-flex; align-items:center; gap:8px; color: var(--ovz-muted) !important; font-size:14px; font-weight:700; }\n.ovz-trust span::before { content:\"\"; width:7px; height:7px; border-radius:50%; background: var(--ovz-accent-2); flex:0 0 auto; }\n\n\/* ---------- screenshot frame ---------- *\/\n.ovz-shot { border-radius:16px; overflow:hidden; border:1px solid var(--ovz-border); box-shadow: var(--ovz-shadow-lg); background: var(--ovz-shot-chrome); }\n.ovz-shot-bar { display:flex; align-items:center; gap:8px; padding:11px 14px; background: var(--ovz-shot-bar); border-bottom:1px solid var(--ovz-border); }\n.ovz-dot { width:11px; height:11px; border-radius:50%; flex:0 0 auto; }\n.ovz-dot.r{background:#ff5f57;} .ovz-dot.y{background:#febc2e;} .ovz-dot.g{background:#28c840;}\n.ovz-shot-url { margin-left:10px; flex:1; background: rgba(127,127,127,0.14); color: var(--ovz-shot-url) !important; font-size:12px; font-weight:700; padding:6px 12px; border-radius:7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }\n.ovz-shot img { display:block; width:100%; height:auto; }\n.ovz-shot-cap { text-align:center; color: var(--ovz-muted) !important; font-size:12.5px; font-weight:700; margin:12px 0 0 0 !important; }\n\n\/* ---------- grids & cards ---------- *\/\n.ovz-grid { display:grid; gap:24px; }\n.ovz-grid-2 { grid-template-columns:repeat(2,1fr); }\n.ovz-grid-3 { grid-template-columns:repeat(3,1fr); }\n.ovz-grid-4 { grid-template-columns:repeat(4,1fr); }\n.ovz-card { background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; border-radius:20px; padding:30px; box-shadow: var(--ovz-shadow); }\n.ovz-card h3 { color: var(--ovz-heading) !important; font-size:23px; font-weight:900; line-height:1.2; margin:0 0 14px 0 !important; }\n.ovz-card p { color: var(--ovz-text) !important; font-size:16.5px; line-height:1.72; margin:0 !important; }\n\n.ovz-icon { width:52px; height:52px; border-radius:15px; background:linear-gradient(135deg,var(--ovz-accent),var(--ovz-accent-2)) !important;\n  display:flex; align-items:center; justify-content:center; margin-bottom:20px; }\n.ovz-icon svg { width:26px; height:26px; stroke:#fff; fill:none; stroke-width:2; }\n\n\/* bullet list *\/\n.ovz-list { list-style:none !important; padding:0 !important; margin:20px 0 0 0 !important; }\n.ovz-list li { position:relative; padding-left:28px; color: var(--ovz-text) !important; line-height:1.6; margin-bottom:10px; font-size:16px; }\n.ovz-list li::before { content:\"\"; position:absolute; left:0; top:.55em; width:8px; height:8px; border-radius:50%; background: var(--ovz-accent-2); }\n\n\/* ---------- audience lanes ---------- *\/\n.ovz-lanes { display:grid; grid-template-columns:repeat(2,1fr); gap:24px; }\n.ovz-lane { display:flex; flex-direction:column; border-radius:20px; padding:32px; background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; box-shadow: var(--ovz-shadow); }\n.ovz-lane.supplier { border-top:4px solid var(--ovz-accent-2) !important; }\n.ovz-lane.distributor { border-top:4px solid var(--ovz-gold) !important; }\n.ovz-tag { display:inline-block; width:fit-content; font-size:12.5px; font-weight:900; letter-spacing:1px; text-transform:uppercase; padding:6px 12px; border-radius:999px; margin-bottom:16px; }\n.ovz-lane.supplier .ovz-tag { background: rgba(0,168,255,0.16) !important; color:#0e7fc0 !important; }\n.ovz-lane.distributor .ovz-tag { background: rgba(244,183,64,0.20) !important; color: var(--ovz-gold-deep) !important; }\nbody.color-switch-dark .ovz-lane.supplier .ovz-tag { color:#8fd6ff !important; }\nbody.color-switch-dark .ovz-lane.distributor .ovz-tag { color: var(--ovz-gold) !important; }\n.ovz-lane h3 { color: var(--ovz-heading) !important; font-size:24px; font-weight:900; margin:0 0 12px 0 !important; }\n.ovz-lane p { color: var(--ovz-text) !important; font-size:16.5px; line-height:1.7; margin:0 0 18px 0 !important; }\n.ovz-lane .ovz-list { margin-top:0 !important; margin-bottom:22px !important; flex:1; }\n.ovz-lane.distributor .ovz-list li::before { background: var(--ovz-gold); }\n.ovz-lane .ovz-btn { width:100%; margin-top:auto; }\n\n\/* ---------- moat \/ split callout ---------- *\/\n.ovz-split { display:grid; grid-template-columns:78px 1fr; gap:26px; align-items:center; }\n.ovz-split-icon { width:78px; height:78px; border-radius:20px; background:rgba(0,168,255,0.14); border:1px solid rgba(0,168,255,0.4); display:flex; align-items:center; justify-content:center; }\n.ovz-split-icon svg { width:38px; height:38px; stroke: var(--ovz-accent-2); fill:none; stroke-width:2; }\n.ovz-split h2 { color: var(--ovz-heading) !important; font-size:clamp(26px,3vw,38px); font-weight:900; line-height:1.15; margin:0 0 12px 0 !important; }\n.ovz-split p { color: var(--ovz-text) !important; font-size:17.5px; line-height:1.7; margin:0 !important; max-width:820px; }\n\n\/* ---------- feature rows ---------- *\/\n.ovz-feature { display:grid; grid-template-columns:1fr 1.15fr; gap:46px; align-items:center; margin-bottom:56px; }\n.ovz-feature:last-child { margin-bottom:0; }\n.ovz-feature.reverse .ovz-feature-text { order:2; }\n.ovz-feature.reverse .ovz-feature-shot { order:1; }\n.ovz-feature-text h3 { color: var(--ovz-heading) !important; font-size:27px; font-weight:900; line-height:1.2; margin:16px 0 14px 0 !important; }\n.ovz-feature-text p { color: var(--ovz-text) !important; font-size:17px; line-height:1.7; margin:0 !important; }\n\n\/* ---------- steps ---------- *\/\n.ovz-step { background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; border-radius:20px; padding:28px; box-shadow: var(--ovz-shadow); }\n.ovz-step-n { width:44px; height:44px; border-radius:13px; background:linear-gradient(135deg,var(--ovz-accent),var(--ovz-accent-2)) !important; color:#fff !important; display:flex; align-items:center; justify-content:center; font-weight:900; font-size:18px; margin-bottom:18px; }\n.ovz-step h3 { color: var(--ovz-heading) !important; font-size:21px; font-weight:900; margin:0 0 12px 0 !important; }\n.ovz-step p { color: var(--ovz-text) !important; font-size:16px; line-height:1.7; margin:0 !important; }\n\n\/* note box *\/\n.ovz-note { margin-top:28px; background: rgba(0,168,255,0.10) !important; border:1px solid rgba(0,168,255,0.32) !important; border-radius:20px; padding:26px; }\n.ovz-note h3 { color: var(--ovz-heading) !important; font-size:22px; font-weight:900; margin:0 0 10px 0 !important; }\n.ovz-note p { color: var(--ovz-text) !important; font-size:16.5px; line-height:1.72; margin:0 !important; }\n\n\/* ---------- pricing ---------- *\/\n.ovz-pricing { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch !important; }\n.ovz-price { position:relative; display:flex !important; flex-direction:column !important; background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; border-radius:20px; padding:32px; box-shadow: var(--ovz-shadow); }\n.ovz-price.featured { border:2px solid var(--ovz-accent) !important; }\n.ovz-price-flag { position:absolute; top:-15px; right:24px; background: var(--ovz-brand-1) !important; color:#fff !important; padding:8px 14px; border-radius:999px; font-size:12px; font-weight:900; }\n.ovz-price-pkg { color: var(--ovz-accent) !important; font-size:13px; font-weight:900; letter-spacing:1px; text-transform:uppercase; margin-bottom:10px; min-height:34px; }\n.ovz-price h3 { color: var(--ovz-heading) !important; font-size:24px; font-weight:900; line-height:1.25; margin:0 0 12px 0 !important; min-height:60px; }\n.ovz-price-desc { color: var(--ovz-muted) !important; line-height:1.6; min-height:112px; margin:0 !important; font-size:15.5px; }\n.ovz-price-amt { color: var(--ovz-heading) !important; font-size:38px; line-height:1; font-weight:900; margin:20px 0 16px 0; display:flex; align-items:flex-end; gap:10px; }\n.ovz-price-amt span { color: var(--ovz-muted) !important; font-size:16px; font-weight:800; padding-bottom:5px; }\n.ovz-price .ovz-list { margin:0 0 26px 0 !important; }\n.ovz-price .ovz-btn { width:100% !important; margin-top:auto !important; }\n.ovz-trial { text-align:center; margin:28px auto 0 auto; max-width:760px; color: var(--ovz-text) !important; font-size:16px; line-height:1.6; }\n\n\/* conditions box inside a pricing card \u2014 bottom-aligned across columns *\/\n.ovz-price-cond { margin:auto 0 18px 0; min-height:104px; padding:16px; border-radius:14px; background: var(--ovz-surface-2) !important; border:1px solid var(--ovz-border) !important; }\n.ovz-price-cond strong { display:block; color: var(--ovz-heading) !important; font-size:14px; font-weight:900; margin-bottom:6px; }\n.ovz-price-cond p { color: var(--ovz-muted) !important; font-size:14px; line-height:1.5; margin:0 !important; }\n\n\/* founder \/ team photo *\/\n.ovz-photo { width:100%; aspect-ratio:16 \/ 11; object-fit:cover; border-radius:14px; margin-bottom:18px; display:block; border:1px solid var(--ovz-border); }\n\n\/* distributor band *\/\n.ovz-distband { margin-top:34px; border-radius:20px; padding:34px; display:grid; grid-template-columns:1fr auto; gap:26px; align-items:center;\n  background: linear-gradient(135deg, rgba(244,183,64,0.12), rgba(185,130,26,0.08)) !important; border:1px solid rgba(244,183,64,0.42) !important; }\n.ovz-distband .ovz-tag { background: rgba(244,183,64,0.20) !important; color: var(--ovz-gold-deep) !important; }\nbody.color-switch-dark .ovz-distband .ovz-tag { color: var(--ovz-gold) !important; }\n.ovz-distband h3 { color: var(--ovz-heading) !important; font-size:24px; font-weight:900; margin:0 0 10px 0 !important; }\n.ovz-distband p { color: var(--ovz-text) !important; font-size:16.5px; line-height:1.65; margin:0 !important; max-width:640px; }\n.ovz-distband .ovz-btn { white-space:nowrap; }\n\n\/* ---------- FAQ ---------- *\/\n.ovz-faq { background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; border-radius:16px; padding:4px 26px; margin-bottom:14px; box-shadow: var(--ovz-shadow); }\n.ovz-faq summary { cursor:pointer; list-style:none; color: var(--ovz-heading) !important; font-size:18px; font-weight:800; padding:22px 0; display:flex; justify-content:space-between; align-items:center; gap:16px; }\n.ovz-faq summary::-webkit-details-marker { display:none; }\n.ovz-faq summary::after { content:\"+\"; font-size:26px; font-weight:700; color: var(--ovz-accent-2); flex:0 0 auto; }\n.ovz-faq[open] summary::after { content:\"\\2212\"; }\n.ovz-faq p { color: var(--ovz-text) !important; font-size:16px; line-height:1.72; margin:0 0 22px 0 !important; }\n\n\/* ---------- form ---------- *\/\n.ovz-form { max-width:720px; margin:0 auto; background: var(--ovz-surface) !important; border:1px solid var(--ovz-border) !important; border-radius:20px; padding:30px; text-align:left; box-shadow: var(--ovz-shadow); }\n.ovz-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }\n.ovz-field { display:flex; flex-direction:column; }\n.ovz-field.full { grid-column:1 \/ -1; }\n.ovz-field label { color: var(--ovz-muted) !important; font-size:13px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; margin-bottom:7px; }\n.ovz-field input, .ovz-field select, .ovz-field textarea { width:100%; background:#fff !important; border:1px solid #cdd6ea !important; border-radius:10px; padding:13px 14px; font-size:15px; color:#111827 !important; }\n.ovz-field textarea { min-height:96px; resize:vertical; }\n.ovz-form .ovz-btn { width:100%; margin-top:18px; }\n.ovz-form-hint { color: var(--ovz-muted) !important; font-size:13px; text-align:center; margin:14px 0 0 0 !important; }\n\n\/* ---------- prose (legal pages) ---------- *\/\n.ovz-prose { max-width:880px; margin:0 auto; }\n.ovz-prose h2 { color: var(--ovz-heading) !important; font-size:26px; font-weight:900; margin:34px 0 14px 0 !important; }\n.ovz-prose h3 { color: var(--ovz-heading) !important; font-size:20px; font-weight:800; margin:26px 0 10px 0 !important; }\n.ovz-prose p, .ovz-prose li { color: var(--ovz-text) !important; font-size:16.5px; line-height:1.78; }\n.ovz-prose a { color: var(--ovz-accent) !important; }\n.ovz-prose ul, .ovz-prose ol { padding-left:22px; margin:0 0 16px 0; }\n.ovz-prose li { margin-bottom:8px; }\n.ovz-prose .ovz-card { padding:32px 34px; }\n\n\/* ---------- CTA ---------- *\/\n.ovz-cta { text-align:center; background: var(--ovz-band) !important; --ovz-heading:#fff; --ovz-text:#e7edff; }\n.ovz-cta h2 { color:#fff !important; font-size:clamp(30px,3.4vw,48px); font-weight:900; line-height:1.1; margin:0 0 18px 0 !important; }\n.ovz-cta > .ovz-container > p { color:#e7edff !important; max-width:720px; margin:0 auto 34px auto !important; font-size:18px; line-height:1.72; }\n\/* secondary button sits on the always-dark CTA band -> glassy white outline in both themes\n   (default .ovz-btn-secondary uses --ovz-surface, which is white in light mode = invisible) *\/\n.ovz-cta .ovz-btn-secondary { background: rgba(255,255,255,0.12) !important; border:1px solid rgba(255,255,255,0.42) !important; color:#fff !important; }\n.ovz-cta .ovz-btn-secondary:hover { background: rgba(255,255,255,0.22) !important; }\n\n\/* ---------- footer (always dark, brand) ---------- *\/\n.ovz-footer { background: linear-gradient(135deg,#16094b 0%,#14246d 55%,#0b1330 100%) !important; padding:58px 0 26px !important; }\n.ovz-footer .ovz-container { font-size:16px; }\n.ovz-footer-grid { display:grid; grid-template-columns:1.3fr 1fr 1fr 1fr; gap:38px; align-items:start; max-width:1160px; margin:0 auto; }\n.ovz-footer-brand .ovz-footer-name { color:#fff !important; font-size:22px; font-weight:900; letter-spacing:-.4px; margin:0 0 12px; display:flex; align-items:center; gap:9px; }\n.ovz-footer-brand .ovz-footer-name span { color: var(--ovz-accent-2) !important; }\n.ovz-footer-tag { color:#aab8dd !important; font-size:15px; line-height:1.65; margin:0 0 18px; max-width:330px; }\n.ovz-footer h4 { color:#fff !important; font-size:13px; font-weight:900; text-transform:uppercase; letter-spacing:1.2px; margin:0 0 16px !important; }\n.ovz-footer a.ovz-footer-link { color:#b3c1e4 !important; text-decoration:none !important; display:block; margin-bottom:11px; font-size:15px; }\n.ovz-footer a.ovz-footer-link:hover { color:#fff !important; }\n.ovz-footer-social { display:flex; gap:11px; }\n.ovz-footer-social a { width:40px; height:40px; border-radius:11px; background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.14); display:flex; align-items:center; justify-content:center; }\n.ovz-footer-social a:hover { background:rgba(0,168,255,0.25); border-color: var(--ovz-accent-2); }\n.ovz-footer-social svg { width:18px; height:18px; fill:#cfe; }\n.ovz-footer-bottom { border-top:1px solid rgba(255,255,255,0.12); margin-top:42px; padding-top:22px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; }\n.ovz-footer-bottom p { color:#8fa0c8 !important; font-size:14px; margin:0 !important; }\n.ovz-footer-legal { display:flex; flex-wrap:wrap; gap:6px 20px; }\n.ovz-footer-legal a { color:#8fa0c8 !important; text-decoration:none !important; font-size:14px; }\n.ovz-footer-legal a:hover { color:#fff !important; }\n\n\/* ---------- responsive ---------- *\/\n@media (max-width:900px){\n  .ovz-footer-grid { grid-template-columns:1fr 1fr; gap:28px; }\n  .ovz-footer-brand { grid-column:1 \/ -1; }\n  .ovz-footer-bottom { flex-direction:column; align-items:flex-start; }\n}\n@media (max-width:1024px){\n  .ovz-hero-grid { grid-template-columns:1fr; gap:36px; }\n  .ovz-hero p.lead { max-width:none; }\n}\n@media (max-width:900px){\n  .ovz-grid-2,.ovz-grid-3,.ovz-grid-4,.ovz-lanes,.ovz-pricing { grid-template-columns:1fr; }\n  .ovz-feature,.ovz-feature.reverse { grid-template-columns:1fr; gap:24px; }\n  .ovz-feature.reverse .ovz-feature-text,.ovz-feature.reverse .ovz-feature-shot { order:0; }\n  .ovz-split { grid-template-columns:1fr; text-align:center; }\n  .ovz-split-icon { margin:0 auto; }\n  .ovz-distband { grid-template-columns:1fr; text-align:center; }\n  .ovz-distband .ovz-tag { margin:0 auto 14px auto; }\n  .ovz-form-grid { grid-template-columns:1fr; }\n  .ovz-section { padding:50px 0 !important; }\n  .ovz-hero { padding:54px 0 !important; }\n  .ovz-hero h1 { font-size:36px; letter-spacing:-.8px; }\n}\n\n<\/style>\n<!-- ============================================================================\n     OrderVize \u2014 LEGAL NOTICE.  Legal text preserved verbatim from the live\n     page; re-skinned in the .ovz design system. Edit wording in WordPress.\n     ============================================================================ -->\n<div class=\"ovz\">\n  <section class=\"ovz-hero\">\n    <div class=\"ovz-container\">\n      <div class=\"ovz-title center\" style=\"margin-bottom:0;\">\n        <div class=\"ovz-badge\" style=\"margin:0 auto 24px;\">Legal<\/div>\n        <h2 style=\"font-size:clamp(32px,4vw,48px);\">Legal notice<\/h2>\n      <\/div>\n    <\/div>\n  <\/section>\n  <section class=\"ovz-section\">\n    <div class=\"ovz-container\">\n      <div class=\"ovz-prose\">\n        <div class=\"ovz-card\">\n<p><\/p>\n<h2>1. Website Presentation<\/h2>\n<p>Pursuant to Article 6 of Law No. 2004-575 of June 21, 2004, on Confidence in the Digital Economy (LCEN), users of the website <strong>ordervize.com<\/strong> are informed of the identity of the various parties involved in its creation and monitoring:<\/p>\n<p><strong>Site Publisher (Owner):<\/strong> <strong>e-voil\u00e0<\/strong> Walecznych 68A, 03-926 Warsaw, Poland NIP (Tax ID): 1132989356 \u2013 REGON: 381928066 Email: info@ordervize.com Website: ordervize.com<\/p>\n<p><strong>Publication Director:<\/strong> Marc Torres<\/p>\n<p><strong>Hosting Provider:<\/strong> <strong>Hostinger, UAB<\/strong> Jonavos g. 60C, LT-44192 Kaunas, Lithuania Phone: +370 645 03378 \u2013 Website: hostinger.com<\/p>\n<h2>2. Terms of Use<\/h2>\n<p>Use of the <strong>ordervize.com<\/strong> website implies full and complete acceptance of these legal notices as well as other applicable contractual conditions, in particular the General Terms and Conditions of Sale (GTCS). These conditions may be modified or updated at any time; users are therefore invited to consult them regularly.<\/p>\n<p>The site is normally accessible to users at all times, 24\/7. An interruption for technical maintenance may, however, be decided by e-voil\u00e0, which will endeavor to communicate the dates and times of the intervention to users beforehand.<\/p>\n<h2>3. Description of Services Provided<\/h2>\n<p>The purpose of the <strong>ordervize.com<\/strong> website is to present the <strong>OrderVize<\/strong> SaaS software, an all-in-one order management solution for e-merchants (professionals).<\/p>\n<p>This site provides information on the service\u2019s features, its integrations with certified external partners (such as <strong>Zoho, WooCommerce, Shopify, Vivino, Mirakl, Metro, and MBE Online<\/strong>), the subscription plans offered, as well as the ability to create an account or contact us.<\/p>\n<p>e-voil\u00e0 strives to provide information on the site that is as accurate and up-to-date as possible. However, we cannot guarantee the completeness, currency, or absence of errors in all content. The information and documents presented on the site (texts, graphics, prices, etc.) are given for information purposes only and are subject to change. If you notice any inaccurate information or omission, please report it to us by email at the address indicated above.<\/p>\n<h2>4. Technical Limitations and Liability<\/h2>\n<p>e-voil\u00e0 cannot be held responsible for material damage related to the use of the site. The site user agrees to access it using recent equipment, free of viruses and with an updated browser.<\/p>\n<p>e-voil\u00e0 cannot be held liable for indirect damages resulting from the use of the ordervize.com website. In particular, e-voil\u00e0 cannot be held responsible for loss of data or business opportunities related to the use of the site.<\/p>\n<p>Interactive spaces (contact form) are available to users. e-voil\u00e0 reserves the right to remove, without prior notice, any content posted in these spaces that contravenes applicable laws, in particular provisions relating to data protection, or that is contrary to good morals. Where applicable, e-voil\u00e0 also reserves the right to invoke the user\u2019s civil and\/or criminal liability in the event of a message of a racist, insulting, defamatory, or pornographic nature, regardless of the medium used.<\/p>\n<h2>5. Intellectual Property<\/h2>\n<p>e-voil\u00e0 is the owner or holds the usage rights to all elements accessible on the site, specifically texts, images, graphics, logos, icons, sounds, and software. Any reproduction, representation, modification, publication, or adaptation of all or part of the site\u2019s elements, regardless of the means or process used, is prohibited without the prior written permission of e-voil\u00e0.<\/p>\n<p>Any unauthorized use of the site or any of the elements it contains will be considered as constituting an infringement and prosecuted in accordance with the provisions of the Intellectual Property Code.<\/p>\n<h2>6. Hyperlinks<\/h2>\n<p>The ordervize.com website may contain hyperlinks to other websites or external resources. e-voil\u00e0 exercises no control over these sites and declines all responsibility regarding their content or availability. The insertion of these links does not imply that e-voil\u00e0 approves the content of these third-party sites.<\/p>\n<h2>7. Personal Data<\/h2>\n<p>Personal data collected via the site is processed in accordance with our Privacy Policy and current regulations (GDPR). The user has a right of access, rectification, opposition, erasure, and portability regarding their data. For any request, please contact us at: info@ordervize.com.<\/p>\n<h2>8. Governing Law and Jurisdiction<\/h2>\n<p>These legal notices are governed by <strong>Polish law<\/strong>. In the event of a dispute, and after an attempt at amicable resolution, express jurisdiction is attributed to the competent courts within the jurisdiction of e-voil\u00e0\u2019s registered office (unless otherwise provided by mandatory public policy). <\/p>\n<p><\/p>\n<h2><\/h2>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n<\/div>\n\n<!-- ============================================================================\n     OrderVize \u2014 motion engine (SHOWCASE build).\n     Modular effects, each guarded by target presence + reduced-motion + theme.\n     Appended to every .ovz page at build\/push (single source of truth).\n\n     >>> WordPress wptexturize GOTCHA <<<\n     This inline JS must NOT contain a bare double-ampersand AND operator, nor\n     \"--\", nor \"...\". wptexturize encodes a bare ampersand to a numeric entity on\n     render, which is a SyntaxError inside <script>. Use ?: \/ nested-if \/ the\n     \"||\" OR operator, and \"i += 1\" instead of \"i--\".\n\n     EFFECTS (toggle by deleting a block):\n       1 reveals            \u2014 scroll fade\/slide for cards, features, steps\u2026\n       2 heroEntrance+split \u2014 hero copy reveal, headline word-by-word\n       3 scrollProgress     \u2014 top progress bar + hero \"scroll\" nudge\n       4 tiltMagnetic       \u2014 card tilt toward cursor + magnetic CTA buttons\n       5 priceMicro         \u2014 animated \"best price\" badge on the hero screenshot\n       6 heroNetwork  (3D)  \u2014 particle-network hero background\n       9 dataFlowPipeline   \u2014 connector + step-by-step lighting of the 1-2-3-4\n     ============================================================================ -->\n<script data-no-optimize=\"1\" data-no-defer=\"1\" data-no-minify=\"1\" data-cfasync=\"false\">\n(function () {\n  \"use strict\";\n  if (window.__ovzAnim) return;\n  window.__ovzAnim = true;\n\n  var REDUCED = window.matchMedia ? window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches : false;\n  var DESKTOP = window.innerWidth > 900;\n  function qs(s, c) { return (c || document).querySelector(s); }\n  function qsa(s, c) { return Array.prototype.slice.call((c || document).querySelectorAll(s)); }\n  function isDark() { return document.body.classList.contains(\"color-switch-dark\"); }\n  function onThemeChange(cb) {\n    new MutationObserver(cb).observe(document.body, { attributes: true, attributeFilter: [\"class\"] });\n  }\n  function loadScript(src) {\n    return new Promise(function (res, rej) {\n      var s = document.createElement(\"script\");\n      s.src = src; s.async = true; s.onload = res; s.onerror = rej;\n      s.setAttribute(\"data-no-optimize\", \"1\");\n      s.setAttribute(\"data-no-defer\", \"1\");\n      s.setAttribute(\"data-cfasync\", \"false\");\n      document.head.appendChild(s);\n    });\n  }\n  \/\/ place a full-bleed canvas behind a host's content; returns renderer bits\n  function mountCanvas(host) {\n    if (getComputedStyle(host).position === \"static\") host.style.position = \"relative\";\n    qsa(\":scope > .ovz-container\", host).forEach(function (c) { c.style.position = \"relative\"; c.style.zIndex = \"1\"; });\n    var canvas = document.createElement(\"canvas\");\n    canvas.setAttribute(\"aria-hidden\", \"true\");\n    canvas.style.cssText = \"position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;\";\n    host.insertBefore(canvas, host.firstChild);\n    return canvas;\n  }\n  function dataFlowSection() {\n    var step = qs(\".ovz-grid-4 .ovz-step\");   \/\/ grid-4 of steps == the data-flow section\n    return step ? step.closest(\"section\") : null;\n  }\n\n  \/* ======================================================================\n     GSAP EFFECTS\n     ====================================================================== *\/\n  function initGsap() {\n    if (!window.gsap) return;\n    var gsap = window.gsap;\n\n    reveals(gsap);\n    heroEntrance(gsap);\n    scrollProgress(gsap);\n    if (DESKTOP) tiltMagnetic(gsap);\n    priceMicro(gsap);\n    dataFlowPipeline(gsap);\n  }\n\n  \/\/ 1 \u2014 scroll reveals via a throttled getBoundingClientRect check. This is the\n  \/\/      most robust trigger across any theme\/scroller (no scroll-position math\n  \/\/      like ScrollTrigger, no observer quirks) \u2014 an element reveals the moment\n  \/\/      its top crosses into the viewport.\n  function reveals(gsap) {\n    var sel = \".ovz-title, .ovz-card, .ovz-lane, .ovz-price, .ovz-step, .ovz-distband, .ovz-note, .ovz-split, .ovz-feature\";\n    var els = qsa(sel).filter(function (el) { return !el.closest(\".ovz-hero\"); });\n    if (!els.length) return;\n    gsap.set(els, { opacity: 0, y: 24 });\n    var pending = els.slice();\n    function check() {\n      var vh = window.innerHeight;\n      for (var i = pending.length - 1; i >= 0; i--) {\n        var el = pending[i];\n        \/\/ reveal once the top has crossed the trigger line; still fires if the\n        \/\/ element was scrolled fully past (top negative) so nothing is skipped.\n        if (el.getBoundingClientRect().top < vh * 0.92) {\n          gsap.to(el, { opacity: 1, y: 0, duration: 0.6, ease: \"power2.out\" });\n          pending.splice(i, 1);\n        }\n      }\n    }\n    var ticking = false;\n    function onScroll() {\n      if (ticking) return;\n      ticking = true;\n      requestAnimationFrame(function () { check(); ticking = false; });\n    }\n    window.addEventListener(\"scroll\", onScroll, { passive: true });\n    window.addEventListener(\"resize\", onScroll, { passive: true });\n    check();\n  }\n\n  \/\/ 2 \u2014 hero entrance + headline word split\n  function splitWords(node) {\n    var out = [];\n    qsa(\":scope\", node); \/\/ noop to keep linter calm\n    Array.prototype.slice.call(node.childNodes).forEach(function (child) {\n      if (child.nodeType === 3) {\n        var frag = document.createDocumentFragment();\n        child.textContent.split(\/(\\s+)\/).forEach(function (tok) {\n          if (tok.trim().length === 0) { frag.appendChild(document.createTextNode(tok)); return; }\n          var w = document.createElement(\"span\");\n          w.textContent = tok; w.style.display = \"inline-block\"; w.style.willChange = \"transform\";\n          frag.appendChild(w); out.push(w);\n        });\n        node.replaceChild(frag, child);\n      } else if (child.nodeType === 1) {\n        child.style.display = \"inline-block\";\n        out = out.concat(splitWords(child));\n      }\n    });\n    return out;\n  }\n  function heroEntrance(gsap) {\n    var hero = qs(\".ovz-hero\");\n    if (!hero) return;\n    var h1 = qs(\"h1\", hero);\n    var words = [];\n    if (h1) { try { words = splitWords(h1); } catch (e) { words = []; } }\n    if (words.length) {\n      gsap.from(words, { opacity: 0, yPercent: 60, rotateX: -40, duration: 0.7, ease: \"power3.out\", stagger: 0.05, delay: 0.05 });\n    }\n    var rest = qsa(\".ovz-badge, h2, p, .ovz-btns, .ovz-trust, .ovz-shot\", hero).filter(function (el) { return !h1 || !h1.contains(el); });\n    if (rest.length) gsap.from(rest, { opacity: 0, y: 18, duration: 0.7, ease: \"power3.out\", stagger: 0.08, delay: words.length ? 0.25 : 0.05 });\n  }\n\n  \/\/ 3 \u2014 scroll progress bar + hero \"scroll\" nudge\n  function scrollProgress(gsap) {\n    var bar = document.createElement(\"div\");\n    bar.style.cssText = \"position:fixed;top:0;left:0;height:3px;width:100%;transform:scaleX(0);transform-origin:0 50%;z-index:99999;pointer-events:none;background:linear-gradient(90deg,#0d6efd,#00a8ff);\";\n    document.body.appendChild(bar);\n    var qt = gsap.quickTo(bar, \"scaleX\", { duration: 0.2, ease: \"power2.out\" });\n    window.addEventListener(\"scroll\", function () {\n      var h = document.documentElement;\n      var max = h.scrollHeight - h.clientHeight;\n      qt(max > 0 ? (h.scrollTop || window.scrollY) \/ max : 0);\n    }, { passive: true });\n\n    var hero = qs(\".ovz-hero\");\n    if (!hero) return;\n    var nudge = document.createElement(\"div\");\n    nudge.setAttribute(\"aria-hidden\", \"true\");\n    nudge.innerHTML = '<svg viewBox=\"0 0 24 24\" width=\"26\" height=\"26\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 9l6 6 6-6\"\/><\/svg>';\n    nudge.style.cssText = \"position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:2;color:rgba(120,135,170,.9);opacity:.7;pointer-events:none;\";\n    hero.appendChild(nudge);\n    gsap.to(nudge, { y: 8, repeat: -1, yoyo: true, duration: 0.9, ease: \"sine.inOut\" });\n    window.addEventListener(\"scroll\", function () {\n      gsap.to(nudge, { opacity: window.scrollY > 80 ? 0 : 0.7, duration: 0.3 });\n    }, { passive: true });\n  }\n\n  \/\/ 4 \u2014 card tilt + magnetic buttons (desktop)\n  function tiltMagnetic(gsap) {\n    qsa(\".ovz-card, .ovz-price, .ovz-lane\").forEach(function (card) {\n      card.style.transformStyle = \"preserve-3d\";\n      var rx = gsap.quickTo(card, \"rotateX\", { duration: 0.4, ease: \"power2.out\" });\n      var ry = gsap.quickTo(card, \"rotateY\", { duration: 0.4, ease: \"power2.out\" });\n      card.addEventListener(\"mousemove\", function (e) {\n        var r = card.getBoundingClientRect();\n        var px = (e.clientX - r.left) \/ r.width - 0.5;\n        var py = (e.clientY - r.top) \/ r.height - 0.5;\n        gsap.set(card, { transformPerspective: 900 });\n        ry(px * 6); rx(-py * 6);\n      });\n      card.addEventListener(\"mouseleave\", function () { rx(0); ry(0); });\n    });\n    qsa(\".ovz-btn-primary, .ovz-btn-gold\").forEach(function (btn) {\n      var qx = gsap.quickTo(btn, \"x\", { duration: 0.4, ease: \"power3.out\" });\n      var qy = gsap.quickTo(btn, \"y\", { duration: 0.4, ease: \"power3.out\" });\n      btn.addEventListener(\"mousemove\", function (e) {\n        var r = btn.getBoundingClientRect();\n        qx((e.clientX - r.left - r.width \/ 2) * 0.3);\n        qy((e.clientY - r.top - r.height \/ 2) * 0.4);\n      });\n      btn.addEventListener(\"mouseleave\", function () { qx(0); qy(0); });\n    });\n  }\n\n  \/\/ 5 \u2014 price-intelligence micro-motion (badge on the hero screenshot)\n  function priceMicro(gsap) {\n    var hero = qs(\".ovz-hero\");\n    if (!hero) return;\n    var shot = qs(\".ovz-shot\", hero);\n    if (!shot) return;\n    if (getComputedStyle(shot).position === \"static\") shot.style.position = \"relative\";\n    var pill = document.createElement(\"div\");\n    pill.style.cssText = \"position:absolute;top:14%;right:-10px;z-index:3;display:flex;align-items:center;gap:7px;background:#0f9d58;color:#fff;font:800 12px Arial;padding:7px 11px;border-radius:999px;box-shadow:0 10px 24px rgba(15,157,88,.35);\";\n    pill.innerHTML = '<span style=\"width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 0 0 rgba(255,255,255,.7)\"><\/span><span>Best price<\/span>';\n    shot.appendChild(pill);\n    gsap.from(pill, { opacity: 0, scale: 0.6, duration: 0.5, ease: \"back.out(2)\", delay: 1.1 });\n    gsap.to(pill, { y: -6, repeat: -1, yoyo: true, duration: 1.4, ease: \"sine.inOut\", delay: 1.1 });\n    gsap.to(pill.firstChild, { boxShadow: \"0 0 0 7px rgba(255,255,255,0)\", repeat: -1, duration: 1.4, ease: \"power1.out\" });\n  }\n\n  \/\/ 9 \u2014 data-flow: step numbers pop + glow in sequence when the section enters\n  function dataFlowPipeline(gsap) {\n    var sec = dataFlowSection();\n    if (!sec) return;\n    var nums = qsa(\".ovz-grid-4 .ovz-step-n\", sec);\n    if (nums.length < 2) return;\n    gsap.set(nums, { scale: 0.7, transformOrigin: \"center center\" });\n    var done = false;\n    function check() {\n      if (done) return;\n      var vh = window.innerHeight;\n      if (sec.getBoundingClientRect().top < vh * 0.8) {\n        done = true;\n        gsap.to(nums, { scale: 1, boxShadow: \"0 12px 28px rgba(0,168,255,.5)\", duration: 0.5, ease: \"back.out(2.2)\", stagger: 0.18 });\n      }\n    }\n    var ticking = false;\n    window.addEventListener(\"scroll\", function () { if (ticking) return; ticking = true; requestAnimationFrame(function () { check(); ticking = false; }); }, { passive: true });\n    check();\n  }\n\n  \/* ======================================================================\n     THREE.js SCENES\n     ====================================================================== *\/\n  function initThree() {\n    var hero = qs(\".ovz-hero\");\n    if (!hero) return;\n    if (qs(\".ovz-prose\")) return;   \/\/ legal\/utility pages stay calm: no particle network\n    var THREE_CDN = \"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\";\n    (window.THREE ? Promise.resolve() : loadScript(THREE_CDN))\n      .then(function () { try { heroNetwork(hero); } catch (e) {} })\n      .catch(function () {});\n  }\n\n  function makeScene(host, count, build, palette) {\n    var THREE = window.THREE;\n    var canvas = mountCanvas(host);\n    var w = host.clientWidth, h = host.clientHeight || 1;\n    var renderer = new THREE.WebGLRenderer({ canvas: canvas, alpha: true, antialias: true });\n    renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 1.5));\n    renderer.setSize(w, h, false);\n    var scene = new THREE.Scene();\n    var camera = new THREE.PerspectiveCamera(60, w \/ h, 1, 3000);\n    camera.position.z = 420;\n    var state = { THREE: THREE, host: host, canvas: canvas, renderer: renderer, scene: scene, camera: camera, w: w, h: h, running: true, raf: null };\n    build(state);\n    var rT;\n    window.addEventListener(\"resize\", function () {\n      clearTimeout(rT);\n      rT = setTimeout(function () {\n        state.w = host.clientWidth; state.h = host.clientHeight || 1;\n        camera.aspect = state.w \/ state.h; camera.updateProjectionMatrix();\n        renderer.setSize(state.w, state.h, false);\n        if (state.onResize) state.onResize();\n      }, 150);\n    });\n    if (\"IntersectionObserver\" in window) {\n      new IntersectionObserver(function (ents) {\n        ents.forEach(function (en) {\n          if (en.isIntersecting) { if (!state.running) { state.running = true; state.tick(); } }\n          else { state.running = false; if (state.raf) cancelAnimationFrame(state.raf); }\n        });\n      }, { threshold: 0 }).observe(host);\n    }\n    if (palette) onThemeChange(function () { if (state.recolor) state.recolor(); });\n    return state;\n  }\n\n  \/\/ 6 \u2014 hero connected-particle network\n  function heroNetwork(host) {\n    makeScene(host, 0, function (st) {\n      var THREE = st.THREE, w = st.w, h = st.h;\n      function pal() { return isDark() ? { node: 0x49d0ff, line: 0x2a6bd6, a: 0.55, la: 0.22 } : { node: 0x0d6efd, line: 0x6aa3ff, a: 0.5, la: 0.16 }; }\n      var p = pal();\n      var COUNT = Math.max(40, Math.min(140, Math.round((w * h) \/ 12000)));\n      if (window.innerWidth < 700) COUNT = Math.min(COUNT, 60);\n      var SX = w * 0.6, SY = h * 0.65, SZ = 200;\n      var pos = new Float32Array(COUNT * 3), vel = [];\n      for (var i = 0; i < COUNT; i++) {\n        pos[i * 3] = (Math.random() * 2 - 1) * SX; pos[i * 3 + 1] = (Math.random() * 2 - 1) * SY; pos[i * 3 + 2] = (Math.random() * 2 - 1) * SZ;\n        vel.push([(Math.random() * 2 - 1) * 0.25, (Math.random() * 2 - 1) * 0.25, (Math.random() * 2 - 1) * 0.12]);\n      }\n      var pGeo = new THREE.BufferGeometry(); pGeo.setAttribute(\"position\", new THREE.BufferAttribute(pos, 3));\n      var pMat = new THREE.PointsMaterial({ size: 3.4, color: p.node, transparent: true, opacity: p.a, sizeAttenuation: true });\n      st.scene.add(new THREE.Points(pGeo, pMat));\n      var maxL = Math.min(COUNT * 10, 2500), lp = new Float32Array(maxL * 6);\n      var lGeo = new THREE.BufferGeometry(); lGeo.setAttribute(\"position\", new THREE.BufferAttribute(lp, 3));\n      var lMat = new THREE.LineBasicMaterial({ color: p.line, transparent: true, opacity: p.la });\n      st.scene.add(new THREE.LineSegments(lGeo, lMat));\n      var DIST = Math.min(160, Math.max(95, w \/ 11)), mx = 0, my = 0;\n      host.addEventListener(\"mousemove\", function (e) { var r = host.getBoundingClientRect(); mx = (e.clientX - r.left) \/ r.width - 0.5; my = (e.clientY - r.top) \/ r.height - 0.5; });\n      st.recolor = function () { var np = pal(); pMat.color.setHex(np.node); pMat.opacity = np.a; lMat.color.setHex(np.line); lMat.opacity = np.la; };\n      st.tick = function () {\n        if (!st.running) return;\n        st.raf = requestAnimationFrame(st.tick);\n        var a = pGeo.attributes.position.array, k;\n        for (k = 0; k < COUNT; k++) {\n          a[k * 3] += vel[k][0]; a[k * 3 + 1] += vel[k][1]; a[k * 3 + 2] += vel[k][2];\n          if (a[k * 3] > SX || a[k * 3] < -SX) vel[k][0] *= -1;\n          if (a[k * 3 + 1] > SY || a[k * 3 + 1] < -SY) vel[k][1] *= -1;\n          if (a[k * 3 + 2] > SZ || a[k * 3 + 2] < -SZ) vel[k][2] *= -1;\n        }\n        pGeo.attributes.position.needsUpdate = true;\n        var n = 0, x, y;\n        for (x = 0; x < COUNT; x++) {\n          for (y = x + 1; y < COUNT; y++) {\n            var dx = a[x * 3] - a[y * 3], dy = a[x * 3 + 1] - a[y * 3 + 1], dz = a[x * 3 + 2] - a[y * 3 + 2];\n            if (n < maxL) { if ((dx * dx + dy * dy + dz * dz) < DIST * DIST) {\n              lp[n * 6] = a[x * 3]; lp[n * 6 + 1] = a[x * 3 + 1]; lp[n * 6 + 2] = a[x * 3 + 2];\n              lp[n * 6 + 3] = a[y * 3]; lp[n * 6 + 4] = a[y * 3 + 1]; lp[n * 6 + 5] = a[y * 3 + 2]; n += 1;\n            } }\n          }\n        }\n        lGeo.setDrawRange(0, n * 2); lGeo.attributes.position.needsUpdate = true;\n        st.camera.position.x += (mx * 60 - st.camera.position.x) * 0.03;\n        st.camera.position.y += (-my * 40 - st.camera.position.y) * 0.03;\n        st.camera.lookAt(st.scene.position);\n        st.renderer.render(st.scene, st.camera);\n      };\n      st.tick();\n    }, true);\n  }\n\n  \/* ======================================================================\n     BOOT\n     ====================================================================== *\/\n  function boot() {\n    if (REDUCED) return;                 \/\/ honor reduced motion: fully static\n    if (!qs(\".ovz\")) return;             \/\/ no design system on page -> do nothing\n    var GSAP = \"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/gsap.min.js\";\n    (window.gsap ? Promise.resolve() : loadScript(GSAP))\n      .then(function () { try { initGsap(); } catch (e) {} try { initThree(); } catch (e) {} })\n      .catch(function () { try { initThree(); } catch (e) {} });\n  }\n  if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", boot);\n  else boot();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Legal Legal notice 1. Website Presentation Pursuant to Article 6 of Law No. 2004-575 of June 21, 2004, on Confidence in the Digital Economy (LCEN), users of the website ordervize.com are informed of the identity of the various parties involved in its creation and monitoring: Site Publisher (Owner): e-voil\u00e0 Walecznych 68A, 03-926 Warsaw, Poland NIP&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-3838","page","type-page","status-publish","hentry"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Marc Torres","author_link":"https:\/\/ordervize.com\/en\/author\/sommelier-torresgmail-com\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/pages\/3838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/comments?post=3838"}],"version-history":[{"count":4,"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/pages\/3838\/revisions"}],"predecessor-version":[{"id":4819,"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/pages\/3838\/revisions\/4819"}],"wp:attachment":[{"href":"https:\/\/ordervize.com\/en\/wp-json\/wp\/v2\/media?parent=3838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}