{"id":2,"date":"2026-10-27T05:08:49","date_gmt":"2026-10-27T05:08:49","guid":{"rendered":"https:\/\/mytrails.uk\/?page_id=2"},"modified":"2026-11-01T18:42:15","modified_gmt":"2026-11-01T18:42:15","slug":"sample-page","status":"publish","type":"page","link":"https:\/\/mytrails.uk\/","title":{"rendered":"FLOW"},"content":{"rendered":"        <div id=\"jnflow1\" class=\"jn-player\">\n            <style>\n                #jnflow1 {\n                    --ink:#3B343F; --muted:#756B65; --navy:#263D60;\n                    --brown:#5E372C; --beige:#EDE3D6; --cream:#FCF9F4;\n                    --border:#DED0BE;\n                    box-sizing:border-box; max-width:590px; margin:30px auto;\n                    padding:30px clamp(18px,5vw,38px) 22px; position:relative;\n                    overflow:hidden; color:var(--ink);\n                    background:linear-gradient(155deg,#F6F0E8,#EDE3D6);\n                    border:1px solid var(--border); border-radius:22px;\n                    box-shadow:0 12px 35px rgba(59,52,63,.07); font-family:inherit;\n                    box-shadow: 5px 5px 15px;\n                }\n                #jnflow1 *{box-sizing:border-box}\n                #jnflow1 .brand{text-align:center;letter-spacing:.16em;font-size:11px;font-weight:700;color:var(--navy)}\n                #jnflow1 h2{text-align:center;margin:22px 0 6px;font-size:clamp(24px,5vw,32px);color:var(--brown)}\n                #jnflow1 .subtitle{text-align:center;color:var(--muted);margin:0 0 24px}\n                #jnflow1 .selectors{display:grid;grid-template-columns:1fr 1fr;gap:14px}\n                #jnflow1 label{display:block;font-size:10px;letter-spacing:.08em;font-weight:700;color:var(--brown)}\n                #jnflow1 label.session-label{grid-column:1\/-1}\n                #jnflow1 select{display:block;width:100%;margin-top:7px;padding:11px 14px;border:1px solid var(--border);border-radius:12px;background:var(--cream);color:var(--ink);font:inherit;letter-spacing:normal}\n                #jnflow1 .session-label select{padding:17px 14px;font-size:16px;min-height:58px}\n                #jnflow1 .timeline{margin-top:24px}\n                #jnflow1 .times{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}\n                #jnflow1 input[type=range]{display:block;width:100%;accent-color:var(--navy);cursor:pointer}\n                #jnflow1 .controls{display:flex;gap:10px;justify-content:center;margin-top:18px}\n                #jnflow1 button{border:1px solid var(--navy);border-radius:999px;padding:13px 22px;background:var(--navy);color:var(--cream);font-weight:700;font-family:inherit;cursor:pointer;transition:all .25s ease}\n                #jnflow1 button:hover{background:var(--brown);border-color:var(--brown)}\n                #jnflow1 .stop{background:#DED0BE;border-color:#DED0BE;color:var(--ink)}\n                #jnflow1 .stop:hover{background:#CDBBA5;border-color:#CDBBA5;color:var(--ink)}\n                #jnflow1 .status{text-align:center;min-height:20px;color:var(--muted);font-size:13px;margin:16px 0 0}\n                #jnflow1 .volume-controls{display:grid;grid-template-columns:1fr;gap:16px;margin-top:24px}\n                #jnflow1 .volume-controls input{display:block;width:100%;margin-top:8px}\n                #jnflow1 select:focus,\n                #jnflow1 button:focus-visible,\n                #jnflow1 input:focus-visible{outline:2px solid var(--navy);outline-offset:3px}\n                @media(max-width:420px){#jnflow1 .selectors{grid-template-columns:1fr}}\n            <\/style>\n\n            <div class=\"brand\">JUSTYNA NOWAKOWSKA<\/div>\n            <h2>Your Moment of Calm<\/h2>\n            <p class=\"subtitle\">Pause \u2022 Breathe \u2022 Reconnect<\/p>\n\n            <div class=\"selectors\">\n                <label class=\"session-label\">Session                    <select class=\"session\">\n                        <option value=\"\">None<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/sesja1.mp3\" selected='selected'>Oddech i rozlu\u017anienie cia\u0142a<\/option>                    <\/select>\n                <\/label>\n                <label>Intention                    <select class=\"intention-select\">\n                        <option value=\"\">None<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_rs.wav\">Regeneruj\u0105cy sen<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_ul.wav\">Uspokojenie l\u0119ku<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_wm.wav\">Wyciszenie my\u015bli<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_bg.wav\">Ulga z b\u00f3lu g\u0142owy<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_nt.wav\">Neuralgia nerwu tr\u00f3jdzielnego<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_km.wav\">Komfort podczas menstruacji<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_or.wav\">Og\u00f3lne rozlu\u017anienie<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/f_rh.wav\">R\u00f3wnowaga hormonalna<\/option>                    <\/select>\n                <\/label>\n                <label>Atmosphere                    <select class=\"atmosphere-select\">\n                        <option value=\"\">None<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/forest.mp3\">Las<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/water.mp3\">Woda<\/option><option value=\"https:\/\/mytrails.uk\/wp-content\/plugins\/jn-flow\/audio\/rain.mp3\">Deszcz<\/option>                    <\/select>\n                <\/label>\n            <\/div>\n\n            <div class=\"volume-controls\" style=\"display:none;\">\n                <label>SESSION VOLUME\n                    <input class=\"session-volume\" type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"1\">\n                <\/label>\n                <label>INTENTION VOLUME\n                    <input class=\"intention-volume\" type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.25\">\n                <\/label>\n                <label>ATMOSPHERE VOLUME\n                    <input class=\"atmosphere-volume\" type=\"range\" min=\"0\" max=\"1\" step=\"0.01\" value=\"0.05\">\n                <\/label>\n            <\/div>\n\n            <div class=\"timeline\">\n                <div class=\"times\"><span class=\"current\">0:00<\/span><span class=\"duration\">0:00<\/span><\/div>\n                <input class=\"progress\" type=\"range\" min=\"0\" max=\"100\" value=\"0\" step=\"0.1\" aria-label=\"Audio position\">\n            <\/div>\n            <div class=\"controls\">\n                <button class=\"play\" type=\"button\">\u25b6 Begin listening<\/button>\n                <button class=\"stop\" type=\"button\">Stop<\/button>\n            <\/div>\n            <p class=\"status\" role=\"status\" aria-live=\"polite\">Your quiet moment is waiting.<\/p>\n\n            <audio class=\"session-audio\" preload=\"auto\"><\/audio>\n            <audio class=\"intention-audio\" preload=\"auto\" loop><\/audio>\n            <audio class=\"atmosphere-audio\" preload=\"auto\" loop><\/audio>\n\n            <script>\n            (function(){\n                const root=document.getElementById(\"jnflow1\");\n                if(!root||root.dataset.ready)return;\n                root.dataset.ready='1';\n\n                const main=root.querySelector('.session-audio');\n                const intention=root.querySelector('.intention-audio');\n                const atmosphere=root.querySelector('.atmosphere-audio');\n                const sessionSelect=root.querySelector('.session');\n                const intentionSelect=root.querySelector('.intention-select');\n                const atmosphereSelect=root.querySelector('.atmosphere-select');\n                const play=root.querySelector('.play');\n                const stop=root.querySelector('.stop');\n                const range=root.querySelector('.progress');\n                const now=root.querySelector('.current');\n                const total=root.querySelector('.duration');\n                const status=root.querySelector('.status');\n                const layers=[intention,atmosphere];\n\n                const sessionVolume=root.querySelector('.session-volume');\n                const intentionVolume=root.querySelector('.intention-volume');\n                const atmosphereVolume=root.querySelector('.atmosphere-volume');\n\n                main.volume=Number(sessionVolume.value);\n                intention.volume=Number(intentionVolume.value);\n                atmosphere.volume=Number(atmosphereVolume.value);\n\n                sessionVolume.addEventListener('input',function(){main.volume=Number(this.value);});\n                intentionVolume.addEventListener('input',function(){intention.volume=Number(this.value);});\n                atmosphereVolume.addEventListener('input',function(){atmosphere.volume=Number(this.value);});\n\n                function activeLayers(){return layers.filter(a=>a.src);}\n                function setTrack(audio,select){\n                    const url=select.value;\n                    audio.pause();\n                    if(!url){audio.removeAttribute('src');audio.load();return;}\n                    audio.src=url;\n                    audio.load();\n                }\n\n                const storageKey='jnflow-selections-'+root.id;\n                try { const saved=JSON.parse(localStorage.getItem(storageKey)||'{}'); [sessionSelect,intentionSelect,atmosphereSelect].forEach((sel,i)=>{const key=['session','intention','atmosphere'][i]; if(saved[key] && Array.from(sel.options).some(o=>o.value===saved[key])) sel.value=saved[key];}); } catch(e) {}\n                [sessionSelect,intentionSelect,atmosphereSelect].forEach((sel,i)=>sel.addEventListener('change',()=>{try{const data={session:sessionSelect.value,intention:intentionSelect.value,atmosphere:atmosphereSelect.value};localStorage.setItem(storageKey,JSON.stringify(data));}catch(e){}}));\n\n                setTrack(main,sessionSelect);\n                setTrack(intention,intentionSelect);\n                setTrack(atmosphere,atmosphereSelect);\n\n                function clock(n){\n                    if(!Number.isFinite(n)||n<0)return '0:00';\n                    return Math.floor(n\/60)+':'+String(Math.floor(n%60)).padStart(2,'0');\n                }\n\n                let ready=false;\n                main.addEventListener('loadedmetadata',()=>{\n                    ready=true;\n                    total.textContent=clock(main.duration);\n                    range.max=Number.isFinite(main.duration)?main.duration:100;\n                });\n\n                function stopAll(reset){\n                    [main,intention,atmosphere].forEach(a=>{\n                        a.pause();\n                        if(reset){try{a.currentTime=0;}catch(e){}}\n                    });\n                    play.textContent=\"\\u25b6 Begin listening\";\n                }\n\n                sessionSelect.addEventListener('change',()=>{\n                    stopAll(true);\n                    ready=false;\n                    const storageKey='jnflow-selections-'+root.id;\n                try { const saved=JSON.parse(localStorage.getItem(storageKey)||'{}'); [sessionSelect,intentionSelect,atmosphereSelect].forEach((sel,i)=>{const key=['session','intention','atmosphere'][i]; if(saved[key] && Array.from(sel.options).some(o=>o.value===saved[key])) sel.value=saved[key];}); } catch(e) {}\n                [sessionSelect,intentionSelect,atmosphereSelect].forEach((sel,i)=>sel.addEventListener('change',()=>{try{const data={session:sessionSelect.value,intention:intentionSelect.value,atmosphere:atmosphereSelect.value};localStorage.setItem(storageKey,JSON.stringify(data));}catch(e){}}));\n\n                setTrack(main,sessionSelect);\n                    total.textContent='0:00';\n                    range.value=0;\n                    range.max=100;\n                    now.textContent='0:00';\n                    status.textContent='Session track selected.';\n                });\n\n                intentionSelect.addEventListener('change',()=>{\n                    const wasPlaying=!main.paused;\n                    setTrack(intention,intentionSelect);\n                    if(wasPlaying&&intention.src)intention.play().catch(()=>{});\n                });\n\n                atmosphereSelect.addEventListener('change',()=>{\n                    const wasPlaying=!main.paused;\n                    setTrack(atmosphere,atmosphereSelect);\n                    if(wasPlaying&&atmosphere.src)atmosphere.play().catch(()=>{});\n                });\n\n                play.addEventListener('click',async()=>{\n                    if(!main.paused){\n                        stopAll(false);\n                        status.textContent='Session paused.';\n                        return;\n                    }\n                    if(!ready){\n                        status.textContent='Loading session audio\u2026';\n                        return;\n                    }\n                    try{\n                        if(main.ended){\n                            main.currentTime=0;\n                            layers.forEach(a=>{try{if(a.src)a.currentTime=0;}catch(e){}});\n                        }\n                        await main.play();\n                        play.textContent=\"\\u2161 Pause session\";\n                        status.textContent='Your session is playing.';\n                        await Promise.allSettled(activeLayers().map(a=>a.play()));\n                    }catch(e){\n                        stopAll(false);\n                        status.textContent='Playback could not start. Check the audio file and try again.';\n                        console.error('JN Audio Player:',e);\n                    }\n                });\n\n                stop.addEventListener('click',()=>{\n                    stopAll(true);\n                    range.value=0;\n                    now.textContent='0:00';\n                    status.textContent='Session stopped.';\n                });\n\n                main.addEventListener('timeupdate',()=>{\n                    now.textContent=clock(main.currentTime);\n                    if(Number.isFinite(main.duration))range.value=main.currentTime;\n                });\n\n                range.addEventListener('input',()=>{\n                    if(Number.isFinite(main.duration)){\n                        main.currentTime=Number(range.value);\n                        activeLayers().forEach(a=>{\n                            try{if(Number.isFinite(a.duration)&&a.duration>0)a.currentTime=main.currentTime%a.duration;}catch(e){}\n                        });\n                    }\n                });\n\n                main.addEventListener('ended',()=>{\n                    stopAll(true);\n                    range.value=0;\n                    now.textContent='0:00';\n                    status.textContent='Your session is complete.';\n                });\n\n                [main,intention,atmosphere].forEach(a=>a.addEventListener('error',()=>{\n                    status.textContent='An audio file could not be loaded. Check the audio file.';\n                }));\n            })();\n            <\/script>\n        <\/div>\n        \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mytrails.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2"}],"version-history":[{"count":12,"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":27,"href":"https:\/\/mytrails.uk\/index.php?rest_route=\/wp\/v2\/pages\/2\/revisions\/27"}],"wp:attachment":[{"href":"https:\/\/mytrails.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}