{"id":817,"date":"2026-11-02T14:02:18","date_gmt":"2026-11-02T14:02:18","guid":{"rendered":"https:\/\/develop.office.one\/?page_id=817"},"modified":"2026-11-09T11:34:05","modified_gmt":"2026-11-09T11:34:05","slug":"careers","status":"publish","type":"page","link":"https:\/\/develop.office.one\/?page_id=817","title":{"rendered":"Careers"},"content":{"rendered":"\n\n<nav class=\"oo-lang-nav\" aria-label=\"Language\"><a href=\"https:\/\/develop.office.one\/?page_id=816\" lang=\"de\" hreflang=\"de\">DE<\/a><span aria-hidden=\"true\">\/<\/span><a href=\"https:\/\/develop.office.one\/?page_id=817\" lang=\"en\" hreflang=\"en\" aria-current=\"page\">EN<\/a><\/nav>\n<script>(()=>{const lang=\"en\",widget=document.querySelector('.oo-lang-nav');document.documentElement.lang=lang;if(widget){const header=document.querySelector('header.header')||document.querySelector('header');if(header)header.append(widget);}\nconst pairs=[{\"de\":2,\"en\":302,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=2\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=302\"},{\"de\":3,\"en\":303,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=3\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=303\"},{\"de\":35,\"en\":304,\"deUrl\":\"https:\/\/develop.office.one\/\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=304\"},{\"de\":37,\"en\":305,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=37\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=305\"},{\"de\":38,\"en\":306,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=38\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=306\"},{\"de\":265,\"en\":307,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=265\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=307\"},{\"de\":270,\"en\":308,\"deUrl\":\"https:\/\/develop.office.one\/?page_id=270\",\"enUrl\":\"https:\/\/develop.office.one\/?page_id=308\"}];const labels={'Expertise':'Expertise','Angebot':'Support plans','Leistungen':'Services','Betreuungsmodelle':'Support plans','Team':'Team','Home':'Home'};if(lang==='en'){document.querySelectorAll('header a,#site-footer a').forEach(a=>{const href=a.getAttribute('href');const p=pairs.find(p=>a.href===p.deUrl||href==='\/?page_id='+p.de);if(p)a.href=p.enUrl;if(href==='\/'||a.href==='https:\/\/develop.office.one\/')a.href=\"https:\/\/develop.office.one\/?page_id=304\";if(labels[a.textContent.trim()])a.textContent=labels[a.textContent.trim()];});document.querySelectorAll('header .current-menu-item,header .current_page_item').forEach(e=>e.classList.remove('current-menu-item','current_page_item'));const current=817;document.querySelectorAll('header nav a').forEach(a=>{if(a.href.includes('page_id='+current))a.closest('li')?.classList.add('current-menu-item')});}\nfor(const [l,u] of [['de','https:\/\/develop.office.one\/?page_id=816'],['en','https:\/\/develop.office.one\/?page_id=817']]){const link=document.createElement('link');link.rel='alternate';link.hreflang=l;link.href=u;document.head.append(link)}\n})();<\/script>\n\n\n<style id=\"oo-language-frame\">html body header.header nav.oo-lang-nav{outline:1px solid #b8c3cc!important;outline-offset:6px!important;border-radius:0!important}@media(min-width:960px){html body header.header nav.oo-lang-nav{top:45px!important}}@media(max-width:781px){html body:is(.page-id-35,.page-id-304) #content .nv-content-wrap .oo-home .hero .actions .btn{width:240px!important}}\nhtml:root{--oo-surface:#eaf6fa}\nhtml:root body:is(.page-id-35,.page-id-304) #content .nv-content-wrap .oo-home section.oo-approach,\nhtml:root body:is(.page-id-38,.page-id-306) #content .nv-content-wrap > .wp-block-group:has(.wp-image-564,.wp-image-566,.wp-image-568),\nhtml:root body:is(.page-id-2,.page-id-302) #content .nv-content-wrap .office-models .om-package:nth-child(n),\nhtml:root body:is(.page-id-37,.page-id-305) #content .nv-content-wrap .o1-team details.o1-person .o1-avatar,\nhtml:root body:is(.page-id-37,.page-id-305) #content .nv-content-wrap .o1-team details.o1-person .o1-avatar.oo-avatar-blue,\nhtml:root body:is(.page-id-37,.page-id-305) #content .nv-content-wrap .o1-team details.o1-person[open],\nhtml:root body:is(.page-id-38,.page-id-306) #content .nv-content-wrap .oo-service-chips li,\nhtml:root body:is(.page-id-270,.page-id-308) #content .nv-content-wrap .oo-contact .oo-contact-fields input,\nhtml:root body:is(.page-id-270,.page-id-308) #content .nv-content-wrap .oo-contact textarea{\nbackground:var(--oo-surface)!important;background-image:none!important\n}\nhtml:root body:is(.page-id-35,.page-id-304,.page-id-38,.page-id-306) #content .nv-content-wrap section.oo-contact-cta .oo-cta-inner{\ngrid-template-columns:minmax(0,48%) minmax(0,1fr)!important;gap:40px!important;justify-content:stretch!important\n}\nhtml:root body:is(.page-id-35,.page-id-304,.page-id-38,.page-id-306) #content .nv-content-wrap section.oo-contact-cta .oo-cta-button{\njustify-self:center!important;margin:0!important\n}\n@media(max-width:959px){\nhtml:root body:is(.page-id-35,.page-id-304,.page-id-38,.page-id-306) #content .nv-content-wrap section.oo-contact-cta .oo-cta-inner{\ngrid-template-columns:1fr!important;gap:28px!important\n}\n}\n\n@media(max-width:959px){\nhtml:root body header.header > nav.oo-lang-nav{display:none!important}\nhtml:root body #header-menu-sidebar nav.oo-lang-nav{position:static!important;inset:auto!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;align-self:stretch!important;width:auto!important;max-width:none!important;margin:24px 28px 12px!important;padding:18px 0 0!important;gap:12px!important;transform:none!important;outline:none!important;outline-offset:0!important;border:0!important;border-top:1px solid rgba(255,255,255,.18)!important;border-radius:0!important;background:transparent!important;z-index:auto!important;font-size:14px!important;line-height:1.5!important}\nhtml:root body #header-menu-sidebar nav.oo-lang-nav a{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-width:44px!important;min-height:44px!important;color:#f5faff!important}\nhtml:root body #header-menu-sidebar nav.oo-lang-nav a[aria-current=\"page\"]{color:#24c5d8!important}\n}\n@media(max-width:781px){\nhtml:root body:is(.page-id-35,.page-id-304) #content .nv-content-wrap .oo-home .hero .actions .btn{width:208px!important;min-height:44px!important;font-size:14px!important;line-height:1.3!important;padding:10px 16px!important;gap:14px!important}\n}\nhtml:root body:is(.page-id-38,.page-id-306) #content .nv-content-wrap .wp-block-image img.wp-image-568{mix-blend-mode:multiply!important}\nhtml:root body:is(.page-id-37,.page-id-305) #content .nv-content-wrap .o1-team details.o1-person .o1-avatar{color:#164e55!important}\nhtml:root body:is(.page-id-3,.page-id-303,.page-id-265,.page-id-307,.page-id-270,.page-id-308) #content .nv-content-wrap .oo-legal h1{font-size:clamp(30px,2.75vw,42px)!important;line-height:1.14!important}\n@media(max-width:781px){html:root body:is(.page-id-3,.page-id-303,.page-id-265,.page-id-307,.page-id-270,.page-id-308) #content .nv-content-wrap .oo-legal h1{font-size:clamp(30px,7.6vw,42px)!important}}\n@media(max-width:359px){html:root body:is(.page-id-3,.page-id-303,.page-id-265,.page-id-307,.page-id-270,.page-id-308) #content .nv-content-wrap .oo-legal h1{font-size:26px!important}}\n\n@media(max-width:959px),(hover:none),(pointer:coarse){\nhtml:root body:is(.page-id-35,.page-id-304) #content .nv-content-wrap .oo-home .hero .actions .btn-primary:is(:hover,:focus-visible,:active),\nhtml:root body:is(.page-id-35,.page-id-304,.page-id-2,.page-id-302) #content .nv-content-wrap section.oo-contact-cta .oo-cta-inner .oo-cta-button:is(:hover,:focus-visible,:active){background:#24c5d8!important;border-color:#24c5d8!important;color:#164e55!important;box-shadow:none!important;transition:none!important}\nhtml:root body:is(.page-id-35,.page-id-304) #content .nv-content-wrap .oo-home .hero .actions .btn-outline:is(:hover,:focus-visible,:active){background:rgba(255,255,255,.85)!important;color:#111a27!important;border-color:#566273!important;box-shadow:none!important;transition:none!important}\n}\n\nhtml:root body #header-menu-sidebar nav.oo-lang-nav{color:#293b40!important;border-top-color:#d5e0e5!important}html:root body #header-menu-sidebar nav.oo-lang-nav a{color:#293b40!important}html:root body #header-menu-sidebar nav.oo-lang-nav a[aria-current=\"page\"]{color:#087f94!important;font-weight:600!important}html:root body #header-menu-sidebar nav.oo-lang-nav span{color:#71838b!important}\n<\/style>\n<script id=\"oo-mobile-language-nav\">\n(()=>{if(document.documentElement.dataset.ooLanguageNavBound)return;const nav=document.querySelector('.oo-lang-nav'),header=document.querySelector('header.header'),menu=document.getElementById('header-menu-sidebar-inner');if(!nav||!header||!menu)return;document.documentElement.dataset.ooLanguageNavBound='1';const mobile=window.matchMedia('(max-width:959px)');function place(){const parent=mobile.matches?menu:header;if(nav.parentElement!==parent)parent.append(nav)}place();if(mobile.addEventListener)mobile.addEventListener('change',place);else mobile.addListener(place)})();\n<\/script>\n\n<style id=\"oo-entry-refresh\">\nhtml body header.header #header-grid .site-logo img{\nclip-path:polygon(0 0,100% 0,100% 64%,24% 64%,24% 75%,0 75%)!important;\ntransform:translateY(6px)!important\n}\n@media(min-width:960px){\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"]{--height:84px!important}\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"] .row--wrapper,\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"] .header-main-inner{min-height:84px!important;height:84px!important;padding-top:0!important;padding-bottom:0!important}\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"] .site-logo img{width:224px!important;min-width:0!important;max-width:224px!important;height:auto!important}\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"] .site-logo{margin:0!important}\nhtml body header.header #header-grid .header-main[data-show-on=\"desktop\"] .nav-menu-primary a{font-size:16px!important;font-weight:450!important;letter-spacing:0!important}\nhtml body header.header .oo-lang-nav{top:30px!important}\n}\n\nhtml body header.header #header-grid{padding-bottom:14px!important;background:#050606!important}\n<\/style>\n\n<style id=\"oo-careers-design\">\nhtml body .nv-page-title-wrap{display:none!important}html body #content>.container{max-width:none!important;padding:0!important}html body #content .nv-single-page-wrap{padding:0!important}html body #content .nv-content-wrap{margin:0!important}\nhtml:root body:is(.page-id-816,.page-id-817) main#content .nv-content-wrap.entry-content main.oo-careers{box-sizing:border-box!important;width:calc(100% - 30px)!important;max-width:none!important;margin:0 15px!important;padding:0!important;color:#293b40;font-family:Inter,Arial,Helvetica,sans-serif!important}\nhtml:root body #content .oo-careers *{box-sizing:border-box;font-family:Inter,Arial,Helvetica,sans-serif!important}\nhtml:root body #content .oo-careers .oc-header{padding:80px clamp(64px,9vw,220px) 64px clamp(96px,13.5vw,300px)}\nhtml:root body #content .oo-careers h1{font-size:clamp(30px,2.75vw,42px)!important;line-height:1.14!important;font-weight:650!important;letter-spacing:-.035em!important;margin:0 0 28px!important}\nhtml:root body #content .oo-careers h2{font-size:clamp(30px,2.5vw,36px)!important;line-height:1.2!important;font-weight:600!important;letter-spacing:-.035em!important;margin:0 0 24px!important}\nhtml:root body #content .oo-careers h3{font-size:22px!important;font-weight:600!important;line-height:1.3!important;margin:0 0 20px!important;color:#293b40}\nhtml:root body #content .oo-careers p,html:root body #content .oo-careers li{font-size:17px;font-weight:400;line-height:1.65;color:#526777}\nhtml:root body #content .oo-careers .oc-intro{max-width:800px;margin:0!important;font-size:18px;line-height:1.65}\nhtml:root body #content .oo-careers .oc-dot{color:#00b8bf;margin-left:.1em}\nhtml:root body #content .oo-careers .oc-eyebrow{font-size:16px!important;line-height:1.5!important;letter-spacing:.08em;text-transform:uppercase;color:#293b40;font-weight:600!important;margin:0 0 22px}\nhtml:root body #content .oo-careers .oc-eyebrow:after{content:\"\";display:block;width:28px;height:4px;background:#24c5d8;margin-top:8px}\nhtml:root body #content .oo-careers .oc-job{background:#eaf6fa;padding:64px clamp(64px,9vw,220px) 64px clamp(96px,13.5vw,300px);margin:0!important;border:0;border-radius:0;box-shadow:none}\nhtml:root body #content .oo-careers .oc-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px 64px;margin-top:40px}\nhtml:root body #content .oo-careers ul{padding-left:20px;margin:0}\nhtml:root body #content .oo-careers li{padding-left:5px;margin-bottom:12px}\nhtml:root body #content .oo-careers li::marker{color:#00b8bf}\nhtml:root body #content .oo-careers .oc-benefits{margin-top:40px;border-top:1px solid #cddfe5;padding-top:32px}\nhtml:root body #content .oo-careers .oc-benefits ul{columns:2;column-gap:64px}\nhtml:root body #content .oo-careers .oc-apply{max-width:none!important;margin:0!important;padding:32px clamp(64px,9vw,220px) 64px clamp(96px,13.5vw,300px)}\nhtml:root body #content .oo-careers .oc-apply p{max-width:800px;font-size:15px!important;line-height:1.65!important;font-weight:400!important;margin:0}\n@media(max-width:781px){\nhtml:root body #content .oo-careers .oc-header{padding:56px 28px 44px}\nhtml:root body #content .oo-careers .oc-job{padding:44px 28px}\nhtml:root body #content .oo-careers .oc-grid{grid-template-columns:1fr;gap:36px;margin-top:32px}\nhtml:root body #content .oo-careers .oc-benefits ul{columns:1}\nhtml:root body #content .oo-careers h1{font-size:clamp(30px,7.6vw,42px)!important}\nhtml:root body #content .oo-careers h2{font-size:30px!important}\nhtml:root body #content .oo-careers .oc-apply{padding:28px 28px 48px}\n}\n@media(max-width:359px){html:root body #content .oo-careers h1{font-size:26px!important}}\n\n\/* Keep the career footer at the bottom on short pages. *\/\nhtml:root body:is(.page-id-816,.page-id-817) main#content .nv-content-wrap.entry-content{display:flex!important;flex-direction:column!important;min-height:calc(100vh - 110px)!important;min-height:calc(100dvh - 110px)!important}\nhtml:root body:is(.page-id-816,.page-id-817) main#content .nv-content-wrap.entry-content>main.oo-careers{flex-shrink:0}\nhtml:root body:is(.page-id-816,.page-id-817) main#content .nv-content-wrap.entry-content>footer.oo-site-footer{margin-top:auto!important;flex-shrink:0}\n@media(max-width:959px){html:root body:is(.page-id-816,.page-id-817) main#content .nv-content-wrap.entry-content{min-height:calc(100vh - 102px)!important;min-height:calc(100dvh - 102px)!important}}\n<\/style><main class=\"oo-careers\"><div class=\"oc-header\">\n<h1>Careers at office.one<span class=\"oc-dot\">.<\/span><\/h1>\n<p class=\"oc-intro\">Want to keep IT running and help make it better? At Planetary Systems IT GmbH, people with different strengths work together. We\u2019re looking for someone who thinks ahead, takes responsibility and wants to become a long-term member of our team.<\/p>\n<\/div><style id=\"oo-career-openings-style\">\nhtml:root body #content .oo-careers .oc-openings{margin:0;padding:0;border-top:1px solid #dbe5e9}\nhtml:root body #content .oo-careers details.oc-opening{margin:0;border:0;border-bottom:1px solid #dbe5e9;border-radius:0;box-shadow:none}\nhtml:root body #content .oo-careers .oc-opening>summary{display:flex;align-items:center;justify-content:space-between;gap:24px;list-style:none;cursor:pointer;padding:28px clamp(64px,9vw,220px) 28px clamp(96px,13.5vw,300px);min-height:88px;background:#fff;color:#293b40}\nhtml:root body #content .oo-careers .oc-opening>summary::-webkit-details-marker{display:none}\nhtml:root body #content .oo-careers .oc-opening>summary::marker{content:\"\"}\nhtml:root body #content .oo-careers .oc-opening>summary h2{font-size:24px!important;line-height:1.3!important;font-weight:500!important;letter-spacing:-.025em!important;margin:0!important;color:#293b40!important}\nhtml:root body #content .oo-careers .oc-opening-toggle{flex:0 0 28px;font-size:30px;font-weight:300;line-height:1;text-align:center;color:#164e55}\nhtml:root body #content .oo-careers .oc-opening-toggle:before{content:\"+\"}\nhtml:root body #content .oo-careers .oc-opening[open]>.oc-opening-summary .oc-opening-toggle:before{content:\"\u2212\"}\nhtml:root body #content .oo-careers .oc-opening[open]>summary{background:#eaf6fa}\nhtml:root body #content .oo-careers .oc-opening>summary:focus-visible{outline:2px solid #24c5d8;outline-offset:-5px}\nhtml:root body #content .oo-careers .oc-opening .oc-job{padding-top:12px}\nhtml:root body #content .oo-careers .oc-unsolicited{background:#eaf6fa;padding:12px clamp(64px,9vw,220px) 48px clamp(96px,13.5vw,300px)}\nhtml:root body #content .oo-careers .oc-unsolicited p{max-width:800px}\n@media(hover:hover) and (pointer:fine){html:root body #content .oo-careers .oc-opening>summary:hover{background:#eaf6fa}}\n@media(max-width:781px){html:root body #content .oo-careers .oc-opening>summary{padding:24px 28px;min-height:80px;gap:16px}html:root body #content .oo-careers .oc-opening>summary h2{font-size:22px!important}html:root body #content .oo-careers .oc-unsolicited{padding:8px 28px 36px}}\n<\/style><section class=\"oc-openings\" aria-label=\"Job opportunities and speculative applications\"><details class=\"oc-opening\"><summary class=\"oc-opening-summary\"><h2 id=\"oc-job-title\">IT Systems Administrator (all genders)<\/h2><span class=\"oc-opening-toggle\" aria-hidden=\"true\"><\/span><\/summary><article class=\"oc-job\" aria-labelledby=\"oc-job-title\">\n<p>Do you enjoy understanding how systems work, finding root causes and putting practical solutions in place? At office.one, we support small and medium-sized businesses. We build long-term relationships with our customers, looking after workstations, Microsoft 365, servers, networks, backups and telephony.<\/p>\n<p>We work with customer environments and our own infrastructure in Berlin data centres. Everyone has different strengths. You contribute your experience and work alongside colleagues whose skills complement yours.<\/p>\n<div class=\"oc-grid\"><section><h3>Your responsibilities<\/h3><ul>\n<li><strong>Windows Server and Active Directory:<\/strong> Maintain existing environments, manage users and permissions and help the team develop systems further.<\/li>\n<li><strong>Microsoft 365, Exchange and Entra ID:<\/strong> Support setup, administration and migration so that email and collaboration work reliably.<\/li>\n<li><strong>Networks and security:<\/strong> Set up networks, firewalls, Wi-Fi and secure access, and review existing configurations.<\/li>\n<li><strong>Incident investigation:<\/strong> Find root causes systematically, document your work and explain next steps clearly to customers.<\/li>\n<li><strong>Maintenance and backups:<\/strong> Check systems, updates and backups, with a focus on being able to restore an environment when it matters.<\/li>\n<li><strong>Servers and virtual environments:<\/strong> Depending on your strengths, contribute to server, remote desktop and cloud environments and our own infrastructure.<\/li>\n<li><strong>IT projects:<\/strong> Help with migrations, new workstations and infrastructure changes, including working with our customers\u2019 software providers.<\/li>\n<li><strong>PowerShell and automation:<\/strong> Simplify recurring tasks and help make processes clear and efficient.<\/li>\n<li><strong>Hardware and on-site visits:<\/strong> Install server and network hardware and support customers on site when needed.<\/li>\n<\/ul><\/section>\n<section><h3>What you bring<\/h3><ul>\n<li>Practical experience administering and supporting IT systems.<\/li><li>Knowledge of the technical areas above and a willingness to develop your strengths.<\/li><li>A structured, independent approach focused on solutions.<\/li><li>Curiosity about technology and an interest in understanding how things fit together.<\/li><li>A sense of responsibility for customer systems and data.<\/li><li>Enjoyment of teamwork and clear communication with customers and software providers.<\/li>\n<\/ul><p>You don\u2019t need to be a specialist in every area. Your practical skills, how you work and how we complement one another matter more than a particular qualification.<\/p>\n<h3>How we work together<\/h3><p>We are a technically focused team with a flat organisational structure. We share knowledge and work through difficult cases together. Our request intake process brings enquiries together so that we can assess urgency, find the right colleague and give tasks our full attention.<\/p><p>We\u2019re looking for someone who thinks ahead, contributes ideas and wants to develop our work and customer relationships over the long term.<\/p><\/section><\/div>\n<section class=\"oc-benefits\"><h3>What you can expect<\/h3><ul><li>A competitive salary.<\/li><li>A friendly team and a flat organisational structure.<\/li><li>A modern office near Berlin S\u00fcdkreuz.<\/li><li>A BVG public transport pass.<\/li><li>Fresh fruit and our office dog.<\/li><\/ul><\/section><\/article><\/details><details class=\"oc-opening\"><summary class=\"oc-opening-summary\"><h2>Speculative application<\/h2><span class=\"oc-opening-toggle\" aria-hidden=\"true\"><\/span><\/summary><div class=\"oc-unsolicited\"><p>Your experience doesn\u2019t quite match the advertised role, but you would like to work with us? We welcome speculative applications from people who are curious about technology, take responsibility and want to contribute to our team over the long term.<\/p><p>Tell us about your experience, your strengths and how you would like to support our work.<\/p><\/div><\/details><\/section>\n<section class=\"oc-apply\" aria-label=\"Application\" style=\"margin-top:24px\"><p style=\"font-size:15px!important;font-weight:400!important;line-height:1.65\">Please email your application, including your CV, certificates and cover letter, to Fabian Umbach: <a href=\"mailto:info@planetary-systems.de\">info@planetary-systems.de<\/a>.<\/p><\/section><\/main>\n<script id=\"oo-mobile-menu-controller\">\n(()=>{if(document.documentElement.dataset.ooMobileMenuBound)return;const panel=document.getElementById('header-menu-sidebar');if(!panel)return;document.documentElement.dataset.ooMobileMenuBound='1';const body=document.body,overlay=document.querySelector('.header-menu-sidebar-overlay'),openers=[...document.querySelectorAll('.menu-mobile-toggle button.navbar-toggle')],close=panel.querySelector('.close-sidebar-panel button.navbar-toggle');let previousFocus=null,previousOverflow='';\nconst isOpen=()=>body.classList.contains('oo-menu-open');\nfunction setOpen(open,restore=true){if(open===isOpen())return;if(open){previousFocus=document.activeElement;previousOverflow=body.style.overflow}\nbody.classList.toggle('oo-menu-open',open);body.classList.toggle('is-menu-sidebar',open);body.classList.remove('hiding-header-menu-sidebar');panel.setAttribute('aria-hidden',String(!open));if(overlay)overlay.setAttribute('aria-hidden',String(!open));openers.forEach(b=>{b.setAttribute('aria-expanded',String(open));b.setAttribute('aria-controls',panel.id);b.closest('.menu-mobile-toggle').classList.toggle('is-active',open)});if(close)close.setAttribute('aria-expanded',String(open));body.style.overflow=open?'hidden':previousOverflow;\nif(open){const target=close||panel.querySelector('a[href]');if(target)target.focus({preventScroll:true})}else{document.dispatchEvent(new CustomEvent('ftrap-end'));document.querySelectorAll('.neve-skip-link,#content,.scroll-to-top,#site-footer,.header--row').forEach(e=>e.removeAttribute('aria-hidden'));if(restore&&previousFocus&&previousFocus.isConnected)previousFocus.focus({preventScroll:true})}}\nif(close)close.setAttribute('aria-label',document.documentElement.lang.startsWith('en')?'Close navigation':'Navigation schlie\u00dfen');\ndocument.addEventListener('click',e=>{const target=e.target instanceof Element?e.target:null;if(!target)return;const opener=target.closest('.menu-mobile-toggle button.navbar-toggle');const closer=target.closest('#header-menu-sidebar .close-sidebar-panel button.navbar-toggle');const backdrop=target.closest('.header-menu-sidebar-overlay');\nif(opener||closer||backdrop){e.preventDefault();e.stopImmediatePropagation();setOpen(opener?!isOpen():false);return}if(isOpen()&&target.closest('#header-menu-sidebar a[href]'))setOpen(false,false)},true);\ndocument.addEventListener('keydown',e=>{if(!isOpen())return;if(e.key==='Escape'){e.preventDefault();e.stopImmediatePropagation();setOpen(false);return}if(e.key==='Tab'){const nodes=[...panel.querySelectorAll('a[href],button:not([disabled]),[tabindex=\"0\"]')].filter(n=>n.getClientRects().length),first=nodes[0],last=nodes[nodes.length-1];if(!first)return;if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus()}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus()}}},true);\nwindow.addEventListener('resize',()=>{if(window.innerWidth>=960&&isOpen())setOpen(false,false)});\n})();<\/script>\n\n\n<aside class=\"oo-chat oo-orbit-widget oo-orbit-docked\" aria-label=\"Orbit \u2013 office.one\">\n<details class=\"oo-chat-shell\">\n<summary class=\"oo-orbit-launch\" aria-label=\"Open chat with Orbit\" title=\"Open chat with Orbit\"><img loading=\"lazy\" class=\"oo-orbit-mascot\" src=\"https:\/\/develop.office.one\/wp-content\/uploads\/2026\/11\/Orbit-\u2013-office.one_.png\" alt=\"\" width=\"1536\" height=\"1024\" decoding=\"async\"><\/summary>\n<div class=\"oo-chat-panel\">\n<div class=\"oo-chat-header\"><strong>Orbit<\/strong><button class=\"oo-chat-close\" type=\"button\" aria-label=\"Close chat\">\u00d7<\/button><\/div>\n<div class=\"oo-chat-messages\" role=\"log\" aria-live=\"polite\"><p class=\"oo-chat-answer\">Hello! I\u2019m Orbit. Are you a new or an existing customer?<\/p><div class=\"oo-chat-intake-choices\"><button type=\"button\" data-oo-intake=\"New customer\">New customer<\/button><button type=\"button\" data-oo-intake=\"Existing customer\">Existing customer<\/button><\/div><\/div><style>.oo-chat-intake-choices{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}.oo-chat-intake-choices button{font:inherit;font-size:14px;line-height:1.4;padding:8px 11px;color:#183941;background:#fff;border:1px solid #b9d5dc;border-radius:8px;cursor:pointer}.oo-chat-intake-choices button:hover,.oo-chat-intake-choices button:focus-visible{background:#eaf6fa;border-color:#0c91a5}<\/style>\n\n<form class=\"oo-chat-input\"><label class=\"oo-chat-label\" for=\"oo-chat-question\">Your question<\/label><input id=\"oo-chat-question\" type=\"text\" maxlength=\"1000\" placeholder=\"Your question for Orbit \u2026\" autocomplete=\"off\"><button type=\"submit\" aria-label=\"Send question\">\u2192<\/button><\/form>\n\n<\/div><\/details><\/aside>\n<style>\n.oo-chat{position:fixed;right:24px;bottom:24px;z-index:1000;font-family:Inter,Arial,sans-serif}\n.oo-chat summary{list-style:none;background:#07151c;color:white;border:1px solid #26343e;border-radius:999px;padding:14px 20px;cursor:pointer;box-shadow:0 5px 24px #0002;font-size:14px;font-weight:500}\n.oo-chat summary::-webkit-details-marker{display:none}\n.oo-chat summary>span{color:#16bdc5;font-size:20px;margin-right:8px;vertical-align:middle}\n.oo-chat-panel{position:absolute;bottom:64px;right:0;width:350px;max-width:calc(100vw - 32px);background:white;border:1px solid #e4e8ec;border-radius:14px;box-shadow:0 12px 45px #0003;overflow:hidden;color:#101927}\n.oo-chat-header{padding:18px 20px;background:#07151c;color:white;display:flex;flex-direction:column;gap:5px}\n.oo-chat-header strong{font-size:16px}.oo-chat-header span{font-size:12px;color:#b8c6cc}\n.oo-chat-messages{padding:18px;max-height:260px;overflow-y:auto}\n.oo-chat .oo-chat-messages p{margin:0 0 12px;font-size:14px;line-height:1.55;padding:12px;border-radius:9px;background:#f0f3f5;color:#24343f}\n.oo-chat .oo-chat-messages .oo-chat-question{background:#e4f7f7;margin-left:32px}\n.oo-chat .oo-chat-messages a{display:inline-block;margin-top:8px;color:#008c96;text-decoration:underline}\n.oo-chat-options{display:flex;flex-wrap:wrap;gap:6px;padding:0 18px 16px}\n.oo-chat-options button{padding:7px 10px;border:1px solid #d9e1e5;border-radius:999px;background:white;color:#24343f;font-size:12px;cursor:pointer}\n.oo-chat-options button:hover{border-color:#00aebc;color:#008c96}\n.oo-chat-input{display:flex;gap:8px;padding:14px 18px;border-top:1px solid #e9edf0}\n.oo-chat-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}\n.oo-chat-input input{min-width:0;flex:1;border:1px solid #d9e1e5;border-radius:6px;padding:10px;font-size:14px;background:#fff;color:#101927}\n.oo-chat-input button{border:0;border-radius:6px;background:#00aebc;color:white;width:40px;cursor:pointer}\n.oo-chat .oo-chat-hint{font-size:11px;color:#657188;padding:0 18px 15px;margin:0;line-height:1.5}\n@media(max-width:781px){.oo-chat{right:16px;bottom:16px}.oo-chat summary{font-size:12px;padding:12px 16px}}\n<\/style>\n<script>\n(()=>{const root=document.querySelector('.oo-chat');if(!root)return;const hero=document.querySelector('.oo-home .hero');if(hero)hero.append(root);\nfunction alignScreen(){if(!hero||innerWidth<782)return;const img=hero.querySelector('img');if(!img||!img.naturalWidth)return;const ir=img.getBoundingClientRect(),hr=hero.getBoundingClientRect(),scale=Math.max(ir.width\/img.naturalWidth,ir.height\/img.naturalHeight),ox=ir.left-hr.left+(ir.width-img.naturalWidth*scale),oy=ir.top-hr.top+(ir.height-img.naturalHeight*scale)*.2;const pts=[[1715,342],[1957,317],[1928,544],[1685,507]].map(([x,y])=>[ox+x*scale,oy+y*scale]);const [[x0,y0],[x1,y1],[x2,y2],[x3,y3]]=pts,dx1=x1-x2,dx2=x3-x2,dx3=x0-x1+x2-x3,dy1=y1-y2,dy2=y3-y2,dy3=y0-y1+y2-y3,den=dx1*dy2-dx2*dy1,g=(dx3*dy2-dx2*dy3)\/den,h=(dx1*dy3-dx3*dy1)\/den,a=x1-x0+g*x1,b=x3-x0+h*x3,d=y1-y0+g*y1,e=y3-y0+h*y3;const m=[a\/300,d\/300,0,g\/300,b\/240,e\/240,0,h\/240,0,0,1,0,x0,y0,0,1];root.style.setProperty('--oo-screen-transform','matrix3d('+m.join(',')+')');root.style.setProperty('--oo-screen-x',((x0+x1+x2+x3)\/4)+'px');root.style.setProperty('--oo-screen-y',((y0+y1+y2+y3)\/4)+'px');}\nwindow.addEventListener('resize',alignScreen);hero?.querySelector('img')?.addEventListener('load',alignScreen);if(hero ? Boolean(window.ResizeObserver) : false)new ResizeObserver(alignScreen).observe(hero);alignScreen();\nfunction createOrbit(language, routes) {\n  const en = language === 'en';\n  const state = { topic: '', pending: '', people: null };\n  const pick = (de, english) => en ? english : de;\n  const contact = () => ({ url: routes.contact, label: pick('Mit dem Team sprechen', 'Talk to our team') });\n  const result = (text, links = []) => ({ text, links });\n  function reply(message) {\n    const q = message.trim().toLowerCase();\n    const count = q.match(\/\\b(\\d{1,4})\\s*(?:mitarbeit\\w*|personen|arbeitspl[a\u00e4]tz\\w*|nutzer\\w*|people|employees|users|workstations)\\b\/);\n    if (count ? +count[1] > 0 : false) state.people = +count[1];\n    if (\/^(hallo|hi|hey|hello|guten tag)[!,.\\s]*$\/.test(q)) return result(pick('Hallo! Sch\u00f6n, dass Sie da sind. Was besch\u00e4ftigt Sie gerade bei Ihrer IT?', 'Hello! Nice to meet you. What would you like to discuss about your IT?'));\n    if (\/wie (hei[\u00dfs]t|geht)|wer bist|dein name|who are you|your name|how are you\/.test(q)) return result(pick('Ich bin Orbit, der Website-Assistent von office.one. Ich helfe Ihnen mit Informationen zu unserer Betreuung, Fernwartung und einer ersten Anfrage. Worum geht es bei Ihnen?', 'I\u2019m Orbit, the office.one website assistant. I can help with information about our support, remote access tools and an initial enquiry. What do you have in mind?'));\n    if (\/bist du.*ki|echte ki|chatgpt|are you.*ai|real ai\/.test(q)) return result(pick('Aktuell helfe ich anhand hinterlegter Website-Informationen und einfacher R\u00fcckfragen. Eine freie KI-Unterhaltung ist noch nicht aktiviert. Bei individuellen Fragen ist unser Team f\u00fcr Sie da.', 'At the moment I use our website information and simple follow-up questions. Open-ended AI conversation has not been activated yet. Our team can help with individual questions.'), [contact()]);\n    if (\/^(danke|vielen dank|super|prima|thanks|thank you|great)[!,.\\s]*$\/.test(q)) return result(pick('Gern! Gibt es noch etwas, wobei ich Ihnen helfen kann?', 'You\u2019re welcome! Is there anything else I can help with?'));\n    if (\/^(tsch[u\u00fc]ss|auf wiedersehen|bye|goodbye)[!,.\\s]*$\/.test(q)) return result(pick('Auf Wiedersehen und einen sch\u00f6nen Tag!', 'Goodbye, and have a lovely day!'));\n    if (\/^was kannst|^wobei.*helfen|what can you|how can you help\/.test(q)) return result(pick('Ich kann Fernwartungsprogramme finden, unsere Betreuungsmodelle erkl\u00e4ren und mit Ihnen kl\u00e4ren, welche Unterst\u00fctzung zu Ihrer Anfrage passt. Was m\u00f6chten Sie als Erstes besprechen?', 'I can help find remote support downloads, explain our support plans and clarify what kind of help might suit your enquiry. What would you like to discuss first?'));\n    if (state.pending === 'internal' ? \/^(ja|nein|yes|no|haben wir|haben wir nicht|noch nicht)[!,.\\s]*$\/.test(q) : false) {\n      const yes = \/^(ja|yes|haben wir$)\/.test(q); state.pending = ''; state.topic = 'support';\n      return result(yes ? pick('Dann k\u00f6nnte \u201eGezielt unterst\u00fctzt\u201c passen: Unser Team erg\u00e4nzt Ihre interne IT, zum Beispiel bei einzelnen Themen, Projekten oder Support. Welche Aufgaben m\u00f6chten Sie abgeben?', 'Then our targeted support plan could be a good fit. We can complement your internal IT with specific topics, projects or day-to-day support. Which tasks would you like help with?') : pick('Dann ist \u201eRundum sorglos\u201c ein guter Ausgangspunkt. Dabei \u00fcbernimmt unser Team den Betrieb, die Wartung und die Weiterentwicklung Ihrer IT. Geht es vor allem um den laufenden Betrieb oder steht gerade eine Ver\u00e4nderung an?', 'Then our fully managed support plan is a useful starting point. Our team takes care of IT operations, maintenance and development. Are you mainly looking for ongoing support, or are you planning a change?'), [{ url: routes.models, label: pick('Die beiden Modelle im \u00dcberblick', 'Compare the two support plans') }]);\n    }\n    if (\/preis|kosten|kostet|teuer|price|cost|how much|budget\/.test(q)) {\n      state.topic = 'pricing'; state.pending = '';\n      return result(pick('Ein verbindlicher Preis h\u00e4ngt von Ihrer Umgebung und dem gew\u00fcnschten Umfang ab. Ich m\u00f6chte Ihnen deshalb keinen Pauschalpreis versprechen. '+(state.people ? 'Sie haben '+state.people+' Arbeitspl\u00e4tze genannt. ' : '')+'Suchen Sie eine vollst\u00e4ndige Betreuung oder Unterst\u00fctzung f\u00fcr einzelne Themen?', 'A firm price depends on your setup and the scope of support. I don\u2019t want to promise a flat rate that may not suit you. '+(state.people ? 'You mentioned '+state.people+' workstations. ' : '')+'Are you looking for fully managed IT or help with specific topics?'), [contact()]);\n    }\n    if (\/st[o\u00f6]rung|ausfall|ausgefallen|geht nicht|funktioniert nicht|notfall|verschl[u\u00fc]ssel|ransom|outage|not working|won.t work|emergency|hacked\/.test(q)) {\n      state.topic = 'incident'; state.pending = '';\n      return result(pick('Das sollte sich unser Support direkt ansehen. Sie erreichen das Team unter 030 5093014-0. Beschreiben Sie bitte kurz, was betroffen ist und seit wann. Ich selbst kann keine Systeme pr\u00fcfen oder ein Supportticket absenden.', 'Our support team should take a look at that directly. You can reach them on +49 30 5093014-0. Please describe what is affected and when the problem started. I can\u2019t inspect your systems or submit a support ticket myself.'), [contact()]);\n    }\n    if (\/download|teamviewer|gotoassist|go to assist|fernwart|remote access|remote support\/.test(q) || (state.topic === 'downloads' ? \/windows|mac|apple\/.test(q) : false)) {\n      state.topic = 'downloads';\n      if (!\/windows|mac|apple\/.test(q)) { state.pending = 'os'; return result(pick('F\u00fcr die Fernwartung bieten wir TeamViewer und GoToAssist an. Nutzen Sie Windows oder Mac OS?', 'We offer TeamViewer and GoToAssist for remote support. Are you using Windows or Mac OS?'), [{ url: routes.downloads, label: pick('Alle Fernwartungsdownloads', 'All remote support downloads') }]); }\n      const mac = \/mac|apple\/.test(q); state.pending = '';\n      return result(pick('F\u00fcr '+(mac ? 'Mac OS' : 'Windows')+' finden Sie die passenden TeamViewer- und GoToAssist-Schaltfl\u00e4chen auf unserer Downloads-Seite. W\u00e4hlen Sie das Programm, das unser Team mit Ihnen vereinbart hat.'+(mac ? ' GoToAssist startet auf dem Mac \u00fcber den Support-Zugang.' : ''), 'You\u2019ll find the TeamViewer and GoToAssist options for '+(mac ? 'Mac OS' : 'Windows')+' on our downloads page. Use the program agreed with our team.'+(mac ? ' On Mac, GoToAssist starts through the support access page.' : '')), [{ url: routes.downloads, label: pick('Downloads f\u00fcr '+(mac ? 'Mac OS' : 'Windows'), 'Downloads for '+(mac ? 'Mac OS' : 'Windows')) }]);\n    }\n    if (\/r[u\u00fc]ckruf|rueckruf|call back|callback|termin|appointment\/.test(q)) { state.topic = 'contact'; state.pending = ''; return result(pick('Gern. Hinterlassen Sie im Kontaktformular Ihre Telefonnummer und wann Sie gut erreichbar sind. Dort wird Ihre Anfrage an das Team gesendet; dieses Gespr\u00e4ch allein l\u00f6st noch keinen R\u00fcckruf aus.', 'Of course. Please leave your phone number and a suitable time in the contact form. That sends your request to our team; this conversation alone does not arrange a callback.'), [contact()]); }\n    if (\/angebot|anfrage|offer|quote|enquiry\/.test(q)) { state.topic = 'offer'; state.pending = 'offer'; return result(pick('Lassen Sie uns die Anfrage kurz eingrenzen: Wie viele Mitarbeitende oder Arbeitspl\u00e4tze sollen betreut werden, und worum geht es haupts\u00e4chlich?', 'Let\u2019s narrow down your enquiry: how many people or workstations need support, and what do you mainly need help with?')); }\n    if (state.pending === 'offer' ? q.length > 3 : false) { state.pending = ''; return result(pick('Danke, das hilft bei der Einordnung. '+(state.people ? 'F\u00fcr '+state.people+' Arbeitspl\u00e4tze ' : 'F\u00fcr Ihre Umgebung ')+'sollte unser Team den gew\u00fcnschten Umfang und die vorhandenen Systeme mit Ihnen besprechen. \u00dcbernehmen Sie die Angaben bitte ins Kontaktformular, damit Ihre Anfrage beim Team ankommt. Hier im Chat wurde noch nichts versendet.', 'Thank you, that helps. '+(state.people ? 'For '+state.people+' workstations, ' : 'For your setup, ')+'our team should discuss the scope and existing systems with you. Please copy these details into the contact form to send your enquiry to the team. Nothing has been submitted from this chat.'), [contact()]); }\n    const topics = [\n      [\/server|netzwerk|network|wlan|infrastruktur|infrastructure\/, 'infrastructure', pick('Wir betreuen Server, Netzwerke und Arbeitspl\u00e4tze und betreiben eigene Infrastruktur in einem Berliner Rechenzentrum. Geht es bei Ihnen um laufende Betreuung oder eine geplante Modernisierung?', 'We support servers, networks and workstations and operate our own infrastructure in a Berlin data centre. Are you looking for ongoing support or planning a modernisation?')],\n      [\/microsoft|\\b365\\b|exchange|outlook|teams|cloud\/, 'cloud', pick('Wir unterst\u00fctzen bei Microsoft 365 und Cloud-Diensten \u2013 von Einrichtung und Umzug bis zur laufenden Betreuung. Geht es um eine neue Umgebung, einen Wechsel oder Ihre bestehenden Systeme?', 'We help with Microsoft 365 and cloud services, from setup and migration to ongoing support. Is this a new setup, a move, or support for your existing systems?')],\n      [\/backup|datensicher|sicher|firewall|security|protect\/, 'security', pick('Wir betreuen Datensicherung, Server- und Netzwerksicherheit. Dabei schauen wir auf die vorhandene Umgebung und darauf, ob sich Daten im Ernstfall wiederherstellen lassen. M\u00f6chten Sie ein bestehendes Konzept pr\u00fcfen oder etwas neu aufbauen?', 'We help with backups and server and network security, including whether data can be restored when needed. Would you like us to review your existing setup or build something new?')],\n      [\/telefonanlage|telefonie|xelion|nfon|telephony|phone system\/, 'phone', pick('Telefonie geh\u00f6rt ebenfalls zu unseren Leistungen. Wichtig sind etwa die Anbindung an den Arbeitsplatz, Smartphone-Nutzung und das Arbeiten von unterwegs. M\u00f6chten Sie eine bestehende Anlage ersetzen oder erweitern?', 'Telephony is part of our services too, including desktop integration, smartphone apps and remote working. Are you looking to replace or extend an existing phone system?')],\n      [\/umzug|migration|projekt|digital|neuer standort|office move|project|new location\/, 'project', pick('Wir begleiten IT-Projekte und Standortver\u00e4nderungen von der Planung bis zur Umsetzung. Was soll sich ver\u00e4ndern, und gibt es schon einen gew\u00fcnschten Zeitraum?', 'We support IT projects and office moves from planning through implementation. What are you planning to change, and do you have a target timeframe?')]\n    ];\n    for (const [pattern, topic, text] of topics) if (pattern.test(q)) { state.topic = topic; state.pending = 'detail'; return result(text, [{ url: routes.services, label: pick('Passende Leistungen ansehen', 'Explore our services') }]); }\n    if (\/betreuung|support|modell|paket|arbeitsplatz|arbeitspl[a\u00e4]tze|service|managed|plan|package\/.test(q) || count || (state.topic === 'pricing' ? \/voll|komplett|einzeln|full|specific\/.test(q) : false)) { state.topic = 'support'; state.pending = 'internal'; return result(pick((state.people ? 'F\u00fcr '+state.people+' Arbeitspl\u00e4tze ' : 'F\u00fcr Unternehmen ')+'bieten wir vollst\u00e4ndige Betreuung oder gezielte Unterst\u00fctzung an. Gibt es bei Ihnen bereits eine interne IT-Ansprechperson?', (state.people ? 'For '+state.people+' workstations, ' : 'For businesses, ')+'we offer fully managed IT or targeted support. Do you already have someone handling IT internally?')); }\n    if (\/kontakt|adresse|wo seid|berlin|email|e-mail|telephone|address|where are|contact\/.test(q)) return result(pick('Sie finden uns in der Naumannstr. 64, 10829 Berlin. Telefon: 030 5093014-0. E-Mail: info@planetary-systems.de.', 'You can find us at Naumannstr. 64, 10829 Berlin. Phone: +49 30 5093014-0. Email: info@planetary-systems.de.'), [contact()]);\n    if (\/team|menschen|mit wem|people|who works\/.test(q)) return result(pick('Hinter office.one steht das Team der Planetary Systems IT GmbH. Auf unserer Teamseite lernen Sie die Ansprechpersonen und ihre Erfahrungen kennen.', 'office.one is backed by the team at Planetary Systems IT GmbH. Meet the people and read about their experience on our team page.'), [{ url: routes.team, label: pick('Das Team kennenlernen', 'Meet the team') }]);\n    if (state.pending === 'detail') { state.pending = ''; return result(pick('Verstanden. Diese Einzelheiten sollte unser Team mit Ihnen durchgehen. Ich kann Ihre Systeme nicht selbst bewerten, aber Sie k\u00f6nnen die Angaben direkt \u00fcber das Kontaktformular senden. M\u00f6chten Sie noch etwas zu unseren Leistungen wissen?', 'Understood. Our team should discuss those details with you. I can\u2019t assess your systems myself, but you can send the details through our contact form. Would you like to know anything else about our services?'), [contact()]); }\n    if (\/^(ja|yes)[!,.\\s]*$\/.test(q)) return result(pick('Gern \u2013 wor\u00fcber m\u00f6chten Sie mehr wissen: Fernwartung, laufende IT-Betreuung oder ein konkretes Projekt?', 'Of course. What would you like to know more about: remote support, ongoing IT support or a specific project?'));\n    if (\/^(nein|no)[!,.\\s]*$\/.test(q)) return result(pick('Alles klar. Wenn sp\u00e4ter noch eine Frage auftaucht, bin ich hier.', 'No problem. I\u2019m here if you have another question later.'));\n    return result(pick('Dabei bin ich noch unsicher und m\u00f6chte Ihnen nichts Falsches sagen. Geht es um eine technische St\u00f6rung, eine neue IT-Betreuung oder etwas anderes? F\u00fcr individuelle Fragen k\u00f6nnen Sie auch direkt unser Team ansprechen.', 'I\u2019m not sure about that and don\u2019t want to give you incorrect information. Is this about a technical issue, new IT support or something else? Our team can also help with individual questions.'), [contact()]);\n  }\n  return { reply, state };\n}\n\nconst language = 'en';\nconst routes = {\"services\":\"https:\/\/develop.office.one\/?page_id=306\",\"models\":\"https:\/\/develop.office.one\/?page_id=302\",\"team\":\"https:\/\/develop.office.one\/?page_id=305\",\"contact\":\"https:\/\/develop.office.one\/?page_id=308\",\"downloads\":\"https:\/\/develop.office.one\/?page_id=342\"};\nconst log = root.querySelector('.oo-chat-messages');\nconst input = root.querySelector('input');\nconst send = root.querySelector('button[type=\"submit\"]');\nconst orbit = createOrbit(language, routes);\nconst history = [];\nlet busy = false, intakeStage='customer', customerType='', urgency='';\nfunction intakeReply(message){\nconst q=message.toLowerCase(),en=language==='en';\nconst options=en?['New customer','Existing customer']:['Neukunde','Bestandskunde'];\nconst priorities=en?['Urgent \u2013 business has stopped','Soon \u2013 work is affected','Not urgent']:['Dringend \u2013 Betrieb steht','Zeitnah \u2013 Arbeit eingeschr\u00e4nkt','Nicht dringend'];\nif(intakeStage==='done')return null;\nif(intakeStage==='customer'){\nif(\/bestandskund|existing|already.*customer|bereits.*kund|schon.*kund\/.test(q)){\ncustomerType='existing';intakeStage='urgency';\nreturn {text:uiText('Wie dringend ist Ihr Anliegen?','How urgent is your request?'),choices:priorities};\n}\nif(\/neukund|new customer|neu hier|noch kein|noch nicht.*kund|interessent\/.test(q)){\ncustomerType='new';intakeStage='done';\nreturn {text:uiText('Sch\u00f6n, dass Sie da sind! Wie kann ich Ihnen helfen? Geht es um IT-Betreuung oder ein bestimmtes Projekt?','Welcome! How can I help you? Are you looking for IT support or help with a particular project?')};\n}\nreturn {text:uiText('Sind Sie Neukunde oder Bestandskunde?','Are you a new or an existing customer?'),choices:options};\n}\nif(\/nicht dringend|keine eile|hat zeit|not urgent|no rush\/.test(q))urgency='normal';\nelse if(\/zeitnah|eingeschr[a\u00e4]nkt|soon|affected\/.test(q))urgency='soon';\nelse if(\/dringend|urgent|betrieb steht|stillstand|notfall|ausfall|emergency|stopped\/.test(q))urgency='urgent';\nif(!urgency)return {text:uiText('Ist Ihr Betrieb ausgefallen, ist die Arbeit eingeschr\u00e4nkt oder hat Ihr Anliegen etwas Zeit?','Has your business stopped, is work affected, or is your request not urgent?'),choices:priorities};\nintakeStage='done';\nif(urgency==='urgent')return {text:uiText('Bei einem dringenden Ausfall rufen Sie unser Team bitte direkt unter 030 5093014-0 an. Was ist betroffen und seit wann? \u00dcber diesen Chat wird noch kein Supportticket erstellt.','For an urgent outage, please call our team directly on +49 30 5093014-0. What is affected, and when did the problem start? This chat does not create a support ticket.'),links:[{url:routes.contact,label:uiText('Zum Kontaktformular','Open the contact form')}]};\nreturn {text:urgency==='soon'?uiText('Verstanden. Was ist bei Ihrer Arbeit eingeschr\u00e4nkt und seit wann?','Understood. What is affecting your work, and when did it start?'):uiText('Alles klar. Worum geht es bei Ihrem Anliegen?','Of course. What can I help you with?')};\n}\nconst uiText = (de, en) => language === 'en' ? en : de;\nfunction appendMessage(text, kind, links = [], choices = []) {\n  const p = document.createElement('p');\n  p.className = kind === 'user' ? 'oo-chat-question' : 'oo-chat-answer';\n  p.textContent = text;\n  for (const link of links) {\n    try {\n      const url = new URL(link.url, location.origin);\n      if (url.origin !== location.origin || !\/^https?:$\/.test(url.protocol)) continue;\n      const a = document.createElement('a'); a.href = url.href; a.textContent = link.label;\n      p.append(document.createElement('br'), a);\n    } catch (_) {}\n  }\n  log.append(p);\n  if(choices.length){\n    const group=document.createElement('div');group.className='oo-chat-intake-choices';\n    choices.forEach(label=>{const button=document.createElement('button');button.type='button';button.dataset.ooIntake=label;button.textContent=label;group.append(button);});\n    log.append(group);\n  }\n  while (log.children.length > 60) log.firstElementChild.remove();\n  log.scrollTop = log.scrollHeight;\n  return p;\n}\nasync function answer(question) {\n  const q = question.trim().slice(0, 1000);\n  if (!q || busy) return;\n  log.querySelectorAll('.oo-chat-intake-choices').forEach(group=>group.remove());\n  appendMessage(q, 'user'); input.value = ''; busy = true; send.disabled = true;\n  history.push({ role: 'user', content: q });\n  let response, pending, timer;\n  try {\n    const config = window.ooOrbit;\n    const intakeResponse=intakeReply(q);\n    if(intakeResponse)response=intakeResponse;\n    else\n    if (config ? (config.enabled === true ? config.endpoint : false) : false) {\n      const endpoint = new URL(config.endpoint, location.origin);\n      if (endpoint.origin !== location.origin) throw new Error('A same-origin endpoint is required.');\n      pending = appendMessage(uiText('Orbit antwortet \u2026', 'Orbit is replying \u2026'), 'assistant');\n      log.setAttribute('aria-busy', 'true');\n      const controller = new AbortController();\n      timer = setTimeout(() => controller.abort(), 25000);\n      const headers = { 'Content-Type': 'application\/json' };\n      if (config.nonce) headers['X-WP-Nonce'] = config.nonce;\n      const res = await fetch(endpoint.href, { method: 'POST', credentials: 'same-origin', headers,\n        body: JSON.stringify({ message: q, history: history.slice(-20), language }), signal: controller.signal });\n      if (!res.ok) throw new Error('Chat endpoint unavailable');\n      const data = await res.json();\n      if (typeof data.reply !== 'string' || !data.reply.trim()) throw new Error('Empty reply');\n      response = { text: data.reply.slice(0, 8000), links: Array.isArray(data.links) ? data.links.slice(0, 4) : [] };\n    } else response = orbit.reply(q);\n  } catch (_) {\n    response = { text: uiText('Die KI-Verbindung ist gerade nicht verf\u00fcgbar. Bitte versuchen Sie es sp\u00e4ter erneut oder sprechen Sie direkt unser Team an.', 'The AI connection is currently unavailable. Please try again later or contact our team directly.'), links: [{ url: routes.contact, label: uiText('Zum Kontaktformular', 'Open the contact form') }] };\n  } finally {\n    clearTimeout(timer); if (pending) pending.remove(); log.removeAttribute('aria-busy');\n    busy = false; send.disabled = false;\n  }\n  appendMessage(response.text, 'assistant', response.links, response.choices);\n  history.push({ role: 'assistant', content: response.text });\n  if (history.length > 20) history.splice(0, history.length - 20);\n}\n\nlog.addEventListener('click',event=>{const button=event.target.closest('button[data-oo-intake]');if(button)answer(button.dataset.ooIntake);});\nfunction closeChat(restoreFocus=true){root.querySelector('details').open=false;if(restoreFocus)root.querySelector('summary').focus({preventScroll:true})}document.addEventListener('pointerdown',e=>{if(root.querySelector('details').open ? !root.contains(e.target) : false)closeChat(false)});root.querySelector('.oo-chat-close').addEventListener('click',closeChat);root.addEventListener('keydown',e=>{if(e.key==='Escape'){e.preventDefault();closeChat()}});root.querySelector('form').addEventListener('submit',e=>{e.preventDefault();answer(input.value)});root.querySelectorAll('[data-oo-chat]').forEach(b=>b.addEventListener('click',()=>answer(b.dataset.ooChat)));})();\n<\/script><style id=\"oo-orbit-follow-style\">\nhtml:root body .oo-chat.oo-orbit-widget{font-family:Inter,Arial,sans-serif!important;opacity:1!important;mix-blend-mode:normal!important;isolation:isolate}\nhtml:root body .oo-chat.oo-orbit-widget summary.oo-orbit-launch{cursor:pointer!important;list-style:none!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;border:0!important;text-shadow:none!important}\nhtml:root body .oo-chat.oo-orbit-widget summary.oo-orbit-launch img.oo-orbit-mascot{position:static!important;inset:auto!important;display:block!important;object-fit:contain!important;object-position:center!important;max-width:none!important;min-width:0!important;margin:0!important;padding:0!important;opacity:1!important;filter:none!important;box-shadow:none!important;border:0!important;pointer-events:none!important;mix-blend-mode:normal!important}\n@media(min-width:782px){html:root body .oo-home .hero .oo-chat.oo-orbit-widget:not(.oo-orbit-docked) summary.oo-orbit-launch{overflow:visible!important}\nhtml:root body .oo-home .hero .oo-chat.oo-orbit-widget:not(.oo-orbit-docked) summary.oo-orbit-launch img.oo-orbit-mascot{width:140%!important;height:140%!important;transform:translate(4%,-10%)!important;flex-shrink:0!important}}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked{position:fixed!important;inset:auto 24px 82px auto!important;width:140px!important;height:112px!important;transform:none!important;z-index:2147483000!important;pointer-events:none!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked summary.oo-orbit-launch{position:relative!important;inset:auto!important;width:140px!important;height:112px!important;transform:none!important;transform-origin:center!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;pointer-events:auto!important;overflow:visible!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked summary.oo-orbit-launch img.oo-orbit-mascot{width:140px!important;height:112px!important;transform:none!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked .oo-chat-panel{position:absolute!important;inset:auto 0 126px auto!important;width:350px!important;max-width:calc(100vw - 32px)!important;max-height:calc(100dvh - 240px)!important;transform:none;pointer-events:auto!important;z-index:2!important;overflow:auto!important;box-shadow:0 12px 40px rgba(7,21,28,.2)!important}\nhtml:root body .oo-chat.oo-orbit-widget summary.oo-orbit-launch:focus-visible{outline:3px solid #24c5d8!important;outline-offset:4px!important}\n@media(max-width:781px){html:root body .oo-chat.oo-orbit-widget.oo-orbit-docked{right:12px!important;bottom:78px!important;width:108px!important;height:88px!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked summary.oo-orbit-launch{width:108px!important;height:88px!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked summary.oo-orbit-launch img.oo-orbit-mascot{width:108px!important;height:88px!important}\nhtml:root body .oo-chat.oo-orbit-widget.oo-orbit-docked .oo-chat-panel{bottom:100px!important;max-height:calc(100dvh - 200px)!important;max-width:calc(100vw - 24px)!important}\nhtml:root body #scroll-to-top{bottom:16px!important;right:16px!important;z-index:2147482900!important}}\n<\/style><script id=\"oo-orbit-follow-controller\">\n(()=>{const root=document.querySelector('.oo-chat');if(!root||root.dataset.ooFollowBound)return;root.dataset.ooFollowBound='1';root.classList.add('oo-orbit-widget');const hero=document.querySelector('.oo-home .hero'),shell=root.querySelector('details');let frame=0;\nfunction place(){frame=0;const mobile=innerWidth<782,docked=!hero||mobile||hero.getBoundingClientRect().bottom<Math.min(innerHeight*.55,440);if(root.classList.contains('oo-orbit-docked')!==docked){root.classList.toggle('oo-orbit-docked',docked);const parent=docked?document.body:hero;if(parent ? root.parentElement!==parent : false)parent.append(root)}else if(docked ? root.parentElement!==document.body : false)document.body.append(root)}\nfunction schedule(){if(!frame)frame=requestAnimationFrame(place)}window.addEventListener('scroll',schedule,{passive:true});window.addEventListener('resize',schedule,{passive:true});if(hero ? Boolean(window.ResizeObserver) : false)new ResizeObserver(schedule).observe(hero);place();})();\n<\/script>\n<style id=\"oo-shared-footer-border\">html:root body:is([class]) main#content .nv-content-wrap.entry-content footer.home-footer.oo-site-footer{border-top:0!important}@media(min-width:960px){html:root body:is(.page-id-3,.page-id-265,.page-id-270,.page-id-303,.page-id-307,.page-id-308) main#content .nv-content-wrap.entry-content footer.home-footer.oo-site-footer{width:calc(100% - 30px)!important;margin-left:15px!important;margin-right:15px!important}}<\/style>\n\n\n<footer class=\"home-footer oo-site-footer\"><div class=\"wrap\"><div class=\"footer-grid\">\n<div class=\"footer-branding\"><a href=\"https:\/\/develop.office.one\/?page_id=304\" aria-label=\"office.one \u2014 home\"><img decoding=\"async\" class=\"footer-logo\" src=\"https:\/\/develop.office.one\/wp-content\/uploads\/2026\/10\/office-one-logo-final.png\" width=\"2169\" height=\"725\" alt=\"office.one by planetary systems\" loading=\"lazy\"><\/a><p class=\"copyright\">\u00a9 2026 Planetary Systems IT GmbH<\/p><\/div>\n<div class=\"footer-group\"><h3>Resources<\/h3><div class=\"footer-links\" aria-label=\"Resources\"><a href=\"https:\/\/develop.office.one\/?page_id=342\">Downloads<\/a><a href=\"https:\/\/develop.office.one\/?page_id=817\">Careers<\/a><\/div><\/div>\n<div class=\"footer-group\"><h3>Legal<\/h3><nav class=\"footer-links\" aria-label=\"Legal\"><a href=\"https:\/\/develop.office.one\/?page_id=307\">Privacy<\/a><a href=\"https:\/\/develop.office.one\/?page_id=303\">Legal notice<\/a><\/nav><\/div>\n<\/div><\/div><\/footer>\n","protected":false},"excerpt":{"rendered":"<p>DE\/EN Careers at office.one. Want to keep IT running and help make it better? At Planetary Systems IT GmbH, people with different strengths work together. We\u2019re looking for someone who thinks ahead, takes responsibility and wants to become a long-term member of our team. IT Systems Administrator (all genders) Do you enjoy understanding how systems&hellip;&nbsp;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"class_list":["post-817","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/pages\/817","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/develop.office.one\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=817"}],"version-history":[{"count":9,"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/pages\/817\/revisions"}],"predecessor-version":[{"id":970,"href":"https:\/\/develop.office.one\/index.php?rest_route=\/wp\/v2\/pages\/817\/revisions\/970"}],"wp:attachment":[{"href":"https:\/\/develop.office.one\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=817"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}