{"id":90,"date":"2026-08-04T09:36:46","date_gmt":"2026-08-04T09:36:46","guid":{"rendered":"https:\/\/dgold.online\/?page_id=90"},"modified":"2026-08-04T09:37:03","modified_gmt":"2026-08-04T09:37:03","slug":"before-you-change-anything","status":"publish","type":"page","link":"https:\/\/dgold.online\/?page_id=90","title":{"rendered":"Before You Change Anything"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"90\" class=\"elementor elementor-90\">\n\t\t\t\t<div class=\"elementor-element elementor-element-099b67e e-flex e-con-boxed e-con e-parent\" data-id=\"099b67e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-899d5ce elementor-widget elementor-widget-html\" data-id=\"899d5ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Which Room Is It? \u2014 A diagnostic from Before You Change Anything<\/title>\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400;1,9..144,500&family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&family=IBM+Plex+Mono:wght@400;500&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  :root{\r\n    --paper:#E7E9E3; --paper-2:#EEF0EA; --ink:#1B2A2E; --ink-soft:#54635F;\r\n    --hair:#C6C9BF; --madder:#7A322C; --madder-soft:#9a4a41;\r\n    --field:\"Newsreader\",Georgia,serif; --display:\"Fraunces\",Georgia,serif; --mono:\"IBM Plex Mono\",ui-monospace,monospace;\r\n  }\r\n  *{box-sizing:border-box} html,body{margin:0;padding:0}\r\n  body{background:var(--paper);color:var(--ink);font-family:var(--field);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}\r\n  .frame{max-width:660px;margin:0 auto;padding:0 26px 64px;min-height:100vh;display:flex;flex-direction:column}\r\n  header.bar{display:flex;justify-content:space-between;align-items:center;padding:22px 0 14px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}\r\n  .progresswrap{position:relative}\r\n  .progresswrap .rule{height:1px;background:var(--hair)}\r\n  .progresswrap .fill{position:absolute;top:0;left:0;height:1px;background:var(--madder);width:0;transition:width .5s cubic-bezier(.4,0,.1,1)}\r\n  main{flex:1;display:flex;flex-direction:column;justify-content:center;padding:30px 0}\r\n  .screen{animation:rise .5s cubic-bezier(.2,.7,.2,1)}\r\n  @keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}\r\n  .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--madder);margin:0 0 20px}\r\n  h1{font-family:var(--display);font-weight:500;font-size:clamp(34px,7vw,52px);line-height:1.02;letter-spacing:-.01em;margin:0 0 22px}\r\n  .lede{font-size:19px;color:var(--ink);margin:0 0 16px}\r\n  .lede.soft{color:var(--ink-soft);font-size:17px}\r\n  .stmt{font-family:var(--display);font-weight:400;font-size:clamp(23px,4.4vw,30px);line-height:1.22;letter-spacing:-.005em;margin:6px 0 30px}\r\n  .qmark{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--ink-soft);text-transform:uppercase;margin-bottom:14px}\r\n  button{font-family:inherit;cursor:pointer;color:inherit}\r\n  .btn{font-family:var(--mono);font-size:13px;letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:var(--paper);border:none;padding:15px 26px;transition:background .2s}\r\n  .btn:hover{background:var(--madder)}\r\n  .btn:disabled{opacity:.35;cursor:not-allowed}.btn:disabled:hover{background:var(--ink)}\r\n  .opts{display:flex;flex-direction:column;gap:10px;margin-top:6px}\r\n  .opt{display:flex;align-items:center;gap:16px;width:100%;text-align:left;background:var(--paper-2);border:1px solid var(--hair);padding:16px 18px;font-family:var(--field);font-size:18px;color:var(--ink);transition:border-color .18s,background .18s,transform .06s}\r\n  .opt:hover{border-color:var(--ink)} .opt:active{transform:translateY(1px)}\r\n  .opt .tick{font-family:var(--mono);font-size:12px;color:var(--ink-soft);min-width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid var(--hair)}\r\n  .opt.chosen{border-color:var(--madder);background:#e9e3df}\r\n  .opt.chosen .tick{background:var(--madder);color:var(--paper);border-color:var(--madder)}\r\n  .opt .sub{display:block;font-size:15px;color:var(--ink-soft);margin-top:2px}\r\n  .scale{display:flex;flex-direction:column;gap:9px;margin-top:4px}\r\n  .nav{display:flex;justify-content:space-between;align-items:center;margin-top:30px}\r\n  .back{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;background:none;border:none;color:var(--ink-soft);padding:8px 0}\r\n  .back:hover{color:var(--ink)}\r\n  .house{width:100%;max-width:420px;margin:0 auto 8px;display:block}\r\n  .house .wall{fill:none;stroke:var(--ink);stroke-width:1.4}\r\n  .house .room{fill:var(--paper-2);stroke:var(--ink);stroke-width:1.1;transition:fill .8s ease}\r\n  .house .room.lit{fill:var(--madder)}\r\n  .house .rlabel{font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;fill:var(--ink-soft);transition:fill .8s ease}\r\n  .house .rlabel.lit{fill:var(--paper)}\r\n  .house .rname{font-family:var(--mono);font-size:6.2px;letter-spacing:.1em;fill:var(--ink-soft);text-transform:uppercase;transition:fill .8s ease}\r\n  .house .rname.lit{fill:var(--paper)}\r\n  .law{font-family:var(--display);font-style:italic;font-weight:400;font-size:clamp(22px,4.2vw,28px);line-height:1.28;border-left:2px solid var(--madder);padding:2px 0 2px 20px;margin:26px 0}\r\n  .block{margin:22px 0}.block .k{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}.block p{margin:0}\r\n  .sit{background:var(--paper-2);border:1px solid var(--hair);padding:20px 22px}\r\n  .sit p{font-family:var(--display);font-size:20px;line-height:1.35;margin:0 0 14px}\r\n  textarea{width:100%;font-family:var(--field);font-size:17px;color:var(--ink);background:var(--paper);border:1px solid var(--hair);padding:12px 14px;resize:vertical;min-height:76px}\r\n  textarea:focus{outline:2px solid var(--madder);outline-offset:2px;border-color:var(--madder)}\r\n  .handoff{border-top:1px solid var(--hair);margin-top:34px;padding-top:26px}\r\n  .handoff .cta{font-family:var(--display);font-size:22px;margin:0 0 18px}\r\n  .signpost{background:#e9e3df;border:1px solid var(--madder-soft);padding:18px 20px;margin:24px 0;font-size:16.5px;color:var(--ink)}\r\n  .signpost .k{color:var(--madder)}\r\n  .stagetag{font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--madder);margin:0 0 10px}\r\n  .restart{margin-top:30px}\r\n  .restart button{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;background:none;border:1px solid var(--hair);padding:11px 18px;color:var(--ink-soft)}\r\n  .restart button:hover{border-color:var(--ink);color:var(--ink)}\r\n  .computing{text-align:center}.computing .dot{font-family:var(--mono);color:var(--madder);letter-spacing:.3em}\r\n  a{color:var(--madder)} :focus-visible{outline:2px solid var(--madder);outline-offset:3px}\r\n  @media (max-width:480px){body{font-size:17px}.frame{padding:0 18px 48px}}\r\n  @media (prefers-reduced-motion:reduce){.screen{animation:none}.progresswrap .fill,.house .room,.house .rlabel,.house .rname{transition:none}}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"frame\">\r\n  <header class=\"bar\"><span>Before You Change Anything<\/span><span id=\"count\">\u2014<\/span><\/header>\r\n  <div class=\"progresswrap\"><div class=\"rule\"><\/div><div class=\"fill\" id=\"fill\"><\/div><\/div>\r\n  <main id=\"main\"><\/main>\r\n<\/div>\r\n\r\n<script>\r\nconst ORDER=[\"I\",\"V\",\"C\",\"S\",\"E\",\"X\",\"K\"];\r\n\r\nconst ROOMS={\r\n  I:{name:\"Identity\",code:\"ID\",\r\n     law:\"Every other pillar inherits the self that stands in it.\",\r\n     mask:\"It's probably been reaching you in disguise \u2014 as a direction that won't come into focus, a plan that keeps failing for reasons you can't name, a discipline you somehow can't hold. You've been fixing those while the problem was coming from here.\",\r\n     reflect:\"I think I've outgrown\\u2026\"},\r\n  V:{name:\"Vision\",code:\"VI\",\r\n     law:\"A destination you did not choose cannot satisfy you when you reach it.\",\r\n     mask:\"It tends to wear other masks \u2014 a motivation problem you can't seem to muster, a discipline problem with no clear cause, a plan you keep tearing up and starting over. You can't push harder toward a destination you never actually wanted, or one that was never there.\",\r\n     reflect:\"What I actually want is\\u2026\"},\r\n  C:{name:\"Capacity\",code:\"CA\",\r\n     law:\"A vision without the capacity beneath it is just pressure.\",\r\n     mask:\"It almost never looks like what it is. It looks like inadequacy \u2014 the quiet verdict that something is wrong with you. It isn't a character flaw. It's a supply that was never matched to the demand.\",\r\n     reflect:\"What's actually missing is (skill \/ energy \/ resources)\\u2026\"},\r\n  S:{name:\"Strategy\",code:\"ST\",\r\n     law:\"You cannot execute your way out of the wrong plan.\",\r\n     mask:\"It disguises itself as a work-ethic problem. It tells you to try harder, do more, start earlier \u2014 to climb a ladder faster when the ladder is leaning on the wrong wall.\",\r\n     reflect:\"The ladder I've been climbing is\\u2026\"},\r\n  E:{name:\"Environment\",code:\"EN\",\r\n     law:\"Given enough time, your environment becomes your character.\",\r\n     mask:\"It hides as a permanent personal flaw \u2014 you decide you're simply a smaller person, and carry that verdict everywhere. But it stays behind the moment you leave the place that produced it. That's how you know it was never you.\",\r\n     reflect:\"The person my environment keeps turning me into is\\u2026\"},\r\n  X:{name:\"Execution\",code:\"EX\",\r\n     law:\"You do not get the life you intend. You get the life you repeat.\",\r\n     mask:\"This is the one room that's genuinely yours to answer \u2014 and the rarest true result in the house. You checked the rest honestly and they held. So this isn't a broken character. It's a set of daily inputs that drifted from a life you still, genuinely, want. The fix is smaller than willpower: shrink the action until an ordinary, unmotivated day can hold it.\",\r\n     reflect:\"The important thing I keep circling instead of doing is\\u2026\"},\r\n  K:{name:\"Contribution\",code:\"CO\",\r\n     law:\"Meaning is the one thing you cannot keep for yourself.\",\r\n     mask:\"It's the most expensive disguise of all: it whispers 'not enough yet,' so you chase more of the exact thing that already rang hollow. The win was real. It just reached no one but you.\",\r\n     reflect:\"The person who'd be better off because my life exists is\\u2026\"}\r\n};\r\n\r\n\/\/ Part Two \u2014 severity\r\nconst STAGES=[\r\n  {t:\"Discomfort\", s:\"Everything looks fine from the outside, but something feels quietly off.\"},\r\n  {t:\"Dissatisfaction\", s:\"The feeling is harder to ignore. I'm not fulfilled anymore.\"},\r\n  {t:\"Disengagement\", s:\"I'm going through the motions. The motivation I had doesn't come on its own.\"},\r\n  {t:\"Drift\", s:\"I'm not really making intentional choices. Life feels like it's happening to me.\"},\r\n  {t:\"Crisis\", s:\"Everything feels urgent. Something has to change, now.\"}\r\n];\r\n\r\n\/\/ Recognition items \u2014 plain, first-person, 3 per room (scattered so neighbours differ)\r\nconst REC=[\r\n  {room:\"I\",key:\"I1\",t:\"The life I've built feels like it belongs to an earlier version of me.\"},\r\n  {room:\"V\",key:\"V1\",t:\"I don't have a clear picture of where I'm actually trying to get to.\"},\r\n  {room:\"C\",key:\"C1\",t:\"My energy is lower than my ambition.\"},\r\n  {room:\"S\",key:\"S1\",t:\"If I keep going exactly as I am, I don't think I'll reach the future I want.\"},\r\n  {room:\"E\",key:\"E1\",t:\"In one particular place, I become a smaller version of myself.\"},\r\n  {room:\"X\",key:\"X1\",t:\"My days don't reflect what I say matters.\"},\r\n  {room:\"K\",key:\"K1\",t:\"If I got everything I'm chasing, I think something would still feel missing.\"},\r\n  {room:\"I\",key:\"I2\",t:\"People describe me in words that don't feel true anymore.\"},\r\n  {room:\"V\",key:\"V2\",t:\"I'm not sure the future I'm building is really mine.\"},\r\n  {room:\"C\",key:\"C2\",t:\"I blame myself when the real problem is that I'm exhausted.\"},\r\n  {room:\"S\",key:\"S2\",t:\"I've gotten better at a path I'm no longer sure is the right one.\"},\r\n  {room:\"E\",key:\"E2\",t:\"When I leave that place, I go back to feeling more like myself.\"},\r\n  {room:\"X\",key:\"X2\",t:\"I stay busy while avoiding the most important thing.\"},\r\n  {room:\"K\",key:\"K2\",t:\"Most of what I work toward benefits me more than anyone else.\"},\r\n  {room:\"I\",key:\"I3\",t:\"My success doesn't quite feel like mine.\"},\r\n  {room:\"V\",key:\"V3\",t:\"If no one applauded me for it, I'm not sure I'd still want it.\"},\r\n  {room:\"C\",key:\"C3\",t:\"I don't have the skill, energy, or resources the future I want would need.\"},\r\n  {room:\"S\",key:\"S3\",t:\"My effort keeps going up, but my progress doesn't.\"},\r\n  {room:\"E\",key:\"E3\",t:\"The people around me don't reflect who I'm becoming.\"},\r\n  {room:\"X\",key:\"X3\",t:\"My weeks don't add up to the life I'm trying to build.\"},\r\n  {room:\"K\",key:\"K3\",t:\"I want my life to matter to someone beyond me \u2014 and right now I'm not sure it does.\"}\r\n];\r\nconst SCALE=[[\"1\",\"Never true\"],[\"2\",\"Rarely true\"],[\"3\",\"Sometimes true\"],[\"4\",\"Often true\"],[\"5\",\"Almost always true\"]]; \/\/ value = index+1\r\n\r\n\/\/ Source test \u2014 one per room, plain, self-employment-neutral\r\nconst ISO=[\r\n  {room:\"I\",t:\"If who you are today were honestly running your life \u2014 not who you used to be, not a role you've kept playing \u2014 would this stuck feeling go away?\"},\r\n  {room:\"V\",t:\"If you had a destination that was truly yours \u2014 one you actually wanted, and could clearly name \u2014 would this stuck feeling go away?\"},\r\n  {room:\"C\",t:\"If you had everything this actually takes of you \u2014 the skill, the energy, the time and money \u2014 with nothing missing, would this stuck feeling go away?\"},\r\n  {room:\"S\",t:\"If your current plan could actually get you where you want to go \u2014 if the path were long enough to reach it \u2014 would this stuck feeling go away?\"},\r\n  {room:\"E\",t:\"If you were somewhere that brought out your best, day after day, would this stuck feeling go away?\"},\r\n  {room:\"X\",t:\"If your normal days \u2014 even the ones you don't feel like it \u2014 reliably did the thing that matters, would this stuck feeling go away?\"},\r\n  {room:\"K\",t:\"If your life clearly made things better for someone besides you, would this stuck feeling go away?\"}\r\n];\r\nconst ISO_OPTS=[[\"Yes\",\"Yes \u2014 that would settle it\",2],[\"Partly\",\"Partly \u2014 some of it\",1],[\"No\",\"No \u2014 it'd still be there\",0]];\r\n\r\nconst S={stage:null, rec:{}, iso:{}, note:\"\"};\r\nlet phase=\"welcome\", recIdx=0, isoIdx=0;\r\nconst main=document.getElementById(\"main\"), countEl=document.getElementById(\"count\"), fillEl=document.getElementById(\"fill\");\r\nconst TOTAL=REC.length+ISO.length;\r\n\r\nfunction progress(){\r\n  let done=0;\r\n  if(phase===\"rec\") done=recIdx;\r\n  else if(phase===\"shift\") done=REC.length;\r\n  else if(phase===\"iso\") done=REC.length+isoIdx;\r\n  else if(phase===\"computing\"||phase===\"result\") done=TOTAL;\r\n  const inItems=(phase===\"rec\"||phase===\"iso\");\r\n  countEl.textContent = inItems ? String(done+1).padStart(2,\"0\")+\" \/ \"+TOTAL\r\n                       : (phase===\"result\"?\"COMPLETE\":(phase===\"stage\"?\"STAGE\":\"\u2014\"));\r\n  fillEl.style.width=(done\/TOTAL*100)+\"%\";\r\n}\r\nfunction el(h){const d=document.createElement(\"div\");d.className=\"screen\";d.innerHTML=h;return d;}\r\nfunction paint(n){main.innerHTML=\"\";main.appendChild(n);progress();window.scrollTo(0,0);}\r\nfunction reduceMotion(){return window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;}\r\n\r\nfunction houseSVG(lit){\r\n  const L=new Set(lit||[]);\r\n  const R=[[60,30,80,44,\"VI\",\"Vision\"],[150,30,80,44,\"CA\",\"Capacity\"],[240,30,80,44,\"ST\",\"Strategy\"],\r\n           [60,84,80,44,\"EN\",\"Environ.\"],[150,84,80,44,\"EX\",\"Execution\"],[240,84,80,44,\"CO\",\"Contrib.\"],\r\n           [60,138,260,34,\"ID\",\"Identity\"]];\r\n  const rooms=R.map(([x,y,w,h,c,nm])=>{const on=L.has(c);\r\n    return '<rect class=\"room'+(on?' lit':'')+'\" x=\"'+x+'\" y=\"'+y+'\" width=\"'+w+'\" height=\"'+h+'\"\/>'+\r\n      '<text class=\"rlabel'+(on?' lit':'')+'\" x=\"'+(x+w\/2)+'\" y=\"'+(y+h\/2-1)+'\" text-anchor=\"middle\">'+c+'<\/text>'+\r\n      '<text class=\"rname'+(on?' lit':'')+'\" x=\"'+(x+w\/2)+'\" y=\"'+(y+h\/2+9)+'\" text-anchor=\"middle\">'+nm+'<\/text>';}).join(\"\");\r\n  return '<svg class=\"house\" viewBox=\"0 0 380 190\" role=\"img\" aria-label=\"A cutaway of the seven-room house\">'+\r\n    '<polyline class=\"wall\" points=\"46,30 190,4 334,30\"\/>'+rooms+'<rect class=\"wall\" x=\"46\" y=\"30\" width=\"288\" height=\"142\"\/><\/svg>';\r\n}\r\n\r\nfunction renderWelcome(){\r\n  phase=\"welcome\";\r\n  const n=el(houseSVG([])+`\r\n    <p class=\"eyebrow\">A diagnostic \\u00b7 Before You Change Anything<\/p>\r\n    <h1>Which room is it?<\/h1>\r\n    <p class=\"lede\">Most people change the wrong thing. They fix the part of life where the problem shows up \u2014 not the part where it actually starts. So the fresh start ends up right where the last one did.<\/p>\r\n    <p class=\"lede soft\">This won't score you. In about five minutes it finds the one place your stuck feeling is most likely coming from, and names the disguise it's been wearing. Answer honestly \u2014 that's the only thing it needs.<\/p>\r\n    <div class=\"nav\"><span><\/span><button class=\"btn\" id=\"go\">Begin<\/button><\/div>`);\r\n  paint(n);\r\n  document.getElementById(\"go\").onclick=renderStage;\r\n}\r\n\r\nfunction renderStage(){\r\n  phase=\"stage\";\r\n  const rows=STAGES.map((st,i)=>`\r\n    <button class=\"opt${S.stage===i?' chosen':''}\" data-i=\"${i}\">\r\n      <span class=\"tick\">${S.stage===i?'\\u25cf':''}<\/span>\r\n      <span><strong>${st.t}.<\/strong> ${st.s}<\/span>\r\n    <\/button>`).join(\"\");\r\n  const n=el(`\r\n    <p class=\"eyebrow\">First \\u2014 how deep is it?<\/p>\r\n    <p class=\"stmt\">Which one sounds most like where you are?<\/p>\r\n    <div class=\"opts\">${rows}<\/div>\r\n    <div class=\"nav\"><button class=\"back\" id=\"back\">\\u2190 Back<\/button><button class=\"btn\" id=\"go\" ${S.stage===null?'disabled':''}>Continue<\/button><\/div>`);\r\n  paint(n);\r\n  n.querySelectorAll(\".opt\").forEach(b=>{b.onclick=()=>{S.stage=+b.dataset.i;renderStage();};});\r\n  document.getElementById(\"back\").onclick=renderWelcome;\r\n  document.getElementById(\"go\").onclick=()=>{ if(S.stage!==null){recIdx=0;renderRec();} };\r\n}\r\n\r\nfunction renderRec(){\r\n  phase=\"rec\";\r\n  const item=REC[recIdx], cur=S.rec[item.key];\r\n  const opts=SCALE.map(([v,lbl])=>`\r\n    <button class=\"opt${cur==+v?' chosen':''}\" data-v=\"${v}\">\r\n      <span class=\"tick\">${v}<\/span><span>${lbl}<\/span>\r\n    <\/button>`).join(\"\");\r\n  const n=el(`\r\n    <p class=\"eyebrow\">${recIdx===0?'Now \\u2014 how true of you?':'How true of you?'}<\/p>\r\n    <p class=\"stmt\">${item.t}<\/p>\r\n    <div class=\"scale\">${opts}<\/div>\r\n    <div class=\"nav\"><button class=\"back\" id=\"back\">\\u2190 Back<\/button><span><\/span><\/div>`);\r\n  paint(n);\r\n  n.querySelectorAll(\".opt\").forEach(b=>{b.onclick=()=>{\r\n    S.rec[item.key]=+b.dataset.v; b.classList.add(\"chosen\");\r\n    setTimeout(()=>{ if(recIdx<REC.length-1){recIdx++;renderRec();} else renderShift(); }, reduceMotion()?0:280);\r\n  };});\r\n  document.getElementById(\"back\").onclick=()=>{ if(recIdx>0){recIdx--;renderRec();} else renderStage(); };\r\n}\r\n\r\nfunction renderShift(){\r\n  phase=\"shift\";\r\n  const n=el(`\r\n    <p class=\"eyebrow\">One last pass<\/p>\r\n    <h1 style=\"font-size:clamp(28px,5.5vw,40px)\">Now, where does it come from?<\/h1>\r\n    <p class=\"lede\">You've said where it hurts. That's not the same as where it starts. A problem often shows up in the loudest part of your life while it's actually coming from a quieter one.<\/p>\r\n    <p class=\"lede soft\">So for the next seven, imagine that one part were completely sorted \\u2014 that problem, gone. Then ask one simple thing: would the stuck feeling go away?<\/p>\r\n    <div class=\"nav\"><button class=\"back\" id=\"back\">\\u2190 Back<\/button><button class=\"btn\" id=\"go\">Continue<\/button><\/div>`);\r\n  paint(n);\r\n  document.getElementById(\"back\").onclick=()=>{recIdx=REC.length-1;renderRec();};\r\n  document.getElementById(\"go\").onclick=()=>{isoIdx=0;renderIso();};\r\n}\r\n\r\nfunction renderIso(){\r\n  phase=\"iso\";\r\n  const item=ISO[isoIdx], cur=S.iso[item.room];\r\n  const opts=ISO_OPTS.map(([sh,lbl,v])=>`\r\n    <button class=\"opt${cur===v?' chosen':''}\" data-v=\"${v}\"><span class=\"tick\">${cur===v?'\\u25cf':''}<\/span><span>${lbl}<\/span><\/button>`).join(\"\");\r\n  const n=el(`\r\n    <p class=\"eyebrow\">Where it comes from \\u00b7 ${isoIdx+1} of 7<\/p>\r\n    <p class=\"stmt\">${item.t}<\/p>\r\n    <div class=\"scale\">${opts}<\/div>\r\n    <div class=\"nav\"><button class=\"back\" id=\"back\">\\u2190 Back<\/button><span><\/span><\/div>`);\r\n  paint(n);\r\n  n.querySelectorAll(\".opt\").forEach(b=>{b.onclick=()=>{\r\n    S.iso[item.room]=+b.dataset.v; b.classList.add(\"chosen\");\r\n    setTimeout(()=>{ if(isoIdx<ISO.length-1){isoIdx++;renderIso();} else renderComputing(); }, reduceMotion()?0:280);\r\n  };});\r\n  document.getElementById(\"back\").onclick=()=>{ if(isoIdx>0){isoIdx--;renderIso();} else renderShift(); };\r\n}\r\n\r\nfunction renderComputing(){\r\n  phase=\"computing\";\r\n  const n=el('<div class=\"computing\"><p class=\"eyebrow\" style=\"color:var(--ink-soft)\">Reading the house<\/p><p class=\"stmt\">Tracing it back to where it starts<span class=\"dot\" id=\"dot\"><\/span><\/p><\/div>');\r\n  paint(n);\r\n  if(reduceMotion()){setTimeout(()=>renderResult(diagnose()),200);return;}\r\n  const dot=document.getElementById(\"dot\");let k=0;\r\n  const iv=setInterval(()=>{k=(k+1)%4;dot.textContent=\" \"+\".\".repeat(k);},300);\r\n  setTimeout(()=>{clearInterval(iv);renderResult(diagnose());},1400);\r\n}\r\n\r\n\/* ---- routing engine: presence + source gates, execution suppression, contribution gate, cascade, tie-break ---- *\/\r\nfunction diagnose(){\r\n  const r=(k)=>S.rec[k]??0;\r\n  const presence={}; ORDER.forEach(o=>{ presence[o]=r(o+\"1\")+r(o+\"2\")+r(o+\"3\"); });\r\n  const source={}; ORDER.forEach(o=>source[o]=S.iso[o]??0);\r\n  const qualifies={};\r\n  ORDER.forEach(o=>{\r\n    let ok = presence[o]>=11 && source[o]>=1;      \/\/ presence: sum of three 1-5 items; source: Yes\/Partly\r\n    if(o===\"E\" && r(\"E2\")<4) ok=false;             \/\/ Environment discriminator: must ease when you leave\r\n    qualifies[o]=ok;\r\n  });\r\n  let cand=ORDER.filter(o=>qualifies[o]);\r\n\r\n  let execMask=false;\r\n  const up5=[\"I\",\"V\",\"C\",\"S\",\"E\"];\r\n  if(cand.includes(\"X\")&&up5.some(o=>cand.includes(o))){cand=cand.filter(o=>o!==\"X\");execMask=true;}\r\n\r\n  let contribGate=false;\r\n  if(cand.includes(\"K\")&&(cand.includes(\"I\")||cand.includes(\"V\"))){cand=cand.filter(o=>o!==\"K\");contribGate=true;}\r\n\r\n  const crisis = (r(\"C2\")>=5) || (r(\"K1\")>=5) || (S.stage===4);\r\n\r\n  if(cand.length===0){\r\n    const anyP=ORDER.some(o=>presence[o]>=11);\r\n    return {kind:(anyP?\"tangled\":\"quiet\"), crisis};\r\n  }\r\n  const primary=ORDER.find(o=>cand.includes(o));\r\n  const pIdx=ORDER.indexOf(primary);\r\n  let co=null;\r\n  if(source[primary]===1){ co=cand.find(o=>ORDER.indexOf(o)>pIdx&&source[o]===2)||null; }\r\n  return {kind:\"located\", primary, co, execMask, contribGate, crisis};\r\n}\r\n\r\nfunction stageLine(){\r\n  if(S.stage===null) return \"\";\r\n  const st=STAGES[S.stage];\r\n  return '<p class=\"stagetag\">Stage '+(S.stage+1)+' \\u2014 '+st.t+'<\/p>';\r\n}\r\n\r\nfunction renderResult(d){\r\n  phase=\"result\";\r\n  let inner=\"\";\r\n  if(d.kind===\"located\"){\r\n    const P=ROOMS[d.primary];\r\n    const lit=[P.code].concat(d.co?[ROOMS[d.co].code]:[]);\r\n    const two=d.co?`<p class=\"lede soft\">Two rooms are speaking at once \\u2014 ${P.name}, and ${ROOMS[d.co].name} answering just as clearly. That's the honest edge of what a set of questions can do from the outside. Which one is really upstream is the exact thing a live conversation is built to settle.<\/p>`:\"\";\r\n    inner=houseSVG(lit)+`\r\n      ${stageLine()}\r\n      <p class=\"eyebrow\">Where it's most likely coming from<\/p>\r\n      <h1>The room is ${P.name}.<\/h1>\r\n      ${two}\r\n      <div class=\"block\"><div class=\"k\">The disguise it was wearing<\/div><p>${P.mask}<\/p><\/div>\r\n      <p class=\"law\">${P.law}<\/p>\r\n      <div class=\"block\"><div class=\"k\">Finish this \\u2014 don't overthink it<\/div>\r\n        <div class=\"sit\"><p>${P.reflect}<\/p><textarea id=\"note\" placeholder=\"Type as much or as little as you like\"><\/textarea><\/div><\/div>`;\r\n  } else if(d.kind===\"tangled\"){\r\n    inner=houseSVG([])+`\r\n      ${stageLine()}\r\n      <p class=\"eyebrow\">Where it's coming from<\/p>\r\n      <h1>No single room is clearly the source.<\/h1>\r\n      <p class=\"lede\">That's a real result, not a failure. Something is off \\u2014 but it's showing up in one part of your life while coming from another, and no single room came back a clean answer.<\/p>\r\n      <p class=\"lede soft\">This is the hardest kind to sort out alone. The closeness that lets you feel something's wrong is the same thing that hides where it starts. It's exactly what a second set of eyes is for.<\/p>`;\r\n  } else {\r\n    inner=houseSVG([])+`\r\n      ${stageLine()}\r\n      <p class=\"eyebrow\">Where it's coming from<\/p>\r\n      <h1>Nothing surfaced strongly today.<\/h1>\r\n      <p class=\"lede\">On these answers, no one part of your life is clearly out of alignment \\u2014 worth taking at face value, not explaining away.<\/p>\r\n      <p class=\"lede soft\">If something still feels off underneath, it may just be sitting below what a short set of questions can catch. Come back on a harder week, or bring it to a conversation where it can be drawn out slowly.<\/p>`;\r\n  }\r\n\r\n  if(d.crisis){\r\n    inner+=`<div class=\"signpost\"><div class=\"k\">One thing, said plainly<\/div>\r\n      Some of your answers point to something heavier than a misaligned room \\u2014 the kind of exhaustion, flatness, or urgency a set of questions isn't built to hold. If that's where you are, talking to a doctor or a licensed professional belongs alongside anything else you do next. That isn't a detour from this work. It's the ground it stands on.<\/div>`;\r\n  }\r\n\r\n  inner+=`<div class=\"handoff\">\r\n      <p class=\"lede soft\">These questions read your house from the outside. The one house they can never fully read is your own \\u2014 your own disguises are the ones you're standing inside of. The next move isn't a plan. It's a second set of eyes on the room you just found.<\/p>\r\n      <p class=\"cta\">That's what Talk to Titi is for.<\/p>\r\n      <button class=\"btn\" id=\"book\">Book the conversation<\/button>\r\n    <\/div>\r\n    <div class=\"restart\"><button id=\"again\">Start over<\/button><\/div>`;\r\n\r\n  const n=el(inner);\r\n  paint(n);\r\n  const ta=document.getElementById(\"note\"); if(ta){ta.value=S.note||\"\";ta.oninput=()=>{S.note=ta.value;};}\r\n  document.getElementById(\"book\").onclick=()=>{ alert(\"Wire this button to the Talk to Titi booking link.\"); };\r\n  document.getElementById(\"again\").onclick=()=>{S.stage=null;S.rec={};S.iso={};S.note=\"\";recIdx=0;isoIdx=0;renderWelcome();};\r\n}\r\n\r\nrenderWelcome();\r\n<\/script>\r\n<\/body>\r\n<\/html>\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>Which Room Is It? \u2014 A diagnostic from Before You Change Anything Before You Change Anything\u2014<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-90","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/pages\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dgold.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=90"}],"version-history":[{"count":4,"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/pages\/90\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/dgold.online\/index.php?rest_route=\/wp\/v2\/pages\/90\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/dgold.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}