{"id":37,"date":"2026-08-19T18:28:19","date_gmt":"2026-08-19T18:28:19","guid":{"rendered":"https:\/\/jw3d.fi\/?page_id=37"},"modified":"2026-09-18T19:02:52","modified_gmt":"2026-09-18T19:02:52","slug":"elementor","status":"publish","type":"page","link":"https:\/\/jw3d.fi\/","title":{"rendered":"JW3D Tech"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"37\" class=\"elementor elementor-37\">\n\t\t\t\t<div class=\"elementor-element elementor-element-9154d06 e-flex e-con-boxed e-con e-parent\" data-id=\"9154d06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ed4fcea elementor-widget elementor-widget-html\" data-id=\"ed4fcea\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"sv\">\n<head>\n<meta charset=\"UTF-8\" \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n<title>JW3D Tech \u2014 Fr\u00e5n id\u00e9 till teknisk l\u00f6sning<\/title>\n<style>\n  :root{\n    --bg: #05070d;\n    --bg-2: #080b12;\n    --panel: #0b1119;\n    --panel-2: #0e141e;\n    --line: rgba(255,255,255,0.08);\n    --text: #f3f5f9;\n    --muted: #9aa1b0;\n    --muted-2: #6d7484;\n    --blue: #1a63f0;\n    --blue-light: #4f8dff;\n    --blue-dim: rgba(26,99,240,0.14);\n  }\n\n  *{ box-sizing: border-box; }\n  html{ scroll-behavior: smooth; scroll-padding-top: 115px; }\n  body{\n    margin:0;\n    position: relative;\n    background: var(--bg);\n    color: var(--text);\n    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;\n    -webkit-font-smoothing: antialiased;\n    overflow-x: hidden;\n  }\n  a{ text-decoration: none; color: inherit; }\n  ::selection{ background: var(--blue); color: white; }\n  p{ color: var(--muted); line-height: 1.65; margin: 0; }\n  h1,h2,h3,h4{ margin: 0; font-weight: 800; letter-spacing: -0.01em; }\n\n  .wrap{ max-width: 1180px; margin: 0 auto; padding: 0 40px; }\n\n  \/* ---------- background texture ---------- *\/\n  .grid-overlay{\n    position: absolute; inset:0; z-index:0; pointer-events:none;\n    background-image:\n      linear-gradient(rgba(79,141,255,0.05) 1px, transparent 1px),\n      linear-gradient(90deg, rgba(79,141,255,0.05) 1px, transparent 1px);\n    background-size: 46px 46px;\n    mask-image: linear-gradient(to left, black 0%, black 40%, transparent 74%);\n    -webkit-mask-image: linear-gradient(to left, black 0%, black 40%, transparent 74%);\n  }\n  \/* stronger, tighter grid focused right behind the hero object, so the\n     part reads as if it's sitting directly on the page's own coordinate\n     grid rather than inside a separate image box \u2014 plus a soft dark\n     radial patch on top so the grid (both this local one and the page-wide\n     .grid-overlay showing through) doesn't clutter the picture itself *\/\n  .hero-grid-focus{\n    position: absolute; inset: -18% -10%; z-index: 0; pointer-events: none;\n    background-image:\n      radial-gradient(ellipse 58% 54% at 50% 46%, rgba(5,7,13,0.55) 0%, rgba(5,7,13,0.3) 42%, transparent 72%),\n      linear-gradient(rgba(79,141,255,0.04) 1px, transparent 1px),\n      linear-gradient(90deg, rgba(79,141,255,0.04) 1px, transparent 1px);\n    background-size: 100% 100%, 46px 46px, 46px 46px;\n    mask-image: radial-gradient(ellipse 62% 58% at 50% 58%, black 18%, transparent 72%);\n  }\n  .hero-grid-focus::before{\n    content:'';\n    position:absolute; left:6%; right:4%; top:64%; height:1px;\n    background: linear-gradient(90deg, transparent, rgba(79,141,255,0.16) 22%, rgba(79,141,255,0.16) 78%, transparent);\n  }\n  .hero-grid-focus::after{\n    content:'';\n    position:absolute; top:8%; bottom:6%; left:42%; width:1px;\n    background: linear-gradient(180deg, transparent, rgba(79,141,255,0.16) 22%, rgba(79,141,255,0.16) 78%, transparent);\n  }\n\n  \/* ---------- nav ---------- *\/\n  nav{\n    position: sticky; top:0; z-index: 60;\n    display:flex; align-items:center; justify-content: space-between;\n    flex-wrap: wrap;\n    row-gap: 12px;\n    column-gap: 20px;\n    padding: 20px 26px;\n    background: rgba(5,7,13,0.7);\n    backdrop-filter: blur(12px);\n    border-bottom: 1px solid transparent;\n    transition: border-color .25s ease, background .25s ease;\n  }\n  nav.scrolled{ border-bottom-color: var(--line); background: rgba(5,7,13,0.92); }\n\n  .jw3d-nav-left{ display:flex !important; align-items:center !important; gap: 14px; }\n\n  \/* ---------- language switcher ---------- *\/\n  .lang-switch{ position:relative; }\n  .lang-switch-btn{\n    display:flex; align-items:center; gap: 6px;\n    background: var(--panel); border:1px solid var(--line); color: var(--muted);\n    border-radius: 7px; padding: 8px 12px; cursor:pointer; font-family: inherit;\n    font-size: 11.5px; font-weight:700; letter-spacing:0.03em;\n    transition: border-color .2s ease, color .2s ease;\n  }\n  .lang-switch-btn:hover{ border-color: rgba(79,141,255,0.4); color: var(--text); }\n  .lang-switch-btn svg{ width:14px; height:14px; flex-shrink:0; }\n  .lang-switch-chev{ transition: transform .2s ease; }\n  .lang-switch.open .lang-switch-chev{ transform: rotate(180deg); }\n  .lang-switch-menu{\n    position:absolute; top: calc(100% + 8px); right:0; min-width: 140px;\n    background: var(--panel-2); border:1px solid var(--line); border-radius: 10px;\n    padding: 6px; display:flex; flex-direction:column; gap:2px;\n    opacity:0; visibility:hidden; transform: translateY(-6px);\n    transition: opacity .18s ease, visibility .18s ease, transform .18s ease;\n    box-shadow: 0 12px 28px rgba(0,0,0,0.35);\n  }\n  .lang-switch.open .lang-switch-menu{ opacity:1; visibility:visible; transform: translateY(0); }\n  .lang-switch-option{\n    display:block; width:100%; text-align:left; background:none; border:none;\n    color: var(--muted); font-family: inherit; font-size: 13px; padding: 9px 10px;\n    border-radius: 6px; cursor:pointer; transition: background .15s ease, color .15s ease;\n  }\n  .lang-switch-option:hover{ background: var(--panel); color: var(--text); }\n  .lang-switch-option.active{ color: var(--blue-light); font-weight:700; }\n\n  .jw3d-logo{ display:flex !important; flex-direction: row !important; align-items: center !important; gap: 14px; line-height: 1; }\n  .jw3d-logo-img{ height: 40px !important; width: auto !important; max-width: none !important; display: block !important; }\n  .jw3d-logo .word{ font-size: 34px; font-weight: 800; letter-spacing: 0.01em; }\n  .jw3d-logo .word span{ color: var(--blue-light); }\n  .jw3d-logo-divider{ width: 1px !important; height: 26px !important; background: rgba(255,255,255,0.16) !important; flex-shrink: 0; display:block !important; }\n  .jw3d-logo-tech{ font-size: 13px !important; letter-spacing: 0.24em; color: var(--muted) !important; font-weight: 700 !important; }\n\n  .nav-links{ display:flex; gap: 18px; font-size: 13.5px; font-weight: 600; letter-spacing: 0.02em; color: #dfe3ea; }\n  .nav-links a{ transition: color .2s ease; }\n  .nav-links a:hover{ color: var(--blue-light); }\n\n  .btn{\n    display:inline-flex; align-items:center; justify-content:center; gap:8px;\n    padding: 12px 22px; border-radius: 7px; font-size: 12.5px; font-weight: 700;\n    letter-spacing: 0.03em; text-transform: uppercase; cursor: pointer;\n    border: 1px solid transparent; transition: transform .18s ease, box-shadow .18s ease, background .18s ease, border-color .18s ease;\n  }\n  .btn-primary{ background: var(--blue); color: #fff; box-shadow: 0 8px 22px rgba(26,99,240,0.35); }\n  .btn-primary:hover{ transform: translateY(-1px); box-shadow: 0 12px 28px rgba(26,99,240,0.5); background: #2670ff; }\n  .btn-outline{ background: transparent; border-color: rgba(255,255,255,0.22); color: var(--text); }\n  .btn-outline:hover{ border-color: rgba(255,255,255,0.5); background: rgba(255,255,255,0.04); }\n\n  \/* ---------- hero ---------- *\/\n  .hero{ position: relative; z-index: 1; padding: 84px 0 40px; }\n  .hero-grid{ display:grid; grid-template-columns: 1.05fr 1fr; gap: 40px; align-items: center; }\n  .hero h1{ font-size: clamp(34px, 4.4vw, 54px); line-height: 1.08; }\n  .hero h1 .blue{ color: var(--blue-light); }\n  .hero p.lead{ font-size: 16px; max-width: 440px; margin: 22px 0 32px; }\n  .hero-actions{ display:flex; gap: 14px; flex-wrap: wrap; }\n\n  .hero-visual{ position: relative; z-index: 1; }\n  .hero-visual img{ width: 100%; height: auto; display:block; position: relative; z-index: 1; filter: drop-shadow(0 18px 40px rgba(0,0,0,0.55)); }\n  .hero-visual-glow{\n    position:absolute; inset: -14%;\n    background: radial-gradient(ellipse 58% 58% at 55% 48%, rgba(26,99,240,0.24), transparent 72%);\n    z-index: 0; filter: blur(14px);\n  }\n\n  \/* ---------- feature strip ---------- *\/\n  .feature-strip{ position: relative; z-index:1; padding: 46px 0 60px; }\n  .feature-strip .wrap{ display:grid; grid-template-columns: repeat(4,1fr); gap: 30px; }\n  .feature-item{ display:flex; align-items:flex-start; gap: 14px; }\n  .feature-badge{\n    width: 42px; height: 42px; min-width: 42px; border-radius: 50%;\n    border: 1px solid rgba(79,141,255,0.4);\n    display:flex; align-items:center; justify-content:center;\n    background: var(--blue-dim);\n  }\n  .feature-badge svg{ width: 19px; height: 19px; stroke: var(--blue-light); }\n  .feature-item h4{ font-size: 13px; letter-spacing: 0.03em; margin-bottom: 6px; }\n  .feature-item p{ font-size: 12.5px; line-height: 1.5; }\n\n  \/* ---------- section heads ---------- *\/\n  section{ position: relative; z-index: 1; padding: 76px 0; }\n  .section-tag{ display:flex; align-items:center; gap: 12px; margin-bottom: 34px; }\n  .section-tag .bar{ width: 22px; height: 3px; background: var(--blue); border-radius: 2px; }\n  .section-tag h2{ font-size: 19px; letter-spacing: 0.03em; }\n\n  \/* ---------- process ---------- *\/\n  .process{ background: var(--bg-2); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }\n  .process-row{ display:grid; grid-template-columns: repeat(5, 1fr); gap: 42px; align-items: start; }\n  .process-step{ position: relative; overflow: visible; }\n  .process-step .num{ font-size: 12px; font-weight: 800; color: var(--blue-light); margin-bottom: 4px; }\n  .process-step h4{ font-size: 13.5px; letter-spacing: 0.02em; margin-bottom: 6px; }\n  .process-step p{ font-size: 12px; min-height: 32px; }\n  .process-icon-wrap{ position: relative; margin-top: 16px; }\n  .process-icon{\n    border-radius: 10px; overflow: hidden; height: 96px;\n    background: var(--panel); border: 1px solid var(--line);\n    display:flex; align-items:center; justify-content:center;\n  }\n  .process-icon img{ width: 100%; height: 100%; object-fit: cover; }\n  .process-icon svg{ width: 34px; height: 34px; stroke: #4a5064; }\n  .process-arrow{ position: absolute; top: 50%; right: -34px; width: 26px; height: 26px; z-index: 2; transform: translateY(-50%); }\n  .process-arrow svg{ width: 18px; height: 18px; stroke: var(--blue-light); }\n  .process-dot{ width:5px; height:5px; border-radius:50%; background: var(--blue); display:inline-block; margin-right:6px; box-shadow: 0 0 8px var(--blue); }\n\n  \/* ---------- services ---------- *\/\n  .svc-grid{ display:grid; grid-template-columns: repeat(5, 1fr); gap: 16px; }\n  .svc-card{\n    background: var(--panel); border: 1px solid var(--line); border-radius: 12px;\n    overflow: hidden; transition: transform .25s ease, border-color .25s ease;\n  }\n  .svc-card:hover{ transform: translateY(-4px); border-color: rgba(79,141,255,0.4); }\n  .svc-thumb{ height: 96px; overflow: hidden; }\n  .svc-thumb img{ width: 100%; height: 100%; object-fit: cover; display:block; transition: transform .4s ease; }\n  .svc-card:hover .svc-thumb img{ transform: scale(1.06); }\n  .svc-body{ padding: 16px 16px 18px; }\n  .svc-body h3{ font-size: 13.5px; letter-spacing: 0.02em; margin-bottom: 8px; }\n  .svc-body p{ font-size: 12px; min-height: 48px; }\n  .svc-more{ display:inline-flex; align-items:center; gap: 6px; font-size: 11.5px; font-weight: 700; letter-spacing: 0.03em; color: var(--blue-light); margin-top: 12px; background:none; border:none; padding:0; cursor:pointer; font-family: inherit; }\n  .svc-more svg{ width: 12px; height: 12px; stroke: var(--blue-light); transition: transform .2s ease; }\n  .svc-card:hover .svc-more svg{ transform: translateX(3px); }\n\n  \/* ---------- service modal ---------- *\/\n  .svc-modal-overlay{\n    position: fixed; inset: 0; z-index: 200;\n    background: rgba(5,7,13,0.75); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);\n    display:flex; align-items:center; justify-content:center; padding: 24px;\n    opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease;\n  }\n  .svc-modal-overlay.open{ opacity:1; visibility:visible; }\n  .svc-modal{\n    background: var(--panel-2); border: 1px solid var(--line); border-radius: 16px;\n    max-width: 520px; width: 100%; padding: 36px 32px; position: relative;\n    max-height: 85vh; overflow-y: auto;\n    transform: translateY(12px) scale(.98); transition: transform .25s ease;\n  }\n  .svc-modal-overlay.open .svc-modal{ transform: translateY(0) scale(1); }\n  .svc-modal-close{\n    position:absolute; top:16px; right:16px; width:32px; height:32px; border-radius:8px;\n    display:flex; align-items:center; justify-content:center; cursor:pointer;\n    background: var(--panel); border:1px solid var(--line); color: var(--muted);\n    transition: border-color .2s ease, color .2s ease;\n  }\n  .svc-modal-close:hover{ border-color: rgba(79,141,255,0.4); color: var(--text); }\n  .svc-modal-close svg{ width:16px; height:16px; }\n  .svc-modal h3{ font-size: 19px; letter-spacing: 0.02em; margin-bottom: 14px; padding-right: 30px; }\n  .svc-modal-lead{ font-size: 13.5px; color: var(--muted); line-height: 1.6; margin-bottom: 20px; }\n  .svc-modal ul{ list-style:none; padding:0; margin: 0 0 26px; display:flex; flex-direction:column; gap: 10px; }\n  .svc-modal ul li{ font-size: 13px; color: var(--text); display:flex; align-items:flex-start; gap: 10px; line-height: 1.5; }\n  .svc-modal ul li::before{ content:''; width:5px; height:5px; border-radius:50%; background: var(--blue); box-shadow: 0 0 8px var(--blue); margin-top: 7px; flex-shrink:0; }\n  @media (max-width: 560px){\n    .svc-modal{ padding: 28px 22px; }\n  }\n\n  \/* ---------- contact modal ---------- *\/\n  .contact-modal{ max-width: 560px; }\n  .cf-form{ display:flex; flex-direction:column; gap: 16px; }\n  .cf-field{ display:flex; flex-direction:column; gap: 6px; }\n  .cf-field label{ font-size: 11.5px; font-weight:700; letter-spacing:0.04em; text-transform:uppercase; color: var(--muted); }\n  .cf-field label .req{ color: var(--blue-light); }\n  .cf-field input[type=\"text\"],\n  .cf-field input[type=\"email\"],\n  .cf-field input[type=\"tel\"],\n  .cf-field textarea{\n    background: var(--panel); border:1px solid var(--line); border-radius:8px;\n    padding: 11px 14px; font-size: 13.5px; color: var(--text); font-family: inherit;\n    transition: border-color .2s ease; width:100%;\n  }\n  .cf-field input:focus, .cf-field textarea:focus{ outline:none; border-color: rgba(79,141,255,0.5); }\n  .cf-field textarea{ resize: vertical; min-height: 90px; }\n  .cf-file-label{\n    display:flex; align-items:center; gap:10px; background: var(--panel); border:1px dashed var(--line);\n    border-radius:8px; padding: 12px 14px; cursor:pointer; transition: border-color .2s ease;\n  }\n  .cf-file-label:hover{ border-color: rgba(79,141,255,0.4); }\n  .cf-file-label svg{ width:16px; height:16px; stroke: var(--blue-light); flex-shrink:0; }\n  .cf-file-label span{ font-size: 12.5px; color: var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }\n  .cf-field input[type=\"file\"]{ position:absolute; width:1px; height:1px; overflow:hidden; opacity:0; }\n  .cf-hint{ font-size: 11px; color: var(--muted-2); margin-top: -2px; }\n  .cf-honeypot{ position:absolute; left:-9999px; opacity:0; height:0; width:0; }\n  .cf-submit{ margin-top: 4px; width:100%; justify-content:center; border:none; cursor:pointer; font-family: inherit; }\n  .cf-status{ font-size: 12.5px; margin-top: 2px; display:none; line-height:1.5; }\n  .cf-status.show{ display:block; }\n  .cf-status.ok{ color: #4ade80; }\n  .cf-status.err{ color: #f87171; }\n  @media (max-width: 560px){\n    .contact-modal{ padding: 28px 22px; }\n  }\n\n  \/* ---------- projects ---------- *\/\n  .proj-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }\n  .proj-card{ border-radius: 12px; overflow: hidden; }\n  .proj-thumb{ height: 128px; overflow: hidden; border-radius: 12px; }\n  .proj-thumb img{ width:100%; height:100%; object-fit: cover; display:block; transition: transform .4s ease; }\n  .proj-card:hover .proj-thumb img{ transform: scale(1.07); }\n  .proj-thumb.placeholder{\n    display:flex; align-items:center; justify-content:center;\n    background: var(--panel); border: 1px dashed var(--line);\n  }\n  .proj-thumb.placeholder svg{ width: 26px; height: 26px; stroke: var(--muted-2); }\n\n  \/* ---------- stats strip ---------- *\/\n  .stats-strip{ border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--bg-2); }\n  .stats-strip .wrap{ padding: 30px 40px; display:grid; grid-template-columns: repeat(4,1fr); gap: 24px; }\n  .stat-item{ display:flex; align-items:center; gap: 12px; }\n  .stat-item svg{ width: 22px; height: 22px; stroke: var(--blue-light); flex-shrink:0; }\n  .stat-item h4{ font-size: 12.5px; letter-spacing: 0.02em; margin-bottom: 3px; }\n  .stat-item p{ font-size: 11.5px; }\n\n  \/* ---------- CTA ---------- *\/\n  .cta{ padding: 28px 0 76px; }\n  .cta-box{\n    display:grid; grid-template-columns: 1fr 1fr;\n    background: var(--panel-2); border-radius: 16px; overflow: hidden;\n    border: 1px solid var(--line);\n  }\n  .cta-text{ padding: 54px 48px; display:flex; flex-direction:column; justify-content:center; }\n  .cta-text h2{ font-size: clamp(24px, 2.8vw, 32px); line-height: 1.15; margin-bottom: 16px; }\n  .cta-text p{ font-size: 13.5px; max-width: 360px; margin-bottom: 26px; }\n  .cta-img{ position: relative; min-height: 220px; overflow:hidden; }\n  .cta-img img{ width:100%; height:100%; object-fit: cover; display:block; position:absolute; inset:0; }\n  .cta-img::before{\n    content:''; position:absolute; inset:0; z-index:1;\n    background: linear-gradient(90deg, var(--panel-2) 0%, transparent 26%);\n  }\n\n  \/* ---------- footer ---------- *\/\n  footer{ padding: 60px 0 0; }\n  .foot-grid{ display:grid; grid-template-columns: 1.5fr 1fr 1fr 1fr; gap: 32px; padding-bottom: 44px; }\n  .foot-brand p{ font-size: 12.5px; margin-top: 16px; max-width: 280px; }\n  .foot-col h5{ font-size: 11.5px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text); margin-bottom: 18px; }\n  .foot-col a{ display:block; font-size: 13px; color: var(--muted); margin-bottom: 12px; transition: color .2s ease; }\n  .foot-col a:hover{ color: var(--blue-light); }\n  .foot-contact-item{ display:flex; align-items:center; gap: 10px; font-size: 13px; color: var(--muted); margin-bottom: 12px; }\n  .foot-contact-item svg{ width: 14px; height:14px; stroke: var(--blue-light); flex-shrink:0; }\n  .foot-social{ display:flex; gap: 10px; margin-top: 18px; }\n  .foot-social a{\n    width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--line);\n    display:flex; align-items:center; justify-content:center; margin:0;\n    transition: border-color .2s ease, background .2s ease;\n  }\n  .foot-social a:hover{ border-color: var(--blue); background: var(--blue-dim); }\n  .foot-social svg{ width: 14px; height:14px; stroke: var(--muted); }\n  .foot-social a:hover svg{ stroke: var(--blue-light); }\n  .foot-bottom{\n    border-top: 1px solid var(--line); padding: 20px 0; display:flex;\n    justify-content: space-between; font-size: 12px; color: var(--muted-2); flex-wrap: wrap; gap: 10px;\n  }\n  .foot-bottom a{ color: var(--muted-2); margin-left: 18px; }\n  .foot-bottom a:hover{ color: var(--muted); }\n\n  \/* ---------- reveal ---------- *\/\n  .reveal{ opacity:0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }\n  .reveal.in{ opacity:1; transform: translateY(0); }\n\n  \/* ---------- responsive ---------- *\/\n  @media (max-width: 980px){\n    html{ scroll-padding-top: 105px; }\n    .wrap{ padding: 0 24px; }\n    nav{ padding: 16px 24px; }\n    .nav-links{ display:none; }\n    .jw3d-nav-left{ gap: 10px; }\n    nav .btn{ padding: 9px 16px; font-size: 11px; }\n    .lang-switch-btn{ padding: 7px 10px; font-size: 10.5px; }\n    .hero-grid{ grid-template-columns: 1fr; }\n    .hero-visual{ order:-1; }\n    .feature-strip .wrap{ grid-template-columns: repeat(2,1fr); row-gap: 26px; }\n    .process-row{ grid-template-columns: repeat(2,1fr); row-gap: 34px; }\n    .process-arrow{ display:none; }\n    .svc-grid{ grid-template-columns: repeat(2,1fr); }\n    .proj-grid{ grid-template-columns: repeat(2,1fr); }\n    .stats-strip .wrap{ grid-template-columns: repeat(2,1fr); }\n    .cta-box{ grid-template-columns: 1fr; }\n    .cta-img{ min-height: 200px; order:-1; }\n    .foot-grid{ grid-template-columns: 1fr 1fr; }\n  }\n  @media (max-width: 560px){\n    html{ scroll-padding-top: 90px; }\n    .feature-strip .wrap{ grid-template-columns: 1fr; }\n    .process-row{ grid-template-columns: 1fr; }\n    .svc-grid{ grid-template-columns: 1fr; }\n    .proj-grid{ grid-template-columns: 1fr; }\n    .stats-strip .wrap{ grid-template-columns: 1fr; }\n    .foot-grid{ grid-template-columns: 1fr; }\n    .cta-text{ padding: 40px 26px; }\n    nav{ padding: 14px 16px; gap: 8px; }\n    .jw3d-logo-img{ height: 26px !important; }\n    .jw3d-logo{ gap: 10px; }\n    .jw3d-logo-divider{ height: 18px !important; }\n    .jw3d-logo-tech{ font-size: 10px !important; letter-spacing: 0.18em; }\n    .jw3d-logo .word{ font-size: 26px; }\n    nav .btn{ padding: 8px 10px; font-size: 9.5px; letter-spacing: 0.02em; }\n    .jw3d-nav-left{ gap: 6px; }\n    .lang-switch-btn{ padding: 5px 6px; font-size: 9.5px; gap:4px; }\n    .lang-switch-btn svg{ width:12px; height:12px; }\n    .lang-switch-menu{ min-width: 120px; }\n  }\n  @media (max-width: 430px){\n    #nav .jw3d-logo-divider, #nav .jw3d-logo-tech{ display: none !important; }\n  }\n<\/style>\n<\/head>\n<body>\n\n<div class=\"grid-overlay\"><\/div>\n\n<nav id=\"nav\">\n  <div class=\"jw3d-nav-left\">\n    <div class=\"jw3d-logo\">\n      <img decoding=\"async\" id=\"jw3dNavLogoImg\" class=\"jw3d-logo-img\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-nav-logo.webp\" alt=\"JW3D Tech\" width=\"221\" height=\"40\">\n      <div class=\"jw3d-logo-divider\"><\/div>\n      <div class=\"jw3d-logo-tech\">TECH<\/div>\n    <\/div>\n    <div class=\"lang-switch\" id=\"langSwitch\">\n      <button type=\"button\" class=\"lang-switch-btn\" id=\"langSwitchBtn\" aria-haspopup=\"true\" aria-expanded=\"false\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M2 12h20\"\/><path d=\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10Z\"\/><\/svg>\n        <span id=\"langSwitchCurrent\">SV<\/span>\n        <svg class=\"lang-switch-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\n      <\/button>\n      <div class=\"lang-switch-menu\" id=\"langSwitchMenu\" role=\"menu\">\n        <button type=\"button\" class=\"lang-switch-option\" data-lang=\"sv\" role=\"menuitem\">Svenska<\/button>\n        <button type=\"button\" class=\"lang-switch-option\" data-lang=\"fi\" role=\"menuitem\">Suomi<\/button>\n        <button type=\"button\" class=\"lang-switch-option\" data-lang=\"en\" role=\"menuitem\">English<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"nav-links\">\n    <a href=\"#hem\">HEM<\/a>\n    <a href=\"#tjanster\">TJ\u00c4NSTER<\/a>\n    <a href=\"#projekt\">PROJEKT<\/a>\n    <a href=\"#om\">OM JW3D TECH<\/a>\n    <a href=\"#kontakt\">KONTAKT<\/a>\n  <\/div>\n  <a href=\"#om\" id=\"navCtaBtn\" class=\"btn btn-primary\">Starta ett projekt<\/a>\n<\/nav>\n\n<main>\n\n  <section class=\"hero\" id=\"hem\">\n    <div class=\"wrap hero-grid\">\n      <div class=\"reveal in\">\n        <h1>FR\u00c5N ID\u00c9<br\/>TILL TEKNISK<br\/><span class=\"blue\">L\u00d6SNING.<\/span><\/h1>\n        <p class=\"lead\">JW3D Tech erbjuder CAD-konstruktion, 3D-visualisering, tekniska ritningar, prototyptillverkning, 3D-printing och teknisk konsultverksamhet.<\/p>\n        <div class=\"hero-actions\">\n          <a href=\"#om\" class=\"btn btn-primary\">Starta ett projekt<\/a>\n          <a href=\"#tjanster\" class=\"btn btn-outline\">V\u00e5ra tj\u00e4nster<\/a>\n        <\/div>\n      <\/div>\n      <div class=\"hero-visual reveal in\">\n        <div class=\"hero-visual-glow\"><\/div>\n        <div class=\"hero-grid-focus\"><\/div>\n        <img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-hero.webp\" alt=\"3D-konstruerad maskindel med CAD-wireframe\" \/>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"feature-strip\">\n    <div class=\"wrap\">\n      <div class=\"feature-item\">\n        <div class=\"feature-badge\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.4 15a1.7 1.7 0 0 0 .34 1.87l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.7 1.7 0 0 0-1.87-.34 1.7 1.7 0 0 0-1 1.55V21a2 2 0 0 1-4 0v-.09A1.7 1.7 0 0 0 9 19.4a1.7 1.7 0 0 0-1.87.34l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-1.55-1H3a2 2 0 0 1 0-4h.09A1.7 1.7 0 0 0 4.6 9a1.7 1.7 0 0 0-.34-1.87l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.7 1.7 0 0 0 9 4.6a1.7 1.7 0 0 0 1-1.55V3a2 2 0 0 1 4 0v.09a1.7 1.7 0 0 0 1 1.55 1.7 1.7 0 0 0 1.87-.34l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.7 1.7 0 0 0 19.4 9a1.7 1.7 0 0 0 1.55 1H21a2 2 0 0 1 0 4h-.09a1.7 1.7 0 0 0-1.51 1Z\"\/><\/svg><\/div>\n        <div><h4>KONSTRUKTION<\/h4><p>Precisa CAD-modeller och tekniska ritningar<\/p><\/div>\n      <\/div>\n      <div class=\"feature-item\">\n        <div class=\"feature-badge\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2 3 7l9 5 9-5-9-5Z\"\/><path d=\"M3 12l9 5 9-5\"\/><path d=\"M3 17l9 5 9-5\"\/><\/svg><\/div>\n        <div><h4>VISUALISERING<\/h4><p>3D-visualisering som ger dina id\u00e9er liv<\/p><\/div>\n      <\/div>\n      <div class=\"feature-item\">\n        <div class=\"feature-badge\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 9V3h12v6\"\/><path d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\"\/><rect x=\"6\" y=\"14\" width=\"12\" height=\"8\"\/><\/svg><\/div>\n        <div><h4>PROTOTYP &amp; PRINT<\/h4><p>Prototyper genom 3D-printning i h\u00f6g kvalitet<\/p><\/div>\n      <\/div>\n      <div class=\"feature-item\">\n        <div class=\"feature-badge\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2 3 9l9 13 9-13-9-7Z\"\/><path d=\"M3 9h18\"\/><path d=\"M12 2 8 9l4 13 4-13-4-7Z\"\/><\/svg><\/div>\n        <div><h4>UTVECKLING<\/h4><p>Produktutveckling och tekniska l\u00f6sningar<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"process\">\n    <div class=\"wrap\">\n      <div class=\"section-tag reveal\"><div class=\"bar\"><\/div><h2>HELA PROCESSEN \u2013 EN PARTNER<\/h2><\/div>\n      <div class=\"process-row\">\n        <div class=\"process-step reveal\">\n          <div class=\"num\">01<\/div>\n          <h4><span class=\"process-dot\"><\/span>KONCEPT<\/h4>\n          <p>Du delar din id\u00e9 eller ditt problem med oss.<\/p>\n          <div class=\"process-icon-wrap\">\n            <div class=\"process-icon\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-process-icon-1.webp\" alt=\"Koncept \u2013 id\u00e9\" \/><\/div>\n            <div class=\"process-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"process-step reveal\">\n          <div class=\"num\">02<\/div>\n          <h4><span class=\"process-dot\"><\/span>KONSTRUKTION<\/h4>\n          <p>Vi tar fram CAD-modeller och tekniska ritningar.<\/p>\n          <div class=\"process-icon-wrap\">\n            <div class=\"process-icon\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-process-icon-2.webp\" alt=\"CAD-konstruktion av komponent\" \/><\/div>\n            <div class=\"process-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"process-step reveal\">\n          <div class=\"num\">03<\/div>\n          <h4><span class=\"process-dot\"><\/span>VISUALISERING<\/h4>\n          <p>3D-visualisering som visar funktion och design.<\/p>\n          <div class=\"process-icon-wrap\">\n            <div class=\"process-icon\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-process-icon-3.webp\" alt=\"3D-visualisering \u2013 f\u00e4rdig komponent\" \/><\/div>\n            <div class=\"process-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"process-step reveal\">\n          <div class=\"num\">04<\/div>\n          <h4><span class=\"process-dot\"><\/span>PROTOTYP<\/h4>\n          <p>Vi skapar fysiska prototyper med 3D-printing.<\/p>\n          <div class=\"process-icon-wrap\">\n            <div class=\"process-icon\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-process-icon-4.webp\" alt=\"3D-printad prototyp\" \/><\/div>\n            <div class=\"process-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/div>\n          <\/div>\n        <\/div>\n        <div class=\"process-step reveal\">\n          <div class=\"num\">05<\/div>\n          <h4><span class=\"process-dot\"><\/span>UTVECKLING<\/h4>\n          <p>Vi testar, f\u00f6rb\u00e4ttrar och tar produkten vidare.<\/p>\n          <div class=\"process-icon-wrap\">\n            <div class=\"process-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"3\"\/><path d=\"M19.4 15a1.7 1.7 0 0 0 .34 1.87l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.7 1.7 0 0 0-1.87-.34 1.7 1.7 0 0 0-1 1.55V21a2 2 0 0 1-4 0v-.09A1.7 1.7 0 0 0 9 19.4a1.7 1.7 0 0 0-1.87.34l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06A1.7 1.7 0 0 0 4.6 15a1.7 1.7 0 0 0-1.55-1H3a2 2 0 0 1 0-4h.09A1.7 1.7 0 0 0 4.6 9a1.7 1.7 0 0 0-.34-1.87l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06A1.7 1.7 0 0 0 9 4.6a1.7 1.7 0 0 0 1-1.55V3a2 2 0 0 1 4 0v.09a1.7 1.7 0 0 0 1 1.55 1.7 1.7 0 0 0 1.87-.34l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06A1.7 1.7 0 0 0 19.4 9a1.7 1.7 0 0 0 1.55 1H21a2 2 0 0 1 0 4h-.09a1.7 1.7 0 0 0-1.51 1Z\"\/><\/svg><\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"tjanster\">\n    <div class=\"wrap\">\n      <div class=\"section-tag reveal\"><div class=\"bar\"><\/div><h2>V\u00c5RA TJ\u00c4NSTER<\/h2><\/div>\n      <div class=\"svc-grid\">\n        <div class=\"svc-card reveal\">\n          <div class=\"svc-thumb\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-service-1.webp\" alt=\"CAD-konstruktion\" \/><\/div>\n          <div class=\"svc-body\">\n            <h3>CAD-KONSTRUKTION<\/h3>\n            <p>Precisa 3D-modeller och konstruktioner f\u00f6r alla typer av projekt.<\/p>\n            <button type=\"button\" class=\"svc-more\" data-service=\"cad\">L\u00c4S MER <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"svc-card reveal\">\n          <div class=\"svc-thumb\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-service-2.webp\" alt=\"Tekniska ritningar\" \/><\/div>\n          <div class=\"svc-body\">\n            <h3>TEKNISKA RITNINGAR<\/h3>\n            <p>Detaljerade ritningar och dokumentation enligt branschstandard.<\/p>\n            <button type=\"button\" class=\"svc-more\" data-service=\"ritningar\">L\u00c4S MER <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n        <div class=\"svc-card reveal\">\n          <div class=\"svc-thumb\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-service-3.webp\" alt=\"3D-visualisering\" \/><\/div>\n          <div class=\"svc-body\">\n            <h3>3D-VISUALISERING<\/h3>\n            <p>Fotorealistiska visualiseringar som g\u00f6r dina id\u00e9er tydliga.<\/p>\n            <button type=\"button\" class=\"svc-more\" data-service=\"visualisering\">L\u00c4S MER <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n        <div class=\"svc-card reveal\">\n          <div class=\"svc-thumb\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-service-4.webp\" alt=\"3D-printing\" \/><\/div>\n          <div class=\"svc-body\">\n            <h3>3D-PRINTING<\/h3>\n            <p>H\u00f6gkvalitativ 3D-printing i olika material och tekniker.<\/p>\n            <button type=\"button\" class=\"svc-more\" data-service=\"printing\">L\u00c4S MER <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n        <div class=\"svc-card reveal\">\n          <div class=\"svc-thumb\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-service-5.webp\" alt=\"Produktutveckling\" \/><\/div>\n          <div class=\"svc-body\">\n            <h3>PRODUKTUTVECKLING<\/h3>\n            <p>Vi hj\u00e4lper dig utveckla din produkt fr\u00e5n id\u00e9 till f\u00e4rdig l\u00f6sning.<\/p>\n            <button type=\"button\" class=\"svc-more\" data-service=\"produktutveckling\">L\u00c4S MER <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section id=\"projekt\">\n    <div class=\"wrap\">\n      <div class=\"section-tag reveal\"><div class=\"bar\"><\/div><h2>SENASTE PROJEKT<\/h2><\/div>\n      <div class=\"proj-grid\">\n\n        <!-- PROJEKTKORT 1 \u2014 byt ut s\u00e5 h\u00e4r:\n             1) Bild: ers\u00e4tt <div class=\"proj-thumb placeholder\">...<\/div> med\n                <div class=\"proj-thumb\"><img decoding=\"async\" src=\"DIN-BILD-URL-ELLER-BASE64\" alt=\"Projektnamn\" \/><\/div>\n             2) Text: skriv \u00f6ver \"PROJEKTNAMN\" och beskrivningen nedan. -->\n        <div class=\"proj-card reveal\">\n          <div class=\"proj-thumb placeholder\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\n          <\/div>\n        <\/div>\n\n        <!-- PROJEKTKORT 2 \u2014 byt ut s\u00e5 h\u00e4r:\n             1) Bild: ers\u00e4tt <div class=\"proj-thumb placeholder\">...<\/div> med\n                <div class=\"proj-thumb\"><img decoding=\"async\" src=\"DIN-BILD-URL-ELLER-BASE64\" alt=\"Projektnamn\" \/><\/div>\n             2) Text: skriv \u00f6ver \"PROJEKTNAMN\" och beskrivningen nedan. -->\n        <div class=\"proj-card reveal\">\n          <div class=\"proj-thumb placeholder\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\n          <\/div>\n        <\/div>\n\n        <!-- PROJEKTKORT 3 \u2014 byt ut s\u00e5 h\u00e4r:\n             1) Bild: ers\u00e4tt <div class=\"proj-thumb placeholder\">...<\/div> med\n                <div class=\"proj-thumb\"><img decoding=\"async\" src=\"DIN-BILD-URL-ELLER-BASE64\" alt=\"Projektnamn\" \/><\/div>\n             2) Text: skriv \u00f6ver \"PROJEKTNAMN\" och beskrivningen nedan. -->\n        <div class=\"proj-card reveal\">\n          <div class=\"proj-thumb placeholder\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\n          <\/div>\n        <\/div>\n\n        <!-- PROJEKTKORT 4 \u2014 byt ut s\u00e5 h\u00e4r:\n             1) Bild: ers\u00e4tt <div class=\"proj-thumb placeholder\">...<\/div> med\n                <div class=\"proj-thumb\"><img decoding=\"async\" src=\"DIN-BILD-URL-ELLER-BASE64\" alt=\"Projektnamn\" \/><\/div>\n             2) Text: skriv \u00f6ver \"PROJEKTNAMN\" och beskrivningen nedan. -->\n        <div class=\"proj-card reveal\">\n          <div class=\"proj-thumb placeholder\">\n            <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"\/><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\"\/><path d=\"M21 15l-5-5L5 21\"\/><\/svg>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"stats-strip\" style=\"padding:0;\">\n    <div class=\"wrap\">\n      <div class=\"stat-item reveal\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m12 2 2.4 5.8L20 9.3l-4.4 4 1.3 6.1L12 16.6l-4.9 2.8 1.3-6.1L4 9.3l5.6-1.5L12 2Z\"\/><\/svg>\n        <div><h4>H\u00d6G KVALITET<\/h4><p>Noggrannhet i varje detalj<\/p><\/div>\n      <\/div>\n      <div class=\"stat-item reveal\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 3\"\/><\/svg>\n        <div><h4>SNABBA LEDTIDER<\/h4><p>Effektivt fr\u00e5n id\u00e9 till resultat<\/p><\/div>\n      <\/div>\n      <div class=\"stat-item reveal\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 21v-7\"\/><path d=\"M4 10V3\"\/><path d=\"M12 21v-9\"\/><path d=\"M12 8V3\"\/><path d=\"M20 21v-5\"\/><path d=\"M20 12V3\"\/><path d=\"M1 14h6\"\/><path d=\"M9 8h6\"\/><path d=\"M17 16h6\"\/><\/svg>\n        <div><h4>FLEXIBLA L\u00d6SNINGAR<\/h4><p>Anpassat efter dina behov<\/p><\/div>\n      <\/div>\n      <div class=\"stat-item reveal\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 2 3 6v6c0 5 3.8 8.4 9 10 5.2-1.6 9-5 9-10V6l-9-4Z\"\/><\/svg>\n        <div><h4>TEKNISK EXPERTIS<\/h4><p>Erfarenhet och kunskap<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <section class=\"cta\" id=\"om\">\n    <div class=\"wrap\">\n      <div class=\"cta-box reveal\">\n        <div class=\"cta-text\">\n          <h2>HAR DU EN ID\u00c9?<br\/>L\u00c5T OSS G\u00d6RA DEN VERKLIG.<\/h2>\n          <p>Kontakta oss idag s\u00e5 tar vi din id\u00e9 till n\u00e4sta niv\u00e5.<br\/>Ladda upp en skiss, ritning, foto eller CAD-fil och ber\u00e4tta kort vad vi kan hj\u00e4lpa dig med.<\/p>\n          <a href=\"#\" class=\"btn btn-primary open-contact-modal\" style=\"width:fit-content;\">Kontakta oss<\/a>\n        <\/div>\n        <div class=\"cta-img\"><img decoding=\"async\" src=\"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-cta.webp\" alt=\"Precisionsbearbetad komponent i n\u00e4rbild\" \/><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/main>\n\n<div class=\"svc-modal-overlay\" id=\"svcModalOverlay\">\n  <div class=\"svc-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"svcModalTitle\">\n    <div class=\"svc-modal-close\" id=\"svcModalClose\" role=\"button\" tabindex=\"0\" aria-label=\"St\u00e4ng\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"\/><path d=\"m6 6 12 12\"\/><\/svg><\/div>\n    <h3 id=\"svcModalTitle\"><\/h3>\n    <p class=\"svc-modal-lead\" id=\"svcModalLead\"><\/p>\n    <ul id=\"svcModalList\"><\/ul>\n    <a href=\"#\" class=\"btn btn-primary open-contact-modal\" id=\"svcModalCta\">Kontakta oss<\/a>\n  <\/div>\n<\/div>\n\n<div class=\"svc-modal-overlay\" id=\"contactModalOverlay\">\n  <div class=\"svc-modal contact-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"contactModalTitle\">\n    <div class=\"svc-modal-close\" id=\"contactModalClose\" role=\"button\" tabindex=\"0\" aria-label=\"St\u00e4ng\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"\/><path d=\"m6 6 12 12\"\/><\/svg><\/div>\n    <h3 id=\"contactModalTitle\">KONTAKTA OSS<\/h3>\n    <p class=\"svc-modal-lead\">Fyll i formul\u00e4ret s\u00e5 \u00e5terkommer vi till dig s\u00e5 snart vi kan. Du kan \u00e4ven bifoga en skiss, ritning eller en tillf\u00e4llig CAD-fil.<\/p>\n    <form class=\"cf-form\" id=\"contactForm\" action=\"https:\/\/api.web3forms.com\/submit\" method=\"POST\" enctype=\"multipart\/form-data\">\n      <input type=\"checkbox\" name=\"botcheck\" class=\"cf-honeypot\" tabindex=\"-1\" autocomplete=\"off\">\n      <input type=\"hidden\" name=\"access_key\" value=\"a101812b-01c1-41ff-983f-0ddf3eae6aaa\">\n      <input type=\"hidden\" name=\"subject\" value=\"Nytt meddelande fr\u00e5n jw3d.fi\">\n      <input type=\"hidden\" name=\"from_name\" value=\"JW3D Tech \u2013 Kontaktformul\u00e4r\">\n      <div class=\"cf-field\">\n        <label for=\"cfName\">Namn <span class=\"req\">*<\/span><\/label>\n        <input type=\"text\" id=\"cfName\" name=\"Namn\" required>\n      <\/div>\n      <div class=\"cf-field\">\n        <label for=\"cfEmail\">E-post <span class=\"req\">*<\/span><\/label>\n        <input type=\"email\" id=\"cfEmail\" name=\"E-post\" required>\n      <\/div>\n      <div class=\"cf-field\">\n        <label for=\"cfPhone\">Telefon<\/label>\n        <input type=\"tel\" id=\"cfPhone\" name=\"Telefon\">\n      <\/div>\n      <div class=\"cf-field\">\n        <label for=\"cfProject\">Typ av projekt (valfritt)<\/label>\n        <input type=\"text\" id=\"cfProject\" name=\"Typ av projekt\" placeholder=\"T.ex. CAD-konstruktion, 3D-printing, prototyp...\">\n      <\/div>\n      <div class=\"cf-field\">\n        <label for=\"cfMessage\">Meddelande <span class=\"req\">*<\/span><\/label>\n        <textarea id=\"cfMessage\" name=\"Meddelande\" required><\/textarea>\n      <\/div>\n      <div class=\"cf-field\">\n        <label for=\"cfFile\">Skiss, ritning, foto, CAD-fil eller annat projektunderlag (valfritt)<\/label>\n        <label class=\"cf-file-label\" for=\"cfFile\">\n          <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\"\/><\/svg>\n          <span id=\"cfFileLabel\">V\u00e4lj fil...<\/span>\n        <\/label>\n        <input type=\"file\" id=\"cfFile\" name=\"attachment\" accept=\".pdf,.jpg,.jpeg,.png,.dwg,.dxf,.step,.stp,.igs,.iges,.stl,.skp\">\n        <p class=\"cf-hint\">PDF, bild, DWG, DXF, STEP, IGES, STL eller SKP \u2013 max ca 5 MB.<\/p>\n      <\/div>\n      <button type=\"submit\" class=\"btn btn-primary cf-submit\" id=\"cfSubmitBtn\">SKICKA<\/button>\n      <p class=\"cf-status\" id=\"cfStatus\"><\/p>\n    <\/form>\n  <\/div>\n<\/div>\n\n<footer id=\"kontakt\">\n  <div class=\"wrap\">\n    <div class=\"foot-grid\">\n      <div class=\"foot-brand\">\n        <div class=\"jw3d-logo\">\n          <img decoding=\"async\" id=\"jw3dFootLogoImg\" class=\"jw3d-logo-img\" src=\"\" alt=\"JW3D Tech\" width=\"221\" height=\"40\">\n          <div class=\"jw3d-logo-divider\"><\/div>\n          <div class=\"jw3d-logo-tech\">TECH<\/div>\n        <\/div>\n        <p>JW3D Tech erbjuder tj\u00e4nster inom CAD-konstruktion, 3D-visualisering, tekniska ritningar, 3D-printing, prototyptillverkning, produktutveckling och teknisk konsultverksamhet.<\/p>\n      <\/div>\n      <div class=\"foot-col\">\n        <h5>Snabbl\u00e4nkar<\/h5>\n        <a href=\"#hem\">Hem<\/a>\n        <a href=\"#tjanster\">Tj\u00e4nster<\/a>\n        <a href=\"#projekt\">Projekt<\/a>\n        <a href=\"#om\">Om JW3D Tech<\/a>\n        <a href=\"#kontakt\">Kontakt<\/a>\n      <\/div>\n      <div class=\"foot-col\">\n        <h5>Tj\u00e4nster<\/h5>\n        <a href=\"#tjanster\">CAD-konstruktion<\/a>\n        <a href=\"#tjanster\">Tekniska ritningar<\/a>\n        <a href=\"#tjanster\">3D-visualisering<\/a>\n        <a href=\"#tjanster\">3D-printing<\/a>\n        <a href=\"#tjanster\">Produktutveckling<\/a>\n      <\/div>\n      <div class=\"foot-col\">\n        <h5>Kontakt<\/h5>\n        <div class=\"foot-contact-item\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m2 7 10 6 10-6\"\/><\/svg>info@jw3d.fi<\/div>\n        <div class=\"foot-contact-item\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.4 2.1L8 9.9a16 16 0 0 0 6 6l1.4-1.4a2 2 0 0 1 2.1-.4c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.8 2Z\"\/><\/svg>+358 40 706 4070<\/div>\n        <div class=\"foot-contact-item\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg>Finland<\/div>\n        <div class=\"foot-social\">\n          <a href=\"#\" aria-label=\"Facebook\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3Z\"\/><\/svg><\/a>\n          <a href=\"#\" aria-label=\"Instagram\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\"\/><\/svg><\/a>\n          <a href=\"#\" aria-label=\"LinkedIn\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-4 0v7h-4V8h4v1.5A5 5 0 0 1 16 8Z\"\/><rect x=\"2\" y=\"9\" width=\"4\" height=\"12\"\/><circle cx=\"4\" cy=\"4\" r=\"2\"\/><\/svg><\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"foot-bottom\">\n      <span>\u00a9 2026 JW3D Tech Kb. Alla r\u00e4ttigheter f\u00f6rbeh\u00e5llna.<\/span>\n      <span><a href=\"#\">Integritetspolicy<\/a><a href=\"#\">Cookies<\/a><\/span>\n    <\/div>\n  <\/div>\n<\/footer>\n\n<script>\n  const nav = document.getElementById('nav');\n  window.addEventListener('scroll', () => {\n    nav.classList.toggle('scrolled', window.scrollY > 10);\n  }, { passive: true });\n\n  const io = new IntersectionObserver((entries) => {\n    entries.forEach(e => { if (e.isIntersecting) { e.target.classList.add('in'); io.unobserve(e.target); } });\n  }, { threshold: 0.12 });\n  document.querySelectorAll('.reveal').forEach(el => io.observe(el));\n\n  \/\/ subtle parallax tilt on hero image\n  const heroVisual = document.querySelector('.hero-visual img');\n  if (heroVisual) {\n    window.addEventListener('mousemove', (e) => {\n      const x = (e.clientX \/ window.innerWidth - 0.5) * 6;\n      const y = (e.clientY \/ window.innerHeight - 0.5) * 6;\n      heroVisual.style.transform = `rotateY(${x}deg) rotateX(${-y}deg)`;\n    });\n  }\n<\/script>\n<script>\n(function(){\n  \"use strict\";\n  var SERVICES = {\n    cad: {\n      title: \"CAD-KONSTRUKTION\",\n      lead: \"Vi skapar precisa 3D-modeller och konstruktioner f\u00f6r alla typer av mekaniska komponenter och produkter \u2013 fr\u00e5n f\u00f6rsta skiss till en fullst\u00e4ndig, tillverkningsbar CAD-modell.\",\n      bullets: [\n        \"3D-modellering av komponenter och sammans\u00e4ttningar\",\n        \"Konstruktion anpassad f\u00f6r tillverkning (DFM)\",\n        \"Toleransber\u00e4kningar och materialval\",\n        \"Iterativ design utifr\u00e5n dina \u00f6nskem\u00e5l\"\n      ]\n    },\n    ritningar: {\n      title: \"TEKNISKA RITNINGAR\",\n      lead: \"Vi tar fram tydliga, detaljerade ritningar och teknisk dokumentation enligt branschstandard, redo att skickas direkt till tillverkare eller underleverant\u00f6rer.\",\n      bullets: [\n        \"M\u00e5ttsatta 2D-ritningar utifr\u00e5n 3D-modeller\",\n        \"Toleranser och ytfinish enligt ISO-standard\",\n        \"Sammanst\u00e4llningsritningar och styckelistor (BOM)\",\n        \"Dokumentation anpassad f\u00f6r din tillverkningsprocess\"\n      ]\n    },\n    visualisering: {\n      title: \"3D-VISUALISERING\",\n      lead: \"Vi skapar fotorealistiska visualiseringar som g\u00f6r din produkt eller id\u00e9 tydlig innan tillverkning \u2013 perfekt f\u00f6r presentationer, marknadsf\u00f6ring eller f\u00f6r att st\u00e4mma av design med kunder.\",\n      bullets: [\n        \"Fotorealistisk rendering i olika material och milj\u00f6er\",\n        \"Produktbilder f\u00f6r webb, sociala medier och offerter\",\n        \"Animationer och vyer fr\u00e5n flera vinklar\",\n        \"Snabb visualisering redan i konceptstadiet\"\n      ]\n    },\n    printing: {\n      title: \"3D-PRINTING\",\n      lead: \"Vi erbjuder h\u00f6gkvalitativ 3D-printing i flera material och tekniker, fr\u00e5n snabba koncept-prototyper till funktionella slutdetaljer.\",\n      bullets: [\n        \"FDM och SLA-printing\",\n        \"Material f\u00f6r allt fr\u00e5n prototyp till funktionsdel\",\n        \"Efterbearbetning och ytbehandling\",\n        \"Snabba leveranstider\"\n      ]\n    },\n    produktutveckling: {\n      title: \"PRODUKTUTVECKLING\",\n      lead: \"Vi hj\u00e4lper dig genom hela utvecklingsresan \u2013 fr\u00e5n f\u00f6rsta id\u00e9 och konceptutveckling till en f\u00e4rdig, testad produkt redo f\u00f6r marknad eller produktion.\",\n      bullets: [\n        \"Konceptutveckling\",\n        \"Optimering inf\u00f6r serietillverkning\",\n        \"L\u00f6pande support genom hela projektet\"\n      ]\n    }\n  };\n\n  var overlay = document.getElementById('svcModalOverlay');\n  if(!overlay) return;\n  var titleEl = document.getElementById('svcModalTitle');\n  var leadEl = document.getElementById('svcModalLead');\n  var listEl = document.getElementById('svcModalList');\n  var closeBtn = document.getElementById('svcModalClose');\n  var lastFocused = null;\n\n  function openModal(key){\n    var data = (window.JW3D_SERVICES_I18N && window.JW3D_SERVICES_I18N[key]) || SERVICES[key];\n    if(!data) return;\n    titleEl.textContent = data.title;\n    leadEl.textContent = data.lead;\n    listEl.innerHTML = '';\n    data.bullets.forEach(function(b){\n      var li = document.createElement('li');\n      li.textContent = b;\n      listEl.appendChild(li);\n    });\n    lastFocused = document.activeElement;\n    overlay.classList.add('open');\n    document.body.style.overflow = 'hidden';\n    closeBtn.focus();\n  }\n  function closeModal(){\n    overlay.classList.remove('open');\n    document.body.style.overflow = '';\n    if(lastFocused && lastFocused.focus) lastFocused.focus();\n  }\n\n  document.querySelectorAll('.svc-more').forEach(function(btn){\n    btn.addEventListener('click', function(){ openModal(btn.getAttribute('data-service')); });\n  });\n  closeBtn.addEventListener('click', closeModal);\n  closeBtn.addEventListener('keydown', function(e){ if(e.key === 'Enter' || e.key === ' '){ e.preventDefault(); closeModal(); } });\n  overlay.addEventListener('click', function(e){ if(e.target === overlay) closeModal(); });\n  document.addEventListener('keydown', function(e){ if(e.key === 'Escape' && overlay.classList.contains('open')) closeModal(); });\n  var ctaBtn = document.getElementById('svcModalCta');\n  if(ctaBtn) ctaBtn.addEventListener('click', closeModal);\n})();\n<\/script>\n<script>\n(function(){\n  \"use strict\";\n  var overlay = document.getElementById('contactModalOverlay');\n  if(!overlay) return;\n  var closeBtn = document.getElementById('contactModalClose');\n  var form = document.getElementById('contactForm');\n  var statusEl = document.getElementById('cfStatus');\n  var submitBtn = document.getElementById('cfSubmitBtn');\n  var fileInput = document.getElementById('cfFile');\n  var fileLabel = document.getElementById('cfFileLabel');\n  var lastFocused = null;\n\n  function openModal(){\n    var svcOverlay = document.getElementById('svcModalOverlay');\n    if(svcOverlay && svcOverlay.classList.contains('open')){\n      svcOverlay.classList.remove('open');\n    }\n    lastFocused = document.activeElement;\n    overlay.classList.add('open');\n    document.body.style.overflow = 'hidden';\n    closeBtn.focus();\n  }\n  function closeModal(){\n    overlay.classList.remove('open');\n    document.body.style.overflow = '';\n    if(lastFocused && lastFocused.focus) lastFocused.focus();\n  }\n\n  document.querySelectorAll('.open-contact-modal').forEach(function(btn){\n    btn.addEventListener('click', function(e){ e.preventDefault(); openModal(); });\n  });\n  closeBtn.addEventListener('click', closeModal);\n  closeBtn.addEventListener('keydown', function(e){ if(e.key === 'Enter' || e.key === ' '){ e.preventDefault(); closeModal(); } });\n  overlay.addEventListener('click', function(e){ if(e.target === overlay) closeModal(); });\n  document.addEventListener('keydown', function(e){ if(e.key === 'Escape' && overlay.classList.contains('open')) closeModal(); });\n\n  function fileChooseText(){\n    try{ return window.JW3D_TRANSLATIONS[window.JW3D_LANG].contactModal.fileChoose; }catch(e){ return 'V\u00e4lj fil...'; }\n  }\n  function formStatusText(key, fallback){\n    try{ return window.JW3D_TRANSLATIONS[window.JW3D_LANG].formStatus[key] || fallback; }catch(e){ return fallback; }\n  }\n\n  if(fileInput && fileLabel){\n    fileInput.addEventListener('change', function(){\n      fileLabel.textContent = (fileInput.files && fileInput.files[0]) ? fileInput.files[0].name : fileChooseText();\n    });\n  }\n\n  if(form){\n    form.addEventListener('submit', function(e){\n      e.preventDefault();\n      statusEl.className = 'cf-status show';\n      statusEl.textContent = formStatusText('sending', 'Skickar...');\n      submitBtn.disabled = true;\n      var data = new FormData(form);\n      fetch(form.action, {\n        method: 'POST',\n        body: data\n      }).then(function(res){ return res.json(); }).then(function(json){\n        submitBtn.disabled = false;\n        if(json && json.success){\n          statusEl.className = 'cf-status show ok';\n          statusEl.textContent = formStatusText('success', 'Tack! Ditt meddelande har skickats. Vi \u00e5terkommer s\u00e5 snart vi kan.');\n          form.reset();\n          if(fileLabel) fileLabel.textContent = fileChooseText();\n          setTimeout(closeModal, 2200);\n        } else {\n          statusEl.className = 'cf-status show err';\n          statusEl.textContent = formStatusText('error', 'N\u00e5got gick fel. F\u00f6rs\u00f6k igen eller maila oss direkt p\u00e5 info@jw3d.fi.');\n        }\n      }).catch(function(){\n        submitBtn.disabled = false;\n        statusEl.className = 'cf-status show err';\n        statusEl.textContent = formStatusText('error', 'N\u00e5got gick fel. F\u00f6rs\u00f6k igen eller maila oss direkt p\u00e5 info@jw3d.fi.');\n      });\n    });\n  }\n})();\n<\/script>\n\n<script>\n(function(){\n  \"use strict\";\n  var TRANSLATIONS = {\"sv\":{\"docTitle\":\"JW3D Tech \u2014 Fr\u00e5n id\u00e9 till teknisk l\u00f6sning\",\"nav\":{\"hem\":\"HEM\",\"tjanster\":\"TJ\u00c4NSTER\",\"projekt\":\"PROJEKT\",\"om\":\"OM JW3D TECH\",\"kontakt\":\"KONTAKT\",\"cta\":\"Starta ett projekt\"},\"hero\":{\"titleHtml\":\"FR\u00c5N ID\u00c9<br\/>TILL TEKNISK<br\/><span class=\\\"blue\\\">L\u00d6SNING.<\/span>\",\"lead\":\"JW3D Tech erbjuder CAD-konstruktion, 3D-visualisering, tekniska ritningar, prototyptillverkning, 3D-printing och teknisk konsultverksamhet.\",\"cta1\":\"Starta ett projekt\",\"cta2\":\"V\u00e5ra tj\u00e4nster\"},\"features\":[{\"h4\":\"KONSTRUKTION\",\"p\":\"Precisa CAD-modeller och tekniska ritningar\"},{\"h4\":\"VISUALISERING\",\"p\":\"3D-visualisering som ger dina id\u00e9er liv\"},{\"h4\":\"PROTOTYP & PRINT\",\"p\":\"Prototyper genom 3D-printning i h\u00f6g kvalitet\"},{\"h4\":\"UTVECKLING\",\"p\":\"Produktutveckling och tekniska l\u00f6sningar\"}],\"process\":{\"heading\":\"HELA PROCESSEN \u2013 EN PARTNER\",\"steps\":[{\"h4\":\"KONCEPT\",\"p\":\"Du delar din id\u00e9 eller ditt problem med oss.\"},{\"h4\":\"KONSTRUKTION\",\"p\":\"Vi tar fram CAD-modeller och tekniska ritningar.\"},{\"h4\":\"VISUALISERING\",\"p\":\"3D-visualisering som visar funktion och design.\"},{\"h4\":\"PROTOTYP\",\"p\":\"Vi skapar fysiska prototyper med 3D-printing.\"},{\"h4\":\"UTVECKLING\",\"p\":\"Vi testar, f\u00f6rb\u00e4ttrar och tar produkten vidare.\"}]},\"servicesHeading\":\"V\u00c5RA TJ\u00c4NSTER\",\"svcCards\":[{\"h3\":\"CAD-KONSTRUKTION\",\"p\":\"Precisa 3D-modeller och konstruktioner f\u00f6r alla typer av projekt.\"},{\"h3\":\"TEKNISKA RITNINGAR\",\"p\":\"Detaljerade ritningar och dokumentation enligt branschstandard.\"},{\"h3\":\"3D-VISUALISERING\",\"p\":\"Fotorealistiska visualiseringar som g\u00f6r dina id\u00e9er tydliga.\"},{\"h3\":\"3D-PRINTING\",\"p\":\"H\u00f6gkvalitativ 3D-printing i olika material och tekniker.\"},{\"h3\":\"PRODUKTUTVECKLING\",\"p\":\"Vi hj\u00e4lper dig utveckla din produkt fr\u00e5n id\u00e9 till f\u00e4rdig l\u00f6sning.\"}],\"svcMoreLabel\":\"L\u00c4S MER\",\"projectsHeading\":\"SENASTE PROJEKT\",\"stats\":[{\"h4\":\"H\u00d6G KVALITET\",\"p\":\"Noggrannhet i varje detalj\"},{\"h4\":\"SNABBA LEDTIDER\",\"p\":\"Effektivt fr\u00e5n id\u00e9 till resultat\"},{\"h4\":\"FLEXIBLA L\u00d6SNINGAR\",\"p\":\"Anpassat efter dina behov\"},{\"h4\":\"TEKNISK EXPERTIS\",\"p\":\"Erfarenhet och kunskap\"}],\"cta\":{\"h2Line1\":\"HAR DU EN ID\u00c9?\",\"h2Line2\":\"L\u00c5T OSS G\u00d6RA DEN VERKLIG.\",\"p1\":\"Kontakta oss idag s\u00e5 tar vi din id\u00e9 till n\u00e4sta niv\u00e5.\",\"p2\":\"Ladda upp en skiss, ritning, foto eller CAD-fil och ber\u00e4tta kort vad vi kan hj\u00e4lpa dig med.\",\"button\":\"Kontakta oss\"},\"svcModalCtaLabel\":\"Kontakta oss\",\"ariaClose\":\"St\u00e4ng\",\"contactModal\":{\"title\":\"KONTAKTA OSS\",\"lead\":\"Fyll i formul\u00e4ret s\u00e5 \u00e5terkommer vi till dig s\u00e5 snart vi kan. Du kan \u00e4ven bifoga en skiss, ritning eller en tillf\u00e4llig CAD-fil.\",\"labelNamn\":\"Namn\",\"labelEpost\":\"E-post\",\"labelTelefon\":\"Telefon\",\"labelTyp\":\"Typ av projekt (valfritt)\",\"placeholderTyp\":\"T.ex. CAD-konstruktion, 3D-printing, prototyp...\",\"labelMeddelande\":\"Meddelande\",\"labelFil\":\"Skiss, ritning, foto, CAD-fil eller annat projektunderlag (valfritt)\",\"fileChoose\":\"V\u00e4lj fil...\",\"fileHint\":\"PDF, bild, DWG, DXF, STEP, IGES, STL eller SKP \u2013 max ca 5 MB.\",\"submit\":\"SKICKA\"},\"services\":{\"cad\":{\"title\":\"CAD-KONSTRUKTION\",\"lead\":\"Vi skapar precisa 3D-modeller och konstruktioner f\u00f6r alla typer av mekaniska komponenter och produkter \u2013 fr\u00e5n f\u00f6rsta skiss till en fullst\u00e4ndig, tillverkningsbar CAD-modell.\",\"bullets\":[\"3D-modellering av komponenter och sammans\u00e4ttningar\",\"Konstruktion anpassad f\u00f6r tillverkning (DFM)\",\"Toleransber\u00e4kningar och materialval\",\"Iterativ design utifr\u00e5n dina \u00f6nskem\u00e5l\"]},\"ritningar\":{\"title\":\"TEKNISKA RITNINGAR\",\"lead\":\"Vi tar fram tydliga, detaljerade ritningar och teknisk dokumentation enligt branschstandard, redo att skickas direkt till tillverkare eller underleverant\u00f6rer.\",\"bullets\":[\"M\u00e5ttsatta 2D-ritningar utifr\u00e5n 3D-modeller\",\"Toleranser och ytfinish enligt ISO-standard\",\"Sammanst\u00e4llningsritningar och styckelistor (BOM)\",\"Dokumentation anpassad f\u00f6r din tillverkningsprocess\"]},\"visualisering\":{\"title\":\"3D-VISUALISERING\",\"lead\":\"Vi skapar fotorealistiska visualiseringar som g\u00f6r din produkt eller id\u00e9 tydlig innan tillverkning \u2013 perfekt f\u00f6r presentationer, marknadsf\u00f6ring eller f\u00f6r att st\u00e4mma av design med kunder.\",\"bullets\":[\"Fotorealistisk rendering i olika material och milj\u00f6er\",\"Produktbilder f\u00f6r webb, sociala medier och offerter\",\"Animationer och vyer fr\u00e5n flera vinklar\",\"Snabb visualisering redan i konceptstadiet\"]},\"printing\":{\"title\":\"3D-PRINTING\",\"lead\":\"Vi erbjuder h\u00f6gkvalitativ 3D-printing i flera material och tekniker, fr\u00e5n snabba koncept-prototyper till funktionella slutdetaljer.\",\"bullets\":[\"FDM och SLA-printing\",\"Material f\u00f6r allt fr\u00e5n prototyp till funktionsdel\",\"Efterbearbetning och ytbehandling\",\"Snabba leveranstider\"]},\"produktutveckling\":{\"title\":\"PRODUKTUTVECKLING\",\"lead\":\"Vi hj\u00e4lper dig genom hela utvecklingsresan \u2013 fr\u00e5n f\u00f6rsta id\u00e9 och konceptutveckling till en f\u00e4rdig, testad produkt redo f\u00f6r marknad eller produktion.\",\"bullets\":[\"Konceptutveckling\",\"Optimering inf\u00f6r serietillverkning\",\"L\u00f6pande support genom hela projektet\"]}},\"footer\":{\"brandDesc\":\"JW3D Tech erbjuder tj\u00e4nster inom CAD-konstruktion, 3D-visualisering, tekniska ritningar, 3D-printing, prototyptillverkning, produktutveckling och teknisk konsultverksamhet.\",\"quickLinksHeading\":\"Snabbl\u00e4nkar\",\"quickLinks\":[\"Hem\",\"Tj\u00e4nster\",\"Projekt\",\"Om JW3D Tech\",\"Kontakt\"],\"servicesHeading\":\"Tj\u00e4nster\",\"servicesLinks\":[\"CAD-konstruktion\",\"Tekniska ritningar\",\"3D-visualisering\",\"3D-printing\",\"Produktutveckling\"],\"contactHeading\":\"Kontakt\",\"countryLabel\":\"Finland\",\"copyright\":\"\u00a9 2026 JW3D Tech Kb. Alla r\u00e4ttigheter f\u00f6rbeh\u00e5llna.\",\"privacy\":\"Integritetspolicy\",\"cookies\":\"Cookies\"},\"formStatus\":{\"sending\":\"Skickar...\",\"success\":\"Tack! Ditt meddelande har skickats. Vi \u00e5terkommer s\u00e5 snart vi kan.\",\"error\":\"N\u00e5got gick fel. F\u00f6rs\u00f6k igen eller maila oss direkt p\u00e5 info@jw3d.fi.\"}},\"fi\":{\"docTitle\":\"JW3D Tech \u2014 Ideasta tekniseen ratkaisuun\",\"nav\":{\"hem\":\"KOTI\",\"tjanster\":\"PALVELUT\",\"projekt\":\"PROJEKTIT\",\"om\":\"TIETOA MEIST\u00c4\",\"kontakt\":\"YHTEYSTIEDOT\",\"cta\":\"Aloita projekti\"},\"hero\":{\"titleHtml\":\"IDEASTA<br\/>TEKNISEKSI<br\/><span class=\\\"blue\\\">RATKAISUKSI.<\/span>\",\"lead\":\"JW3D Tech tarjoaa CAD-suunnittelua, 3D-visualisointia, teknisi\u00e4 piirustuksia, prototyyppien valmistusta, 3D-tulostusta ja teknist\u00e4 konsultointia.\",\"cta1\":\"Aloita projekti\",\"cta2\":\"Palvelumme\"},\"features\":[{\"h4\":\"SUUNNITTELU\",\"p\":\"Tarkat CAD-mallit ja tekniset piirustukset\"},{\"h4\":\"VISUALISOINTI\",\"p\":\"3D-visualisointi joka tuo ideasi eloon\"},{\"h4\":\"PROTOTYYPPI & TULOSTUS\",\"p\":\"Prototyyppej\u00e4 laadukkaalla 3D-tulostuksella\"},{\"h4\":\"KEHITYS\",\"p\":\"Tuotekehityst\u00e4 ja teknisi\u00e4 ratkaisuja\"}],\"process\":{\"heading\":\"KOKO PROSESSI \u2013 YKSI KUMPPANI\",\"steps\":[{\"h4\":\"KONSEPTI\",\"p\":\"Kerrot meille ideastasi tai ongelmastasi.\"},{\"h4\":\"SUUNNITTELU\",\"p\":\"Laadimme CAD-mallit ja tekniset piirustukset.\"},{\"h4\":\"VISUALISOINTI\",\"p\":\"3D-visualisointi joka n\u00e4ytt\u00e4\u00e4 toiminnan ja muotoilun.\"},{\"h4\":\"PROTOTYYPPI\",\"p\":\"Valmistamme fyysisi\u00e4 prototyyppej\u00e4 3D-tulostuksella.\"},{\"h4\":\"KEHITYS\",\"p\":\"Testaamme, parannamme ja viemme tuotetta eteenp\u00e4in.\"}]},\"servicesHeading\":\"PALVELUMME\",\"svcCards\":[{\"h3\":\"CAD-SUUNNITTELU\",\"p\":\"Tarkat 3D-mallit ja rakenteet kaikenlaisiin projekteihin.\"},{\"h3\":\"TEKNISET PIIRUSTUKSET\",\"p\":\"Yksityiskohtaiset piirustukset ja dokumentaatio alan standardien mukaisesti.\"},{\"h3\":\"3D-VISUALISOINTI\",\"p\":\"Fotorealistiset visualisoinnit jotka tekev\u00e4t ideoistasi selkeit\u00e4.\"},{\"h3\":\"3D-TULOSTUS\",\"p\":\"Korkealaatuinen 3D-tulostus eri materiaaleilla ja tekniikoilla.\"},{\"h3\":\"TUOTEKEHITYS\",\"p\":\"Autamme sinua kehitt\u00e4m\u00e4\u00e4n tuotteesi ideasta valmiiksi ratkaisuksi.\"}],\"svcMoreLabel\":\"LUE LIS\u00c4\u00c4\",\"projectsHeading\":\"VIIMEISIMM\u00c4T PROJEKTIT\",\"stats\":[{\"h4\":\"KORKEA LAATU\",\"p\":\"Huolellisuutta jokaisessa yksityiskohdassa\"},{\"h4\":\"NOPEAT TOIMITUSAJAT\",\"p\":\"Tehokkaasti ideasta tulokseen\"},{\"h4\":\"JOUSTAVAT RATKAISUT\",\"p\":\"R\u00e4\u00e4t\u00e4l\u00f6ity tarpeidesi mukaan\"},{\"h4\":\"TEKNINEN ASIANTUNTEMUS\",\"p\":\"Kokemusta ja osaamista\"}],\"cta\":{\"h2Line1\":\"ONKO SINULLA IDEA?\",\"h2Line2\":\"TEHD\u00c4\u00c4N SIIT\u00c4 TOTTA.\",\"p1\":\"Ota yhteytt\u00e4 jo t\u00e4n\u00e4\u00e4n, niin viemme ideasi seuraavalle tasolle.\",\"p2\":\"Lataa luonnos, piirustus, valokuva tai CAD-tiedosto ja kerro lyhyesti, miss\u00e4 voimme auttaa.\",\"button\":\"Ota yhteytt\u00e4\"},\"svcModalCtaLabel\":\"Ota yhteytt\u00e4\",\"ariaClose\":\"Sulje\",\"contactModal\":{\"title\":\"OTA YHTEYTT\u00c4\",\"lead\":\"T\u00e4yt\u00e4 lomake, niin palaamme asiaan mahdollisimman pian. Voit my\u00f6s liitt\u00e4\u00e4 luonnoksen, piirustuksen tai alustavan CAD-tiedoston.\",\"labelNamn\":\"Nimi\",\"labelEpost\":\"S\u00e4hk\u00f6posti\",\"labelTelefon\":\"Puhelin\",\"labelTyp\":\"Projektin tyyppi (valinnainen)\",\"placeholderTyp\":\"Esim. CAD-suunnittelu, 3D-tulostus, prototyyppi...\",\"labelMeddelande\":\"Viesti\",\"labelFil\":\"Luonnos, piirustus, valokuva, CAD-tiedosto tai muu projektiaineisto (valinnainen)\",\"fileChoose\":\"Valitse tiedosto...\",\"fileHint\":\"PDF, kuva, DWG, DXF, STEP, IGES, STL tai SKP \u2013 enint\u00e4\u00e4n n. 5 Mt.\",\"submit\":\"L\u00c4HET\u00c4\"},\"services\":{\"cad\":{\"title\":\"CAD-SUUNNITTELU\",\"lead\":\"Luomme tarkkoja 3D-malleja ja rakenteita kaikenlaisiin mekaanisiin komponentteihin ja tuotteisiin \u2013 ensimm\u00e4isest\u00e4 luonnoksesta valmiiseen, valmistuskelpoiseen CAD-malliin.\",\"bullets\":[\"Komponenttien ja kokoonpanojen 3D-mallinnus\",\"Valmistukseen optimoitu suunnittelu (DFM)\",\"Toleranssilaskenta ja materiaalivalinta\",\"Iteratiivinen suunnittelu toiveidesi mukaan\"]},\"ritningar\":{\"title\":\"TEKNISET PIIRUSTUKSET\",\"lead\":\"Laadimme selke\u00e4t, yksityiskohtaiset piirustukset ja teknisen dokumentaation alan standardien mukaisesti, valmiina l\u00e4hetett\u00e4v\u00e4ksi suoraan valmistajille tai alihankkijoille.\",\"bullets\":[\"Mitoitetut 2D-piirustukset 3D-malleista\",\"Toleranssit ja pinnank\u00e4sittely ISO-standardin mukaisesti\",\"Kokoonpanopiirustukset ja osaluettelot (BOM)\",\"Valmistusprosessiisi r\u00e4\u00e4t\u00e4l\u00f6ity dokumentaatio\"]},\"visualisering\":{\"title\":\"3D-VISUALISOINTI\",\"lead\":\"Luomme fotorealistisia visualisointeja, jotka tekev\u00e4t tuotteestasi tai ideastasi selke\u00e4n ennen valmistusta \u2013 t\u00e4ydellinen esityksiin, markkinointiin tai suunnittelun l\u00e4pik\u00e4yntiin asiakkaiden kanssa.\",\"bullets\":[\"Fotorealistinen render\u00f6inti eri materiaaleilla ja ymp\u00e4rist\u00f6iss\u00e4\",\"Tuotekuvat verkkoon, someen ja tarjouksiin\",\"Animaatiot ja n\u00e4kym\u00e4t useista kulmista\",\"Nopea visualisointi jo konseptivaiheessa\"]},\"printing\":{\"title\":\"3D-TULOSTUS\",\"lead\":\"Tarjoamme korkealaatuista 3D-tulostusta useilla materiaaleilla ja tekniikoilla, nopeista konseptiprototyypeist\u00e4 toimiviin lopputuotteisiin.\",\"bullets\":[\"FDM- ja SLA-tulostus\",\"Materiaaleja prototyypist\u00e4 toiminnallisiin osiin\",\"J\u00e4lkik\u00e4sittely ja pinnoitus\",\"Nopeat toimitusajat\"]},\"produktutveckling\":{\"title\":\"TUOTEKEHITYS\",\"lead\":\"Autamme sinua koko kehitysmatkan ajan \u2013 ensimm\u00e4isest\u00e4 ideasta ja konseptikehityksest\u00e4 valmiiseen, testattuun tuotteeseen, joka on valmis markkinoille tai tuotantoon.\",\"bullets\":[\"Konseptikehitys\",\"Optimointi sarjatuotantoa varten\",\"Jatkuva tuki koko projektin ajan\"]}},\"footer\":{\"brandDesc\":\"JW3D Tech tarjoaa palveluita CAD-suunnittelun, 3D-visualisoinnin, teknisten piirustusten, 3D-tulostuksen, prototyyppien valmistuksen, tuotekehityksen ja teknisen konsultoinnin alueilla.\",\"quickLinksHeading\":\"Pikalinkit\",\"quickLinks\":[\"Koti\",\"Palvelut\",\"Projektit\",\"Tietoa meist\u00e4\",\"Yhteystiedot\"],\"servicesHeading\":\"Palvelut\",\"servicesLinks\":[\"CAD-suunnittelu\",\"Tekniset piirustukset\",\"3D-visualisointi\",\"3D-tulostus\",\"Tuotekehitys\"],\"contactHeading\":\"Yhteystiedot\",\"countryLabel\":\"Suomi\",\"copyright\":\"\u00a9 2026 JW3D Tech Kb. Kaikki oikeudet pid\u00e4tet\u00e4\u00e4n.\",\"privacy\":\"Tietosuojak\u00e4yt\u00e4nt\u00f6\",\"cookies\":\"Ev\u00e4steet\"},\"formStatus\":{\"sending\":\"L\u00e4hetet\u00e4\u00e4n...\",\"success\":\"Kiitos! Viestisi on l\u00e4hetetty. Palaamme asiaan mahdollisimman pian.\",\"error\":\"Jokin meni pieleen. Yrit\u00e4 uudelleen tai l\u00e4het\u00e4 s\u00e4hk\u00f6postia suoraan osoitteeseen info@jw3d.fi.\"}},\"en\":{\"docTitle\":\"JW3D Tech \u2014 From Idea to Technical Solution\",\"nav\":{\"hem\":\"HOME\",\"tjanster\":\"SERVICES\",\"projekt\":\"PROJECTS\",\"om\":\"ABOUT JW3D TECH\",\"kontakt\":\"CONTACT\",\"cta\":\"Start a project\"},\"hero\":{\"titleHtml\":\"FROM IDEA<br\/>TO TECHNICAL<br\/><span class=\\\"blue\\\">SOLUTION.<\/span>\",\"lead\":\"JW3D Tech offers CAD design, 3D visualization, technical drawings, prototype manufacturing, 3D printing and technical consulting.\",\"cta1\":\"Start a project\",\"cta2\":\"Our services\"},\"features\":[{\"h4\":\"DESIGN\",\"p\":\"Precise CAD models and technical drawings\"},{\"h4\":\"VISUALIZATION\",\"p\":\"3D visualization that brings your ideas to life\"},{\"h4\":\"PROTOTYPE & PRINT\",\"p\":\"Prototypes through high-quality 3D printing\"},{\"h4\":\"DEVELOPMENT\",\"p\":\"Product development and technical solutions\"}],\"process\":{\"heading\":\"THE WHOLE PROCESS \u2013 ONE PARTNER\",\"steps\":[{\"h4\":\"CONCEPT\",\"p\":\"You share your idea or challenge with us.\"},{\"h4\":\"DESIGN\",\"p\":\"We create CAD models and technical drawings.\"},{\"h4\":\"VISUALIZATION\",\"p\":\"3D visualization showing function and design.\"},{\"h4\":\"PROTOTYPE\",\"p\":\"We create physical prototypes with 3D printing.\"},{\"h4\":\"DEVELOPMENT\",\"p\":\"We test, refine and take the product forward.\"}]},\"servicesHeading\":\"OUR SERVICES\",\"svcCards\":[{\"h3\":\"CAD DESIGN\",\"p\":\"Precise 3D models and constructions for all types of projects.\"},{\"h3\":\"TECHNICAL DRAWINGS\",\"p\":\"Detailed drawings and documentation according to industry standards.\"},{\"h3\":\"3D VISUALIZATION\",\"p\":\"Photorealistic visualizations that make your ideas clear.\"},{\"h3\":\"3D PRINTING\",\"p\":\"High-quality 3D printing in various materials and techniques.\"},{\"h3\":\"PRODUCT DEVELOPMENT\",\"p\":\"We help you develop your product from idea to finished solution.\"}],\"svcMoreLabel\":\"READ MORE\",\"projectsHeading\":\"LATEST PROJECTS\",\"stats\":[{\"h4\":\"HIGH QUALITY\",\"p\":\"Attention to detail in everything we do\"},{\"h4\":\"FAST TURNAROUND\",\"p\":\"Efficient from idea to result\"},{\"h4\":\"FLEXIBLE SOLUTIONS\",\"p\":\"Tailored to your needs\"},{\"h4\":\"TECHNICAL EXPERTISE\",\"p\":\"Experience and know-how\"}],\"cta\":{\"h2Line1\":\"HAVE AN IDEA?\",\"h2Line2\":\"LET'S MAKE IT REAL.\",\"p1\":\"Contact us today and we'll take your idea to the next level.\",\"p2\":\"Upload a sketch, drawing, photo or CAD file and briefly tell us what you need help with.\",\"button\":\"Contact us\"},\"svcModalCtaLabel\":\"Contact us\",\"ariaClose\":\"Close\",\"contactModal\":{\"title\":\"CONTACT US\",\"lead\":\"Fill in the form and we'll get back to you as soon as we can. You can also attach a sketch, drawing or a preliminary CAD file.\",\"labelNamn\":\"Name\",\"labelEpost\":\"Email\",\"labelTelefon\":\"Phone\",\"labelTyp\":\"Type of project (optional)\",\"placeholderTyp\":\"E.g. CAD design, 3D printing, prototype...\",\"labelMeddelande\":\"Message\",\"labelFil\":\"Sketch, drawing, photo, CAD file or other project material (optional)\",\"fileChoose\":\"Choose file...\",\"fileHint\":\"PDF, image, DWG, DXF, STEP, IGES, STL or SKP \u2013 max approx. 5 MB.\",\"submit\":\"SEND\"},\"services\":{\"cad\":{\"title\":\"CAD DESIGN\",\"lead\":\"We create precise 3D models and constructions for all types of mechanical components and products \u2013 from the first sketch to a complete, manufacturable CAD model.\",\"bullets\":[\"3D modeling of components and assemblies\",\"Design for manufacturing (DFM)\",\"Tolerance calculations and material selection\",\"Iterative design based on your requirements\"]},\"ritningar\":{\"title\":\"TECHNICAL DRAWINGS\",\"lead\":\"We produce clear, detailed drawings and technical documentation according to industry standards, ready to send directly to manufacturers or subcontractors.\",\"bullets\":[\"Dimensioned 2D drawings based on 3D models\",\"Tolerances and surface finish per ISO standards\",\"Assembly drawings and bills of materials (BOM)\",\"Documentation tailored to your manufacturing process\"]},\"visualisering\":{\"title\":\"3D VISUALIZATION\",\"lead\":\"We create photorealistic visualizations that make your product or idea clear before manufacturing \u2013 perfect for presentations, marketing, or aligning design with customers.\",\"bullets\":[\"Photorealistic rendering in different materials and settings\",\"Product images for web, social media and quotes\",\"Animations and views from multiple angles\",\"Fast visualization already at the concept stage\"]},\"printing\":{\"title\":\"3D PRINTING\",\"lead\":\"We offer high-quality 3D printing in multiple materials and techniques, from quick concept prototypes to functional end parts.\",\"bullets\":[\"FDM and SLA printing\",\"Materials for everything from prototypes to functional parts\",\"Post-processing and surface finishing\",\"Fast turnaround times\"]},\"produktutveckling\":{\"title\":\"PRODUCT DEVELOPMENT\",\"lead\":\"We support you through the entire development journey \u2013 from the first idea and concept development to a finished, tested product ready for market or production.\",\"bullets\":[\"Concept development\",\"Optimization for series production\",\"Ongoing support throughout the project\"]}},\"footer\":{\"brandDesc\":\"JW3D Tech offers services within CAD design, 3D visualization, technical drawings, 3D printing, prototype manufacturing, product development and technical consulting.\",\"quickLinksHeading\":\"Quick links\",\"quickLinks\":[\"Home\",\"Services\",\"Projects\",\"About JW3D Tech\",\"Contact\"],\"servicesHeading\":\"Services\",\"servicesLinks\":[\"CAD design\",\"Technical drawings\",\"3D visualization\",\"3D printing\",\"Product development\"],\"contactHeading\":\"Contact\",\"countryLabel\":\"Finland\",\"copyright\":\"\u00a9 2026 JW3D Tech Kb. All rights reserved.\",\"privacy\":\"Privacy Policy\",\"cookies\":\"Cookies\"},\"formStatus\":{\"sending\":\"Sending...\",\"success\":\"Thank you! Your message has been sent. We'll get back to you as soon as we can.\",\"error\":\"Something went wrong. Please try again or email us directly at info@jw3d.fi.\"}}};\n\n  function setLabel(inputId, text, required){\n    var label = document.querySelector('label[for=\"'+inputId+'\"]');\n    if(!label) return;\n    if(required){\n      label.innerHTML = text + ' <span class=\"req\">*<\/span>';\n    } else {\n      label.textContent = text;\n    }\n  }\n\n  function applyLang(lang){\n    var t = TRANSLATIONS[lang];\n    if(!t) return;\n    document.documentElement.setAttribute('lang', lang);\n    document.title = t.docTitle;\n\n    var navKeys = ['hem','tjanster','projekt','om','kontakt'];\n    document.querySelectorAll('#nav .nav-links a').forEach(function(a,i){\n      if(navKeys[i]) a.textContent = t.nav[navKeys[i]];\n    });\n    var navCta = document.getElementById('navCtaBtn');\n    if(navCta) navCta.textContent = t.nav.cta;\n\n    var heroH1 = document.querySelector('.hero h1');\n    if(heroH1) heroH1.innerHTML = t.hero.titleHtml;\n    var heroLead = document.querySelector('.hero .lead');\n    if(heroLead) heroLead.textContent = t.hero.lead;\n    var heroActions = document.querySelectorAll('.hero-actions a');\n    if(heroActions[0]) heroActions[0].textContent = t.hero.cta1;\n    if(heroActions[1]) heroActions[1].textContent = t.hero.cta2;\n\n    document.querySelectorAll('.feature-item').forEach(function(el,i){\n      var f = t.features[i]; if(!f) return;\n      var h4 = el.querySelector('h4'), p = el.querySelector('p');\n      if(h4) h4.textContent = f.h4;\n      if(p) p.textContent = f.p;\n    });\n\n    var processHeading = document.querySelector('.process .section-tag h2');\n    if(processHeading) processHeading.textContent = t.process.heading;\n    document.querySelectorAll('.process-step').forEach(function(el,i){\n      var s = t.process.steps[i]; if(!s) return;\n      var h4 = el.querySelector('h4'), p = el.querySelector('p');\n      if(h4) h4.innerHTML = '<span class=\"process-dot\"><\/span>' + s.h4;\n      if(p) p.textContent = s.p;\n    });\n\n    var svcHeading = document.querySelector('#tjanster .section-tag h2');\n    if(svcHeading) svcHeading.textContent = t.servicesHeading;\n    document.querySelectorAll('.svc-card').forEach(function(el,i){\n      var c = t.svcCards[i]; if(!c) return;\n      var h3 = el.querySelector('h3'), p = el.querySelector('p'), more = el.querySelector('.svc-more');\n      if(h3) h3.textContent = c.h3;\n      if(p) p.textContent = c.p;\n      if(more){\n        var svg = more.querySelector('svg');\n        more.textContent = t.svcMoreLabel + ' ';\n        if(svg) more.appendChild(svg);\n      }\n    });\n\n    var projHeading = document.querySelector('#projekt .section-tag h2');\n    if(projHeading) projHeading.textContent = t.projectsHeading;\n\n    document.querySelectorAll('.stat-item').forEach(function(el,i){\n      var s = t.stats[i]; if(!s) return;\n      var h4 = el.querySelector('h4'), p = el.querySelector('p');\n      if(h4) h4.textContent = s.h4;\n      if(p) p.textContent = s.p;\n    });\n\n    var ctaH2 = document.querySelector('.cta-text h2');\n    if(ctaH2) ctaH2.innerHTML = t.cta.h2Line1 + '<br\/>' + t.cta.h2Line2;\n    var ctaPs = document.querySelectorAll('.cta-text p');\n    if(ctaPs[0]) ctaPs[0].innerHTML = t.cta.p1 + '<br\/>' + t.cta.p2;\n    var ctaBtn = document.querySelector('.cta-text a.btn-primary');\n    if(ctaBtn) ctaBtn.textContent = t.cta.button;\n\n    var svcModalCta = document.getElementById('svcModalCta');\n    if(svcModalCta) svcModalCta.textContent = t.svcModalCtaLabel;\n    document.querySelectorAll('.svc-modal-close').forEach(function(el){ el.setAttribute('aria-label', t.ariaClose); });\n\n    var cmTitle = document.getElementById('contactModalTitle');\n    if(cmTitle) cmTitle.textContent = t.contactModal.title;\n    var cmLead = document.querySelector('#contactModalOverlay .svc-modal-lead');\n    if(cmLead) cmLead.textContent = t.contactModal.lead;\n\n    setLabel('cfName', t.contactModal.labelNamn, true);\n    setLabel('cfEmail', t.contactModal.labelEpost, true);\n    setLabel('cfPhone', t.contactModal.labelTelefon, false);\n    setLabel('cfProject', t.contactModal.labelTyp, false);\n    setLabel('cfMessage', t.contactModal.labelMeddelande, true);\n    setLabel('cfFile', t.contactModal.labelFil, false);\n\n    var projectInput = document.getElementById('cfProject');\n    if(projectInput) projectInput.setAttribute('placeholder', t.contactModal.placeholderTyp);\n    var fileLabelSpan = document.getElementById('cfFileLabel');\n    if(fileLabelSpan) fileLabelSpan.textContent = t.contactModal.fileChoose;\n    var fileHint = document.querySelector('.cf-hint');\n    if(fileHint) fileHint.textContent = t.contactModal.fileHint;\n    var cfSubmitBtn = document.getElementById('cfSubmitBtn');\n    if(cfSubmitBtn) cfSubmitBtn.textContent = t.contactModal.submit;\n\n    var footBrandP = document.querySelector('.foot-brand > p');\n    if(footBrandP) footBrandP.textContent = t.footer.brandDesc;\n    var footCols = document.querySelectorAll('.foot-col');\n    if(footCols[0]){\n      var h5a = footCols[0].querySelector('h5'); if(h5a) h5a.textContent = t.footer.quickLinksHeading;\n      footCols[0].querySelectorAll('a').forEach(function(a,i){ if(t.footer.quickLinks[i]) a.textContent = t.footer.quickLinks[i]; });\n    }\n    if(footCols[1]){\n      var h5b = footCols[1].querySelector('h5'); if(h5b) h5b.textContent = t.footer.servicesHeading;\n      footCols[1].querySelectorAll('a').forEach(function(a,i){ if(t.footer.servicesLinks[i]) a.textContent = t.footer.servicesLinks[i]; });\n    }\n    if(footCols[2]){\n      var h5c = footCols[2].querySelector('h5'); if(h5c) h5c.textContent = t.footer.contactHeading;\n      var contactItems = footCols[2].querySelectorAll('.foot-contact-item');\n      if(contactItems[2]){\n        var svgEl = contactItems[2].querySelector('svg');\n        contactItems[2].textContent = t.footer.countryLabel;\n        if(svgEl) contactItems[2].insertBefore(svgEl, contactItems[2].firstChild);\n      }\n    }\n    var footBottomSpan = document.querySelector('.foot-bottom > span:first-child');\n    if(footBottomSpan) footBottomSpan.textContent = t.footer.copyright;\n    var footBottomLinks = document.querySelectorAll('.foot-bottom > span:last-child a');\n    if(footBottomLinks[0]) footBottomLinks[0].textContent = t.footer.privacy;\n    if(footBottomLinks[1]) footBottomLinks[1].textContent = t.footer.cookies;\n\n    window.JW3D_SERVICES_I18N = t.services;\n    window.JW3D_TRANSLATIONS = TRANSLATIONS;\n    window.JW3D_LANG = lang;\n\n    var current = document.getElementById('langSwitchCurrent');\n    if(current) current.textContent = lang.toUpperCase();\n    document.querySelectorAll('.lang-switch-option').forEach(function(btn){\n      btn.classList.toggle('active', btn.getAttribute('data-lang') === lang);\n    });\n\n    try{ localStorage.setItem('jw3d_lang', lang); }catch(e){}\n  }\n\n  window.JW3D_TRANSLATIONS = TRANSLATIONS;\n\n  var switchEl = document.getElementById('langSwitch');\n  var switchBtn = document.getElementById('langSwitchBtn');\n  var switchMenu = document.getElementById('langSwitchMenu');\n  if(switchEl && switchBtn && switchMenu){\n    switchBtn.addEventListener('click', function(e){\n      e.stopPropagation();\n      var isOpen = switchEl.classList.toggle('open');\n      switchBtn.setAttribute('aria-expanded', isOpen ? 'true' : 'false');\n    });\n    document.querySelectorAll('.lang-switch-option').forEach(function(opt){\n      opt.addEventListener('click', function(){\n        applyLang(opt.getAttribute('data-lang'));\n        switchEl.classList.remove('open');\n        switchBtn.setAttribute('aria-expanded', 'false');\n      });\n    });\n    document.addEventListener('click', function(e){\n      if(!switchEl.contains(e.target)){\n        switchEl.classList.remove('open');\n        switchBtn.setAttribute('aria-expanded', 'false');\n      }\n    });\n    document.addEventListener('keydown', function(e){\n      if(e.key === 'Escape'){\n        switchEl.classList.remove('open');\n        switchBtn.setAttribute('aria-expanded', 'false');\n      }\n    });\n  }\n\n  var savedLang = 'sv';\n  try{\n    var stored = localStorage.getItem('jw3d_lang');\n    if(stored && TRANSLATIONS[stored]) savedLang = stored;\n  }catch(e){}\n  applyLang(savedLang);\n})();\n<\/script>\n<script>\n(function(){\n  var favSrc = \"https:\/\/jw3d.fi\/wp-content\/uploads\/2026\/09\/jw3d-favicon.png\";\n  [\n    {rel:\"icon\", sizes:\"128x128\"},\n    {rel:\"shortcut icon\"},\n    {rel:\"apple-touch-icon\"}\n  ].forEach(function(cfg){\n    var link = document.createElement('link');\n    link.rel = cfg.rel;\n    if(cfg.sizes) link.sizes = cfg.sizes;\n    link.href = favSrc;\n    document.head.appendChild(link);\n  });\n\n  var navLogoImg = document.getElementById('jw3dNavLogoImg');\n  var footLogoImg = document.getElementById('jw3dFootLogoImg');\n  if(navLogoImg && footLogoImg){\n    footLogoImg.src = navLogoImg.src;\n  }\n})();\n<\/script>\n<\/body>\n<\/html>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>JW3D Tech \u2014 Fr\u00e5n id\u00e9 till teknisk l\u00f6sning TECH SV Svenska Suomi English HEM TJ\u00c4NSTER PROJEKT OM JW3D TECH KONTAKT Starta ett projekt FR\u00c5N ID\u00c9TILL TEKNISKL\u00d6SNING. JW3D Tech erbjuder CAD-konstruktion, 3D-visualisering, tekniska ritningar, prototyptillverkning, 3D-printing och teknisk konsultverksamhet. Starta ett projekt V\u00e5ra tj\u00e4nster KONSTRUKTION Precisa CAD-modeller och tekniska ritningar VISUALISERING 3D-visualisering som ger dina id\u00e9er<a class=\"more-link\" href=\"https:\/\/jw3d.fi\/\">Forts\u00e4tt l\u00e4sa <span class=\"screen-reader-text\">&#8221;JW3D Tech&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-37","page","type-page","status-publish","hentry","entry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/pages\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jw3d.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=37"}],"version-history":[{"count":81,"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/pages\/37\/revisions"}],"predecessor-version":[{"id":164,"href":"https:\/\/jw3d.fi\/index.php?rest_route=\/wp\/v2\/pages\/37\/revisions\/164"}],"wp:attachment":[{"href":"https:\/\/jw3d.fi\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}