EN
EL
DTAutomation
From Code to Commissioning
(function() { function scaleP1() { var panel = document.getElementById('dta-p1-panel'); var name = document.getElementById('dta-p1-name'); var sub = document.getElementById('dta-p1-sub'); var logo = document.getElementById('dta-p1-logo'); var profile = document.getElementById('dta-p1-profile'); if (!panel || !name) return; var w = panel.offsetWidth; if (w >= 500) { var scale = w / 800; var namePx = Math.min(52, Math.max(16, Math.round(52 * scale))); var subPx = Math.min(26, Math.max(11, Math.round(26 * scale))); var assetPx = Math.min(120, Math.max(55, Math.round(120 * scale))); var langPx = Math.min(13, Math.max(9, Math.round(13 * scale))); document.querySelectorAll('.dta-p1-lang-btn').forEach(function(b) { b.style.setProperty('font-size', langPx + 'px', 'important'); }); name.style.setProperty('max-height', namePx + 'px', 'important'); name.style.setProperty('max-width', '100%', 'important'); name.style.setProperty('height', 'auto', 'important'); sub.style.setProperty('font-size', subPx + 'px', 'important'); logo.style.setProperty('height', assetPx + 'px', 'important'); profile.style.setProperty('width', assetPx + 'px', 'important'); profile.style.setProperty('height', assetPx + 'px', 'important'); } else { name.style.removeProperty('max-height'); name.style.removeProperty('max-width'); name.style.removeProperty('height'); sub.style.removeProperty('font-size'); logo.style.removeProperty('height'); profile.style.removeProperty('width'); profile.style.removeProperty('height'); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scaleP1); } else { scaleP1(); } window.addEventListener('resize', scaleP1); setTimeout(scaleP1, 300); setTimeout(scaleP1, 800); /* ── DTA CONFIG LINKS ── */ function applyConfig() { var cfg = window.dtaConfig || {}; var logoLink = document.getElementById('dta-p1-logo-link'); var profileLink = document.getElementById('dta-p1-profile-link'); var personLink = document.getElementById('dta-p1-person-link'); if (logoLink) logoLink.href = 'mailto:' + (cfg.emailInfo || '[email protected]'); if (profileLink) profileLink.href = cfg.linkedin || 'https://www.linkedin.com/in/dimitrios-tsiolchas/'; if (personLink) personLink.href = 'mailto:' + (cfg.emailPersonal || '[email protected]'); } applyConfig(); setTimeout(applyConfig, 500); })();
13.5+Years ExperienceIndustrial Control
& Automation
6+Years ExperienceIndustrial Embedded
Electronic Systems
43+Projects Delivered
≈ 0FAT/SAT Surprises
EURemote
& On-Site
≈ 0FAT/SAT Surprises
EURemote
& On-Site

PLC
PLC
i
HMI
HMI
i
SCADA
SCADA
i
Robotics
Robotics
i
Motion
Motion
i
Robotics
Robotics
i
Motion
Motion
i
Who Am I

I'm Dimitrios Tsiolchas — a Senior Automation Engineer based in Thessaloniki — Greece, available for freelance and contract work across the EU. Finding an engineer who can handle the full project lifecycle — from concept to commissioning — without surprises is rare. That is exactly what I deliver.

With 13.5+ years across PLC, HMI, SCADA, Robotics & Advanced Motion Control, I take full ownership of the entire engineering process — design, integration, programming and FAT/SAT commissioning. I don't hand off problems. I solve them.

Available · Freelance · Contract · Remote · On-Site · EU
What Others Say
Evangelos Katsos
Evangelos Katsos
Head of Electrical and Automation Facilities · AKTOR SA
Sep 2019

It was a great experience for me to work together with Dimitrios and I learned a lot during our cooperation.

Dimitrios is a passionate, yet a self-motivated senior engineer as well, who is specialized in Control and Automation Application Projects, while during the time we jointly collaborated, he attained expertise in the field of Automated Wastewater Treatment Plants.

Key strengths, which I distinguish, include, a dynamic cognitive background, proven competency of effective communication, as well as fast adaptation in diverse technical business environments.

Most importantly, not only he demonstrates in-depth engineering experience in large scale Automation Projects, in programming of PLC and SCADA, in Networking and FieldBus Communications and in VFD applications, but he effectively administers exploitation of available resources and creative problem solving, through abstract, lateral and concrete thinking, as well.

I'm looking forward collaborating with him on a future project!

Alexander Astaras
Alexander Astaras
Assistant Professor · ACT & Research Associate · AUTH
Sep 2011

Dimitrios is a bright, innovative and hard-working automation engineer. I have been his teacher in digital electronics and also supervised his final year project. He aced both my undergraduate courses, while during his project he demonstrated his ability to take an engineering challenge from a paper napkin sketch to a fully tested, documented and working electronics system. During the project he also proved that he can generate and fulfill design requirements, prepare a realistic Gantt chart and stick to its deadlines, foresee future problems and take action ahead of time, as well as take mishaps in stride. He is a well mannered team player and collaborating with him has been a joy.

(function() { /* ── PILL SCALING ── */ function scalePill() { var pill = document.getElementById('dta-p3-pill'); var text = document.getElementById('dta-p3-pill-text'); if (!pill || !text) return; text.style.fontSize = ''; var pillW = pill.offsetWidth; var available = pillW - 60; text.style.fontSize = '15px'; var textW = text.scrollWidth; if (textW > available) { var ratio = available / textW; var newSize = Math.max(9, Math.floor(15 * ratio)); text.style.setProperty('font-size', newSize + 'px', 'important'); } else { text.style.setProperty('font-size', '15px', 'important'); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scalePill); } else { scalePill(); } window.addEventListener('resize', scalePill); setTimeout(scalePill, 300); setTimeout(scalePill, 800); /* ── ACCORDION ── */ var accordion = document.getElementById('dta-p3-ref-accordion'); var toggle = document.getElementById('dta-p3-ref-toggle'); if (toggle && accordion) { toggle.addEventListener('click', function() { accordion.classList.toggle('open'); }); } /* ── SLIDER ── */ var track = document.getElementById('dta-p3-ref-track'); var current = 0; var total = 2; function goTo(idx) { current = idx; if (track) track.style.transform = 'translateX(-' + (current * 100) + '%)'; var prevBtns = [document.getElementById('dta-p3-btn-prev'), document.getElementById('dta-p3-btn-prev2')]; var nextBtns = [document.getElementById('dta-p3-btn-next'), document.getElementById('dta-p3-btn-next2')]; prevBtns.forEach(function(b) { if (!b) return; current === 0 ? b.classList.add('hidden') : b.classList.remove('hidden'); }); nextBtns.forEach(function(b) { if (!b) return; current === total - 1 ? b.classList.add('hidden') : b.classList.remove('hidden'); }); var counter = document.getElementById('dta-p3-counter'); if (counter) counter.textContent = (current + 1) + ' / ' + total; } ['dta-p3-btn-next', 'dta-p3-btn-next2'].forEach(function(id) { var btn = document.getElementById(id); if (btn) btn.addEventListener('click', function() { if (current < total - 1) goTo(current + 1); }); }); ['dta-p3-btn-prev', 'dta-p3-btn-prev2'].forEach(function(id) { var btn = document.getElementById(id); if (btn) btn.addEventListener('click', function() { if (current > 0) goTo(current - 1); }); }); /* reset to card 1 on accordion close */ if (accordion) { var obs = new MutationObserver(function() { if (!accordion.classList.contains('open')) { goTo(0); } }); obs.observe(accordion, { attributes: true, attributeFilter: ['class'] }); } /* outside click to close accordion */ document.addEventListener('click', function(e) { if (!accordion || !accordion.classList.contains('open')) return; var panel = document.getElementById('dta-p3-panel'); if (panel && panel.contains(e.target)) return; accordion.classList.remove('open'); }); /* expose close function for Panel 2 to call before dimming */ window.dtaP3CloseAccordion = function() { if (accordion) accordion.classList.remove('open'); }; })();
Services
  • ⚙️⚙️
    End-to-End Industrial Automation System Development

    From initial concept — including Applied R&D — to complete PLC, HMI, SCADA, Robotics & Motion programming and system integration using Mitsubishi MELSEC & Siemens SIMATIC — platforms I have in-depth mastery of, meaning zero know-how overhead and immediate project momentum. I deliver robust, maintainable solutions that are ready for production from day one.

  • ⚙️⚙️
    Robotics & Advanced Motion Control Integration

    Full integration of FANUC and Mitsubishi MELFA industrial robots with high-performance synchronized motion systems (MELSERVO, closed-loop stepper, VFD). Specialized in robotic welding, custom palletizing, machine tending, pick-and-place, and complex multi-axis applications.

  • ⚙️⚙️
    Commissioning, FAT/SAT & On-Site / Remote Support

    Complete factory and site acceptance testing, full commissioning, troubleshooting, and ongoing technical support — both on-site and remote. I ensure zero surprises during start-up and fast resolution of any production issues.

  • ⚙️⚙️
    Strategic Automation Consulting & Platform Optimisation

    Expert consulting for complex automation projects, leveraging my deep Mitsubishi expertise to optimize & upgrade both new as well as obsolete systems and processes. I design SIL3 safety systems, deliver complete turnkey integration between machinery, robotics, and higher-level systems, and provide strategic planning for efficiency and scalability.

  • ⚙️⚙️
    Individual Component Configuration, Programming & Commissioning

    Standalone services for specific automation elements, including custom configuration, programming, and commissioning of PLC, HMI, SCADA, Robotics & Motion systems. Ideal for targeted developments, upgrades or troubleshooting, with full support for Mitsubishi, Siemens, FANUC and related technologies.

(function() { function initP4() { var panel = document.querySelector('.dta-p4'); var items = document.querySelectorAll('.dta-p4-item'); if (!panel || !items.length) return; items.forEach(function(item) { if (item.dataset.p4init) return; item.dataset.p4init = 'true'; var header = item.querySelector('.dta-p4-header'); if (!header) return; header.addEventListener('click', function() { var isOpen = item.classList.contains('open'); items.forEach(function(i) { i.classList.remove('open'); }); if (!isOpen) { item.classList.add('open'); panel.classList.add('has-open'); } else { panel.classList.remove('has-open'); } }); }); } initP4(); setTimeout(initP4, 300); setTimeout(initP4, 800); /* ── OUTSIDE CLICK TO CLOSE ── */ document.addEventListener('click', function(e) { if (!e.target.closest('.dta-p4')) { var panel = document.querySelector('.dta-p4'); var items = document.querySelectorAll('.dta-p4-item'); if (panel) panel.classList.remove('has-open'); items.forEach(function(i) { i.classList.remove('open'); }); } }); })();
Portfolio
  • 🗂️📄
    #45DTA File Hub · Full-Stack Secure Client File Delivery PortalApr 2026 – Present
  • 🗂️📄
    #44DTAutomation · Bilingual Professional Portfolio & Brand PlatformMar 2026 – Present
  • 🗂️📄
    #43Applied R&D, Full-Stack, Life Cycle, Continuous Improvement Development: Machinery Operation Philosophy Enhancement & Design, Integration, Configuration, Programming, Commissioning & Functional Integrity Verification (FAT/SAT) of all underline Industrial Automation Equipment involved (PLC, HMI, Industrial Robots, Servo Drives, Stepper Drives, VFDs)Jan 2020 – Present
  • 🗂️📄
    #42Single Servo-Axis Flow Pack MachineJun 2019
  • 🗂️📄
    #41Automated Metal Hinge Drilling and Tapping Processing MachineFeb 2019 – Apr 2019
  • 🗂️📄
    #40Automated Sheet Metal Feeder & Iron Casting Press MachineSep 2018 – Nov 2018
  • 🗂️📄
    #39A Proprietary Application User Interface Tool For Calibrating And Evaluating The Taught Points Inside A Fanuc Teach Pendant ProgramJul 2018 – Aug 2018
  • 🗂️📄
    #38Automated Robotic Cell For Weight Plates DistributionJun 2018 – Aug 2018
  • 🗂️📄
    #37Troubleshooting & Maintenance Of An Automated Silicone Tube Production MachineApr 2018
  • 🗂️📄
    #36Operational Functioning Review Of A Theater Automation System Infrastructure And Overall Optimization Of Its Underlying PLC And HMI Software In Order To Comply Accordingly With The Standards Of Din 56950-1 And IEC 61508 (SIL3)Sep 2017 – Dec 2017
  • 🗂️📄
    #353 Servo-Axis Flow Pack MachineDec 2017
  • 🗂️📄
    #34Re-Design, Re-Program And Re-Implementation Of A Process Automation System For The Transportation And Supply Of Empty Cans To A Canning Plant's Fruit Filling StationsJun 2017 – Jul 2017
  • 🗂️📄
    #33Obsolete Fruit Juice-Puree Aseptic/Filling Process Automation Machine Maintenance, Troubleshooting & CommissioningJun 2017
  • 🗂️📄
    #32Asphalt Process Automation Production Plant TroubleshootingFeb 2017 – Mar 2017
  • 🗂️📄
    #31Automated Robotic Cell For MIG Welding Process2016 – 2017
  • #30Design, Development And Implementation Of A Real-Time And Fault-Tolerant ModBus RTU Master Function-Block Library For Mitsubishi iQ-F FX5 PLC2017
  • 🗂️📄
    #29Troubleshooting, Maintenance & Optimization Of A Fruit Juice/Puree Aseptic/Filling Process Automation MachineNov 2016
  • 🗂️📄
    #28Maintenance And Update Of A Fruit Juice/Puree Aseptic/Filling Process Automation MachineNov 2016
  • 🗂️📄
    #27Motion Control System Upgrade Of "Pack Line PXM Filling And Sealing Machine"Oct 2016
  • 🗂️📄
    #26Automated Robotic Cell For "Assembly & Welding Of Vertical Type Micro-Wind Turbine Parts"2014 – 2016
  • #25Design, Development And Implementation Of Function-Block Library For Driving Delta Inverters Through Modbus With Simatic S7-1200 PLC2016
  • #24Design, Development And Implementation Of Function-Block Library For Driving Solocom & Hapn VFD's Through Modbus With Simatic S7-1200 PLC2016
  • 🗂️📄
    #23Improvement And Optimization Of Animal Food Production Process2016
  • 🗂️📄
    #22Industrial Automation Infrastructure Upgrade At The Facilities Of Biological Wastewater Treatment Of Thessaloniki (Greece)2015 – 2016
(function() { function initP5() { var list = document.getElementById('dta-p5-list'); if (!list) return; var s = document.createElement('style'); s.textContent = '#dta-p5-list{max-height:420px!important;overflow-y:scroll!important;overscroll-behavior:contain!important;}'; document.head.appendChild(s); list.addEventListener('wheel', function(e) { e.stopPropagation(); }, { passive: true }); } initP5(); setTimeout(initP5, 300); setTimeout(initP5, 800); })();
(function() { var href = window.location.href; var idx = href.indexOf('project='); if (idx === -1) return; var val = href.slice(idx + 8).replace(/^(%23|#)/, ''); var numMatch = val.match(/^(\d+)/); if (!numMatch) return; var n = parseInt(numMatch[1], 10); var projectNum = '#' + (n < 10 ? '0' + n : '' + n); function scrollToPortfolio() { var el = document.getElementById('dta-p5-list'); if (el) { var y = el.getBoundingClientRect().top + window.pageYOffset - 60; window.scrollTo({ top: y, behavior: 'smooth' }); } } var attempts = 0; var maxAttempts = 200; function tryOpen() { attempts++; var modalReady = typeof window.dtaOpenModal === 'function'; var dataReady = projectNum === '#43' || (window.dtaExtraData && window.dtaExtraData[projectNum] !== undefined); if (modalReady && dataReady) { scrollToPortfolio(); setTimeout(function() { window.dtaOpenModal(projectNum); }, 500); return; } if (attempts < maxAttempts) { setTimeout(tryOpen, 150); } } function startPolling() { setTimeout(tryOpen, 200); } if (document.readyState === 'complete') { startPolling(); } else { window.addEventListener('load', startPolling); } })();
(function() { var href = window.location.href; var pidx = href.indexOf('project='); if (pidx === -1) return; var vidIdx = href.indexOf('video='); if (vidIdx === -1) return; var pVal = href.slice(pidx + 8).replace(/^(%23|#)/, ''); var pMatch = pVal.match(/^(\d+)/); if (!pMatch) return; var n = parseInt(pMatch[1], 10); var projectNum = '#' + (n < 10 ? '0' + n : '' + n); var vVal = href.slice(vidIdx + 6); var vMatch = vVal.match(/^(\d+)/); if (!vMatch) return; var videoIndex = parseInt(vMatch[1], 10); /* Block dtaOpenModal permanently for this page load. V007 will always get the no-op. We call originalOpenModal directly ourselves. */ var originalOpenModal = null; Object.defineProperty(window, 'dtaOpenModal', { configurable: true, get: function() { return function() { /* suppressed by video deeplink */ }; }, set: function(fn) { originalOpenModal = fn; } }); function scrollToPortfolio() { var el = document.getElementById('dta-p5-list'); if (el) { var y = el.getBoundingClientRect().top + window.pageYOffset - 60; window.scrollTo({ top: y, behavior: 'smooth' }); } } function getVideos() { var data = projectNum === '#43' ? null : (window.dtaExtraData && window.dtaExtraData[projectNum]); if (projectNum === '#43') { return window.dtaP43Videos || null; } else if (data && data.videos && data.videos.length > 0) { return data.videos; } return null; } function pollGLightbox(videos) { var pollAttempts = 0; var pollMax = 50; function check() { pollAttempts++; var container = document.querySelector('.glightbox-container'); if (container) return; /* GLightbox already open from a previous call — done */ if (pollAttempts >= pollMax) return; /* ceiling reached — bail */ setTimeout(check, 100); } window.dtaOpenLightbox(videos, videoIndex); setTimeout(check, 100); } var attempts = 0; var maxAttempts = 200; function tryOpen() { attempts++; var lightboxReady = typeof window.dtaOpenLightbox === 'function'; var dataReady = projectNum === '#43' || (window.dtaExtraData && window.dtaExtraData[projectNum] !== undefined); var realModalReady = typeof originalOpenModal === 'function'; if (realModalReady && lightboxReady && dataReady) { scrollToPortfolio(); setTimeout(function() { originalOpenModal(projectNum); var videos = getVideos(); if (videos && videos.length > videoIndex) { pollGLightbox(videos); } }, 300); return; } if (attempts < maxAttempts) { setTimeout(tryOpen, 150); } } function startPolling() { setTimeout(tryOpen, 200); } if (document.readyState === 'complete') { startPolling(); } else { window.addEventListener('load', startPolling); } })();
Contact

Thank you — your message has been sent.
I will get back to you as soon as possible.

(function() { function positionWatermark() { var panel = document.getElementById('dta-p8-panel'); var wm = panel ? panel.querySelector('.dta-p8-watermark') : null; if (!wm) return; var w = panel.offsetWidth; if (w < 520) { wm.style.setProperty('top', '12px', 'important'); wm.style.setProperty('bottom', 'auto', 'important'); wm.style.setProperty('width', '44px', 'important'); } else { wm.style.setProperty('bottom', '14px', 'important'); wm.style.setProperty('top', 'auto', 'important'); wm.style.setProperty('width', '72px', 'important'); } } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', positionWatermark); } else { positionWatermark(); } window.addEventListener('resize', positionWatermark); setTimeout(positionWatermark, 300); setTimeout(positionWatermark, 800); })();
DTAutomation
From Code to Commissioning
© dt-automation.net
All rights reserved
Top
Available · Freelance · Contract · Remote · On-Site · EU
Dimitrios Tsiolchas · Sole Proprietorship · +30 694 294 8395
VAT: EL125691570 · DOY: E' Thessalonikis · GEMI: 192839605000
26 Agias Triados St. · P.C. 57010 · Asvestochori – Thessaloniki
(function() { var yr = document.getElementById('dta-p7-year'); if (yr) yr.textContent = new Date().getFullYear(); function applyConfig() { var cfg = window.dtaConfig || {}; var emailLink = document.getElementById('dta-p7-email-link'); var linkedinLink = document.getElementById('dta-p7-linkedin-link'); if (emailLink) emailLink.href = 'mailto:' + (cfg.emailInfo || '[email protected]'); if (linkedinLink) linkedinLink.href = cfg.linkedin || 'https://www.linkedin.com/in/dimitrios-tsiolchas/'; } applyConfig(); setTimeout(applyConfig, 500); /* ── SCROLL TO CONTACT + SET SUBJECT + FLASH ── */ window.dtaScrollToContact = function(subjectValue) { var panel = document.getElementById('dta-p8-panel'); if (!panel) return; var y = panel.getBoundingClientRect().top + window.pageYOffset - 60; window.scrollTo({ top: y, behavior: 'smooth' }); setTimeout(function() { /* Clear all fields except subject */ var name = document.getElementById('dta-p8-name'); var email = document.getElementById('dta-p8-email'); var company = document.getElementById('dta-p8-company'); var message = document.getElementById('dta-p8-message'); if (name) name.value = ''; if (email) email.value = ''; if (company) company.value = ''; if (message) message.value = ''; /* Set subject */ var select = document.getElementById('dta-p8-subject'); if (select) { var tmp = document.createElement('div'); tmp.innerHTML = subjectValue; var decoded = tmp.textContent || tmp.innerText || subjectValue; select.value = decoded; select.dispatchEvent(new Event('change')); } /* Focus name field */ var nameField = document.getElementById('dta-p8-name'); if (nameField) nameField.focus(); /* Bounce panel */ if (window.bouncePanel) window.bouncePanel(); /* Multi-flash Name label + Subject label for 3 seconds */ var nameLabel = document.querySelector('label[for="dta-p8-name"]'); var subjectLabel = document.querySelector('label[for="dta-p8-subject"]'); [nameLabel, subjectLabel].forEach(function(lbl) { if (!lbl) return; lbl.classList.remove('dta-p8-label-flash'); void lbl.offsetWidth; lbl.classList.add('dta-p8-label-flash'); setTimeout(function() { lbl.classList.remove('dta-p8-label-flash'); }, 3100); }); }, 800); }; function scaleP7() { var panel = document.getElementById('dta-p7-panel'); if (!panel) return; var w = panel.offsetWidth; if (w < 600 && window.innerHeight > window.innerWidth) { panel.style.setProperty('grid-template-columns', '1fr', 'important'); panel.style.setProperty('justify-items', 'center', 'important'); var left = document.getElementById('dta-p7-left'); var right = document.getElementById('dta-p7-right'); if (left) left.style.setProperty('align-items', 'center', 'important'); if (right) { right.style.setProperty('justify-content', 'center', 'important'); right.style.setProperty('align-items', 'center', 'important'); right.style.setProperty('align-self', 'auto', 'important'); var r1=document.getElementById('dta-p7-row1');var r2=document.getElementById('dta-p7-row2'); if(r1)r1.style.setProperty('justify-content','center','important'); if(r2)r2.style.setProperty('justify-content','center','important'); } } else { panel.style.setProperty('grid-template-columns', 'auto minmax(0, 1fr) auto', 'important'); panel.style.removeProperty('justify-items'); var left = document.getElementById('dta-p7-left'); var right = document.getElementById('dta-p7-right'); if (left) left.style.removeProperty('align-items'); if (right) { right.style.setProperty('justify-content', 'space-between', 'important'); right.style.setProperty('align-items', 'flex-end', 'important'); right.style.setProperty('align-self', 'stretch', 'important'); var r1=document.getElementById('dta-p7-row1');var r2=document.getElementById('dta-p7-row2'); if(r1)r1.style.setProperty('justify-content','center','important'); if(r2)r2.style.setProperty('justify-content','center','important'); } } var scale = Math.max(w, 400) / 900; var brandPx = Math.min(22, Math.max(16, Math.round(22 * scale))); var taglinePx = Math.min(10, Math.max(7, Math.round(10 * scale))); var copyPx = Math.min(10, Math.max(6, Math.round(10 * scale))); var topPx = Math.min(12, Math.max(9, Math.round(12 * scale))); var pillPx = Math.min(11, Math.max(7, Math.round(11 * scale))); var linkPx = Math.min(12.5, Math.max(8, Math.round(12.5 * scale))); var detailsPx = Math.min(11, Math.max(7, Math.round(11 * scale))); var contactPx = Math.min(11, Math.max(7, Math.round(11 * scale))); var brand = document.getElementById('dta-p7-brand'); if (brand) brand.style.setProperty('height', brandPx + 'px', 'important'); document.getElementById('dta-p7-tagline').style.setProperty('font-size', taglinePx + 'px', 'important'); document.getElementById('dta-p7-copy').style.setProperty('font-size', copyPx + 'px', 'important'); var topLink = document.getElementById('dta-p7-top-link'); if (topLink) topLink.style.setProperty('font-size', topPx + 'px', 'important'); document.getElementById('dta-p7-pill').style.setProperty('font-size', pillPx + 'px', 'important'); var d1 = document.getElementById('dta-p7-details-1'); var d2 = document.getElementById('dta-p7-details-2'); var d3 = document.getElementById('dta-p7-details-3'); if (d1) d1.style.setProperty('font-size', detailsPx + 'px', 'important'); if (d2) d2.style.setProperty('font-size', detailsPx + 'px', 'important'); if (d3) d3.style.setProperty('font-size', detailsPx + 'px', 'important'); var cb = document.getElementById('dta-p7-contact-btn'); if (cb) cb.style.setProperty('font-size', contactPx + 'px', 'important'); document.querySelectorAll('.dta-p7-link').forEach(function(l) { l.style.setProperty('font-size', linkPx + 'px', 'important'); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scaleP7); } else { scaleP7(); } window.addEventListener('resize', scaleP7); setTimeout(scaleP7, 300); setTimeout(scaleP7, 800); })();