{"id":346,"date":"2025-07-24T12:47:30","date_gmt":"2025-07-24T12:47:30","guid":{"rendered":"http:\/\/159.203.165.160\/?page_id=346"},"modified":"2026-02-18T15:06:21","modified_gmt":"2026-02-18T15:06:21","slug":"policies","status":"publish","type":"page","link":"http:\/\/159.203.165.160\/index.php\/policies\/","title":{"rendered":"Policies"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"346\" class=\"elementor elementor-346\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6d4f60c e-flex e-con-boxed e-con e-parent\" data-id=\"6d4f60c\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-59c1e76 e-con-full e-flex e-con e-child\" data-id=\"59c1e76\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e68fefa elementor-widget elementor-widget-image\" data-id=\"e68fefa\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1637\" height=\"708\" src=\"http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643.png\" class=\"attachment-full size-full wp-image-1586\" alt=\"\" srcset=\"http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643.png 1637w, http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643-300x130.png 300w, http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643-1024x443.png 1024w, http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643-768x332.png 768w, http:\/\/159.203.165.160\/wp-content\/uploads\/2025\/09\/98768643-1536x664.png 1536w\" sizes=\"(max-width: 1637px) 100vw, 1637px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-48b00fc e-flex e-con-boxed e-con e-parent\" data-id=\"48b00fc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ffe644d elementor-widget elementor-widget-heading\" data-id=\"ffe644d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Prioritizing people in our policies<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9c3f9ec elementor-widget elementor-widget-text-editor\" data-id=\"9c3f9ec\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>In this guidebook, we\u2019re highlighting policies that enhance your daily work and strengthen our culture. You\u2019ll see that summaries are given for each one, as well as a link to the official policy that you can review at any time. We appreciate your time and attention in reviewing our policies.<\/p><p>Our full policy library can be found on <strong>Nsite<\/strong>. From the homepage, click on \u201cPolicies &amp; Forms,\u201d select the <strong>Document Management System<\/strong> link and search for the policy you need.<\/p><p>Our policies are not written for and should not be used with punitive intent. Rather, they are aimed at supporting our mission, vision and values. We encourage our leaders to assume positive intent from employees and apply these policies accordingly.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-33fbbeb e-flex e-con-boxed e-con e-parent\" data-id=\"33fbbeb\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d8e965a elementor-widget elementor-widget-html\" data-id=\"d8e965a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<section id=\"policies\" class=\"ptabs\"\n  data-src=\"http:\/\/159.203.165.160\/wp-content\/uploads\/2026\/02\/NortonPolicies4-1.html\"\n  aria-label=\"Policies\">\n  <div class=\"ptabs-layout\">\n    <nav class=\"ptabs-nav\" role=\"tablist\" aria-orientation=\"vertical\"><\/nav>\n\n    <div class=\"ptabs-content\">\n      <h2 class=\"ptitle\"><\/h2>\n      <div class=\"ppanel\" role=\"tabpanel\" aria-live=\"polite\"><\/div>\n      <div class=\"pactions\">\n        <!-- legacy CTA hidden via CSS below -->\n        <a class=\"plink\" href=\"#\" target=\"_blank\" rel=\"noopener\"><\/a>\n        <button type=\"button\" class=\"pnext\">Next Policy<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<style>\n\/* Layout *\/\n.ptabs{ --border:#e5e7eb; --muted:#6b7280; --title:#2c7fbf; --accent:#2fb3b2; --link:#ea9a1a; --tabBg:#f7f8f9; }\n.ptabs-layout{ display:grid; grid-template-columns:300px 1fr; gap:28px; }\n@media (max-width: 900px){ .ptabs-layout{ grid-template-columns:1fr; } }\n.ptabs-nav{ border-right:1px solid var(--border); padding-right:18px; max-height:84vh; overflow:auto; }\n@media (max-width: 900px){ .ptabs-nav{ border-right:0; border-bottom:1px solid var(--border); padding:0 0 12px; } }\n.ptab{ display:block; width:100%; text-align:left; padding:12px 14px; margin:0 0 8px; border-radius:8px; border:1px solid var(--border); background:var(--tabBg); color:#111; font-weight:700; transition:background .15s, border-color .15s, color .15s; }\n.ptab:hover{ background:#eef1f4; color:#101010; }\n.ptab.is-active{ background:#23b1b6; color:#fff; border-color:transparent; }\n\n\/* Greys out visited tabs (but not the current one) *\/\n.ptab.is-seen:not(.is-active){\n  background:#f3f4f6;\n  color:#6b7280;\n  border-color:#d1d5db;\n  opacity:.95;\n}\n.ptab.is-seen:not(.is-active):hover{\n  background:#eef1f4;\n  color:#4b5563;\n}\n\n.ptitle{ margin:0 0 12px; color:var(--title); font-size:clamp(1.4rem,2.2vw,2.25rem); font-weight:800; }\n.ppanel{ padding:6px 0 16px; color:var(--muted); line-height:1.7; }\n.ppanel p{ margin:0 0 14px; }\n.ppanel a{ word-break: break-word; overflow-wrap:anywhere; }\n\n\/* Hide the old CTA area link; keep Next Policy *\/\n.pactions .plink{ display:none !important; }\n\n\/* Inline CTA styling (orange, bold, underlined) *\/\n.policy-cta-inline a{ color:var(--link); font-weight:800; text-decoration:underline; }\n.policy-cta-inline a:hover{ text-decoration:none; }\n<\/style>\n\n<script>\n(function(){\n  const root = document.getElementById('policies'); if(!root) return;\n  const srcURL  = root.getAttribute('data-src');\n  const nav     = root.querySelector('.ptabs-nav');\n  const titleEl = root.querySelector('.ptitle');\n  const panel   = root.querySelector('.ppanel');\n  const nextBtn = root.querySelector('.pnext');\n\n  let items = [], current = 0;\n  const seen = new Set(); \/\/ track visited tabs\n  const FIXED_LABEL = 'View the Full Policy'; \/\/ <-- forced CTA text\n\n  const slug = s => (s||'').toLowerCase().replace(\/[^a-z0-9]+\/g,'-').replace(\/^-+|-+$\/g,'');\n  const toAbs = (u, base) => { try { return new URL(u, base).toString(); } catch { return u || ''; } };\n\n  async function fetchDoc(url){\n    const r = await fetch(url, { credentials:'same-origin', cache:'no-cache' });\n    if(!r.ok) throw new Error(`Could not load source HTML (HTTP ${r.status})`);\n    return r.text();\n  }\n\n  const urlRegex = \/(https?:\\\/\\\/[^\\s<>\"']+|\\\/[^\\s<>\"']+)\/i;\n  const decodeEntities = (str)=>{ const ta=document.createElement('textarea'); ta.innerHTML=str; return ta.value; };\n\n  function findUrlInNode(node){\n    if (!node) return '';\n    \/\/ normal anchor\n    const a = node.querySelector ? node.querySelector('a[href]') : null;\n    if (a && a.getAttribute('href')) return a.getAttribute('href').trim();\n    \/\/ bare URL in text\n    const t = (node.textContent || ''); const m = t.match(urlRegex); if (m) return m[1];\n    \/\/ escaped <a ...>\n    if (node.innerHTML && \/&lt;\\s*a[\\s>]\/i.test(node.innerHTML)) {\n      const decoded = decodeEntities(node.innerHTML);\n      const tmp = document.createElement('div'); tmp.innerHTML = decoded;\n      const a2 = tmp.querySelector('a[href]'); if (a2) return a2.getAttribute('href') || '';\n      const m2 = decoded.match(urlRegex); if (m2) return m2[1];\n    }\n    return '';\n  }\n\n  const textOf = n => (n.textContent || '').replace(\/\\s+\/g,' ').trim();\n  const htmlMinusMarkers = el => el.innerHTML\n    .replace(\/&lt;\\s*body\\s*text\\s*&gt;\/ig,'')\n    .replace(\/&lt;\\s*section\\s*title\\s*&gt;\/ig,'')\n    .replace(\/&lt;\\s*text\\s*link\\s*&gt;\/ig,'')\n    .replace(\/&lt;\\s*tab\\s*name\\s*&gt;\/ig,'')\n    .trim();\n\n  function parseFromMarkers(sourceHTML){\n    const tmp = document.createElement('div'); tmp.innerHTML = sourceHTML;\n    const blocks = Array.from(tmp.querySelectorAll('h1,h2,h3,h4,p,div,section,li'));\n    const isMarker = (txt, name) => new RegExp(`^\\\\s*<\\\\s*${name}\\\\s*>`, 'i').test(txt);\n    const getVal  = (txt, name) => txt.replace(new RegExp(`^\\\\s*<\\\\s*${name}\\\\s*>\\\\s*`, 'i'), '').trim();\n\n    const out = []; let i = 0;\n    while (i < blocks.length) {\n      const t = textOf(blocks[i]);\n      if (isMarker(t, 'tab name')) {\n        const tabName = getVal(t, 'tab name');\n        const entry = { tab: tabName, title: '', html: '', linkLabel: '', linkHref: '' };\n        i++;\n        const chunk = [];\n        while (i < blocks.length && !isMarker(textOf(blocks[i]), 'tab name')) { chunk.push(blocks[i]); i++; }\n\n        let bodyStarted = false, bodyNodes = [];\n        for (let b = 0; b < chunk.length; b++) {\n          const node = chunk[b], txt = textOf(node);\n\n          if (isMarker(txt, 'section title')) entry.title = getVal(txt, 'section title') || entry.tab || 'Policy';\n          else if (isMarker(txt, 'body text')) {\n            bodyStarted = true;\n            const clone = node.cloneNode(true);\n            clone.innerHTML = htmlMinusMarkers(clone);\n            if (clone.innerHTML) bodyNodes.push(clone.outerHTML);\n          }\n          else if (isMarker(txt, 'text link')) {\n            \/\/ Label in doc is ignored now; we always show FIXED_LABEL\n            entry.linkLabel = '';\n            let href = findUrlInNode(node);\n            if (!href) {\n              for (let j = b + 1; j < chunk.length; j++) {\n                const nextTxt = textOf(chunk[j]);\n                if (isMarker(nextTxt, 'section title') || isMarker(nextTxt, 'body text') || isMarker(nextTxt, 'text link')) break;\n                href = findUrlInNode(chunk[j]); if (href) break;\n              }\n            }\n            if (!href && urlRegex.test(entry.linkLabel)) {\n              href = entry.linkLabel.match(urlRegex)[1];\n              entry.linkLabel = '';\n            }\n            entry.linkHref = href || '';\n            bodyStarted = false;\n          }\n          else if (bodyStarted) bodyNodes.push(node.outerHTML);\n        }\n\n        entry.html = bodyNodes.join('').trim();\n        if (!entry.title) entry.title = entry.tab || 'Policy';\n        out.push(entry); continue;\n      }\n      i++;\n    }\n    return out;\n  }\n\n  function renderTabs(){\n    nav.innerHTML = '';\n    items.forEach((it, idx)=>{\n      const b = document.createElement('button');\n      b.type='button';\n      b.className='ptab'+(idx===0?' is-active':'');\n      b.id='tab-'+slug(it.tab || it.title);\n      b.setAttribute('role','tab');\n      b.setAttribute('aria-selected', idx===0 ? 'true' : 'false');\n      b.textContent = it.tab || it.title;\n      b.addEventListener('click', ()=>activate(idx, true, true));\n      nav.appendChild(b);\n    });\n  }\n\n  function updateSeenUI(currentIdx){\n    const tabs = Array.from(nav.querySelectorAll('.ptab'));\n    tabs.forEach((el,i)=>{\n      el.classList.toggle('is-seen', seen.has(i) && i !== currentIdx);\n    });\n  }\n\n  function activate(idx, pushHash, doScroll){\n    current = idx;\n\n    \/\/ Active state\n    nav.querySelectorAll('.ptab').forEach((el,i)=>{\n      const active = i===idx;\n      el.classList.toggle('is-active', active);\n      el.setAttribute('aria-selected', active ? 'true' : 'false');\n    });\n\n    \/\/ Mark seen and update greying\n    seen.add(idx);\n    updateSeenUI(idx);\n\n    const it = items[idx];\n    titleEl.textContent = it.title || it.tab || 'Policy';\n    panel.innerHTML = it.html || '<p>No body content found for this policy.<\/p>';\n\n    \/\/ Remove any \"<Text Link>\" lines or raw escaped anchors in body\n    Array.from(panel.querySelectorAll('p,div,li,section')).forEach(el=>{\n      const t = (el.textContent || '').trim();\n      const h = (el.innerHTML || '');\n      if (\/^\\s*<\\s*text\\s*link\\s*>\\s*\/i.test(t) || \/&lt;\\s*a[\\s>]\/i.test(h)) el.remove();\n    });\n\n    \/\/ Build CTA href (prefer parsed; fallback to first inline <a>)\n    let href  = it.linkHref ? toAbs(it.linkHref, srcURL) : '';\n    if (!href) {\n      const a0 = panel.querySelector('a[href]');\n      if (a0) {\n        href  = toAbs(a0.getAttribute('href'), srcURL);\n        (a0.closest('p') || a0).remove(); \/\/ avoid duplicate\n      }\n    }\n\n    \/\/ Inject inline CTA with FIXED LABEL (links to full URL)\n    const prev = panel.querySelector('.policy-cta-inline'); if (prev) prev.remove();\n    if (href) {\n      const p = document.createElement('p'); p.className = 'policy-cta-inline';\n      const a = document.createElement('a');\n      a.href = href; a.target = '_blank'; a.rel = 'noopener';\n      a.textContent = FIXED_LABEL;         \/\/ <-- forced text\n      a.setAttribute('aria-label', FIXED_LABEL);\n      a.title = href;                      \/\/ optional tooltip with full URL\n      p.appendChild(a);\n      panel.appendChild(p);\n    }\n\n    if (pushHash) history.replaceState(null, '', location.pathname + '#' + slug(it.tab||it.title));\n    if (doScroll) root.scrollIntoView({ behavior:'smooth', block:'start' });\n  }\n\n  nextBtn.addEventListener('click', (e)=>{\n    e.preventDefault();\n    if (!items.length) return;\n    const next = (current + 1) % items.length;\n    activate(next, true, true);\n  });\n\n  (async function init(){\n    try{\n      const html = await fetchDoc(srcURL);\n      items = parseFromMarkers(html).map(it => ({ ...it, linkHref: it.linkHref ? toAbs(it.linkHref, srcURL) : '' }));\n      if (!items.length) throw new Error('No policies found. Ensure each policy starts with \u201c<Tab Name> \u2026\u201d.');\n      renderTabs();\n      const h = (location.hash||'').slice(1);\n      const fromHash = items.findIndex(it => slug(it.tab||it.title)===h);\n      activate(fromHash>=0?fromHash:0, false, false);\n    }catch(e){\n      console.error(e);\n      panel.innerHTML = '<p style=\"color:#b91c1c;\"><strong>Could not load or parse your policies file.<\/strong><\/p>';\n    }\n  })();\n})();\n<\/script>\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>Prioritizing people in our policies In this guidebook, we\u2019re highlighting policies that enhance your daily work and strengthen our culture. You\u2019ll see that summaries are given for each one, as well as a link to the official policy that you can review at any time. We appreciate your time and attention in reviewing our policies. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-346","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/pages\/346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/comments?post=346"}],"version-history":[{"count":364,"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/pages\/346\/revisions"}],"predecessor-version":[{"id":1720,"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/pages\/346\/revisions\/1720"}],"wp:attachment":[{"href":"http:\/\/159.203.165.160\/index.php\/wp-json\/wp\/v2\/media?parent=346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}